Documente Academic
Documente Profesional
Documente Cultură
Investeşte în oameni !
Proiect cofinanţat din FONDUL SOCIAL EUROPEAN
prin Programul Operaţional Sectorial Dezvoltarea Resurselor Umane 2007 – 2013
Axa prioritară 1: „EDUCAŢIA ŞI FORMAREA PROFESIONALĂ ÎN SPRIJINUL CREŞTERII ECONOMICE ŞI DEZVOLTĂRII SOCIETĂŢII
BAZATE PE CUNOAŞTERE”
Domeniul major de intervenţie 1.2 „Calitate în învăţământul superior”
Cerere de propuneri de proiecte: nr. 86 „Universitate pentru viitor”
Titlul proiectului: Reţea naţională de centre pentru dezvoltarea programelor de studii cu rute flexibile şi a unor instrumente didactice la specializarea de
licenţă şi masterat, din domeniul Ingineria Sistemelor
Numărul de identificare al contractului: POSDRU/86/1.2/S/63806
Gabriela Varvara
Ingineria programarii I
Curs 11
Verificarea si validarea sistemelor software
Partener P4
MINISTERUL EDUCAŢIEI, UNIVERSITATEA UNIVERSITATEA TEHNICĂ UNIVERSITATEA TEHNICĂ UNIVERSITATEA SC ASTI AUTOMATION SRL
CERCETĂRII, TINERETULUI ”POLITEHNICA” DIN ”GHEORGHE ASACHI” ”POLITEHNICA”
ŞI SPORTULUI DIN CLUJ-NAPOCA DIN DIN
BUCUREŞTI IAŞI TIMIŞOARA
<Ingineria programarii I>
Objectivele prelegerii Gabriela Varvara>
Subiecte tratate:
Planificarea procesului de verificare si validare
Inspectiile software
Automatizarea analizei statice
Procesul de dezvoltare Cleanroom
2
<Ingineria programarii I>
Verificarea si validarea (V&V) Gabriela Varvara>
Definitie:
Verificarea – are drept scop analiza produsului software din punct de vedere
al conformarii acestuia cu propriile specificatii (atesta constructia corecta a
produsului)
Validarea – are drept scop analiza produsului software din punct de vedere
al conformarii comportamentului acestuia cu cel dorit de utilizator ( atesta
constructia produsului corect)
3
<Ingineria programarii I>
Scopul V&V Gabriela Varvara>
4
<Ingineria programarii I>
Verificarea statica si dinamica Gabriela Varvara>
Prototip Testare
program
5
<Ingineria programarii I>
Testarea software Gabriela Varvara>
Tipuri de testare:
Testarea defectelor – proiectarea testelor va urmari descoperirea defectelor.
Un test reusit va pune in evidenta prezenta defectului.
Testarea de validare:
Verifica modul in care produsul satisface cerintele beneficiarului
Un test trece cu succes daca demonstreaza ca o anumita cerinta a fost
implementata adecvat
6
<Ingineria programarii I>
Testare versus depanare Gabriela Varvara>
7
<Ingineria programarii I>
Planificarea V&V Gabriela Varvara>
8
Planificarea testarii pentru ciclul de dezvoltare in V
<Ingineria programarii I>
(documentatie tehnica) Gabriela Varvara>
9
<Ingineria programarii I>
Structura documentului de planificare a testarii software Gabriela Varvara>
10
<Ingineria programarii I>
Inspectia software Gabriela Varvara>
11
<Ingineria programarii I>
Inspectii versus testare Gabriela Varvara>
12
<Ingineria programarii I>
Preconditii pentru realizarea inspectiilor Gabriela Varvara>
13
<Ingineria programarii I>
Procesul de inspectie Gabriela Varvara>
Planificare
Overview Continuare
Pregatire Efectuare
inviduala corectii
Intalnire
inspectie
14
<Ingineria programarii I>
Procedura de inspectie Gabriela Varvara>
15
<Ingineria programarii I>
Roluri in procesul de inspectie Gabriela Varvara>
16
<Ingineria programarii I>
Liste de verificare in procesul de inspectie Gabriela Varvara>
Lista este cu atat mai mare cu cat tipologia erorilor este mai putin restransa
17
<Ingineria programarii I>
Exemplu de lista de verificare (1) Gabriela Varvara>
Erori in date:
Sunt initializate toate variabilele inainte de folosirea valorilor lor?
Au fost declarate toate constantele?
Limita superioara a masivelor este egala cu dimensiunea sau dimensiunea
-1?
Daca se folosesc siruri de caractere s-a atribuit un delimitator explicit?
Exista posibiltatea depasirii bufferelor?
Erori de control:
Pentru fiecare instructiune conditionala, conditia este corecta?
Fiecare bucla se termina cu certitudine?
Instructiunile de calcul sunt imbricate corect?
Instructiunile switch au prevazute toate cazurile? Pentru acestea s-au
inserat corect instructiunile break?
Erori intrare/iesire:
Sunt folosite toate variabilele de intrare?
Au toate variabilele de iesire asignate valori inainte de iesirea propriu-zisa?
Pot sa produca fenomene de coruptie valori neasteptate ale intrarilor?
18
<Ingineria programarii I>
Exemplu de lista de verificare (2) Gabriela Varvara>
Erori pe interfata:
Au toate apelurile de functii/metode numar corect de parametrii?
Exista potrivire intre tipurile de parametri formali si cei actuali?
Sunt parametrii mentionati in ordinea corecta?
Componentele ce acceseaza zone partajate de memorie, au acelasi model
de structurare a memoriei partajate?
Erori pe managementul memorarii:
Daca o structura cu legaturi se modifica, s-au reatribuit corect toate
legaturile?
Daca se foloseste alocarea dinamica, s-a alocat corect memoria?
S-a realizat dezalocarea explicita pentru spatiul ce nu mai este necesar?
Erori de management a exceptiilor:
Au fost luate in considerare toate conditiile posibile de eroare?
19
<Ingineria programarii I>
Frecvente uzuale pentru procesul de inspectie Gabriela Varvara>
20
<Ingineria programarii I>
Automatizarea analizei statice Gabriela Varvara>
Etc.
21
<Ingineria programarii I>
Fazele analizei statice Gabriela Varvara>
Analiza controlului executiei – verificarea buclelor spre a nu avea puncte de intrare/iesire multiple,
identificare cod neexecutat
Analiza datelor utilizate – detectia variabilelor neinitializate, variabilelor scrise de 2 ori fara
reasignare, variabile declarate si neutilizate, etc.
Analiza interfetei – verificarea consistentei intre declaratiile rutinelor/procedurilor si modul de apel
al acestora.
Analiza fluxului informational – identificarea dependentelor variabilelor de iesire. Nu detecteaza
anomalii, dar pune in vizor informatia necesara inspectiei pe cod / review.
Analiza cailor – identifica in program caile de executie precum si instructiunile ce vor fi executate
pe fiecare cale. Poate fi utila in procesele de review.
Analiza statica se recomanda pentru limbaje cum ar fi C, unde definitiile de tip sunt slab verificate,
determinand un numar mare de erori dedetectabil de catre compilator. Ea devine mai putin
eficienta pentru limbaje precum Java, ce au mecanisme puternice de verificare a tipului ce vor
permite detectarea unui numar mare de erori chiar din faza de compilare.
22
<Ingineria programarii I>
Exemplu de analiza statica Gabriela Varvara>
138% more lint_ex.c
#include <stdio.h>
printarray (Anarray)
int Anarray;
{ printf(“%d”,Anarray); }
main ()
{
int Anarray[5]; int i; char c;
printarray (Anarray, i, c);
printarray (Anarray) ;
}
139% cc lint_ex.c
140% lint lint_ex.c
23
<Ingineria programarii I>
Utilizarea metodelor formale in procesul de verificare Gabriela Varvara>
Metodele formale pot fi utilizate ori de cate ori s-a produs o specificatie
matematica pentru sistemul ce urmeaza a fi dezvoltat.
Reprezinta o tehnica de verificare statica ultimativa.
Implica o analiza matematica detaliata a respectivei specificatii si poate produce
argumente formale ce valideaza conformarea programului la specificatia sa
matematica.
Argumente in favoarea folosirii extinse/restranse a metodelor formale:
Deoarece produc specificatii matematice, ele implica o analiza detaliata a
cerintelor si descopera erorile cu o probabilitate crescuta
Implica folosirea unor notatii speciale cu care specialistii din domeniu nu
sunt intotdeauna familiarizati.
Pot detecta erori de implementare inaintea testarii
Dezvoltarea unei specificatii este costisitoare; verificarea raportarii
programului la specificatie este si mai costisitoare.
Este posibil sa se atinga acelasi nivel de incredere in sistem prin folosirea
unor tehnici simple, mai putin costisitoare de V&V.
24
<Ingineria programarii I>
Ciclul de dezvoltare Cleanroom Gabriela Varvara>
25
<Ingineria programarii I>
Diagrama procesului Cleanroom (documentatie tehnica) Gabriela Varvara>
26
<Ingineria programarii I>
Caracteristicile procesului Cleanroom Gabriela Varvara>
27
Legatura intre specificatia formala si inspectii pentru
<Ingineria programarii I>
procesul Cleanroom Gabriela Varvara>
28
<Ingineria programarii I>
Echipele din procesul Cleanroom Gabriela Varvara>
29
<Ingineria programarii I>
Evaluarea procesului Cleanroom Gabriela Varvara>
30