620 likes | 710 Views
Arhitecturi pentru sisteme soft w are. Curs 2. PLAN CURS. Sec ţiunile cursului Tipuri de vederi (viewtypes), stiluri şi vederi Definiţii Perspectiva statică Perspectiva dinamică Perspectiva alocării Concluzie Limbajul Acme şi instrumentul AcmeStudio. Secţiunile cursului.
E N D
PLAN CURS • Secţiunile cursului • Tipuri de vederi (viewtypes), stiluri şi vederi • Definiţii • Perspectiva statică • Perspectiva dinamică • Perspectiva alocării • Concluzie • Limbajul Acme şi instrumentul AcmeStudio
Secţiunile cursului • Definiţie şi concepte • Stiluri arhitecturale clasice • Tehnici • Arhitecturi pentru X
Secţiunile cursului - Definiţie şi concepte Definiţie - “Arhitectura software a unui program sau a unui sistem de calcul constă din structura sau structurile sistemului şi conţine elementele software, proprietăţile vizibile din exterior ale acestor elemente şi relaţiile dintre elemente.” Concepte • Structură – element real al arhitecturii unui sistem, reprezentabil prin abstractizări arhitecturale. • Element software – “parte” a unui sistem software. • Proprietate arhitecturală – proprietate funcţională sau non-funcţională (calitate) vizibilă din exterior. • Relaţie – interacţiune între elemente prin intermediul interfeţelor publice. • Perspectivă – punct de vedere limitat asupra sistemului. • Vedere (view) şi tip de vedere (viewtype) – (View) reprezentare a unei structuri văzută dintr-o anumită perspectivă; (Viewtype) mod de reprezentare specific unei anumite perspective. • Stil arhitectural • Şablon arhitectural
Secţiunile cursului – Stiluri arhitecturale clasice • Descriere stil • Caracteristici distinctive şi specializări • Euristici pentru alegere stil • Tehnici de implementare • Formalizări • Studii de caz Familii de stiluri (din perspectiva dinamică - C&C) • Dataflow • Call-return • Event-based • Shared Data • Communicating Processes • Altele
Secţiunile cursului – Tehnici Suportul pentru proiectarea arhitecturală • Notaţii pentru reprezentare arhitecturi • Tehnici de alegere a unei arhitecturi bune • Analiza compromisurilor • Instrumente • Prezentări eficiente ale arhitecturii • Documentarea arhitecturilor software • Convieţuirea cu eterogenitatea şi cu părţi ce nu se potrivesc • Ingineria liniilor de producţie Arhitectura face trecerea de la cerinţe la implementare • Relaţiile dintre cerinţe şi arhitectură • Relaţiile dintre arhitectură şi implementări • Relaţiile dintre arhitecturi
Secţiunile cursului – Arhitecturi pentru X Modul de adaptare a tehnicilor de bază şi a stilurilor arhitecturale la anumite atribute de calitate şi la anumite domenii. X {performanţă, securitate, utilizabilitate, sistem enterprise, E-commerce}
PLAN CURS • Secţiunile cursului • Tipuri de vederi (viewtypes), stiluri şi vederi • Definiţii • Perspectiva statică • Perspectiva dinamică • Perspectiva alocării • Concluzie • Limbajul Acme şi instrumentul AcmeStudio
Tipuri de vederi, stiluri şi vederi “Arhitectura software a unui program sau a unui sistem de calcul constă din structura sau structurile sistemului şi conţine elementele software, proprietăţile vizibile din exterior ale acestor elemente şi relaţiile dintre elemente.” Într-o vedere arhitecturală este reprezentat un anumit fel de structură – exemple: • Structura modulelor indicând compoziţia/decompoziţia lor • Structura proceselor şi modul de sincronizare • Structura hardware şi modul în care software-ul este repartizat pe aceasta • Structura echipelor de dezvoltare şi modul lor de cooperare • Structura la momentul execuţiei, reprezentînd componentele şi conectorii dintre acestea.
Tipuri de vederi şi vederi Vedere (view) = o reprezentare a unui (sub)set de elemente ale sistemului şi a relaţiilor asociate cu acestea. Vederea reprezintă sistemul dintr-o anumită perspectivă. Fiecare perspectivă este caracterizată de un tip de vedere ce defineşte tipuri de elemente şi tipuri de relaţii specifice. O vedere este construită dintr-o anumită perspectivă, folosind tipul de vedere corespunzător acesteia.
Tipuri de vederi şi vederi Arhitectul software consideră sistemul din trei perspective: Perspectiva statică – modul în care sistemul este structurat ca set de unităţi de implementare (cod). Vederile reprezintă modulele sistemului. Tipul de vedere este Module Viewtype. Perspectiva dinamică – modul în care sistemul este structurat ca set de unităţi de execuţie (elemente ce au comportament şi interacţiuni la momentul execuţiei). Vederile reprezintă componentele sistemului şi conectorii dintre acestea. Tipul de vedere este C&C Viewtype. Perspectiva alocării – modul în care sistemul se relaţionează cu structurile non-software din contextul său. Vederile reprezintă modul de alocare a structurilor software pe structurile non-software ale sistemului. Tipul de vedere este Allocation Viewtype.
Stiluri Stil arhitectural – specializare pentru tipuri de elemente şi de relaţii, împreună cu un set de constrângeri referitoare la modul de utilizare a acestora. Motivaţie: Au fost observate forme ce se repetă în sisteme diferite. Aceste forme au proprietăţi cunoscute şi pot fi reutilizate. Stilurile arhitecturale sunt independente de sistem şi sunt instrumente importante pentru arhitectul software. Un sistem este de obicei compus din mai multe stiluri • Stiluri diferite pentru zone diferite ale sistemului. • Stiluri diferite pentru perspective diferite asupra sistemului.
Stiluri Stil arhitectural – specializare pentru tipuri de elemente şi de relaţii, împreună cu un set de constrângeri referitoare la modul de utilizare a acestora. Stil arhitectural – poate defini: • Restricţii asupra elementelor • Tipuri de relaţii între elemente • Modalităţi de utilizare a elementelor • Modalităţi de configurare a elementelor
PLAN CURS • Secţiunile cursului • Tipuri de vederi (viewtypes), stiluri şi vederi • Definiţii • Perspectiva statică • Perspectiva dinamică • Perspectiva alocării • Concluzie • Limbajul Acme şi instrumentul AcmeStudio
Perspectiva statică – Module Viewtype Tip de element : • modul = unitate de cod ce implementează un set de responsabilităţi. Tipuri de relaţii : • “is part of” – relaţia parte-întreg • “depends on” – relaţia de dependenţă • “is a” – relaţia de specializare/generalizare
Perspectiva statică – Module Viewtype UTILITATE Construire : • Modulele sunt asignate echipelor în vederea implementării. • Deseori modulele sunt unităţi pentru proiectarea ulterioară (ex. pentru proiectarea de interfeţe). Analiză : • Trasabilitatea şi analiza impactului se bazează pe unităţile de implementare. • Managementul proiectului, bugetarea, planificarea şi monitorizarea utilizează frecvent aceste module.
Perspectiva statică – Module Viewtype NOTAŢII Informale : box-and-lines, cu încuibare UML : diagrame de clase
Perspectiva statică – Module Viewtype STILURI Stilul de descompunere • descompunerea ierarhică a modulelor • suportă dezvoltare concurentă Stilul de generalizare • ierarhie a specializării • suportă reutilizare; gestionarea unui număr mare de definiţii Stilul stratificat (layered) : • maşini virtuale • suportă portabilitate, reutilizare • STILURI • Descompunere • Generalizare • Stratificare
Perspectiva statică – Module Viewtype Tip elemente : modul Tip relaţii : “is part of” Criterii de descompunere : • Obţinerea modificabilităţii • Construire vs. Cumpărare • Linii de producţie Utilitate : • Punct de pornire. Modulelor le sunt asignate responsabilităţi. • Analiza modificare/impact • Bază pentru asignare de sarcini de lucru pentru membrii echipei de dezvoltare. • STILURI • Descompunere • Generalizare • Stratificare
Perspectiva statică – Module Viewtype NOTAŢII Informal : • box-and-lines, încuibate • schiţă textuală • tabelă UML : • Diagrama de clase cu relaţia de compoziţie • Diagrama de pachete • STILURI • Descompunere • Generalizare • Stratificare
Perspectiva statică – Module Viewtype Exemplu • STILURI • Descompunere • Generalizare • Stratificare
Perspectiva statică – Module Viewtype Tip elemente : modul Tip relaţii : “is a” Proprietăţi : • moştenire interfaţă • moştenire implementare Utilitate : • bază pentru proiectarea OO • bază pentru evoluţie şi extindere • reutilizare • STILURI • Descompunere • Generalizare • Stratificare
Perspectiva statică – Module Viewtype NOTAŢII Formal : • Limbaje de programare • UML • STILURI • Descompunere • Generalizare • Stratificare
Perspectiva statică – Module Viewtype • STILURI • Descompunere • Generalizare • Stratificare Tipuri elemente : straturi (nivele), maşină virtuală Tip relaţii : “allowed-to-use” (specializare a relaţiei “depends-on”) Reguli(variante multiple): • Fiecare element software aparţine unui singur nivel. • Un element software de pe un nivel poate utiliza elemente {din orice nivel inferior, doar elemente de pe nivelul imediat inferior}. • Un element de pe un nivel {poate, nu poate} utiliza un element de pe acelaşi nivel.
Perspectiva statică – Module Viewtype Utilitate : • Portabilitate • Dezvoltare incrementală • Separare de probleme (concerns) Variaţii: • Nivele segmentate: divizare nivel în segmente (sau submodule) şi precizarea relaţiei “allow-to-use” la nivel de segment, pentru segmente de pe acelaşi nivel şi segmente de pe nivele diferite. • STILURI • Descompunere • Generalizare • Stratificare
Perspectiva statică – Module Viewtype NOTAŢII Informale : dreptunghiuri şi săgeţi, stivă de dreptunghiuri, inele concentrice. • STILURI • Descompunere • Generalizare • Stratificare
PLAN CURS • Secţiunile cursului • Tipuri de vederi (viewtypes), stiluri şi vederi • Definiţii • Perspectiva statică • Perspectiva dinamică • Perspectiva alocării • Concluzie • Limbajul Acme şi instrumentul AcmeStudio
Perspectiva dinamică – Component-and-connector (C&C) Viewtype Tipuri de elemente : • componentă = unitate de calcul şi/sau memorare date pe timpul execuţiei; accesibilă prin porturi. • conector = mecanism de interacţiune; defineşte roluri. Tipuri de relaţii : • “attachement” – ataşare port al componentei la rol al conectorului Proprietăţi : informaţii pentru construire şi pentru analiză • Atribute de calitate – suport pentru analiză • Altele – funcţie de stil
Perspectiva dinamică – C&C Viewtype UTILITATE • La construire Defineşte sistemul din perspectivă dinamică (în timpul execuţiei) determinând comportamentul ce trebuie construit, căile de interacţiune şi mecanismele de comunicare. • La analiză Model pe baza căruia se analizează proprietăţile (emergente) ale sistemului (disponibilitatea, performanţa, securitatea, încrederea, etc.).
Perspectiva dinamică – C&C Viewtype NOTAŢII Informale : box-and-lines UML : diagrama de componente Acme (AcmeStudio) :
Perspectiva dinamică – C&C Viewtype STILURI (1) Data Flow • Batch sequential (Secvenţial în loturi de lucrări) • Pipe&filters (Reţea de flux de date) • Closed loop control Call-and-return • Main program / subroutines • Information hiding : obiecte, naiv client-server Interacting processes • Communicating processes (light-weight processes, distributed objects) • Event systems (implicit invocation, pure events)
Perspectiva dinamică – C&C Viewtype STILURI (2) Data-oriented repository • Transactional databases (true client-server) • Blackboard (whiteboard) • Modern compiler Data sharing • Compound documents • Hypertext • Light-weight processes Hierarchical • Interpretor • Client-server pe N-trepte (N-tiered)
PLAN CURS • Secţiunile cursului • Tipuri de vederi (viewtypes), stiluri şi vederi • Definiţii • Perspectiva statică • Perspectiva dinamică • Perspectiva alocării • Concluzie • Limbajul Acme şi instrumentul AcmeStudio
Perspectiva alocării – Allocation Viewtype Tipuri de elemente : • Elemente software = definite în perspectiva statică sau în cea dinamică. • Elemente din context (infrastructură) Tipuri de relaţii : • “allocated-to” – repartizare element software pe element (non-software) din context.
Perspectiva alocării – Allocation Viewtype UTILITATE • La construire Defineşte modul de repartizare a elementelor software ale aplicaţiei pe elementele infrastructurii (în general, non-software) • Pe infrastructura hw/sw • Pe membrii echipelor de dezvoltare şi de întreţinere • La analiză Model de integrare a arhitecturii software în context.
Perspectiva alocării – Allocation Viewtype NOTAŢII Informale UML : diagrama de repartizare (deployment)
Perspectiva alocării – Allocation Viewtype STILURI Stilul repartizării Alocarea elementelor software la modurile de procesare şi de comunicare • Exemple de proprietăţi : cele necesare calculării (şi obţinerii) performanţei şi disponibilităţii Stilul implementării Alocarea elementelor software la structuri din sistemul de fişiere ale mediilor de dezvoltare • Exemple de proprietăţi : fişiere şi capacităţi Stilul de alocare a lucrului Alocarea elementelor software la unităţile de lucru din compania de dezvoltare • Exemple de proprietăţi : seturi de competenţe
PLAN CURS • Secţiunile cursului • Tipuri de vederi (viewtypes), stiluri şi vederi • Definiţii • Perspectiva statică • Perspectiva dinamică • Perspectiva alocării • Concluzie • Limbajul Acme şi instrumentul AcmeStudio
Concluzie • Sistemele – combinaţii de stiluri Ex. Tiers-repository-events • Este necesară înţelegerea stilurilor pure, ce constituie blocurile constructive • Regulă : nu amestecaţi stiluri din tipuri diferite de vederi • Crează confuzie (Ex: layers şi tiers)
Exemplu – Test Parsing SystemPerspectiva statică Stilul de descompunere
Exemplu – Test Parsing SystemPerspectiva dinamică Vedere C&C
Exemplu – Test Parsing SystemPerspectiva alocării Stilul implementării
PLAN CURS • Secţiunile cursului • Tipuri de vederi (viewtypes), stiluri şi vederi • Definiţii • Perspectiva statică • Perspectiva dinamică • Perspectiva alocării • Concluzie • Limbajul Acme şi instrumentul AcmeStudio
Perspectiva dinamică • Descompunerea (generală) sistemului în componente ce interacţionează la execuţie • În general ierarhică • Utilizare abstractizări globale pentru “lipire” componente • Deseori utilizare de stiluri de proiectare comune • Analiza proprietăţilor emergente ale sistemului • performanţă, rată de transfer, întârzieri, ... • fiabilitate, securitate, toleranţă la defecte, modificabilitate dinamică, ...
Perspectiva dinamică • Vedere C&C include: • Componente: definesc locaţiile de realizare a calculelor • Exemple: filtre, baze de date, obiecte, tipuri de date abstracte. • Conectori: definesc interacţiunile dintre componente • Exemple: apel de procedură, conductă (pipe), anunţare eveniment. • Stil arhitectural C&C - defineşteo familie de arhitecturi prin: • Tipuri de componente şi conectori(vocabular) • Constrângeri topologice • Constrângeri semantice
Descriere arhitecturi Notaţii şi instrumente pentru perspectiva dinamică (C&C viewtype) Cerinţe: (1) Exprimarea descrierilor arhitecturale precis şi intuitiv • Atât sintaxă cât şi semantică (2) Dezvoltare de crieterii de completitudine şi de instrumentepentru verificarea acestora • Similar cu verificatoarele de tip şi editoarele de legături, în cazul codului (3) Analizarea arhitecturilorpentru determinarea propertăţilor cheie • performanţă, fiabilitate, impact al modificărilor, interoperabilitate (4) Exploatarea şabloanelorşi stilurilor • Fără proliferarea nenecesară şi izolarea unor noi limbaje de proiectare şi instrumente.
Descriere arhitecturi Exemple de limbaje (ADLs) • Rapide:evenimente cu simulare şi animaţie • UniCon: accent pe eterogenitate şi compilare • Wright: spacificaţii formale pentru conectori • Aesop/Acme:orientate pe stiluri (style-specific) • Darwin:arhitecturi orientate pe servicii • SADL:rafinare arhitecturală • Meta-H:descrieri arhitecturale specifice unui domeniu (avionics) • C-2:stil arhitectural ce utilizează invocare implicită
Descriere arhitecturi Limbaje (ADLs) - caracteristici • Structura sistemului este definită separat de componentele individuale • Părţile sunt “independente de context” • Suportăproiectare ierarhică • Se pot defini noi tipuri de conectori • Nu trebuie realizaţi direct de o singură primitivă a unui limbaj de implementare • Au semantici bogate • Exprimă / analizează proprietăţi non-funcţionale • performanţă, fiabilitate, etc. • Suport pentru stiluri architecturale • Şabloane arhitecturale reutilizabile
Descriere arhitecturi Acme – limbaj reprezentativ • Proiectat iniţial ca limbaj pentru interschimbări • Devenit ulterior limbaj de tip ADL • Încearcă să ofere o abordare deschisă(open-ended) pentru reprezentarea arhitecturii • “XML pentru arhitectură” • Descriere structură + permite adnotări • Poate fi consumat selectiv de diferite instrumente • Interschimbări procesabile automat
Exemplu – sistem client-server Descriere arhitecturi Acme –ENTITĂŢILE DE PRIM RANG Componentă – element computaţional Port – punct de interfaţă pentru componentă Conector – interacţiune între componente Rol – punct de interfaţă pentru conector Sistem – graf de componente şi conectori