Обратное проектирование (reverse engineering) – это процесс трансформации кода в модель. Обратное проектирование, как это ни парадоксально, порождает избыток информации, часть которой представлена на более низком уровне детализации, чем нужно для построения удобной модели. В то же время обратное проектирование неполно: при прямом проектировании модели в код происходит потеря информации, поэтому невозможно точно восстановить модель из кода, если только инструмент, который мы будем использовать, не кодирует информацию в виде комментариев к исходному коду, выходящих за пределы семантики языка реализации.

Чтобы осуществить обратное проектирование диаграммы классов, необходимо:

Заканчивая обсуждение диаграмм классов UML, подведем некоторые итоги. Создавая диаграммы классов на UML, мы будем помнить, что каждая из них – это лишь графическое изображение статического представления дизайна системы. Ни одна диаграмма классов не обязана включать все, что касается представления дизайна системы. Однако диаграммы классов в совокупности сообщают разработчику или другому читателю полную информацию, необходимую для статического представления системы. Таким образом, хорошо структурированная диаграмма классов:

Когда мы разрабатываем диаграмму классов, то: