Size Model история одного отдела by Sergey Ivanov Харьков 2011 Бывший бухгалтер В IT c 2000 года • 1С-ник – более 80 проектов • Team Lead – 15 проектов • PM – пока 1 проект Имею маниакальное пристрастие все детализировать, упрощать, упорядочивать и обобщать. • i.szerg • i.szerg@gmail.com Start 2 История одной болезни • Обещали 402 часа • Сделали за 705 часов • 302 часа сверху «оправдали» изменениями в требованиях, хотя их было не более 40 часов 3 Ситуация в палате Проект Проект 1 Проект 2 Проект 3 Проект 4 Оценка Реально Отклонение EV 550 1800 1200 150 900 1600 2000 80 +350 -200 +800 -70 +64% -11% +67% -47% 4 Криз CMMI «For example, in the Project Planning process area, the specific practice on establishing estimates of project attributes has a discipline amplification for software engineering that mentions software size and examples of size measures.» 5 Что такое Size? Часы? Страницы? Строки? 6 Вспомним школу 𝑇𝑖𝑚𝑒 ∙ 𝑉𝑒𝑙𝑜𝑐𝑖𝑡𝑦 = 𝐷𝑖𝑠𝑡𝑎𝑛𝑐𝑒 7 Трудозатраты (Effort) Х 8 Скорость (Velocity) м3/день Км/ч Кг/мес 9 А size? 𝐸𝑓𝑓𝑜𝑟𝑡 ∙ 𝑉𝑒𝑙𝑜𝑐𝑖𝑡𝑦 = 𝑆𝑖𝑧𝑒 10 Объем (size) 11 Size vs Effort 12 Что такое Size? CLOK Module Functional Point WMFP Component Structure 13 Диагноз и лечение Оценка работ исходя из функциональной спецификации Любой девелопер должен иметь возможность оценить работу Результат должен быть стабильным Оценка должна проводиться быстро 14 Поиск таблетки Wideband -Delphi Function Point Estimating Fuzzy logic Size Model 15 Function Point Estimating Section BO Explorer tools BO Explorer tools BO Explorer tools BO Explorer tools BO Explorer tools BO Explorer tools BO Explorer tools BO Explorer tools Control panel Control panel Control panel DB Config Work DB Config Work DB Config Work DB Config Work Menu editor work Menu editor work Query Explorer Work Screent tools work Screent tools work Screent tools work Screent tools work Screent tools work Action Add verification for mandatory fields Create document using existing template Create email message Create Journal entry Populate field on workflow Refreshing list control, segment… Set attribute to database Set parameters and run query Add link to the Control panel Change Control panel view Remove/Rename link from the Control panel Add new Role to the database Add/Modify Code group Add/rename DB items Reneme existing Role Create or modify existing menu Remove item from menu Create/Modify query Add new segment Add/Modify view Delete existing segment Region add/modify Rename existing segment • Анализируем имеющиеся спецификации • Составляем список типовых операций • Разделяем их на области 16 Wideband-Delphi Section BO Explorer tools Action Add verification for mandatory fields Measurement number of fields BO Explorer tools Create an Appointment number of appointments BO Explorer tools Create CSV Report number of output row data fields BO Explorer tools Create document using existing template number of merge fields BO Explorer tools Create email message BO Explorer tools Create Journal entry number of attachments + one (body) number of journal entries BO Explorer tools Create new entity number of entities BO Explorer tools Create Organogram number of Organograms BO Explorer tools Create task number of tasks BO Explorer tools Filling DropDown BO Explorer tools • • • • number of loops + number of conditions Get & Save document to document library number of loops Size NS S2 Time Time1 Time2 Time3 Time4 Time5 Time6 Time7 Time8 4 4 1 1 1 2 1 1 9 17 30 27 5 15 5 15 5 10 2 5 15 30 2 10 6 20 2 4 3 3 2 2 1 1 31 15 90 27 10 5 10 10 10 5 7 30 30 10 5 60 30 2 2 2 1 4 2 4 2 1 2 4 2 1 2 3 2 1 2 3 2 16 10 19 37 18 27 30 30 90 30 10 5 10 20 10 10 5 20 20 15 10 5 10 20 10 3 3 10 5 30 15 30 30 30 5 5 10 20 10 30 15 30 60 30 4 2 2 2 21 30 20 15 10 5 60 10 20 2 2 2 1 16 45 15 5 10 5 30 5 15 Собираем оценки экспертов по каждому виду работ Выводим среднее Нормализуем до min = 1 Округляем до 3-х весовых категорий 17 Fuzzy logic • Сверяем результаты с данными по уже выполненным проектам o Переоцениваем спеки o Сравниваем с реальным временем o Думаем…. o Еще думаем… o Обсуждаем с экспертами o Пересматриваем типы и оценки сначала 18 Та Да! 19 Матрица типов работ Type A B C Section BO Explorer tools BO Explorer tools BO Explorer tools BO Explorer tools BO Explorer tools BO Explorer tools BO Explorer tools BO Explorer tools Control panel Control panel Control panel DB Config Work DB Config Work DB Config Work DB Config Work Menu editor work Menu editor work Query Explorer Work Screent tools work Screent tools work Screent tools work Screent tools work Screent tools work Segment editor Work (entity) Segment editor Work (entity) Segment editor Work (entity) Segment editor Work (entity) Segment editor Work (entity) Segment editor Work (workflow) Sysadmin Adapt V11 Sysadmin Adapt V11 Sysadmin Adapt V11 BO Explorer tools BO Explorer tools BO Explorer tools BO Explorer tools BO Explorer tools Sysadmin Adapt V11 BO Explorer tools BO Explorer tools BO Explorer tools Jasper & Cristal reports Jasper & Cristal reports Sysadmin Adapt V11 Action Add verification for mandatory fields Create document using existing template Create email message Create Journal entry Populate field on workflow Refreshing list control, segment… Set attribute to database Set parameters and run query Add link to the Control panel Change Control panel view Remove/Rename link from the Control panel Add new Role to the database Add/Modify Code group Add/rename DB items Reneme existing Role Create or modify existing menu Remove item from menu Create/Modify query Add new segment Add/Modify view Delete existing segment Region add/modify Rename existing segment Add label Add/Change Entity screen items Change segment property (title, text stile…) Modify existing list control Move/Rename/remove any fields on the screen Workflow screen items operations Add new document category to document library Add/replace template to document library Rename document category Create an Appointment Create new entity Create task Filling DropDown Get & Save document to document library Change template Create CSV Report Create Organogram XML handler Add/Modify Cristal report Add/Modify Jasper report Create new profile Measurement number of fields number of merge fields number of attachments + one (body) number of journal entries number of fields one action number of attributes number of parameters number of links number of changes number of links number of roles number of code elements (x10) number of attributes number of roles number of menu items number of menu items number of conditions number of segments number of regions number of segments number of regions number of segments number of labels (x5) per each segment number of screen items number of changes number of colums in list control number of fields + number of operations number of items number of document categories number of templates number of document categories number of appointments number of entities number of tasks number of loops + number of conditions number of loops number of merge fields number of output row data fields number of Organograms number of XML nodes number of outputs + number of conditions number of outputs + number of conditions number of roles in new profile Size Comment/Example 1 1 1 1 1 1 1 1 1 1 1 1 1 1 code = 1 size; 10 = 1 size; 25 = 3 size 1 1 1 1 1 1 1 1 1 1 1 5 labels on one segment = 1 size; 5 labels on 2 segments = 2 size 1 1 1 1 1 1 1 1 2 2 2 2 2 2 4 4 4 4 4 4 20 Типы работ Type A B C Section BO Explorer tools BO Explorer tools BO Explorer tools BO Explorer tools BO Explorer tools BO Explorer tools BO Explorer tools BO Explorer tools Control panel Control panel Control panel DB Config Work DB Config Work DB Config Work DB Config Work Menu editor work Menu editor work Query Explorer Work Screent tools work Screent tools work Screent tools work Screent tools work Screent tools work Segment editor Work (entity) Segment editor Work (entity) Segment editor Work (entity) Segment editor Work (entity) Segment editor Work (entity) Segment editor Work (workflow) Sysadmin Adapt V11 Sysadmin Adapt V11 Sysadmin Adapt V11 BO Explorer tools BO Explorer tools BO Explorer tools BO Explorer tools BO Explorer tools Sysadmin Adapt V11 BO Explorer tools BO Explorer tools BO Explorer tools Jasper & Cristal reports Jasper & Cristal reports Sysadmin Adapt V11 Action Add verification for mandatory fields Create document using existing template Create email message Create Journal entry Populate field on workflow Refreshing list control, segment… Set attribute to database Set parameters and run query Add link to the Control panel Change Control panel view Remove/Rename link from the Control panel Add new Role to the database Add/Modify Code group Add/rename DB items Reneme existing Role Create or modify existing menu Remove item from menu Create/Modify query Add new segment Add/Modify view Delete existing segment Region add/modify Rename existing segment Add label Add/Change Entity screen items Change segment property (title, text stile…) Modify existing list control Move/Rename/remove any fields on the screen Workflow screen items operations Add new document category to document library Add/replace template to document library Rename document category Create an Appointment Create new entity Create task Filling DropDown Get & Save document to document library Change template Create CSV Report Create Organogram XML handler Add/Modify Cristal report Add/Modify Jasper report Create new profile 21 Единица измерения Measurement number of fields number of changes number of links number of roles number of code elements (x10) Size 1 1 1 1 1 22 Тщательно разжевываем Measurement number of code elements (x10) number of labels (x5) per each segment Size Comment/Example 1 1 code = 1 size; 10 = 1 size; 25 = 3 size 5 labels on one segment = 1 size; 5 labels on 2 1 segments = 2 size • Если кто-то может понять что-то неверно – он так и сделает (Закон Мерфи) 23 Пример подсчета размера Экран • 10 полей • 3 кнопки • Экран o Поля – 10А o Кнопки – 3А • ОК o Проверки – 6А o Действия – 12B ОК • 6 проверок • 12 действий • Всего • 19A + 12B = 19 + 24 = 43 • 43 – это размер 24 Ну и что с этим делать? 25 DEE (даешь его единожды) Spec TOTAL Ref # Docs Docs Screen BO Merge Merge fields set items items Description 0 Journal items A B C Estimated Effort Work Execution Conditions Size defenition Work items Requirement New work type issues if exist if exist 2..3 1,5..5 Size Copy/Paste work 0,25..0,75 CA level Senior = 0,5 Middle = 1 Junior = 2 Selftesting Pure (manDevelopment hours) (man-hours) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Development Estimate 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 profiles Total risk (mandevelopment hours) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 m-h 26 Как считается effort 𝑬𝒇𝒇𝒐𝒓𝒕 = 𝑺𝒊𝒛𝒆 ∙ 𝑹𝒂𝒕𝒆 ∙ 𝑪𝒐𝒏𝒅𝒊𝒕𝒊𝒐𝒏𝒔 где, Rate = 1 / avg(Velocity) – т.е. сколько в среднем времени уходит на изготовление 1-го size Conditions – коэффициент помех и усилителей 27 Пример подсчета трудозатрат Экран • 10 полей • 3 кнопки • Размер – 43 • Rate = 0,25m-h • Conditions = 1 (идеал) DEE=43*0,25*1=10,75m-h ОК • 6 проверок • 12 действий 28 DEE поближе (1) WBS Work items Spec Ref # Description 29 DEE поближе (2) • Оцениваем размер каждого кусочка отдельно • Первые 5 колонок – для удобства заполнения и пересмотра (review) • Size считается по формуле S = A + 2*B + 4*C Оценка размера A B C Size defenition Docs Docs Screen BO Merge Merge items items set fields Journal items A B C Size 0 0 0 30 DEE поближе (3) Work Execution Conditions Requirement New work type issues if exist if exist 2..3 1,5..5 Copy/Paste work 0,25..0,75 CA level Senior = 0,5 Middle = 1 Junior = 2 31 DEE поближе (4) Time rate 0,25 Estimated Effort Pure Selftesting Development (man(man-hours) hours) 0 0 0 0 0 0 0 0 0 0 3 profiles risk (manTotal hours) development 0 0 0 0 0 0 0 0 0 0 32 DEE vs Schedule Pure development Assigned On track 3 profiles risk Debugging QA On track QA On track Q On track A Passed 33 Жизнь после Оценка работ Донесение результатов Пересмотр модели Сбор актуальных данных Анализ отклонений 34 Примеры пересмотров Work Execution Conditions Work Execution Conditions CA level Requirement New work Copy/Paste Senior = 1 issues type work Middle = 2 if exist = 2 if exist = 3 if yes = 0,5 Junior = 3 Add label 1 Requirement New work issues type if exist if exist 1,5..5 2..3 number of labels Copy/Paste work 0,25..0,75 CA level Senior = 0,5 Middle = 1 Junior = 2 1 2 Add label number of labels (x5) per each segment 5 labels on one segment = 1 size; 5 labels on 2 1 segments = 2 size 35 Эволюция DEE Project Execution Conditions Process quality Communication quality Connection quality Total Estimate 0 3 36 Выздоровление Проект Обещано Реально Отклонение EV 1 680 720 40 6% 2 1058 1200 142 13% 3 860 800 -60 -7% 4 200 180 -20 -10% 5,1 330 300 -30 -9% 5,2 900 800 -100 -11% 5,3 180 160 -20 -11% 5,4 260 240 -20 -8% 5,5 400 360 -40 -10% 37 SWOT 38 Другой пример 39 ЧаВо 1. Нечеткие требования – вилка Est … Est x5 2. Риски – типичные риски заложены в оценку 3. Juniors – система ресурсонезависима и позволяет проверить данную оценку (review) 4. Статистика – 15 проектов с отклонениями не более +20% (максимум), и около +/-10% в среднем 5. Грубая оценка – увы, надо пересчитать всё, что описано в спеке. Но если ее нет, то можно сделать наброски и оценить с учетом вопроса #1 6. Скорость – на оценку можно добавить любое количество людей (но не больше чем есть абзацев в спеке) 40 Полезное http://en.wikipedia.org/wiki/Comparison_of_development_e stimation_software Comparison of development estimation software 41 Вопросы? 42 Практика 43 Технология Такая елка делается за 5 шагов: 1. Нарисовать и закрасить кружочек (х5 раз) 2. Написать «С Новым Годом!» 3. Написать «Happy New Year!» 4. Свернуть лист в конус и склеить скотчем 5. Подогнуть углы, чтобы елка стояла 44 Экспертная оценка 45 Сбор фактических данных 46 Анализ данных 47 Анализ данных 48