IV. dio Verifikacija i validacija

Slides:



Advertisements
Similar presentations
Test tri sita. U staroj Grčkoj je Sokrat bio poznat po tome, da je veoma visoko cenio znanje.
Advertisements

1 Predlozi tema za master radove – 2010/11. Cvetana Krstev.
1 Holcim (Hrvatska) d.o.o Holcimova Mahovina.
Rješenje za izradu obiteljskog stabla
FrontPage program za izradu web stranica
Prof: doc.dr. Samir Lemeš student: Samir Hrnjić. System restore je komponenta Microsoftovih operativnih sistema Windows Serveri ne podržavaju opciju System.
Otvoreni kod je Коммунизм?
Being in Bamberg allowed us to meet incredible people from Europe and the world. Studying with them opened our eyes to the many.
Google Analytics Analitika turističkih web stranica
ASPECT RATIO PAŠIĆ ANELA.
Jeste li spremni za prijam digitalnog signala
Autor: Irena Čučković, II-2
Stabilnost, promjena i koherentnost ličnosti
Petlje WHILE – WEND.
OPERACIJSKI SUSTAVI.
Testiranje softvera Sanja Mijalković 1061/2013.
RP3/predavanje08 Ugniježdeni tipovi Iznimke 10/11/2018
4.1 Vizualni (grafički) HTML uređivači
Java Hello world !.
MICROSOFT WORD 2010.
Nadgradnja klasa i nasljeđivanje – 3
Programi,Podaci,Varijable,Računanje- Uvod
v.as.mr. Samir Lemeš Univerzitet u Zenici
Programiranje - Blokovi naredbi i logički tipovi –
Java Petlje i logika - 1.
CheckBox RadioButton RadioGroup
Naredbe ciklusa.
The Present Perfect Continuous Tense
Petlje FOR - NEXT.
REPEAT…UNTIL Naredbe ciklusa.
Programi,Podaci,Varijable,Računanje - 2
KREIRANJE OBJEKATA.
Europski dan programiranja
Uvod u programiranje - matematika – X predavanje
Arrays and strings -2 (nizovi i znakovni nizovi)
Elektrotehnički fakultet – Podgorica Operativni sistemi
Elementi programskog jezika PASCAL
Podešavanje osobina stranica
Arrays and strings -1 (nizovi i znakovni nizovi)
Struktura MAC adrese i Ethernet okvira
Programiranje II Obrada izuzetaka.
Naredba Case Višestruko grananje.
Upravljanje marketingom u bankarstvu
M-datoteke.
Internet FTP usluga.
Osnovni simboli jezika Pascal
Razvojne okoline Kolegij: Programski jezik C++ Ak. god. 2017/2018
Do While ... Loop struktura
Virtualizacija poslovnih procesa metodom „Swimlane“ dijagrama
Osnovne karakteristike
Porezni izdaci i efikasnost poreza na dodanu vrijednost Hrvatske
EU Montenegro Inclusive Education Services Project (EU - MIESP)
Analiza varijance prof. dr. sc. Nikola Šakić.
Klasifikacija i stablo odlučivanja uz r
Sustavi za pracenje i vođenje procesa STATEFUL INSPECTION FIREWALL
BLOOMOVA TAKSONOMIJA I
Skup instrukcija procesora
Intercultural character of cross-border mediation
S.W.O.T. Zagreb, 27. I
Programiranje - Naredbe za kontrolu toka programa – 1. dio
Donošenje odluka o karijeri
Programiranje - Naredbe za kontrolu toka programa – 3. dio
MODUL 5: PRIJENOS ZNANJA
Elder Scroll V:Skyrim.
predavanja v.as.mr. Samir Lemeš
Dvostruka autentifikacija
Analiza varijance prof. dr. sc. Nikola Šakić.
Ponavljanje Pisana provjera
Hour of Code Coding Jetpack Jumper Mateja Hržica, MSP.
Iracionalni brojevi
Presentation transcript:

IV. dio Verifikacija i validacija 10. predavanje IV. dio Verifikacija i validacija

U ovom predavanju trebali bi... definirati verfifikaciju i validaciju i razumjeti razliku između njih navesti i opisati metode za verfikaciju i validaciju

Općenito Verifikacija i validacija (V&V) je skup aktivnosti kojima se nastoji utvrditi odgovara li softver specifikacijama Konačni cilj je uvjeriti se da je softver dovoljno dobar i pouzdan kako bi služio svojoj svrsi To ne znači da nema niti jednu grešku, ali da je dovoljno dobar i pouzdan za predviđeni oblik korištenja

Razlika između verifikacije i validacije Verifikacija ("Are we building the product right?") je provjera da li softver odgovara specifikaciji, dakle dokumentu o zahtjevima Validacija ("Are we building the right product?") je provjera da li softver zadovoljava "stvarnim" potrebama korisnika Ova razlika nastaje zato što specifikacija ne uspijeva u potpunosti zabilježiti stvarne potrebe korisnika

Metode za V&V Statička V&V – analiziraju se i provjeravaju dokumenti, modeli sustava i oblikovanja, te programski kod (odvija se bez stvarnog izvođenja softvera) Testiranje – pokusno izvođenje softvera ili njegovih dijelova na umjetno pripravljenim podacima, uz pažljivo analiziranje rezultata (ovo je uobičajena metoda)

Prednosti statičke V&V 1/2 Jedna statička provjera može otkriti puno grešaka (testiranje obično otkriva samo jednu grešku, obično prvu, nakon koje se program ili "ruši" ili nastavlja raditi s krivim podacima) Statička provjera omogućuje bolje korištenje znanja o programiranju u aplikacijskoj domeni. Osobe koje obavljaju provjeru znaju koje se vrste grešaka često pojavljuju u dotičnom prog. jeziku, pa se na njih koncentriraju

Prednosti statičke V&V 2/2 Smatra se da se statičkim metodama može otkriti 60-90% grešaka Troškovi su puno manji za statičku provjeru, pa su onda troškovi za testiranje isto tako manji

Mjesto V&V unutar softverskog procesa 1/2

Mjesto V&V unutar softverskog procesa 2/2 V&V se prvenstveno primjenjuje na programski kod, ali poželjna je primjena i u ranijim fazama razvoja softvera Statička provjera se može obavljati u raznim fazama softverskog procesa Testiranje je primjenjivo samo na program, odnosno prototip Program se najprije provjerava statičkim metodama, a nakon toga se još i testira

Planovi za testiranje softvera

Dokument: plan za testiranje softvera Ovaj dokument trebao bi nastati već u fazi specifikacije i oblikovanja sustava Sastoji se od: - opis procesa testiranja - popis zahtjeva koji će se testirati - popis dijelova softvera koji će se testirati - kalendar testiranja - opis načina bilježenja rezultata testiranja - popis hardvera i softvera koji je potreban za testiranje - ograničenja koja utječu na proces testiranja

Debuggiranje Tijekom V&V otkrivaju se greške Softver se mijenja kako bi se greške popravile Proces debuggiranja je često integriran s V&V, iako su to različiti procesi: V&V utvrđuje postojanje grešaka u softveru Debuggiranje je proces koji locira i popravlja greške

Proces debuggiranja

Kako se provodi Debuggiranje? Kreativni proces – teško ga je precizno opisati Vješti programeri se pouzdaju u svoje iskustvo, poznavanje čestih grešaka i poznavanje svojstava programskog jezika Od pomoći mogu biti interaktivni debuggeri ugrađeni u lower-CASE alate (izvođenje koda liniju po liniju, praćenje stanja varijabli...)

Statička verifikacija Može se obavljati u svim fazama softv. proces Najčešći oblik: statička verifikacija programa Analiza i pregled programskog koda bez stvarnog izvođenja koda Primjenjuje se prije testiranja programa – otkriva se glavnina grešaka Nakon toga testiranje ide brže, ukupni troškovi verifikacije su manji

Poznate tehnike statičke verifikacije Inspekcija programa Automatska statička analiza Formalna verifikacija

Inspekcija programa Prakticirala se u velikim firmama poput IBM, HP tijekom '70-tih, '80-tih i '90-tih godina prošlog stoljeća Sudjeluje grupa ljudi sa strogo zadanim ulogama: - autor ili vlasnik – programer odgovoran za kod i popravak grešaka - inspektor – pronalazi greške, propuste i nekonzistentnosti u programu - čitač – glasno čita programski kod na sastanku - zapisničar – bilježi rezultate sastanka - moderator – planira i organizira sastanke, upravlja procesom

Proces inspekcije programa Najvažnija faza je dobro pripremljen sastanak Ne raspravlja se kako će se greške popraviti, to kasnije radi autor Moderator odlučuje da li je potrebno sve ponoviti

Važne stvari za uspješan sastanak treba postojati precizna specifikacija programa treba postojati ažurna dovršena verzija programskog koda treba postojati 'check-lista' čestih programerskih pogrešaka članovi grupe su upoznati s organizacijskim standardima i žele surađivati

Primjer 'check-liste' 1/2

Primjer 'check-liste' 2/2

Automatska statička analiza obavlja se pokretanjem softverskih alata koji prolaze kroz izvorni kod našeg programa i otkrivaju moguće greške i anomalije u tom kodu skreće se pažnja na 'sumnjiva mjesta' i ispisuju se poruke popis sumnjivih situacija koje upućuju na grešku ovisi o programskom jeziku

Primjer popisa sumnjivih situacija

Primjer C programa i rezultata analize pomoću UNIX-ovog 'lint' alata C program nema nekog naročitog smisla prevođenje (kompajliranje) programa u ovom slučaju nije javilo niti jednu grešku!

Efikasnost automatske statičke analize Kod jezika poput C-a, automatska statička analiza predstavlja efikasnu tehniku Kod jezika 'strože' sintakse poput JAVA-e, izbjegnute su neke jezične konstrukcije koje lako dovode do grešaka, pa je automatska statička analiza u tom slučaju manje isplativa

Formalna verifikacija Matematičko dokazivanje da je program konzistentan sa svojom specifikacijom, moguće je pod uvjetima: - semantika programskog jezika je formalno definirana - postoji formalna specifikacija za program

Provođenje dokaza polazni uvjeti iz specifikacije i same naredbe iz programa se uzimaju kao činjenice iz njih se izvode konačni uvjeti koji po specifikaciji moraju biti zadovoljeni nakon izvršenja programa

Povijest formalne specifikacije Ovom idejom su se bavila mnoga velika imena računarstva tijekom '70-tih godina prošlog stoljeća (Hoare, Dijkstra, Writh) Ipak, nije se došlo dalje od malih akademskih primjera, ali ideja se i dalje njeguje u krugovima pobornika formalnih metoda za razvoj softvera U praksi se ova tehnika obično reducira na malo strožu inspekciju: razvijaju se strogi (no ne sasvim formalni) argumenti da program radi korektno

Primjer je IBM-ov: "Cleanroom software development"