デザインのモデリング
大規模なプロジェクトでチームが他のチームと連携する場合、チームがコードを統合するときに発生する問題の解決には大きな負担が生じる可能性があります。チームでコーディングを開始する前に、モデルを使用して各コンポーネントのインターフェイスと、それらがどのように組み合わされるのかを理解することで、このような問題を回避できます。
アプリケーションのコンポーネント
コンポーネント図は、アプリケーションまたはコンポーネントが、互いに接続されたパートから構成されているようすを示します。各パートの型は、より小さいコンポーネントです。コンポーネントには、個々のオブジェクトから実質的なシステムまでの任意のものを指定できます。また、コンポーネント間のコネクタでは、メソッド呼び出し、イベント通知、Web サービス呼び出しなどを表すことができます。
コンポーネント上には、その提供インターフェイスと要求インターフェイスが示されます。提供インターフェイスは、他のコンポーネントが使用できるインターフェイスです。要求インターフェイスは、それに関してコンポーネントが他のコンポーネントに依存するインターフェイスです。
要求インターフェイスを使用して、そのコンポーネントを使用するコンポーネントと、そのコンポーネントが使用するコンポーネントの両方から分離可能なコンポーネントを表すことができます。この分離を明確に理解することは、要求インターフェイスに組み込むモック オブジェクトを使用して、チームがコンポーネントを独立してテストできるようになるために重要です。
要求インターフェイスを明示的に示すことは、多くの場合、より明確に分離された、より柔軟な設計につながります。コンポーネントは実装後であっても、容易に他のコンポーネントと再結合してシステムのバリアントを作成できるため、要件の変更に対応したアジリティ (敏捷性) を実現できます。
コンポーネントのモデルでは、各イテレーションで役立たないほど詳細な情報を示す必要はありません。詳細については、「UML コンポーネント図: ガイドライン」を参照してください。
パート間の相互作用
シーケンス図を使用すると、コンポーネントがどのように動作するかを説明するのに役立ちます。生存線を使用して各ポートまたはコンポーネントのパートを表します。図では、いつ、どのように親コンポーネントのポートの 1 つでメッセージが受信され、コネクタのパスに沿って内部パートが相互作用するかを示すことができます。
詳細については、「UML シーケンス図: ガイドライン」を参照してください。
コンポーネントのインターフェイス
クラス図を描画して、インターフェイスでコンポーネントが使用できる型を示します。
各インターフェイスから始めて、そのメソッドを示します。
次に、パラメーターの型とインターフェイスの戻り値を示します。プロパティを関連付けとして描画します。
インターフェイスが XML またはその他のデータ構造を送信する場合は、UML クラス図を使用して構造を描画すると有用な場合があります。
これらの図は、コンポーネントの動作を説明するうえで役立ちます。また、外部から参照可能な動作についての議論を内部実装から切り離すのにも役立ちます。
デザイン パターン
モデルは、繰り返し発生するパターンを説明する場合にも便利です。たとえば、オブザーバー パターンがさまざまなアプリケーションに適用可能であるように、多くのプロジェクトで、その特定の用途に役立つオブジェクトの構成が見つかります。クラス図とシーケンス図を使用して、相互作用するクラスを示すことができます。