Рассмотрим классический период разработки ПО.
1. Формируются и анализируются требования к проекту. Этот этап самый важный, так как неправильное формулирование требований приводит к выполнению ненужной работы, а недооценка сложности вызывает перерасход средств и времени. Сегодня около 60 % крупных проектов завершаются неудачей именно из-за ошибок на стадии подготовки требований.
После согласования требований подписывается контракт на разработку ПО. В дальнейшем любые отклонения от сформулированных требований к продукту (как со стороны заказчика, так и со стороны исполнителя) рассматриваются как нарушение контракта.
2. Начинается предпроектное обследование объекта автоматизации. На этом этапе привлекаются специалисты заказчика и эксперты, хорошо знакомые с предметной областью, для которой составляется задача.
Примерный объем работ второго этапа до 10 % от общего.
3. На основе формальной модели составляется подробное техническое задание для программистов, спецификации отдельных модулей, таблицы баз данных, другая сопроводительная документация. Готовится подробный календарный план работ, где указываются все сроки, конкретные исполнители и выполняемые объемы работ (понедельно, помесячно).
Примерный объем работ третьего этапа до 10 % от общего.
4. Выбирается методология разработки ПО и начинается разработка (кодирование). Достаточно популярна методология итерационного проектирования. Она позволяет быстро создать первый работающий прототип программы, когда еще требования к ней окончательно не определены, а в дальнейшем, на следующих итерациях (их обычно требуется от двух до пяти), постепенно детализировать и реализовывать конкретные возможности, пропущенные по каким-то причинам на предыдущей итерации.
В процессе разработки необходимо:
• непрерывно поддерживать обратную связь с заказчиком, чтобы следить за правильностью реализации требований;
• непрерывно контролировать ход работ в соответствии с планом и при отклонениях от него принимать экстренные меры.
Примерный объем этих работ до 10 % от общего объема проекта.
5. Когда программа закончена (готова работоспособная альфа-версия), она поступает к тестерам компании-исполнителя, которые проверяют ее на наличие ошибок и сообщать о найденных ошибках программистам. Анализируется, в частности, устойчивость работы программы при вводе недопустимых или критических значений, при отсутствии информации, при неверных действиях, при сбоях аппаратуры, в стрессовых режимах и т. п. Когда число ошибок, выявляемых за определенный срок (неделя, месяц), снижается ниже экспериментально подобранного уровня (на основе аналогичных проектов), начинается бета-тестирование программы у заказчика.
Примерный объем этих работ до 10 % от общего объема проекта.
6. После того как заказчик удовлетворен качеством продукта, начинается его внедрение — подготовка к окончательному запуску в эксплуатацию. Этот этап самый трудоемкий и «нудный» и занимает порой до 90 % времени всего проекта. Для систем автоматизации больших предприятий он растягивается на годы.
7. После того как новая система готова к работе, сотрудников организации заказчика нужно обучить работе с этой системой. Примерный объем трудозатрат на обучение — 5 % от общего объема проекта.
8. После того как заказчик подписывает акт приемки, проект считается завершенным, но связь с исполнителем не теряется. Неизбежно и возникновение ошибок, которые требуется устранять. Сотрудничество с заказчиком по обслуживанию системы называется сопровождением.
Реально объем непосредственного программирования и отладки (тестирования) в цикле разработки обычно составляет 10-20 % от общего объема работ.