2021-02-20

『オブジェクト指向入門 第2版』の5章を読んだ

第5章 オブジェクト技術への道

モジュールを探す基準

システムに含まれるモジュールを構築する方法として,以下の二つが挙げられる.

  • 機能による分解:機能で分割してモジュールを構築する方法
  • オブジェクトによる分解:オブジェクトの主要な型を中心にモジュールを構築する方法

機能による分解

機能による分解は,抽象的な機能の定義から段階的に詳細化して行う.最上位の機能から,トップダウンのアプローチで具体的な機能を明らかにする.この方法は,システムの複雑さを抑えることができる(※要確認).

トップダウンによるアプローチでは,小さなプログラムや,アルゴリズムを個別に開発する際には役に立つ.言い換えると,最上位となる機能が決まっており,変化が少ないソフトウェアにおいては,機能による分解は有効であるといえる.

一方で,システム全体を設計する方法としては,機能による分解は適していない.多くのシステムは機能が1つではなく,変化が多いからである.最上位の機能が決められなければ,トップダウンのアプローチは取れない.また,動作の実行順序が早い段階で決められてしまうため,機能を変更するのが難しい.

再利用性という点でも,この方法はあまり有効でない.上位の機能を満たすために作成されたそれぞれのモジュールは,それほど凡用的にはならない傾向がある.

オブジェクトによる分解

システムの開発において,機能の変更は多いかもしれないが,システムが扱うオブジェクトの型は変更されにくい.そのため,型に注目して開発を進めることで,拡張性を満たせる可能性がある.ただし,オブジェクトの粒度が適切でなければ,そのような利点は失われる.

オブジェクト指向によるソフトウェア構築の暫定的な定義として,以下のように述べられている.

オブジェクト指向によるソフトウェア構築とは、(システムが保障しようとする機能や機能群ではなく)操作するオブジェクトの型から導かれるモジュールを基本に、すべてのソフトウェアシステムのアーキテクチャを構築するソフトウェア開発手法である。

システムの開発者は,最上位の機能を探すことではなく,システムのオブジェクトを探すことから始める.十分に抽象的な記述からアーキテクチャを構築することで,拡張性や再利用性という条件を満たせる.

課題

オブジェクト指向によるソフトウェア構築の課題として,以下の4つが挙げられる.

  • オブジェクトの型の探し方
  • オブジェクト型の表現方法
  • オブジェクト型の間の関係と共通性の記述の仕方
  • ソフトウェアを構造化するためのオブジェクト型の使い方

これらの課題については,後に述べられる.