В комментариях к предыдущей статье "О чем молчит диаграмма Ганта или почему проекты всегда опаздывают" накидали ссылок на видео и слайдкасты, описывающие и другие причины вызывающие ошибки при использовании диаграмм Ганта. Наибольшее обсуждение и недопонимание вызвало выпрямление сроков обусловленное несимметричностью распределения срока решения задачи. Под катом пример влияния на срок окончания проекта этого самого несимметричного распределения.
Перед тем как начать, напомню, что в рамках приводимых примеров, используемые значения математического ожидания взяты из некоторого предыдущего опыта и являются объективными. Приводимые примеры призваны продемонстрировать, что опираясь при построении диаграммы Ганта только на математическое ожидание времени завершения одиночной задачи, мы будем попадать в просак.
Рассмотрим пример, в рамках которого математическое ожидание времени решения задачи составляет 3 часа. Вполне понятно, что есть некоторое время быстрее которого мы решить задачу не сможем. Нам нужно прочитать задачу, посмотреть связанные задачи, обсудить некие вопросы с аналитиком или архитектором, открыть IDE, загрузить проект, внести изменения в код, сбилдить, запустить, проверить что все работает как ожидалось и т.д. Допустим, быстрее чем за 30 минут мы решить задачу не сможем. Но, с другой стороны, при возникновении проблем с компьютером (маловероятно, но все же), при обнаружении попутного бага, при отсутствии на месте сотрудника с которым нужно согласовать решение задачи, срок может увеличится и до 6, а то и до 9 часов. В результате мы получим плотность распределения вероятностей вида (по оси ординат время на решение задачи):
![](http://habr.habrastorage.org/post_images/161/4f9/d17/1614f9d17ecbba7b27d0b746f039f74c.png)
А это уже не нормальное распределение. Я, для этой статьи, взял гамма распределение, есть еще и другие, например, распределение Максвелла, бетта-распределение и т.д.
Отлично, как я уже сказал, математическое ожидание времени решения задачи равно трем часам. Диаграмма Ганта для пяти последовательно выполняемых задач будет иметь вид:
![](http://habr.habrastorage.org/post_images/f56/3b9/250/f563b92505f0c9d0efa8edb7f8d331c2.png)
Теперь вернемся к гамма распределению и проведем расчет или (как сделал я, уж очень люблю программирование) моделирование вероятности завершения всех этапов в заданный час.
![](http://habr.habrastorage.org/post_images/223/8a0/27f/2238a027f15a1feea006fca791bb71a2.png)
Первая новость является радостной, плотность распределения вероятности приняла вид нормального распределения, но вот все остальное… Для того чтобы это остальное понять, строим вероятность завершения к заданному часу:
![](http://habr.habrastorage.org/post_images/fa5/2b9/8f2/fa52b98f20550511e6511224297987f1.png)
Вероятность завершить к запланированному 15 часу составляет всего 20%. Для достижения вероятности в 90% необходимо время завершения сдвинуть на 7 часов (что составляет 50% от исходного времени). И то, в случае оставшихся 10% мы будем не укладываться, а с вероятностью 5% мы завершим эти пять задач через 9 часов.
Еще одна печальная новость заключается в том, что даже применение популярной в последнее время методики трех оценок, ситуацию сильно не выправляет.
Если не помните, то основная идея метода трех оценок заключается в том, что берется пессимистический прогноз, оптимистический прогноз и математическое ожидание. В этом случае, срок завершения задачи определяется по формуле:
![](http://habr.habrastorage.org/post_images/ff4/5b6/d60/ff45b6d602032e5e84cb697907af521e.png)
Для нашего случая, если мы возьмем для одной задачи в качестве оптимистического прогноза вероятность 30%, для пессимистического – 95%, а для наиболее ожидаемого –50%, то исходя из графика вероятности завершить одну задачу к заданному часу:
![](http://habr.habrastorage.org/post_images/c62/d8e/c31/c62d8ec31e55d58de16f975a3fb18c79.png)
Получим что:
![](http://habr.habrastorage.org/post_images/9b2/49d/2ab/9b249d2ab59d6341e51edfd67c857d85.png)
Умножает 3,7 часа, на 5 этапов и получаем 18,5 часов. Это уже значительно лучше, мы будем укладываться в этот срок с вероятность 75%. А в четверти случаев продолжим сроки срывать.
Перед тем как начать, напомню, что в рамках приводимых примеров, используемые значения математического ожидания взяты из некоторого предыдущего опыта и являются объективными. Приводимые примеры призваны продемонстрировать, что опираясь при построении диаграммы Ганта только на математическое ожидание времени завершения одиночной задачи, мы будем попадать в просак.
Рассмотрим пример, в рамках которого математическое ожидание времени решения задачи составляет 3 часа. Вполне понятно, что есть некоторое время быстрее которого мы решить задачу не сможем. Нам нужно прочитать задачу, посмотреть связанные задачи, обсудить некие вопросы с аналитиком или архитектором, открыть IDE, загрузить проект, внести изменения в код, сбилдить, запустить, проверить что все работает как ожидалось и т.д. Допустим, быстрее чем за 30 минут мы решить задачу не сможем. Но, с другой стороны, при возникновении проблем с компьютером (маловероятно, но все же), при обнаружении попутного бага, при отсутствии на месте сотрудника с которым нужно согласовать решение задачи, срок может увеличится и до 6, а то и до 9 часов. В результате мы получим плотность распределения вероятностей вида (по оси ординат время на решение задачи):
![](http://habr.habrastorage.org/post_images/161/4f9/d17/1614f9d17ecbba7b27d0b746f039f74c.png)
А это уже не нормальное распределение. Я, для этой статьи, взял гамма распределение, есть еще и другие, например, распределение Максвелла, бетта-распределение и т.д.
Отлично, как я уже сказал, математическое ожидание времени решения задачи равно трем часам. Диаграмма Ганта для пяти последовательно выполняемых задач будет иметь вид:
![](http://habr.habrastorage.org/post_images/f56/3b9/250/f563b92505f0c9d0efa8edb7f8d331c2.png)
Теперь вернемся к гамма распределению и проведем расчет или (как сделал я, уж очень люблю программирование) моделирование вероятности завершения всех этапов в заданный час.
![](http://habr.habrastorage.org/post_images/223/8a0/27f/2238a027f15a1feea006fca791bb71a2.png)
Первая новость является радостной, плотность распределения вероятности приняла вид нормального распределения, но вот все остальное… Для того чтобы это остальное понять, строим вероятность завершения к заданному часу:
![](http://habr.habrastorage.org/post_images/fa5/2b9/8f2/fa52b98f20550511e6511224297987f1.png)
Вероятность завершить к запланированному 15 часу составляет всего 20%. Для достижения вероятности в 90% необходимо время завершения сдвинуть на 7 часов (что составляет 50% от исходного времени). И то, в случае оставшихся 10% мы будем не укладываться, а с вероятностью 5% мы завершим эти пять задач через 9 часов.
Еще одна печальная новость заключается в том, что даже применение популярной в последнее время методики трех оценок, ситуацию сильно не выправляет.
Если не помните, то основная идея метода трех оценок заключается в том, что берется пессимистический прогноз, оптимистический прогноз и математическое ожидание. В этом случае, срок завершения задачи определяется по формуле:
![](http://habr.habrastorage.org/post_images/ff4/5b6/d60/ff45b6d602032e5e84cb697907af521e.png)
Для нашего случая, если мы возьмем для одной задачи в качестве оптимистического прогноза вероятность 30%, для пессимистического – 95%, а для наиболее ожидаемого –50%, то исходя из графика вероятности завершить одну задачу к заданному часу:
![](http://habr.habrastorage.org/post_images/c62/d8e/c31/c62d8ec31e55d58de16f975a3fb18c79.png)
Получим что:
![](http://habr.habrastorage.org/post_images/9b2/49d/2ab/9b249d2ab59d6341e51edfd67c857d85.png)
Умножает 3,7 часа, на 5 этапов и получаем 18,5 часов. Это уже значительно лучше, мы будем укладываться в этот срок с вероятность 75%. А в четверти случаев продолжим сроки срывать.
Ссылки на материалы из комментариев у предыдущей статье:
1. Пуассоновское горение сроков
2. Человеческое и математическое выпрямление сроков
ссылка на оригинал статьи http://habrahabr.ru/post/206510/
Добавить комментарий