Преглед садржаја:
процена софтверског пројекта
Пикабаи
Увод
Процена је само тешка. Нажалост, то је такође веома потребно. Компаније користе процене за пројектовање распореда издавања, преузимање обавеза према купцима, одлучивање да ли вреди применити неку предложену функцију, праћење брзине тимова и ефикасно одређивање приоритета посла. Руководиоци често желе да знају када ће нека функција или испорука бити спремна за производњу. На крају, развој софтвера није тривијална инвестиција. Без процена, како би менаџер пројекта направио процену? Ако би људи могли тачно да предвиде будућност, људи не би побеђивали на коњским тркама 2% времена. Процена је велика загонетка. Неопходно је и неопходно је да компаније затраже од својих људи да учине немогуће: предвиђају будућност.
Прво, прегледајмо неке популарне методе процене (у случају да сте пропустили неко узбуђење). Тада можемо погледати шта ово значи за нас и наше пројекте.
Модел гатаре
Овај модел не захтева готово никакав напор да би се произвела процена. Процењивачи мало размисле о томе шта треба учинити да би се применила и тестирала нека карактеристика, а затим избацују број. Звучи отприлике као „… (дуга пауза)… Уммммм… 6 недеља.“ Тада сви климну главом и идемо даље. Могли би да проведу доста времена на предњем крају разговарајући кроз оно што знају о захтевима (што вероватно није комплетна слика). Ова пажљива анализа чини њихову процену поузданијом. На крају пројекта, увек постоји прихваћено образложење зашто је процена била толико удаљена од стварности. Увек постоје непредвиђене околности које могу послужити као жртвени јарац. Често никоме не пада на памет да је модел озбиљно мањкав.
Па како можемо побољшати овај процес? Знам! Можемо користити технику разлагања (тј. Поделити и освојити). Овај приступ претпоставља да знате цео опсег функције или пројекта на предњем крају. Свака карактеристика је подељена на комаде величине залогаја. Процењује се сваки део (гатарски стил), а затим их сабирамо да бисмо добили укупну процену карактеристика / пројекта. Ово је свакако сложенији приступ, али чини се да је бољи из два разлога:
- Мањи део посла обично је лакше поуздано проценити.
- Иако још увек постоји могућност за грешку (+/- неки износ), постоји претпоставка да ће се грешке међусобно поништити када све збројите и добићете поузданију укупну процену.
Основна мана овог приступа је та што појединачни сарадници (људи који заправо раде посао) универзално потцењују. Они су и даље знатно бољи од оних изнад и око себе, али то није висока лествица. Ово не изгледа случај, јер сви смо видели случајеве када су се програмери изненадили постижући нешто пре рока. Али ово је појединачна тачка података, а не тренд. Људи заиста повремено побеђују у казину; трошите новац у казину сваког дана током године и имаћете мање новца него што сте започели. Ако годину или две пратите процене у односу на стварне, открићете да процене ипак нису стварне. Иако су многи пословни људи апсолутно сигурни да програмери лено попуњавају своје процене и користе додатно време за „златну плочицу“ или проверу залиха,подаци показују другачије. Стратегија „отказивања“ не функционише.
И шта сад? Одбацимо гатарски модел и пређимо на приступ заснован на величини. Испоставило се да, иако су људи прилично грозни у процени времена завршетка, ми заправо прилично добро говоримо колико је нешто велико. Посебно смо добри у упоредном димензионисању („веће је од тога, али је мање од оног тамо“). Ако размишљамо у смислу величине или сложености, а не времена, наш мозак то поузданије обрађује. Тада можемо узети вредности величине и израчунати стварни број сати за пројекат на основу сјајне магичне формуле! И тада на сцену ступа популарни модел функционалних тачака (лева фаза).
Анализа функционалних тачака (ФПА)
За анализу функционалне тачке морамо да идентификујемо пет врста ствари у нашој апликацији: спољни улази, спољни излази, спољни упити, датотеке спољног интерфејса и интерне логичке датотеке (не брините превише око дефиниција; то можете касније истражити). Сваки пример те (функције) има сложеност (ниску, просечну или високу). Користимо доњу табелу да бисмо утврдили колико бодова додељује свака функција.
Сада ако збројимо бодове за све наше функције, могли бисмо добити број попут 457 функционалних бодова за наш пројекат. Тада нам треба само формула за израчунавање броја сати… На основу нашег последњег пројекта, наша „стопа испоруке“ износила је 15 функционалних поена по особи месечно. То је посао отприлике 30 месеци, што би за мој тим од 12 година требало мало више од два и по месеца.
Ово је сигурно сложеније од нашег претходног модела. У ствари, постоје четири кључне области сложености које треба препознати.
- Пет типова компонената није нужно интуитивно и лако је заборавити да нешто ставите на листу или доделите погрешном сегменту.
- Табела која се користи за стварно генерисање функционалних тачака садржи магичне бројеве за чије је валидирање потребно пуно напора. Да ли су ови бројеви правилно калибрисани да би створили поуздане процене за моје тимове?
- Стопа испоруке (критични део слагалице) израчунава се на основу продуктивности вашег тима. Колико често треба да израчунамо нови број? О томе заправо постоји врло мало смерница.
- Шта представља ниску, просечну или високу сложеност? Како то дефинишемо да би сви то разумели? Није ли постизање тог права пресудно за тачност наших прорачуна?
У овом врло једноставном примеру постоји неколико покретних делова, а нисмо чак ни разговарали о сложенијим моделима сложености и осталим подацима који могу доћи у обзир (нпр. Стопа трошкова, стопа подршке, густина кварова итд.). Више покретних делова значи више могућности за појаву грешака. Да ли сада процењујемо превише компликовано? Не плаћамо програмерима да посвете пуно времена процени. Не могу продати процену својим купцима. Треба ми радни софтвер. Постоји ли још нешто тамо?
Одличан
Сада ћемо погледати укратко окретни скрум (тек толико да направимо поређење). Као што је раније речено, људи су ужасни у процени времена и прилично су добри у упоредном димензионисању. Ево неколико термина које треба разумети:
- Спринт - временски ограничен временски период (обично две недеље).
- Прича корисника - дискретан посао, по могућности довољно мали да га једна особа у спринту може обавити. Ово је ствар коју процењујемо.
Најпопуларнија стратегија је коришћење фибоначијеве секвенце (0, 1, 2, 3, 5, 8, 13) за процене. Није линеарно - како се пењете по скали, величина празнина се повећава. Кључно је да празнине буду довољно широке да нема разлога за расправу око безначајних разлика. Једном када пређете изнад 3, разлика између 4 и 5 или 7 и 8 толико је занемарљива да је бесмислено трошити време на мешање о коме се ради. Секвенца базе-2 такође би функционисала (0, 1, 2, 4, 8, 16, итд.).
„Али сачекајте, ово је само број. Шта то значи? Колико сати је поен? “ Поени нису намењени директној корелацији са сатима, јер ако би то учинили, тимови би били у искушењу да се врате на процену у сатима, а затим то некако претворе у бодове. Као што је раније речено, тачност наших процена долази од упоредног одређивања величине и не процене броја сати који ће вам требати. Ако тиму дате способност да размишља сатима, угрожавате своју способност тачне процене.
Рецимо да сте започели вежбу калибрације. Повуците свој тим у собу и прођите кроз листу од 10-12 корисничких прича. Изаберите један који је мали, али не и најмањи и прво га направите. Прегледајте га и објавите да је ова прича „3“. Не питате. Кажете. Затим пређите на следећу причу. „Ако је то било 3, шта је ово?“ Сада тим одређује величине прича у односу на друге приче. На крају ће имати прилично добру идеју шта представља „1“, „2“ итд. Они не процењују. Време није битно. Они одређују величине прича у односу на друге приче које већ имају број. Затим можете ставити примере прича за сваки број у низу у документ који се назива лењир. То могу користити као референцу ако нису сигурни шта је „5“.
Сада је овде кључ. Магични сос који чини овај посао је „брзина“ (број поена које тим може да постигне у спринту у просеку за 3-4 спринта). Рецимо да је ваш спринт две недеље, а ваш тим од 8 људи има просечну брзину од 35 поена. Остварујете 35 поена за 640 сати рада (8 к 80 сати). Ако схватимо да ће за функцију бити потребно око 100 бодова да се почетак рада заврши, онда знам да је то око 6 недеља рада и око 1900 сати. Тим постаје веома добар у доследном одређивању величина прича, а ви то користите за планирање свог пројекта. Овај прорачун функционише јер је трајање конзистентно од спринта до спринта.
Да бисте дугорочно планирали на високом нивоу, можете тражити од потенцијалних клијената да разграде функције високог нивоа на привремене приче са једном линијом и на њих ставе тачке. Изгубиће се одређени степен тачности, али ви користите модел који они већ разумеју. Тачнија путања била би релативна величина на нивоу обележја. „Ова карактеристика је већа од оне од 40 тачака, мања од оне од 120 тачака тамо, и нешто већа од 65 тачака коју смо управо урадили.“ Приче су груписане у „епове“. Ако је свака одлика епска, на крају ћете знати колико је тачака било потребно да бисте довршили ту особину. Водите историју тога и можете га користити за планирање издања.
Закључак
Данас се користи мноштво методологија. Свака има предности и недостатке. Некако треба да смислимо како да максимизирамо тачност наших процена како бисмо могли да доносимо добре одлуке. То не значи да наше процене морају бити тачне. Морају бити довољно тачни да би били корисни. Ако не разумете процену, могли бисте претпоставити да процене нису биле тачне јер тим није добро обавио посао. Нису правилно проценили или нису правилно извршили пројекат. Премлаћивања ће се наставити док се процене не побољшају. Али процене никада не би требало користити као обавезу. Најбоља је претпоставка заснована на ограниченим информацијама које данас имамо. Када се појаве нове информације, морамо дозволити да се процене поново прегледају. Било шта друго очекује немогуће, што је проблем са вођством (не са тимом).
Сцрум-ов приступ је много једноставнији од онога што видимо у анализи функционалних тачака. И рекао бих да је много поузданији од магичних таблица са магичним бројевима. Добија највише новца (минималан напор уз разумно висок степен тачности). Из перспективе напора, то не ствара тежак процес који би тимови могли да разумеју и користе. Агилан процењивач може се заиста догодити врло брзо кад сви схвате детаље дела који се процењује. Сигурно је боље од извлачења бројева из ваздуха. Повећавање брзине чини нешто веома важно: у израчунавање уноси историјске податке. Сваким спринтом прерачунавате брзину. Ово је критично, јер се временом проток мења. Тимови који користе ФПА можда ће стопу испоруке извести из свог претходног пројекта,што је у неким случајевима било пре неколико месеци. Од тада се вероватно много тога променило. Мој предлог је да истражите Агиле и заиста уложите напор у разумевање поента и брзине приче. Не оклевајте на процени у сатима само зато што то разумете. Верујем да ћете се захвалити касније.