CT9_kokybe_12

Download Report

Transcript CT9_kokybe_12

Programinės įrangos kokybės
standartai, kodo metrikos ir
kokybė, įrankiai
Kas yra kokybė?


Kokybė – abstraktus, subjektyvus,
neapibrėžtas dalykas.
Kokybė gali būti suprantama kaip:
–
–
–

Tinkamumo naudojimui laipsnis;
Atitikimas reikalavimams ir defektų nebuvimui;
Esybės charakteristikų visuma, daranti įtaką
nusakytų numanomų poreikių patenkinimui (ISO
9000).
Kokybė turi didelę reikšmę vartotojų tarpe.
Programinės įrangos kokybė




Vienas svarbiausių programinės įrangos išorinių
atributų;
Daugybė programinės įrangos kokybės apibrėžimų;
Laipsnis kuriuo programinė įranga atitinka
pageidaujamų atributų kombinaciją (IEEE STD 1061,
1993);
Atitikimas: (Roger Pressman)
–
–
–
Funkciniams ir našumo reikalavimams;
Aiškiai dokumentuotiems kūrimo standartams;
Numanomoms charakteristikoms, kurių tikimasi iš
profesionaliai sukurtos programinės įrangos.
Programinės įrangos kokybės modelis


Programinės įrangos kokybės savoka
įprasminama modeliu, kuriuo nusakomos
sudedamosios programinės įrangos
charakteristikos ir ryšiai tarp jų.
Egzistuoja keletas pripažintų programinės
įrangos kokybės modelių:
–
–
–
McCall (1977) ir Boehm (1978);
COQUAMO (Gilb, Kitchenham ir Walker);
ISO 9126 ir IEEE 1061 (1992).
McCall’o kokybės trikampis


Gamintas JAV oro pajėgoms, siūlytas DoD, bet
netapo departamento standartu;
Programinės įrangos kokybė nusakoma kreipiant
pagrindinį dėmesį į šiuos aspektus:
–
–
–

Produkto veikimą (programos veikimo charakteristikos);
Produkto priežiūrą (galimybės keisti programą);
Produkto pernešamumą (galimybės pritaikyti programą
kitoms aplinkoms).
Šiems trims aspektams nusakyti naudojama 11
kokybės faktorių ir atitinkamų metrikų.
McCall’o kokybės trikampis
McCall’o kokybės faktoriai




Correctness (tikslumas): ar daro tiksliai tai
ką reikia;
Reliability (patikimumas): kaip laiko bėgyje
išlieka veikimo tikslumas;
Efficiency (efektyvumas): ar atitinkamoje
techninėje įrangoje veiks taip gerai kaip tik
gali;
Integrity (vientisumas): čia – saugumo
atributai;
McCall’o kokybės faktoriai




Usability (panaudojamumas): kaip patogiai
galima naudotis;
Maintainability (priežiūra): kaip patogiai
galima prižiūrėti, taisyti programinę įrangą;
Flexibility (lankstumas): kaip lanksčiai
galima keisti programinę įrangą;
Testability (testuojamumas): kokių pastangų
reikia programinės įrangos validavimui;
McCall’o kokybės faktoriai



Portability (pernešamumas): kokios
pastangos reikalingos diegiant, perkeliant
programinę įrangą į kitas platformas;
Reusability (daugkartinis panaudojimas): ar
galima programinę įrangą ar jos
komponentus taikyti daugkartiniam
panaudojimui);
Interoperability (sąveika): kokiu laipsniu
programa gali sąveikauti su kitomis
sistemomis.
McCall’o kokybės metrikos









Auditability (auditas);
Accuracy (tikslumas);
Communication commonality (komunikavimo
bendrumas, atitikimas standartams);
Completeness (išbaigtumas);
Conciseness (glaustumas);
Data commonality (duomenų struktūrų bendrumas);
Error tolerance (klaidų toleravimas);
Execution efficiency (vykdymo efektyvumas);
Expandability (išplečiamumas);
McCall’o kokybės metrikos








Hardware independence (nepriklausomumas nuo
techninės įrangos);
Instrumentation (CASE įrankių panaudojamumas);
Modularity (moduliškumas);
Operability (naudojamumas);
Security (apsauga);
Self-documentation (dokumentacija);
Simplicity (paprastumas);
...
McCall’o kokybės faktorių ir metrikų
sąryšis
Įvertinimas pagal McCall’o modelį

Fq=c1m1+c2m2+…+cnmn
–
–
–


Fq – programinės įrangos kokybės įvertis;
c – regresijos (svoriniai) koeficientai;
m – metrikų įverčiai atitinkamiems kokybės
faktoriams;
McCall’as siūlo naudoti 10 balų skalę;
Koeficientai priklauso nuo panaudojimo
srities ir kitka (t.y. reguliuojami pagal poreikį).
Boehm kokybės modelis
ISO/IEC 9126


Pirmas leidinys: ISO/IEC 9126:1991;
Vėliausias leidinys: ISO/IEC 9126:2001. Turi
keturias dalis:
–
–
–
–
Kokybės modelis (quality model);
Išorinės metrikos (external metrics);
Vidinės metrikos (Internal metrics);
Kokybės naudojime metrikos (quality in use
metrics);
ISO/IEC 9126 (įvadas)


ISO/IEC 9126 produkto įvertinimui teikia 6
charakteristikas vertinimui ir vertinimo aprašymą;
ISO/IEC 9126 pakeistas 2 standartais:
–
–

ISO/IEC 9126 (pr. produkto kokybė);
ISO/IEC 14598 (pr. produkto vertinimas);
ISO/IEC 9126 gali būti naudojamas:
–
–
Programinės įrangos produkto įvertinimui;
Funkcinių ir nefunkcinių programinės įrangos reikalavimų
nusakymui (papildymui).
ISO/IEC 9126 kokybės modelis (1 dalis)
ISO/IEC 14598 (produkto vertinimas
gyvavimo cikle)
Hierarchinis kokybės modelis (ISO/IEC
9126)



Kokybės modelis turi paprastą hierarchiją:
modelis sudarytas iš charakteristikų, kurių
kiekviena turi atitinkamas subcharakteristikas;
Praktiškai neįmanoma išmatuoti visas vidines
ir išorines sub-charakteristikas visoms didelio
produkto dalims;
ISO/IEC 9126 turi 6 charakteristikas vidinei ir
išorinei kokybei vertinti ir 4 charakteristikas
“kokybei naudojime” vertinti.
Išorinė ir vidinė kokybė
Funkcionalumo charakteristika
F
U
N
C
T
I
O
N
A
L
I
T
Y
Suitability
Attributes of software that bear on the presence and appropriateness of a set of functions
for specified tasks.
Accurateness
Attributes of software that bear on the provision of right or agreed results or effects.
Interoperability
Attributes of software that bear on its ability to interact with specified systems.
Compliance
Attributes of software that make the software adhere to application related standards or
conventions or regulations in laws and similar prescriptions.
Security
Attributes of software that bear on its ability to prevent unauthorized access, whether
accidental or deliberate, to programs or data.
Patikimumo charakteristika
R
E
L
I
A
B
I
L
I
T
Y
Maturity
Attributes of software that bear on the frequency of failure by faults in the software.
Fault tolerance
Attributes of software that bear on its ability to maintain a specified level of performance in
case of software faults or of infringement of its specified interface.
Recoverability
Attributes of software that bear on the capability to re-establish its level of performance and
recover the data directly affected in case of a failure and on the time and effort needed
for it.
Panaudojamumo charakteristika
U
S
A
B
I
L
I
T
Y
Understandability
Attributes of software that bear on the users effort for recognizing the logical concept and
its applicability.
Learnability
Attributes of software that bear on the users effort for learning its application.
Operability
Attributes of software that bear on the users effort for operation and operation control.
Efektyvumo charakteristika
E
F
F
I
C
I
E
N
C
Y
Time behaviour
Attributes of software that bear on response and processing times and on throughput rates
in performances its function.
Resource behavior
Attributes of software that bear on the amount of resource used and the duration of such
use in performing its function.
Priežiūros (palaikymo) charakteristika
M
A
I
N
T
A
I
N
A
B
I
L
I
T
Y
Analyzability
Attributes of software that bear on the effort needed for diagnosis of deficiencies or causes
of failures, or for identification of parts to be modified.
Changeability
Attributes of software that bear on the effort needed for modification, fault removal or for
environmental change.
Stability
Attributes of software that bear on the risk of unexpected effect of modifications.
Testability
Attributes of software that bear on the effort needed for validating the modified software.
Pernešamumo charakteristika
P
O
R
T
A
B
I
L
I
T
Y
Adaptability
Attributes of software that bear on the opportunity for its adaptation to different specified
environments without applying other actions or means than those provided for this
purpose for the software considered.
Installability
Attributes of software that bear on the effort needed to install the software in a specified
environment.
Conformance
Attributes of software that make the software adhere to standards or conventions relating to
portability.
Replaceability
Attributes of software that bear on opportunity and effort using it in the place of specified
other software in the environment of that software.
Kokybė naudojime

Požiūris į kokybę iš vartotojo perspektyvos.
Išorinės metrikos (2 dalis)


Ši dalis ISO/IEC 9126 standarte skirta
aprašyti metodus kaip nustatyti ir kiekybiškai
įvertinti išorinių charakteristikų ir subcharakteristikų atributus;
Išorinės metrikos naudojamos išmatuoti
produkto kokybę įvertinant sistemos elgseną.
Išorinės metrikos turėtų būti vertinamos
testavimo ir naudojimo etapuose.
Metrikų lentelė









Metrikos pavadinimas;
Metrikos tikslas;
Taikymas (taikymo būdas);
Matavimai, skaičiavimo formulės;
Išmatuotos reikšmės interpretacija;
Matavimo tipai;
Įėjimo parametrai;
Sąsaja su ISO/IEC 12207 standartu;
Perspektyva (vartotojo, kūrėjo ir pan.)
Išorinių metrikų lentelės pavyzdys
Vidinės metrikos (3 dalis)


Ši dalis ISO/IEC 9126 standarte skirta
aprašyti metodus kaip nustatyti ir kiekybiškai
įvertinti vidinių charakteristikų ir subcharakteristikų atributus iš sistemos kūrėjo
(prižiūrėtojo) perspektyvos;
Vidiniai programinės įrangos atributai yra
vidinių metrikų bazė. Vidines metrika galima
vertinti jau pradiniuose kūrimo etapuose.
Vidinių metrikų lentelės pavyzdys
Kokybė naudojime (4 dalis)


Kokybė iš vartotojo požiūrio taško;
Kokybės naudojime metrikos vertina laipsnį,
kuriuo produktas atitinka atitinkamo vartotojo
poreikius pasiekiant efektyvumo,
produktyvumo, saugos ir pasitenkinimo
tikslus tam tikrame vartojimo kontekste.
Kokybės naudojime metrikos




Efektyvumas: programinės įrangos sugebėjimas
pasiekti vartotojo tikslus su reikiamu tikslumu ir
pilnumu.
Produktyvumas: programinės įrangos sugebėjimas
leisti vartotojui pasiekti atitinkamą efektyvumą su
tam tikrais resursais.
Sauga: programinės įrangos sugebėjimas užtikrinti
nustatytą rizikos laipsnį, kuris įtakoją galimą žalą
žmonėms, technikai, nuosavybei ir aplinkai.
Pasitenkinimas: programinės įrangos sugebėjimas
įgalinantis vartotojus dirbti su pasitenkinimu.
Kodo metrikos
Kaip išmatuoti įvairias vidines metrikas?



Sąsajų metrikos;
Paveldimumo metrikos;
Dydžio ir sudėtingumo metrikos.
Kodo metrikos




CBO (Coupling Between Object classes) –
susietų klasių skaičius;
DIT (Depth of Inheritance Tree) –
maksimalus paveldimumo kelias;
LCOM-CK (Lack of Cohesion of Methods) –
metodų sąsajų nepakankamumas;
LCOM-HS (Lack of Cohesion of Methods) –
metodų sąsajų nepakankamumas (kiti
autoriai);
Kodo metrikos





LOC (Lines Of Code) – kodo eilučių skaičius;
NOC (Number Of Children) – vaikinių (tik pirmos
eilės) klasių kiekis;
NOM (Number Of Methods) – klasės metodų
kiekis;
RFC (Response For a Class) – metodų
atsakančių į objektui siunčiamas žinutes, kiekis;
WMC (Weighted Methods per Class) – klasės
metodų svorių suma (ciklomatinių svorių).
Sąsaja su ISO/IEC 9126 (pavyzdys)


Pirma eilutė – charakteristika, kurią nusako 4
sub-charakteristikos (3 eilutė);
Kodo metrikų (5 eilutė) įtaką atitinkamai subcharakteristikai nusako svoris (4 eilutė).
Įrankiai metrikų įvertinimui




Analyst4j – įrankis Java programų analizei (kaip
nepriklausomas arba kaip įskiepis Eclipse aplinkai);
CCCC – komandinės eilutės įrankis C++ ir Java
kodo analizei;
Chidamber & Kemmerers Java Metrics –
komandinės eilutės įrankis skirtas skaičiuoti autorių
sudarytoms objektinėms metrikoms iš sukompiliuotų
Java programų.
Dependency Finder – įrankių rinkinys kompiliuoto
Java kodo analizei.
Įrankiai metrikų įvertinimui





Eclipse Metrics Plugin (1.3.6, 3.4) – kodo sąsajų
analizatorius Eclipse aplinkai.
OOMeter – eksperimentinis įrankis įvertinantis Java,
C# kodą bei UML modelius (per XMI).
Semmle – Eclipse įskiepis, teikiantis panašią į SQL
kalbą skirtą objektinio kodo analizei.
Understand for Java – atvirkštinės inžinerijos, kodo
nagrinėjimo ir metrikų įrankis Java tekstams.
VizzAnalyzer – kokybės analizės įrankis. Naudoja
kodą, projekto specifikacijas ir dokumentaciją tam,
kad atlikti kokybės analizę.
Įrankiai ir kodo metrikos
Ačiū už dėmesį 
Priedai (WMC)
Priedai (RFC)
Priedai (LCOM)
Priedai (COB)
Priedai (DIT)
Priedai (NOC)