360 likes | 449 Views
Gépi tanulás a fejlesztés, karbantartás költségének becslésére. Kakuja-Tóth Gabriella Szoftverfejlesztés Tanszék. Adding Process Metrics to Enhance the Modification Complexity Prediction. Tóth Gabriella, Végh Ádám Zoltán, Beszédes Árpád, Gyimóthy Tibor
E N D
Gépi tanulás a fejlesztés, karbantartás költségének becslésére Kakuja-Tóth Gabriella Szoftverfejlesztés Tanszék
Adding Process Metrics to Enhance the Modification Complexity Prediction Tóth Gabriella, VéghÁdám Zoltán, Beszédes Árpád, Gyimóthy Tibor 19th IEEE International Conference on ProgramComprehension – ICPC’11
Adjusting Effort Estimation Using Micro-Productivity Profiles Tóth Gabriella, Végh Ádám Zoltán, Beszédes Árpád, Schrettner Lajos, Gergely Tamás, Gyimóthy Tibor 12th Symposium on Programming Languages and Software Tools - SPLST'11
Vázlat • Metrikák felhasználása becslésre • Módosítás költsége metrika • Level of Modification Complexity (LMC) • A kísérlet • Összehasonlító elemzés különböző metrikákkal alapján történő becslések között • Eredmények • Hogyan tovább?
Szoftvermetrikákkal történő becslés • Mit becsülhetünk? • Költség, • Erőforrás, • Hibaszám, • … • Miből becsülhetünk? • Termék metrikák • Folyamat metrikák • Múltbeli fejlesztési adatok • …
Kapcsolódó irodalom • C&K metrikák:6 objektum orientált metrika (Chidamberés Kemerer által) • Ezek a metrikák korrelációt mutatnak a karbantarthatóság mértékével és a hibák számával • Mockus és Weiss • A változás metrikák és a fejlesztők szakértelme fontos tényező a hibák számának előrejelzésében • Moser • A legerőteljesebb hiba előrejelzők a nagy számú kis méretű kommitok, sok hibajavítás és kevés refaktoring.
Módosításkomplexitása • ISO/IEC TR 9126-2:2003 szabvány • Modification complexity • Can the maintanier easily change the software to resolve problem? • T = Sum(A/B)/N • A: work time spent to change • B: Size of software change • N: number of changes
Módosításkomplexitása • Mennyi ideig tart átlagosan egy fájl1 sorának módosítása a fájl következő módosítása során? • T.F.H. r36-ban A.java módosult: • r35 – r36 között: • diff: 4 sor • A.java fejlesztésének nettó ideje: 12 perc • MC (A,35) = 12/4 = 3 perc/sor • LMC(A,35) = közepes
Módosítás komplexitása time(F, i):F fájl nettó fejlesztési ideje percben a fájl i. és i+1. revíziója között diff (F, i):F fájl változtatott sorainak száma a fájl i. és i+1. revíziója között Fájlonként kiszámolásra került a fájl összes módosításának revíziójához ez az érték
Kutatási cél • A módosítás költségére rátanulni • Milyen prediktorok segítségével? • Termék metrikák • Folyamat metrikák • Idő múlása • Több modell építése, ezek összehasonlítása • Precision • Recall
Kutatási kérdések Az idő múlása elégséges az LMC becsléséhez? A termékmetrikák által becsült LMC pontossága javítható további folyamatmetrikák segítségével?
Productivity plug-in • Eclipse plug-in • Logolja a fejlesztés főbb mozzanatait: • Aktív fájl • Aktív perspektíva • Aktív projekt • Aktív fejlesztő • Események: • save, update, commit, deploy • Idő mérése (-tól –ig) • Központi adatbázisba tölti folyamatosan
Columbus • Statikus elemző • C/C++, C#, Java, SQL, Python stb. • Termékmetrikák • Forráskód alapján • Méret, • Komplexitás, • Öröklődés, • Csatolás
Prediktorok I. • Termék metrikák • lLOC: logical Lines of Code • Chidamber és Kemerer metrikák • DIT: Depth of Inheritence Tree • NOC: Number of Children • CBO: Couplings between Object Classes • RFC: Response For a Class • WMC: Weighted Methods per Class • LCOM: Lack of Cohesion in Methods • ECLOC: Effectively Changed Lines of Code
Termékmetrikák feldolgozása • 3 féle feldolgozás • A kód aktuális állapota alapján számolt • A kód első mért állapota és a jelenlegi állapota közötti eltérés • A kód előző mért állapota és a jelenlegi állapota közötti eltérés
Prediktorok II. • Folyamat metrikák • TT: Task Time • DEP: Developer’s Experience in Progamming • NDF: Numbers of Developers of File • NFA: Number of File Access • DT: Development Time • RN: Revision Number
A vizsgált projekt • Ipari K+F java projekt • Telemedicina terület • 7 fejlesztő • 23 munkanap • r954 – r1805 • 851 kommit • 1134 fájlmódosítás • 200 fájlmódosításhoz lehetett egyértelműen termék és folyamat metrikát társítani • 97 tanulóadat (a többi esetén nem volt a fájl rákövetkező módosítása)
Gépi tanulás • Használt weka algoritmusok • J48 • java weka.classifiers.trees.J48 -t data/process.arff -d data/process.model -i • RBFNetwork • java weka.classifiers.functions.RBFNetwork -t data/process.arff -d data/process.model -i • ClassificationViaRegression • java weka.classifiers.meta.ClassificationViaRegression -t data/process.arff -d data/process.model -i
Gépi tanulás • Cél: LMC diszkrét érték becslése • MC = DT/ECLOC → LMC • 4 féle becslőmodell • Idő múlása alapján • Prediktor: RN • Termék metrikák alapján • Prediktorok: RN, termék metrikák • Folyamat metrikák alapján • Prediktorok: RN, folyamat metrikák • Termék és folyamat metrikák alapján • Prediktorok: RN, termék és folyamat metrikák
Process_metrics.arff • @relation process_metrics • @attribute rev numeric • @attribute task {t2,t1,t3} • @attribute developer {d4,d3,d5} • @attribute access numeric • @attribute time numeric • @attribute dev_access numeric • @attribute target {m3,m2,m1} • @data • 963,t2,d4,1,43,1,m3 • 967,t1,d3,4,40,1,m3 • 967,t1,d3,3,3,1,m2 • …
Product_metrics.arff • @relation product_metrics • @attribute rev numeric • @attribute LLOC numeric • @attribute RFC numeric • @attribute WMC numeric • @attribute DIT numeric • @attribute NOC numeric • @attribute LCOM numeric • @attribute CBO numeric • @attribute dLLOC numeric • … • @attribute d1LLOC numeric • … • @attribute diff numeric • @attribute target{m3,m2,m1} • @data • 963,179,17,37,0,0,3,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,m2
Eredmények I. Az idő múlása elégséges az LMC becsléséhez? Csak revíziószám alapján
Eredmények II. Revíziószám és termékmetrikák alapján
Eredmények III. Revíziószám és folyamat metrikák alapján
Eredmények IV. Javítható-e a becslés pontossága, ha csak termékmetrikák helyett termék és folyamatmetrikák segítségével becsülnénk?
További vizsgált projektek 3 ipari K+F Java projekt 293 tanulóadat
EredményekV. • Becslőmodellek összehasonlítása nagyobb tanulóhalmazra
Összegzés • Ígéretes eredmények • A kombinált prediktor használat (termék és folyamatmetrikák) pontosabb becslést eredményezett • További eredmények • Új tanulóhalmazon ismételt mérés • A tanulóhalmaz méretének növelésével még pontosabb becslést értünk el
Távlati célok • Hosszabb távú előrejelzés • Ne csak a következő módosítás komplexitása legyen becsülhető, hanem hosszabb távon is • 1, új tanulómodellek a következő 1,2,3, … módosítás komplexitásának előrejelzésére • 2, régi tanulómodell által becsült érték korrigálása statisztikai értékek alapján
Micro-productivity jelenség • Következő módosítás (MC): 5 perc/sor • Naív megközelítés • Köv. 10 módosítás módosításonként 30 sorral számolva: 30*10*5= 1500 perc • Micro-productivity jelenség • A 10 módosítás valószínűleg tartalmaz közös részeket (utólagos refaktorálás, átgondolatlan fejlesztés, hibás első ötlet stb.) • módosított sorok száma legfeljebb 30*10
Micro-productivity jelenség • 10 módosítás előrejelzése: • Tényleges: 250 sor • Naív: 300 sor • Ezek aránya: 250/300= 0,83 • Naív becslés korrigálása • 1500 * 0,83 = 1250 perc • Minden hosszhoz átlag (vagy medián) számítása a meglévő arányok alapján
Felmerült probléma • Tanulóadat számának újbóli növekedé-sével nem kaptunk pontosabb becslést • Rosszul választottunk • prediktorokat? • Túl sok a prediktor? • Nincs közük a target-hez? • tanuló modellt? • Paraméterezés? • Más modell?