ABONAMENTE VIDEO REDACȚIA
RO
EN
NOU
Numărul 149
Numărul 148 Numărul 147 Numărul 146 Numărul 145 Numărul 144 Numărul 143 Numărul 142 Numărul 141 Numărul 140 Numărul 139 Numărul 138 Numărul 137 Numărul 136 Numărul 135 Numărul 134 Numărul 133 Numărul 132 Numărul 131 Numărul 130 Numărul 129 Numărul 128 Numărul 127 Numărul 126 Numărul 125 Numărul 124 Numărul 123 Numărul 122 Numărul 121 Numărul 120 Numărul 119 Numărul 118 Numărul 117 Numărul 116 Numărul 115 Numărul 114 Numărul 113 Numărul 112 Numărul 111 Numărul 110 Numărul 109 Numărul 108 Numărul 107 Numărul 106 Numărul 105 Numărul 104 Numărul 103 Numărul 102 Numărul 101 Numărul 100 Numărul 99 Numărul 98 Numărul 97 Numărul 96 Numărul 95 Numărul 94 Numărul 93 Numărul 92 Numărul 91 Numărul 90 Numărul 89 Numărul 88 Numărul 87 Numărul 86 Numărul 85 Numărul 84 Numărul 83 Numărul 82 Numărul 81 Numărul 80 Numărul 79 Numărul 78 Numărul 77 Numărul 76 Numărul 75 Numărul 74 Numărul 73 Numărul 72 Numărul 71 Numărul 70 Numărul 69 Numărul 68 Numărul 67 Numărul 66 Numărul 65 Numărul 64 Numărul 63 Numărul 62 Numărul 61 Numărul 60 Numărul 59 Numărul 58 Numărul 57 Numărul 56 Numărul 55 Numărul 54 Numărul 53 Numărul 52 Numărul 51 Numărul 50 Numărul 49 Numărul 48 Numărul 47 Numărul 46 Numărul 45 Numărul 44 Numărul 43 Numărul 42 Numărul 41 Numărul 40 Numărul 39 Numărul 38 Numărul 37 Numărul 36 Numărul 35 Numărul 34 Numărul 33 Numărul 32 Numărul 31 Numărul 30 Numărul 29 Numărul 28 Numărul 27 Numărul 26 Numărul 25 Numărul 24 Numărul 23 Numărul 22 Numărul 21 Numărul 20 Numărul 19 Numărul 18 Numărul 17 Numărul 16 Numărul 15 Numărul 14 Numărul 13 Numărul 12 Numărul 11 Numărul 10 Numărul 9 Numărul 8 Numărul 7 Numărul 6 Numărul 5 Numărul 4 Numărul 3 Numărul 2 Numărul 1
×
▼ LISTĂ EDIȚII ▼
Numărul 55
Abonament PDF

Limbaje de descriere a arhitecturii

Gelu Vac
Software Engineering Manager @ Crossover



PROGRAMARE


Limbajele de descriere a arhitecturii (ADLs) sunt limbaje formale care pot fi folosite pentru a descrie arhitectura unui sistem software puternic. Cum arhitectura devine o temă dominantă în sistemele de dezvoltare de mari dimensiuni, metodele clare de specificare a arhitecturii vor deveni indispensabile.

Prin arhitectură, înțelegem componentele care compun un sistem, specificațiile comportamentale ale acelor componente și șabloanele și mecanismele de interacțiune dintre ele. De notat că un sistem singular este compus de obicei din mai mult de un singur tip de componente: module, activități, funcționalități, etc. . O arhitectură poate alege tipul celor mai potrivite sau semnificative componente, sau poate include mai multe paradigme ale aceluiași sistem, fiecare ilustrând un set diferit de componente.

Până la acest moment, arhitecturile au fost descrise în general prin desene informale cerc-și-linie în care natura componentelor, a proprietăților lor, a semanticii conexiunilor și a comportamentului sistemului ca un întreg sunt slab (dacă nu deloc) definite. Deși astfel de desene oferă adesea o imagine intuitivă asupra construcției sistemului, ele adesea eșuează să răspundă la întrebări ca:

Arhitectura și ADL-urile

O arhitectură joacă mai multe roluri în dezvoltarea unui proiect, toate importante și toate facilitate printr-o descriere formală a arhitecturii, cum ar fi un ADL. O descriere formală a arhitecturii este mai ușor de menținut și urmărit decât una informală, poate fi mai ușor consultată și tratată cu autoritate, și poate fi mai ușor transferată spre alte proiecte ca o componentă de bază. Rolurile includ:

Unele ADL-uri oferă o oportunitate pentru analiza la nivelul arhitecturii, cum ar fi generarea automată de simulări, analiza planificării, și altele asemănătoare. Oricum, chiar și în absența capacității de analiză automată, asupra arhitecturii pot fi aplicate și alte strategii de evaluare. Totuși, aceste decizii timpurii de proiectare și atribute calitative de compromis pot fi testate înainte ca schimbarea lor să devină prea costisitoare.

UML și ADL

Limbajul de Descriere a Arhitecturii (ADL) este definit ca "un limbaj (grafic, textual sau ambele) pentru descrierea unui sistem software din perspectiva elementelor sale arhitecturale și a relației dintre ele".

Cu alte cuvinte, ADL este un limbaj care permite formalizarea, descrierea, specificarea, modelarea arhitecturilor software. Fiecare dintre aceste aspecte ar trebui îndeplinite de un limbaj care se dorește a fi numit ADL. Un ADL bun trebuie să ofere abstractizări care sunt adecvate pentru modelarea unui sistem de mari dimensiuni. Fiecare ADL încorporează o abordare particulară a specificațiilor și evoluției arhitecturii.

Limbajul de Modelare Unificat (UML) este un limbaj formal grafic considerat standard de industrie de facto. Deși limbajul a fost creat ca limbaj grafic care inițial să asiste analiza și proiectarea software orientată obiect, limbajul a fost revizuit de câteva ori, iar azi este un limbaj formal generic, capabil să descrie un sistem software. UML are o sintaxă și semantică formală bine definite și poate fi verificată și procesată automat. UML include un set de tehnici de notare grafică pentru a crea modele abstracte ale anumitor sisteme.

Haskell ca exemplu de ADL

Combinatorii de descriere arhitecturală din acest exemplu au fost proiectați pentru editorul Proxima de structura generică orientată spre prezentare. Proxima permite atât editarea structurii documentului cât și a prezentării sale. Din cauza complexității arhitecturii Proxima, vom vorbi despre o arhitectură cu un layer simplu pentru un editor orientat spre prezentare pentru a explica metode de descriere a arhitecturii.

Figura de mai sus arată fluxul de date pentru funcțiile layerului în tipul normalizat Simple. Definiția normalizării Simple este:

data Simple state map doc pres gest upd =
    Simple { present :: LayerFn state doc 
     (map, state) pres
    , interpret :: LayerFn (map, state) gest 
      state upd
}

ADL-urile și relația lor cu alte limbaje

Cum diferă ADL-urile de limbajele de programare, limbajele de cerințe, limbajele de modelare și altele asemănătoare? Dat fiind un limbaj pentru exprimarea proprietăților sau comportamentelor unui sistem, care ar fi criteriile pentru a decide dacă este sau nu un ADL? Din păcate nu este clar.

În principiu, ADL-urile diferă de cerințele de limbaj, deoarece cele din urmă descriu spațiile problemei, respectiv celelalte își au rădăcinile în spațiul soluției.

În practică, cerințele sunt adesea împărțite în grupuri comportamentale pentru usurința prezentării, iar limbajele folosite în descrierea acelor comportamente sunt uneori mai potrivite pentru descrierea componentelor arhitecturale, chiar dacă acesta nu a fost scopul inițial al limbajului. De exemplu, Modechart, un limbaj de cerințe similar cu Statechart, a expus capacități analitice mai puternice decât majoritatea ADL-urilor datorită prezenței unui validator de model. Modechart a fost considerat a fi un ADL deoarece componentele sale (state machines) pot fi interpretate ca fiind componente arhitecturale. Dar Modechart nu a fost conceput să fie un ADL, deci este ușor de produs artefacte în Modechart care, în nicio interpretare semantică rezonabilă, nu corespund unei viziuni arhitecturale de sistem.

În principiu, ADL-urile diferă de limbajele de programare deoarece acestea din urmă conectează toate abstractizările arhitecturale cu soluțiile punctuale specifice în timp ce ADL-urile suprimă intenționat sau modifică o astfel de conexiune.

În practică, arhitectura este încorporată și recuperabilă din cod, și multe limbaje oferă viziuni asupra sistemului la nivelul arhitecturii. De exemplu, Ada oferă posibilitatea vizualizării sistemului doar din punctul de vedere a specificațiilor pachetului, respectiv a interfețelor componentelor. Oricum, Ada oferă capacități analitice la nivel de arhitectură puține sau deloc și nici nu oferă o perspectivă la nivel de arhitectură despre cum se inter-conectează componentele.

În principiu, ADL-urile diferă de limbajele de modelare deoarece cele din urmă sunt mai preocupate de comportamentele întregului decât de cele ale componentelor, în vreme ce ADL-urile se concentrează pe descrierea componentelor.

În practică, multe limbaje de modelare permit descrierea componentelor cooperante și pot descrie arhitecturi destul de bine.

Există doi cercetători de top care au oferit câteva caracteristici dezirabile pentru ADL-uri. Shaw enumeră următoarele proprietăți importante pe care un ADL ar trebui să le ofere:

Luckham enumeră urmatoarele cerințe pentru un ADL:

Aceste enumerări ilustrează puncte de vedere diferite despre ce înseamnă un ADL. Nu există o delimitare clară între ADL-uri și non-ADL-uri. Limbajele pot oricum să se deosebească prin cât de multe informații arhitecturale pot reprezenta. Limbajele concepute ca ADL-uri ne arată un avantaj clar sub acest aspect față de limbajele construite pentru un alt scop și convertite ulterior să descrie arhitecturi.

Analiza de domeniu orientată spre caracteristici

Analiza caracteristicilor este o unealtă cu metode de analiză a anumitor domenii, cum ar fi metoda Feature-Oriented Domain Analysis (FODA); funcționează prin catalogarea caracteristicilor de sistem vizibile la nivelul utilizatorului într-o manieră structurată.

Caracteristicile sunt structurate în următoarele trei categorii: caracteristici orientate spre sistem, caracteristici orientate spre limbaj și caracteristici orientate spre proces.

Caracteristici orientate spre sistem

Caracteristicile orientate spre sistem sunt legate de sistemul aplicației derivat din descrierea arhitecturii. De exemplu, anumite ADL-uri s-ar putea să nu poată exprima constrângerile în timp real despre componentele arhitecturale ale sistemului, în timp ce altele pot. Toate caracteristicile din această categorie sunt proprietăți ale unui sistem finalizat; oricum, ele se reflectă asupra capacității ADL-ului să exprime sau descrie respectivele proprietăți la nivelul arhitecturii.

Caracteristici orientate spre limbaj

Caracteristicile orientate spre limbaj sunt caracteristici ale ADL-ului însuși, independent de sistemul pentru construcția căruia este folosit. Aceste proprietăți includ acel tip de informații care se regăsesc de obicei într-un manual de referință al limbajului. Un exemplu este cât de formal este specificată sintaxa și semantica ADL-ului, și ce abstractizări sunt încorporate în ADL.

Caracteristici orientate spre proces

Caracteristicile orientate spre proces sunt caracteristici ale unui proces în legatură cu folosirea ADL-ului pentru a crea, valida, analiza și rafina o descriere arhitecturală, și construirea unui sistem de aplicație din el. Sunt incluse proprietăți care măsoară sau descriu cum sau în ce măsură un ADL permite evaluarea predictivă a sistemului aplicației, în baza informațiilor de la nivelul arhitecturii. Aceste proprietăți măsoară dacă un ADL conține sau nu suficiente informații pentru a face arhitectura analizabilă, indiferent dacă există cu adevărat uneltele care exploatează respectiva competență.

De exemplu, un ADL ar putea permite suficiente informații temporale care să fie oferite pentru a asista analiza planificării. Un analizor (dacă există pentru ADL) ar fi un exemplu de unealtă care exploatează o astfel de informație.

Concluzii

Arhitectura, în contextul sistemelor software, este împărțită în arhitectura softului, arhitectura rețelei și arhitectura sistemului. În fiecare categorie există o distincție tangibilă dar neclară între arhitectură și design.

Designul este abstractizarea și specificarea șabloanelor și componentelor de funcționalitate care au fost sau vor fi implementate. Arhitectura este un nivel superior atât în abstractizare cât și în granularitate.

Arhitectura se realizează în timpul conceptualizării unei aplicații, a unui sistem sau a unei rețele și ar putea apărea în secțiunile non-funcționale ale documentației cerințelor. Canonic, designul nu este specializat în cerințe, dar mai degrabă influențată de ele.

Procesul definirii unei arhitecturi poate implica euristici, cerute de arhitect sau echipa de arhitecți prin experiența domeniului. Ca și în cazul designului, arhitectura evoluează adesea printr-o serie de iterații.

Bibliografie

  1. Bharathi B., Sridharan D.; "UML as an Architecture Description Language", International Journal of Recent Trends in Engineering, Vol. 1, No. 2, May 2009

  2. Kang, Kyo C.; Cohen, Sholom G.; Hess, James A.; Novak, William E.; & Peterson, A. Spencer. "Feature Oriented Domain Analysis (FODA)", Feasibility Study (CMU/SEI-90-TR-21, ADA235785). Pittsburgh, PA: Software Engineering Institute, Carnegie Mellon University, November 1990

  3. Paul C. Clements; "A Survey of Architecture Description Languages", Software Engineering Institute, Carnegie Mellon University, March 1996

  4. Martijn M. Schrage, S. Doaitse Swierstra; "Haskell as an Architecture Description Language", Department of Information and Computing Sciences, Utrecht University, Netherlands, 2008

NUMĂRUL 149 - Development with AI

Sponsori

  • Accenture
  • BT Code Crafters
  • Accesa
  • Bosch
  • Betfair
  • MHP
  • BoatyardX
  • .msg systems
  • P3 group
  • Ing Hubs
  • Cognizant Softvision
  • Colors in projects