Вопрос
Существует ли инструмент, который может анализировать файлы C++ внутри проекта и генерировать из них UML?
Решение
Вот несколько вариантов:
Пошаговое руководство по обратному проектированию кода в UML-диаграммы с помощью Microsoft Visio 2000 — http://msdn.microsoft.com/en-us/library/aa140255(office.10).aspx
БУМЛ - http://bouml.fr/features.html
СтарУМЛ - http://staruml.sourceforge.net/en/
Обратное проектирование диаграммы классов UML из кода C++ при наличии слабо типизированных контейнеров (2001 г.) - http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.27.9064
Разработчик UML-моделей Umbrello — http://uml.sourceforge.net/
Список других инструментов, на которые стоит обратить внимание: http://plg.uwaterloo.ca/~migod/uml.html
Другие советы
Если вам нужны просто диаграммы, доксиген делает довольно хорошую работу.
Я считаю Корпоративный архитектор могу это сделать.
Я разработал инструмент под названием Доксиграф который может анализировать XML, сгенерированный Doxygen, и превращать его в интерактивную диаграмму классов UML, которую вы можете просмотреть в веб-браузере или импортировать в любое программное обеспечение, которое может читать «точечные» файлы Graphviz.
Я считаю, что Википедия может быть отличным источником информации о таких инструментах, особенно сравнительных таблиц.Есть страница на UML-инструменты.См., в частности, реверс-инжиниринг языков столбец.
UML-студия По моему опыту, делает это довольно хорошо и работает в «бесплатном режиме» для небольших проектов.
Тот, кто хочет UML, заслуживает Рациональная Роза :)
Я использовал Rational Rose и Rational Rhapsody для реверс-инжиниринга крупных проектов.Я бы предпочел Rational Rhapsody для получения файлов классов UML для C++!
Кажется Зонтик создает лучший UML из кода C++ (рекомендуется использовать последнюю версию >= 2.22) по сравнению с командной строкой автодиапа для Диаметр и другие инструменты.
СтарУМЛ не создали для меня хороших диаграмм:странный импорт, непригодный для использования, у многих не работает: https://github.com/staruml/Cpp/issues
СтарУМЛ делает именно это, и это бесплатно.К сожалению, некоторое время он не обновлялся.Было несколько дочерних проектов (поскольку администраторы проекта не позволили взять их на себя), но они тоже умерли.