機能的凝集の概念をよりよく理解するためにいくつかの研究を行いました。マイヤーズの著書「複合構造化設計」は、機能的結合について書いています:
機能強化モジュールは、単一の特定の機能を実行するモジュールとして定義されます。
また、「複合設計による信頼性の高いソフトウェア」にも次のように書いています。
機能強化モジュールでは、すべての要素が単一関数のパフォーマンスに関連しています。
他の著者は同様の見解を表明した:
単一の計算に不可欠な要素はすべてコンポーネントに含まれています。したがって、機能的にまとまりのあるコンポーネントは次のとおりです。
- 設計されたタスクを実行するだけでなく、
- その機能のみを実行し、他には何も実行しません。
または:
機能の結合:単一の関数の実行に必要な各部分。たとえば、平方根を計算したり、配列を並べ替えたりします。
私の質問は:
以下の間に混乱があります。
機能的結合 は後者に関するものです。それは、1つの特定の目的を果たすモジュール、パッケージ、コンポーネントを持つことです。たとえば、次のことができます。
もちろんここでは、解釈の余地があり、正確に測定することが難しい概念を使用して作業しています。
機能的な結束は、単一の責任とは何の関係もありません。そして、単一の責任は、1つのことだけを行うこととは何の関係もありません。単一の責任は、変更の理由とインターフェースを定義する責任にのみ関します( を参照)ボブおじさんの記事 :彼はコンセプトを発明したので、それが本当に何であるかについてある程度の権限を持っています手段)