ソースコードの7つの品質特性に関して

はじめに

www.slideshare.net
によると、Jeff Bay氏によりソースコードの7つの品質特性として以下が提唱されている。

要するに特定の機能は1つのモジュールにまとめた上で各モジュールは独立するようにすべきという話かと。凝集度が高いモジュールは他との結合度が低いことが多く、逆に凝集度が低ければ結合度が高くなる傾向がある。当然であるが、テスト容易性という観点ではモジュール内の変数や状態は少ないほうがよい。

なお凝縮度と結合度が何かは以下に記載した。 というか凝縮度と結合度という概念を意識しないとまともなクラス設計なんてできるわけ無いですよね。

凝縮度

凝縮度:凝集度とは、クラスやパッケージ内の機能要素と情報要素間の関連性の強さを表す指標。モジュールの機能は内部的に閉じているように、特定の機能は特定のモジュール内に局在化しているのが望ましい。そのため凝縮度は高いほどよい。凝縮度はLCOMによってい定性的に測定可能である。

結合度

複数のクラスやパッケージ間の相互依存性。モジュールの独立という観点からは疎結合であるほど望ましい。