ABONAMENTE VIDEO REDACȚIA
RO
EN
×
▼ 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

LANSAREA NUMĂRULUI 86

Prezentări articole și
Panel: Autonomous driving

Marți, 20 August, ora 18:00
Bosch R&D, Cluj-Napoca

Înregistrează-te

Facebook Meetup

Conferință

Sponsori

  • ntt data
  • 3PillarGlobal
  • Betfair
  • Telenav
  • Accenture
  • Siemens
  • Bosch
  • FlowTraders
  • MHP
  • Connatix
  • UIPatj
  • MetroSystems
  • Globant
  • Colors in projects