Section 8.5 システムの分割
システムにおいても、集合と同様に、分割を定義することを考える。 「相互に関連する」というシステムの定義より、そのままでは分割できないことは明らかである。 もしシステムの中に分割可能な部分が存在すれば、その部分はシステムの他の部分と関連していないため、システムの定義に反している。命題 8.18. システムの連結性.
システム定義 8.19. システムの準分解.
システム注釈 8.23. オブジェクト指向.
プログラミングパラダイムの1つであるオブジェクト指向プログラミング(Object-Oriented Programming)は、JavaやPythonなど、現在使われている多くのプログラミング言語で採用されている。 オブジェクト指向では、データや処理からなるオブジェクト(object)をプログラムの基本単位として、オブジェクト間のメッセージング(messaging)により処理を実装する[74]。
プログラムでは、基本となる部分をモジュール(module)と呼ぶ。 プログラムの設計にあたっては、プログラムの各部分を、目的により適切なモジュールに準分解することが必要であり、これを関心の分離(separation of concerns)という[75]。 関心の分離に基づく設計を行うことで、各モジュールの機能やモジュール間の依存関係が明確になり、プログラムの保守性が高まるとされる。 プログラムの準分解に用いる仕組みはプログラミング言語毎に異なるが、関数(function)、クラス(class)、ライブラリ(library)、パッケージ(package)などの名称で呼ばれることが多い。
作成されたプログラムにおいて適切な関心の分離が行われたかを判断する基準には、凝集度と結合度がある。 凝集度(cohesion)はモジュール内の関係性の強さ、結合度(coupling)はモジュール間の関係性の強さを表す。 凝集度が高く結合度が低いと、関心の分離に基づく実装がなされていると考えられる。