【問題7】詳細設計におけるモジュール分割:“組み込み力”向上! ETEC対策ドリル Step2(7)
要件定義、基本設計に続き、詳細設計では基本設計で分割したサブシステムをさらにモジュールに分割し、機能やインターフェイスなどを設計する
前回の課題演習―【問題7】は、「モジュール分割手法」に関する問題でした。
要件定義および基本設計に続き、詳細設計では、基本設計で分割した「サブシステム」をさらに「モジュール」に分割し、機能やインターフェイスなどの詳細を設計します。
今回は、問題の解答に続いて、“詳細設計におけるモジュールの分割手法や設計”について解説します。この機会にしっかりと理解しておきましょう。
それでは、解答を発表します!
課題演習―【問題7】の解答
解答は、「ウ.データの流れに着目して、プログラムを入力機能、変換機能、出力機能に分けてモジュール分割を行う」です。
アは「TR分割」、イは「ジャクソン法」、エは「ワーニエ法」の説明です。
モジュール分割
要件定義でシステムへの機能要件および非機能要件を明確化し、基本設計ではシステムをサブシステムに分割してインターフェイスなどの設計を行いました。詳細設計では、サブシステムをさらにモジュールに分割し、モジュールのインターフェイスや機能を設計します。
モジュールとは、ソフトウェアを構成する部品のことです。プログラミングや単体テストは、モジュールを最小単位として行います。モジュール分割を行うことによって、大人数での並行開発が可能になり、生産性が向上するだけでなく、ソフトウェアの再利用や保守がしやすくなります。
代表的なモジュール分割手法には、表1のようなものがあります。
分割手法 | 説明 |
---|---|
STS分割 | データの流れに着目して、入力機能(Source:源泉)、変換機能(Transform:変換)、出力機能(Sink:吸収)に分けてモジュール分割を行う |
TR(トランザクション)分割 | データを処理するトランザクションごとにモジュール分割を行う |
ジャクソン法 | 入出力データの構造に着目して、基本、連続、繰り返し、選択という4つの構成要素でモジュール分割を行う |
ワーニエ法 | 入力データの構造に着目して、順次、選択、繰り返しという3つの構成要素でモジュール分割を行う |
表1 代表的なモジュール分割手法 |
モジュールの独立性
モジュール分割を行う際には、モジュールの独立性に注意しなければなりません。モジュールの独立性が低く、ほかのモジュールの処理などに依存する割合が高いと、再利用性や保守性などが低下し、モジュール分割によるメリットが十分得られなくなります。モジュールの独立性を測る尺度としてモジュールの強度と結合度があります。
モジュールの強度(または凝集度)は、1つのモジュールに実装される機能間の関連性の強さを示します。モジュールの強度が強いほど、モジュールの独立性も高くなります。
「機能的強度」を持つモジュールは、1つの機能のみを実装しているため、仕様変更による修正が生じてもほかのモジュールに影響を与えません。一方、「暗号的強度」のモジュールは関連性のない複数の機能を実装しているため、その機能のいずれかを修正すると、ほかのモジュールにも修正を加えなければならない可能性があり、プログラムの保守がしにくくなります。
モジュールの結合度は、データの受け渡しに関し、ほかのモジュールにどれだけ依存しているかの度合いを表します。モジュールの結合度が弱いほど、モジュールの独立性が高くなります。
「データ結合」のモジュールは、必要最小限のデータのみを受け渡しているため、ほかのモジュールでの修正の影響が小さくて済みます。「内容結合」のモジュールは、ほかのモジュール内を直接参照してデータを受け渡しているため、ほかのモジュールの修正に合わせて修正しなければならない可能性が高くなります。
コラム1:サイクロマティック数
モジュールの設計
モジュール分割を行い、モジュール間のインターフェイスを決めたら、モジュールを設計します。このとき、モジュールでどのように処理を実行するかを「フローチャート」や「構造化チャート」などを使って図式化します。
図 | 説明 |
---|---|
フローチャート | モジュールの開始から終了までの論理の流れを、処理、分岐、繰り返しなどの記号を使って表す。フローチャートの書き方はJIS X 0121として規格化されている |
構造化チャート | モジュールの論理を階層構造にまとめて表す。論理を木構造として表すSPD(Structured Programming Diagram)やPAD(Problem Analysis Diagram)、処理や分岐などを矩形(くけい)を組み合わせて表現するNSチャートなどがある |
表4 モジュールの設計に用いる図 |
コラム2:MISRA-C
課題演習―【問題8】
いかがでしたでしょうか? モジュールの分割や設計の手法について理解できましたか。次回は「オブジェクト指向」について説明します。お楽しみに! (次回に続く)
Copyright © ITmedia, Inc. All Rights Reserved.