Понимание кодовой базы C ++ с помощью UML-инструментов - PullRequest
1 голос
/ 01 августа 2011

Я пытаюсь понять кодовую базу C ++.Я использовал несколько бесплатных инструментов, которые будут сканировать код и создавать диаграммы, но их не так просто понять.

Я думаю, что было бы полезно создать вручную что-то с помощью инструмента UML.

Что мне нужно, это создать что-то похожее на структуру данных во время выполнения.В идеале, вытягивая объекты из UML и упорядочивая их.Также я хотел бы организовать классы в подпакеты - например, близкие к БД или к ветвям структур данных.

(частично я делаю это сейчас с папками в проводнике решений Visual Studio)

Это проект LINUX со многими Makesfiles, но многие инструменты, такие как Visual Studio, «понимают» код, когда я просто создаю проекты с файлами в главном каталоге исполняемого файла, над которым я работаю

Ответы [ 4 ]

0 голосов
/ 05 августа 2011

Большинство инструментов дают вам только структурное представление (классы и пакеты), которое, честно говоря, не говорит вам так много о том, что происходит во время выполнения.

Enterprise Architect от Sparx Systems включает Visual Execution Analyzer , который может генерировать диаграммы последовательности из сеанса отладки. Он поддерживает C ++, но только в Windows, поэтому вам придется его перестраивать, но если я вас правильно понимаю, ваш код уже запущен в Visual Studio.

Вот краткая демонстрация (в данном случае код на C #, но они также утверждают, что поддерживают C ++). Это не полный кругозор, запись типа кода в UML, но лично я думаю, что в любом случае это несбыточная мечта. Используйте UML для документирования, используйте язык программирования для кодирования.

0 голосов
/ 01 августа 2011

Честно говоря, у вас могут быть существенные проблемы с получением чего-либо полезного из инструмента UML в отношении обратного генерирования кода.

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

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

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

0 голосов
/ 01 августа 2011

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

0 голосов
/ 01 августа 2011

Не понял, является ли это linux или windows (вы говорите, linux, но потом говорите, что используете visual studio).

Если вы хотите понять код, Source Insight хороший инструмент для этого.Не обязательно UMLs, но выдает хорошие графики в режиме реального времени.

...