ガイドライン: UML での Web アプリケーションの構築
トピック
次の書籍と文書をこれらのガイドラインから参照します。
「作業: ユース ケース分析」と比べて異なる点は、バウンダリ クラスの目的が焦点を絞ったものであリ、独自性が高い点です。これらのクラスのオブジェクトは短命で、(Web ページ内の) クライアント状態は特定のメカニズムで明示的に管理する必要があります。たとえば、Microsoft 社の Active Server Pages では、現在アクティブな全クライアントの状態マップの索引として「クッキー」を使っています。
また、ユース ケースの仕様を読む際には次のものが適用されます。
- Web ページへ言及している際にはバウンダリ クラスへ変換します。
- ハイパーリンクへの言及は、バウンダリ クラスから別のバウンダリ クラスあるいはコントローラ クラスへの関連に変換します。
- 動詞あるいはプロセス記述は、コントローラ クラスへマッピングします。
- 名詞はエンティティ クラスへマッピングします。
バウンダリ クラスを介して通信を開始した場合、バウンダリ クラスはコントローラ クラスと通信を行います。コントローラ クラスは通常、このバウンダリ クラスの同じインスタンスを通じて応答を返しません。
ユース ケースの分析が進んでくると、シナリオはシーケンス図で表現できるようになります。これはユース ケースのシナリオに対して分析オブジェクトの存在を検証するのに役立ちます。分析オブジェクトが自分の思い描いているシナリオに当てはまらない場合には、疑いを持ち、再評価することが必要になります。ここでのリスクは、あまりにも詳細に入り込んでしまうと、ダイアグラムが大きくなり管理できなくなることです。これを避けるには、短くて分離したシナリオに力を入れて、境界にかかるコントローラと主要なエンティティ オブジェクトだけを含むようにします。
Web アプリケーションでは、バウンダリ オブジェクトが短命であることを思い出してください。ただし、バウンダリ クラスはシナリオの実行中に何回かインスタンス化が可能です。これは、ダイアグラムの中に同一クラスからのバウンダリ オブジェクトがいくつかあることを示しています。
分析レベルのシーケンス図のアクターはバウンダリ オブジェクトと相互作用します。ナビゲーション メッセージがアクターからバウンダリ オブジェクトに送られます。
初期のバウンダリ クラス設計
バウンダリ クラスはクライアントのページ クラスにマッピング可能です。
バウンダリ クラスが情報の入力を伴うのであれば、集約を使ってフォーム (あるいは Web フォーム) と関連付けるのが一般的です。フォームはそのライフサイクル全体がクライアント ページの制御下に置かれるため、クライアント ページの入れ子クラスとしてモデル化できます。フォームは、常にサーバー ページへの送信関係にあります。サーバー ページは最後には、新しく返されたクライアント ページに至り、フォームの値を処理します。
ユーザー インターフェイスとしてクライアント側の動的な振る舞いが必要な場合には、クライアント側でダイナミック HTML を使うと目的を達成できます。これは設計モデルにおいてクライアント ページの操作として見えるのが普通です。クライアント ページ上の操作は Java のスクリプト機能に直接マッピングします。Java ページ マップの属性はそのページのページ範囲変数に直接マッピングします。ダイナミック HTML のイベント ハンドラはタグ付きの値として取り込みます。
ユーザー インターフェイスが非常に洗練された動きをする場合、集約を使ってアプレットとバウンダリ クラスとを関連させることを考えた方がよいでしょう。
アーキテクチャが (RMI、IIOP、あるいは DCOM のような) 分散オブジェクト シス テムに基づいている場合、クライアント ページは HTTP を取り巻く RMI、IIOP、あるいは DCOM を使うサーバーと直接通信するコンポーネントの参照インターフェイスを持っている可能性があります。このようなタイプの関係を定型的に 《rmi》 と表現しておきます。《iop》 あるいは 《dcom》 はネットワーク トラフィックが発生する場所を設計者に示すためのもので、ボトルネックの候補となります。
初期のエンティティ クラス設計
Web アプリケーションの設計時に、エンティティ クラスが異なる点は、そのオブジェクトがクライアント ページの範囲内に存在する場合は、エンティティ オブジェクトは Java スクリプト オブジェクトにマッピングされるという点のみです。
初期のコントローラ クラス設計
コントロール クラスはサーバー ページにマッピングします。コントローラは、ビジネス ロジックとその他のロジックを調整するものを表現します。コントロール クラスは通常、サーバー上にあります。コントローラ オブジェクトはクライアント ページを構築する責任があります (本質的には、主要な出力は HTML のストリーム)。コントローラ オブジェクトはデータベース、中間層コンポーネント、トランザクション モニタなどのサーバー側の資源と相互作用を行います。
コントローラ クラスはサーバー側のスクリプト構成の Web ページ (アクティブ サーバー ページ、Java サーバー ページ) にマッピングするのが一般的です。
|