#navi(Kusu)

*概論 [#sce2a636]
**スコープ [#g2c5e88e]
新業務分析が完了しているところから開始し、~
外部設計、内部設計までが対象スコープです。
**概念の理解 [#l607480d]
***バウンダリの一つのイベントから呼び出すコントロールは一つだけ [#ebdc6992]
バウンダリで発生するイベント(画面表示時、ボタンクリック等)から~
呼び出されるコントロールは一つだけです。~
もっと実装寄りにすると、~
StrutsのActionクラスのメソッドから呼び出されるコントロールは一つ~
のように読み替えることが出来ます。~
***コントロールはステートレス [#v5d923f1]
コントロールには状態を持ちません。~
コントロールが状態を持たないので、~
コントロールを構成するユーザ機能も状態を持ちません。~
バウンダリに一時的なセッションの状態を持ち、~
エンティティ(リソース)に永続的な状態を持つだけです。
***コントロールからコントロールは呼び出さない [#pc477cdd]
コントロールから別のコントロールを呼び出してはいけません。~
コントロールが汎用的な名前であったとしても、コントロールは汎用的ではありません。~
そのコントロールは、同じ名前の汎用的なユーザ機能を呼び出しているだけで、~
バウンダリ依存なものであることに変わりありません。~
***例外はRuntimeException系で [#m7252c6f]
まずインターフェイスありきのため、宣言的例外は基本的に使えません。~
また使う必要もありません。~
但し、どのような例外が発生するか位は、実装クラスのJavadocに書いておきましょう。~
例外のcatchは業務ロジックで行い、ログ出力やロールバックすることになります。~
大抵はそのまま投げて、バウンダリに伝播させ、画面上のエラーメッセージに変換したりします。~
***ユーザ機能からのインターフェイスの抽出 [#a55e4d15]
ユーザ機能はその内容から自動的にインターフェイスに分類できます。~
まず、その種類を考えます。~
-コントロールである:業務ロジックになります。
-コントロールではない
--エンティティに関連する:DAOになります。
--エンティティに関連しない:補助ロジックになります。

次に個別のインターフェイスの識別として、~
-業務ロジックの場合、バウンダリ毎に纏める。~
-補助ロジックは、目的語で纏める。~
-DAOは、エンティティで纏める。~

ということになります。~
ここまでルール化されているので、~
ユーザ機能抽出と同時にインターフェイスの抽出が出来るようになります。~
***クラス図なんて要らない [#q9faaf43]
くーすにクラス図は要りません。~
クラス図は、クラス間の静的構造の情報を記述するものですが、~
少なくとも、業務ロジック、補助ロジックについては、~
シーケンス図で表す以上の静的構造は存在しません。~
あるとすれば、~
-バウンダリ層の作り(くーすのスコープ外)
-エンティティやDTOのデータ構造

ぐらいです。~
これらについては、必要であれば作って下さい。~
**プロセスフロー [#ta6663ef]
[[プロセスフロー:http://seasar.satin.jp/wiki/index.php?plugin=attach&pcmd=open&file=%A5%D7%A5%ED%A5%BB%A5%B9%A5%D5%A5%ED%A1%BC.jpg&refer=Kusu]]を参照して下さい。~
新業務フローを入力として、
-ロバストネス分析
-UIモック生成

を平行して実施。~
ロバストネス図が出来たら
-UI設計
-ユーザ機能分析
-ER分析

を平行して実施します。~
これだけです。~
後は、これらの成果物を使って実装・テストを行うだけです。
**成果物 [#d46ae55c]
***新業務フロー(外部仕様) [#xb624716]
これは、くーすの成果物ではなく、要求する入力になります。~
バウンダリのフローとして記述されます。~
[[業務フロー:http://seasar.satin.jp/wiki/index.php?plugin=attach&pcmd=open&file=%B6%C8%CC%B3%A5%D5%A5%ED%A1%BC.jpg&refer=Kusu]]を参照して下さい。
***UIモック(外部仕様) [#i0bb9de4]
UIのモックです。~
HTMLなり、VBなり、作るシステムによって変わってきます。
***ロバストネス図(外部仕様) [#h8ae4500]
-インターフェイスとなるバウンダリ
-バウンダリが呼び出すコントロール
-コントロールが関連するエンティティ

を纏めた図です。~
[[ロバストネス図:http://seasar.satin.jp/wiki/index.php?plugin=attach&pcmd=open&file=%A5%ED%A5%D0%A5%B9%A5%C8%A5%CD%A5%B9%BF%DE.jpg&refer=Kusu]]を参照して下さい。
***UI仕様書(外部仕様) [#y9a70ebb]
UIの実装に必要な情報を纏めたものです。~
[[UI仕様書(xls):http://seasar.satin.jp/wiki/index.php?plugin=attach&pcmd=open&file=UI%BB%C5%CD%CD%BD%F1.xls&refer=Kusu]]を参照して下さい。
***エンティティ仕様書(外部仕様) [#q588a3e5]
エンティティの仕様書です。~
オブジェクトとしての性質に加えて、テーブルの物理設計についての情報も含めます。~
[[エンティティ仕様書(xls):http://seasar.satin.jp/wiki/index.php?plugin=attach&pcmd=open&file=%A5%A8%A5%F3%A5%C6%A5%A3%A5%C6%A5%A3%BB%C5%CD%CD%BD%F1.xls&refer=Kusu]]を参照して下さい。
***シナリオシーケンス(内部仕様) [#p7485e1c]
UMLのシーケンス図で表したホワイトボックスシナリオです。~
シナリオ毎に作られます。~
[[シナリオシーケンス_ログイン:http://seasar.satin.jp/wiki/index.php?plugin=attach&pcmd=open&file=%A5%B7%A5%CA%A5%EA%A5%AA%A5%B7%A1%BC%A5%B1%A5%F3%A5%B9_%A5%ED%A5%B0%A5%A4%A5%F3.jpg&refer=Kusu]]~
[[シナリオシーケンス_コメント一覧表示:http://seasar.satin.jp/wiki/index.php?plugin=attach&pcmd=open&file=%A5%B7%A5%CA%A5%EA%A5%AA%A5%B7%A1%BC%A5%B1%A5%F3%A5%B9_%A5%B3%A5%E1%A5%F3%A5%C8%B0%EC%CD%F7%C9%BD%BC%A8.jpg&refer=Kusu]]~
[[シナリオシーケンス_コメントを登録する:http://seasar.satin.jp/wiki/index.php?plugin=attach&pcmd=open&file=%A5%B7%A5%CA%A5%EA%A5%AA%A5%B7%A1%BC%A5%B1%A5%F3%A5%B9_%A5%B3%A5%E1%A5%F3%A5%C8%A4%F2%C5%D0%CF%BF%A4%B9%A4%EB.jpg&refer=Kusu]]~
を参照して下さい。
***コンポーネント仕様書(内部仕様) [#fa0e94cb]
インターフェイスの仕様書です。~
メソッド毎に事前条件、事後条件を記述します。
実装クラスについての仕様書は作りません。~
実装クラスの仕様書が必要だと感じた場合は、~
シナリオシーケンスで抽出されていないユーザ機能があるかもしれません。~
[[コンポーネント仕様書(xls):http://seasar.satin.jp/wiki/index.php?plugin=attach&pcmd=open&file=%A5%B3%A5%F3%A5%DD%A1%BC%A5%CD%A5%F3%A5%C8%BB%C5%CD%CD%BD%F1.xls&refer=Kusu]]を参照して下さい。
**成果物のレビュー [#u875cfb2]
-新業務フローの顧客レビュー
-ロバストネス分析前のUIモック(ラフ版)の顧客レビュー
-ロバストネス分析後のロバストネス図の顧客レビュー
-外部設計完了後の顧客レビュー

は、やった方が良いです。~
他にも、内部設計完了後の顧客レビューをやることもあるかもしれません。~
もちろん、それぞれ内部レビューはやっておくべきです。

#navi(Kusu)



トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS