NewVision WEB-development Team Blog

Заметки из статьи – Джоэль Спольски, Функциональные спецификации

  • Функциональная спецификация описывает, как в целом будет работать продукт с точки зрения пользователя. Не имеет значения, каким способом штуковина сделана. Она говорит об особенностях. Она определяет экраны, меню и т.д.
  • Техническая спецификация описывает внутреннее исполнение программы. Она говорит о структурах данных, моделях реляционной базы данных, выборе языков программирования и инструментариев, алгоритмах и пр.

Прежде всего, отказ от написания спецификаций – это ваш самый большой ненужный риск при разработке программного продукта. Это так же глупо, как намерение перейти пустыню Мохаве, взяв с собой в рюкзаке только постельное белье, и в надежде импровизировать по пути.

Наиболее важная функция спецификации –проектирование программы (design the program). Даже если вы работаете один, и пишете спецификацию исключительно для себя, процесс ее написания – описание того, как работает программа до мельчайших подробностей – заставит вас непосредственно проектировать программу.

Мораль сей сказки такова: надуманный пример может доказать все, что угодно.

Если разработчик потратил две недели на написание кода, то он держиться за него, даже если код плохой. В результате конечный продукт имеет тенденцию становиться компромиссом между изначально неправильной разработкой и идеальной разработкой. Т.о. Это было «лучшей разработкой, которую мы могли получить, учитывая то, что мы уже написали весь этот код, и мы просто не хотим его выбрасывать». Это звучит не так хорошо, как «самая лучшая разработка, которую мы могли получить. Точка».

Огромная причина номер два – спецификациисокращают информационные потоки. Когда вы пишете спецификацию, вы должнытолько один раз выяснить, как программа работает. Каждый член команды может потом просто почитать спецификацию.

Если у вас нет спецификации, все эти информационные потоки продолжают идти, потому что они должны идти, но это происходит вынужденно (ad hoc). Команда тестеров волей-неволей просто играется с программой, и когда что-то выглядит странным, они снова и снова идут и отрывают программистов от работы, чтобы задать им еще один глупый вопрос о том, как это должно работать. Так что тестеры на самом деле тестируют не программу по плану разработки, а программу по плану самой программы (testing the program against the program rather than the program against the design), хотя первый вариант был бы, э-э, немножечко полезнее.

Ужасающе всеобщей ошибкой являются дискусии о том, как что-либо должно быть сделано, никогда не оканчивающиеся принятием решений. Брайан Валентин (Brian Valentine), главный разработчик Windows 2000, стал знаменит благодаря своему лозунгу «Decisions in 10 minutes or less, or the next one is free.» (Решение за десять минут или меньше, или вы уволены. Следующий!)

Так почему же люди не пишутспецификации?
Я думаю, это потому что люди просто не любят писать. Пустой экран с курсором ужасно расстраивает. Письмо – это тренировка. Чем больше вы пишете, тем больше вы можете написать. Если вам нужно написать спецификацию, а вы не можете, то заведите дневник, создайте свой блог, пойдите на курсы творческого письма…..

Книга Фредерик Брукс «Мифический человеко-месяц». ГЛавная идея книги в том, что если подключать новых программистов к проекту, который не укладывается в график, то итоговая задержка только увеличиться.

Похожие статьи

Оставить комментарий