多事想論articles

ソフトウェア設計 -ソフトウェアの内部構造はどうなっているのか-

(2/6)

 前述したソフトウェアの内部構造を、ソフトウェアを構成するモジュール間の依存関係で表すと下図のような状態になっている。左図の開発当初の状態では管理モジュールが各ユーザモジュールや各制御モジュールを呼び出すような階層化された構造になっているが、右図のスパゲティ状態では階層が崩れ、各モジュールがメッシュ状に依存関係を持ってしまっている。この状態のソフトウェアに対して機能追加すれば一つの変更が他のモジュールへ広範囲に影響を与えることが容易に想像できる。影響範囲が広ければ、広い範囲にわたって影響を考慮して設計しなければならず、また検証範囲も増えることから工数がかかり非効率である。さらに漏れ抜け等を起こしやすく品質面でも良くない。
 例えば、制御モジュール4を修正する場合、開発当初は管理モジュールとドライバ2の二つしか依存関係がなかったものが、ユーザモジュール3、制御モジュール1、制御モジュール2にも依存関係が広がっている。広がった部分について影響を確認し、必要に応じて修正し、検証を行なわなければならないのである。

ソフトウェアの内部構造
図 ソフトウェアを構成するモジュール間の依存関係例

資料ダウンロードはこちら