По данным из профессиональной литературы [Boehm, Barry W. and Philip N. Papaccio. Understanding and controlling software costs], при разработке программного обеспечения от 30 до 50% общего бюджета расходуется на переделывание уже готовых частей. Таким образом, если программа обошлась заказчику в 10 000$, то не менее 3 000$ стоило только исправление ошибок в ней.

Поскольку людям свойственно допускать ошибки, то вряд ли когда-нибудь удастся свести к нулю затраты на их исправление, в том числе в сфере разработки программного обеспечения. Однако эти затраты можно сократить, и в некоторых случаях весьма существенно.

Как упоминается в других источниках [Leffingwell, Dean. Calculating the return on investment from more effective requirements management], от 70 до 85% расходов на переделку отнимает исправление тех ошибок, которые были допущены на этапе разработки технического задания. Сократив эту величину вдвое, можно уменьшить стоимость проекта на 10-21% и получить программу лучшего качества. В идеальном случае, при полном исключении таких ошибок, общий бюджет уменьшается более чем на 40%.

Поскольку заказчик не в силах повлиять на квалификацию разработчика и его внутреннюю организацию (разве что на стадии выбора коллектива, которому поручается разработка программы), то в его распоряжении остается несколько методов сокращения стоимости проекта, в-частности, следующие.

Уменьшение ошибок на этапе разработки технического задания

Этого можно достичь, если техническое задание:
1. существует как документ – то есть, пожелания заказчика зафиксированы письменно;
2. написано специалистом – им должен быть штатный аналитик заказчика или разработчика, специально обученный сотрудник заказчика или сторонний специалист, приглашенный для выполнения конкретной задачи;
3. прочитано и согласовано со всеми заинтересованными лицами.

Исправление обнаруженных ошибок до того, как программа будет передана заказчику

После внедрения программы исправление каждой ошибки обходится в 14 раз дороже, чем исправление той же ошибки на этапе разработки, и в 6-7 раз дороже, чем на этапе тестирования. Если ошибка допущена на этапе анализа (что часто бывает, когда специалист, формулирующий техническое задание, не обладает необходимой квалификацией), то ее исправление обходится дороже более чем в 40 раз [Grady, Robert B. An economic release decision model. In proceedings of the applications of software measurement conference]. Это обусловлено тем, что переписать две строчки в текстовом документе гораздо проще, чем переделывать часть уже работающей на предприятии программы.

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

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

Ноябрь 17 2007