Строительство и разработка ПО очень сильно похожи между собой. У каждого из них есть цель по созданию некоторого результата. Есть ограничения по срокам и бюджету. И в каждом случае для достижения результата применяется некоторый подход.
Архитектор проектирует здание, прораб управляет стройкой, а строители, электрики, маляры и другие специалисты шаг за шагом приближают проект к цели. Разные специалисты выполняют разные задачи для достижения единой цели — построить дом. Это и есть процесс.
И в разработке, и в строительстве присутствуют следующие части-кирпичики процесса:
- стадии (крупные этапы)
- направления деятельности (или умным словом дисциплины)
- роли исполнителей, специалистов
- задачи, которые выполняют исполнители
- результаты деятельности (или ещё одним умным словом артефакты)
Смешаем все кирпичи в кучу, чтобы понять, как они работают вместе.
Наша цель — создать продукт, который работает. В заданном объёме, в заданный срок и выделенный бюджет. Чтобы это сделать, нам нужно:
- разбить весь процесс на несколько стадий;
- понять, какие направления деятельности нам нужны на этом проекте и на каждом из его этапов;
- определить, каких специалистов для каждого направления нужно привлечь для выполнения всей необходимой работы;
- на каждом этапе определить набор задач, выполняемых разными специалистами;
- какие результаты мы должны получить от выполнения каждой задачи, чтобы двигаться дальше и достичь цели.
Наша простая рыба процесса разработки готова. Осталось рассмотреть каждый её шаг чуть подробнее.