『オブジェクト指向入門 第2版』の5章を読んだ
第5章 オブジェクト技術への道
モジュールを探す基準
システムに含まれるモジュールを構築する方法として,以下の二つが挙げられる.
- 機能による分解:機能で分割してモジュールを構築する方法
- オブジェクトによる分解:オブジェクトの主要な型を中心にモジュールを構築する方法
機能による分解
機能による分解は,抽象的な機能の定義から段階的に詳細化して行う.最上位の機能から,トップダウンのアプローチで具体的な機能を明らかにする.この方法は,システムの複雑さを抑えることができる(※要確認).
トップダウンによるアプローチでは,小さなプログラムや,アルゴリズムを個別に開発する際には役に立つ.言い換えると,最上位となる機能が決まっており,変化が少ないソフトウェアにおいては,機能による分解は有効であるといえる.
一方で,システム全体を設計する方法としては,機能による分解は適していない.多くのシステムは機能が1つではなく,変化が多いからである.最上位の機能が決められなければ,トップダウンのアプローチは取れない.また,動作の実行順序が早い段階で決められてしまうため,機能を変更するのが難しい.
再利用性という点でも,この方法はあまり有効でない.上位の機能を満たすために作成されたそれぞれのモジュールは,それほど凡用的にはならない傾向がある.
オブジェクトによる分解
システムの開発において,機能の変更は多いかもしれないが,システムが扱うオブジェクトの型は変更されにくい.そのため,型に注目して開発を進めることで,拡張性を満たせる可能性がある.ただし,オブジェクトの粒度が適切でなければ,そのような利点は失われる.
オブジェクト指向によるソフトウェア構築の暫定的な定義として,以下のように述べられている.
オブジェクト指向によるソフトウェア構築とは、(システムが保障しようとする機能や機能群ではなく)操作するオブジェクトの型から導かれるモジュールを基本に、すべてのソフトウェアシステムのアーキテクチャを構築するソフトウェア開発手法である。
システムの開発者は,最上位の機能を探すことではなく,システムのオブジェクトを探すことから始める.十分に抽象的な記述からアーキテクチャを構築することで,拡張性や再利用性という条件を満たせる.
課題
オブジェクト指向によるソフトウェア構築の課題として,以下の4つが挙げられる.
- オブジェクトの型の探し方
- オブジェクト型の表現方法
- オブジェクト型の間の関係と共通性の記述の仕方
- ソフトウェアを構造化するためのオブジェクト型の使い方
これらの課題については,後に述べられる.