凝集度

凝集度（ぎょうしゅうど、コヒージョン、cohesion）とは、情報工学においてモジュール内のソースコードが特定の機能を提供すべく如何に協調しているかを表す度合いである。IPAが実施する情報処理技術者試験では、強度(きょうど、ストレングス、strength)という言葉が使われる。凝集度は順序尺度の一種であり、「凝集度が高い」とか「凝集度が低い」といった言い方で使われる。凝集度の高いモジュールは、堅牢性、信頼性、再利用性、読みやすさなどの点で好ましく、凝集度の低いモジュールは保守/評価/再利用/読解が難しいため好ましくないとされる。
凝集度は結合度と組み合わせて議論されることが多い。凝集度が高いモジュールは他との結合度が低いことが多く、逆に凝集度が低ければ結合度が高くなる傾向がある。ソフトウェアの品質を凝集度と結合度で表す手法は、、、 が定義したもので、「良い」プログラミングの実例の特徴を探るためにIBMで彼らが指揮したいくつかのソースコード解析から生まれた。
高い凝集度.
凝集度は、あるコードがどれだけそのクラスの責任分担に集中しているかを示す尺度である。オブジェクト指向プログラミングでは、クラスの凝集度を高めるようにそのクラスの責任範囲を設定することが有益とされている。凝集度の高いシステムでは、コードの読みやすさと再利用の容易さが増し、複雑さが管理可能な程度に抑えられる。
凝集度は次のような場合に低下する:
凝集度が低い（弱い）場合の欠点は次の通りである:
凝集度の程度.
凝集度は品質尺度であり、ソースコードを調査検討することで凝集度の程度が分類される。低い凝集度から高い凝集度までを以下のように分類できる:
凝集度は必ずしも上記の順に高いとか低いと言えるものではない。Larry Constantine やエドワード・ヨードンや他の人々の研究によると、上記の最初の2つは他の凝集よりも劣っており、通信的凝集以下の3つはそれ以外よりも優れている。いずれにしても7番目の機能的凝集が最も優れているとされる。
機能的凝集が最も好ましいとしても、現実には実現できない場合があるだろう。状況によっては通信的凝集が最善であることも多い。いずれにしても通信的凝集以下の3つの凝集では、モジュールを構成するコードが特定の機能を実現するために集中していて無駄がない傾向が強く、様々な状況で再利用の可能性が広がる。