У меня есть сложное приложение с большим количеством файлов классов. Я использую Doxygen для создания некоторой документации, но мне бы понравился инструмент, который мог бы статически анализировать мой код и генерировать некоторые диаграммы UML. Не уверен, что такой продукт существует, но он хотел бы услышать вклад сообщества.Есть ли программное обеспечение для генерации диаграмм UML при анализе кода?
ответ
Есть много инструментов, которые делают именно это на различных уровнях качества. Я хотел бы упомянуть, что генерация диаграмм UML для целей документации может быть отличной идеей, особенно в крупных проектах. Проблема в том, что в сложных базовых кодах существует много взаимосвязей между классами, которые вызывают много кода и т. Д. В принципе любой тип диаграммы, который вы выберете, может в определенном проекте выглядеть вздутым. Неверная диаграмма может быть хуже, чем хорошо структурированная текстовая документация. В основном то, что я пытаюсь сказать, заключается в том, что основная идея моделирования состоит в том, чтобы абстрагироваться от несущественных деталей и автоматически решать, что неважно, непросто и часто зависит от проекта, поэтому в большинстве случаев полезно создавать гораздо меньше диаграмм вручную, который будет получать гораздо более полезную информацию.
Visual Studio 2010 имеет это для проектов C# и VB, а Visio 2003 в тот же день может сделать их для проектов .NET и C++ ... Другие инструменты, я не знаю.
Какой язык конкретно вы используете (также платформа и инструменты помогут выявить потенциальные решения)?
Оказывается, что Doxygen поддерживает схему, как это (для C++): http://www.stack.nl/~dimitri/doxygen/diagrams.html
Вы могли бы быть заинтересованы в ответах здесь: Generating UML from C++ code?
Если вы спрашиваете о диаграммах классов, Sparx Enterprise Architect может это сделать для нескольких языков, включая Visual Basic, C#, Java и Python.
Я также знаю, что он имеет возможность генерировать диаграммы последовательности, запустив код .NET в отладчике, но я не знаю, доступна ли эта функция для других языков.
UMLGraph or apiviz может помочь, если вы работаете в среде Java.
hth.