Жизненный цикл проекта
Процесс разработки программного обеспечения в нашей компании можно разделить на три основных этапа:
- Разработка технического проекта и ТЗ;
- Разработка самого ПО;
- Техническая поддержка ПО.
Каждый из этапов разделяется на несколько подэтапов.
Разработка технического проекта
Работа над программным обеспечением всегда должна начинаться с проектирования. Технический проект – подробный документ, в котором четко описываются все требования к будущему ПО. Например:
- Пользовательский интерфейс, требования к дизайну;
- Архитектура решения (какие технологии должны использоваться и т.п.);
- Требования к окружающей инфраструктуре (сеть, железо и т.п.);
- Технические требования к ПО: быстродействие, безопасность, отказоустойчивость и другие.
Объем документа – не менее 50 страниц. Не редкость документы в 150-200 страниц.
Работа над техническим проектом состоит из четырех основных этапов:
- Предпроектное исследование;
- Разработка прототипа приложения;
- Написание текста технического задания;
- Расчет стоимости и сроков.
Предпроектное исследование
На данном этапе мы изучаем предметную область заказчика и бизнес-процессы организации. Цель – разобраться во всех процессах, которые будут автоматизироваться в ПО; выявить ключевые проблемы и их причины.
Без предпроектного исследования было бы невозможно предложить действительно грамотные пути решения проблем заказчика с помощью ПО.
Как правило, данный этап проводится путем активного интервьюирования сотрудников заказчика на его территории.
Разработка прототипа приложения
После того, как наши аналитики разобрались в бизнес-процессах заказчика, мы приступаем к разработке прототипа будущей программы.
Прототип выполняется в виде простого веб-сайта с помощью специализированного ПО (Axure). Несмотря на то, что это лишь прототип, реализуется он со 100%-й подробностью. Мы отрисовываем все формы, кнопки, таблицы и т.п.
Кроме того, прототип – интерактивен: его кнопки – нажимаются и показывают действие, которое должно выполняться в программе.
Пример внешнего вида прототипа:

Полную версию можно посмотреть по ссылке: http://proto.nevlabs.ru
Именно разработка прототипа программы является ключевым звеном технического проекта. Такой подход обладает множеством достоинств:
- Поскольку прототип реализуется в виде веб-сайта, его могут смотреть все сотрудники заказчика, которые будут использовать ПО – для просмотра прототипа нужен лишь веб-браузер;
- 100%-я детализация позволяет выявить практически все проблемы, которые обнаружились бы в процессе разработки ПО. В нашей практике нередки случаи, когда прототип полностью устраивал руководящий состав, а рядовой менеджер выявлял отсутствие необходимых функций, о которых не знало начальство. Другими словами, нередко после показа прототипа секретарше можно услышать «а как я буду печатать форму 523? Ее требуют большинство наших клиентов!». Без прототипа данная проблема обнаружилась бы уже на этапе разработки ПО, что непременно привело бы к увеличению цены.
- Стоимость внесения изменений в прототип крайне низка. Это позволяет нам объявить фиксированную цену за разработку технического проекта и дорабатывать прототип до тех пор, пока он не устроит всех.
Написание текста технического задания
ТЗ составляется после утверждения прототипа. Фактически ТЗ – документ, который является приложением к основному договору на разработку ПО. Техническое задание детально описывает все работы, которые должны быть выполнены по договору (и за ту цену, которая вписана в договоре).
В техническое задание входят как скриншоты прототипа с комментариями, так и другие требования к ПО, которые нельзя показать в прототипе: требования к производительности, безопасности, окружающей инфраструктуре, к документации, к обучению и т.п.
Расчет стоимости и сроков
Только тогда, когда утверждено подробное ТЗ, мы можем рассчитать точную стоимость и сроки работ.
Оценка выполняется следующим образом. Мы разделяем будущую программу на модули – например, модуль кассира, модуль директора и т.п. Каждый модуль делится на подмодули. Например, модуль кассира можно разделить на подмодули приема оплаты, снятия отчетов, выполнения возвратов и т.п. Затем каждый подмодуль делится еще на более мелкие части, и так – до тех пор, пока мы не получим список задач длительностью не более 2-4 часа каждая. Другими словами, мы выполняем декомпозицию функционала программы на мелкие кусочки.
Для каждой из таких «атомарных» задач мы делаем оптимистичную и пессимистичную оценки (в человекочасах), на основе которых выводится средний прогноз. После этого остается посчитать лишь сумму часов и умножить ее на нашу почасовую ставку.
Такой подход к оценке трудозатрат был разработан в США фирмой Lockheed при разработке ракетного комплекса и получил название PERT.
Для наглядности мы представляем вам пример одной из смет:

Вы можете скачать полную версию сметы с расчетом стоимости разработки ПО.
Без подробного ТЗ оценить точную стоимость невозможно. Казалось бы, можно сделать прикидку «на глазок», основываясь на предыдущем опыте. Но именно опыт говорит о том, что проекты слишком сильно отличаются друг от друга, даже если изначально казались похожими. В нашей практике были случаи, когда первоначально, до ТЗ, мы оценивали проект, например, в 400 тыс. руб., а после проработки всех требований стоимость вырастала в 2 раза (впрочем, заказчик ясно понимал, почему это произошло, поскольку видел объем новых требований). Именно поэтому мы крайне не любим делать оценку до написания ТЗ. Цифра может получиться неправдоподобной и не представлять никакой ценности.
Разработка ПО
После утверждения ТЗ заключается основной договор – на разработку программного обеспечения. Само ТЗ становится приложением к договору. Как правило, разработка разбивается на несколько этапов (в среднем 2-7). Поэтапно происходит оплата и сдача результата. Мы стараемся формировать этапы таким образом, чтобы в конце каждого из них был осязаемый результат, который можно показать заказчику.
Поскольку над большинством проектов работает несколько программистов, то весь исходный код программы хранится в репозитории – центральном хранилище. Каждый программист работает над своим модулем, не мешая другим. Как правило, работа разбивается на слои: кто-то реализует серверную бизнес-логику, кто-то – слой взаимодействия в базой данных (DAL), а кто-то – пользовательский интерфейс.
В процессе работы над проектом заказчик получает на почту ежедневные отчеты, которые формируются автоматически. Ниже показан пример такого отчета:


Таким образом, в процессе работы вы будете получать сведения о том, как продвигается проект и будете уверены, что он будет завершен в срок.
На разработанное нами ПО предоставляется гарантия – срок, в течение которого мы бесплатно диагностируем все возникающие сбои и устраняем их, если они произошли по нашей вине. Согласно договору исключительное право на программу переходит к заказчику. Это означает, что заказчик может распоряжаться ПО любым образом, вплоть до его продажи. За нами не остается никаких прав, кроме авторского: право заявлять о том, что данную программу разработали именно мы. Авторское право неотчуждаемо по закону РФ.
Техподдержка
Довольно часто после сдачи ПО заказчики заключают с нами договор на техническую поддержку. Объем работ при этом может весьма значительно отличаться. Некоторых заказчиков интересует лишь наша поддержка с целью обеспечения работоспособности ПО. Других интересует дальнейшая доработка программы: внедрение новых функций, корректировка существующих и т.п.
Стоимость поддержки зависит от ее объема. Так, например, в случае поддержки с целью предотвращения сбоев может быть фиксированная сумма в месяц. А в случае доработок стоимость будет складываться из количества человекочасов. Так, например, со многими заказчиками у нас сложилась следующая схема: подписан рамочный договор, а в конце каждого календарного месяца подписывается акт, в котором указываются выполненные работы и их стоимость. Таким образом, оплата выполненных работ осуществляется каждый месяц по фактически затраченным часам.
В нашей компании не существует причин, по которым мы можем отказаться от заключения договора на техническую поддержку. С некоторыми из наших заказчиков мы работаем уже более 5 лет.