Astah*で、上流から、下流まで、トレーサビリティをもって開発する方法(5)
http://blog.goo.ne.jp/xmldtp/e/b805f9f2daa234e99474b532ce819e1c
の続きです。
いま、クラス図はこんなかんじ
で、前回は、画面遷移を書きました。今回は、モデル部分を入れます。
■モデル作成手順
・まず、図にセッションを入れます。
・昨日決めた、画面遷移に基づいて、画面から、コントローラーを呼び出し、
コントローラーにきたら、画面の値を
セッションに入れるか
モデルに渡すか
考えます(両方の場合もあります)
そして、モデルを呼び出した場合、わたってきた値を、
画面にセットするか
セッションに入れるか
考えます。
これを、全画面遷移し終わるまで、繰り返します。
・その際、モデルを呼び出すには、基本的に
セッションに入っている値
呼び出したコントローラーに対応する画面
他モデルの値(ただし、その前に呼び出されていること)
のはずです。
また、画面にセットする値も
セッションに入っている値
呼び出したコントローラーに対応する画面
呼び出したモデルの値
のはずです。
・モデルが大きかったら、正規化します。
・Partsとして定義した、データの一部分は、モデル上にあるかないか、
確認します。多くの場合は、正規化した一部になっています
→モデル上になくても良い
■今回のケース
・セッションを作ります。
・画面に沿って、画面のデータを
セッションに入れるか、
モデルに入れるか、考えます。
問1画面の「次へ」で
アンケート回答管理コントローラーの「問1次へ」にはいります。
回答実行で登録したいので、
「問1画面」のデータ「問1」は、セッションに入れます。
同様に、
問2画面の「次へ」で問2をセッションに、
問3画面の「次へ」で問3をセッションに、
入れます。
問4・5画面の「回答実行」で
セッションに入っている「問1、問2、問3」と、
画面項目4、5を元に、アンケート回答データに「追加」します
・ここまでの操作で、図のようになります。
・集計画面に関しては、
「集計開始」で、アンケート回答データを「検索」して、結果を処理加工し、
それを「集計結果表示画面」に渡します。
「アンケート回答データ」に「検索」を追加しました。
・今回は、正規化しなくてもいいかな・・という感じなので、これでやめときます。
■アレンジ(テーラリング)
なお、今回は、正規化しない状態のモデル(Xと記す)と、
正規化したモデル(xと記す)を作成し、
モデルXから、xを呼び出すカタチにしていますが、
モデルXを消去し、コントローラーから、xを呼び出す形にしても、
もちろんいいです。
また、
モデルXと、コントローラーのメソッドを一致させたり、
モデルXと、コントローラーのクラスを一致させたり
するほうほうもあります。さまざまです。
好きにアレンジしていいと思います。
■注意点
例えば今回の場合、問1、問2、問3、問4・5と進む画面遷移を
中心に話していますが、問1、問4・5と進む遷移もあります。
このとき、問2、問3をどうするか?という問題があります。
もし、問2、問3をクリアし忘れると、前のデータが入ったまま
更新してしまったり、無設定のまま更新してしまったりします。
更新のメソッドを、問1、問2、問3、問4・5用と、問1、問4・5に
分けたり、問1をセッションにセットするときに、問2、3をクリアしたりと、
方法はいろいろあると思いますが、なんらかの対策を刷る必要はあります。
このように、複数の画面遷移をする場合、妥当な値がすべてセットされているか、
確認する必要があります。
これで、Astah*でのモデル化は終わりました。
あとは、実装に入っていきます。