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