3章モジュール性

まずはじめに、モジュール性をめぐるアーキテクチャの議論でよく使われる一般的な用語を明らかにし、本書で使用する定義を示したい。

(ソフトウェアアーキテクチャに関する)言説の95%は、「モジュール性」の利点を称賛するために費やされている。しかし、それを実現する方法については、多少はあるにしても、ほとんど語られていない。

Glenford J. Myers(1978)

プラットフォームによって、コードの再利用メカニズムはさまざまだ。しかし、どんなプラットフォームであっても、何らかの方法で関連するコードをモジュールにまとめられる。モジュールの概念はソフトウェアアーキテクチャの世界では一般的であるものの、その定義は曖昧だ。インターネットで検索すると、何十もの定義が見つかるだろう。しかし、それらに一貫性はないし、矛盾しているものさえある。Myersの引用からもわかるように、これは昔からある問題だ。確立された定義は存在しないものの、本書の中では一貫性を保ちたい。そこで、私たちはまずこの論争に飛び込み、独自の定義を提供したい。

モジュール性を理解し、選んだ開発プラットフォームにおけるその多くの形態を理解することは、アーキテクトにはとても重要だ。私たちがアーキテクチャを分析する際に使うツールの多く(メトリクス、適応度関数、可視化など)は、そうしたモジュール性の概念に依存している。モジュール性とは編成の原理を成すものだ。もし、アーキテクトが要素同士の繋がりに注意を払わずにシステムを設計したとすると、数えきれない困難をもたらすシステムが出来上がってしまうことになる。物理学に例えるなら、ソフトウェアシステムは複雑系のシステムであり、エントロピーが増大する(無秩序に向かう)傾向がある。物理システムの秩序を維持するには、エネルギーを加えなければならない。ソフトウェアシステムも同じことが言える。アーキテクトは、偶然に身を任せるのではなく、構造を良い状態に保つために常にエネルギーを費やし続けなくてはならない。 ...

Get ソフトウェアアーキテクチャの基礎 ―エンジニアリングに基づく体系的アプローチ now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.