Насколько распространено создание прототипов в качестве первого этапа разработки?

Насколько распространено создание прототипов в качестве первого этапа разработки?
Насколько распространено создание прототипов в качестве первого этапа разработки? - noaa @ Unsplash

В последние несколько семестров я прослушал несколько курсов по проектированию программного обеспечения, и хотя я вижу пользу во многих формализмах, мне кажется, что они ничего не говорят о самой программе:

  • Вы не можете сказать, как будет работать программа, исходя из спецификации Use Case, даже если в ней обсуждается, что программа может делать.
  • Вы не можете ничего сказать о пользовательском опыте из документа требований, даже если он может включать требования к качеству.
  • Диаграммы последовательностей являются хорошим описанием того, как работает программное обеспечение в виде стека вызовов, но они очень ограничены и дают весьма неполное представление об общей системе.
  • Диаграммы классов отлично подходят для описания того, как построена система, но совершенно бесполезны для того, чтобы помочь вам понять, каким должно быть программное обеспечение.

Где во всем этом формализме суть: как программа выглядит, работает и какой опыт она дает? Не разумнее ли проектировать на основе этого? Не лучше ли выяснить, как программа должна работать через прототип, и стремиться реализовать ее по-настоящему?

Я знаю, что, вероятно, страдаю от того, что меня учат инженерному делу теоретики, но я хочу спросить, делают ли они это в промышленности? Как люди выясняют, чем на самом деле является программа, а не то, чему она должна соответствовать? Часто ли люди создают прототипы, или они в основном используют формальные инструменты, такие как UML, а я просто еще не научился ими пользоваться?

Если мы создаем приложение с графическим интерфейсом, мы почти ВСЕГДА создаем прототип или POC (доказательство концепции). Мы установим, каким будет визуальный словарь приложения. Обычно мы вовлекаем нашего клиента в процесс POC и убеждаемся, что он понимает, какова цель и на чем ему следует сосредоточиться. Я никогда не жалел, что создал прототип. Просто убедитесь, что вы не пытаетесь превратить код прототипа в рабочий код, начните рабочий код с нуля на основе того, что вы узнали из прототипа.

Сказав все это, мы почти никогда не прототипируем серверные приложения (сервисы, промежуточное ПО и т. д.). Я действительно не вижу возврата инвестиций для этого (если вы не используете какую-то новую технологию и вам не нужно проверять разные концепции).


LetsCodeIt, 28 мая 2023 г., 21:10