凝集度の程度
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/08/08 18:38 UTC 版)
凝集度は品質尺度であり、ソースコードを調査検討することで凝集度の程度が分類される。低い凝集度から高い凝集度までを以下のように分類できる: 偶発的凝集(Coincidental Cohesion)「最悪」 適当(無作為)に集められたものがモジュールとなっている。モジュール内の各部分には特に関連性はない(例えば、よく使われる関数を集めたモジュールなど)。 論理的凝集(Logical Cohesion) 論理的に似たようなことをするものを集めたモジュール(例えば、全ての入出力ルーチンを集めたモジュールなど)。 時間的凝集(Temporal Cohesion) 動作させたときにモジュール内の各部分が時間的に近く動作する(例えば、ある例外を受けたときに動作するルーチンとして、ファイルをクローズするルーチン、エラーログを作成するルーチン、ユーザーに通知するルーチンなどを集めたモジュール)。 手続き的凝集(Procedural Cohesion) ある種の処理を行うときに動作する部分を集めたモジュール(例えば、ファイルのパーミッションをチェックするルーチンとファイルをオープンするルーチンなど)。 通信的凝集(Communicational Cohesion) 同じデータを扱う部分を集めたモジュール(例えば、同種のレコードの情報を操作するルーチンを集めたモジュールなど)。 逐次的凝集(Sequential Cohesion) ある部分の出力が別の部分の入力となるような部分を集めたモジュール(例えば、全体としてあるファイルを読み込んで処理をするモジュール)。 機能的凝集(Functional Cohesion)「最善」 単一のうまく定義されたタスクを実現するモジュール(例えば、角度のサインを計算するモジュール) 凝集度は必ずしも上記の順に高いとか低いと言えるものではない。Larry Constantine やエドワード・ヨードンや他の人々の研究によると、上記の最初の2つは他の凝集よりも劣っており、通信的凝集以下の3つはそれ以外よりも優れている。いずれにしても7番目の機能的凝集が最も優れているとされる。 機能的凝集が最も好ましいとしても、現実には実現できない場合があるだろう。状況によっては通信的凝集が最善であることも多い。いずれにしても通信的凝集以下の3つの凝集では、モジュールを構成するコードが特定の機能を実現するために集中していて無駄がない傾向が強く、様々な状況で再利用の可能性が広がる。
※この「凝集度の程度」の解説は、「凝集度」の解説の一部です。
「凝集度の程度」を含む「凝集度」の記事については、「凝集度」の概要を参照ください。
- 凝集度の程度のページへのリンク