こんにちは😀
今回は、モジュールの分割についてまとめました。
プログラム作成歴も長いですが、改めて調べてみるとモジュール分割をあまり理解していなかったので、基本を整理してみました。
モジュールとは、「部品」を意味します。
ここでは、コーディングやプログラムの部品と思ってください。
ひとまとまりのプログラムを適切な部品に構造化設計できると、シンプルかつ保守性に優れたプログラミングを作ることができます。
そのためのモジュール分割技法には、「データの流れに着目」したものと「データの構造に着目」したものがあります。
プログラムをモジュールに分けると以下のメリットがあります。
・複数人でプログラムを作成する場合、作業分担が可能
・プログラムの再利用が容易
・修正が必要な場合、最小限の部分の修正で済む
モジュールの分割技法
具体的にモジュールの分割技法に関してみていきます。
STS分割法
プログラムを「入力処理」「変換処理」「出力処理」の3つのモジュール構造に分割する方法です。
トランザクション分割法
プログラムを一連の処理(トランザクション)単位に分割する方法になります。
共通機能分割法
プログラムの共通機能をモジュールとして分割する方法です。
ジャクソン法
「基本」「連続」「繰り返し」「選択」の4つの図式を用いて、データ構造とプログラム構造を階層化する方法です。
ワーニエ法
入出力データ構造の「順次」「選択」「繰り返し」の制御構造でプログラムを展開する方法です。
モジュールの独立性を測る
プログラムの保守性と信頼性を高めるには、モジュールの独立性が必要になります。
その独立性を測る尺度として用いられるのがモジュール強度とモジュール結合度になります。
モジュール強度
モジュール内の機能が内部でどのように関連付いているかを示す尺度です。
これが高いほどモジュールの独立性が高いと判断されます。
(高い)
機能的強度・・単一の機能を実行するためのモジュール
情報的強度・・同一のデータ構造を扱う機能をひとつにまとめたモジュール
連絡的強度・・複数の機能が逐次的に実行されるモジュール(連携あり)
手順的強度・・複数の機能が逐次的に実行されるモジュール(連携なし)
時間的強度・・特定の時点で必要となる複数の作業をまとめたモジュール
論理的強度・・論理的に関係のある複数の機能を持つモジュール
暗号的強度・・関連のない複数の機能を持つモジュール
(低い)
モジュール結合度
モジュールが他のモジュールとどのように結合するかを示す尺度になります。
これが弱いほどモジュールの独立性が高いと判断されます。
(弱い)
データ結合・・単一のデータを引数として渡すモジュール
スタンプ結合・・データ構造を引数として渡すモジュール
制御結合・・引数として制御パラメータを渡すモジュール
外部結合・・単一のデータを大域データとして渡すモジュール
共通結合・・データ構造を大域データとして渡すモジュール
内容結合・・他のモジュールないのデータを直接参照するモジュール
(強い)
今回の一言・・・
プログラムを書く上で、当たり前のようにやっていることでも改めて用語として確認するともっと考えて構造できると感じました。
今回はここまで🤚
では、また次回。