Большинство, если не все ИТ-специалисты, которых я знаю, считают, что полезно моделировать программное обеспечение с помощью UML или других типов диаграмм перед кодированием. (Мой вопрос не о UML, а о графическом или текстовом описании дизайна программного обеспечения.)
Я не уверен в этом. Основная причина: код не лжет. Проверяется компилятором или интерпретатором. Надеемся, что он имеет автоматические тесты и должен пройти статический анализ кода. Если модуль неправильно взаимодействует с другим модулем, это обычно очевидно в коде, потому что вы получаете сообщение об ошибке.
Все это нельзя сделать с помощью диаграмм и других документов. Да, есть инструменты, которые проверяют UML, но все, что я видел до сих пор, очень ограничено. Поэтому эти документы, как правило, являются неполными, непоследовательными или просто ложными.
Даже если сами диаграммы согласованы, вы не можете быть уверены, что код действительно их реализует. Да, есть генераторы кода, но они никогда не генерируют весь код.
Иногда мне хочется одержимости результатами моделирования, исходя из предположения, что код неизбежно должен быть неким непонятным беспорядком, с которым архитекторам, дизайнерам или другим хорошо оплачиваемым людям, которые получают общую картину, не придется сталкиваться. В противном случае это будет слишком дорого. Поэтому все проектные решения должны быть удалены от кода. Сам код должен быть предоставлен специалистам (обезьянам кода), которые могут написать (и, возможно, прочитать) его, но не должны иметь дело ни с чем другим. Это, вероятно, имело смысл, когда ассемблер был единственным вариантом, но современные языки позволяют кодировать на очень высоком уровне абстракции. Поэтому я больше не вижу необходимости в моделировании.
Какие аргументы для моделирования программных систем мне не хватает?
Кстати, я верю, что диаграммы - отличный способ документировать и передавать определенные аспекты разработки программного обеспечения, но это не означает, что мы должны основывать на них разработку программного обеспечения.
Разъяснение:
Вопрос был отложен как неясный. Поэтому позвольте мне добавить некоторые пояснения:
Я спрашиваю, имеет ли смысл использовать (не кодированные) документы, которые моделируют программное обеспечение, как основной источник правды о разработке программного обеспечения. Я не имею в виду тот случай, когда значительная часть кода автоматически генерируется из этих документов. Если бы это было так, я бы рассматривал сами документы как исходный код, а не как образец.
Я перечислил некоторые недостатки этой процедуры, которые заставляют меня задуматься, почему так много людей (по моему опыту) считают ее предпочтительным способом разработки программного обеспечения.