Documente Academic
Documente Profesional
Documente Cultură
1
In cazul unei conceptii orientate obiect, o specificatie bazata pe notatiile
UML poate fi completata prin specificatii scrise într-un limbaj formal:
OCL (Object Constraint language)
Alte limbaje formale: Z++ si VDM++ (este specificata formal fiecare clasa).
2
1) Ca mijloc de specificare globala a unui program si la diferite nivele de
proiectare, implementarea fiind efectuata prin translatarea "manuala" a
specificatiei formale.
In acest caz specificatiile formale favorizeaza:
Exista mai multe metode de specificare formala, fiecare fiind adaptata mai
bine unei anumite clase de aplicatii. De exemplu, specificatiile algebrice
sunt adecvate descrierii tipurilor de date abstracte, VDM si Z folosesc de
asemenea tipuri de date abstracte dar adauga notiunea de stare, limbajul
LOTOS pernite specificarea proceselor paralele. Metoda cea mai simpla de
specificare, dar si cea mai incompleta, se bazeaza doar pe logica cu predicate
de ordinul I.
3
1. Specificatii de intrare/iesire
Exemple
Notatii :
X’ – tabloul X inainte de executia functiei
X’’ – tabloul X dupa executia functiei
Pre si post conditiile sunt predicate peste intrarile si iesirile unei functii.
4
Postconditia specifica rezultatul executiei functiei pentru date valide. In
exemplul de mai sus, prima parte a postconditiei precizeaza ce reprezinta
valoarea intoarsa de functie; partea a doua specifica faptul ca functia nu
modifica tabloul X.
error : cauta(X,num)=n
ordonat(int *X, int nr) = for-all i, j in [0..nr-1] : i<j X[i] <= X[j]
5
1.2.
Fie o functie care determina toate numerele prime cuprinse între doua
numere, N1 si N2, date prin lista de parametri. Numerele prime sunt
memorate într-un tablou, T, transmis de asemenea prin lista de parametri.
Valoarea întoarsa de functie reprezinta numarul de numere prime memorate
în tabloul T.
error : Prime(N1,N2,T)=0
6
Alt exemplu :CURS
Limitari :CURS
Exercitii :CURS
2. Specificatii algebrice
Exemplu:
Clasa stiva
Tipuri: stiva;
Importa: X, Boolean;
Functii:
empty(stiva) Boolean
new() stiva
push(X,stiva) stiva
pop(stiva) ─| stiva
top(stiva) ─| X
Axiome:
empty(new())
7
not empty(push(x,s))
pop(push(x,s)) = s
top(push(x,s))=x
Preconditii:
pop(s) : not empty(s)
top(s) : not empty(s)
end stiva
Sunt trei tipuri de operatii. Astfel, daca T este tipul obiectelor clasei
specificate, atunci:
8
f(…,T,…) T se numeste operatie de transformare
(creaza un obiect nou pornind de la unul existent)
In concluzie :
Exista mai multe limbaje de specificare algebrica pentru care s-au construit
medii de specificare dedicate. Mediile de specificare contin instrumente de:
editare a specificatiilor;
prototipare;
demonstrare a teoremelor;
generare a cazurilor de test
si altele.
3. Notatia Z
9
Aspectele statice cuprind:
starile în care se poate afla sistemul specificat;
relatiile de invarianta care se pastreaza la trecerea dintr-o stare în alta.
Aspectele dinamice sunt:
operatiile potentiale;
relatiile dintre intrarile si iesirile lor;
modificarile de stare pe care le produc.
| NTEME : N
| MAXST : N
10
”Asistent” de mai jos reprezinta starile abstracte ale sistemului pe care vrem
sa-l specificam:
Asistent
Inregistrati : PSTUDENT
Predate : STUDENT ─| 0..NTEME
STUDENT MARCA
Inregistrati
11
Maria 1
Ana
Gigel 2
Init
Asistent
Inregistrati =
Adauga
Asistent
e? : STUDENT
12
Prima linie a specificatiei de sub linia orizontala centrala este o
preconditie a succesului operatiei. Daca preconditia este satisfacuta, atunci
linia urmatoare indica extensia functiei Predate pentru a se lua în considerare
noul student.
Dupa operatie, multimea Inregistrati va contine un nou element:
Inregistrati’=Inregistrati {e?}
Marcheaza
Asistent
e? : STUDENT
e? Inregistrati
Predate’=Predate { e? | Predate(e?) + 1}
Sterge
Asistent
13
e? : STUDENT
nota! : 0..10
e? Inregistrati
nota!=Predate(e?)/NTEME*10
Inregistrati’ = Inregistrati \ {e?}
Interogheaza
Asistent
e? : STUDENT
teme! : 0..NTEME
e? Inregistrati
teme! = Predate(e?)
Interogare
Asistent
e? : STUDENT
teme! : 0..NTEME
r! : RASPUNS
(e? Inregistrati teme! =Predate(e?) r! =Succes
(e? Inregistrati r! = NeInregistrat )
14
operatiile sistemului. Atunci când o operatie se termina cu succes aceasta
variabila va lua valoarea Succes. Altfel, va lua o valoare particulara
( NeInregistrat, DejaInregistrat, ClasaOcupata) indicând cauza insuccesului.
Tipul RASPUNS se defineste astfel:
Succes
r! : RASPUNS
r! = Succes
Ne-Inregistrat
Asistent
e? : STUDENT
r! : RASPUNS
e? Inregistrati
r! = NeInregistrat
15
Interogare (Interogheaza Succes ) Ne-Inregistrat
16