Skip to content.

Sections
Personal tools
You are here: Home » 技術文書 » オブジェクト指向 » オブジェクト指向の再定義 » オブジェクト指向の再定義[2]

Document Actions
オブジェクト指向の再定義[2] - EoC
前回は、EoT(Ease of Testing: テスト容易性)によってよいオブジェクト指向 設計を再定義したい、という表明をした。今回は、二本目のナイフを抜きたい。 キーワードは、EoC(*1)(Ease of Changing)、変更容易性だ。

この記事では、

    EoCの高い設計が、よいオブジェクト指向設計である。

と主張したい。設計品質の中で、「変更容易性(EoC)」を最上位と見る。

ここ20年のオブジェクト指向の最大の失敗は、「再利用性」をその最大の価値、 として説明しようとしてきたこと。そして分かったことは、再利用がその努力 コストに見合う効果がでることは極めて稀であること、また、テクノロジでは なくソーシャルな活動が再利用に効くこと、さらに、コードの再利用ではなく、 ナレッジの再利用(例えばパターン)の方が、まだ可能性があるということ (少なくとも2004年では)。

再利用性ではなく「変更容易性」に注目すべきだ。Kent Beckの "Embrace Change" であり、Bertland Meyer の "Build Software for Change" である。変更容易 性を高くしてソフトウェアを作れば、再利用性よりもコスト削減できる可能性 が出てくる。

オブジェクトを切り出すときに、「責務」とか「凝集度」と従来言われている 「概念の輪郭と中心を決めるもの」を「変更要因」と呼びかえる。外部の変更 要因をカプセル化してクラスとするのだ。1つの変更要因が、1つのクラスに閉 じるように。変更を伝播させてはならない。

また、アーキテクチャは、変更の頻度、または、変更の安定度にしたがってク ラス群の大域構造を決める活動だといえる。変更周波数を分析し、その順にパッ ケージを並べる。こうして、変更周波数の高い方が低いほうに依存するように する。MVCやBCEというアーキテクチャルな分割は、これに意味を付与したもの だが、この本質は変更要因の(時間ドメインでの)周波数だ。

大きな外部の変更は大きな内部変更で、小さな外部の変更は小さな内部変更で 済ませられること(小さな外部の変更が、大きな内部の変更にならないこと= Meyerのアーキテクチャ連続性)。この技術がオブジェクト指向設計であり、そ のためには、ソフトウェアの外部の問題構造とソフトウェア内部の解構造がダ イレクトマッピングされている必要がある。すなわち、外部の言葉で内部が設 計されており、外部の変更要因が、うまく内部の対応部分で吸収できる必要が ある。

まとめよう。EoCにしたがってソフトウェア設計を捕らえると、

  • ソフトウェア外部の変更可能性を分析して、ソフトウェアの大域構造を決める
  • ソフトウェア外部の個々の変更要因をクラスとして取り出す(そのために、)
  • ソフトウェア外部の問題領域の言葉で内部のモデルを構築する
となる。

[1] EoC: Ease of Changing、変更容易性。Modifiability に替わる平鍋の造語
つづき



この記事への評価にご協力をお願いします。

良かった 普通 イマイチ