ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

開発の初めから順番に書いていってみる その35:詳細設計(2)成果物

2007-04-24 18:30:31 | 開発ネタ

シリーズ「開発の初めから順番に書いていってみる」の続きです。

 設計手順には、要求分析、外部設計、内部詳細設計・プログラミング、単体テスト、結合テスト、総合テスト、運用テスト及び運用とあります。
 前回までで、要求分析と、外部設計がおわりました

 外部設計までは、
 ここ http://www.geocities.jp/xmldtp/index_kaihatsu.htm
 にまとめてあります。

 前回から、内部詳細設計で、前回は説明でした。今回は成果物です。





■詳細設計の成果物

 といいましても、詳細設計の場合、詳細設計書がある。。
 他には、コーディング規約とか、プログラムの命名規約も、成果物?といえば成果物??

 コードの定義なんかも、外部設計というより、ここっていうこともあるけど。。
 でも、基本的には、詳細設計書ですねえ。。




■詳細設計書と自動生成

 で、詳細設計書は自動生成されることがあります。
 1つは、プログラムから自動生成されるケース
 もうひとつは、外部設計書から、詳細設計、プログラムが自動生成されるケース。

 前者のほうは、手順が逆なので、ドキュメント生成のための手段というかんじ。。
 後者のほうも、ドキュメント生成のための手段ではあるけど、これは、手順的には合っていて、手順を自動化しているっていうかんじ。




■JavaDoc

 なお、最近の風潮として、詳細設計を詳しく書かず、JavaDocで済ませるっていうケースも多いですね。

 この場合、とりあえず、外側だけ作っておいて、JavaDocを生成し、関連する人たちに配って、後で中身を書くという話もある。。。




■コーディング規約とログ、assertなど。。

 一方、コーディング規約についてですけど、まあ、これは本来外部設計のフレームワークに関することなわけなんで、外部設計のドキュメントといえるかもしれません。
 すくなくとも、プログラムに入る前までには決まっていないといけませんが、そこに書かれる内容としては、

・命名規約(これは別にあるかも。。)
・コメントの書き方
・ログのとりかた
・デバッグ用になんかやるときの話(assert、コンパイルオプションなど)
・ロック・トランザクション処理の話
・コンパイル上で、なにかあれば。。
・バージョンの切り分けなどで、何かしていれば。。
・パターン上の注意点
・共通エラー/例外処理・メッセージ処理

などなどです。




■富士通の公開しているフレームワークでは。。

で、いつもどおり、富士通の公開しているフレームワーク
標準化規約
1.ComponentAA開発標準
http://segroup.fujitsu.com/sdas/technology/develop-guide/1-caa.html

で、詳細設計の成果物をみてみます。

PS工程というところがそれにあたります。
ここでは、

    PS01 Webハンドラロジック定義
    PS02 CBSハンドラロジック定義
    PS03 バッチロジック定義

 となっています。ロジック定義とは、一般の詳細設計の内容です。
 で、これは、利用するフレームワークというかパターンというかによって、詳細設計書をわけているので、3種類になっています。
 このように、フレームワークの違いや形式がちょっと違う部分があった場合は、書きやすいように詳細設計をかえるのが、やりやすいですし、自動生成をする場合でも、しやすいと思います。




■ということは、言語によって仕様書は変わるということ

ということは、言語によって仕様書は変わるってことです。
COBOLとJavaを一緒の仕様書では。。かきにくいですよお(^^)




といっても、詳細設計書の中身については、書いていませんね。
次回、これについて書きます。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

画面定義をHTMLで行い、呼び出しをWebAPIでやる設計手順の試案 その6 DFD

2007-04-24 13:41:33 | Weblog

なぜか、シリーズ化してしまった、「画面定義を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ないしクラス図を完成させます。

でした。次回のこのシリーズは、アクティビティ図などについてです。


 

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする