Большинство инструментов UML поддерживают только подмножество C ++. Любой инструмент UML, который не включает препроцессор C, пропустит значительное количество информации, и из-за сложности C ++ их очень легко спутать.
Основной вариант использования обратного инжиниринга в инструментах UML - это циклическое проектирование - сначала создайте модель UML, затем сгенерируйте код, затем немного, но не слишком измените его, затем снова импортируйте изменения.
Стоит также отметить, что в C ++ существует множество конструкций, которые просто не имеют прямого представления в UML. C ++ - это мультипарадигмальный язык; UML - это язык моделирования ОО. Существует много идиом C ++, которые отображаются на одни и те же конструкции UML (это составная * auto_ptr
или значение? Является ли переменная-член std::vector<int>
ассоциацией с параметризованным классом или свойством типа int[0..*]
)
Таким образом, короткий ответ - нет, нет простого, пуленепробиваемого способа получить UML-диаграммы из C ++.