各プログラムをモジュールと言う単位に分解・階層化させることをプログラムの構造化設計と言う
モジュール分割技法
- データの流れに着目した手法
- データの構造に着目した手法
モジュールに分ける利点と留意点
メリット
- 作業が分担できる
- 再利用が容易
- 修正が一部で済む
留意点
- モジュールの中にいろんな機能が詰め込まれる
- モジュールの中身がやたらと他のモジュールに依存している
このようなものにならないようにしなければいけない
モジュールの分割技法
STS分割法
プログラムを「入力処理」「変換処理」「出力処理」の3つのモジュール構造に分割する手法。データの流れに沿って、その段階ごとに区切る感じ。
トランザクション分割法
プログラムを一連の処理単位に分割する方法
共通機能分割法
プログラム中の共通機能をモジュールとして分割する手法
モジュールの独立性を測る尺度
モジュールの独立性を測る尺度には「モジュール強度」と「モジュール結合度」の2つがある。
モジュール強度
モジュール内の機能が内部でどのように関連づいているかを示す尺度。「どれだけ機能的に特化できているか」を表していて、高いものほどモジュールの独立性が高くて好ましいとなる。
名称 | 強度 | 説明 | 独立性 |
機能的強度 | 強い | 単一の機能を実行するためのモジュール。シンプルでわかりやすい故に強固。 | 高い |
情報的強度 | ↑ ↓ |
同一のデータ構造を扱う機能をひとつにまとめたモジュール。機能ごとに入出力が可能。 | ↑ ↓ |
連絡的強度 | 複数の機能が逐次的に実行されるモジュール。一連の処理が連絡を取りながら加工するイメージ。 | ||
手順的強度 | 複数の機能が逐次的に実行されるモジュール。一連の処理だけをまとめたイメージ。 | ||
時間的強度 | 特定の時点で必要とされる複数の作業をまとめたモジュール | ||
論理的強度 | 似ているんだけどちょっとだけ違う複数の機能を持つモジュール | ||
暗号的強度 | 弱い | 関連のない複数の機能を持つモジュール | 低い |
モジュール結合度
モジュールが他のモジュールとどのように結合するかを示す尺度。「どんなデータをやり取りすることで、他のモジュールと結合するのか」を表すもの。
これが弱いほど「モジュールの独立性が高くて好ましい」となる。
どんなデータを渡す?
- 単一のデータ
- データ構造
どんな手段で?
- 引数で渡す
- 大域的データで渡す
名称 | 結合度 | 説明 | 独立性 |
データ結合 | 弱い | 単一のデータを引数として受け渡す | 高い |
スタンプ結合 | ↑ ↓ |
データ構造を引数として受け渡す | ↑ ↓ |
制御結合 | 他のモジュールの動作を制御する目的で、引数として制御パラメータを受け渡しするモジュール | ||
外部結合 | 単一のデータを大域的データとして受け渡すモジュール | ||
共通結合 | データ構造を大域的データとして受け渡すモジュール | ||
内容結合 | 強い | 他のモジュール内のデータを直接参照するモジュール | 低い |