基本・応用情報処理試験

【ソフトウェア設計手法】構造化設計【モジュール強度・結合度】

ソフトウェア設計手法には、プロセス中心アプローチで主に使われる構造化設計や、オブジェクト指向設計がある。

構造化設計とは、機能を中心にプログラムの構造を考える設計手法です。機能分割を行い、段階別詳細化をすることで段階構造を作成します。このとき、プログラムの最小単位であるモジュールにまで分割する。また、構造化プログラミングの考え方に基づいた設計手法である。構造化プログラムでは、構造化定理と呼ばれる、「一つの入り口と一つの出口を持つプログラムは、順次・選択・反復の三つの論理構造によって記述できる」という考え方により、プログラム上の手続きをいくつかの単位に分け、モジュールに分割する。

モジュール分割手法

STS (Source Transform Sink)分割

データの流れに着目する。データの入力処理(Source)、データの変換処理(Transform)、データの出力処理(Sink)の三つのモジュールに分割する。

TR (Transaction)分割

トランザクションの種類ごとに一つのモジュールにする。データの種類によってトランザクションが分かれる場合などにモジュール分割する手法。

共通機能分割

システム全体で同じような機能を洗い出し、それを共通機能としてモジュールにする方法

ジャクソン法とワー二エ法

ジャクソン法:データの構造に着目する。入力データと出力データ構造からプログラムの構造を求めるの。

ワーニエ法: 入力データのデータ構造を分析し、プログラムの論理構造図(ワーニエ図)を作成する。

モジュール分割の基準

モジュール分割を行った後のモジュールは、それぞれのモジュールの独立性が高いほど良いとされている。モジュールの独立性を高めることで、あるモジュールを変更しても他の影響が最小限にとどまるために、保守性が上がる。また、独立したモジュールは別のソフトウェアで利用しやすくなるので、再利用性が上がる。

モジュール強度(モジュール凝集度、結束度)

モジュール強度説明
機能的強度
(強度強い↑)
一つの機能だけを実現するモジュール
情報的強度特定のデータを扱う複数の機能を一つのモジュールにまとめたもの
連絡的強度モジュールの要素間で同じデータの受け渡しや参照が行われるもの。
手順的強度順番に行う複数の機能をまとめたもの
時間的強度時間的に連続した複数の機能をまとめたもの
論理的強度論理的に関連のある複数の機能をまとまたもの
暗号的強度
(強度弱い↓)
関係のない複数の機能をまとめたもの
モジュール強度覚え方

昨日(機能)の常連(情 連)って(手)ジロリアン(時 論 暗)?

機能的強度がもっとも強度が強い(独立性が高い)
暗号的強度がもっとも強度が弱い(独立性が低い)
語呂の先頭に行くほど、強度が強くなる(独立性が高くなる)

モジュール結合度

モジュール同士の関連性の強さを示す概念です。モジュール同士の結合度合いが強ければ、関連するモジュールに変更があった場合の影響は大きく、反対に結合度が弱ければ影響を受けにくくなります。独立性と保守性の観点から、モジュール分割の際にはモジュール結合度が低くなるように設計することが望まれます。

モジュール結合説明
データ結合
(結合度弱い↑)
単一データの変数を引数として受け渡すもの
スタンプ結合データ構造(構造体、レコードなど)を引数として受け渡すもの
制御結合制御情報を引数として与えるもの
外部結合単一データの変数をグローバル変数として宣言し、参照するもの
共通結合データ構造をグローバル変数として宣言して、参照するもの
内容結合
(結合度強い↓)
ほかのモジュールの内部を直接参照しているもの
モジュール結合度覚え方

結合です(デ ス)制御が(外)できない(共 内)

データ結合がもっとも結合度が弱い(独立性が高い)
内容結合がもっとも結合度が強い(独立性が低い)
語呂の先頭に行くほど、結合度が弱くなる(独立性が高くなる)