システム開発はなぜ楽にならないか?保守性・拡張性に優れたシステムを作る(12)(2/2 ページ)

» 2008年07月15日 12時00分 公開
[野村佳弘@IT]
前のページへ 1|2       

作るのは難しい。が、利用は簡単

 ここまで何度か言及したように、オブジェクト指向を利用してシンプルな構造のコンポーネント構造を作ることは難しいことです。シンプルな構造を実現するためには、分析の段階からシステムの本質的な構造をとらえて、拡張性・保守性を考慮しながら、コンポーネントやクラスの構造を設計しなければなりません。この本質的な構造を見据えてシステムの構造を定義するのは、オブジェクト指向の考え方を導入することにより実現できます。

 これも何度も書いてきたことですが、それに対して、コンポーネントを利用してアプリケーションを構築することは比較的簡単です。インターフェイスが定義され内部機能が隠ぺいされたコンポーネントは、複雑な内部機能を知らなくても、必要最小限の機能を知るだけで利用することができからです。そのため誰にでも簡単に利用することが可能です。

 階層化アーキテクチャにおいては、再利用性の高いドメイン層の設計は、概念モデルを基に、コンポーネント間の依存関係、責務の的確な定義と機能の隠ぺい、抽象化を利用した拡張性の定義(ホットスポット)などのオブジェクト指向設計技法を適用したコンポーネント設計を行うため、難しくなります(図1)。

ALT 図1 この図は、本連載第7回「階層アーキテクチャの利点は、複雑さの減少」で取り上げた階層化アーキテクチャの例

 それに対しサービス層の設計は、サービス間の依存関係は少ないことなど、サービス層からドメイン層のコンポーネントを利用するため、比較的簡単な設計になります。新しいサービスが増えても、サービス層に新たなサービスを追加し、ドメイン層を利用してサービスを実現していきます。

 ドメイン層をコンポーネント化することにより、サービス層から簡単に利用できるため、サービス層の設計は比較的簡単になります。

 このように難易度は高いですが、オブジェクト指向を利用しやすいアーキテクチャやコンポーネントに設計し、それらを利用してシステムを簡単に構築することが求められます。

技術の進歩は、システムをシンプルに作るため

 ソフトウェア開発において開発を楽にするためには、コンポーネントに基づくアーキテクチャをシンプルな構造として設計することです。そのためにオブジェクト指向分析設計やJavaなどはあるのです。

最後に

 2年あまり本連載を執筆してきましたが、今回で終了です。オブジェクト指向における拡張性・保守性について、これまで私なりの考えを書いてきました。

 拡張性・保守性の高いシステムとは、「顧客の要求を満たす最小完備の機能を具備したシンプルな構造のシステム」を設計することだと考えています。それは、抽象化を通して本質的な構造を見つけ出し、モデルを構築することでもあります。

 オブジェクト指向分析設計は、考え方が難しいかもしれませんが、これからのシステム開発には欠かせないものです。皆さんも少しずつでもプロジェクトに適用し、試してみてはいかがでしょうか。

筆者プロフィール

野村 佳弘(のむら よしひろ)


前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ