Arhitectura software

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 13 mai 2019; verificările necesită 8 modificări .

Arhitectura software este un  set al celor mai importante decizii privind organizarea unui sistem software. Arhitectura include:

Documentarea arhitecturii software (SW) simplifică procesul de comunicare între dezvoltatori, vă permite să înregistrați deciziile de proiectare luate și să furnizați informații despre acestea personalului de operare al sistemului [3] , reutilizați componente și șabloane de proiect în altele.

Nu există o definiție general acceptată a „arhitecturii software”. Deci, site-ul Institutului de Inginerie Software oferă mai mult de 150 de definiții ale acestui concept [4] [5] .

Prezentare generală

Domeniul informaticii, încă de la începuturile sale, s-a confruntat cu provocări legate de complexitatea sistemelor software. Anterior, problemele de complexitate erau rezolvate de dezvoltatori prin alegerea structurilor de date potrivite, dezvoltarea algoritmilor și aplicarea conceptului de separare a puterilor. Deși termenul „arhitectură software” este relativ nou în industria dezvoltării de software, principiile fundamentale ale domeniului au fost aplicate fără discernământ de pionierii dezvoltării de software încă de la mijlocul anilor 1980. Primele încercări de a înțelege și explica arhitectura software a unui sistem au fost pline de inexactități și au suferit de o lipsă de organizare, adesea doar o diagramă a blocurilor conectate prin linii. În anii 1990 s-a încercat definirea și sistematizarea principalelor aspecte ale acestei discipline. Un set inițial de modele de design, stiluri de design, bune practici, limbaje de descriere și logică formală au fost dezvoltate în acest timp [6] .

O idee fundamentală a disciplinei arhitecturii software este ideea de a reduce complexitatea sistemului prin abstracție și separarea puterilor. Până în prezent, nu există încă un acord cu privire la o definiție clară a termenului „arhitectură software”.

Fiind o disciplină în evoluție în prezent, fără reguli clare despre modalitatea „corectă” de a construi un sistem, proiectarea arhitecturii software este încă un amestec de știință și artă. Aspectul „artă” este că orice sistem comercial presupune o aplicație sau o misiune. Din perspectiva unui utilizator de arhitectură software, arhitectura software oferă direcție pentru deplasarea și rezolvarea problemelor legate de specialitatea fiecărui astfel de utilizator, de exemplu, o parte interesată, dezvoltator de software, echipă de asistență software, întreținător de software, specialist în implementarea software, tester, precum și utilizatorii finali. În acest sens, arhitectura software reunește de fapt diferite perspective asupra unui sistem. Faptul că aceste câteva puncte de vedere diferite pot fi combinate într-o arhitectură software este un argument în favoarea necesității și oportunității creării unei arhitecturi software chiar înainte de etapa de dezvoltare a software-ului [7] [8] [9] .

Istorie

Arhitectura software ca concept a început cu munca de cercetare a lui Edsger Dijkstra în 1968 și a lui David Parnassus la începutul anilor 1970. Acești savanți au subliniat că structura unui sistem software este importantă și că construirea structurii corecte este critică. Studiul acestui domeniu a crescut în popularitate de la începutul anilor 1990 cu lucrări de cercetare privind stilurile arhitecturale (modele), limbaje de descriere a arhitecturii, documentația arhitecturii și metodele formale.

Instituțiile de cercetare joacă un rol important în dezvoltarea arhitecturii software ca disciplină. Mary Shaw și David Garlan de la Universitatea Carnegie Mellon au scris o carte intitulată „Arhitectura software: perspective asupra unei noi discipline în 1996” în care au prezentat concepte de arhitectură software, cum ar fi componente, conectori, stiluri și așa mai departe. La Universitatea din California, Institutul Irvine pentru Cercetarea Software-ului cercetează în primul rând stilurile arhitecturale, limbaje de descriere a arhitecturii și arhitecturile dinamice.

Primul standard de arhitectură software este IEEE 1471: ANSI/IEEE 1471-2000: Guidelines for Describing Predominantly Software Systems. A fost adoptat în 2007 sub denumirea ISO ISO/IEC 42010:2007.

Limbaje de descriere a arhitecturii

Limbajele de descriere a arhitecturii (ADLS) sunt folosite pentru a descrie arhitectura software-ului. Mai multe ADLS diferite au fost dezvoltate de diferite organizații, inclusiv AADL (standard SAE), Wright (dezvoltat la Carnegie Mellon University), Acme (dezvoltat la Carnegie Mellon University), xADL (dezvoltat la UCI), Darwin (dezvoltat la Imperial College London) , DAOP-ADL (dezvoltat la Universitatea din Malaga) și ByADL (Universitatea din L'Aquila, Italia). Elementele comune pentru toate aceste limbaje sunt conceptele de componentă, conector și configurare. De asemenea, pe lângă limbajele specializate, limbajul unificat de modelare UML este adesea folosit pentru a descrie arhitectura .

Vizualizări

O arhitectură software conține de obicei mai multe vederi care sunt similare cu diferitele tipuri de desene din construcția clădirilor. Într-o ontologie definită de ANSI/IEEE 1471-2000, vederile sunt instanțe de punct de vedere, în care există un punct de vedere pentru a descrie o arhitectură din punctul de vedere al unui anumit set de părți interesate.

Vederea arhitecturală este formată din 2 componente:

Vederile arhitecturale pot fi împărțite în 3 tipuri principale [10] :

  1. Vizualizări modulare (eng. module view ) - arată sistemul ca o structură a diferitelor blocuri software.
  2. Components-and-connectors (eng. component-and-connector views ) - arată sistemul ca o structură de elemente care rulează paralel (componente) și modul în care acestea interacționează (conectori).
  3. Alocare (îng. vizualizări de alocare ) - arată amplasarea elementelor sistemului în medii externe.

Exemple de vederi modulare:

Exemple de tipuri de componente și conectori:

Exemple de tipuri de cazare:

Deși au fost dezvoltate mai multe limbi pentru a descrie arhitectura software, în prezent nu există un acord asupra setului de vederi care ar trebui adoptat ca referință. Limbajul UML a fost creat ca standard „pentru modelarea sistemelor software (și nu numai)”.

Modele arhitecturale

Sunt aplicate diverse modele arhitecturale pentru a satisface sistemul proiectat cu diferite atribute de calitate. Fiecare șablon are propriile sale obiective și dezavantaje.

Exemple de modele arhitecturale:

Cu toate acestea, conceptul MVC are și dezavantajele sale. În special, din cauza complicației interacțiunii, viteza sistemului scade.

Cadre de bază pentru arhitectura software

Există următoarele cadre ( cadre de arhitectură software engleză  ) legate de domeniul arhitecturii software:

Exemple de arhitectură, cum ar fi Zachman Framework, DoDAF și TOGAF, intră în domeniul arhitecturilor de întreprindere.

Vezi și

Note

  1. Kruchten, Philippe . Procesul rațional unificat-o introducere, Addison-Wesley, 1998
  2. Rumbaugh, J. , Jacobsen, I. și Booch, G. Manualul de referință al limbajului de modelare unificat. Reading, Mass.: Addison-Wesley, 1999
  3. Documenting Software Architectures: Views and Beyond, 2010 , P.1.1. Prezentare generală.
  4. Documenting Software Architectures: Views and Beyond, 2010 , P.1.2. Arhitectură și atribute de calitate.
  5. Arhitectura software: Glosar arhivat la 5 ianuarie 2013 la Wayback Machine , Institutul de inginerie software
  6. Care este definiția dvs. de  arhitectură software . resurse.sei.cmu.edu. Preluat la 23 octombrie 2019. Arhivat din original la 28 februarie 2020.
  7. ISO/IEC/IEEE 42010: Definirea „arhitecturii” . www.iso-architecture.org. Preluat la 23 octombrie 2019. Arhivat din original la 7 aprilie 2017.
  8. M. Fowler. Design - Cine are nevoie de un arhitect?  // Software IEEE. — 2003-9. - T. 20 , nr. 5 . — S. 11–13 . - doi : 10.1109/MS.2003.1231144 . Arhivat din original pe 23 octombrie 2019.
  9. O introducere în arhitectura software . Preluat la 23 octombrie 2019. Arhivat din original la 6 mai 2021.
  10. Len Bass, Paul Clements, Rick Kazman. Arhitectura software în practică (Ediția a 3-a) (Seria SEI în Inginerie software). - ediția a 3-a (5 octombrie 2012). - 2012. - 640 p. — ISBN 978-0321815736 .

Literatură

Link -uri