プログラムは独立性の高いモジュールに分割して構築すると効率的です。
応用情報技術者試験を勉強する成子 

何がどう効率的なんですか?




たとえば電化製品を思い浮かべてみよう。
スマホでもいいのですが、いくつもの部品に分かれているので、故障時にはたとえば電池パックやSIMだけ交換するなどが可能。全部が一体型であれば、それは不可能です。
分かれているので、開発も楽だし、他への応用も可能(たとえば、電池は同じものを他の機種でも同じものにする)です。

過去問(H17秋FE午前問41)では、「ソフトウェアのモジュール設計において,信頼性,保守性を向上させるためのアプローチとして,望ましいものはどれか」という問で、「イ モジュール強度を強く,結合度を弱くする」が正解選択肢になっています。ここにあるように、信頼性や保守性の観点でも、適切なモジュール分割は重要です。

モジュール分割手法
ではモジュールをどのように分割するか。それがモジュール分割技法である。一般的には以下で整理されています。※分割技法の整理の考え方であって、このようにきれいに分けられるものではないと考えています。
(1)データの流れに着目した分割技法
・STS分割
・TR(トランザクション)分割
(2)データ構造に着目した分割技法
・ジャクソン法
・ワーニエ法

過去問(H28秋AP午後問8より)を見てみましょう。
モジュール分割手法には,データを処理するトランザクションに着目して一連の処理をトランザクション単位にまとめてモジュールに分割する[ TR分割 ],データの流れに着目してデータの入力・変換・出力の観点からモジュールに分割する[ STS分割 ],データ構造に着目して入力データ構造と出力データ構造の対応関係からモジュールに分割する[ ジャクソン法 ]などがあることが分かった。

STS分割
STSは入力(Source)、変換(Transform)、出力(Sink)を意味します。
過去問では、「STS 分割は,プログラムをデータの流れに着目して分割する技法であり,入力データの処理,入力から出力への変換及び出力データの処理の三つの部分で構成することで,モジュールの独立性が高まる。(H20共通午前問14)」STS分割は,データの流れに着目してプログラムを分割する技法であり,入力データの処理,入力から出力への変換処理及び出力データの処理の三つの部分で構成することによって,モジュールの独立性が高まる。(H28秋SA午前Ⅱ問7)」とあります。

TR分割(Transaction division)
「データを処理するトランザクションに着目して一連の処理をトランザクション単位にまとめてモジュールに分割する(H28秋AP午後問8より)」です。

ジャクソン法
「データ構造に着目して入力データ構造と出力データ構造の対応関係からモジュールに分割する(H28秋AP午後問8より)」です。この過去問(以下に掲載)では、ジャクソン法によるモジュール分割の例が記載されています。

◆モジュール分割の基準
モジュールの独立性(モジュールの強度や結合度)が一つに基準になる。たとえば、結合度が強いモジュールは分割したほうがよい。

■モジュール分割の過去問(H28秋AP午後問8より)
問8 モジュール分割に関する次の記述を読んで,設問1~4に答えよ。

 E社は,英会話教室や料理教室などのカルチャースクール向けにSaaSを提供する会社である。E社のサービスは,画面デザインやシステム機能を顧客向けにカスタマイズできる点が人気を集めており,約100社の顧客が利用している。E社のサービスを提供するシステムには,顧客向けのカスタマイズを容易にするために,システム機能の部品化による高い再利用性が求められている。
 E社では,ビジネス拡大を目的としてスポーツクラブ向けの施設利用状況管理サービスを提供することになった。施設利用状況管理サービスを提供するシステム(以下,新システムという)の開発は,E社開発部のF君が担当することになった。


〔新システムの概要〕
 新システムは,会員管理機能,利用管理機能,利用状況集計機能の三つの機能を提供する。会員管理機能は,会員の氏名や連絡先などの情報を登録・更新・削除する機能である。利用管理機能は,スポーツクラブの店に設置する受付機を用いて,会員の利用施設や利用開始・終了日時などの施設利用実績を記録する機能である。利用状況集計機能は,各施設の利用状況を集計してレポート出力する機能である。

〔新システムのプログラムの開発方針〕
 F君は,E社のサービス提供方法を考慮したプログラムの開発方針を策定し,上司の承認を得た。F君が策定したプログラム開発方針を図1に示す。
・顧客向けのカスタマイズが容易となるように,また,特定モジュールへのカスタマイズが他のモジュールに与える影響が最小となるように,モジュール分割を行う。
・特定顧客向けに開発したモジュールが他顧客にも利用できるように,共通機能をモジュール化し,モジュール強度を高め,モジュール結合度を下げる。
図1 プログラム開発方針


〔モジュール分割手法の選定〕
 F君は,新システムのモジュール設計を行うに当たり,モジュール分割手法の調査を行った。モジュール分割手法には,データを処理するトランザクションに着目して一連の処理をトランザクション単位にまとめてモジュールに分割する[  a  ]。
データの流れに着目してデータの入力・変換・出力の観点からモジュールに分割する[  b  ],データ構造に着目して入力データ構造と出力データ構造の対応関係からモジュールに分割する[  c  ]などがあることが分かった。
 F君は,新システムは,会員の施設利用実績データを蓄積し,それを集計した結果をレポート出力するので,[  c  ]が最適な手法であることを調査報告書にまとめ,上司の承認を得た。

〔利用状況集計機能の入出力データ分析〕
 利用状況集計機能のプログラムは,施設利用実績データを集計し,店ごとに施設の利用状況をレポート出力する。
 プログラムへの入力は,受付機で記録した施設利用実績データである。プログラムからの出力は,店ごとの施設の月間利用者数,最多利用者情報などを記載した施設利用レポートである。施設利用実績データの例を表1に,施設利用レポートの例を図2に示す。
H28春AP午後問8_表1

H28春AP午後問8_図2

 F君は,プログラムへの入出力データの分析を行い,入力データ構造図及び出力データ構造図を作成した。F君が作成した入力データ構造図を図3に示す。
H28春AP午後問8_図3

〔利用状況集計機能のプログラム構造の設計〕
 F君は,〔利用状況集計機能の入出力データ分析〕の結果を基に,プログラム構造の設計を行った。F君が設計したプログラム構造図を図4に示す。
H28春AP午後問8_図4


〔利用状況集計機能のモジュール分割〕
 F君は設計したプログラム構造図を基に,プログラム開発方針に従ってモジュール分割の検討を行った。F君が検討したプール利用状況出力処理のモジュール分割案を図5に示す。図5中の①~④の破線は,モジュール分割案を示している。
H28春AP午後問8_図5
 F君は,利用状況集計機能以外の機能についてもモジュール分割を行い,モジュール設計を完了させた。

設問1 本文中の[  a  ]~[  c  ]に入れる適切な字句を解答群の中から選び,記号で答えよ。

解答群
ア STS分割   イ TR分割   ウ オブジェクト指向
エ 共通機能分割  オ ジャクソン法  カ ワーニエ法
正解は、
a イ
b ア
c オ
です。

設問2 図3中の[  d  ],[  e  ]に入れる適切な字句を表1中の字句を使って答えよ。
正解は、
d 施設名
e 会員氏名
です。

設問3 図4中の[  f  〕,[  g  ]に入れる適切な字句を20字以内で答えよ。
正解は、
f 店ごとの施設利用レポート出力処理
g 利用者なし表示出力処理
です。

設問4 〔利用状況集計機能のモジュール分割〕について,(1),(2)に答えよ。
 (1)図5中の②の破線の下の処理を複数の施設の利用状況出力処理で共通して利用するモジュールとする場合,モジュールの結合度は何結合となるか,解答群の中から選び記号で答えよ。

解答群
ア データ結合   イ スタンプ結合   ウ 制御結合
エ 外部結合    オ 共通結合   カ 内容結合

 (2)図5中の処理をプログラム開発方針に従って,モジュール強度を高め,モジュール結合度を下げるようにモジュール分割するとき,最適な分割を図5中の①~④の番号を用いて答えよ。また,その理由を40字以内で述べよ。
正解は、
(1) ウ
(2)
分割 ④
理由 データ結合のモジュールに分割でき,再利用やカスタマイズが容易となるから
です。