Чтобы правильно объяснить это, нам нужен короткий урок истории. В первые годы разработки программного обеспечения, часто используемой аналогией было строительство дома. Архитектор и инженер-строитель обсуждают планы с заказчиком и разрабатывают проект. Затем строители следуют этому проекту, чтобы построить настоящий дом. Написание кода было расценено как создание реального дома. Таким образом, была очевидная потребность в предварительном проектировании, прежде чем эта сборка могла иметь место. Были созданы различные инструменты графического дизайна, среди которых UML.
Идея, изначально связанная с UML, заключалась в том, что можно полностью спроектировать систему с использованием UML, а затем передать ее кодировщикам для преобразования этого проекта в код. На самом деле, это просто не работает и привело к тому, что многие годы программисты воспринимались как «разработчики», а не как «дизайнеры», проекты опаздывали, проекты должны постоянно изменяться после того, как они должны были быть завершены и т. Д.
Причина проста. Кодирование это дизайн . При аналогии с домом код - это чертежи архитектора. Компилятор - это сборщик, который берет эти проекты и строит из них программу. Эта реализация привела к появлению гибких технологий, TDD и т. Д. - инструментов, помогающих улучшить качество разработки кода.
Подобно тому, как архитектор может создать предварительные эскизы, чтобы помочь ей и ее команде визуализировать общий дизайн, так и разработчик может использовать UML или другие инструменты, чтобы помочь визуализировать необходимый дизайн. Точно так же, как за этими набросками не следуют вслепую, так и не следует слепо следовать UML. Дизайн кода должен развиваться из гибких итераций и с использованием TDD. Точно так же, как архитектор может построить модель дома, чтобы помочь ей и ее команде визуализировать чертежи, так и UML можно использовать для визуализации структуры кода.
Как говорит дядя Боб, вы не можете проверить UML, вы можете только проверить код. Поэтому код является основной проектной документацией, а UML, если используется, является только вторичной документацией.