Генерация Кода На Основе Uml-Моделей

Как мы уже известен , Visual Studio 2010 Ultimate предоставляет довольно удобные возможности для реверс-инжиниринга.

Используя инструменты Visual Studio, мы можем построить модель UML на основе существующего кода и понять, как все на самом деле работает, не прилагая при этом огромных усилий по созданию диаграмм вручную и поддержанию их в актуальном состоянии.

Все бы ничего, но в этом инструменте напрочь отсутствует возможность синхронизации модели с кодом.

То есть после изменения модели нам приходится менять классы вручную.

В случае большого количества мелких изменений это оказывается весьма неудобно и по этой причине от полноценного моделирования часто отказываются.

Недавно Microsoft выпустила надстройку под названием Microsoft Visual Studio 2010 Feature Pack 2. Этот инструмент дает нам прекрасную возможность синхронизировать изменения модели с кодом.

Коротко расскажу, как это можно использовать.

Например, предположим, что у нас есть примитивный блог.

Предметная область представлена двумя классами: Автор и Статья.

Мы добавляем в решение новый проект моделирования.

В нем мы создаем диаграмму классов UML.

Генерация кода на основе UML-моделей

Давайте воспользуемся возможностями обратного инжиниринга.

Перетащите классы из Обозревателя архитектуры на диаграмму.

В этом случае сущность появляется на диаграмме вместе со своими атрибутами.

Периодически между сущностями, которые должны существовать, образуются связи (причём тип связи даже периодически показывается правильно), но в каких случаях пока определить не удалось.



Генерация кода на основе UML-моделей

Как мы все знаем, стандарт UML 2.0 определяет четыре стандартных типа данных: Boolean, Integer, String и UnlimitedNatural. Остальные типы автоматически создаются в пакетах в соответствии с их расположением в пространствах имен .

NET. Итак, попробуем «отремонтировать» модель до адекватного состояния, и в то же время немного расширить ее.

Для этого создайте новый класс на диаграмме, перетащите его в нужный пакет в обозревателе моделей UML и выберите стереотип класса C# (Microsoft добавила несколько стереотипов, специфичных для .

NET, которые используются при генерации кода).



Генерация кода на основе UML-моделей

Обратите внимание, что этот класс еще не присутствует в сборке домена.

Для того, чтобы прописать его там, и при этом применить все наши изменения, вам необходимо сделать следующее.

В обозревателе моделей выберите сборку «Домен», перейдите в «Свойства» и в пункте «Привязка текстового шаблона» нажмите кнопку «…».

Добавляем новый элемент, в поле Project Path указываем имя проекта, в который будет генерироваться код, в поле Target Directory указываем папку относительно проекта (генерируем в корне) и указываем шаблон адрес.

По умолчанию они расположены в папке «C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Microsoft\Visualization and Modeling Feature Pack\2.0\Templates\Text».

Вы можете установить несколько шаблонов на все случаи жизни.

В нашем случае выберите ClassTemplate.t4.

Генерация кода на основе UML-моделей

После этого щелкните правой кнопкой мыши пустое место на диаграмме и выберите «Создать код».



Генерация кода на основе UML-моделей

И — вуаля! В сборку добавлен новый класс, все изменения применены в соответствии с моделью.



Генерация кода на основе UML-моделей

Кстати, с помощью стереотипов можно указать практически все: видимость членов, атрибуты, включаемые при генерации пространства имен и т. д. Итак, M$ предлагает нам отличный инструмент, который значительно облегчит жизнь архитекторам и разработчикам.

К сожалению, этот столь необходимый пакет доступен только подписчикам MSDN, и по каким-то причинам компания не разрешает использовать его всем легальным пользователям.

И это при стоимости VS Ultimate около 300 тысяч рублей.

Будем надеяться, что такое положение дел изменится в ближайшем будущем.

Теги: #visual studio 2010 #design #uml design #.

NET #программирование #генерация кода #обратное проектирование #обратное проектирование #.

NET #UML Design

Вместе с данным постом часто просматривают: