Дмитpий Hecтepук

Блог о программировании — C#, F#, C++, архитектура, и многое другое

Немного про UML в VS2010

22 комментария

Эта статья написана для всех, кому интересно посмотреть примеры поддержки UML и моделирования в Visual Studio RTM, которая вышла вчера. Собственно я не являюсь большим фанатом UML, MDA и прочих прелестей, но новые VS2010 фичи студии наверняка будут отвлекать разработчиков от Sparx EA (для тех кто на луне – это де факто стандартная тулза для UML), Altova UModel или (боже упаси) Visio, поэтому имеет смысл на них посмотреть с точки зрения юзабельности.

Идеология UML, MDA и иже с ними

Для начала – экскурс в суть проблемы, если так можно выразиться. UML сегодня является стандартом для описания программных систем (да и не только программных, наверное) – штукенция эта проэволюционировала с 1995 года (т.е. ей аж 15 лет) и продолжает “радовать” нас своим присутствием. Вот небольшая иллюстрация (украдено с Wikimedia Commons).

UML, как способ моделирования, попытался взять себе на плечи не только банальное описание системы (а это бы было слишком примитивно, а он посягнул на нечто большее – на генерацию кода из диаграмм, а также так называемый roundtrip engineering – это когда код который вы написали руками программа магически превращала в диаграммы, оставляя при этом реализацию на месте. В принципе, все это счастье должно было работать как часы, но вот незадача – программы которые пытались это делать все капитально провалились.

Лично я “увлекся” UML году так в 2000, когда пошел учиться. В то время существовали две программы – Rational Rose и SELECT Enterprise. Будучи малолетним идиотом, я в то время еще не имел выработанной алергии на производство компании Rational (да-да, это те деятели что происводят эпично-фейловые, но тем не менее массово продающиеся решения вроде ClearCase и ClearQuest), а про Select я вообще ничего не знал (не пытайтесь искать в Википедии, не найдете, но мне кажется что вот это они).

Так к чему я это? А к тому, что программы в то время ничего не умели ни в forward, ни в reverse-engineering. Все обещания об упразднении работы программиста за счет визуальных тулзов оказались полной туфтой. И если вы думаете что тот факт что на дворе 2010й год что-то меняет, попробуйте сделать приложение в том же EA – нет, не типовое приложение которое в самплах лежит, а свое, нужное вам.

К вопросу о Visual Studio

В VS2008 есть поддержка диаграмм классов (расширение .cd). Диаграммы классов – это одна из основных фич UML, суть которой в иллюстрации зависимости между классами в проекте. Именно поэтому диаграмму классов можно включить только в конкретный проект, что лично я считаю идиотизмом, т.к. документы должны быть в Solution Folder (сугубо имхо). Вот небольшая иллюстрация того, что можно получить:

Фича это была и в 2008й студии. Как ни странно, диаграммы классов позволяют не только быстро получить иллюстрацию (что само по себе круто), но также редактировать класс прямо на диаграмме, с моментальным обновлением кода. Круто конечно, но полезность данной фичи стремится к нулю т.к. поменять public на private можно и вручную – для этого даже Решарпер не нужен.

Поддержка вот таких вот диаграмм классов оставлена в Visual Studio 2010 – с ней ничего не случилось. Но для проектов моделирования используются совсем другие, полее продвинутые дизайнеры. Давайте посмотрим.

Те же диаграммы классов, только в VS2010

Итак, появился новый тип проекта под названием Modeling Project:

Добавив этот проект в солюшн, появляется UML Model Explorer (это примерно как DSL Explorer) – новый сайдбар для быстрого просмотра всех UML-элементов. Можно сразу же залесть в Add Item и посмотреть что там предлагают:

Конкретно под UML есть пять типов диаграмм – нас пока интересует диаграмма классов, поэтому выберем ее. Появляется тулбокс, из которого можно перетаскивать элементы. При этом не пробуйте перетащить класс из Class Viewer – не получится!

Почему нельзя выпилить уже существующий класс в диаграмку? Ответ на этот вопрос можно найти на форумах Architecture & Modelling. Если коротко, вот что пишут на StackOverflow:

Basically, this functionality will appear in a power tool release around VS 2010 RTM. I encourage you to post in the forum if you have more questions.

Ну да ладно, реверс-инжиниринг это сложно и фича попросту не готова к релизу (так пишут на форумах), так что если вам это надо, посидите пока на ЕА. А что насчет кодогенерации – хоть она-то работает?

Кодогенерация

Если вы собственноручно попробуете найти генерацию из диаграммы в VS2010, вас ждет провал. Как бы начинается все хорошо – находите вы например ссылку на профиль C#, и начинаете думать что все уже не за горами:

Но, увы и ах, тут все счастье заканчивается и вы погружаетесь, по сути дела, в тот же мир что и при работе с DSL Tools. Самый настоящий Unix Way – если вам что-то нужно, пишите это сами. Да-да, вы меня слышали, ваша диаграмма классов – это всего лишь XML-файл который вы можете смело трансформировать во что-то более полезное. Используя T4, как всегда. Если интересно, можете почитать тут. В принципе, все не так сложно, но было бы круто если бы Microsoft все-таки впихнули эту фичу в RTM. Не успели. Очень жаль.

Еще о реверс-инжиниринге

Диаграммы классов почему-то генерировать нельзя, а вот диаграммы вызовов (sequence diagram) – можно. Но не то чтобы было очевидно как это делать – лично я привык работать с Class View, а там похоже о таком и не слыхали. Приходится открывать контекстное меню в объявлении метода:

Далее появляется интересный диалог с набором опций для генерации:

Дальше студия генерирует диаграмму. Если вызовов много (я натравил ее на свой мега-метод), процесс может занять пару минут.

Ну и наконец можно лицезреть сгенерированное детище. Выглядит, в принципе, неплохо:

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

Заключение

Понимаю что коротко, но решил урезать пост дабы “войти в тему” после долгого неписания ничего технического (точнее пишу конечно, только по работе). Тем не менее, позволю себе небольшое заключение. Лично мне кажется, что UML-фичи студии пока сыроваты, особенно для тех кто верит в светлое UMLное будущее. Те же фанаты UML которые постоянно используют этот “язык” в своей работе наверняка останутся на Sparx EA еще долгое время. И нет – я не вижу никакой market opportunity в том чтобы делать из VS2010 некую MDA-ориентированную тулзу а-ля EMF. Это как раз хорошо что Microsoft не циклится на UML, ибо это не будет так сильно отвлекать разработчиков от насущных задач. ▪

Advertisements

Written by Dmitri

13 апреля 2010 в 18:24

Опубликовано в uml, Visual Studio

комментария 22

Subscribe to comments with RSS.

  1. Мы тут с Тамощуком развели спор. Он тоже как и ты считает что UML «попытался взять себе на плечи не только …» Мое же мнение что ниче он не брал. UML это язык, не более того. То что оно структурированный это уже второй. То что по нему можно что-то генерить ИМХО тож. Да и вся это генережка это MDA, а не UML.

    Mike Chaliy

    13 апреля 2010 at 22:40

    • Не-не, если бы разработчикам сразу сказали что UML это только картинки, то они бы вообще забили, и никто бы вообще не пробовал это дело использовать. Но разработчиков попытались подкупить бесплатной генерацией диаграм из кода (фейл), генерацией кода из диаграм (фейл) и синхронизацией кода и диаграм (эпичный фейл). И генережка пиарилась до того как появился термин MDA. MDA это последний гвоздь в гроб UML, не более.

      Dmitri

      13 апреля 2010 at 22:49

  2. Интересует момент сравнения по возможностям с Enterprise Architect (+ MDG Integration к студии). Есть подобный опыт?

    Например, по этому посту вижу, что в VS нет большого количества диаграмм, которые необходимы для эффективного UML-моделирования, например, потоки данных, UI, деплоймент.

    ИМХО, EA поддерижвает больше расширений для UML, чем студия, эти и привлекательна, так?

    Евгений

    14 апреля 2010 at 9:51

    • Боюсь что сравнивать студию и Sparx EA пока рано. Sparx EA — это полновесный, лидирующий на сегодня продукт для разработки с UML2. Visual Studio — это IDE с некоторой весьма ограниченной поддержкой UML (5 типов диаграмм). Студии нужно еще несколько итераций чтобы нагнать существующие приложения для UML. И то, непонятно является ли это целью разработчиков VS.

      Dmitri

      14 апреля 2010 at 20:29

      • Посмотрите на цену редакции студии с поддержкой UML и вы быстро станете фаном ЕА с ее ценами в районе 200-300 у.е.

        s_tristan

        15 апреля 2010 at 0:14

        • А также весом в 57Мб :)

          Dmitri

          15 апреля 2010 at 8:07

        • EA хорош, но мое категорическое мнение такое — это должно быть плагином к IDE.
          В идеале — добавляться к текущему проекту, на крайняк — в виде отдельного Model project в составе solution.
          На текущий момент вопрос — что использовать в VS — остается открытым. Редакция вижуал студии с поддержкой UML остается неадекватной по цене (при условии, что другие доп. фичи не нужны), найденные мной сторонние плагины убоги как незнаю что. Хоть сам садись и пиши.

          Юрий

          30 августа 2011 at 20:34

        • Эти редакции неадекватны по показателю цена/качество. Серьезно, UML там ужасен, даже если учитывать VS Feature Pack 2.

          Dmitri

          30 августа 2011 at 20:47

  3. Please excuse the use of English — I don’t trust Google translate sufficiently to risk posting its output here!

    Thanks Dmitry for looking into the VS 2010 UML support. You’re right to post that Select Business Solutions is the company that now produces the product formerly known as Select Enterprise, now Select Architect. Those interested in UML, MDA and VS will be reassured that Select continues to support plug-ins to Microsoft Visual Studio, which continue the strong support we’ve had in place since our early Visual Basic and Visual C++ support in the 90’s. Our plugin for Visual Studio allows you to not only synchronize code and UML model, but also to browse the UML model in Visual Studio itself. Our website has a free evaluation download if you’re interested.

    Phil Webb

    27 апреля 2010 at 16:07

    • Hiya, thanks for the comment — I just tried translating my own post with Google, must admit that it’s barely readable. Regarding Select (I think it was spelled with capital letters back then, no?), I was kinda curious where it went. Select was one of the tools I used while studying at uni.

      Dmitri

      27 апреля 2010 at 16:32

      • Capitalisation has changed, along with ownership, since the 90’s, and the product has expanded with the inclusion of business motivation modelling and BPMN. In fact we’ve just released a separate product, Select Business Modeler, incorporating just these techniques. However, these models are fully integrated with Select Architect’s UML and data modelling capabilities, so it will be interesting to see how quickly developers working in VS are able to work alongside analysts working in Select Business Modeler. More about Select Business Modeler here: http://www.selectbs.com/adt/analysis-and-design/select-business-modeler-bmm-bpmn

        Phil Webb

        27 апреля 2010 at 16:48

        • The BPM stuff is interesting, I might check it out. By the way, do you by any chance offer licenses to Microsoft MVPs? Just thought I’d ask — this is how I got acquainted with e.g. the Altova product line.

          Dmitri

          27 апреля 2010 at 18:08

  4. The free download allows you to try out every feature of the product set, just with limited volumes of data (so only one diagram of each type for example). Download it, have a go and get in touch via the website if you need anything more…

    Phil Webb

    27 апреля 2010 at 18:23

  5. Интересно, чем Вам так не понравился Visio для создания диаграмм классов? При установленной 2005 версии он позволяет и код сгенерить.
    Не могли бы Вы сказать, позволяет ли VS2010 строить диаграммы для unmanaged C++?

    flashnik

    4 мая 2010 at 13:24

    • Visio много чего делал, в т.ч. и кодогенерацию и даже roundtrip. Только использовать его как полновесное решение UML крайне сложно в силу его ограниченности а также весьма негибких встроенных моделей.

      Насчет UML для С++ понятия не умею :)

      Dmitri

      4 мая 2010 at 17:46

  6. Поставил дома VS2010 из любопытства. В окне «Установленные продукты» написано :»Инструменты моделирования и архитектуры Microsoft Visual Studio 2010″.
    Открываю свой проект (С++, VS2005). В окне «Создание проекта модели» выпадающий список содержит два пункта: 1-.NET Framework 4; 2- .
    Со 2 пункта перекидывет на сайт микрософта «http://msdn.microsoft.com/ru-ru/netframework/aa569263.aspx».
    Ничего подходящего.
    Сделал для себя вывод: «C++» программеры идут лесом
    :(

    and59

    28 июня 2010 at 11:55

    • Такой вывод надо было давно сделать. Самое обидное то, что Visual Studio — это лучшая среда для разработки на С++.

      Dmitri

      29 июня 2010 at 23:38

  7. А автоматический layout для uml class diagram есть? Я что-то не нашел. :(

    Dimchansky

    19 сентября 2010 at 1:22

    • Нет, увы, это нечто из раздела фантастики.

      Dmitri

      22 ноября 2013 at 8:02

  8. все, картинки, содержащиеся в этой статье, уже удалены с сервера.

    sh

    22 ноября 2013 at 7:35


Оставить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: