2008年4月から今回で9回にわたり、私なりの考慮点、ノウハウをMicrosoft社の資料の引用も含めて説明させて頂きました。
ここで、本連載の纏めをさせて頂きたいと思います。
まとめ
- (ア)アプリケーションの規模は小さくともn階層で設計します
- n階層(規模と機能によりますが、2階層以上)で設計することにより、それぞれの役割、機能、境界が明確化され、効率のよい設計、構築、保守ができるようになります。
- (イ)ビジネスコンポーネントは機能ごとに設計します
- (ア)と同様に、機能ごとに設計することにより、それぞれのビジネスコンポーネントの独立性が高められます。これにより、部分的な仕様変更や業務追加などにも対応が容易になります。
- (ウ)共通化できるロジックは共通化して重複しないように設計します
- 共通ロジックの抽出は大変に工数かかかり、また技術が必要になります。しかし、共通ロジックを抽出、設計、構築することにより、全体的な工数の削減、品質の向上、保守性の向上を図ることができます。
- (エ)データストアにアクセスするロジックは1箇所に集約して設計します
- 集約することにより、データストアへの接続資源の有効利用、全体的な工数の削減、品質の向上、保守性の向上を図ることができます。
- (オ)Windows Presentation Foundation、Windows Communication FoundationやWindows Workflow Foundationを活用し、より効率的に、高品質で、保守性のよい、顧客に満足して頂けるアプリケーションを設計、構築、配置、そして使用して頂きましょう
- 新技術の導入は顧客からもプロジェクト内からも少なからず抵抗があると思います。しかし、顧客が真に要望するアプリケーションに実現のために必要であれば進んで取り入れていくことを検討しましょう。また、これらの技術の活用より、より効率的に、高品質な、保守性がよく、拡張性の高いアプリケーションを構築することができるようになります。是非新技術の活用をご検討ください。
- (カ)LINQ技術を活用し、より効率的で保守性のよいアプリケーションを設計しましょう
- LINQ技術の活用により、効率的に、高品質で、保守性のよいアプリケーションを設計、構築することができます。是非取り組んで頂きたい技術です。
終わりに
第5回、第6回でも書かせて頂きましたが、.NET Framework 3.5の公開により、今まで3rdパーティ社製品をしないと構築が難しかったJava等の異プラットフォームで作成したサービスとの連携やLINQ技術の導入などで、プログラマーだけでなく、システム設計者にも新技術の習得が求められています。それぞれの技術の詳細についてはMicrosoft社の資料やBlog等の情報をご参照して頂きたいと思います。私もできるだけ情報を発信していきたいと思います。
しかし、システム設計者の本質である、「顧客要望の実現方法の模索」、「システムの品質確保」、「システム構築の効率向上」、「新技術の探求」といったことは今後も変わらないと思います。
国内外のコンピュータ関連技術者が「日本にはアーキテクトがいない」とおっしゃられるのをよく伺います。しかし、私はこの意見に対して自分なりにこのような意見を持っています。「確かに、個々の技術者としてのアーキテクトは少ないかもしれない。しかし、チームとしてシステムアーキテクチャを考える(設計する)ことのできる人材は多い」と思っています。
個々かチームかはどうであれ、顧客要望に沿ったシステムアーキテクチャを設計し、効率よく設計理念に沿ったアプリケーション(システム)を納期通り構築し、安定して稼働できればよいのではないでしょうか。
従来のシステム方式に新しい技術を融合させ、より顧客満足度の高いこれまでになかった新システムを構築する技術は、日本の技術者にはあると思っています。これらを活かし、日本の技術者の技術、モチベーション、向上心を上げて行けばよいと思います。
今回の連載を読んで頂いた方にとって何かしらのお役に立ち、ヒントを得て頂けたらとおもいます。