A collection of notes and resources
構造化設計における 変換分析(Transform Analysis) の手法。DFD(データフロー図)からモジュール構造図(SC: Structure Chart)を導出する際に使う分割技法。
システム全体のデータフローを Source → Transform → Sink の3つに分類することで、主モジュールとその配下のモジュール群を体系的に導出できる。
| 区分 | 別名 | 役割 | 典型的な処理例 |
|---|---|---|---|
| Source(ソース) | 入力系 | 物理的入力 → 論理的入力への変換 | ファイル読み込み、センサー入力、入力バリデーション、文字コード変換 |
| Transform(トランスフォーム) | 中心変換 | システムの本質的なビジネスロジック | 計算、判定、データ加工 |
| Sink(シンク) | 出力系 | 論理的出力 → 物理的出力への変換 | フォーマット変換、画面表示、ファイル書き込み、印刷 |
ポイント: Transformはデータが最も抽象化(物理的な入出力形式から切り離された状態)されている部分。
物理的入力 ──[Source]──▶ 論理的入力 ──[Transform]──▶ 論理的出力 ──[Sink]──▶ 物理的出力
←── ここまでSourceとみなせる ──→
←── ここからSinkとみなせる ──→
↑
この部分がTransform
┌──────────────────┐
│ Main Control │
└────────┬─────────┘
┌─────────────────┼──────────────────┐
▼ ▼ ▼
┌────────────────┐ ┌──────────────┐ ┌────────────────┐
│ Source Module │ │ Transform │ │ Sink Module │
│ (Get Data) │ │ Module │ │ (Put Result) │
└────────┬───────┘ └──────┬───────┘ └───────┬────────┘
┌───┴───┐ │ ┌───┴───┐
▼ ▼ ▼ ▼ ▼
Read Validate Process Format Output
システムアーキテクト試験では 2つの分析手法の使い分け がよく問われる。
| 変換分析(STS分割) | トランザクション分析 | |
|---|---|---|
| 適用場面 | 1本のデータが線形に変換されるフロー | 入力種別によって処理が分岐するフロー |
| DFDの形状 | 入力 → 処理 → 出力の一直線 | 1つの入力が複数のトランザクションタイプに分岐 |
| モジュール構造 | STS 3系統に分割 | トランザクションセンターと各トランザクション処理に分割 |
| 典型例 | バッチ処理、データ変換システム | ATM(振込・引出・照会など)、メニュー選択システム |
実際のシステムは混在することが多い。
STS分割後のモジュールを評価する際の観点。
| レベル | 種類 | 説明 |
|---|---|---|
| 低(良) | データ結合 | 引数でスカラー値のみ受け渡し |
| ↑ | スタンプ結合 | 引数でデータ構造を受け渡し |
| ↑ | 制御結合 | フラグや制御コードを渡して相手の動作を制御 |
| ↑ | 外部結合 | 外部宣言された変数を共有 |
| ↑ | 共通結合 | グローバル変数を共有 |
| 高(悪) | 内容結合 | 別モジュールの内部を直接参照・変更 |
| レベル | 種類 | 説明 |
|---|---|---|
| 高(良) | 機能的凝集 | 単一の明確な機能のみ |
| ↑ | 情報的凝集 | 同一データ構造に関する複数機能 |
| ↑ | 連絡的凝集 | 同じデータを順序付きで処理 |
| ↑ | 手順的凝集 | 順序があるが同一データでない |
| ↑ | 時間的凝集 | 同時期に実行されるが無関係な処理 |
| ↑ | 論理的凝集 | 論理的に似ているだけで無関係 |
| 低(悪) | 暗合的凝集 | 全く無関係な処理の寄せ集め |
STS分割を論述で使う場面: