KAOS (67) 図式を使用する: DFD (4.3.4)

今回は,データフロー図である.

データフロー図では,入力データと出力データおよびその変換器ノードによって,全体を表現する.シンプルなモデルで,構造化分析が話題になっていた頃は,よく書かれていた.

シンプルさは,逆にいえば,難しさも伴う場合がある.どのような風にも自由に書けてしまう.一番の間違いは,変換器ノードを機能表現と見なしてしまうことによって生じる.変換器(手法によっては,プロセス)は,データの変換器である.データの変換は,もちろんなんらかの機能には違いない.ただし,あくまで,データとその変換に注目したときに,分かりやすい図とすることが重要である.

機能視点で分割してしまうと,データがあちこち分散する可能性があり,折角のデータ中心の整理が,出来なくなってしまう.

リアルタイム処理用には,Hatley方式とWard方式の2つの記述法が,その後生まれた.こちらは,制御およびその流れを記載するため,機能的視点でも問題はない.

Ward法教科書表紙

Ward法教科書表紙

上記は,手持ちのWard法の教科書 1の第一巻である(全3巻).表紙は時代を感じる.しかし,内容は,今でも通用する.進歩しているようでしていないことに,気づく.

(nil)

Notes:

  1. Ward, Paul T. Structured Development for Real-Time Systems: Vol. I: Introduction and Tools. Pearson Education, 1986. ちなみに,Ward氏も共著のMellor氏も,その後別々にオブジェクト指向分析法を提唱している.

KAOS (66) 図式を使用する: SADT (4.3.3)

SADT(Structured Analysis and Design Techinique)は,企業色があったせいか,日本では余り用いられなかった(もっとも,構造化分析・設計が騒がれたときも,実際に使っている人たちは少なかった).

機械系の人には懐かしい図面風の図を作る.基本的な要素を,以下の図に示す.

SADT基本ノード

SADT基本ノード

入力と出力は,ごく一般的な書き方である.「ラベル」は,ノードの識別子となる.後述するアクティグラムとデータグラムは同じ書き方をするために,ラベルで区別する.例えば,アクティビティを表現するのであれば,Aから始まる識別子をつけ,データであれば,Dから始まる識別子をつける.レベルとあるのは,各ダイヤグラムの階層上のレベルである.構造化分析・設計と同様に,詳細化に従い,複数のダイヤグラムを記述する.そのレベルである.

さて,制御とメカニズムは何か?

SADTでは,2つの図を用いる.アクティグラム(Actigram)とデータグラム(Datagram)である.前者はアクティビティの説明用で,後者は,アクティグラムにでてくる入出力データの説明用である.

2種類の図と制御・メカニズムの関係
制御 メカニズム
アクティグラム ふるまいを変える アクティビティの実行者(人・コンピュータ)
データグラム データの内部状態を変える データを保持する機構

アクティビティとデータの関係を同じ構造で記載することができる.

90年代にソフトウェア開発プロセスのモデル化がなされたときに,SADTを使って記述したことがある.プロセスはアクティビティの集合であり,記述が容易であった記憶がある.もちろん,プロセスのモデル化は,例外の多さに難しさがあり,図が書きやすいからといって解決はしないのが残念である.

(nil)

KAOS (65) 図式を使用する: 実体−関連図 (4.3.2)

実体関連モデルと呼ぶデータモデルを提案する.実世界における重要な意味情報を組み込んでいる. 1

今回は,実体−関連(ER)図の説明である.いまでもビジネス系(特にデータベース設計)では良く用いられる.

その名の通り,実体とその関係が中心に記述する.実体は属性を持つことが出来る.単純には,実体はデータベース設計におけるテーブルに相当する.属性はカラムに対応する.

以下で,原書にある会議スケジュール管理システムの例を示す.この例では,ほとんどクラス図と同等の記載方法になっている(一部,表現を変更した).

会議スケジュール管理システムの実体関連図

会議スケジュール管理システムの実体関連図

継承(サブクラスと書きたいが,対象は実体であり,サブ実体という用語はないので継承としておく)により,重要な参加者と一般の参加者を区別している(重要な参加者は,全員のスケジュールが合わないときに優先される).2つの三項関係があり,関連クラスによって示される.

実体関連図は,実体とそれを繋ぐ関連図というよりは,関連とその両端にある実体の図といった方が正しい.上記の右側にある三項関係を,実体関連図の伝統的な記法で書くと下記のようになる(伝統的と云うのは,冒頭の文を含む論文は,今から40年ほど前に発表されているからである).

伝統的な実体ー関連図の記法

伝統的な実体ー関連図の記法

関連は,なんらかの働きを行う.実体は,その働きに対してなんらかの役割を果たす.当初のChen氏の論文では,そう考えることで現実世界を理解することができる,としていた.
もう一つのポイントは,矩形や菱形は,それぞれ集合となっている点である.クラス図に慣れてしまうと,クラス基準で考えたくなるが,あくまで,インスタンスで考える.クラスに相当するものは集合として捉える.
クラスで考えることと,インスタンスで考えることは,最終的には同じように思うが,できあがったモデルに違いが現れる場合が多い.全体は,クラスで考える方が考えやすいが,細部では,インスタンスで考える方が考えやすく,思い込みによる間違いを減らすことができる.
実体ー関連図は,継承を取り込むことで,以前は,拡張実体ー関連図(EER)と呼ばれた.それは,図式としては現在のクラス図に近い.しかし,クラス図となると,当初のの実体ー関連図で,考えられていたこととは違った考え方で用いられる場合も多い.
もちろん,結局のところ,「図に,良し悪しはない.役立つか立たないかだけだ」 2
(nil)

Notes:

  1. Chen, P., The Entity – Relationship Model: Towards a Unified View of Data, ACM TODS, Vol. 1, No. 1, 1976. (実体−関連モデル:データの統合的な見方に向かって)
  2. 誰かの本で読んだのだが,どの本かが思い出せない.