モジュール、モジュール分割、モジュール階層、制御領域、影響領域、粒度、再分割、サブルーチン、STS分割、TR分割、共通機能分割、ワーニエ法、NSチャート、ジャクソン法
例えば受注処理では、注文受付、在庫確認、仕入依頼、…のように小さな処理があり、さらに注文受付は顧客確認や商品確認などに分解されます。このようにモジュールは大から小へ階層化されます。
分割される側を上位モジュール、分割した側を下位モジュールといい、下位モジュールを上位モジュールの従属モジュールといいます。また、最上位モジュールから最下位モジュールまでの階層数をモジュールの深さといいます。
STSとは、入力・源泉(Source)、処理・変換(Transform)、出力・吸収(Sink)の意味です。
入力から出力に至る主要なデータフローが1つの時に効果があります。
プログラム中でのデータの流れに着目し、
入力:プログラムへのデータの入力、他プログラムからのファイル読込、入力パラメータなど
最大抽象入力点:これ以降は入力データが発生しない区切点
変換:出力データを作成するための、データの計算や加工、変換など
最大抽象出力点」こり以降は出力データが発生しない区切点
出力:データの出力や表示、印刷、書き出しなど
の大きなモジュールに分割。それらを下位のノジュールに分割します。
DFDと同様の、ソフトウェア設計技法の一つで、機能を階層的に表現した図式目次(Hierarchy)と、データの入力(Input) - 処理(Process) - 出力(Output)に着目したIPOダイアグラムを作成します。このIPOがSTSに相当します。
対象となるデータの種類と、そのデータに対する関連する一連の処理をトランザクションという単位で分割する手法です。
主要なデータフローがデータの種類ごとに分岐するとき、個々の主要なデータフローをトランザクションといいます。
例えば、注文データが発生したとき、在庫を調べて、在庫があるときと、ないときの処理の2つのトランザクションになり、それぞれのモジュールに分割します。
STS分割やTR分割を行った後で、共通的に含まれる機能を探し、それを共通機能として1つのモジュールにします。
STS分割やTR分割では、大きな上位モジュールを複数の小さな下位モジュールに分解するので、木構造になります。それに対して、共通機能分割では、基本となる共通機能は単一機能のモジュールであり、それらが集まって大きなモジュールになるという順序になる(例えば、「注文を受ける」や「在庫を調べる」などの共通機能を合わせると「受注処理」という大きなモジュールができる)ので逆木構造になります。
仕入発注量の増減と出荷量の増減のように、物理的な観点では別個の機能であっても、「増減」という抽象的な見方をすると共通機能になることがよくあります。また、そうすることにより、このモジュールを他のシステムで使うことができます、
入力データを中心に,データが「いつ,どこで,何回」使われるかを3種類の制御構造(順次,選択,繰返し)でモジュールかする方法です。
ワーニエ法では、構造化プログラミングを前提にしており、それを図で表現するにはNSチャート(Nassi-Shneiderman chart)を用います。下図のように、矢印や線を使用せず、四角い枠の組み合わせで表現します。
入力データ構造と出力データ構造の対応関係からモジュールに分割する方法です。
入力から出力が得られるようプログラムの構造を決定していきます。その際、データやそれを扱うモジュールを、基本、連接、選択、反復の4つの要素を組み合わせて表現します。
入力データと出力データの構造は木構造になります。その二つの木構造の対応関係を作成します。それを図示したものをジャクソン木といいます。そしてその対応を写像と考えてモジュールとします。データ構造の上下関係がそのままモジュールの上下関係となります。