構造化技法について
構造化技法(構造化分析設計技法)とは
構造化技法(SADT:Structured Analysis and Design Technique)とは
構造化技法とは、システムを「特定の機能を実現するプロセスの集合体」と考えて、システムの詳細な機能を洗い出す分析設計技法です。
この技法では、構造化分析および構造化設計を実施し、DFDなどの図法を用いて可視化して、分かりやすく詳細な設計図を作成します。
構造化技法は、構造化定理・構造化プログラミングを基にした考え方であり、複雑で大規模なシステムを効率的に作り上げることを目的としています。
この技法は、業務プロセスや機能に着目したシステム開発手法であるため、「プロセス中心アプローチ(POA:Process Oriented Approach)」の開発方法論に分類されます。
構造化分析(Structured Analysis)とは
構造化分析とは、ソフトウェアの機能をデータの流れに着目して洗い出し、段階的に詳細化しながら全体の機能構造を明確化する手法です。
これは、分割統治法(大きな問題を小さな問題に分割し、その分割された小さな問題を個別に解決する手法)を基本概念とした分析方法です。
構造化分析の代表的な技法は、1970 年代後半にデマルコ氏(Tom DeMarco)によって提案されたDFD、データディクショナリ、ミニ仕様書があります。
技法 | 説明 |
---|---|
データフロー図(DFD:Data Flow Diagram) | DFDとは、データの流れを表現した図です。 |
データディクショナリ(データ辞書:data dictionary) | データディクショナリとは、情報システムにおけるデータ項目の種類、名称、意味、所在、データ型などをまとめた辞書のことです。 この情報は、データの一貫性や整合性を保つこと、チーム間の共通認識を形成すること、コミュニケーションを円滑にすることに役立ちます |
ミニ仕様書(ミニスペック) |
ミニ仕様書とは、DFDの各プロセスについて詳細な仕様を記述した文書のことです。 各プロセスの実際の振る舞い、適用条件、出力結果などが具体的に明らかになります。 |
構造化設計(Structured Design)とは
構造化設計とは、大きな機能を細分化し、小さな機能の有機的な集合にする設計手法のことです。
この設計手法は1980年代から広く用いられるようになり、大規模化するシステム開発へ対応する常套手法となりました。
設計において、プログラム全体を複数の部品に分割する「モジュール分割」という概念が中心的な役割を果たします。
モジュール分割技法は、以下のものがあります。
技法 | 説明 |
---|---|
STS分割 |
プログラムを入力処理(源泉:source)、変換処理(変換: Transform)、出力処理(吸収:Sink)という3つのモジュール構造に分割する手法です。 データの流れが一直線の場合に適用することができます。 |
TR分割(トランザクション分割) |
プログラムの一連の処理(トランザクション)単位に分割する手法です。 データの流れが分岐する場合に適用することができます。 |
共通機能分割 |
プログラムの共通処理をモジュールとして切り出す手法です。 基本となる共通機能は単一機能のモジュールであり、それらが集まって大きなモジュールになるため「逆木構造」になります。 |
ジャクソン法 |
入力データと出力データの両方に対して、データ構造に着目して分割する手法です。 4種類の基本図式(基本、連接、選択、反復)を使ってプログラムを階層的に構造化していきます。 1975年にマイケル・ジャクソン(Michael A. Jackson)氏が考案・発表した手法です。 |
ワーニエ法 |
入力データを中心に構造化していく手法です。 データが「いつ、どこで、何回」使われるかを3種類の制御構造(順次、選択、繰返し)で表します。 1970年代にフランスの情報科学者ジャン・ドミニク・ワーニエ(Jean-Dominique Warnier)氏によって考案された手法です。 |
モジュール設計
モジュール強度
モジュール強度とは、モジュール内部の関連性の強さを示す尺度です。
モジュール内部の関連性が強いほど、モジュール強度が高く、モジュールの独立性は高くなり、良い設計であるといえます。
強度 | 種類 | 説明 |
---|---|---|
弱 | 暗号的強度 | 機能間の関連を考慮せずに、プログラムを単純に分割して、1つのモジュールにまとめる。 |
↑ | 論理的強度 | 論理的に関連する機能を1つのモジュールにまとめる。 |
時間的強度 | >ある時点で実行されるという観点で、関連する機能を1つのモジュールにまとめる。 | |
手順的強度 | 手順(必ず順番に実行される関係)で関連する機能を1つのモジュールにまとめる。 | |
連絡的強度 | 手順的強度があり、かつモジュール内の機能間でデータの受け渡しを行う関係でまとめる。 | |
↓ | 情報的強度 | 同一データ構造を使う機能をまとめたもので、機能ごとに入り口点と出口点をもつ。 |
強 | 機能的強度 | ひとつの機能からなるモジュールであり、命令はすべて1つの機能を実現するためにある。 |
モジュール結合度
モジュール結合度とは、モジュール間の関連性の強さを示す尺度です。
モジュール結合度が弱いほど、モジュールの独立性は高くなり、良い設計であるといえます。
結合度 | 種類 | 説明 |
---|---|---|
弱 | データ結合 | 処理に必要なデータのみを受け渡す。モジュール間での機能的な関係はない。 |
↑ | スタンプ結合 | データの構造体を受け渡す。呼ばれたモジュールは構造体の一部を使用する。 |
制御結合 | 機能コード(制御情報)を受け渡し、呼ばれたモジュールの実行を制御する。 | |
外部結合 | 複数のモジュールが外部宣言されたデータ(構造を持たない大域的データ)を共有して参照・更新する。 | |
↓ | 共通結合 | 複数のモジュールが共通領域のデータ構造(大域的データ)を共有して参照・更新する。 |
強 | 内容結合 | あるモジュールが他のモジュールを直接に参照・更新する。 |
モジュール領域の評価について
モジュール領域の評価とは、モジュール間で制御領域と影響領域を適切に配分することです。
制御領域とは、上位モジュールが下位モジュールの呼び出しを制御する範囲のことです。
影響領域とは、あるモジュールで設定した条件によって動作が変わるモジュールを含んだ領域のことです。