Curs 1
Partea I. Introducere
Sisteme
Sistem = colectie de componente ce interactioneaza intre ele intr-
un mod unitar
Sisteme:
◦ Naturale: univers, atom, galaxie, ecosistem, sistemul anatomic, etc
◦ Artificiale: masini, avioane, sisteme de control al zbourilor, sisteme
bancare, calculatoare, etc
Resurse: materiale, energetice si informationale
Orice sistem are o stare si un comportament
Dpdv al comportamentului, sistemele se impart in:
◦ Simple: biciclete, etc
◦ Complexe si organizate: masini, vapoare, avioane, sisteme hardware, etc
◦ Complexe si neorganizate: economia unei tari,
bursa marfurilor, etc MEDIU
RESURSE DE RESURSE DE IESIRE
INTRARE
SISTEM
Sistem informatic si sistem software
Sistem informatic = sistem complex si organizat format din:
◦ Sistem software
◦ Sistem hardware
◦ Oameni
◦ Baze date si/sau de cunostinte
◦ Documentatie
Timp de raspuns Cat de repede stie sistemul de cererea utilizatorului dupa ce aceasta a fost
transmisa?
Iesirea Cat de multe task-uri realizeaza sistemul intr-o perioada de timp?
Memoria De cata memorie are nevoie sistemul pentru a rula?
Robustete Abilitatea de a trata o intrare invalida de la utilizator
Siguranta Diferenta dintre comportamentul specificat si cel observat
Valabilitate Procentul din timpul sistemului folosit pentru realizarea sarcinilor normale
Toleranta implicita Abilitatea de a opera in conditii eronate
Securitate Abilitatea de a raspunde la fortari a sistemului
Protectie Abilitatea de a nu pune in pericol vieti omenesti, chiar in prezenta erorilor si
esecurilor
Costul de dezvoltare Costul dezvoltarii sistemului
Produse intermediare
Puncte de control
Colectie de task-uri
Activitati de baza
Activitati auxiliare
Proces software
Metodologii de dezvoltare a software
Metodologie = colectie de metode folosite pentru rezolvarea
unei clase de probleme, aplicabile in timpul dezvoltarii unui sistem
si grupate intr-o anumita abordare generala, filozofica.
O metodologie de dezvoltare sw consta din doua componente
complementare:
◦ Un proces software = secventa de activitati si decizii care muta
sistemul de la concepere pana la terminare;
◦ O notatie standard = forma de comunicare folosita pentru a
documenta cunostintele si deciziile luate pe parcursul procesului de
dezvoltare a sistemului.
Metodologia structurata (1970-1989) se bazeaza pe principiile:
abstractizare, ierarhizare, separarea datelor (entitatilor) de functii
(procese).
Metodologii de dezvoltare a software
(cont.)
Metodologia orientata spre date (1970-1980) se bazeaza pe
principiile:
◦ datele intreprinderii furnizeaza o baza mult mai stabila pentru o
proiectare de sistem decat procedurile intreprinderii, si
◦ datele ar trebui vazute ca o resursa a intreprinderii independenta de
sistemele care le proceseaza.
Baza acestei metodologii a fost pusa in 1970 odata cu inventarea
modelului relational de baze de date si a modelarii entitate-relatie.
Metodologia orientata spre obiecte (1990-prezent): sistemul
este modelat numai in termeni de obiecte. Aceste obiecte ofera
servicii (comportament) lumii inconjuratoare si contin informatie.
Obiectele comunica intre ele prin mesaje.
Principiile metodologiei orientata spre
obiecte
Abstractizare: capacitatea de a capta proprietatile esentiale ale
unei entitati, in cazul nostru, ale unui obiect.
Incapsulare: datele (starea) si comportamentul (operatii) sunt
incapsulate in obiect. Accesul la un obiect se face numai prin
intermediul interfetei acestuia.
Mostenire: mecanism folosit pentru partajarea datelor si a
comportamentului comun unei colectii de clase. Aceasta
factorizeaza proprietatile comune ale claselor in supraclase si le
reutilizeaza in definirea subclaselor.
Polimorfism:
◦ de incluziune: subclasificare
◦ parametrizat: clase template
Modularitate: Descompunerea unui sistem într-un ansamblu de
module cu o mare coeziune interna si cu legaturi slabe intre ele.
Partea a III-a. Metode semi-formale
de specificare a sistemelor software
Metode semi-formale ale metodologiei
structurate
Proiectarea structurata Yourdon-Constantine (1972-1973) a furnizat o metoda
pentru dezvoltarea unui arhitecturi de sistem care sa fie conforma cu principiile
ingineriei software: modularitate, module slab cuplate si coeziunea modulelor. Asadar
accentul a fost pus pe proiectarea de sistem.
DeMarco (1978) a imbunatatit abordarea structurata, prin descrierea unor pasi ce
conduc analiza structurata, trecand de la modelarea sistemelor existente (introducand
diagrame de fluxuri de date), la modelarea sistemului in curs de dezvoltare (folosind
DFD-uri, mini-specificatii si un dictionar de date). Desi nu a mai fost ignorata
modelarea datelor, accentul era pus in continuare pe modelarea proceselor.
Continuand traditia structurata, Ward si Mellor (1985) au introdus extensii
importante analizei structurate pentru a suporta mai bine modelarea sistemelor in timp
real.
Yourdon (1989) a revolutionat versiunea de analiza structurata a lui DeMarco
astfel: adauga o faza preliminara pentru dezvoltarea unui model esential al
sistemului in dezvoltare; inlocuieste tehnica de “partitionare dupa eveniment” cu
descompunerea top-down pentru construirea diagramelor de fluxuri de date;
accentueaza mai mult modelarea informatiilor, prin intermediul diagramelor
entitate-relatie; accentueaza modelarea comportamentala cu ajutorul diagramelor
tranzitie de stari; si incurajeaza prototipizarea.
Metode semi-formale ale metodologiei
orientate spre obiecte
Bailin (1988) dezvolta o metoda de specificare orientata spre obiecte a cerintelor,
bazandu-se pe tehnicile folosite in metodologia structurata. Astfel, foloseste diagrame
flux de date ierarhice pentru a descrie fluxul de date intre entitatile active sau intre
functii (operatiile fiecarei entitati) si diagrame entitate-relatie pentru a arata entitatile
si relatiile dintre ele.
Shlaer si Mellor (1988, 1992) definesc o varianta orientata spre obiecte a modelarii
informatiei, dupa care, in 1992 o extind introducand tehnici pentru specificarea si
comportamentul obiectelor si adaugand concepte ale domeniului si subsistemului.
Metoda Shlaer-Mellor furnizeaza suport implicit pentru principiile OO, mai putin
polimorfism. Obiectele si relatiile din diagrama de structura a informatiei nu sunt
identice cu conceptele OO de clasificare si mostenire, dar pot fi mapate usor la aceste
concepte in timpul proiectarii. Cerinta ca fiecare proces de actiuni (si DFD-ul asociat)
sa fie asociat cu exact un obiect, pastreaza incapsularea acelor operatii.
Coad si Yourdon (1991) considera ca metoda lor este construita pe “cele mai bune
concepte din modelarea informatiei, a limbajelor de programare OO si din sistemul
bazat de cunostinte”. Metoda Coad-Yourdon suporta explicit toate principiile
metodologiei orientate spre obiecte. Diagrama de clase si obiecte furnizeaza o
clasificare a obiectelor si identifica relatiile potentiale de mostenire. In plus,
incapsularea obiectelor este modelata prin intermediul conceptului de serviciu.
Metode semi-formale ale metodologiei
orientate spre obiecte
Booch (1991, 1994) reprezinta structura unui sistem prin diagrame de clase si
comportamentul obiectelor prin diagrame de stari. Comunicarea obiectelor este
reprezentata de Booch prin diagrame de timp, respectiv diagrame de secvente.
Rumbaugh et al. (1991, 1995) au continuat tehnica de modelare a obiectelor (OMT)
introdusa de Loomis et al. (1987) si au publicat doua versiuni: in 1991 (OMT91) si in
1995 (OMT95). OMT91 pastreaza din metodologia structurata diagramele de fluxuri
de date, pentru a arata cum sunt efectuate calculele de catre sistem in timpul executarii
unei functii ale sistemului. In rest, foloseste diagramele de clase si obiecte pentru a
arata structura sistemului si statechart-urile pentru a arata variatiile de stare din sistem.
In varianta OMT95, Rumbaugh et al. propun o combinatie intre analiza de domeniu a
sistemului si abordarea condusa de cazurile de utilizare introdusa de Jacobson. Acest
lucru inseamna ca pentru identificarea obiectelor se folosesc cazurile de utilizare si
framework-ul MVC (Model-View-Controller). OMT95 poate fi vazut ca o varianta
intermediara intre OMT91 si UML.
Jacobson et al. (1992, 1995) elaboreaza metoda OO numita OOSE (Object
Oriented Software Engineering), cu varianta comerciala Objectory, care introduce
diagrama de cazuri de utilizare pentru a descrie functionalitatea sistemului, cum am
amintit putin mai sus. In analiza structurii sistemului, Jacobson et al. diferentiaza trei
tipuri de obiecte: obiectele entitate, obiectele de interfata si obiectele de control.
Metode semi-formale ale metodologiei
orientate spre obiecte
In 1996, OMG-ul (Object Management Group) lanseaza pe piata cererea de a primi
propuneri pentru a gasi o metoda standard pentru metodologia de modelare orientata
spre obiecte, ca raspuns la nevoia industriei de software de a alege o metoda din
multitudinea metodelor OO ce existau in acel moment.
Solutia a fost data de Booch, Rumbaugh si Jacobson (1997), care realizeaza
unificarea metodelor lor: Booch, OMT si OOSE. Termenul de unificare este folosit cu
semnificatia ca noua metoda combina conceptele si notatiile folosite in cele trei
metode.
Incercari de unificare a metodelor existente au existat si inainte de 1997. Un
exemplu important este metoda Fusion (1994) care contine concepte din OMT, Booch
si CRC (Wirfs-Brock, 1990). Tot in 1994, Rumbaugh s-a alaturat lui Booch la Rational
Software Corporation si au reusit sa combine conceptele din metodele OMT si Booch
in 1995, ca o prima incercare de unificare a doua metode. In acelasi an firma Rational
coopteaza si pe Jacobson si astfel toti trei au continuat aceasta munca. Rezultatul a fost
UML (Unified Modeling Language).
In ianuarie 1997 OMG-ul admite versiunea 1.0 a UML-ului, pe langa alte cateva
propuneri. Cei admisi au negociat o varianta comuna care a dus la versiunea UML 1.1.
Aceasta a fost acceptata ca standard de OMG in noiembrie 1997.