モジュール性
凝集度
凝集度 (cohesion) とは、関連する要素がコンポーネントやモジュールに収まっているかを示す指標。
機能的凝集
-
関連する要素だけでモジュールが構成され、モジュールが機能するために必要不可欠なものが全て含まれている。
逐次的凝集
-
一方が出力したデータをもう一方が入力するようにしてい 2 つのモジュールが相互に作用している。
- 通信的凝集
-
2 つのモジュールが通信の連鎖を形成し、それぞれの情報を操作したり、何らかの出力に貢献したりする。例えば、データベースのレコードを追加し、その情報に元づて電子メールを生成する。
手続き的凝集
-
2 つのモジュールは特定の順序でコードを実行する必要がある。
時間的凝集
-
モジュール内に時間的関連がある。例えば多くのシステムにはシステム起動時に初期化しなければなあない、一見無関係な処理群が存在している。これらの子男なる処理には時間的な凝集があるといえる。
論理的凝集
-
モジュール内のデータは論理的に関連しているものの、機能的には関連していない。例えばテキストやシリアライズされたオブジェクト、またはストリームを情報へ変換するモジュールでは、これらは操作の上では関連があるものの、機能的には全く異なる。この種の凝集の典型的な例がほぼすべてのプロジェクトに存在する StringUtils モジュールである。殆どの場合、StringUtils モジュールは String を操作するということでは関連しているものの、互いには関連していない静的メソッドの集まりである。
偶発的凝集
-
モジュール内の要素は、同じソースファイル内にある以外には関連がない。これは最も最悪な形での凝集を表している。
参考文献
- RICHARDS, Mark; FORD, Neal. ソフトウェアアーキテクチャの基礎 ―エンジニアリングに基づく体系的アプローチ. O'Reilly Media, 2020.