SlideShare uma empresa Scribd logo
1 de 41
Эстимейты
и их точность
Elena Sharovar
2017
Цель - задача, поставленная бизнесом. Например: нужна бета-версия
продукта к 30 мая.
План - набор работ, стратегия достижения этой бизнес-цели. Планов
достижения цели может быть несколько.
Эстимейт - прогноз, оценка необходимого времени или бюджета для
выполнения работ из выбранного плана.
Если эстимейт показывает что цель невыполнима в срок - необходимо изменять
план, объемы работ, цель, но не умышленно занижать эстимейт.
Обязательства - обещание поставить функциональность к конкретной дате
на согласованном уровне качества
Обязательство не всегда равно эстимейту (оценке). Обязательство может
совпадать с оценкой, а может быть более агрессивным или консервативным.
Многие организации ценят предсказуемость выше, чем срок разработки, затраты
или гибкость. В таком случае нужно выбрать консервативный подход в плане дачи
обязательств.
Оценка (эстимейт) - это не конкретное число, а вероятностное утверждение,
указывающее дату и вероятность завершения проекта к этой дате.
Вероятность что задача займет 10, 12, 14
или 16 дней. Максимальная вероятность у
значения “12 дней”
Суммарная вероятность что задача будет
закончена к 10му, 12му, 14му или 16му дню
Максимальная вероятность у значения “14-16
дней”
Эстимейты (оценки) должны быть не столько идеально точными, сколько
полезными.
Для чего нужны оценки?
- Формирование бюджета
- Внутренние обязательства
- Внешние обязательства
- Сбор данных, прогнозирование, планирование
Переоценка или недооценка?
Последствия переоценки Последствия недооценки
Может вступить в работу закон Паркинсона
- работа растянется и займет все
отведенное на нее время.
Может вступить в работу “Студенческий
синдром”. Если выделить разработчикам
слишком много времени, то вначале они
работают спустя рукава, а к концу срока
начинается аврал и сроки в итоге все равно
сорваны.
Поэтому недооценка иногда используется с
целью внушить группе разработчиков
чувство срочности проекта.
Недооценка на 5-10% не несет тяжелых
последствий, однако по статистике
программные проекты часто
недооцениваются на 30% и более
Опасность умышленной недооценки
состоит в том, что разработчики и без того
склонны оценивать объем работы на 20-
30% ниже реального.
Заниженная оценка приводит к тому что на
предварительные операции (постановка
требований и проектирование) будет
потрачено слишком мало времени, и огрехи
планирования и проектирования будет
гораздо дороже исправлять позже
В случае недооценки, на позднем этапе команда входит в режим “опоздания”, и
приходится тратить время на действия, не нужные для “своевременных”
проектов.
- дополнительные встречи для обсуждения способов и мер необходимых для того
чтобы все-таки успеть
- выполнение переоценок для понимания новых сроков завершения проекта
- информирование третьих лиц об опоздании и новых сроках
- решение проблем с наспех сделанными решениями, которые пришлось
реализовать из-за поджимающих сроков
У всех перечисленных действий есть важная особенность - они совершенно не
нужны если работа идет по графику.
>> Переоценка или недооценка?
В области программного обеспечения постоянно стоит проблема недооценки. 20% проектов
выполняется вовремя, еще 60% - с опозданием
>> Переоценка или недооценка?
Плюсы хорошей оценки
- отслеживание прогресса, ранняя информация о рисках или срывах
- повышение качества:
Как показали исследования, около 40% ошибок программирования возникают из-за стресса; этих ошибок
можно было бы избежать за счет правильного планирования и снижения нагрузки на разработчиков
Проекты, с самого начала ориентирующиеся на минимизацию количества дефектов (заметьте что не
перфекционизм, а минимизация дефектов!), имеют самый короткий срок сдачи
- точная оценка = точный бюджет
- повышение доверия к группе разработчиков
Причины ошибок в оценках
1. Конус неопределенности
По мере движения проекта снижается неопределенность, а соответственно оценка может быть
выполнена более точно. Нужно выбрать, на каком этапе уточнения давать оценку. Чем больше
неопределенности, тем более ошибочна оценка.
>> Причины ошибок в оценках
Бывает что проект идет а неопределенность не снижается
>> Причины ошибок в оценках
Если обязательства принимаются на этапе исходной концепции
или определения продукта (или задачи), в них нужно
закладывать ошибку оценки от 2х до 4х.
При итеративной разработке продукта, каждая итерация
(спринт) - это новый конус неопределенности.
>> Причины ошибок в оценках
Факторы хаоса
- поверхностный анализ исходных требований
- отсутствие участия конечного пользователя в постановке требований
- плохое проектирование, порождающее ошибки в коде
- плохая методология программирования, требующая постоянного
исправления ошибок
- недостаточная квалификация персонала
- неполное или неумелое планирование проекта
- присутствие “звезд” в группах
- отказ от планирования из-за давления
- отсутствие автоматизированной системы контроля кода
Больше по ссылке http://www.stevemcconnell.com/rdenum.htm
>> Причины ошибок в оценках
2. Нестабильные требования
- Увеличивают неопределенность
- Часто не отслеживаются, и проект не переоценивается, как это
должно быть. По мере добавления новых требований оценки
затрат и стоимости должны пересматриваться.
F1 F2 F3
5 10 15
7 12 -
>> Причины ошибок в оценках
Если рабочая ситуация не позволяет стабилизировать требования,
рекомендуют
- Короткие итерации
- Scrum
- Экстремальное программирование
>> Причины ошибок в оценках > Нестабильные требования
Экстремальное программирование
Короткий цикл обратной связи (Fine-scale feedback)
- Разработка через тестирование (Test-driven development)
- Игра в планирование (Planning game)
- Заказчик всегда рядом (Whole team, Onsite customer)
- Парное программирование (Pair programming)
Непрерывный, а не пакетный процесс
- Непрерывная интеграция (Continuous integration)
- Рефакторинг (Design improvement, Refactoring)
- Частые небольшие релизы (Small releases)
Понимание, разделяемое всеми
- Простота проектирования (Simple design)
- Метафора системы
- Коллективное владение кодом (Collective code ownership) или выбранными шаблонами
проектирования (Collective patterns ownership)
- Стандарт оформления кода (Coding standard or Coding conventions)
Социальная защищённость программиста (Programmer welfare):
- 40-часовая рабочая неделя (Sustainable pace, Forty-hour week)
>> Причины ошибок в оценках > Нестабильные требования > Решения
Делайте запас на рост требований
- закладывайте в оценку запас на рост требований
- NASA закладывает в оценку возможность 40% роста требований
>> Причины ошибок в оценках > Нестабильные требования
3. Неучтенные при оценивании задачи
- Неучтенные требования
- Неучтенные действия по разработке
- Неучтенные действия не связанные с разработкой
Психологическая ловушка: специалисты хорошо прорабатывают
понятные требования, и одной строкой прописывают непонятные с
мыслью “потом разберемся”
>> Причины ошибок в оценках
Часто забывают учесть
- Обучение участников группы
- Установка, настройка
- Прояснение требований
- Создание тестовых данных
- Участие в техническом ревью
- Ответы на вопросы группы QA
- Работа по исправлению дефектов
- Настройка производительности
- Изучение нового инструментария
- Преобразование данных
- Праздники, болезни, выходные
>> Причины ошибок в оценках > Неучтенные задачи
4. Необоснованный оптимизм
“Никогда не следует опасаться того, что оценка созданная
разработчиком, является слишком оптимистичной, потому что
разработчики всегда назначают слишком оптимистичные сроки”
Стандартная недооценка разработчиками - 30%
(на основе исследования 300 проектов)
>> Причины ошибок в оценках
Примеры необоснованного оптимизма
- Над этим проектом мы будем работать более эффективно чем над
предыдущим проектом
- В последнем проекте все шло наперекосяк. В этом проекте проблем
будет меньше.
- Мы начинали медленно, но ближе к концу мы будем работать гораздо
эффективнее чем вначале
Эти заблуждения существуют потому что разработчики действительно
этого хотят!
>> Причины ошибок в оценках>> Причины ошибок в оценках > Необоснованный оптимизм
Ситуация которую называют “сговор оптимистов”
- разработчики дают оптимистичные оценки
- руководству нравятся оптимистичные оценки, потому что они указывают
на достижимость определенных бизнес целей
- менеджерам они нравятся, потому что они подразумевают возможность
выполнения указаний начальства
.. и никому даже в голову не приходит критически проанализировать
обоснованность самих оценок.
>> Причины ошибок в оценках > Необоснованный оптимизм
5. Импровизация по памяти
Одна из ошибок при составлении оценок на базе собственных
воспоминаний - в том, что новый проект сравнивается с воспоминаниями о
том, сколько времени ушло на работу в прошлый раз.
К сожалению, люди часто запоминают свои оценки прошлых проектов, а не
фактические затраты времени.
>> Причины ошибок в оценках
Другие причины ошибок в оценках:
- незнакомая область деятельности
- незнакомая технологическая область
- неверное преобразование календарного времени в
проектное
- завышенные ожидания от применения новых средств или
методов разработки
>> Причины ошибок в оценках
Издержки масштаба команды
>> Причины ошибок в оценках
Факторы персонала (CoCoMo)
>> Причины ошибок в оценках
CoCoMo - constructive cost model - метод оценки стоимости программного обеспечения, в нем
перечислен список факторов влияющих на стоимость (время) разработки и степень их влияния
Низкая квалификация
аналитиков может увеличить
стоимость разработки до
+42% (больше времени будет
уходить на багфиксы), а
высокая - уменьшить на -29%.
Интересно что квалификация
программистов влияет на
стоимость в меньшей степени!
Также интересно что в этой
модели учтены даже такие
факторы как слаженность
команды и другие
Методы оценки
1. Подсчет и вычисления + экспертное суждение
Найдите факторы которые можно посчитать
- Количество скринов
- Количество таблиц в базе данных
- Среднее количество времени на класс при разработке
и основывайте эстимейты на количественных факторах
Экспертное суждение - наименее точный метод оценки, поскольку более
субъективный. Наибольшая точность достигается когда оценка
привязывается к чему-то конкретному.
>> Методы оценки
2. Калибровка историческими данными
Собираются:
- среднеотраслевые данные
- исторические данные (по другим проектам)
- проектные данные (по текущему проекту)
и на основе их создаются оценки.
Наиболее точный источник - проектные данные (с текущего проекта).
>> Методы оценки
3. Индивидуальные экспертные оценки
“Большой опыт в технологии или разработке
еще не делает работника экспертом в области оценок”
Для улучшения оценки рекомендуется:
- поручать оценку тем людям которые будут выполнять работу
- разбиение на задачи длиной не более 1 дня
- чек-листы для процесса оценки
- вести учет оценок и фактически затраченного времени
>> Методы оценки
4. PERT (program review and evaluation technique)
>> Методы оценки
Почему используется?
Было замечено что единичные, “наиболее вероятные” оценки склонны к
излишнему оптимизму.
В чем состоит метод?
Нужно дать три оценки, для таких случаев
- Лучший случай (BEST)
- Наиболее вероятный случай (AVERAGE)
- Худший случай (WORST)
Затем результирующая оценка вычисляется по формуле:
RESULT = (BEST + 4 * AVERAGE + WORST ) / 6
>> Методы оценки > PERT
В чем плюсы оценки методом PERT?
Создание оценок для лучшего и худшего случаев стимулирует мышление и
помогает учесть весь диапазон возможных результатов.
Пример
В лучшем случае задача займет 10 дней
В ожидаемом случае - 12 дней
В худшем случае - 18 дней
Результат = (10 + 12 * 4 + 16 ) / 6 = 12.6 дней
Для одной задачи оценка очень близка к ожидаемой но при наличии
нескольких задач разница становится существенной (несколько дней)
5. Абстрактные рейтинги
- истории оцениваются в абстрактных пунктах
- на основании нескольких итераций вычисляется скорость
разработки в абстрактных пунктах
- на основании вычисленной скорости делаются прогнозы в
следующих итерациях
>> Методы оценки
Другие методы оценки:
- Оценка по аналогии
- Разбиение на стандартные компоненты
- Метод футболки
>> Методы оценки
Хорошая процедура оценки:
- базируется на подсчете и вычислениях, а не субъективных
оценках
- использует несколько методов оценки и сравнивает результаты
- содержит указание неточности оценки
- определяет, когда оценка может быть использована для
формирования бюджета проекта
- определяет, когда оценка может использоваться для внутренних
и внешних обязательств
>> Методы оценки
Итого
Оценка - это не число а вероятностный фактор.
Переоценка и недооценка - нужно понимать последствия
Причины ошибок в оценке
- Неопределенность
- Нестабильные требования
- Неучтенные задачи
- Необоснованный оптимизм
- Импровизация по памяти
Влияющие на оценку факторы
- масштаб команды
- квалификация персонала (CoCoMo)
Методы оценки:
- Подсчет, вычисления
- Калибровка историческими данными
- Экспертное суждение
- PERT
- Абстрактные рейтинги
>> Итого
>> Итого
Психологические ловушки в оценке
- точечные (наиболее вероятные) оценки близятся к оптимистичным
- люди запоминают свои прошлые оценки а не фактические затраты
времени
Ссылки
Сколько стоит программный проект
Classic Mistakes Enumerated
Экстремальное программирование
Модель CoCoMo

Mais conteúdo relacionado

Mais procurados

Maturity Models
Maturity ModelsMaturity Models
Maturity Models
Tom Milner
 
Building blocks of execution
Building blocks of executionBuilding blocks of execution
Building blocks of execution
davidcmills
 
Key principles in continuous improvement culture
Key principles in continuous improvement cultureKey principles in continuous improvement culture
Key principles in continuous improvement culture
Gopala P.
 

Mais procurados (20)

P3M - Project, Program, Portfolio Management Framework
P3M - Project, Program, Portfolio Management FrameworkP3M - Project, Program, Portfolio Management Framework
P3M - Project, Program, Portfolio Management Framework
 
Enterprise Leadership
Enterprise Leadership Enterprise Leadership
Enterprise Leadership
 
PMP Certification Chapter one Summary of PMBOK
PMP Certification Chapter one Summary of PMBOKPMP Certification Chapter one Summary of PMBOK
PMP Certification Chapter one Summary of PMBOK
 
Dr. Mustafa Degerli - 2019 - CMMI Model V2 Development - PMI TR
Dr. Mustafa Degerli - 2019 - CMMI Model V2 Development - PMI TRDr. Mustafa Degerli - 2019 - CMMI Model V2 Development - PMI TR
Dr. Mustafa Degerli - 2019 - CMMI Model V2 Development - PMI TR
 
Maturity Models
Maturity ModelsMaturity Models
Maturity Models
 
Lean Transformation
Lean TransformationLean Transformation
Lean Transformation
 
PMO Performance Measurement and Metrics - Kendrick
PMO Performance Measurement and Metrics - KendrickPMO Performance Measurement and Metrics - Kendrick
PMO Performance Measurement and Metrics - Kendrick
 
Scrum und Stage-Gate - passt das zusammen?
Scrum und Stage-Gate - passt das zusammen?Scrum und Stage-Gate - passt das zusammen?
Scrum und Stage-Gate - passt das zusammen?
 
Lean thinking
Lean thinkingLean thinking
Lean thinking
 
Leadership Defined
Leadership DefinedLeadership Defined
Leadership Defined
 
تحلیل کسب و کار چیست و چگونه به ما کمک می‌کند؟
تحلیل کسب و کار چیست و چگونه به ما کمک می‌کند؟تحلیل کسب و کار چیست و چگونه به ما کمک می‌کند؟
تحلیل کسب و کار چیست و چگونه به ما کمک می‌کند؟
 
Building blocks of execution
Building blocks of executionBuilding blocks of execution
Building blocks of execution
 
Key principles in continuous improvement culture
Key principles in continuous improvement cultureKey principles in continuous improvement culture
Key principles in continuous improvement culture
 
Inspiring Alignment and Autonomy - The Leaders Role in Scaling Agile
Inspiring Alignment and Autonomy - The Leaders Role in Scaling AgileInspiring Alignment and Autonomy - The Leaders Role in Scaling Agile
Inspiring Alignment and Autonomy - The Leaders Role in Scaling Agile
 
12 inspirational quotes on leadership
12 inspirational quotes on leadership12 inspirational quotes on leadership
12 inspirational quotes on leadership
 
5 practices of exemplary leadership
5 practices of exemplary leadership5 practices of exemplary leadership
5 practices of exemplary leadership
 
Prosocial leadership timothy ewest
Prosocial leadership timothy ewestProsocial leadership timothy ewest
Prosocial leadership timothy ewest
 
Boundaryless Behaviour
Boundaryless BehaviourBoundaryless Behaviour
Boundaryless Behaviour
 
Organizational project maturity model (opm3)
Organizational project maturity model (opm3)Organizational project maturity model (opm3)
Organizational project maturity model (opm3)
 
Toyota KATA Overview Presentation
Toyota KATA Overview PresentationToyota KATA Overview Presentation
Toyota KATA Overview Presentation
 

Semelhante a Все об эстимейтах

Разработка веб-сервисов осень 2013 лекция 3
Разработка веб-сервисов осень 2013 лекция 3Разработка веб-сервисов осень 2013 лекция 3
Разработка веб-сервисов осень 2013 лекция 3
Technopark
 
Планирование трудозатрат на тестирование
Планирование трудозатрат на тестированиеПланирование трудозатрат на тестирование
Планирование трудозатрат на тестирование
Softengi
 
Agile на Смертельном Марше
Agile на Смертельном МаршеAgile на Смертельном Марше
Agile на Смертельном Марше
Nikita Filippov
 
ук 03.006.02 2011
ук 03.006.02 2011ук 03.006.02 2011
ук 03.006.02 2011
etyumentcev
 
Марри Кантор, Управление программными проектами
Марри Кантор, Управление программными проектамиМарри Кантор, Управление программными проектами
Марри Кантор, Управление программными проектами
Elena Sharovar
 
Бизнес Организатор БизОр
Бизнес Организатор БизОрБизнес Организатор БизОр
Бизнес Организатор БизОр
Alexey Axjonov
 

Semelhante a Все об эстимейтах (20)

CodeFest 2010. Погребняк А. — Проблемы оценки труда программистов
CodeFest 2010. Погребняк А. — Проблемы оценки труда программистовCodeFest 2010. Погребняк А. — Проблемы оценки труда программистов
CodeFest 2010. Погребняк А. — Проблемы оценки труда программистов
 
Analyst days 2015 Оценка аутсорсинговых проектов
Analyst days 2015 Оценка аутсорсинговых проектовAnalyst days 2015 Оценка аутсорсинговых проектов
Analyst days 2015 Оценка аутсорсинговых проектов
 
Оценка аутсорсинговых проектов
Оценка аутсорсинговых проектовОценка аутсорсинговых проектов
Оценка аутсорсинговых проектов
 
Разработка веб-сервисов осень 2013 лекция 3
Разработка веб-сервисов осень 2013 лекция 3Разработка веб-сервисов осень 2013 лекция 3
Разработка веб-сервисов осень 2013 лекция 3
 
Наблюдай. Анализируй. Управляй
Наблюдай. Анализируй. УправляйНаблюдай. Анализируй. Управляй
Наблюдай. Анализируй. Управляй
 
PM Magazine 2009
PM Magazine 2009PM Magazine 2009
PM Magazine 2009
 
Планирование трудозатрат на тестирование
Планирование трудозатрат на тестированиеПланирование трудозатрат на тестирование
Планирование трудозатрат на тестирование
 
Рекомендации по проведению экспертной оценки Lt
Рекомендации по проведению экспертной оценки LtРекомендации по проведению экспертной оценки Lt
Рекомендации по проведению экспертной оценки Lt
 
Ad 2009 - agile в кризис
Ad 2009 - agile в кризисAd 2009 - agile в кризис
Ad 2009 - agile в кризис
 
Agile на Смертельном Марше
Agile на Смертельном МаршеAgile на Смертельном Марше
Agile на Смертельном Марше
 
Планирование трудозатрат на тестирование
Планирование трудозатрат на тестированиеПланирование трудозатрат на тестирование
Планирование трудозатрат на тестирование
 
Риски, которые необходимо учесть при разработке сложного проекта (Олег Бунин)
Риски, которые необходимо учесть при разработке сложного проекта (Олег Бунин)Риски, которые необходимо учесть при разработке сложного проекта (Олег Бунин)
Риски, которые необходимо учесть при разработке сложного проекта (Олег Бунин)
 
ук 03.006.02 2011
ук 03.006.02 2011ук 03.006.02 2011
ук 03.006.02 2011
 
Как сделать наши проекты немного более управляемыми с Agile
Как сделать наши проекты немного более управляемыми с AgileКак сделать наши проекты немного более управляемыми с Agile
Как сделать наши проекты немного более управляемыми с Agile
 
Марри Кантор, Управление программными проектами
Марри Кантор, Управление программными проектамиМарри Кантор, Управление программными проектами
Марри Кантор, Управление программными проектами
 
Бизнес Организатор БизОр
Бизнес Организатор БизОрБизнес Организатор БизОр
Бизнес Организатор БизОр
 
Бизнес Организатор БизОр
Бизнес Организатор БизОрБизнес Организатор БизОр
Бизнес Организатор БизОр
 
TechLeads meetup: Андрей Шелёхин, Tinkoff.ru
TechLeads meetup: Андрей Шелёхин, Tinkoff.ruTechLeads meetup: Андрей Шелёхин, Tinkoff.ru
TechLeads meetup: Андрей Шелёхин, Tinkoff.ru
 
КАК УПРАВЛЯТЬ ДИЗАЙН-ПРОЕКТОМ (для заказчиков и исполнителей)
КАК УПРАВЛЯТЬ ДИЗАЙН-ПРОЕКТОМ (для заказчиков и исполнителей)КАК УПРАВЛЯТЬ ДИЗАЙН-ПРОЕКТОМ (для заказчиков и исполнителей)
КАК УПРАВЛЯТЬ ДИЗАЙН-ПРОЕКТОМ (для заказчиков и исполнителей)
 
Risk management Rules
Risk management RulesRisk management Rules
Risk management Rules
 

Все об эстимейтах

  • 2. Цель - задача, поставленная бизнесом. Например: нужна бета-версия продукта к 30 мая. План - набор работ, стратегия достижения этой бизнес-цели. Планов достижения цели может быть несколько. Эстимейт - прогноз, оценка необходимого времени или бюджета для выполнения работ из выбранного плана. Если эстимейт показывает что цель невыполнима в срок - необходимо изменять план, объемы работ, цель, но не умышленно занижать эстимейт.
  • 3. Обязательства - обещание поставить функциональность к конкретной дате на согласованном уровне качества Обязательство не всегда равно эстимейту (оценке). Обязательство может совпадать с оценкой, а может быть более агрессивным или консервативным. Многие организации ценят предсказуемость выше, чем срок разработки, затраты или гибкость. В таком случае нужно выбрать консервативный подход в плане дачи обязательств.
  • 4. Оценка (эстимейт) - это не конкретное число, а вероятностное утверждение, указывающее дату и вероятность завершения проекта к этой дате. Вероятность что задача займет 10, 12, 14 или 16 дней. Максимальная вероятность у значения “12 дней” Суммарная вероятность что задача будет закончена к 10му, 12му, 14му или 16му дню Максимальная вероятность у значения “14-16 дней”
  • 5. Эстимейты (оценки) должны быть не столько идеально точными, сколько полезными. Для чего нужны оценки? - Формирование бюджета - Внутренние обязательства - Внешние обязательства - Сбор данных, прогнозирование, планирование
  • 6. Переоценка или недооценка? Последствия переоценки Последствия недооценки Может вступить в работу закон Паркинсона - работа растянется и займет все отведенное на нее время. Может вступить в работу “Студенческий синдром”. Если выделить разработчикам слишком много времени, то вначале они работают спустя рукава, а к концу срока начинается аврал и сроки в итоге все равно сорваны. Поэтому недооценка иногда используется с целью внушить группе разработчиков чувство срочности проекта. Недооценка на 5-10% не несет тяжелых последствий, однако по статистике программные проекты часто недооцениваются на 30% и более Опасность умышленной недооценки состоит в том, что разработчики и без того склонны оценивать объем работы на 20- 30% ниже реального. Заниженная оценка приводит к тому что на предварительные операции (постановка требований и проектирование) будет потрачено слишком мало времени, и огрехи планирования и проектирования будет гораздо дороже исправлять позже
  • 7. В случае недооценки, на позднем этапе команда входит в режим “опоздания”, и приходится тратить время на действия, не нужные для “своевременных” проектов. - дополнительные встречи для обсуждения способов и мер необходимых для того чтобы все-таки успеть - выполнение переоценок для понимания новых сроков завершения проекта - информирование третьих лиц об опоздании и новых сроках - решение проблем с наспех сделанными решениями, которые пришлось реализовать из-за поджимающих сроков У всех перечисленных действий есть важная особенность - они совершенно не нужны если работа идет по графику. >> Переоценка или недооценка?
  • 8. В области программного обеспечения постоянно стоит проблема недооценки. 20% проектов выполняется вовремя, еще 60% - с опозданием >> Переоценка или недооценка?
  • 9. Плюсы хорошей оценки - отслеживание прогресса, ранняя информация о рисках или срывах - повышение качества: Как показали исследования, около 40% ошибок программирования возникают из-за стресса; этих ошибок можно было бы избежать за счет правильного планирования и снижения нагрузки на разработчиков Проекты, с самого начала ориентирующиеся на минимизацию количества дефектов (заметьте что не перфекционизм, а минимизация дефектов!), имеют самый короткий срок сдачи - точная оценка = точный бюджет - повышение доверия к группе разработчиков
  • 11. 1. Конус неопределенности По мере движения проекта снижается неопределенность, а соответственно оценка может быть выполнена более точно. Нужно выбрать, на каком этапе уточнения давать оценку. Чем больше неопределенности, тем более ошибочна оценка. >> Причины ошибок в оценках
  • 12. Бывает что проект идет а неопределенность не снижается >> Причины ошибок в оценках
  • 13. Если обязательства принимаются на этапе исходной концепции или определения продукта (или задачи), в них нужно закладывать ошибку оценки от 2х до 4х. При итеративной разработке продукта, каждая итерация (спринт) - это новый конус неопределенности. >> Причины ошибок в оценках
  • 14. Факторы хаоса - поверхностный анализ исходных требований - отсутствие участия конечного пользователя в постановке требований - плохое проектирование, порождающее ошибки в коде - плохая методология программирования, требующая постоянного исправления ошибок - недостаточная квалификация персонала - неполное или неумелое планирование проекта - присутствие “звезд” в группах - отказ от планирования из-за давления - отсутствие автоматизированной системы контроля кода Больше по ссылке http://www.stevemcconnell.com/rdenum.htm >> Причины ошибок в оценках
  • 15. 2. Нестабильные требования - Увеличивают неопределенность - Часто не отслеживаются, и проект не переоценивается, как это должно быть. По мере добавления новых требований оценки затрат и стоимости должны пересматриваться. F1 F2 F3 5 10 15 7 12 - >> Причины ошибок в оценках
  • 16. Если рабочая ситуация не позволяет стабилизировать требования, рекомендуют - Короткие итерации - Scrum - Экстремальное программирование >> Причины ошибок в оценках > Нестабильные требования
  • 17. Экстремальное программирование Короткий цикл обратной связи (Fine-scale feedback) - Разработка через тестирование (Test-driven development) - Игра в планирование (Planning game) - Заказчик всегда рядом (Whole team, Onsite customer) - Парное программирование (Pair programming) Непрерывный, а не пакетный процесс - Непрерывная интеграция (Continuous integration) - Рефакторинг (Design improvement, Refactoring) - Частые небольшие релизы (Small releases) Понимание, разделяемое всеми - Простота проектирования (Simple design) - Метафора системы - Коллективное владение кодом (Collective code ownership) или выбранными шаблонами проектирования (Collective patterns ownership) - Стандарт оформления кода (Coding standard or Coding conventions) Социальная защищённость программиста (Programmer welfare): - 40-часовая рабочая неделя (Sustainable pace, Forty-hour week) >> Причины ошибок в оценках > Нестабильные требования > Решения
  • 18. Делайте запас на рост требований - закладывайте в оценку запас на рост требований - NASA закладывает в оценку возможность 40% роста требований >> Причины ошибок в оценках > Нестабильные требования
  • 19. 3. Неучтенные при оценивании задачи - Неучтенные требования - Неучтенные действия по разработке - Неучтенные действия не связанные с разработкой Психологическая ловушка: специалисты хорошо прорабатывают понятные требования, и одной строкой прописывают непонятные с мыслью “потом разберемся” >> Причины ошибок в оценках
  • 20. Часто забывают учесть - Обучение участников группы - Установка, настройка - Прояснение требований - Создание тестовых данных - Участие в техническом ревью - Ответы на вопросы группы QA - Работа по исправлению дефектов - Настройка производительности - Изучение нового инструментария - Преобразование данных - Праздники, болезни, выходные >> Причины ошибок в оценках > Неучтенные задачи
  • 21. 4. Необоснованный оптимизм “Никогда не следует опасаться того, что оценка созданная разработчиком, является слишком оптимистичной, потому что разработчики всегда назначают слишком оптимистичные сроки” Стандартная недооценка разработчиками - 30% (на основе исследования 300 проектов) >> Причины ошибок в оценках
  • 22. Примеры необоснованного оптимизма - Над этим проектом мы будем работать более эффективно чем над предыдущим проектом - В последнем проекте все шло наперекосяк. В этом проекте проблем будет меньше. - Мы начинали медленно, но ближе к концу мы будем работать гораздо эффективнее чем вначале Эти заблуждения существуют потому что разработчики действительно этого хотят! >> Причины ошибок в оценках>> Причины ошибок в оценках > Необоснованный оптимизм
  • 23. Ситуация которую называют “сговор оптимистов” - разработчики дают оптимистичные оценки - руководству нравятся оптимистичные оценки, потому что они указывают на достижимость определенных бизнес целей - менеджерам они нравятся, потому что они подразумевают возможность выполнения указаний начальства .. и никому даже в голову не приходит критически проанализировать обоснованность самих оценок. >> Причины ошибок в оценках > Необоснованный оптимизм
  • 24. 5. Импровизация по памяти Одна из ошибок при составлении оценок на базе собственных воспоминаний - в том, что новый проект сравнивается с воспоминаниями о том, сколько времени ушло на работу в прошлый раз. К сожалению, люди часто запоминают свои оценки прошлых проектов, а не фактические затраты времени. >> Причины ошибок в оценках
  • 25. Другие причины ошибок в оценках: - незнакомая область деятельности - незнакомая технологическая область - неверное преобразование календарного времени в проектное - завышенные ожидания от применения новых средств или методов разработки >> Причины ошибок в оценках
  • 26. Издержки масштаба команды >> Причины ошибок в оценках
  • 27. Факторы персонала (CoCoMo) >> Причины ошибок в оценках CoCoMo - constructive cost model - метод оценки стоимости программного обеспечения, в нем перечислен список факторов влияющих на стоимость (время) разработки и степень их влияния Низкая квалификация аналитиков может увеличить стоимость разработки до +42% (больше времени будет уходить на багфиксы), а высокая - уменьшить на -29%. Интересно что квалификация программистов влияет на стоимость в меньшей степени! Также интересно что в этой модели учтены даже такие факторы как слаженность команды и другие
  • 28.
  • 30. 1. Подсчет и вычисления + экспертное суждение Найдите факторы которые можно посчитать - Количество скринов - Количество таблиц в базе данных - Среднее количество времени на класс при разработке и основывайте эстимейты на количественных факторах Экспертное суждение - наименее точный метод оценки, поскольку более субъективный. Наибольшая точность достигается когда оценка привязывается к чему-то конкретному. >> Методы оценки
  • 31. 2. Калибровка историческими данными Собираются: - среднеотраслевые данные - исторические данные (по другим проектам) - проектные данные (по текущему проекту) и на основе их создаются оценки. Наиболее точный источник - проектные данные (с текущего проекта). >> Методы оценки
  • 32. 3. Индивидуальные экспертные оценки “Большой опыт в технологии или разработке еще не делает работника экспертом в области оценок” Для улучшения оценки рекомендуется: - поручать оценку тем людям которые будут выполнять работу - разбиение на задачи длиной не более 1 дня - чек-листы для процесса оценки - вести учет оценок и фактически затраченного времени >> Методы оценки
  • 33. 4. PERT (program review and evaluation technique) >> Методы оценки Почему используется? Было замечено что единичные, “наиболее вероятные” оценки склонны к излишнему оптимизму. В чем состоит метод? Нужно дать три оценки, для таких случаев - Лучший случай (BEST) - Наиболее вероятный случай (AVERAGE) - Худший случай (WORST) Затем результирующая оценка вычисляется по формуле: RESULT = (BEST + 4 * AVERAGE + WORST ) / 6
  • 34. >> Методы оценки > PERT В чем плюсы оценки методом PERT? Создание оценок для лучшего и худшего случаев стимулирует мышление и помогает учесть весь диапазон возможных результатов. Пример В лучшем случае задача займет 10 дней В ожидаемом случае - 12 дней В худшем случае - 18 дней Результат = (10 + 12 * 4 + 16 ) / 6 = 12.6 дней Для одной задачи оценка очень близка к ожидаемой но при наличии нескольких задач разница становится существенной (несколько дней)
  • 35. 5. Абстрактные рейтинги - истории оцениваются в абстрактных пунктах - на основании нескольких итераций вычисляется скорость разработки в абстрактных пунктах - на основании вычисленной скорости делаются прогнозы в следующих итерациях >> Методы оценки
  • 36. Другие методы оценки: - Оценка по аналогии - Разбиение на стандартные компоненты - Метод футболки >> Методы оценки
  • 37. Хорошая процедура оценки: - базируется на подсчете и вычислениях, а не субъективных оценках - использует несколько методов оценки и сравнивает результаты - содержит указание неточности оценки - определяет, когда оценка может быть использована для формирования бюджета проекта - определяет, когда оценка может использоваться для внутренних и внешних обязательств >> Методы оценки
  • 38. Итого Оценка - это не число а вероятностный фактор. Переоценка и недооценка - нужно понимать последствия Причины ошибок в оценке - Неопределенность - Нестабильные требования - Неучтенные задачи - Необоснованный оптимизм - Импровизация по памяти
  • 39. Влияющие на оценку факторы - масштаб команды - квалификация персонала (CoCoMo) Методы оценки: - Подсчет, вычисления - Калибровка историческими данными - Экспертное суждение - PERT - Абстрактные рейтинги >> Итого
  • 40. >> Итого Психологические ловушки в оценке - точечные (наиболее вероятные) оценки близятся к оптимистичным - люди запоминают свои прошлые оценки а не фактические затраты времени
  • 41. Ссылки Сколько стоит программный проект Classic Mistakes Enumerated Экстремальное программирование Модель CoCoMo