H26 技術士(情報工学)ソフトウェア工学 II-1-2:結合度、凝集度


(1)モジュール結合度とは
結合度は当該モジュールと他のモジュールとの関係で、他のモジュールと変数を共有していたり、呼び出したモジュールの制御を呼び出しもとで行ったり、処理の途中で他のモジュールに処理を渡しその結果を待って処理が再開するなどすると独立性が低いと判断する。
(2)モジュール凝集度とは
凝集度は実現しようとする機能をどのようなモジュール構成で実現しているかで、同様の手続きに関係する機能を1つのモジュールにまとめたり、関連するリソースを使用する機能を1つのモジュールにまとめたりすることが多い。
(3)期待されるモジュール結合度、凝集度
良い設計とは、ソースコードを読んでわかりやすいこと、不具合修正や機能追加の修正が行いやすいこと、他のプロジェクトへの流用が容易なことが挙げられ、これらを満たすためには結合度については他のモジュールとの関係が関数の引数のみのメッセージ結合とするのが良い。また、凝集度は1つのモジュールでは1つの機能を実現するにとどめる機能的凝集とするのが良い。
結合度を下げ、凝集度を高めると、ソースコードの可読性が高まり理解しやすくなるだけでなく、検証作業が容易になったり、不具合が少なくなったり、流用しやすくなったりというメリットがある。
特に、近年のソフトウェアはオブジェクト指向やサービス指向など、流用性と汎用性の高いソースコードが求められているので、作成したソフトウェアの結合度、凝集度を確認することが必要となってきている。


[Intermission]
ソフトウェアの出来の良し悪しは結合度と凝集度にあると思います。
適切な結合度と凝集度のソフトウェアはコードを理解しやすいですし、バグも少ないです。
しかも、後々ソースを流用する人などに悪態をつかれることがありません。
あと、関数のパス(経路)の数や、適切なコメントの有無もソフトウェアの良し悪しに関係しますね。



戻る 一覧へ