В этой короткой статье я хочу собрать воедино примеры наиболее популярных техник, которые помогут оценить масштабы проекта, сделать верхнеуровневую оценку по времени и примерно посчитать бюджет. Речь будет идти не о точной, а об индикативной оценке, часто она нужна, когда обсуждается новая инициатива, общие рамки проекта и еще нет формализованных требований.
Итак, ниже перечислю 6 методов оценки сроков и бюджета, сочетание которых позволит быстро взвесить «новый» проект:
1. Экспертная оценка (Expert Judgement)
- Собственно, это формирование оценки с привлечением экспертов в данной требуемой области. Это может быть один гуру, а можно привлечь группу из нескольких носителей экспертизы.
- Эксперты выдвигают свои предположения по поводу оценки (сроков или стоимости). После этого можно усреднить все предложения, а можно постараться прийти к единому решению в ходе дискуссии. Вовлечение экспертов в обсуждение вариантов, конечно более эффективно и даст более точную, аргументированную и протестированную оценку.
2. Метод оценки по 3 точкам (Three Point Estimation)
- Один из самых распространенных и простых методов. В рамках него сначала определяются оптимистичная (O = Optimistic), пессимистичная (P = Pessimistic) и реалистичная\средняя (M = Middle) оценки.
- Значения P, M и O определяются экспертно (в часах, днях, $), например, в ходе обсуждения внутри проектной команды. Для этого задаются вопросы такого типа: «сколько времени займет проект, если все пойдет хорошо, не будет никаких рисков и проблем?», «каким может быть самый негативный сценарий и сколько на него потребуется времени\усилий?» и т.п.
- Далее полученные значения P, M и O подставляются в формулу: (O + 4 M + P) / 6
- Результат расчета дает усредненную оценку. Такая формула позволяет с одной стороны учесть возможные позитивные и негативные сценарии, а с другой – «сгладить» их влияние и получить более реальное значение оценки.
3. Стоимость качества (Cost of Quality)
- Довольно интересная техника, в рамках которой сначала оценивается время или бюджет только на разработку функционала, без учета ошибок и проблем, как если бы у нас сразу получалось идеальное ПО без дефектов. А далее оценивается сколько дополнительного времени и бюджета потребуется потребуется на работу с ошибками и проблемами в реальности, чтобы приблизить ПО к тому самому «идеальному» состоянию.
- При оценке затрат на обеспечение качества ПО можно проанализировать и учесть такие области:
- Расходы на активности по предотвращению дефектов
- Стоимость тестирования
- Исправление внутренних ошибок
- Исправление внешних проблем по интеграции
- Затраты на установку и настройку ПО с учетом реальной среды и данных
4. Оценка по аналогиям (Analogous Estimation)
- В рамках данного подхода мы можем опираться на прошлый опыт решения подобных задач или проектов. Основным шагом тут будет найти возможные аналогии, выделить подобные задачи.
- Чтобы найти знакомые или похожие на предыдущий опыт задачи можно сделать декомпозицию. В статье Agile in IT: 8 методов декомпозиции задач я приводил примеры техник, которые позволяют разбить большой проект на составные части.
5. Оценка по параметрам и моделирование (Parametric Model)
- Это один из самых точных и гибких методов оценки. Его суть в том, чтобы построить некую параметризированную модель-прогноз взяв за основу прошлый опыт, имеющиеся данные и метрики, статистику.
- Фактически строится специальная математическая модель, которая позволяет отслеживать как меняется итоговая оценка в зависимости от исходных параметров. Такую зависимость можно даже визуализировать. Это поможет проанализировать границы отклонения оценки от среднего и увидеть, что на это может повлиять.
6. Оценка от частного к общему (Bottom-up Estimation)
- Данный метод похож на экспертную оценку, только в данном случае прогноз делается не для всего проекта в целом, а отдельно для составляющих его задач. Как это выглядит: мы собираем экспертное мнение, например, у специалистов по анализу, разработке, тестированию, поддержке ПО. Суммируем их оценки вместе, добавляем к ним затраты времени на взаимодействие и формируем общий прогноз.
- Другими словами, мы собираем оценку по частям, узнавая сколько необходимо времени каждому из участников процесса разработки ПО и сводим все воедино с учетом дополнительных рисков.