Title: Patikra ( verification) ir Atestavimas ( validation)
1Patikra ( verification) ir Atestavimas (
validation)
- Užtikrina, kad programines irangos sistemos
atitiktu vartotoju poreikius - (Ka užtikrina patikra ir atestavimas?)
2 Tikslai
- Pristatyti programines irangos patikra
(verification) ir atestavima ( validation) ir
aptarti ju skirtumus - Apibudinti programu peržiuros procesus ir ju
itaka tikrinimui ir atestavimui ( TA) - Paaiškinti statine analize kaip atestavimo metoda
- Apibudinti bedefektini (Cleanroom) programines
irangos kurimo procesa
3Nagrinejamos temos
- Patikros ir atestavimo planavimas
- Programines irangos peržiura
- Automatizuota statine analize
- Bedefektinis programines irangos kurimas
4Patikra ir Atestavimas
- Patikra
- Ar mes teisingai kuriame produkta?
- Programine iranga turi atitikti specifikacija
- Atestavimas
- Ar mes kuriame teisinga produkta?
- Programine iranga turi daryti tai ko vartotojas
reikalauja - ( I kokius klausimus atsako patikra ir
atestavimas?)
5P A procesas
- PA proceso gyvavimo ciklas (life-cycle) PA
turi buti taikoma kiekvienoje programines irangos
kurimo proceso pakopoje. - (Koks yra PA gyvavimo ciklas?)
- Yra du principiniai PA tikslai
- Atskleisti sistemos klaidas
- Ivertinti ar sistema yra naudotina darbineje
situacijoje - ( Kokie principiniai PA tikslai?)
6 Statine ir dinamine patikra
- Programines irangos peržiura ( inspection).
Susijusi su statines sistemos atvaizdavimo
analize, atskleidžiant problemas (statine
patikra) - Gali buti papildyta su priemonemis susijusiomis
su dokumentu ir kodo analize - Programines irangos testavimas. Susijes su
produkto elgsenos sužadinimu ( bandymu) ir
stebejimu (dinamine patikra) - Sistema yra bandoma su testiniais duomenimis ir
yra stebima jos darbine elgsena - (Kuo skiriasi statine ir dinamine patikra?)
7Statinis ir dinaminis atestavimas
Statinis atestavimas
Detalus projektas
Formali specifikacija
Aukšto lygio projektas
Reikalavimu specifikacija
Programa
Dinaminis atestavimas
Prototipas
8Programu testavimas
- Gali parodyti klaidas bet ne ju nebuvima
- Sekmingas testas tas, kuris atskleidžia viena
ar daugiau klaidu - Vienintelis PA metodas, taikomas nefunkciniams
reikalavimams - Programu testavimas turi buti panaudotas
apjungiant kartu su statine patikra, kad butu
pilna P A apimtis - ( Ka galima pasakyti apie programu testavima?)
9 Testavimo tipai
- Klaidu testavimas
- Testavimas skirtas sistemos klaidu
atskleidimui. - Sekmingas testas yra tas , kuris išryškina
klaidas - Statistinis testavimas
- Testavimas pagristas atsitiktiniu ivedamu
duomenu generavimu. Naudojama patikimumo
ivertinimui. - ( Kokie yra testavimo tipai?)
10 P A paskirtis
- Patikra ir atestavimas turi parodyti, kad ši
programine iranga yra tinkama skirtam tikslui - Tai nereiškia kad ši programa bus visai be klaidu
- Bet ji bus pakankamai gera numatomam naudojimui,
ir naudojant bus pasiektas reikiamas pasitikejimo
lygis - ( Kokia PA paskirtis?)
11Pasitikejimas P A ( confidence)
- Priklauso nuo sistemos tikslu, vartotojo lukesciu
ir marketingo aplinkos - Programines irangos funkcijos
- Tikrumo lygis priklauso nuo to, kiek
programine iranga yra kritine (svarbi)
organizacijai. - Vartojo lukesciai
- Vartotojai gali buti nereiklus kai kurioms
programines irangos rušims. - Marketingo aplinka
- Ankstyvas produkto pateikimas rinkai gali buti
svarbesnis nei tolesne defektu paieška
programoje. - ( Nuo ko priklauso pasitikejimas PA ?)
12Testavimas ir derinimas
- Defektu testavimas ir derinimas yra skirtingi
procesai - Patikra ir atestavimas yra skirtas klaidos buvimo
programoje nustatymui - Derinimas yra skirtas defektu vietos nustatymui
ir ištaisymui - Derinimo metu formuojamos hipotezes apie
programos veikima, po to, testuojant šias
hipotezes, randamas sistemos defektas. - ( Kuo skiriasi testavimas ir derinimas?)
13Derinimo procesas
Testavimo rezultatai
Testavimo kriterijai
Specifikacija
Klaidos vietos nustatymas
Klaidu taisymo projektavimas
Klaidos ištaisymas
Programos testavimas iš naujo
( Kokie veiksmai vykdomi derinimo proceso metu?)
14Nagrinejamos temos
- Patikros ir atestavimo planavimas
- Programines irangos peržiura
- Automatizuota statine analize
- Bedefektinis programines irangos kurimas
15P A planavimas
- Atidus planavimas yra butinas norint gauti
geriausia rezultata iš testavimo ir peržiuros
procesu. - Planavimas turi prasideti anksti kurimo procese.
- Planavimas turi nustatyti pusiausvyra tarp
statinio tikrinimo ir testavimo. - Testo planavimas labiau nustato testavimo
standartus nei apibudina produkto testus. - ( Kas tvirtinama apie P A planavima?)
16Kurimo ir testavimo modelis
Reikalavimu specifikacija
Sistemos specifikacija
Sistemos projektas
Detalus projektas
Posistemiu integracijos tikrinimo planas
Sistemos integracijos tikrinimo planas
Moduliu ir vienetu kodavimas ir testavimas
Priemimo testo planas
Sistemos integracijos testas
Posistemiu integracijos testas
Naudojimas
Priemimo testas
(Kaip grafiškai atvaizduojamas kurimo ir
testavimo modelis?)
17Programines irangos testo plano struktura
- Testavimo procesas
- Reikalavimu sekamumas (traceability)
- Testuojami vienetai
- Testavimo tvarkaraštis
- Testu užrašymo proceduros
- Technines ir programines irangos reikalavimai
- Apribojimai
- (Kokia testo plano struktura?)
18Nagrinejamos temos
- Tikrinimo ir atestavimo planavimas
- Programines irangos peržiura
- Automatizuota statine analize
- Bedefektinis programines irangos kurimas
19Programines irangos peržiura
- Siejasi su žmonemis, nagrinejanciais išeities
tekstus, siekiant atrasti anomalijas ir klaidas. - Nereikalauja vykdyti sistemos, todel gali buti
naudojama prieš realizacija. - Gali buti taikoma bet kokiam sistemos
atvaizdavimui (reikalavimams, projektui, testu
duomenims ir t.t.). - Tai labai efektyvi metodika klaidu suradimui.
- ( Kas budinga programines irangos peržiurai?)
20Peržiuros privalumai
- Daug defektu gali buti atrasta per viena
peržiura. Testuojant vienas defektas gali
paslepti kita, taigi reikalingi keli vykdymai. - Pakartotinai panaudojamos srities ir programavimo
žinios, kai taisytojai supažindinami su
dažniausiai pasitaikanciu klaidu tipais. - (Kokie peržiuros privalumai?)
21Peržiura ir testavimas
- Peržiura ir testavimas yra vienas kita
papildantys ir neprieštaraujantys tikrinimo
metodai. - Abu turetu buti naudojami PA proceso metu
- Peržiura gali išsiaiškinti atitikima
specifikacijai, bet ne atitikima realiems
užsakovu reikalavimams. - Peržiura negali patikrinti nefunkciniu
charakteristiku (tokiu kaip našumas, tinkamumas
naudoti ir t.t.) - ( Koks santykis tarp peržiuros ir testavimo?)
22Programu peržiura
- Formalizuotas metodas dokumentu peržiurai
- Skirtas defektu aptikimui (ne taisymui)
- Defektas gali buti logines klaidos, kodo
anomalijos, kurios gali signalizuoti apie
klaidinga busena (pvz., neinicializuota
kintamaji) arba neatitikima standartams - (Kas tai yra programu peržiura?)
23Peržiuros išankstines salygos
- Turi buti prieinama tiksli specifikacija
- Komandos nariai turi buti susipažine su
organizacijos standartais - Turi buti prieinamas sintaksiškai teisingas kodas
- Klaidu tikrinimo sarašas turi buti paruoštas
- Vadovybe turi susitaikyti su tuo, kad peržiura
padidina kaštus ankstyvame programines irangos
kurimo etape - Vadovybe neturetu naudoti peržiuros personalui
ivertinti - (Kokios išanktines salygos keliamos peržiurai?)
24Peržiuros procesas
Planavimas
Tolimesnis efektyvumo didinimas
Apžvalga
Individualus pasiruošimas
Ivertinimas
Peržiuros pasitarimas
(Kokie veiksmai vykdomi peržiuros proceso metu?)
25Peržiuros procedura
- Sistemos apžvalga pristatoma peržiuros komandai
- Kodai ir kita susijusi dokumentacija yra
paskirstoma peržiuros komandai iš anksto - Ivyksta tikrinimas, ir atrastos klaidos yra
pažymimos - Padaromi pakeitimai, kad pataisyti atrastas
klaidas - Pakartotina peržiura gali buti reikalinga arba ne
- (Kas budinga peržiuros procedurai?)
26Peržiuros komandos
- Sudaromos iš mažiausiai 4 nariu
- Tikrinamo kodo autorius
- Peržiuretojas tas, kuris randa klaidas,
trukumus ar nesuderinamumus - Pranešejas tas, kuris skaito koda komandai
- Pirmininkas tas, kuris vadovauja pasitarimui ir
žymi atrastas klaidas - Kiti vaidmenys raštininkas ir vadovas
- ( Kas budinga peržiuros komandai?)
27Peržiuros tikrinimu klaidu sarašas
- Dažniausiai pasitaikanciu klaidu sarašas turetu
buti naudojamas viso tikrinimo metu - Klaidu tikrinimo sarašas priklauso nuo
programavimo kalbos - Kuo silpnesnis tipu tikrinimas, tuo didesnis
klaidu tikrinimo sarašas - Pvz inicializacija, konstantu pavadinimai, ciklu
pabaigos, masyvu ribos ir t.t. - (Kas budinga peržiuros metu tikrinamu klaidu
sarašui?)
28Tikrinimai peržiuros metu
(Kas tikrinama peržiuros metu?)
Tikrinimai peržiuros metu
Klaidu klase
Ar visi programu kintamieji aprašyti prieš
panaudojima? Ar visos konstantos turi vardus? Ar
apatine masyvo riba turetu buti 0,1 ar dar
kita? Ar viršutine masyvo riba turetu buti lygi
masyvo dydžiui ar 1?
Duomenu klaidos
Ar kiekvienam salyginiam sakiniui yra teisinga
salyga? Ar kiekvienas ciklas turi pabaiga? Ar
sudetiniai sakiniai yra teisingai apskliausti? Ar
variantu sakiniuose visi variantai numatyti?
Kontroles klaidos
Ar visi ivedimo kintamieji panaudoti? Ar visi
išvedimo kintamieji igauna reikšmes prieš juos
panaudojant?
Ivedimo/išvedimo klaidos
Ar visos funkcijos ir proceduros turi teisinga
parametru skaiciu? Ar sutampa formalus ir realus
parametrai? Ar parametrai išdestyti teisinga
tvarka? Jei komponentai naudojasi ta pacia
atmintimi, ar jie turi ta pati atminties
strukturos modeli?
Sasajos klaidos
Jeigu struktura su nuoroda i ja yra pakeista,
ar visos nuorodos yra pakeistos teisingai? Jei
dinaminis saugojimas yra naudojamas, ar teisingai
nurodyta vieta? Ar atmintis yra atlaisvinama,
kai baigiama ja naudotis?
Saugojimo valdymo klaidos
Ar yra numatytos visos klaidu atsiradimo salygos?
Išimciu valdymo klaidos
29Peržiuros tempas
- 500 sakiniu per valanda apžvalgos metu
- 125 kodo sakiniai per valanda per individualu
pasiruošima - 90-125 sakiniai per valanda gali buti peržiureti
klaidu klases požiuriu - Del to tikrinimas yra brangus procesas
- 500 kodo eiluciu patikrinimui reikia 40 žmogaus
darbo valandu - (Koks peržiuros tempas?)
30Nagrinejamos temos
- Tikrinimo ir atestavimo planavimas
- Programines irangos peržiura
- Automatizuota statine analize
- Bedefektinis programines irangos kurimas
31Automatizuota statine analize
- Statiniai analizatoriai programines irangos
irankiai išeities teksto apdorojimui - Jie išnagrineja programos teksta, bando surasti
potencialiai klaidingas salygas ir atkreipti i
jas PA komandos demesi - Labai efektyvi pagalba peržiurai. Priedas prie
peržiuros, bet ne jos pakaitalas - (Kokia statiniu analizatoriu paskirtis?)
32Tikrinimai statines analizes metu
(Kokie tikrinimai atliekami statines analizes
metu?)
33Statines analizes etapai
- Valdymo srauto analize. Tikrina ciklus su daug
išejimo ir iejimo tašku, randa nepasiekiama koda
ir t.t. - Duomenu naudojimo analize. Randa neaprašytus
kintamuosius, kintamuosius aprašytus dukart be
tarpinio priskyrimo, kintamuosius, kurie aprašyti
bet niekada nepanaudoti ir t.t. - Sasajos(interfeiso) analize. Tikrina paprogramiu
ir proceduru aprašymu neprieštaringuma bei ju
panaudojima
34Statines analizes etapai
- Infomacijos srauto analize. Nustato išeities
(output) reikšmiu priklausomybes. Neieško
anomaliju, bet išryškina informacija kodo
peržiurai ar analizei - Keliu analize. Parenka programos vykdymo kelia
ir nurodo operatorius, vykdomus šiuo keliu. Be
to, labai naudinga apžvalgos metu - Abu šie etapai dirba su labai daug informacijos.
Jie turi buti naudojami apdairiai - (Kokie statines analizes etapai?)
35LINT statine analize
138 more lint_ex.c include ltstdio.hgt printarray
(Anarray) int Anarray printf(d,Anarray)
main () int Anarray5 int i char c
printarray (Anarray, i, c) printarray
(Anarray) 139 cc lint_ex.c 140 lint
lint_ex.c lint_ex.c(10) warning c may be used
before set lint_ex.c(10) warning i may be used
before set printarray variable of args.
lint_ex.c(4) lint_ex.c(10) printarray, arg. 1
used inconsistently lint_ex.c(4)
lint_ex.c(10) printarray, arg. 1 used
inconsistently lint_ex.c(4) lint_ex.c(11) print
f returns value which is always ignored
36 Statines analizes naudojimas
- Ypac vertinga, kai naudojama tokia kalba, kaip C,
turinti silpna tipavima (typing), ko pasekoje
kompiliatorius neaptinka daug klaidu - Mažiau rentabili kalboms kaip Java, turincioms
stipru tipu tikrinima, todel galincioms rasti
daug klaidu kompiliavimo metu - (Ka galima pasakyti apie statines analizes
naudojima?)
37Nagrinejamos temos
- Tikrinimo ir atestavimo planavimas
- Programines irangos peržiura
- Automatizuota statine analize
- Bedefektinis programines irangos kurimas
38Bedefektinis (cleanroom) programines irangos
kurimas
- Pavadinimas kilo iš cleanroom procesu
puslaidininkiu gamyboje. Naudojama defektu
išvengimo, bet ne defektu pašalinimo filosofija - Toks programines irangos kurimo procesas
remiasi - palaipsniniu kurimu
- formalia specifikacija
- statiniu tikrinimu, naudojant korektiškumo
argumentus - statistiniu testavimu, nustatant programos
patikimuma - (Kuo remiasi bedefektinis programines irangos
kurimas?)
39Bedefektinis procesas
Formalus sistemos specifikavimas
Klaidu perdarymas
Strukturines programos konstravimas
PI kurimo pakopu apibrežimas
Formalus kodo patikrinimas
Kurimo pakopu integravimas
Operacinio profilio kurimas
Statistiniu testu projektavimas
Integruotos sistemos testavimas
(Kaip grafiškai atvaizduojamas bedefektinis
procesas?)
40Bedefektinio proceso charakteristikos
- Formali specifikacija, naudojanti busenu perejimo
modeli - Palaipsninis kurimas
- Strukturinis programavimas - naudojamos ribotos
valdymo ir abstrakcios konstrukcijos - Statinis tikrinimas, naudojantis griežta peržiura
- Statistinis sistemos testavimas
- (Kas budinga bedefektiniam procesui?)
41Palaipsninis kurimas
Išaldyta specifikacija
Formali specifikacija
Reikalavimu nustatymas
Programines irangos pristatymas
PI kurimo pakopos formavimas
Užklausa apie reikalavimu pasikeitima
(Kas budinga palaipsniniui kurimui bedefektiniam
procese?)
42Formali specifikacija ir peržiura
- Sistemos specifikacija yra busenu modelis, o
peržiuros proceso metu tikrinama, ar programa
atitinka ši modeli - Programavimo metodas apibrežtas taip, kad
atitikimas tarp modelio ir sistemos butu aiškus - Matematiniai argumentai (ne irodymai) naudojami,
norint padidinti pasitikejima peržiuros procesu - (Koks santykis tarp peržiuros ir formaliu
specifikaciju bedefektinio proceso metu?)
43Bedefektinio proceso grupes
- Specifikaciju grupe. Atsakinga už sistemos
specifikacijos kurima ir palaikyma - Kurimo grupe. Atsakinga už programines irangos
kurima ir tikrinima. Programine iranga NERA
vykdoma ir net nekompiliuojama šio proceso metu - Sertifikacijos grupe. Atsakinga už programines
irangos statistiniu testu kurima. Naudojamas
patikimumo augimo modelis, norint nustatyti, kada
patikimumas yra tinkamas - (Kokios darbo grupes išskiriamos bedefektinio
proceso metu?)
44Bedefektinio proceso vertinimas
- IBM rezultatai buvo labai ispudingi tik su keletu
klaidu pristatytose sistemose - Nepriklausomas ivertinimas rodo, kad procesas yra
nedaug brangesnis nei kiti metodai - Mažiau klaidu negu tradiciniame kurimo procese
- Nevisai aišku, kaip ši metoda panaudoti aplinkoje
su mažiau motyvuotais arba žemesnes
kvalifikacijos inžinieriais - (Kaip vertinamas bedefektinis procesas?)
45Esminiai aspektai
- Patikra ir atestavimas nera tas pats. Patikra
parodo atitikima specifikacijai Atestacija
parodo, kad programa atitinka užsakovo norus - Testo planas turi buti pagrindas testavimo
procesui - Statinio tikrinimo metodai apima patikrinima ir
programos analize, norint surasti defektus
46Esminiai aspektai
- Programos peržiura yra labai efektyvi klaidu
suradimui - Peržiurimas programos kodas yra tikrinamas mažu
grupiu, norint surasti programines irangos
defektus - Statines analizes priemones gali surasti
programos anomalijas, kurios gali nurodyti
klaidas, esancias kode - Bedefektinis procesas priklauso nuo palaipsninio
kurimo, statinio tikrinimo ir statistinio
testavimo