m´ ert´ ekek Szoftvermetrik´ ak ´ es min˝ os´ egmenedzsment
Bod´ o Zal´ an GQM
m´ert´ekek ( ( (((a Szoftver( metrik´ k ´es min˝os´egmenedzsment 4. GQM. A szoftver m´erete
Bels˝ o´ es k¨ uls˝ o attrib´ utumok A szoftver m´ eret´ enek m´ er´ ese Halstead-f´ ele m´ ert´ ekek Ciklomatikus komplexit´ as
Bod´ o Zal´an
Szoftver u ´jrafelhaszn´ alts´ aga
Babe¸s–Bolyai Tudom´ anyegyetem Matematika ´ es Informatika Kar
1/27
m´ ert´ ekek Szoftvermetrik´ ak ´ es min˝ os´ egmenedzsment
GQM
GQM – Goal, Question, Metric I Victor Basili (1940–), University of Maryland professzora1 I a m´ er´esi modell: I I
I
Goal (konceptu´ alis szint): soroljuk fel a f˝ o c´elokat Question (oper´ aci´ os szint): minden c´elhoz rendelj¨ unk k´erd´eseket, melyek megv´ alaszol´ as´ aval eld¨ onthet˝ o, hogy el´ert¨ uk-e a c´elt Metric (kvantitat´ıv szint): hat´ arozzuk meg, hogy mit kell m´ern¨ unk a k´erd´esek megv´ alaszol´ as´ ahoz
Bod´ o Zal´ an GQM Bels˝ o´ es k¨ uls˝ o attrib´ utumok A szoftver m´ eret´ enek m´ er´ ese Halstead-f´ ele m´ ert´ ekek Ciklomatikus komplexit´ as Szoftver u ´jrafelhaszn´ alts´ aga
P´elda (Fenton, 85. old)
1 Goal Question Metric Paradigm, https://www.cs.umd.edu/~basili/publications/technical/T89.pdf 2/27
Bels˝o ´es k¨uls˝o attrib´utumok
m´ ert´ ekek Szoftvermetrik´ ak ´ es min˝ os´ egmenedzsment
Bod´ o Zal´ an
Mit m´er¨ unk? I
Folyamat/processz (process) – szoftverrel kapcsolatos tev´ekenys´egek
I
Term´ek/produktum (product) – valamilyen k´esz´ıtm´eny, ´atadand´ o vagy dokumentum, amely egy folyamat-tev´ekenys´eg eredm´enye
I
Er˝ oforr´as (resource) – egy folyamat-tev´ekenys´eg ´altal megk¨ ovetelt entit´asok
GQM Bels˝ o´ es k¨ uls˝ o attrib´ utumok A szoftver m´ eret´ enek m´ er´ ese Halstead-f´ ele m´ ert´ ekek Ciklomatikus komplexit´ as Szoftver u ´jrafelhaszn´ alts´ aga
Attrib´ utumok oszt´alyoz´asa: I
egy F/T/E bels˝ o attrib´ utumai azok, melyek az entit´ason k¨ ozvetlen¨ ul m´erhet˝ ok; egy ilyen attrib´ utum az entit´as vizsg´alata ´altal m´erhet˝ o, f¨ uggetlen¨ ul annak viselked´es´et˝ol
I
egy F/T/E k¨ uls˝ o attrib´ utumat csak u ´gy m´erhet˝ ok, ha megfigyelj¨ uk, hogyan hat ki a F/T/E a k¨ ornyezet´ere; itt az entit´as viselked´ese a fontos, nem az entit´as maga
3/27
P´elda I
F: bels˝ o: valaminek az id˝ otartama (pl. fejleszt´es), er˝ ofesz´ıt´es, adott t´ıpus´ u incidensek sz´ama; k¨ uls˝ o: megfigyelhet˝ os´eg, stabilit´as
m´ ert´ ekek Szoftvermetrik´ ak ´ es min˝ os´ egmenedzsment
Bod´ o Zal´ an GQM Bels˝ o´ es k¨ uls˝ o attrib´ utumok
I
T: bels˝ o: m´eret, er˝ ofesz´ıt´es, k¨ olts´eg; k¨ uls˝ o: reliability, maintainability, usability
A szoftver m´ eret´ enek m´ er´ ese
I
E: bels˝ o: m´eret (pl. fejleszt˝ oi csapat m´erete), k¨ olts´eg (pl. fejleszt´esi eszk¨ oz¨ ok´e); k¨ uls˝ o: fejleszt˝ ok produktivit´asa
Ciklomatikus komplexit´ as
Halstead-f´ ele m´ ert´ ekek
Szoftver u ´jrafelhaszn´ alts´ aga
4/27
m´ ert´ ekek Szoftvermetrik´ ak ´ es min˝ os´ egmenedzsment
A szoftver m´eret´enek m´er´ese
Bod´ o Zal´ an
Követelmény Hossz
GQM
Terv
LOC
Kód
Halstead
Bels˝ o´ es k¨ uls˝ o attrib´ utumok A szoftver m´ eret´ enek m´ er´ ese Halstead-f´ ele m´ ert´ ekek
Funkciópont Szoftver mérete
Funkcionalitás
Feature pont
Ciklomatikus komplexit´ as Szoftver u ´jrafelhaszn´ alts´ aga
Objektumpont Use-case pont Komplexitás
Ciklomatikus komplexitás Újrafelhasználtság szintje
Újrafelhasználtság (Reuse)
Újrafelhasználtság gyakorisága Újrafelhasználtság sűrűsége
5/27
m´ ert´ ekek Szoftvermetrik´ ak ´ es min˝ os´ egmenedzsment
K´ odsorok sz´ ama (LOC) I
LOC – Lines Of Code (egyes helyeken SLOC (Source Lines Of Code)) I I I
I I
dokument´al´as m´ert´eke, s˝ ur˝ us´ege: CLOC /LOC hogyan sz´amolj´ak? I I I I
I
NCLOC vagy ELOC – non-commented LOC, effective LOC CLOC – commented LOC LOC = NCLOC + CLOC
Bod´ o Zal´ an GQM Bels˝ o´ es k¨ uls˝ o attrib´ utumok A szoftver m´ eret´ enek m´ er´ ese Halstead-f´ ele m´ ert´ ekek Ciklomatikus komplexit´ as Szoftver u ´jrafelhaszn´ alts´ aga
minden sort (¨ ures sorokat is) mindent, kiv´eve az u ¨res sorokat ´es a kommenteket csak az utas´ıt´ asok sz´ aml´ al´ asa stb.
KLOC – 103 sor, MLOC – 106 sor (milli´ o), GLOC – 109 sor (milli´ard)
El˝ onyei: I
egyszer˝ u ´es k¨ onnyen automatiz´alhat´ o
I
korrel´al a programoz´asi er˝ ofesz´ıt´essel (´es a k¨ olts´eggel) 6/27
m´ ert´ ekek Szoftvermetrik´ ak ´ es min˝ os´ egmenedzsment
H´ atr´ anyai:
I
nem pontos/hom´alyos defin´ıci´ o
I
nyelvf¨ ugg˝ o
GQM
I
nem alkalmazhat´ o a fejleszt´es korai szakaszaiban
Bels˝ o´ es k¨ uls˝ o attrib´ utumok
I
f¨ ugg a programoz´ o j´artass´ag´at´ ol, a haszn´alt fejleszt´esi metodol´ ogi´at´ ol
A szoftver m´ eret´ enek m´ er´ ese
I
a k´ odsorok sz´am´anak indokolatlan n¨ ovel´es´ere ¨ oszt¨ on¨ ozhet
Ciklomatikus komplexit´ as
Oper´ aci´ os rendszer Windows NT 3.1 (1993) Windows NT 3.5 (1994) Windows NT 4.0 (1996) Windows 2000 (2000) Windows XP (2001) Windows Server 2003 (2003)
Bod´ o Zal´ an
MLOC 4–5 7–8 11–12 >29 45 50
Halstead-f´ ele m´ ert´ ekek
Szoftver u ´jrafelhaszn´ alts´ aga
t´ abl´ azat : N´eh´ any oper´ aci´ os rendszerekre vonatkoz´ o adat (Wikipedia).
7/27
Halstead-f´ele m´ert´ekek I
I
Maurice Howard Halstead, 1977 (Elements of Software Science) programsz´ ot´ ar: n = n1 + n2 , n1 a k¨ ul¨ onb¨ oz˝ o oper´atorok sz´ama, n2 a k¨ ul¨ onb¨ oz˝ o operandusok sz´ama;
I
programhossz: N = N1 + N2 , N1 az oper´atorok ¨ osszes el˝ ofordul´asainak sz´ama, N1 az operandusok ¨ osszes el˝ ofordul´asainak a sz´ama; ˆ = n1 log2 n1 + n2 log2 n2 becs¨ ult programhossz: N
I
n1∗ – a k¨ ul. oper´atorok minim´alis sz´ama
I
n2∗ – a k¨ ul. operandusok minim´alis sz´ama program t´ arhelym´ erete: V = N · log2 n
I
I
I I
I
m´ ert´ ekek Szoftvermetrik´ ak ´ es min˝ os´ egmenedzsment
Bod´ o Zal´ an GQM Bels˝ o´ es k¨ uls˝ o attrib´ utumok A szoftver m´ eret´ enek m´ er´ ese Halstead-f´ ele m´ ert´ ekek Ciklomatikus komplexit´ as Szoftver u ´jrafelhaszn´ alts´ aga
a program fizikai megval´ os´ıt´ as´ at jellemzi a k¨ ovetkez˝ ok´eppen ´ertelmezhet˝ o: adott program-megval´ os´ıt´ asnak a (minim´ alis) m´erete; minim´ alis m´eret alatt az oper´ atorok ´es operandusok biteken val´ o (egyenletes eloszl´ as mellett optim´ alis) t´ arol´ as´ at ´ertj¨ uk egyszer˝ ubben: a program t´ arol´ as´ ahoz sz¨ uks´eges minim´ alis sz´ am´ u bit 8/27
Egy kis kit´ er˝ o Mi´ert nem minim´alis sz´am´ u bitsz´amot hat´aroz meg a log2 n? I mert nem kell mindent ugyanannyi biten t´ arolni I a gyakoribb szimb´ olumokat kevesebb biten kellene t´arolnunk, a kev´esb´e gyakorikat pedig t¨ obb biten I megold´ as: optim´alis prefix k´ odok haszn´alata I
I
I
prefix k´ od = a k´ odszavak k¨ oz¨ ul egyik sem folytat´ asa a m´ asiknak a prefix k´ od megfelel egy f´ anak, ahol minden lev´elhez val´ o eljut´ askor egy k´ odsz´ ot kapunk optim´ alis k´ od (ha ismerj¨ uk a szimb´ olumok megjelen´esi val´ osz´ın˝ us´egeit): Huffman-k´ od (David A. Huffman, 1925–1999, inform´ aci´ o- ´es k´ odelm´eleti probl´em´ akkal foglalkozott)
m´ ert´ ekek Szoftvermetrik´ ak ´ es min˝ os´ egmenedzsment
Bod´ o Zal´ an GQM Bels˝ o´ es k¨ uls˝ o attrib´ utumok A szoftver m´ eret´ enek m´ er´ ese Halstead-f´ ele m´ ert´ ekek Ciklomatikus komplexit´ as Szoftver u ´jrafelhaszn´ alts´ aga
ALG 1 1: Minden forr´asszimb´olumhoz egy levelet rendel¨unk. 2: while 1 db. cs´ucshoz nem jutunk do 3: Megkeress¨ uk a k´ et legkisebb val´ osz´ın˝ us´ eggel rendelkez˝ o cs´ ucsot. 4: Ezeket ¨ osszevonjuk egy cs´ ucsba, az ´ elekhez rendre 0-t ´ es 1-et rendel¨ unk. A cs´ ucshoz rendelt val´ osz´ın˝ us´ eg a k´ et val´ osz´ın˝ us´ eg ¨ osszege lesz.
5: end while 6: Egy szimb´olum k´odj´at megkapjuk, ha a gy¨ok´ert˝ol indulva ¨osszeolvassuk a szimb´ olumhoz vezet˝ ou ´ton lev˝ o c´ımk´ eket. 9/27
Huffman-k´od Legyen X = {x1 , . . . , x5 }, p(x1 ) = 0.35, p(x2 ) = 0.2, p(x3 ) = 0.2, p(x4 ) = 0.15, p(x5 ) = 0.1, Y = {0, 1}. Keress¨ uk meg az ehhez tartoz´ o Huffman-k´ odot.
m´ ert´ ekek Szoftvermetrik´ ak ´ es min˝ os´ egmenedzsment
Bod´ o Zal´ an GQM Bels˝ o´ es k¨ uls˝ o attrib´ utumok A szoftver m´ eret´ enek m´ er´ ese Halstead-f´ ele m´ ert´ ekek Ciklomatikus komplexit´ as Szoftver u ´jrafelhaszn´ alts´ aga
x1 k´odja teh´at 11, m´ıg x5 -´e 100.
10/27
m´ ert´ ekek Szoftvermetrik´ ak ´ es min˝ os´ egmenedzsment
A Huffman-k´ od optim´ alis k´ od. I
I
az ´atlagos k´ odsz´ ohosszt akarjuk minimaliz´alni a val´ osz´ın˝ us´egek f¨ uggv´eny´eben ´atlagos k´ odsz´ ohossz: E |f (X )| =
Bels˝ o´ es k¨ uls˝ o attrib´ utumok
n X
p(xi )|f (xi )|
i=1
ahol I I I
Bod´ o Zal´ an GQM
X a forr´ as´ ab´ec´e val´ osz´ın˝ us´egi v´ altoz´ oja f a k´ od f (xi ) az xi k´ odszav´ anak a hossza
A szoftver m´ eret´ enek m´ er´ ese Halstead-f´ ele m´ ert´ ekek Ciklomatikus komplexit´ as Szoftver u ´jrafelhaszn´ alts´ aga
P´elda Legyen X = {a, b, c, d, e, f , g }, p(a) = 0.2, p(b) = 0.2, p(c) = 0.15, p(d) = 0.15, p(e) = 0.12, p(f ) = 0.11, p(g ) = 0.07. Huffman: E |f (X )| = 2.78 Shannon–Fano: E |f (X )| = 2.8
11/27
I
minim´ alis t´ arhelym´ eret: V ∗ = (2 + n2∗ ) log2 (2 + n2∗ ) I
I
∗
program absztrakci´ os szintje (level): L = V /V I
I I I
I
I
egy algoritmus implement´ al´ as´ ahoz sz¨ uks´eges szellemi tev´ekenys´eg
Bod´ o Zal´ an GQM Bels˝ o´ es k¨ uls˝ o attrib´ utumok A szoftver m´ eret´ enek m´ er´ ese Halstead-f´ ele m´ ert´ ekek Ciklomatikus komplexit´ as Szoftver u ´jrafelhaszn´ alts´ aga
programoz´ asi id˝ o (programming time): 2n T = E /S = n1 N22nN2log , ahol S I
I
mennyire ide´ alisan ´ır´ odott a program
ˆ = 2n2 becs¨ ult absztrakci´ os szint (?): L n1 N2 program neh´ ezs´ ege (difficulty): D = 1/L sz¨ uks´ eges er˝ ofesz´ıt´ es (programming effort): N log2 n E = VL = n1 N22n 2 I
I
magyar´ azat (?): minim´ alisan n1∗ = 2 pl. C-ben, mert sz¨ uks´eges egy main f¨ uggv´eny ´es a (. . . ) z´ ar´ ojelek
m´ ert´ ekek Szoftvermetrik´ ak ´ es min˝ os´ egmenedzsment
S a Stroud-f´ele (John M. Stroud, pszichol´ ogus) sz´ am, az emberi agy 1 m´ asodperc alatt v´egzett alapvet˝ o megk¨ ul¨ onb¨ oztet´eseinek (mental discriminations) sz´ ama ezt szoftverfejleszt˝ ok eset´eben 18-ra becs¨ ulik (P. G. Hamer, G. D. Frewin: M. H. Halstead’s Software Science - A Critical Examination. 1982.), ´ altal´ aban pedig 5 ´es 20 k¨ oz¨ otti ´ert´ek
program intelligens tartalma vagy inform´aci´ otartalma ˆ (intelligent content): I = LV stb. 12/27
m´ ert´ ekek Szoftvermetrik´ ak ´ es min˝ os´ egmenedzsment
P´elda
Bod´ o Zal´ an
cin >> a ; cin >> b ; a = a + b; b = a - b; a = a - b; cout << a << " ," << b ;
GQM Bels˝ o´ es k¨ uls˝ o attrib´ utumok A szoftver m´ eret´ enek m´ er´ ese Halstead-f´ ele m´ ert´ ekek
I
n1 = 7 (cin, >>, =, +, -, cout, ”<<)
I
n2 = 3 (a, b, ",")
I
N1 = 14
I
N2 = 14
I
programhossz: N = N1 + N2 = 28
I
becs¨ ult programhossz: ˆ = n1 log2 n1 + n2 log2 n2 = 19.6515 + 4.7549 = 24.4064 N
I
t´arhelym´eret: V = 28 log2 10 = 93.014 ˆ = 2n2 = 0.0612 becs¨ ult absztrakci´ os szint: L
I
Ciklomatikus komplexit´ as Szoftver u ´jrafelhaszn´ alts´ aga
n1 N 2
13/27
A Halstead-f´ele m´ert´ekek kritik´ai: I
val´ oj´aban assembly nyelvekre lett kital´alva
I
bizonyos m´ert´ekek defin´ıci´ oja nem pontos, nincsenek indokolva a dolgok
I
hogyan sz´amoljuk ki az
n2∗
´ert´ek´et?
m´ ert´ ekek Szoftvermetrik´ ak ´ es min˝ os´ egmenedzsment
Bod´ o Zal´ an GQM Bels˝ o´ es k¨ uls˝ o attrib´ utumok A szoftver m´ eret´ enek m´ er´ ese Halstead-f´ ele m´ ert´ ekek Ciklomatikus komplexit´ as Szoftver u ´jrafelhaszn´ alts´ aga
14/27
Ciklomatikus komplexit´as I
I
I
Thomas J. McCabe, 1976 (A Complexity Measure, IEEE Transactions on Software Engineering) gr´afelm´eletben: ciklomatikus sz´ am = line´arisan f¨ uggetlen k¨ or¨ ok sz´ama egy teljesen ¨ osszef¨ ugg˝ o gr´afban mi mit jelent? I
I
I
teljesen ¨ osszef¨ ugg˝ o gr´ af = b´ armely cs´ ucsb´ ol b´ armely cs´ ucs el´erhet˝ o line´ arisan f¨ uggetlen k¨ or¨ ok = a k¨ or¨ ok nem ´ırhat´ ok fel valamilyen, a halmazban szerepl˝ o m´ as k¨ or¨ ok line´ aris kombin´ aci´ ojak´ent
m´ ert´ ekek Szoftvermetrik´ ak ´ es min˝ os´ egmenedzsment
Bod´ o Zal´ an GQM Bels˝ o´ es k¨ uls˝ o attrib´ utumok A szoftver m´ eret´ enek m´ er´ ese Halstead-f´ ele m´ ert´ ekek Ciklomatikus komplexit´ as Szoftver u ´jrafelhaszn´ alts´ aga
k´eplet: r =e −n+1
(val´ oj´aban r = e − n + c)
vagy ahol I I I
e az ´elek sz´ ama n a csom´ opontok (cs´ ucsok) sz´ ama c az o ¨sszef¨ ugg˝ o komponensek sz´ ama
15/27
m´ ert´ ekek Szoftvermetrik´ ak ´ es min˝ os´ egmenedzsment
Bod´ o Zal´ an
Ha c komponens¨ unk van: GQM
r=
c X
ei −
i=1
c X i=1
ni +
c X
1=e −n+c
i=1
Bels˝ o´ es k¨ uls˝ o attrib´ utumok A szoftver m´ eret´ enek m´ er´ ese Halstead-f´ ele m´ ert´ ekek
Kapcsolat a s´ıkgr´afokkal: I
Leonhard Euler (1707–1783, sv´ajci matematikus): s´ıkgr´afok
I
s´ıkgr´ af = felrajzolhat´ ou ´gy, hogy az ´elek ne metssz´ek egym´ast
I
Euler bebizony´ıtotta, hogy egy s´ıkgr´af eset´en igaz a k¨ov. k´eplet: 2=n−e +r
Ciklomatikus komplexit´ as Szoftver u ´jrafelhaszn´ alts´ aga
ahol I I
I
n, e ua. mint ezel˝ ott r a r´egi´ ok sz´ ama, azaz az ´elek ´ altal alkotott, egym´ ast´ ol elhat´ arolt ter¨ uletek sz´ ama (nem o ¨sszet´evesztend˝ oa ciklomatikus sz´ ammal!)
ha lesz´am´ıtjuk a k¨ uls˝ o ter¨ uletet, megkapjuk a ciklomatikus sz´amot 16/27
m´ ert´ ekek Szoftvermetrik´ ak ´ es min˝ os´ egmenedzsment
A ciklomatikus komplexit´ as: v (G ) = e − n + 2c
vagy
v (G ) = p + 1
ahol I
I
I
Bod´ o Zal´ an GQM
p a predik´atumcs´ ucsok (predicate nodes) sz´ama (predik´atumcs´ ucs = 2-es kimen˝ o foksz´am´ u cs´ ucs, azaz a d¨ ont´esi/el´agaz´asi cs´ ucsok) (Mills. Mathematical Foundations for Structured Programming. IBM, 1972.) vez´ erl´ esfolyamgr´ af (control flow graph, CFG) = a program utas´ıt´asainak szekvenci´aja, az utas´ıt´asok egym´asut´anis´ag´at ´ırja le ir´any´ıtott gr´affal ´abr´azoljuk: minden csom´ opont a program egy utas´ıt´as´anak felel meg, az ´elek a k¨ ovetkez˝ o utas´ıt´ast mutatja I
I I I
Bels˝ o´ es k¨ uls˝ o attrib´ utumok A szoftver m´ eret´ enek m´ er´ ese Halstead-f´ ele m´ ert´ ekek Ciklomatikus komplexit´ as Szoftver u ´jrafelhaszn´ alts´ aga
proced´ ura csom´ opontok (procedure nodes) – kimen˝ o foksz´ am =1 predik´ atum csom´ opontok – kimen˝ o foksz´ am = 2 kezd˝ ocs´ ucs – bemen˝ o foksz´ am = 0 termin´ alis cs´ ucs – kimen˝ o foksz´ am = 0
(Ha ciklomatikus sz´ am → ciklomatikus komplexit´ as: egy k´ epzeletbeli ir´ any´ıtott ´ elt h´ uzunk a termin´ alis cs´ ucsb´ ol a kezd˝ ocs´ ucsba – ez magyar´ azza a +1-et a k´ epletben) 17/27
I
m´as megfogalmaz´as: f¨ uggetlen utak sz´ama a kezd˝ ocs´ ucsb´ol a termin´alis cs´ ucsba
I
f¨ uggetlen utak: a vez´erl´esfolyamgr´afban egy u ´t f¨ uggetlen az el˝ oz˝ okt˝ ol, ha legal´abb egy u ´j ´el behozatala
m´ ert´ ekek Szoftvermetrik´ ak ´ es min˝ os´ egmenedzsment
Bod´ o Zal´ an GQM Bels˝ o´ es k¨ uls˝ o attrib´ utumok A szoftver m´ eret´ enek m´ er´ ese Halstead-f´ ele m´ ert´ ekek Ciklomatikus komplexit´ as Szoftver u ´jrafelhaszn´ alts´ aga
18/27
m´ ert´ ekek Szoftvermetrik´ ak ´ es min˝ os´ egmenedzsment
S´ıkgr´af, ciklomatikus sz´am ´es komplexit´as
Bod´ o Zal´ an
I a
b
d
c
e
f
line´arisan f¨ uggetlen k¨ or¨ ok (a m´ar kib˝ ov´ıtett gr´afban): (abea), (beb), (abefa), (acfa), (adcfa) ((abebea) nem lehet, mert (abebea) = (ab) + (beb) + (ea))
I
ciklomatikus sz´am (a kib˝ov´ıtett gr´afban): r = 10 − 6 + 1 = 5
I
a r´egi´ ok sz´ama (a kib˝ ov´ıtetlen gr´afban) = 5
I
ciklomatikus komplexit´as (a kib˝ ov´ıtetlen gr´afban): v (G ) = 9 − 6 + 2 = 5
I
predik´atum csom´ opontok: ?
GQM Bels˝ o´ es k¨ uls˝ o attrib´ utumok A szoftver m´ eret´ enek m´ er´ ese Halstead-f´ ele m´ ert´ ekek Ciklomatikus komplexit´ as Szoftver u ´jrafelhaszn´ alts´ aga
B
19/27
m´ ert´ ekek Szoftvermetrik´ ak ´ es min˝ os´ egmenedzsment
a1
Bod´ o Zal´ an GQM
a2
d
Bels˝ o´ es k¨ uls˝ o attrib´ utumok A szoftver m´ eret´ enek m´ er´ ese
b
c
Halstead-f´ ele m´ ert´ ekek Ciklomatikus komplexit´ as Szoftver u ´jrafelhaszn´ alts´ aga
e1
e2
I
f
predik´atum csom´ opontok: a1, a2, e1, e2 ⇒ p + 1 = 5
A gyakorlatban: el´agaz´asok megsz´amol´asa2 I if, case/switch I while, repeat/do-while, for 2 Megjegyz´ es: ha o ¨sszetett a d¨ ont´ esi felt´ etel (pl. and), akkor azt is sz´ et kell bontani 20/27
´ Ervek, ellen´ ervek: I mellette: I I
I
viszonylag k¨ onny˝ u kisz´ am´ıtani, k¨ onnyen automatiz´ alhat´ o komplexit´ as objekt´ıv m´ert´eke
ellene: I
I
k´et ugyanakkora ciklomatikus komplexit´ assal rendelkez˝ o program k¨ ul¨ onb¨ oz˝ o programoz´ asi er˝ ofesz´ıt´est jelenthet ugyanazon k¨ ovetelm´enyeknek, specifik´ aci´ onak megfelel˝ o feladat k¨ ul¨ onb¨ oz˝ ok´eppen, k¨ ul¨ onb¨ oz˝ o ciklomatikus komplexit´ assal implement´ alhat´ o
m´ ert´ ekek Szoftvermetrik´ ak ´ es min˝ os´ egmenedzsment
Bod´ o Zal´ an GQM Bels˝ o´ es k¨ uls˝ o attrib´ utumok A szoftver m´ eret´ enek m´ er´ ese Halstead-f´ ele m´ ert´ ekek Ciklomatikus komplexit´ as Szoftver u ´jrafelhaszn´ alts´ aga
K¨ usz¨ ob´ ert´ ek: I
egy bizonyos ciklomatikus komplexit´as (sz´am) felett nagyobb a hiba val´ osz´ın˝ us´ege, illetve a karbantart´as, debuggol´as stb. is bonyolultabb, nehezebb
I
McCabe szerint ez a k¨ usz¨ ob´ert´ek 10 (egy modulban)
21/27
m´ ert´ ekek Szoftvermetrik´ ak ´ es min˝ os´ egmenedzsment
Bod´ o Zal´ an GQM Bels˝ o´ es k¨ uls˝ o attrib´ utumok
Ciklomatikus komplexit´ as 1 − 10 11 − 20 21 − 50 > 50
Kock´ azat Egyszer˝ u program Komplex program, m´ers´ekelt kock´azat Komplex, magas kock´azat Tesztelhetetlen program
A szoftver m´ eret´ enek m´ er´ ese Halstead-f´ ele m´ ert´ ekek Ciklomatikus komplexit´ as Szoftver u ´jrafelhaszn´ alts´ aga
t´ abl´ azat : Program/kock´ azat jellemz´ese a ciklomatikus komplexit´ as f¨ uggv´eny´eben (http://www.sze.hu/~heckenas/okt/swmet.pdf)
22/27
Szoftver u´jrafelhaszn´alts´aga I
I
a k´ od u ´jrafelhaszn´alts´ag´at (reuse) m´erj¨ uk = mekkora r´esz´et m´asoltuk, m´ odos´ıtottuk? mit jelent az u ´jrafelhaszn´al´as? I I I I I
I
teljes programok u ´jrafelhaszn´ al´ as´ at modulok´et, oszt´ alyok´et f¨ uggv´enyek´et, elj´ ar´ asok´et f¨ uggv´enyek r´eszeit stb.
m´ ert´ ekek Szoftvermetrik´ ak ´ es min˝ os´ egmenedzsment
Bod´ o Zal´ an GQM Bels˝ o´ es k¨ uls˝ o attrib´ utumok A szoftver m´ eret´ enek m´ er´ ese Halstead-f´ ele m´ ert´ ekek Ciklomatikus komplexit´ as Szoftver u ´jrafelhaszn´ alts´ aga
az u ´jrafelhaszn´alts´ag m´ert´ek´enek defini´al´asa (Software Productivity Consortium, 1995): I I
I
I
egy-az-egyben ´ atvett: ugyanaz kev´es m´ert´ekben m´ odos´ıtott: a k´ odsorok kevesebb mint 25%-a m´ odosult nagy m´ert´ekben m´ odos´ıtott: a k´ odsorok t¨ obb mint 25%-a m´ odosult u ´j k´ od: 0% ´ atvett k´ od
(William Frakes, Carol Terry. Software Reuse: Metrics and Models. ACM Computing Surveys 28(2), pp. 415-435, 1996. http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.33.8317)
23/27
Hogyan hat´ arozzuk meg k´ et dokumentum hasonl´ os´ ag´ at? 1. inform´aci´ o-visszakeres´esi modell: I
bag-of-words modell + koszinusz-hasonl´ os´ ag
2. dokumentumok ujjlenyomatainak meghat´aroz´asa ´es azok osszehasonl´ıt´asa ¨ I
MOSS: https://theory.stanford.edu/~aiken/moss/ cikk: http://theory.stanford.edu/~aiken/ publications/papers/sigmod03.pdf
3. szintaxisfa/lexik´alis elemz˝ o alapj´an: I I I
szintaxisfa/token-lista fel´ep´ıt´ese (a fa bej´ ar´ asa (pl.) preorder m´ odon) az ´ıgy kapott list´ ak o ¨sszehasonl´ıt´ asa (pl. a Levenshtein-t´ avols´ ag (edit distance) seg´ıts´eg´evel)
m´ ert´ ekek Szoftvermetrik´ ak ´ es min˝ os´ egmenedzsment
Bod´ o Zal´ an GQM Bels˝ o´ es k¨ uls˝ o attrib´ utumok A szoftver m´ eret´ enek m´ er´ ese Halstead-f´ ele m´ ert´ ekek Ciklomatikus komplexit´ as Szoftver u ´jrafelhaszn´ alts´ aga
4. leghosszabb k¨ oz¨ os alsorozat (longest common subsequence, LCS) 5. . . .
24/27
Szerkeszt´ esi t´ avols´ ag (edit distance), Levenshtein-t´ avols´ ag I hogyan (= h´ any l´ep´esben) kapjuk meg s1 -b˝ ol s2 -t (´es ford´ıtva) I h´ arom m˝ uvelet: besz´ ur´as (insert), t¨ orl´es (delete), helyettes´ıt´es (replace) M[i − 1, j − 1] +0, ha s1 [i] = s2 [j], +1, k¨ ul¨ onben, (replace) M[i, j] = min M[i − 1, j] + 1 , (insert/delete) M[i, j − 1] + 1 (insert/delete)
P´elda (Manning, Raghavan, Sch¨utze: Introduction to IR)
m´ ert´ ekek Szoftvermetrik´ ak ´ es min˝ os´ egmenedzsment
Bod´ o Zal´ an GQM Bels˝ o´ es k¨ uls˝ o attrib´ utumok A szoftver m´ eret´ enek m´ er´ ese Halstead-f´ ele m´ ert´ ekek Ciklomatikus komplexit´ as Szoftver u ´jrafelhaszn´ alts´ aga
s1 = cats, s2 = fast
25/27
m´ ert´ ekek Szoftvermetrik´ ak ´ es min˝ os´ egmenedzsment
LCS
I
X = (x1 , x2 , . . . , xm ), Y = (y1 , y2 , . . . , yn )
I
prefix: Xi = (x1 , x2 , . . . , xi ) defin´ıci´ o:
I
( LCS(Xi , Yj ) =
∅ LCS(Xi−1 , Yj−1 ).xi hosszabbik(LCS(Xi , Yj−1 ), LCS(Xi−1 , Yj ))
Bod´ o Zal´ an GQM Bels˝ o´ es k¨ uls˝ o attrib´ utumok
ha i = 0 vagy j = 0 ha xi = yj ha xi 6= yj
A szoftver m´ eret´ enek m´ er´ ese Halstead-f´ ele m´ ert´ ekek Ciklomatikus komplexit´ as
P´elda (Wikipedia)
Szoftver u ´jrafelhaszn´ alts´ aga
X = GAC , Y = AGCAT
26/27
m´ ert´ ekek Szoftvermetrik´ ak ´ es min˝ os´ egmenedzsment
Bod´ o Zal´ an GQM Bels˝ o´ es k¨ uls˝ o attrib´ utumok A szoftver m´ eret´ enek m´ er´ ese Halstead-f´ ele m´ ert´ ekek Ciklomatikus komplexit´ as Szoftver u ´jrafelhaszn´ alts´ aga
27/27