モジュールのとは
一般的ににモジュールとはより複雑な構造を構築するために使用できる標準化された部品、または独立した単位の各集合
本社では
関連するコードを論理的にグループ化することをモジュール
定義
モジュールをモノリシックのようにするのではなく、部品ごとにプラットフォームに
分けるほうが再構築ができ、変更や修正がスムーズに行うことが出来る。
モノリシックとは
システムなどの構造について、要素に分割されておらず、全体が一体になっていること
3-2 モジュール性の計測
凝集度
本書では
凝集度とはモジュールの要素がどの程度、そのモジュールに収まっているかの度合いを指す。言い換えれば、凝集度とはモジュール内の要素同士の関連度を表す。
自分で翻訳
一つのモジュール内のコンポーネントがお互いに関連している程度
凝集度の尺度は次のように定義している
・機能的凝集度
関連する要素だけでモジュールが構成され、モジュールが機能するために必要なものがすべて含まれている。
・逐次的凝集
一方が出力したデータをもう片方が入力する形で2つのモジュールが相互に作用している
・通信的凝集
2つのモジュールが通信の連鎖を形成し、お互いの情報を操作したり、なにかしらの出力に貢献したりする。たとえば、データベールにレコードを追加し、電子メールを生成する。
・手続き的凝集
2つのモジュールは特定の順番でコードを実行する必要がある。
・時間的凝集
モジュール間に時間的な依存関係がある。たとえば、多くのシステムには起動時に初期化しなければならない。一見、無関係な処理群が存在している。これらの異なる処理には時間的な凝集があるといえる。
・論理的凝集
モジュール内のデータは論理的に関連しているものの、機能的には全く関連していないといえる。(フォーマットやデータの型が全く違う)
例えば、テキストやシリアライズされたオブジェクト、またはストリームを情報へと変換するモジュールだと、これらの場合、操作上では関連があるものの、機能は全く違う。
・偶発的凝集
モジュール内の要素は同じソース内にある以外には関連性がない。これは最も悪い形になる
7段階も尺度があるにもかかわらず、凝集度は結合度よりも精度が低いメトリクスです。(CPU使用率、メモリ使用率、ディスク使用率、Date //o ,アクセス数、などの情報を取得して測定値をグループ化したもの)
モジュールはLOCMのスコアが低く、凝集度が高いとよいモジュール構造といえる
LOCMとは(メゾッドの凝集度の欠如)とはモジュールの構造的な凝集度を計測するメトリクスのこと。LOCMのスコアが低いとモジュール内のメゾットがお互い密接に関連していなくモジュール全体が統一感があり、再利用性が高く、テストしやすい。一般的にLOCMスコアが低いと良い。ただLOCMではクラス同士の関係性は見れない。
モジュールの凝集度が低いと責任が分かれている。つながりが複雑で目的が違う部品が同じモジュールに存在する部品同士の関係が強くなったり、再利用性が難しくテストも難しいなのでモジュール凝集度が低いと役割の分散やつながりの複雑化、再利用、テストの難しさの問題が生じる可能性があるので凝集度が高い設計を心掛けたほうがいい。
ソフトウェアアーキテクチャの第二のほうそくとはモジュール(クラス)間の結びつきをできるだけ弱くするということ。
・求心性結合
コードアーティファクト(コンポーネント、クラス、関数など)に外部から入力される接続数を計測する
・遠心性結合
他のコードアーティファクトに出力する接続数を計測する
・コナーセンス
求心性と遠心性の結合メトリクスを解消しそれをオブジェクト指向向けに再構築したもの
静的と動的、2種類のコナーセンスを定義した。
上をわかりやすくまとめると
求心性と遠心性はプログラムの設計において各部分がどれだけ依存しているか独立しているか示す尺度のこと
コナーセンスとは
システムやプログラムを作る際にお互い関連しあっていることを意識することで全体として正しく機能するシステムをお作るための考え方のこと。