Оценки софтверных проектов или равно ли целое сумме слагаемых?
? ???? ?????? ? ????????? ?????????? ? ?????, ??????? ?? ??? ????? ?????. ?????? ? ????????? ? ??? ??????????.
???? ?? ?? ??????? ? ?????????? ?????????, ?? ?? ? ?????, ??? ??????????? ????? ???????? ??????????? ? ????, ????? ??? ???????? ????? ???????????? ?????? ???????, ??????... ?????? ?????? ?? ??? ??????, ? ?? ?????-?????? ?????? ????????. ??? ?????????? ???????? ?? ??????, ??????? ??????? ?????? ??? ?? ????????? ???? ? ?? ????, ?????? ??????? ??? ?? ?????? ???????, ?? ?????? ?? ? ???, ??? ??????????????? ?????? ?? ????? ?????? ???? ??????? ?? ??????? ? ????????? ?? ????, ???? ?? ?????? ?????????...
??? ?????? ??????????? ????? ??? ????????? ??? ?????, ??? ??????? ????? ??????? ????? ???????????? ??????????, ??????? ?? ??????????? ?? ????? ?????? ?????, ? ????? ??? ?????? ????? ???????????? ??????, ????????, ? ?????-?????? 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 removedAnonymous
January 01, 2003
The comment has been removedAnonymous
January 01, 2003
Вот возьму, и не признаю! И пусть мир перевернется! Опять же читателям развлечение - понять где комментатор неправ обычно очень помогает пониманию материала.Anonymous
November 14, 2007
Ну а кто будет писать как правильно рассчитать срок проекта???!!! Я уж думал, это-то тебе известно! Обычно считается, что имеется нормальное распределение. Высчитывается двойное стандартное отклонение суммарной вероятности (95%). Вводятся временные лаги между задачками (на критических путях), чтобы добавки получались в сумме равными двойному стандартному отклонению. В результате имеем не 10% и не 35%, а 95%-ую вероятность. Это сложно?Anonymous
November 14, 2007
Лучше для каждого из шагов делать две оценки - пессиместичную и оптимистичную. При этом оптимистичную обычно получаешь от разработчика, а пессимистичную выводишь уже сам добавлением (или умножением на коэффициент) на основе опыта рабты с этим разработчиком. Для оценки проекта получаешь три оценки:
- Оптимистичную - просто сумма всех оптимистичных оценок
- Реальную - или сумма пессимистических оценок по компонентом или применение хитрых правил с вероятностями (как в этой статье) к оптимистическим оценкам
- Пессимистическую - применение правил ко всем пессимистическим оценкам компонент Но вот какие правила выбирать, это вопрос...
Anonymous
November 14, 2007
а как быть с национальными проектами типа "Электронная кубань" которые запущены в реализацию на 5 лет и уже 2 года идут, а квалифицированных кадров нет.... а бюджет есть и расходуется )))Anonymous
November 14, 2007
Выводы в целом разумны, за исключением взятого из ниоткуда второго, а обоснование - чистейшее жульничество - скачок от статистической модели к промежуточным высказываниям, никак с оной моделью не только не связанным, но принципиально ей противоречащим - "Чтоб не морочить голову абстрактными проблемами, давайте также взглянем на вопрос чуть более практично. А бывает ли что человек кончает работу раньше выделенного срока? Ну, изредка бывает, но как говорится, пренебрежимо малая величина" /читай 0.79 (вероятность что срок меньше заданного в модели) = НОЛЬ - блестящий арифметический экзерсис!/. - а от них опять к чему статистикоподобному - иначе не назовешь... Для заморачивания головы боссу, про мать-статистику чтой-то некогда слыхивавшему - может и сойдет.Anonymous
November 14, 2007
The comment has been removedAnonymous
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%, т.е. выше чем у отдельных задач. И выводы ваши в корне не верны.
- Оценка - это мат. ожидание даты завершения проекта. Естественно у этой случайно распределённой величины есть дисперсия. Но поскольку эта оценка является суммой других случайно распределённых величин (длительностей выполнения отдельных задач), её дисперсия уменьшается при росте количества задач.
- Менеджмент не вносит больше ошибок складывая оценки. Если оценка инженера - это мат. ожидание выполнения задачи (т.е. он не склонен систематически недооценивать задачу), то суммарная оценка более точна, чем оценка инженера.
- Ошибки в оценках отдельных задач не играют существенной роли. Важно чтобы задач было много, а значит и оценок. Про дисперсию см. выше. Поэтому от инженеров и не требую высокой точности оценок. +-30% от времени - это хорошо. В конечной длительности проекта это превратится в +-2%. Сейчас вы скажете - а почему проекты срываются по сроком в 2-3 раза? Отвечу - совсем по другим причинам :). Потому что выполняются задачи которые даже не планировались и не оценивались :). Если выполнять только запланированные задачи, то погрешность (при большом числе задач) будет именно такой - 2-3%.
- Тут да, не поспоришь :)
- Что вы имеете против модных методик? :)
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), пока не написал программку.