概念: 設計のコードへのマッピング
トピック
設計では、あいまいなところがなく実装できるようにシステムを十分に定義する必要があります。構成要素は、プロジェクトによっても、会社によっても異なります。
設計は、実装担当者が確実に処理することができるくらいにだけ詳細化されたスケッチに類似している場合もあります (「スケッチとコード」のアプローチ)。仕様の水準は、実装担当者の専門知識、設計の複雑さ、設計が曲解される可能性などによって異なります。
設計が、自動的にコードに変換できるところまで詳細化される場合もあります。これは通常、言語か環境、またはその両方の特定の意味を表すために標準の UML の拡張を伴います。
設計が、以下のような階層的なものである場合もあります。
- システム全体の概要をスケッチする高レベル設計モデル
- システム内の主なサブシステムの必要なインターフェイスと振る舞いを正確に指定するサブシステム仕様モデル
- サブシステム内部に関する詳細設計モデル
開発個別定義書では、プロジェクトの特定のプロセスで設計モデルを実現する方法、モデルを他のモデルと実装に関連付ける方法 / 場合を定義する必要があります。詳細は プロジェクト固有ガイドラインに記述される必要があります。
以下の各セクションで、設計と実装を関連付けるためのさまざまなオプションについて説明し、これらのアプローチの利点と難点を明確にします。
1 つの一般的な設計方法は、設計をかなり抽象的なレベルで略述してから、直接コードに移行するというものです。その設計モデルの保守は手動です。
このアプローチでは、設計クラスを複数のコードレベル クラスの抽象化にします。各設計クラスを、その振る舞いを実行するために複数の「ヘルパ」クラスを使用することができる 1 つの「ヘッド クラス」にマップすることを推奨します。「ヘルパ」クラスを使用して複雑な属性を実装することも、操作の実装に必要なデータ構造を構築することもできます。設計では、「ヘルパ」クラスをモデリングせず、ヘッド クラスによって定義される主要な属性、関係、操作をモデリングするだけです。そのようなモデルの目的は、実装担当者が完成できる詳細を抽出することです。
このアプローチは、他の設計モデルの要素に適用するために拡張されます。コードレベルのインターフェイスなどよりも抽象的な設計インターフェイスを使用することができます。
ラウンドトリップ エンジニアリング環境では、設計モデルは、コードのビジュアル表現になる詳細のレベルに発展します。コードとそのビジュアル表現は同期されます (ツール サポートにより)。
ラウンドトリップ エンジニアリングのコンテキストで設計モデルを表現するための一部のオプションを以下に示します。
高レベル設計モデルと詳細設計モデル
このアプローチには、維持される 2 つのレベルの設計モデルがあります。それぞれの高レベル設計要素は、ラウンドトリップされたモデル内の 1 つ以上の詳細化された要素を抽象化したものです。たとえば、前で説明した「スケッチとコード」アプローチのように、設計クラスは 1 つの「ヘッド」クラスと複数の「ヘルパ」クラスにマップすることができます。高レベル設計モデルの要素からラウンドトリップ モデルの要素までの追跡可能性は、2 つのモデル間の一貫性を維持するのに役立つことができます。
これは重要性の低い詳細を抽出するのに役立つことができますが、この利点はモデル間の一貫性を維持するために必要な作業に対してバランスを取る必要があります。
単一の発展する設計モデル
このアプローチには、単一の設計モデルがあります。設計要素の初期のスケッチは、コードと同期することができるところまで発展します。ユース ケースの実現を説明するために使用されるもののようなダイアグラムは、最初はスケッチされた設計クラスを参照しますが、最終的には言語固有のクラスを参照します。以下のような、設計の高レベルの説明は必要に応じて保守されます。
- システムの論理構造のダイアグラム
- サブシステム / コンポーネントの仕様
- 設計パターン / 設計メカニズム
そのようなモデルは、実装との一貫性をより簡単に保守できます。
関連するアプローチは、クライアント実装がコンパイルできるところまで詳細に主なサブシステムの仕様に関して設計を定義することです。
この仕様モデルから切り離して、サブシステム実現の詳細な設計をモデリングし、保守することができます。
サブシステムの仕様と実現に関連するガイドラインと、それらをいつ使用すべきかについては「ガイドライン: 設計サブシステム」を参照してください。
|