ソフトウェア開発プロセスの3つの観点


UML モデリングのエッセンス 第3版 (Object Oriented SELECTION)

UML モデリングのエッセンス 第3版 (Object Oriented SELECTION)

昔むかし、ファウラーが3つの観点について説明していました。

概念(conceptual)

この観点は、調査対象領域における概念を表現したものです。
そして概念モデルは、概念を実装するソフトウェアとは関係なく導きだされるべきものです。
この観点は「私は何に対して責任があるのか?」という質問に答えるものです。

仕様(specification)

ここではソフトウェアを考慮することになります。
しかし考慮する対象はソフトウェアの実装ではなく、ソフトウェアのインタフェースです。
この観点は「私はどのように使用されるのか?」という質問に答えるものです。

実装(Implementation)

この時点ではソースコード自体を考慮することになります。
これが最もよく使用される観点ですが、多くの場合は仕様という観点の方が優れています。
この観点は「私はどのようにして自身の責任を全うするのか?」という質問に答えるものです。

3 つの観点から見たオブジェクト

  • 概念レベル - オブジェクトは責任の集合となる
  • 仕様レベル - オブジェクトは振る舞いの集合となる
  • 実装レベル - オブジェクトはコードとデータ、そしてそれらの相互の演算処理となる

概念レベルでコミュニケーションを図ることで、リクエストする側には概念だけを残すことができる。 これはすなわち、仕様レベル・実装レベルで発生する変化に対して、リクエストする側を保護することができることを意味します。

オブジェクト指向における抽象の意味合い

3 つの観点は段階的に抽象度があがります。 より高い抽象度で物事をとらえることで、一段下の詳細について考慮しなくてよくなります。 逆から見ると、詳細で発生した変更が、一段上の抽象に対して影響することが少なくなります。

オブジェクト指向の設計は実装レベルで語られることが多いですが、概念レベルまであがった抽象で物事をとらえることが重要となります。