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