Documente Academic
Documente Profesional
Documente Cultură
Proiectarea arhitecturală a
sistemelor software.
Șabloane arhitecturale
Sumar
Arhitectura software. Continutul, stabilitatea si
modalitatile dezvoltarii modelului arhitectural
Proiectarea arhitecturala (dezvoltarea modelului
arhitectural). Descrieri arhitecturale in UML
Arhitecturi distribuite si multiprocesor. Concepte
arhitecturale
Șabloane arhitecturale și modele de control
Studiu de caz: proiectarea arhitecturala a unui
sistem de monitorizare meteo
Concluzii
Definiţii explicite
Proiectarea arhitecturală: știința de a construi un sistem
cu rigoare și armonie. Arhitectura software – definită de
structura/ structurile unui sistem, conține elemente
software, proprietăți vizibile extern ale acelor elemente
dar și relațiile între acestea*
Referă structura de ansamblu a sistemului software
(intensiv - SSI) și modul in care aceasta structură
furnizează sistemului integritate semantică
Elemente şi proprietăţi vizibile:
Se includ proprietăţile vizibile din exterior: servicii
furnizate, caracteristici de performanță, utilizarea
resurselor partajate de către mai multe elemente, etc.
Se exclud acele proprietăţi ce nu afectează utilizarea
elementelor sau interacţiunile între elemente
Descrierea arhitecturală a SSI
Arhitectura este rezultatul unui proces de proiectare
arhitecturală, ce constă în:
Descompunerea sistemului software în subsisteme
Determinarea interfețelor subsistemelor
Decizii privind modul de interacțiune între subsisteme
Documentația ce rezultă în urma procesului de proiectare
arhitecturală este înglobată în modelul arhitectural
Arhitectura este nucleul proiectului software; fiecare
inginer software trebuie să o înțeleagă
O decizie nepotrivită luată în faza proiectării arhitecturii
software poate avea implicații negative asupra eficienței,
reutilizabilității și mentenabilității sistemului
Arhitectura - un model reutilizabil
Arhitectura este un model intermediar, un punct
de start sau plan pentru implementarea unui
sistem project blueprint
Este important ca arhitectura să fie reutilizabilă
ideea de software product line
O arhitectură reutilizabilă și standardizată permite
folosirea de componente dezvoltate independent sau
de către externi
Pregătirea şi experienţa proiectanţilor
Repetă reţetele de succes, evită repetarea greşelilor
anterioare
Continutul modelului arhitectural
Arhitectura sistem se exprimă prin câteva vederi
Descompunerea logică in subsisteme cu interfetele lor
Dinamica interactiunilor la executie intre subsisteme și
componente
Datele partajate intre subsisteme
Componentele și calculatoarele pe care componentele
sunt desfașurate la execuție
Observatii:
O descriere a arhitecturii unui sistem arată similar unei descrieri
complete de sistem (poate include orice tip de model) dar conține
numai modelele si vederile sistem relevante dpdv arhitectural
Un model arhitectural descrie atat aspecte structurale cat si
aspecte comportamentale ale sistemului
Vederi structurale
Arhitectura se constituie din vederi structurale
multiple, de exemplu:
Una ce capturează relaţiile dintre modulele în care
este împărţit proiectul în faza de dezvoltare.
O alta ce capturează relaţiile dintre elementele care
apar în timpul execuţiei programului
Partea observabilă extern a comportamentului
elementelor face parte tot din arhitectură
Termenii pot avea diferite semnificaţii:
Elemente: obiecte, clase, funcţii, procese, programe,
biblioteci, etc.
Interacţiuni între elemente: subdivizare, sincronizare,
apel de funcţie
Rolul arhitecturii in comunicare
Fiecare stakeholder este interesat de anumite
caracteristici ale sistemului
Rolul arhitectului: găsirea strategiilor de a
echilibra caracteristici diferite și/sau contradictorii
Rolul arhitecturii: un “limbaj” comun în care se
exprima, se negociază şi se rezolva aceste lucruri
Arhitectura trebuie sa fie suficient de abstractă ca să
poată descrie la un nivel general inteligibil un sistem
complex
Arhitectura trebuie sa poată fi analizată din punct de
vedere al principalelor caracteristici ale sistemului
Rolul arhitecturii in asigurarea
caracteristicilor de sistem
Performanţă : se recomanda folosirea componentelor
cu granularitate larga şi nu a celor cu granularitate fina
O arhitectură judicioasă permite localizarea
operaţiilor critice şi minimizarea comunicaţiilor
Securitate : e utila folosirea unei arhitecturi în straturi
cu păstrarea deciziilor critice în straturile interioare
Siguranţă : este legată de localizarea caracteristicilor
safety-critical într-un număr mic de sub-sisteme
Disponibilitate : se asigură 1/ prin includerea unor
componente redundante şi /2 prin asigurarea unor
mecanisme de asigurare a toleranței la defecte
Mentenabilitate : impune folosirea componentelor
fine-grain, înlocuibile
Conflicte arhitecturale
Utilizarea componentelor cu granularitate larga
îmbunătăţeşte performanţele dar reduce
mentenabilitatea
Introducerea datelor redundante îmbunătăţeşte
disponibilitatea dar face asigurarea securităţii
mult mai dificila
Localizarea facilitaţilor legate de siguranţă are ca
efect, de obicei, o creştere a comunicaţiilor deci
și o degradare a performanţelor sistem
Stabilitatea arhitecturii software
Pentru asigurarea fiabilitatii si mentenabilitatii sistemului
software, modelul arhitectural trebuie sa fie stabil
O arhitectura software e stabila daca permite adaugarea
de noi servicii si facilitati la sistem cu modificari minime
ale arhitecturii
De exemplu, in UP (the Unified Process), la sfarsitul fazei
de elaborare arhitectura software ar trebui sa fie stabila
Succesul unui proiect UP depinde de capacitatea unei mici
echipe de arhitecti si dezvoltatori (de valoare profesionala
ridicata) de a face o arhitectura stabila cu resurse limitate
Conform ref.cit., este posibila dezvoltarea unei arhitecturi stabile
cu doar aprox. 30% din resursele alocate proiectului
Proiectarea arhitecturală
Asigură legătura între procesele de specificare şi
celelalte procese de proiectare (de detaliu)
În cadrul multor modele de procese software are loc
în paralel cu unele activităţi de specificare
Implică identificarea componentelor majore de sistem
şi a comunicaţiei între acestea
Sistemele mari sunt intotdeauna descompuse in
sub-sisteme ce asigura un set legat de servicii:
proiectarea arhitecturală este procesul iniţial de
identificare a acestor servicii și stabilire a unui
cadru de control al subsistemelor și comunicare
Rolul proceselor de proiectare
arhitecturală (design)
Contribuie la găsirea soluţiei de compromis între
cerinţe (contradictorii) ale diferitelor categorii de
stakeholders şi la stabilirea calităţilor sistemului
Reprezintă un mijloc de comunicare eficient
între stakeholders
Fac primul pas către realizarea sistemului, în
direcţia asigurării calităţilor dorite ale acestuia
Realizează primele artefacte care permit analiza
viitorului sistem în vederea stabilirii calităţilor lui
Dezvoltarea modelului arhitectural
-pași inițiali
Ca prim pas, se construieste o arhitectura prototip (de
obicei, inainte de a lua in considerare orice detalii legate
de cazurile de utilizare).
In acest stadiu se utilizeaza:
Cunostinte despre domeniul de aplicatie,
Diagrame de componente
Diagrame de desfasurare
Diagrame de pachete
• O componenta furnizeaza
una sau mai multe
O componenta este o parte fizica a interfete ce pot fi utilizate
unui sistem, care poate fi inlocuita de alte componente
cu o componenta similara si care • Pentru vizualizarea unei
furnizeaza realizarea (si se componente care utilizeaza
conformeaza) unui set de interfete o interfata furnizata de o
alta componenta se
utilizeaza un semicerc (la
capatul unei linii)
Diagrame de desfasurare
Sensor Light
control Display control
process process process
Traffic lights
Traffic flowsensorsand
cameras Operator consoles
Concepte arhitecturale
Reference Model
Reference
Architecture
Design Architectural Software
Pattern Pattern Architecture
Architectural
Style Framework
Modele de referinţă
(Reference Model)
Un model de referinţă este o diviziune a funcţionalităţii
împreună cu fluxul de date între părţi
Rezulta printr-o decompoziţie standard a unei
probleme cunoscute în părţi care împreună, în
manieră co-operativă, rezolvă problema
Modelele de referinţă rezultă din experienţa îndelungată
într-un anumit domeniu de aplicaţie
Sunt caracteristice domeniilor mature
Exemple:
Compilatoare: analiza lexicala, analiza sintactica,
Wide-bandwidth network
o5 o6
S (o5) S (o6)
Sablonul arhitectural Broker
Faciliteaza distributia obiectelor unui sistem software
in mod transparent pe diferite noduri
Utilizand arhitectura Broker, un obiect poate apela
metode ale unui alt obiect fara sa stie ca acesta din
urma este situat pe un alt calculator
Aici poate fi util sablonul de proiectare Proxy
O componenta Broker (ce trateaza toate invocarile
locale de obiecte) se poate atasa fiecarui calculator
care gazduieste obiecte distribuite
Un standard pentru acest tip de arhitectura este
CORBA (Common Object Request Broker Architecture)
Arhitecturi multistrat (model
masina abstracta)
Pot evidentia clar interfetele subsistemelor
Sistemul este organizat intr-un set de straturi
(sau masini abstracte), fiecare asigurand un set
de servicii
Suporta dezvoltarea incrementala a subsistemelor
din diferitele straturi
Atunci cand se schimba interfata unui strat,
numai stratul adiacent este afectat
Dezavantaj: structurarea sistemelor cu foarte
multe straturi este dificila
Version management system
Version management
Object management
Database system
Operating
system
Arhitectura 3-tier si multi-layer
Strat de prezentare
Are ca rol prezentarea rezultatelor unor prelucrări şi
colectarea intrărilor utilizatorilor
Strat de procesare a aplicaţiilor
Se ocupa de asigurarea funcţionalităţii specifice
aplicaţiilor (de ex. într-un sistem bancar a funcţiilor
de banking ca openAccount, closeAccount etc.)
Strat de management al datelor
Se ocupa de managementul sistemelor de baze de
date ale aplicaţiilor
Straturi ale aplicaţiilor
Presentation layer
Application processing
layer
Data management
layer
Sablonul arhitectural Multi-Layer
Intr-un sistem organizat pe nivele (Multi-Layer), orice nivel utilizeaza
doar serviciile nivelelor inferioare – adesea numai serviciile nivelului
imediat inferior
Un nivel are o interfata bine definita (API) ce defineste servicile pe
care le furnizeaza) utilizata de nivelele (imediat) superioare.
Un nivel superior vede un nivel inferior ca un set de servicii
Design Code
editor generator
Design Report
analyzer generator
Sablonul arhitectural Pipe-and-
Filter
Un flux de date, intr-un format relativ simplu,
este transmis printr-o serie de procese:
Fiecare proces transforma fluxul intr-un anumit mod
Fluxul de date alimenteaza arhitectura in mod
continuuu
(Conceptual) Procesele lucreaza in mod concurent
Aceasta arhitectura este foarte flexibila:
Aproape toate componentele ar putea fi eliminate
Componentele pot fi inlocuite
Se pot insera noi componente
Anumite componente pot fi reordonate
Exemplu de arhitectura Pipe-
and-Filter
Main
program
Sensor Actuator
processes processes
System
contr oller
Interrup t
vecto r
Manages all
«subsystem» external
Inter face communications
«subsystem» Package of
Instruments instruments for raw
data collections
Arhitectura sistemului global (multi-layer)
Observer Satellite
User
User Map
inter
interface
face display
Comms
Weather Map
Map printer
station Balloon
«subsystem» «subsystem»
Data processing Data archiving
Data
Data
Data Data storage
storage
checking integ ration
Map store Data store
Concluzii
Arhitectura este nucleul proiectului software
Pentru ca un sistem software sa fie fiabil,
modelul arhitectural trebuie sa fie stabil
Proiectarea arhitecturală asigură legătura între
procesele de specificare şi proiectarea de detaliu
Virtual, toate sistemele software complexe sunt
caracterizate de arhitecturi distribuite
Sabloanele arhitecturale sunt solutii standard de
proiectare pentru sisteme software alcatuite din
subsisteme si componente independente