Share via


Оценки софтверных проектов или равно ли целое сумме слагаемых?

? ???? ?????? ? ????????? ?????????? ? ?????, ??????? ?? ??? ????? ?????. ?????? ? ????????? ? ??? ??????????.

???? ?? ?? ??????? ? ?????????? ?????????, ?? ?? ? ?????, ??? ??????????? ????? ???????? ??????????? ? ????, ????? ??? ???????? ????? ???????????? ?????? ???????, ??????... ?????? ?????? ?? ??? ??????, ? ?? ?????-?????? ?????? ????????. ??? ?????????? ???????? ?? ??????, ??????? ??????? ?????? ??? ?? ????????? ???? ? ?? ????, ?????? ??????? ??? ?? ?????? ???????, ?? ?????? ?? ? ???, ??? ??????????????? ?????? ?? ????? ?????? ???? ??????? ?? ??????? ? ????????? ?? ????, ???? ?? ?????? ?????????...

??? ?????? ??????????? ????? ??? ????????? ??? ?????, ??? ??????? ????? ??????? ????? ???????????? ??????????, ??????? ?? ??????????? ?? ????? ?????? ?????, ? ????? ??? ?????? ????? ???????????? ??????, ????????, ? ?????-?????? Gantt ???????? ??? ?????? ?? ????????? ??? Excel'?.

??????? ? ?? ????? ?????????? ? ???? ????????? ???????? ??????????????, ??????? ????? ? ?????? ???? ????????.

??? ??????, ? ??? ????? ?????? ??????? ??????? ??? ??? ???? ????????

???-???, ? ???????, ??? ? ????????? ???????????, ?? ??? ????????? ?????? ?????????? ????? ??????????? ???????, ?????? ? ??????? ?? ????????? ??????? ??? ?? ? ?????? ????? ????????????, ??? ???? ??????? business tenets (?? ????, ??? ??? ????? ???????????, ??, ???-?? ????? ?????????? ??????? ???????? ????????? ?????????? – ?? ??? ? ??? ?????? ??? ???????????? ????????). ? ?????, ??? ????????, ??? ??? ??????, ?? ???? ??????????? ?????? ???? «good enough!» ?? ???? ????? ??????.

??, ????? ????????? ??? ??????? – ??? ???????. ?? ??-?? ?? ?????????, ?? ????????, ???????. ?? ?????, ??? «good enough» - ??? ????? ?????? ?????????. ? ????? ???? ?????? ?????????? ??????????, ??????? ?????? ???? ?????????? ? ??????. ?? ???? ??????? ???-?? ???????? ??? ????, ????? ??????? ?????? «good enough» ??? ???-???? ?? «good enough». ? ????? ??????? ????? ????-?? ????????, ?? ????????? ????? ??????? ????? – ??????????. ??????? ??? ??????, ??? ????????? ??????? ? ?????????? ??, ??? ??? ? ??? ??????, ?? ??? ? ????? ???????????...

????, ? ??? ????? ?????? ? ??????????, ?????? ? ????????????? ? ?????? ????????????. ? ??? ????????, ? ??????? ???????? ????????? ????????? ???????? ? ???????? ????????????. ????????? ???????? – ??? ??????? ??????? ?????? ?????? ??? ??? ????????? ??? ???????. ????? ?? ??? ????, ??? ?????? ????????, ??? ?????? ? ??? ?????? ? ???????? ?????????????

?????????? ??????? ? ????????? ? ???????, «? ???????????? 80 ????????? ???? ?????? ???????? ? ?????.» ??? ?? ??? ???????

???, ?? ??? ????????????? ?????? ???????????? ?????? ?????. ????? ?? «?????????», ? ??? ??????? ?? ??? ??????????? ??????????? ???? ???????? ?????-?????? ?????????? ?????????????, ??, ??????, ?????????????? ??? ???????????-????????. ????? ????????, ??????????? ????????? ? ??????? 100 ?????????? ?????????, ???, ???? ???????? ????? ??????????????? ??????, ?? ????????????? ??? ?????? ?????????????. ??, ??? ???????????, ???? ?? ??????? ?????? ?????? ???????. ????? ?????? ????? ???? ???????. ? ??????? ?????????, ??????? ????????? ??????? ??????? ??????, ???? ???? ??????? ??????, ? ? ?????? – ??????????? ??????, ?? ???-???? ?? ??? ????? ???????? ?? ?? ????? ????.

?? ????, volens-nolens ? ??? ?????? ??????, ??????? ????? ????????? ??? ???? ????????, ???? ?? ???? ??? ????? ???????? ??? ??????????? ???????????, ?????????, ????????? ???? ?????????...

????, ?????? ??????? ??? ???? ??????? – ??? ???????? ??????? ? ??????? ?? ???????? ? ?????????? ??? ??? ????????????. ??? ????? ???????, ? ?????????? ??? ??? ?????? ?? ?????????.

????????, ?? ??????? ? ???????? ???????? 80 ????????? (?????????????? ? ?????? ?? ????????? 20 ?????????). ??, ? ????, ?????? ?????? ??????????, ?? ???????? ?? ?????????????? ?? ??????????? ???????? ? ???? ????????? ????????, ??? ???? 80 ????????? ??? ??????????? ????????? ??????. ? ????? ????? ????????? ???????? ?????? ????????????? ?? ??????? ???? ? ???????-??? ????.

????, ? ??? ???? ??????, ? ??? ??? ????. ?? ???????, ??? ?????? ??? ?????? ??? ? ????????? ??? ? ???????????? 80 ?????????. ???????? ?? ???, ??? ???? ?????? ?????? ?????? ? ??? ?? ???????????? 80 ?????????? ???? ?? ???? ??????? ??????? ?? ????????, ?? ?? ??? ????????, ??? ???, ??????????? ????? ?????? ??????, ?? ????? ??? ?? ??????????? ????? ???????????? ?????????????, ??????? ? ??????? ?????? ?? ?????????.

?????????? ???? ?? ???????, ??????, ??????????? ?????????????. ??????? ????? ???????????? ????? – ??? ?? ????? ????? ??????? ?????????? ? ???????????? 80 ?????????. ?? ???????? ???????? ?????????? ????? ? ?????? ?? ???? ? ?? ?? ???????? t0, ? ??????????? ??????? ?????????? ?????????????? ??????????? ?????? ??????????. ??? ??????, ??????????? ??????? ??????????? ?????? ??? ???????, ?? ???? ??????? ?? ?????-?? ????????????? ????? ??????????? ?????, ??? ???????? ?????? ?? ?? ?? ????????????? ?????. ????, ? ?????, ?? ? ???? ?????????? ?? ?????????? ?????????, ??????

??? ???????? ??????????? ????????????? ??? ?????? ???? ??????? – ??????????????, ??????? ????? ?? ?? ?????. ??? ? ?????? ??? ??????????? ????????????? ? ????? ?????????????. ? ??? ????????, ??? ???? ?? ???? ?????? ???? ????? ??????? ? ???????????? ? 80 ????????? ??? t1 ? t2, ?? t1 + t2 ????? ?? ????? ??????? ????? ??????? ? ???????????? 80 ?????????.

???? ?? ???????? ?????? ???????????? ??????????, ??????? ????? ???????? ?? ?????? ???? ????? ?????????. ? ?????? ?? ??? ??????? ??????? ?????? ?????? ??????????? ?????? ??, ??????? ??????, ?? ??? ?????????, ???????????? ????? ????????. ???? ???? ???? ?? ? ????????? ??????, ?????? ????? ?? ??????????? ??????????? ?????????????? ????? ?? ??, ????? ??? ?????????, ?????????????, ????????? ?????? ???, ?????? ??????????, ??????? ???????? ???????????????? ? ?????????, ??????????? ?????? ?????, ?? ???? ?????? ???????: «????? ?????? ???????? ??? ?????????? ?? ??? ?????.»

? ???? ????????? ??? ?????????? ??? ????? ???????. ?????????, ???? ?? ??????, ??? ?????? ?????? ???????????????? ?? ????????, ?? ????? ?????? ??-???????? ???? ? t1 + t2 ????, ????? ??? ?????? ??????????? ?? ??????????????? ?????, ???????, ? ???????, ??????????? ? ???????????? 80 ?????????. ?????? ???? ???????? ???????? ??????? ?? ?????????? ? ????????? ?????? ??????????? ????? ??????? ????????? ?? ?????, ??????????? ? Project ??? ??? ??? ????? ????????:

P( T1 & T2 ) = P(T1)*P(T2) = 0.8*0.8 = 0.64

?? ????, ???? ?? ??????? ?????? ????? ?? ??? ?????, ??????? ?????? ? 80 ?????????? ???????????, ?? ????? ????? «??????????» ????? ???? ? 64 ????????! ?????????? ? ???????? ????????? ???????, ??? ????????? ???? ?????? ??????? ?? ?????? ?????? ???????????? ???. ???? ?????? ?????? ?????????. ???? ???? ?? ???????? ? ????????? ?????? ??????? ???? ? 90 ?????????, ????? ?????? ??????? ?? ?????? ????? ????? ????? 35 ?????????.

??????, ?????? ??????? ?????? ???????? ? ????? Evidence Based Scheduling (https://www.joelonsoftware.com/items/2007/10/26.html) ?????????? ?? ???, ????? ?????? ?? ??????????, ? ???????? ?? ?????? ????? ??????? ?????-?????.

???????, ????? ????????, ??? ???????? ????????? ?????? ????? ?????? ?????? ?? ???????? ?????? ??????. ??? ????????? ?????? ????? ? 80 ?? 90 ????????? ???????? ?????? ??????? ?? ?????? ????? ? 10 ?? 35 ?????????. ?? ??????? ?? ??????, ? 35 ????????? ??? ???????? ? ??? ????? ?? ??????? ??????? ????? ?? ?????? ?????? ? ??? ? ?????? ????? ???? ????? ?????????????????? ?????? ????? ? 99 ?????????? ??????????? ??? ??????? ???? ????? ??? ? ????? ?????? 40 ????????? ?????? ??? ????? ???????. ??? ??????? 40 ????????? ? ??? ?? ??????? ????????? ??????????? ?????? ???? ??? ?? ????? ? ??? ???? ?? ????????? ????? ???? ?? ????????? ????? ?????? ????????????

???????, ?????????????? ???? ???? ????????, ??? ????? «???????????» ?????? ?? ????? ?????????? ?????? ??? ????? ?? ??????????? ????. ?? ?? ?????????, ??? ???? ?? ??????????? ???? ??????? (?????) ??????????, ?? ? ??? ??????????? ????????? ???????? ????? ??? ????? ????????? ?? ??????????? ????. ??? ??? ???????? ????? ? ?? ??? ?????, ??? ? ???????? ????, ?? ? ??? ??? ?????? ??? ???????? ??. ???????, ??? ?? ???? ? ??? ??????... :-)

???????, ?????? ????? ???????????? ??????, ? ??? ?? ??????? ?? ??????, ???-??? ?????. ?? ??? ??? ??????? ??? ????????? ??????, ? ?? ?????.

? ?? ?????? ????????? ????? ??? «i», ??????, ??? ? ??????? ??????? ? ???? ??????:

1. ?????? – ??? ?? ??, ????? ?????? ????? ??????. ??? ????? ? ??????? ?? ???????? ? ???????? ???????????? . ???? ???? ???????? ??? ??????? ????? ?? ?????, ??? ??? ????? ???? ? ??????? ?? ????????? ???????? ? ????????????? ????????? ? ?????????.

2. ?????????? ?????? ?? ??????? ??????? ?????? ? ?????? ???????, ????????? ?????? ????????? ?????, ?????? ????????, ???????? ??? ?????????????? ????.

3. ???? ????????? ?????? ? ??????? ?????????????? ????? ????? ??????????? ??????? ?????????? ?????? ????? ???????.

4. ? ??? ??????, ??????????? ?? ???????? ??????, ? Microsoft Project – ????????? ???????????.

5. ?, ??, ??? ????: ?? ??????? ???? ??????. ? ??? ????? ? ?? ?????? ???????.

Comments

  • Anonymous
    January 01, 2003
    Дракон: вот-вот. Кстати, я и не говорил, что сам все придумал, если обратить внимание на первую фразу статьи :-) Пользователь: прочитайте комментарии выше. И статью повнимательнее. Там это все уже есть.

  • Anonymous
    January 01, 2003
    Лапуля: согласен. С одной поправкой: где ж такого менеджера найти, чтобы все это понимал, да еще на интервью мог представить себя лучше чем паразит с MBA (или без нее)?

  • Anonymous
    January 01, 2003
    Вот и мне тоже так подумалось :-)

  • Anonymous
    January 01, 2003
    Александр: ваш комментарий выдержан в стиле невежливого пуриста. Там прямо сказано, что мы отвлекаемся от математической модели. Бури: ну, теперь я поведу себя как пурист. Для начала, это не совсем нормальное распределение. В общем, в один параграф не засунешь. Почему я и отложил это на потом. Впрочем, если вы, господа, такие грамотные, может я вообще зря об этом писал? Присоединяюсь к Жене и NVoynov в рекомендации упомянутых ими книг. Алекс: увы, согласен. Без квалифицированных кадров тяжело. Причем как без квалифицированных кадров программистов, так и без квалифицированных кадров менеджеров, которые способны найти, нанять и направить квалифицированных программистов, а не компанию идиотов.

  • Anonymous
    January 01, 2003
    The comment has been removed

  • Anonymous
    January 01, 2003
    The comment has been removed

  • Anonymous
    January 01, 2003
    Вот возьму, и не признаю! И пусть мир перевернется! Опять же читателям развлечение - понять где комментатор неправ обычно очень помогает пониманию материала.

  • Anonymous
    November 14, 2007
    Ну а кто будет писать как правильно рассчитать срок проекта???!!! Я уж думал, это-то тебе известно! Обычно считается, что имеется нормальное распределение. Высчитывается двойное стандартное отклонение суммарной вероятности (95%). Вводятся временные лаги между задачками (на критических путях), чтобы добавки получались в сумме равными двойному стандартному отклонению. В результате имеем не 10% и не 35%, а 95%-ую вероятность. Это сложно?

  • Anonymous
    November 14, 2007
    Лучше для каждого из шагов делать две оценки - пессиместичную и оптимистичную. При этом оптимистичную обычно получаешь от разработчика, а пессимистичную выводишь уже сам добавлением (или умножением на коэффициент) на основе опыта рабты с этим разработчиком. Для оценки проекта получаешь три оценки:

  1. Оптимистичную - просто сумма всех оптимистичных оценок
  2. Реальную - или сумма пессимистических оценок по компонентом или применение хитрых правил с вероятностями (как в этой статье) к оптимистическим оценкам
  3. Пессимистическую - применение правил ко всем пессимистическим оценкам компонент Но вот какие правила выбирать, это вопрос...
  • Anonymous
    November 14, 2007
    а как быть с национальными проектами типа "Электронная кубань" которые запущены в реализацию на 5 лет и уже 2 года идут, а квалифицированных кадров нет.... а бюджет есть и расходуется )))

  • Anonymous
    November 14, 2007
    Выводы в целом разумны, за исключением взятого из ниоткуда второго, а обоснование - чистейшее жульничество - скачок от статистической модели к промежуточным высказываниям, никак с оной моделью не только не связанным, но принципиально ей противоречащим - "Чтоб не морочить голову абстрактными проблемами, давайте также взглянем на вопрос чуть более практично. А бывает ли что человек кончает работу раньше выделенного срока? Ну, изредка бывает, но как говорится, пренебрежимо малая величина" /читай 0.79 (вероятность что срок меньше заданного в модели) = НОЛЬ - блестящий арифметический экзерсис!/. -  а от них опять к чему статистикоподобному - иначе не назовешь... Для заморачивания головы боссу, про мать-статистику чтой-то некогда слыхивавшему - может и сойдет.

  • Anonymous
    November 14, 2007
    The comment has been removed

  • Anonymous
    November 14, 2007
    Я как раз читаю книгу "Сколько стоит программный проект" (Software Estimation: Demystifying the Black Art, Steve McConnel). Только вчера читал главу, где написано о том же самом. :)

  • Anonymous
    November 14, 2007
    Именно по этому, при планировании занимаются не только календарным расписанием, а такими мощными инструментами менеджера как: управление рисками, управление содержанием, управление качеством. Кроме того, хороший менеджер в своих проектах хорошо знает насколько уникален данный проект (не продукт) и делает свои оценки не только на основании оценки снизу вверх и экспертной (а это уже как минимум две оценки, естественно, если вы не совмещаете в одном лице и исполнителя, и эксперта), но и на оценках (многих) по аналогам (таким образом, мы имеем уже три оценки) + к этому (если есть доступ) оценки эксперта в проекте аналоге. Если же проект (и как следствие, как правило, продукт) уникален, то уже изначально приемлемые риски могут составить до 50% (а иногда и много более, если кто не знает, как делали Луноход - 1, ну например шасси возьмем, очень рекомендую узнать), а ведь сюда еще не входит ни ошибка оценки вероятности успеха эксперта, ни сама его оценка (речь как раз о тех 80%). По сему, хочу подытожить, что дела не так плохи как кажется, но и не настолько легки, чтобы расслабиться (не боги горшки обжигают).

  • Anonymous
    November 15, 2007
    Поддерживаю Бури. Если просто перемножить вероятности, то это будет вероятность того что одновременно произойдут оба события. Однако в своем примере вы забыли прибавить вероятность того, что первая задача выполнится раньше срока а вторая на это же время опоздает (16%), и наоборот (еще 16%), в итоге получаем суммарную вероятность "уложиться в указанную дату" равную не 64%, а 96%, т.е. выше чем у отдельных задач. И выводы ваши в корне не верны.

  1. Оценка - это мат. ожидание даты завершения проекта. Естественно у этой случайно распределённой величины есть дисперсия. Но поскольку эта оценка является суммой других случайно распределённых величин (длительностей выполнения отдельных задач), её дисперсия уменьшается при росте количества задач.
  2. Менеджмент не вносит больше ошибок складывая оценки. Если оценка инженера - это мат. ожидание выполнения задачи (т.е. он не склонен систематически недооценивать задачу), то суммарная оценка более точна, чем оценка инженера.
  3. Ошибки в оценках отдельных задач не играют существенной роли. Важно чтобы задач было много, а значит и оценок. Про дисперсию см. выше. Поэтому от инженеров и не требую высокой точности оценок. +-30% от времени - это хорошо. В конечной длительности проекта это превратится в +-2%. Сейчас вы скажете - а почему проекты срываются по сроком в 2-3 раза? Отвечу - совсем по другим причинам  :). Потому что выполняются задачи которые даже не планировались и не оценивались :). Если выполнять только запланированные задачи, то погрешность (при большом числе задач) будет именно такой - 2-3%.
  4. Тут да, не поспоришь :)
  5. Что вы имеете против модных методик? :)
  • Anonymous
    November 15, 2007
    > А в целом, посмотрите на комментарии, и посоветуйте, а что мне делать? А можно я? :-)  Мне кажется, серия не слишком длинных статей будет наиболее удачным решением.  Придираться-то (или спорить?) все равно будут, думаю, в случае длинной статьи даже больше (с мясом будут рвать цитаты и к ним придираться), а читать серию таки проще.

  • Anonymous
    November 16, 2007
    Том де Марко. Вальсируя с медведями. Рекомендацию на книгу давали. Выдержки давали. А вот и полный текст http://lib.aldebaran.ru/author/demarko_tom/demarko_tom_valsiruya_s_medvedyami/demarko_tom_valsiruya_s_medvedyami__0.html Хотя есть у меня впечатление, что автор поста и так эту книгу читал. Потому как уж слишком идея-картинка похожая.

  • Anonymous
    November 16, 2007
    Произведение вероятностей неуспеть в каждой конкретной подзадаче даёт вероятность того, что из общего проекта хотя бы одна из подзадач не вложится в срок.

  • Anonymous
    November 16, 2007
    Только что в предыдущем комментарии такую фигню написал, что боюсь она не пройдет модерацию. Произведение вероятностей того, что каждая подзадача вложится в срок даёт вероятность того, что все подзадачи вложатся в срок. Если такого не произойдет, это вовсе не значит что проект не вложится в срок. Теоретически какие-то подзадачи могут закончиться раньше, а какие-то позже, и при этом весь проект вложится в срок. На практике, это зависит от того, как организовано управление проектом.

  • Anonymous
    July 02, 2008
    Всё написано классно, но математическая подоплека - ошибка на ошибке.  Ну что такого страшного пройтись еще раз по тексту, погуглить и поправить?  Площади на твоем графике означают примерно следующее: "английские ученые опросили 1000 респондентов и выявили, что в среднем проект длится 1 год (максимум колокола).  Синей полосой отмечен срок в 1 год 4 месяца.  Как видно, проектов со сроками от 1 года и 2 месяца до 1 года и 4 месяца несколько больше, чем тех, что от 1 года и 4 месяца до 1 года и 6ти месяцев.  Это означает, что ваш проект скорее попадет в зеленую зону, чем в красную." Потом про сложение и умножение - ну представь: проект разбивается на N частей, на каждую из которых программист дает оценку в 1 месяц.  Напишем программку, которая будет генерировать отрезки времени длиной 1 +- отклонение в 20%.  Какова в среднем будет сумма отрезков?  Или так: какой длины отрезки будут встречаться чаще всего?  Очевидно, что если распределение нормальное, то чаще всего будут даваться точные оценки в N месяцев, затем менее часто те, которые около того, и уж совсем редко будут встречаться сильные отклонения.   Что если отбросить вариант, когда было потрачено меньше месяца?  Добавим в программку if: если случайный генератор реальных сроков выдал срок меньше месяца, установим его равным месяцу.  Какой длины отрезки теперь встречаются чаще всего?  Ну, очевидно, что шансы точных оценок многократно выросли - теперь все проекты, которые длились меньше N (а их половина), стали длиться N месяцев.  Конечно, правый хвост распределения подрос и теперь шансы затянуть проект тоже возросли - ну и понятно: ведь шансов окончить раньше не осталось.   Если не убедил - попробуй напиши такую программку и посмотри сам.  Например, я никак не мог поверить в парадокс Монти-Холла (http://ru.wikipedia.org/wiki/%D0%9F%D0%B0%D1%80%D0%B0%D0%B4%D0%BE%D0%BA%D1%81_%D0%9C%D0%BE%D0%BD%D1%82%D0%B8_%D0%A5%D0%BE%D0%BB%D0%BB%D0%B0), пока не написал программку.