Жизненный цикл проекта

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

  • Разработка технического проекта и ТЗ;
  • Разработка самого ПО;
  • Техническая поддержка ПО.

Каждый из этапов разделяется на несколько подэтапов.

Разработка технического проекта

Работа над программным обеспечением всегда должна начинаться с проектирования. Технический проект – подробный документ, в котором четко описываются все требования к будущему ПО. Например:

  • Пользовательский интерфейс, требования к дизайну;
  • Архитектура решения (какие технологии должны использоваться и т.п.);
  • Требования к окружающей инфраструктуре (сеть, железо и т.п.);
  • Технические требования к ПО: быстродействие, безопасность, отказоустойчивость и другие.

Объем документа – не менее 50 страниц. Не редкость документы в 150-200 страниц.

Работа над техническим проектом состоит из четырех основных этапов:

  • Предпроектное исследование;
  • Разработка прототипа приложения;
  • Написание текста технического задания;
  • Расчет стоимости и сроков.

Предпроектное исследование

На данном этапе мы изучаем предметную область заказчика и бизнес-процессы организации. Цель – разобраться во всех процессах, которые будут автоматизироваться в ПО; выявить ключевые проблемы и их причины.

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

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

Разработка прототипа приложения

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

Прототип выполняется в виде простого веб-сайта с помощью специализированного ПО (Axure). Несмотря на то, что это лишь прототип, реализуется он со 100%-й подробностью. Мы отрисовываем все формы, кнопки, таблицы и т.п.

Кроме того, прототип – интерактивен: его кнопки – нажимаются и показывают действие, которое должно выполняться в программе.

Пример внешнего вида прототипа:

Пример прототипа приложения

Полную версию можно посмотреть по ссылке: http://proto.nevlabs.ru

Именно разработка прототипа программы является ключевым звеном технического проекта. Такой подход обладает множеством достоинств:

  • Поскольку прототип реализуется в виде веб-сайта, его могут смотреть все сотрудники заказчика, которые будут использовать ПО – для просмотра прототипа нужен лишь веб-браузер;
  • 100%-я детализация позволяет выявить практически все проблемы, которые обнаружились бы в процессе разработки ПО. В нашей практике нередки случаи, когда прототип полностью устраивал руководящий состав, а рядовой менеджер выявлял отсутствие необходимых функций, о которых не знало начальство. Другими словами, нередко после показа прототипа секретарше можно услышать «а как я буду печатать форму 523? Ее требуют большинство наших клиентов!». Без прототипа данная проблема обнаружилась бы уже на этапе разработки ПО, что непременно привело бы к увеличению цены.
  • Стоимость внесения изменений в прототип крайне низка. Это позволяет нам объявить фиксированную цену за разработку технического проекта и дорабатывать прототип до тех пор, пока он не устроит всех.

Написание текста технического задания

ТЗ составляется после утверждения прототипа. Фактически ТЗ – документ, который является приложением к основному договору на разработку ПО. Техническое задание детально описывает все работы, которые должны быть выполнены по договору (и за ту цену, которая вписана в договоре).

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

Расчет стоимости и сроков

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

Оценка выполняется следующим образом. Мы разделяем будущую программу на модули – например, модуль кассира, модуль директора и т.п. Каждый модуль делится на подмодули. Например, модуль кассира можно разделить на подмодули приема оплаты, снятия отчетов, выполнения возвратов и т.п. Затем каждый подмодуль делится еще на более мелкие части, и так – до тех пор, пока мы не получим список задач длительностью не более 2-4 часа каждая. Другими словами, мы выполняем декомпозицию функционала программы на мелкие кусочки.

Для каждой из таких «атомарных» задач мы делаем оптимистичную и пессимистичную оценки (в человекочасах), на основе которых выводится средний прогноз. После этого остается посчитать лишь сумму часов и умножить ее на нашу почасовую ставку.

Такой подход к оценке трудозатрат был разработан в США фирмой Lockheed при разработке ракетного комплекса и получил название PERT.

Для наглядности мы представляем вам пример одной из смет:

Пример расчета стоимости программного обеспечения

Вы можете скачать полную версию сметы с расчетом стоимости разработки ПО.

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

Разработка ПО

После утверждения ТЗ заключается основной договор – на разработку программного обеспечения. Само ТЗ становится приложением к договору. Как правило, разработка разбивается на несколько этапов (в среднем 2-7). Поэтапно происходит оплата и сдача результата. Мы стараемся формировать этапы таким образом, чтобы в конце каждого из них был осязаемый результат, который можно показать заказчику.

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

В процессе работы над проектом заказчик получает на почту ежедневные отчеты, которые формируются автоматически. Ниже показан пример такого отчета:

Письмо-отчет с результатами работ по проекту

Письмо-отчет с результатами работ по проекту

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

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

Техподдержка

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

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

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