Протягом останніх семестрів я проходив кілька курсів дизайну програмного забезпечення, і, хоча бачу користь у великому формалізмі, я відчуваю, що він нічого не говорить про саму програму:
- Ви не можете сказати, як програма працюватиме з специфікацією Use Case, навіть якщо вона обговорює, що програма може зробити.
- Ви не можете нічого розповісти про досвід користувача з документа про вимоги, навіть якщо він може містити вимоги до якості.
- Діаграми послідовності - це хороший опис того, як програмне забезпечення працює як стек викликів, але вони дуже обмежені і дають дуже часткове уявлення про загальну систему.
- Діаграми класів чудово описують, як побудована система, але абсолютно марні, щоб допомогти вам зрозуміти, яким програмним забезпеченням повинно бути.
Де в усьому цьому формалізм є підсумком: як програма виглядає, функціонує та який досвід вона дає? Хіба немає сенсу розробляти це? Хіба не краще зрозуміти, як програма повинна працювати через прототип, і намагатися реалізувати її реально?
Я знаю, що я, мабуть, страждаю від того, що навчають інженерії теоретиками, але мені потрібно запитати, чи роблять вони це в галузі? Як люди з'ясовують, що насправді програма, а не те, що вона має відповідати? Чи багато людей прототипу чи вони в основному використовують формальні інструменти, такі як UML, і я просто ще не отримав їх використання?