Leendert Versluijs, Software Engineer
Jeroen Huitink, Infrastructure Engineer
Sander Duivestein, Public Relations
Cap Gemini Ernst & Young
March 19, 2002
日本語版最終更新日 2003 年 6 月 6 日
要約 : Questionnaire Web サービスの機能とデザインについて説明します。Questionnaire Web サービスは、不動産 Web アプリケーション Jaggle のコンポーネントの 1 つであり、ユーザーの製品抽出条件を定義するための反復的な質問セットを、Web サイトのインターフェイスを通じたユーザーとのやり取りによって生成するための汎用的なメカニズムを提供します。
概要説明
必要条件
分析とデザイン
Questionnaire のクラス
設計方針
適用されているデザイン パターン
便利な機能
概要説明
Questionnaire Web サービスは、関連する質問のセットを生成するための汎用的なメカニズムを提供することを目的としています。 次の図は、不動産アプリケーション Jaggle の全体的なアーキテクチャにおける Questionnaire Web サービスの位置付けを表しています。
図 1. 不動産アプリケーション Jaggle の中の Questionnaire Web サービス
ユーザーのニーズに合った不動産の検索を開始するために、まず Web サイトが、一連の質問を含むフォームをユーザーに提示します。 この質問に対するユーザーの回答に基づいて、Questionnaire Web サービスは、ユーザーの抽出条件をさらに絞り込むための新しい質問セットを生成します。 Web サイトと Web サービスとの間で、アンケート プロセスと呼ばれるこの質問と回答のサイクルが繰り返され、最終的には明確に定義された回答のセットが導き出されて Web サイトに送られます。 Web サイトは、その回答を使って抽出条件を生成し、それに基づいて Matching Web サービスが製品を検索します。
必要条件
Questionnaire Web サービスの必要条件は、ビジネス文書から引き出されます。 Questionnaire Web サービスには、以下の機能が要求されます。
- 質問の要求を受け付ける。
- 質問のグループを検索する。
- 質問のグループを通して見る。
- 通して見て、その終了を判断する。
- 質問と回答を保持する。
- 回答を格納する。
- 回答を取得する。
分析とデザイン
ユース ケース
Questionnaire Web サービスの中心的なアクタは、Web サイトのソフトウェア部分です。 次の図は、Web サイト アクタと Questionnaire Web サービスとのやり取りのユース ケースの概要です。
図 2. Web サイト アクタと Questionnaire Web サービスとのやり取りのユース ケース
アクティビティ図
次のアクティビティ図は、アンケート プロセスの概要を示しています。この図は、ユース ケース内のアクティビティの詳細をカバーしています。 Web サイト アクタがアンケート プロセスをトリガし、プロセスのワークフローを促進します。
図 3. アンケート プロセスのアクティビティ
クラス図
次の UML (Unified Modeling Language) クラス図は、Questionnaire Web サービスのクラスおよびクラス間の関係の概要を示すオブジェクト モデルを表しています。 オブジェクトは、Facade クラス、ビジネス ルール クラス (GroupCursor、Group、Question、および Answer の各オブジェクト) 、およびデータ アクセス クラス (StoreData、RetrieveData、および DBConnection) に分類できます。 このモデル内のオブジェクトについては、この後の「Questionnaire のクラス」で詳しく説明します。
図 4. Questionnaire Web サービスのクラスとその関係 (拡大するには画像をクリックしてください)
シーケンス図
次の図は、Questionnaire のクラスの主要なシーケンスを表しています。 Questionnaire のクラスのやり取りはこれ以外にも考えられますが、グループ内の質問と回答の要求および格納のために Web サイトによって開始される主要なシーケンスはこの図のとおりです。
図 5. Questionnaire のクラスの主要なシーケンス (拡大するには画像をクリックしてください)
データ モデル
Questionnaire Web サービスに関連付けられているデータベースは、次の図に示すデータ モデルに基づいています。 この論理データ スキーマは正規化されています。 Groups、Question、Answer、および UserAnswer の各テーブルは、オブジェクト モデルから抽出できます。
図 6. Questionnaire Web サービスのデータ モデル (拡大するには画像をクリックしてください)
各テーブルの詳細については、次の表を参照してください。
表 1. データ モデルの説明
テーブル | 説明 |
---|
Groups | Questionnaire Web サービスの質問と回答は、Groups テーブルにグループ化されています。 グループの中に別のグループを含めたり (Id/ParentId の構造) 、異なる質問セットに複数のルート グループを指定したりできます。 グループは質問と回答のセットであり、グループのセットは、特定のアンケート プロセスの質問と回答の包括的なセットです。 グループのセットは、Questionnaire の質問の流れを表します。この質問の流れは、アクティビティ図のループに相当します。 |
Question | 質問が開いた質問タイプの場合は、あらかじめ定義された回答を 1 つ以上持つことができます。これに対して、閉じた質問タイプの回答は 1 つだけです。 |
QuestionType | 質問にはさまざまなタイプがあります。 開いた質問タイプ には以下のものがあります。 Character = 回答がテキストになる質問タイプ Numeric = 回答が数値になる質問タイプ Bigger = "より大きい" という質問 Between = 回答が 2 つの値の間になる質問 Smaller = "より小さい" という質問 DateType = 回答が日付形式になる質問タイプ BiggerDate = "何日より後" という質問 BetweenDate = "何日から何日まで" という質問 SmallDate = "何日より前" という質問 閉じた質問タイプ には以下のものがあります。 Multiple = 多項選択式で単一選択の質問 (ドロップダウン リストまたはオプション ボタン) MultipleBetween = 多項選択式で範囲選択の質問 MultipleSelect = 多項選択式で複数選択の質問 (チェック ボックス) |
Answer | 多項選択式の閉じた質問に対する回答です。 |
UserAnswer | グループに対する特定のユーザーの回答です。 |
Questionnaire のクラス
Questionnaire のすべてのクラスは、Jaggle.Questionnaire 名前空間に含まれています。 Questionnaire のクラスは 3 つのグループに分けることができます。 インターフェイス クラス、ビジネス ルール クラス、およびデータ アクセス クラス の 3 つです。 次の図は、これらクラスの実装を担う層とコンポーネントの対応を表しています。
図 7. クラスの実装を担う層とコンポーネントの対応
!doctype>