#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)