2 - 2 ソフトウェア設計手法

第4部
開発技術
2 - 2 ソフトウェア設計手法
2-2-1 構造化設計
構造化設計とは,ソフトウェアに必要な機能と,それぞれの機能で使用するデータの流
れを分析/設計する手法(構造化手法)である。構造化設計のように,機能(処理)に着
目して開発する手法をプロセス中心アプローチ(POA:Process Oriented Approach)又は
プロセス中心設計という。構造化設計には,処理効率の向上,保守の容易化,モジュール
の部品化(再利用)などのメリットがある。
構造化設計では,次の手順に従って機能を段階的に詳細化し,階層構造にしていく。
【構造化設計の手順】
1)
機能の洗出し
2)
データフローの明確化
3)
機能のグループ化
4)
階層構造化
5)
プログラム機能の決定
6)
機能仕様の文書化
1)の“機能の洗出し”及び 2)の“データフローの明確化”は,ソフトウェア要件定義
プロセスに該当する工程で,構造化分析ともいわれる。構造化分析では,次のような図式
化手法を用いて業務プロセスなどを分析し,ソフトウェアに必要な機能を明確にする。
・DFD(Data Flow Diagram;データフローダイアグラム)
対象となる業務の流れを,処理(プロセス)と処理間で受け渡されるデータ
の流れで表す図式化手法である。業務で使用するデータの流れや処理/機能を
表現する業務モデリングなどで利用される。
記号
名称
データフロー
意味
データの流れを表す。
プロセス
(処理)
データの加工/変換などの処理や
活動(アクティビティ)を表す。
データストア
蓄積されたデータ(台帳,ファイ
ル及びデータベース)を表す。
データソース
(外部)
データの発生源(源泉)又は行き
先(吸収)を表す。
・状態遷移図
時間の変化や行動などに応じて変化する状況を表す図式化手法である。業務
の流れ(処理/機能)を視覚的に分析する際や画面遷移図などに用いられる。
215
3)~6)の“機能のグループ化”~“機能仕様の文書化”は,ソフトウェア方式設計プロ
セス及びソフトウェア詳細設計プロセスに該当する工程である。これらの工程では,次の
ような図式化手法を用いてソフトウェアに必要な機能を整理(分類)・分析し,段階的に
詳細化することで機能階層を明確にする。
・HIPO(Hierarchy plus Input Process Output)
ソフトウェアの機能・処理を階層構造で表す図式化手法である。
<図式目次>
<IPO ダイアグラム>
入力
処
理
出力
処理1
処理2
補
足
凡
例
処理3
図式名称
図式目次
(階層構造図)
役割
ソフトウェア又はシステムの機能を階層構造
(Hierarchy)で表現した図
総括ダイアグラム
(IPO ダイアグラム)
ソフトウェア又はシステム全体の入力/処理
/出力を表現した図
詳細ダイアグラム
(IPO ダイアグラム)
全体を構成する部分(機能)ごとの入力/処
理/出力を表現した図
・ジャクソン法/ワーニエ法
データ構造に着目したモジュール分割技法である。各技法には,データ構造
に対応した機能構造の図式が定められている。
【ジャクソン法の図式構造】
〔順次〕
〔選択〕
〔繰返し〕
・プロセスフロー
処理(機能)の実行順序(流れ)や,インタフェース(入力/出力など)を
表す図式化手法である。
216
第4部
開発技術
また,6)の“機能仕様の文書化”において,各機能(プログラム)の処理手順を表すに
は,次のような構造化チャートが利用される。構造化チャートは,
“一つの入口と一つの
出口をもつプログラムであれば,基本的な三つの構造単位(順次・選択・繰返し)の組合
せで表現することができる”という構造化定理に従って処理手順を考える構造化プログラ
ミングに適したチャート(図式)である。
・流れ図/フローチャート
一般的に使用されているアルゴリズム表記法である。処理手順を記号の組合
せで表現するので,視覚的にわかりやすいという利点がある。
〔順次〕
処理1
〔選択〕
条件
No
条件
Yes
処理2
処理3
〔繰返し〕
処理1
処理2
No
Yes
処理1
・NS 図/NS チャート(NS:Nassi-Shneiderman;ナッシ-シュナイダマン)
基本的な制御構造(順次・選択・繰返し)を,四角形を用いて表現する。
・PAD(Problem Analysis Diagram;問題分析図)
木構造を利用して,アルゴリズムの論理構造を表現する。
構造化設計によって,機能の段階的詳細化及び階層構造化を行うことで,ソフトウェア
構成品目→ソフトウェアコンポーネント→ソフトウェアユニット(モジュール)の順に,
ソフトウェア構造が詳細化される。
段階的詳細化に際しては,ソフトウェア要件及びソフトウェア品質特性(機能性,信頼
性,使用性,効率性,保守性,移植性)を満たすことを忘れてはいけない。また,ソフト
ウェアユニットへの分割(モジュール分割)では,モジュールの独立性をモジュール強度
やモジュール結合度で評価して,最適なモジュール分割を行うように心掛ける。
217