なぜか、シリーズ化してしまった、「画面定義をHTMLで行い、呼び出しをWebAPIでやる設計手順の試案」です。
やろうとしてるのは、
・HTMLで画面を作成し、
・AJAXでサーバ呼び出し、結果はXMLで受け取ったものを利用すると
・画面とサーバーが完全に分離する上に
画面から、逆にさかのぼって要求仕様にまでもっていける
→COBOLのシステムをWebに置き換えたいけど、ドキュメントもソースも無いときなんかに、利用できる
で、実際、画面から逆にさかのぼった手順をやろうとしています。
そして、前回までのストーリーは、こちら
●HTMLからサービスを抽出する (1)画面をHTMLで作成する(ここがスタート) (2)アクションなど、イベントを拾うところで、 onイベント=ファンクション として、とにかく、ファンクションをfunctionでつくってしまう (3)作った関数について サーバーアクセスするものは、関数の中に sv_access(呼び出し元、呼び出したいサーバーアプリ,"") みたいなかんじで、ダミー関数を書く (4)grepで、(3)のダミー関数(sv_access)を、一覧で取得 (5)検索した内容をファイルに保存し、Excelで読み込み、 WebAPIのサービス一覧を取得する (6)でてきた呼び出したいサーバーアプリ=サービスを、 1サービス1シートで、Excelシートにまとめる ●クライアント-サーバー分離 (7)クライアント側の画面と、サーバー側を完全に分離するためのダミーCGIを入れます。 ●第二正規形の手法を使って、ER図にもっていく (8)引数を入力データ項目、返り値を出力データ項目とし、 それらが、一時的なものか、永続的データかを決める。 (9)永続的データをエンティティと属性部分に切り分けます。 (10)エンティティごとに、属性を書き足していきます (11)一意にできるものがあったら、そいつを主キー、 なければ番号をつけて主キーにして (12)エンティティは完成 (13)この場合、繰り返しがあったら、別エンティティにして第一正規形 エンティティ内で、ある値がきまったら、必ず他の値も決まった値になる という第三正規形があったら、分けたかったら分ける。 (14)外部のエンティティの主キーを参照キーとして持てば、 他の値は持つ必要がなければいいやつは、参照キーだけをもちます。 (15)参照キーと主キーから関係は出ます。 カーディナリティは、主キーのほうが1、参照キーのほうは、0~N, エンティティは(12)で完成したので、 (16)ER図がかけます。 ●CRUD図を描いてER図とWebAPIの確認をします (17)CRUD図を描いて、検算する |
(前回18と書いたのは、17の間違いです)
今日は、その後の工程、DFDをだんだんさかのぼって行きます。
クラス図の場合も書いときます。
■一番最下位のDFDを書きます
一番最下位のDFDを書きます。これは、
1.画面を入力、あるいは出力とし、
2.呼び出した画面のアクションをプロセスとして、
3.そのプロセスでアクセスするDBなどの入出力を、プロセスの入出力として
(画面のほかに)追加します
こうすると、アクションをプロセスとして、それに入出力がついた、1プロセスのDFDができます。
■その上のDFD、さらにその上のDFD・・・・
最下位1つ上のDFDは、これは、画面構成が適切な場合なのですが、
同じ画面の中にあるアクション(たいてい、画面にはいくつかのボタンがついていて、それがアクションになっている)をまとめて、1つのプロセスとします。
そのプロセスの入出力は、中に入っているアクションのプロセスの入出力を、まとめたものになります。
さて、その画面のDFDをさらにまとめる。。。には、その画面を呼び出したメニューでまとめることになります。
メニューの内容(タイトルにたいてい書いてある)が、1プロセスになり、そのメニューで呼び出す画面をまとめることになります。
そのメニューのプロセスの入出力は、中に入っている画面のプロセスの入出力を、まとめたものになります。
メニューの上は、そのメニューを呼び出すメニューなんてやっていくと、一番トップがシステム全体になります。
■適切な画面分けになっていない場合
以上は適切な画面分けになっている場合ですが、そうでない場合、つまり画面を恣意的に分けてしまった場合は、運用手順ごと、あるいはER図の関係などからまとめて行きます。
■クラス図の場合
DFDでなく、クラス図を書く場合でも、今回の方法は一緒です。
今回の構図を図にすると
システム
|
メニュー
:
:
画 面
|
アクション
という構図になっていますが、クラスもこのような形で考え、
アクションをメソッドにして、
画面をクラスにして、
メニューをクラスを含むクラスにする。。。
という形もできるし
アクションをクラスにして(executeメソッドが実行)、
画面をアクションを含むクラスにして、
メニューをクラスを含むクラスにする。。。
という形もできるし。。。と、クラス図の場合は、いろんな形が書き得ます。
ということで、
(18)アクションを最下位プロセスとし、画面、メニューとさかのぼり
DFDないしクラス図を完成させます。
でした。次回のこのシリーズは、アクティビティ図などについてです。