Лекции по управлению программными проектами

         

Прагматичный подход. Метод PERT


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

Инженерный метод оценки трудоемкости проекта PERT (Program / Project Evaluation and Review Technique) был разработан в 1958 году в ходе проекта по созданию баллистических ракет морского базирования «Поларис». Входом для данного метода оценки служит список элементарных пакетов работ. Для инженерного подхода нет необходимости точно знать закон распределения нашей оценки трудоемкости каждого такого элементарного пакета. Диапазон неопределенности достаточно охарактеризовать тремя оценками:

  • Mi — наиболее вероятная оценка трудозатрат.

  • Oi — минимально возможные трудозатраты на реализацию пакета работ. Ни один риск не реализовался. Быстрее точно не сделаем. Вероятность такого, что мы уложимся в эти затраты, равна 0.

  • Pi — пессимистическая оценка трудозатрат. Все риски реализовались.

    Оценку средней трудоемкости по каждому элементарному пакету можно определить по формуле:

    Ei = (Pi + 4Mi + Oi)/6.

    Для расчета среднеквадратичного отклонения используется формула:

    CKOi = (Pi - Oi)/6.

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

    Е = ∑ Ei

    А среднеквадратичное отклонение для оценки суммарной трудоемкости будет составлять:

    Тогда для оценки суммарной трудоемкости проекта, которую мы не превысим с вероятностью 95%, можно применить формулу:

    E95% = E + 2 * СКО.

    Это значит, что вероятность того, что проект превысит данную оценку трудоемкости составляет всего 5%. А это уже вполне приемлемая оценка, под которой может расписаться профессиональный менеджер.

    Список элементарных пакетов работ, который используется при оценке трудоемкости, как правило, берется из нижнего уровня ИСР проекта.
    Но может быть использован и накопленный опыт аналогичных разработок. Проиллюстрирую данный подход на примере реального проекта. В Ассоциации CBOSS задачей проекта, который нам с коллегами посчастливилось реализовывать, была разработка на основе стандартов J2EE общесистемного ПО для перевода рабочих мест CBOSS на новую трехзвенную архитектуру. Был разработан набор стандартных компонентов и сервисов, из которых как из конструктора можно эффективно и качественно собирать прикладные подсистемы. Высокоуровневая архитектура реализовывала стандартный паттерн MVC (Рисунок 36), каждый из компонентов которого имел «точки расширения» для прикладной разработки, которые на рисунке выделены красным светом.



    Рисунок 36. Высокоуровневая архитектура J2EE фреймворка для разработки приложений.

    Такими точками расширения являлись:




    • Пользовательский экран (UI Form), который собирался из готовых визуальных компонентов.
    • Обработчики (Action), которые обрабатывали на сервере приложений события от активных визуальных компонентов, входящих в состав экрана.
    • Объекты (Business Obj), которые моделировали прикладную область, и к которым обращались обработчики событий.


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

    Согласно этой статистике, разработка и отладка требовала у программиста:


    • для одного экрана — от 2 до 20 часов (наиболее вероятно — 4 часа);
    • для одного обработчика событий — от 4 до 32 часов (наиболее вероятно — 8 часов);
    • для нового бизнес-объекта — от 2 до 8 часов (наиболее вероятно — 3 часа);
    • для добавления нового бизнес-метода — от 2 до 26 часов (наиболее вероятно — 6 часов).


    Весь проект прикладной разработки измерялся в «попугаях»:


    • КUI — количество пользовательских экранов.
    • KAct — количество обработчиков событий.
    • КBO — количество новых бизнес-объектов.
    • KBM — количество новых или модифицируемых бизнес-методов.




    Если новое разрабатываемое приложение содержит 20 пользовательских экранов, 60 обработчиков событий, 16 новых бизнес-объекта и 40 новых бизнес-методов, которые необходимо добавить, как в новые, так и в уже существующие бизнес-объекты, тогда, согласно нашей статистике,

    ЕUI = (2 + 4*4 + 20) / 6 = 6.7 чел.*час.,

    ЕAct = (4 + 4*8 + 32) / 6 = 11.3 чел.*час.,

    ЕBO = (2 +4*3 + 8) / 6 = 3.7 чел.*час.,

    EBM = (2 + 4*6 + 26) / 6 = 8.7 чел.*час.,
    СКОUI = (20 - 2) / 6 = 3 чел.*час

    СКОAct = (32 - 4) / 6 = 4.7 чел.*час

    CKOBO = (8 - 2) / 6 = 1 чел.*час

    СКОBM = (26 - 2) / 6 = 4 чел.*час
    Для средней трудоемкости работ по кодированию в проекте может быть получена следующая оценка:



    Тогда для оценки суммарной трудоемкости проекта, которую мы не превысим с вероятностью 95%, получим

    Е95% = 1220 + 2 *46 ≈ 1300 чел.*час.

    Хотя относительная погрешность в оценке трудоемкости каждой такой элементарной работы составляла десятки процентов, для нашего проекта, в котором было таких «попугаев» было 136, относительная погрешность оценки суммарной трудоемкости, сделанной по методу PERT, составила, приблизительно, лишь 4%.

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

    Полученную оценку трудоемкости кодирования необходимо умножить на четыре, поскольку помним (см. ), что кодирование составляет только 25% общих трудозатрат проекта. Поэтому суммарная трудоемкость нашего проекта составит, приблизительно, 5200 чел.*час.

    Как мы уже говорили ранее, если сотрудник на 100% назначен на проект, это, как правило, не означает, что он все 40 часов в неделю будет тратить на проектные работы.


    Тратить он будет 60–80% своего рабочего времени. Поэтому, в месяц сотрудник будет работать по проекту, примерно, 165 * 0.8 = 132 чел.*час/мес. Следовательно, трудоемкость проекта в человеко-месяцах составит, приблизительно 5200 / 132 ≈ 40.

    Тогда согласно формуле Б.Боэма (Рисунок 15) оптимальная продолжительность проекта составит:

    T = 2.5 * (40)1/3 = 8.5 месяцев,

    а средняя численность команды — 5 человек.

    Помним, что потребление ресурсов в проекте неравномерно (Рисунок 13), поэтому начинать проект должны 1–3 человека, а на стадии реализации начальная численность команды может быть увеличена в несколько раз.

    Если же собственный опыт аналогичных проектов отсутствует, а коллеги-эксперты недоступны, то нам не остается ничего другого, как использовать формальные методики, основанные на обобщенном отраслевом опыте. Среди них наибольшее распространение получили два подхода:


    • FPA IFPUG — метод функциональных точек,
    • метод COCOMO II, Constructive Cost Model.



    Содержание раздела