コードの生成
モデルからコードを生成することで、チームはユーザーの要件の変更に迅速かつ確実に対応できます。チームで類似した一連の製品を開発する場合、またはよく使用されるパターンを利用する場合は、モデルからコードを生成する効果は特に大きくなります。
チームで、プログラム コード、スキーマ、ドキュメント、リソース、およびその他さまざまな種類の成果物を生成できます。チームは、UML (Unified Modeling Language) API を使用してモデルに問い合わせを行うテキスト テンプレートを記述できます。詳細については、「方法: UML モデルからファイルを生成する」を参照してください。
ほとんどの場合、モデルからそのすべてのコードを生成することはありません。部分クラスなどの手法を使用して、チームは、生成されたコードと手入力されたコードと区別できます。生成されたコードを編集しないでください。代わりに、モデルを更新してください。そうすることで、コードが更新されます。
コードの生成は、次のような状況で役立ちます。
製品ライン。Fabrikam, Inc. は、空港の手荷物取り扱いシステムの構築とインストールを手がけています。ほとんどのソフトウェアは、インストールにおいては非常に似かよっていますが、ソフトウェア構成は、設置されている手荷物取り扱い機器と、各部がベルト コンベアにどのように相互接続されているかによって異なります。契約の初めに、Fabrikam のチームは空港管理者と要件について話し合い、UML アクティビティ図を使用してコンベヤ ベルトの計画を立てます。このモデルを基に、チームが構成ファイル、プログラム コード、およびユーザー ガイドを生成します。最終的に、コードを手動で追加、微調整して作業を完了します。ジョブを経て実績を積みながら、生成された素材のスコープを拡張していきます。
パターン。Contoso, Ltd. の開発者は、Web サイトの構築を行うことがよくあります。開発者は、クラスとアソシエーションを使用して Web ページとナビゲーション リンクを表す UML クラス図を利用して、ナビゲーション スキームを設計します。Web サイトのコードの大部分を生成できます。それぞれの Web ページは、統一パターンに準拠したいくつかのクラスとリソース ファイルのエントリに対応しています。結果として、手入力されたコードよりも信頼性と柔軟性が高くなります。
スキーマ。Humongous Insurance は、世界中で数千ものシステムを運用しています。これらのシステムでは、異なるデータベース、言語、およびインターフェイスが使用されています。中央のアーキテクチャ チームが、業務概念とプロセスの内部モデルを公開します。図を利用することで、設計についての議論がしやすくなります。これらのモデルから、ローカル チームは、データベースと XML スキーマのパート、C# の宣言、およびその他の要素を生成できます。
カスタムのモデリング言語
前の例では、各社がそのモデルを非常に特化された用途で使用しています。アクティビティ図を使用して手荷物の追跡を表すことはできますが、正式な手荷物追跡用の表記法を使用するとより適切になります。Visual Studio は、次の手法をサポートします。
ステレオタイプを使用して UML 図をカスタマイズする。ステレオタイプを使用することで、さまざまな種類の要素を区別し (たとえば、乗客のチェックイン デスクと X 線検査所を区別する)、各要素で追加の属性値を記録できます。詳細については、「方法: プロファイルを定義して UML を拡張する」を参照してください。
独自のドメイン固有言語 (DSL: Domain-Specific Language) を設計する。ターゲット ドメインで大量の作業を行う場合は、そのような追加の労力によって、より具体的にニーズに適合させることができます。詳細については、「Visualization and Modeling SDK - ドメイン固有言語」を参照してください。
チームで、Visual Studio SDK を使用して、両方の種類のモデル用のメニュー コマンド、検証テスト、およびツールボックス項目を作成できます。また、図を統合し、それらをデータベースなどの外部リソースと組み合わせることができる Visual Studio 拡張機能を構築することもできます。