• Nu S-Au Găsit Rezultate

Proiectarea de sistem (I)

N/A
N/A
Protected

Academic year: 2022

Share "Proiectarea de sistem (I)"

Copied!
30
0
0
Arată mai multe ( pagini)

Text complet

(1)

Ingineria sistemelor soft 2013-2014

Curs 6

Proiectarea de sistem (I)

Curs bazat pe B. Bruegge and A.H. Dutoit

"Object-Oriented Software Engineering using UML, Patterns, and Java"

(2)

Proiectarea de sistem

(3)

Proiectarea de sistem (cont.)

• Procesul de transformare a modelului rezultat din ingineria cerin¸telor într-un model arhitectural al sistemului

• Produse ale proiect ˘arii de sistem

Obiectivele de proiectare (eng. design goals)

Calit ˘a¸ti ale sistemului pe care dezvoltatorii trebuie s ˘a le optimizeze

Derivate din cerin¸tele nefunc¸tionale

Arhitectura sistemului

Subsistemele componente (de dimensiuni mai mici, asignabile unei subechipe de dezvoltare)

Responsabilit ˘a¸tile subsistemelor ¸si dependen¸tele între ele

Maparea subsistemelor la hardware

Strategii de dezvoltare: fluxul global de control, strategia de gesionare a datelor cu caracter persistent, politica de control a accesului

(4)

Proiectarea de sistem (cont.)

• Activit ˘a¸ti ale proiect ˘arii de sistem

Identificarea obiectivelor de proiectare

Identificarea ¸si stabilirea priorit ˘a¸tilor acelor calit ˘a¸ti ale sistemului pe care dezvoltatorii trebuie s ˘a le optimizeze

Descompunerea ini¸tial ˘a a sistemului

Pe baza modelului func¸tional ¸si a modelelor de analiz ˘a

Bazat ˘a pe utilizarea unor stiluri arhitecturale standard

Rafinarea descompunerii ini¸tiale pentru a r ˘aspunde obiectivelor de proiectare

Rafinarea arhitecturii de la pasul anterior, pân ˘a la îndeplinirea tutror obiectivelor de proiectare

• Analogie cu proiectarea arhitectural ˘a a unei cl ˘adiri

Componente: camere vs. subsisteme

Interfe¸te: pere¸ti/u¸si vs. servicii

Reproiectare: mutarea pere¸tilor vs. schimbarea subsistemelor/interfe¸telor

(5)

Concepte ˆın proiectarea de sistem

• Subsisteme ¸si clase

• Servicii, interfe¸te ¸si API-uri

• Coeziune ¸si cuplare

• Stratificare ¸si parti¸tionare

• Stiluri arhiecturale ¸si arhitecturi software

(6)

Subsisteme s¸i clase

Subsistem = parte înlocuibil ˘a a unui sistem (constând într-un

num ˘ar de clase din domeniul solu¸tiei), caracterizat ˘a prin interfe¸te bine definite, care încapsuleaz ˘a starea ¸si comportamentul

claselor componente

Descompunerea în subsisteme permite gestionarea complexit ˘a¸tii ("divide et impera")

Un subsistem se dezvolt ˘a, de regul ˘a, de c ˘atre un programator sau o echip ˘a de dezvoltare

Prin descompunerea sistemului în sisteme (relativ) independente, se permite dezvoltarea (relativ) concurent ˘a a acestora

Sistemelor complexe le corespund mai multe nivele de descompunere (Composite pattern)

(7)

Subsisteme s¸i clase (cont.)

• Ex.: descompunere în subsisteme a sistemului SGA (diagram ˘a UML de componente)

Subsistemele sunt reprezentate ca ¸si componente UML, cu rela¸tii de dependen¸t˘a între ele

O component ˘a UML poate reprezenta

O componenta logic ˘a = un subsistem ce nu are un echivalent runtime

O componenta fizic ˘a = un subsistem ce are un echivalent runtime

(8)

Servicii, interfet¸e s¸i API-uri

Serviciu = mul¸time de opera¸tii înrudite (definite cu acela¸si scop)

Subsistemele sunt caracterizate de serviciile oferite altor subsisteme

Ex.: un subsistem care ofer ˘a un serviciu de notificare va defini opera¸tii de tipul LookupChanel(), SubscribeToChanel(), UnsubscribeFromChanel(), SendNotification()

Serviciile se identific ˘a în timpul proiect ˘arii de sistem

Interfa¸t˘a (a unui subsistem) = mul¸time de opera¸tii UML înrudite, complet tipizate (numele, parametrii + tipurile lor, tipul returnat)

Rafinare a unui serviciu, specific ˘a interac¸tiunile ¸si fluxul de informa¸tii dinspre

¸si înspre frontiera subsistemului (nu ¸si în interiorul acestuia)

Interfe¸tele se definesc în timpul proiect ˘arii obiectuale

API (Application Programming Interface) = specificare a unei interfe¸te subsistem într-un limbaj de programare

API-urile se definesc în etapa de implementare

(9)

Servicii, interfet¸e s¸i API-uri (cont.)

Ex.: Interfe¸te/servicii oferite (eng. provided ) ¸si solicitate/utilizate (eng. required )

Nota¸tia UML: conectori ball-and-socket

Ball (lollipop) = interfa¸t˘a oferit ˘a, socket = interfa¸t˘a solicitat ˘a

Dependen¸tele dintre subsisteme se reprezint ˘a prin cuplarea conectorilor ball cu cei socket

Reprezentare utilizat ˘a în momentul în care descompunerea în subsisteme e relativ stabil ˘a ¸si focusul se schimb ˘a de pe identificarea subsistemelor pe identificarea serviciilor (anterior se folosesc rela¸tii UML de dependen¸t˘a)

(10)

Coeziune s¸i cuplare

Cuplare (eng. coupling) = num ˘arul de dependen¸te dintre dou ˘a subsisteme

Cuplare slab ˘a (eng. low coupling) - num ˘ar mic de dependen¸te (subsisteme relativ independente)

Cuplare strâns ˘a (eng. strong coupling) - num ˘ar mare de dependen¸te (schimb ˘arile efectuate într-un sistem îl vor afecta ¸si pe cel ˘alalt)

Dezirabil ˘a într-o descompunere: cuplarea slab ˘a

Reducerea cupl ˘arii conduce, în general, la cre¸sterea complexit ˘a¸tii prin introducerea de subsisteme suplimentare

Coeziune (eng. coesion) = num ˘arul de dependen¸te din interiorul unui subsistem

Coeziune înalt ˘a (eng. high coesion) - subsistemul con¸tine un num ˘ar mare de clase puternic rela¸tionate ¸si care efectueaz ˘a sarcini similare

Coeziune slab ˘a (eng. low coesion) - subsistemul con¸tine un num ˘ar de clase nerela¸tionate

Dezirabil ˘a într-o descompunere: coeziunea înalt ˘a

Cre¸sterea coeziunii (prin descompunere în subsisteme cu coeziune înalt ˘a) conduce ¸si la cre¸sterea cupl ˘arii, prin dependen¸tele nou introduse

(11)

Cuplare

• Ex.: Subsisteme stâns cuplate

Subsistemele de gestiune trimit SGBD-ului comenzi SQL

Trecerea la un alt SGBD sau schimbarea strategiei de persisten¸t˘a (fi¸siere text) determin ˘a modific ˘ari la nivelul tuturor celor trei subsisteme de gestiune

(12)

Cuplare (cont.)

• Ex.: Reducerea cupl ˘arii prin inserarea unui subsistem suplimentar

Noul subsistem izoleaz ˘a subsistemele de gestiune de SGBD

Subsistemele de gestiune utilizeaz ˘a doar serviciile oferite de noul subsistem, care va fi responsabil cu trimiterea de comenzi SQL spre SGBD

Trecerea la un alt SGBD sau schimbarea strategiei de persisten¸t˘a va determina doar modific ˘ari la nivelul subsistemului introdus

(13)

Coeziune

• Subsistem cu coeziune slab ˘a

Clasele componente pot fi parti¸tionate în dou ˘a submul¸timi slab cuplate

(14)

Coeziune (cont.)

• Cre¸sterea coeziunii prin descompunerea subsistemului ini¸tial

(15)

Stratificare s¸i partit¸ionare

Descompunere ierarhic ˘a a unui sistem (stratificare)

Genereaz ˘a o mul¸time ordonat ˘a de straturi (eng. layers)

Un strat reprezint ˘a un grup de subsisteme ce ofer ˘a servicii înrudite, eventual utilizând servicii dintr-un alt strat

Straturile sunt ordonate: un strat poate accesa doar servicii ale straturilor inferioare

Arhitectur ˘a închis ˘a - fiecare strat poate accesa doar servicii din stratul imediat inferior (scop = modificabilitate/flexibilitate)

Arhitectur ˘a deschis ˘a - un strat poate accesa servicii din oricare dintre straturile inferioare (scop = eficien¸t˘a )

Parti¸tionare

Genereaz ˘a un grup de subsisteme la acela¸si nivel (eng. peers), fiecare dintre ele fiind responsabil de o categorie diferit ˘a de servicii

• În general, o descompunere a unui sistem complex este rezultatul

atât al stratific ˘arii, cât ¸si al parti¸tion ˘arii

(16)

Stiluri arhitecturale s¸i arhitecturi software

Descompunerea sistemului (eng. system decomposition) =

identificarea subsistemelor, a serviciilor ¸si a rela¸tiilor între acestea

Stil arhitectural (eng. architectural style) = ¸sablon de descompunere a sistemelor

Arhitectur ˘a software (eng. software architecture) = instan¸t˘a a unui stil arhitectural

• Exemple de stiluri arhitecturale

Repository

Model-View-Controller

Client-Server

Peer-to-Peer

Three-tier architecture

Four-tier arhitecture

Pipes and filters

(17)

Repository

• Subsistemele acceseaz ˘a ¸si modific ˘a o singur ˘a structur ˘a de date centralizat ˘a, denumit ˘a repository

Subsistemele sunt relativ independente ¸si interac¸tioneaz ˘a doar prin intermediul repository-ului (cuplare slab ˘a)

Fluxul de control poate fi dictat de repository (prin triggere) sau de c ˘atre subsisteme (prin blocaje ¸si sincroniz ˘ari)

(18)

Repository (cont.)

• Avantaje

Arhitectur ˘a util ˘a în cazul sistemelor cu necesit ˘a¸ti de procesare complexe, în continu ˘a schimbare

Odat ˘a definit repository-ul, pot fi oferite servicii noi prin definirea de subsisteme adi¸tionale

• Dezavantaje

Subsistemele ¸si repository-ul sunt strâns cuplate, fac ˘and dificil ˘a modificarea repository-ului f ˘ar ˘a a afecta subsistemele

Probleme de performan¸t˘a

• Utilitate

Sisteme de gestiune a bazelor de date

Compilatoare ¸si medii integrate de dezvoltare (eng. Integrated Development Environments, IDEs)

(19)

Exemplu de arhitectur ˘a Repository pentru un IDE

(20)

Model-View-Controller (MVC)

• Subsistemele sunt încadrate în una din trei categorii

Model - reprezint ˘a informa¸tii/cuno¸stin¸te din domeniul problemei

View - afiseaz ˘a aceste informa¸tii utilizatorului

Controller - translateaz ˘a interac¸tiunile cu view -ul în ac¸tiuni asupra modelului

• Subsistemele model nu depind de nici un subsistem view sau controller

Modific ˘arile produse la nivelul acestora sunt propagate în subsistemele view prin intermediul unui protocol de înscriere/ notificare

Func¸tionalitatea de înscriere/notificare este realizat ˘a, de obicei, cu ajutorul

¸sablonului de proiectare Observer

(21)

Model-View-Controller (cont.)

• Justificare

Interfa¸ta utilizator (view-urile ¸si controller-ele) sunt mult mai predispuse spre schimbare decât informa¸tiile din model

Pot fi ad ˘augate vederi noi, f ˘ar ˘a a modifica în alt fel sistemul

• Utilitate

Sisteme interactive, mai ales cele care necesit ˘a diferite vederi ale aceluia¸si model

• MVC este un tip particular de Repository, în care modelul

corespunde structurii repository, iar fluxul de control este dictat de

c ˘atre obiectele controller

(22)

Exemplu de arhitectur ˘a MVC

Modelul este reprezentat de fi¸sierul 9DesignPatterns.ppt2

Una dintre vederi este fereastra CBSE, care listeaza con¸tinutul

directorului cu acela¸si nume, cealalta este fereastra Info, care afi¸seaz ˘a informa¸tii relativ la fi¸sierul 9DesignPatterns.ppt2

Schimbarea numelului fi¸sierului determin ˘a actualizarea ambelor vederi

(23)

Exemplu de arhitectur ˘a MVC (cont.)

Secven¸ta de interac¸tiuni aferent ˘a schimb ˘arii numelui fi¸sierului

9DesignPatterns.ppt2

(24)

Client-Server

Un subsistem, numit server, ofer ˘a servicii instan¸telor unor alte subsisteme, numite clien¸ti, care sunt responsabile de

interac¸tiunea cu utilizatorii

Solicitarea unui serviciu se face, de obicei, printr-un mecanism de apel la distan¸t˘a (Java RMI, CORBA, HTTP)

Fluxurile de control din server ¸si clien¸ti sunt independente, cu excep¸tia sincroniz ˘arilor pentru gestionarea cererilor ¸si primirea r ˘aspunsurilor

• Utilitate

Sisteme distribuite complexe, care gestioneaz ˘a un volum mare de date

(25)

Exemple de arhitecturi client-server

• Un sistem informa¸tional cu o baz ˘a de date centralizat ˘a

Clien¸tii sunt responsabili de colectarea inputurilor utilizator, validarea acestora

¸si ini¸tierea tranzac¸tiilor cu baza de date

Serverul este responsabil de executarea tranzac¸tiilor ¸si garantarea integrit ˘a¸tii datelor

Îm acest caz, stilul client/server este o particularizare a stilului repository, în care structura de date centralizat ˘a este gestionat ˘a de un proces

• WWW - un client acceseaz ˘a date oferite de diverse servere

(26)

Peer-to-peer

• Generalizare a stilului arhitectural client-server: un subsistem poate juca atât rol de client, cât ¸si de server (fiecare subsistem poate solicita ¸si oferi servicii)

Fluxurile de control sunt independente, cu excep¸tia sincroniz ˘arilor pe cereri

• Exemple

O baz ˘a de date care accept ˘a cereri de la o aplica¸tie, dar o ¸si notific ˘a atunci când se produc schimb ˘ari asupra datelor

(27)

Three-tier architecture

• Subsistemele sunt organizate pe trei straturi/nivele

interfa¸t˘a utilizator - include toate obiectele boundary care mediaz ˘a interac¸tiunea cu utilizatorii (ferestre, forme, pagini Web, etc.)

logica aplica¸tiei - include toate obiectele entity ¸si control care realizeaz ˘a verific ˘arile, proces ˘arile ¸si notific ˘arile cerute de aplica¸tie

accesul la date - gestioneaz ˘a ¸si ofer ˘a acces la datele cu caracter persistent

• Avantaje

Nivelul de acces la date joac ˘a rolul repository-ului din stilul arhitectural omonim ¸si poate fi partajat de c ˘atre aplica¸tiile care opereaz ˘a asupra respectivelor date

Separarea dintre logica aplica¸tiei ¸si interfa¸t˘a permite modific ˘ari ale interfe¸tei f ˘ar ˘a a afecta logica aplica¸tiei

(28)

MVC vs. Three-tier architecture

• Stilul arhitectural MVC este nonierarhic (triangular)

Subsistemul view trimite cereri c ˘atre subsistemul controller

Subsistemul controller actualizeaz ˘a subsistemul model

Subsistemul view este notificat de c ˘atre subsistemul model

• Stilul arhitectural 3-tier este ierarhic (liniar)

Nivelul de prezentare nu comunic ˘a niciodat ˘a direct cu cel de date (arhitectur ˘a închis ˘a)

• MVC nu acoper ˘a problema persisten¸tei datelor

(29)

Four-tier architecture

O varia¸tie a stilului arhitectural three-tier, în care nivelul interfa¸t˘a se descompune în

prezentare client - localizat pe ma¸sinile client

prezentare server - localizat pe unul sau mai multe servere

• Avantaje

Pe nivelul prezentare client pot exista diferi¸ti clien¸ti, o parte a obiectelor boundary fiind reutilizate

Ex.: un sistem bancar include pe nivelul de prezentare client o interfa¸t˘a Web pentru utilizatori, un ATM ¸si o interfa¸t˘a desktop pentru angaja¸tii b ˘ancii.

Formele partajate de to¸ti clien¸tii sunt definite ¸si procesate la nivelul prezentare

(30)

Pipes and filters

Pipeline - lan¸t de unit ˘a¸ti de procesare (procese, thread-uri, ...)

aranjate astfel încât output-ul uneia reprezint ˘a input-ul urm ˘atoarei

Pipes and filters - stil arhitectural constând din dou ˘a tipuri de subsisteme, denumite pipes (canale) ¸si filters (filtre)

Filter - subsistem care efectueaz ˘a un pas de procesare

Pipe - conexiune dintre doi pa¸si de procesare

• Fiecare subsistem filtru are un canal de intrare ¸si unul de ie¸sire

Datele preluate din canalul de intrare sunt procesare de c ˘atre filtru ¸si trimise canalului de ie¸sire

• Ex. Unix shell: ls -a | cat

Referințe

DOCUMENTE SIMILARE

C ile care conduc la acest deziderat sunt cre terea num rului de studen i cu tax i studen i str ii valutari, dezvoltarea i eficientizarea pe plan superior a

Sunt necesare cercetări suplimentare pentru a analiza nevoia de servicii sociale, în funcție de nivelul de dependență, tipul și gradul de

- forAll: source->forAll(iterator | body) - returneaz ˘a true dac ˘a pentru toate elementele din colec¸tia source body se evalueaz ˘a la true - exists: source->exists(iterator

Un sistem de baze de date centralizat (Centralized Database System) este un sistem de baze de date în care datele şi sistemul de gestiune sunt stocate pe un singur calculator..

Grija cu care sunt elaborate încaperile in- dica calitatea de gest a templului: un gest pur, a carui tinta este sacrul - care, indiferent de maniera mai mult sau mai putin

Unitățile de ATI sunt saloane, servicii sau secții de spital, grupate cu anexele necesare într-un singur complex care funcționează cu intensitate permanentă, internând

Metod  Monte Carlo este numit  orice metod  care rezolv  o problem  prin generarea unor anumite valori aleatoare ³i observând fracµiunea acestor valori care au o anumit 

Un graf de ordin cel puµin trei este numit condenµial conex dac , pentru orice trei noduri distincte a; b ³i c, exist  un drum de la a la b astfel încât c este diferit de ³i nu

Fie S un sistem de referinţă şi P un punct fix (numit pol) faţă de acest sistem de referinţă. Enunţ: Variaţia în unitatea de timp a momentului cinetic al unui punct

 O astfel de problema este testul de primalitate pentru care (i) Avem un algoritm aleatoriu cu complexitate

Fişierele script sunt cele mai simple fişiere MATLAB, nu au argumente de intrare sau de ieşire şi sunt utile pentru executarea secvenţială a unor calcule care altfel ar

un proces apeleaza un client DNS numit resolver, care trimite un pachet (UDP) celui mai apropiat server DNS care cauta numele si returneaza adresa IP; daca nu gaseste apeleaza la

i) Candidaţii declaraţi admişi pe un loc bugetat/taxă pot cere eliminarea unor opţiuni (specializări) din lista sa în afară de opţiunea (specializarea) la care a fost declarat

ii. Senatului universitar al UMFVBT – în cazul în care cercetarea disciplinară a vizat personal didactic sau de cercetare, iar sancțiunea propusă este: suspendarea, pe o

Dac˘ a, în orice moment, parametrii c˘ auta¸ti de utilizator sunt satisf˘ acu¸ti cu toate relat , iile specificate, compozit , ia este complet˘ a, ¸si este returnat˘ a air

Pentru aceasta, am dedicat atât un sistem de mailing intern cât și paginile în care sunt afișate proiectele și evenimentele ce au legătură cu compania în care este

Android NDK este un set de unelte care oferă permisiunea de a utiliza limbajul C 10 ș i C++ în combina ț ie cu Android ș i oferă biblioteci pentru gestionarea activită

arterială care cresc spre valori normale sau ATP-aza care scade spre valori nor- male etc. • Determinările biochimice şi fiziologice care au dus la aceste con- cluzii

Rootkit-urile sunt rareori distructive ele însele, pentru ca scopul lor este de a câștiga și menține controlul asupra unui sistem pentru a-i folosi capacitatea de procesare în

Există 48 specii de bacili, dintre care doar unele ca- uzează boli, de exemplu Bacillus an- thracis, care este răspunzător pentru periculosul Antrax.. Alți bacili sunt însă

(2) Sunt cons idera ti califlcati in vederea evaluarii ~i ierarh izarii de catre Comisia de C oncu rs candidatii inscrlsl la concurs, pentru posturile de asistent universit ar,

1) La nivelul UMFVBT, elaborarea proiectelor de regulamente/metodologii/proceduri de sistem precum și a altor documente asimilate (cu excepția celor a căror elaborare intră

Se poate ca acest lucru så se întâmple cândva, înså cartea de fa¡å a fost scriså pentru a împårtå¿i una dintre cele mai importante lec¡ii pe care eu le-am învå¡at: