
353
30
年以上もの間、モジュール化は巨大ソフトウェアシステムの開発を可能とする鍵になるものと考
えられてきました。モジュールは、システムを個人やチームが構築できるようなソフトウェアの単位に
分割することにより、開発の複雑さに対処する上で役立ちます[
Dijkstra 1968
]、[
Parnas 1972
]。モ
ジュールはインタフェースの背後にある決定事項を隠すことを可能ならしめ、あるモジュールに対して
責任を持つ個人やチームが、他のモジュールに対して責任を持つ個人やチームによって行われた決定事
項とは無関係に作業を進めることができるようにします[
Parnas 1972
]。モジュールは、ソフトウェア
システムの部分どうしの境界を強制することを可能にし、ある部分を別の部分と取り換えることができ
たり[
Dijkstra 1968
]、システムのある部分に行われた変更の影響を最小限にとどめたり[
Parnas
1972
]、(分割コンパイルによって)変更が行われた際にシステムをビルドする時間を減らしたりします
[
Liskov et al. 1977
]。
プログラマたちがこれらの恩恵を最大限に受けることを助け、さらにそれ以上の利得のために、大半
のプログラミング言語はモジュールを表現するための明示的なサポート機構を提供します。たとえば、
Java
[
Gosling et al. 1996
]などの多くのオブジェクト指向プログラミング言語は、抽象データ型を定
義し実装する機能を通じて、粒度の小さなモジュラリティの概念をサポートしています。より粒度の大 ...