まえに、ブログで書いたように、UMLからのプログラムの自動生成を可能にし、誤解や過不足のないプログラムをつくるためには、
ユーザーにも分かり、
システムに落とせる(=プログラムに対応する)基本機能的な言葉で、
仕様を作成すること
であるとしました。
そして、「システムに落とせる(=プログラムに対応する)基本機能的な言葉」とは
・各種入出力言語
・基本的な処理(入出力の引数を作ったりする)
・エディッティング/フォーマッティング
・数字の表現
・日付、時間の表現
・文字列操作
・四則演算、計算
・分類(仕分け)
・ソート
・マージ
・チェッキング
・基本機能をまとめた、ライブラリ
であるということを、書きました。
ただし、仕様書から、そういうのを、落としてくるのには、動詞を使ってということになるけど、それってやばそうっていうことで、今回は、UMLのアクティビティ図(いや、ユースケース図でも同じ理屈だからいいんですけどね)から作ってみる方法を考えてみました(試案です)。
こんなかんじ

アクティビティ図じゃん!って思われると思います。
たしかにそうなのですが、色がついているところが違います。
この色は
赤色=この処理内容を定義した、下位の定義がない
黄色=この処理内容を定義した、下位の定義はあるが、作成中である
青色=この処理内容を定義した、下位の定義があり、その下位の定義はすべて青色である
無色=青色の条件を満たし、プロパティの入出力も、すべて定義されている
という意味をあらわしています。
つまり、作ったときは、横にある基本機能、各種入出力、あるいはライブラリ(各種ライブラリは、コンボボックスで、「基本」と書いてある横の▼をクリックして切り替えられる)から、とってこない場合は、赤色になります。(基本、あるいはライブラリからとってくると、青色になります)。
なので、赤から青にすべてなることを、まずは目指します(JUNITっぽいでしょ ^^)
そして、青だろうが、赤だろうが、アクティビティを作成するとすぐに、プロパティダイアログが開きます。そこには
処理:マージ
内容:
引数
:
:
のようなかんじで書いてあります。
内容のところを、たとえば、「注文検索し、資材量見積」のようにかきこむと、そのアクティビティのところに、そのように書き込まれます(処理でなく、内容が書き込まれる)。
処理は、基本またはライブラリから作った場合は、「マージ」のように書き込まれますが、そうでない場合は空欄です。ここを空欄のままにすると、赤のままですが、もし、「資材見積」のように、新しい処理をかくと、その処理名で、あたらしいアクティビティ図のシートができて、このアクティビティは、赤から黄色に変わります(空欄のままセーブすることもできます。そうすると図のように赤のままです)
もし、上記の例の場合、「資材見積」のアクティビティ図を記入し、そのアクティビティが、すべて白になれば、アクティビティは、黄色から青にかわります。
で、青に変わったら、今度はプロパティの引数を埋めていきます。入力の場合、どこの出力の値を使うのか、出力の場合、何が出力されるのかを書きます。そして、入力がすべて矛盾ない(どこかの出力あるいはシステムが存在する際に提供されているものになっている)場合は、無色になります(部分的に、青色のあるアクティビティから見て、入力に矛盾がなければ、その時点で、そのアクティビティは無色になります)。
手作業や他のシステムから来る場合、基本に、そういうのがはいってますので、それを使います。基本に入っているので、青になります。その後、入出力を定義すると無色になります。
この作業により、全部青色になる
=最終的には既存のライブラリ、各種入出力あるいは、基本でできている
ということになり、
プロパティの入出力があっている=入出力データがきまっている
ということになり、はじめの、
ユーザーにも分かり、
システムに落とせる(=プログラムに対応する)基本機能的な言葉で、
仕様を作成すること
という目標が達成できてます。
アクティビティがユースケースに代われば、ユースケース図でもおなじことができます。
で、肝心のプロパティダイアログの入出力の詳しい内容や、基本機能やライブラリをどのように定義し、ファイルにもっていて、青、黄色、赤をどのように判断しているか(これはディレクトリ構成によるのですが)については、別の機会に、つづきとして書きます。
なお、特許とするつもりはないので、これをみて、好きな人が作っていただいて、ウィリアムのいたずらとしてはかまわないのですが、みなさん、いろんな人がこのブログを見ているので、何人もの人たちが、これを作り始める危険??はあります。はい。
じゃ、ウィリアムのいたずらはつくらないのかというと。。。
その、ファイル構造とか、プロパティダイアログの説明を書いてから考えます。
