UMLベースのコード生成

既に知っているように 、Visual Studio 2010 Ultimateはリバースエンジニアリングに非常に便利な機能を提供します。 Visual Studioツールを使用すると、既存のコードに基づいてUMLモデルを構築し、すべてが実際にどのように機能するかを理解できますが、同時に図を手動で作成して最新の状態に保つために多大な努力をする必要はありません。



すべては問題ありませんが、このツールにはモデルをコードと同期する機能が完全に欠けています。 つまり、モデルを変更した後、手動でクラスを変更する必要があります。 多数の小さな変更の場合、それは非常に不便であることが判明し、このため、彼らはしばしば本格的なモデリングを拒否します。



マイクロソフトは最近、Microsoft Visual Studio 2010 Feature Pack 2というアドオンをリリースしました。このツールは、モデルの変更をコードで同期する絶好の機会を提供します。 これの使用方法について簡単に説明します。



たとえば、原始的なブログがあるとします。 サブジェクト領域は、著者と記事の2つのクラスで表されます。 ソリューションに新しいモデリングプロジェクトを追加します。 その中で、UMLクラス図を作成します。







リバースエンジニアリングを活用してください。 Architecture Explorerからダイアグラムにクラスをドラッグします。 この場合、エンティティはダイアグラム上に属性とともに表示されます。 エンティティ間で定期的に関係が形成されます(接続のタイプも定期的に正しく表示されます)が、その場合はまだ判別できません。







ご存じのとおり、UML 2.0標準では、ブール、整数、文字列、およびUnlimitedNaturalの4つの標準データ型が定義されています。 残りのタイプは、.NET名前空間内の場所に応じてパッケージに自動的に作成されます。



そのため、モデルを適切な状態に「修復」し、同時に少し拡張します。 これを行うには、ダイアグラムに新しいクラスを作成し、UMLモデルエクスプローラーの目的のパッケージにドラッグして、C#Classステレオタイプを選択します(Microsoftはコード生成に使用されるいくつかの.NET固有のステレオタイプを追加しました)。







このクラスは、ドメインアセンブリにはまだ存在しないことに注意してください。 そこに登録し、同時にすべての変更を適用するには、以下を実行する必要があります。



モデルエクスプローラーで、ドメインアセンブリを選択し、[プロパティ]に移動して、[テキストテンプレートバインド]の[...]ボタンをクリックします。 新しい要素を追加し、[プロジェクトパス]フィールドでコードの生成先となるプロジェクトの名前を指定し、[ターゲットディレクトリ]フィールドでプロジェクトに関連するフォルダー(ルートで生成)を指定し、テンプレートのアドレスを指定します。 デフォルトでは、「C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ Extensions \ Microsoft \ Visualization and Modeling Feature Pack \ 2.0 \ Templates \ Text」フォルダーにあります。 すべての機会に複数のテンプレートを設定できます。 この例では、ClassTemplate.t4を選択します。







その後、ダイアグラムの空き領域を右クリックして、「コードを生成」アイテムを選択します。







そして-出来上がり! 新しいクラスがアセンブリに追加され、すべての変更がモデルに従って適用されます。







ところで、ステレオタイプの助けを借りて、ほとんどすべてを示すことができます:メンバーの可視性、名前空間を生成するときに接続される属性など。



したがって、M $は、アーキテクトと開発者の作業を容易にする優れたツールを提供します。 残念ながら、この非常に必要なパッケージは、MSDNサブスクライバーのみが使用でき、何らかの理由で、すべての正当なユーザーによる使用を許可していません。 そして、これは30万ルーブルのオーダーのVS Ultimateのコストです。 近い将来、この状況が変わることを期待しましょう。




All Articles