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

Вы – заказчик, – приходите к программистам (одному или группе, вашим хорошим знакомым, рекомендованным кем-то или выбранным потому, что у них много клиентов), и говорите: «Мне нужна программа, которая бы делала вот это и вон то». Например, отчеты для налоговой инспекции. Или учет рабочего времени сотрудников. Или рассылку рекламных предложений клиентам.

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

Если ответ вас устраивает, вы соглашаетесь, а если нет, идете к другим. Может быть, вы находите то, что вам нужно, в Интернете, или покупаете в магазине. Но если ни тут ни там ничего подходящего нет, а очень нужно, то с программистами вы как-нибудь договоритесь.

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

Те, кто уже обращался к программистам по таким вопросам, знают, что действительность выглядит немного иначе.

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

Программисты уверяют вас, что сделали все так, как вы просили, а про китайский язык и праздничные дни ничего сказано не было. И в данном случае они правы, потому что это очевидно только для вас.

Впрочем, непонимание между заказчиком и разработчиком – тема отдельного разговора. Сейчас я расскажу о том, как на самом деле пишут программы.

1. Анализ

В первую очередь, ваши пожелания тщательно изучают. Собирают дополнительную информацию, уточняют неясные моменты, разрешают противоречия. В итоге получают окончательный список всего, что должна делать программа. Именно эта информация служит руководством для программистов. Вы, как заказчик, можете с ней ознакомиться и внести изменения, если что-то записано неправильно. Если же ничего подобного вам не показывали, то маловероятно, что программа будет соответствовать вашим ожиданиям. Документ, который содержит в себе эту информацию, называется техническим заданием. В англоязычных источниках его называют спецификацией требований (requirements specification), или просто спецификацией.

2. Разработка

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

3. Тестирование

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

4. Внедрение и сопровождение

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

Длительность каждого из перечисленных этапов зависит от сложности программы, которая вам нужна, опыта разработчика, выделенного бюджета и других факторов. Например, информационные системы для банков или производства разрабатывают несколько лет. Автоматизация ресторанного бизнеса может занять несколько месяцев. Для разработки Интернет-сайта будет достаточно нескольких недель.

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

Ноябрь 14 2007