シリーズ、 「UML等各種ダイアグラムのエラーチェック体系化」です。
前回開発における一貫性チェックをするには、
・あるダイアグラムを書く工程において、必要なデータがそれまでの工程でダイアグラム等で明記されているか
を調べるってことで、それをするには、
・すべてのダイアグラムをRDBに入れます。
・必要なデータがそろっているかSQLで検索をかけます。
っていう形で調べようという話を書きました。
今回はその、「すべてのダイアグラムをRDBに入れ」る方法です。
■すべてのダイアグラムをRDBに入れる方法概要
その方法は、こんなかんじ。
・すべてのダイアグラムの構成要素を
ノード
リレーション
属性値
にわけ、属性値の種別を属性とします。
・ノード、リレーションをある法則に従い、RDBのテーブルにいれます。
もうちょっと詳しく書きます。
■すべてのダイアグラムの構成要素をわける。
ダイアグラム中、単独で存在しても意味をなす、ダイアグラムの構成要素を「ノード」とします。
たとえば、
・DFDのプロセス
・ER図のエンティティ
・アクティビティ図のスイムレーン、アクティビティ
・ユースケース図のユースケースとアクター
・クラス図のクラス
:
などです。
一方、たとえば、ER図において、エンティティとエンティティの間に引かれる線(リレーション)は、エンティティ=ノードが存在しないと意味を成さないです(記述することが出来ないです)。
このように、2つ以上のノードとノードを結び付けているものを、リレーションと呼びます。
DFDのデータフローなども、そうです。
一方、流れ図における、注釈のような、あるノードに対して、説明するために、線を引っ張って書かれるものがあります。
これは、属性値です。
また、属性値は、ノードやリレーション上、あるいは、上や横などにかかれます。
全部属性値です。
だから、
・DFDのプロセス名(プロセスのところに書かれているもの)
・DFDのデータフローの上に書かれるデータについて
・アクティビティ図のアクティビティにかかれる言葉(アクティビティ名?)
・ユースケース図のユースケース名、アクター名
・クラス図のクラス名、属性名、メソッド名
ぜーんぶ、属性値です。
で、属性値は、意味があります。たとえば、DFDのプロセスに「受注」とかかれていれば、プロセス名、
クラス図で、
getGas();
setGas();
run();
などと書かれていれば、メソッド名など。。。
このような、属性値の意味を、属性とよびます。
上記(属性:)メソッド名のようにある属性がいくつかの属性値を持つこともあります。
ここまでをまとめると、こんなかんじ。
・ダイアグラムの構成要素において
単独で意味をなす存在=ノード
単独では意味はないが、2つ以上のノードを結びつける=リレーション
あるノード等に結びついている(説明など)=属性値→(性質、種別)属性
どこにも結びつかない、意味はない:飾り(保存しない)
※飾りは、位置関係などを示します(例:楽譜の5線)
■ノード、リレーションをある法則に従い、RDBのテーブルにいれます
原則
・ノードをテーブルとし、そのノードの属性がカラムになります。
・リレーションをテーブルとし、リレーションの属性がカラムになるほか、
リレーションに結びついている、2つのノードもカラムにします
→3つ以上結びついている場合、2つに分解します。
このほか、細則、例外があります。
ってなかんじで、RDBに入れていきます。
次回は、「すべてのダイアグラムの構成要素をわける」をもう少し細かく。