Проектирование в нестабильной среде

10.10.2013

Автор: Виктор Рудь

Что есть проектирование? Проектирование — это первый этап в создании чего-то нового. Первый? — ну, нет. Второй. Нулевой этап — это попытка сформулировать цели (задачи, идею) создания чего-то нового. И формулировка цели, и само проектирование — серьезные интеллектуальные задачи. Как правило, это задачи без четкого алгоритма решения. А если алгоритм и существует, то он направлен на поиск решения в пространстве вариантов этого решения. И это пространство можно считать бесконечным или более точно — неисследуемым в рамках всегда имеющихся ограничений бюджета и времени.

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

Мир разработки программного обеспечения ответил на это методиками экстремального программирования, суть которых лежит в итеративной разработке и максимальном сближении проектирования и программирования. Идея экстремальных методов программирования (agile методик) заключается в исключении формальных спецификаций и замене их пользовательскими историями (user story), описывающими главные идеи/фичи того или иного экрана/функции системы. Это дает следующие возможности:

  • простор разработчику для выбора методов и вариантов реализации
  • возможность быстрой реализации. Первую реализацию можно считать прототипом. Что дает новые идеи для проектирования (коррекции изначальной задачи) и быстрее приводит к финальному результату
  • можно начать пользоваться системой уже тогда, когда она готова всех лишь на 10-20-30% от первоначально задуманного объема!

Пользование системой на ранних стадиях ее существования сужает пространство проектных решений в сторону вариантов с максимальной полезностью в самой краткосрочной перспективе. Но самое важное, «реализация создает пространство, в котором должен быть выполнен еще один цикл проектирования» — цитата Фредерика Брукса, послужившая поводом для написания данной заметки.



Список статей