Ohjelmistoarkkitehtuuri

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 13. toukokuuta 2019 tarkistetusta versiosta . tarkastukset vaativat 8 muokkausta .

Ohjelmistoarkkitehtuuri on joukko  tärkeimpiä ohjelmistojärjestelmän organisointiin liittyviä päätöksiä . Arkkitehtuuri sisältää:

Ohjelmistoarkkitehtuurin (SW) dokumentointi yksinkertaistaa kehittäjien välistä kommunikaatiota, mahdollistaa tehtyjen suunnittelupäätösten tallentamisen ja niistä tiedon välittämisen järjestelmän käyttöhenkilöstölle [ 3] , komponenttien ja projektipohjien uudelleenkäyttöön muissa.

"Ohjelmistoarkkitehtuurille" ei ole yleisesti hyväksyttyä määritelmää. Joten, Institute of Software Engineeringin sivusto tarjoaa yli 150 määritelmää tälle käsitteelle [4] [5] .

Yleiskatsaus

Tietojenkäsittelytieteen ala on alusta asti kohdannut haasteita, jotka liittyvät ohjelmistojärjestelmien monimutkaisuuteen. Aiemmin kehittäjät ratkaisivat monimutkaisuusongelmia valitsemalla oikeat tietorakenteet, kehittämällä algoritmeja ja soveltamalla vallanjaon käsitettä. Vaikka termi "ohjelmistoarkkitehtuuri" on suhteellisen uusi ohjelmistokehitysteollisuudessa, ohjelmistokehityksen pioneerit ovat soveltaneet alan perusperiaatteita umpimähkäisesti 1980-luvun puolivälistä lähtien. Ensimmäiset yritykset ymmärtää ja selittää järjestelmän ohjelmistoarkkitehtuuria olivat täynnä epätarkkuuksia ja kärsivät organisoinnin puutteesta, usein vain kaaviosta viivoilla yhdistetyistä lohkoista. 1990-luvulla yritettiin määritellä ja systematisoida tämän tieteenalan pääasiat. Tänä aikana kehitettiin ensimmäinen joukko suunnittelumalleja , suunnittelutyylejä, parhaita käytäntöjä, kuvauskieliä ja muodollista logiikkaa [6] .

Ohjelmistoarkkitehtuurin tieteenalan perusideana on ajatus järjestelmän monimutkaisuuden vähentämisestä abstraktion ja vallanjaon avulla. Toistaiseksi ei ole vielä päästy yksimielisyyteen käsitteen "ohjelmistoarkkitehtuuri" selkeästä määritelmästä.

Tällä hetkellä kehittyvänä tieteenalana, jolla ei ole selkeitä sääntöjä "oikeasta" tavasta rakentaa järjestelmä, ohjelmistoarkkitehtuurin suunnittelu on edelleen sekoitus tiedettä ja taidetta. "Taiteen" näkökohta on, että mikä tahansa kaupallinen järjestelmä sisältää sovelluksen tai tehtävän. Ohjelmistoarkkitehtuurin käyttäjän näkökulmasta ohjelmistoarkkitehtuuri antaa suunnan liikkua ja ratkaista jokaisen sellaisen käyttäjän erikoisalaan liittyviä ongelmia, esimerkiksi sidosryhmä, ohjelmistokehittäjä, ohjelmistotukitiimi, ohjelmistojen ylläpitäjä, ohjelmistojen käyttöönottoasiantuntija, testaaja, ja myös loppukäyttäjiä. Tässä mielessä ohjelmistoarkkitehtuuri itse asiassa kokoaa yhteen erilaisia ​​näkökulmia järjestelmään. Se, että nämä useat eri näkökulmat voidaan yhdistää ohjelmistoarkkitehtuurissa, on argumentti ohjelmistoarkkitehtuurin luomisen tarpeellisuuden ja tarkoituksenmukaisuuden puolesta jo ennen ohjelmistokehitysvaihetta [7] [8] [9] .

Historia

Ohjelmistoarkkitehtuuri käsitteenä sai alkunsa Edsger Dijkstran vuonna 1968 ja David Parnassuksen tutkimustyöstä 1970-luvun alussa. Nämä tutkijat korostivat, että ohjelmistojärjestelmän rakenne on tärkeä ja että oikean rakenteen rakentaminen on kriittistä. Alan tutkimuksen suosio on kasvanut 1990-luvun alusta lähtien arkkitehtonisia tyylejä (kuvioita), arkkitehtuurin kuvauskieliä, arkkitehtuuridokumentaatiota ja muotomenetelmiä koskevalla tutkimuksella.

Tutkimuslaitoksilla on tärkeä rooli ohjelmistoarkkitehtuurin kehittämisessä tieteenalana. Mary Shaw ja David Garlan Carnegie Mellonin yliopistosta kirjoittivat kirjan "Software Architecture: Perspectives on a New Discipline in 1996", jossa he esittivät ohjelmistoarkkitehtuurikonsepteja, kuten komponentteja, liittimiä, tyylejä ja niin edelleen. Kalifornian yliopiston Irvine Institute for Software Research tutkii ensisijaisesti arkkitehtonisia tyylejä, arkkitehtuurin kuvauskieliä ja dynaamisia arkkitehtuureja.

Ensimmäinen ohjelmistoarkkitehtuuristandardi on IEEE 1471: ANSI/IEEE 1471-2000: Guidelines for Describing Predominantly Software Systems. Se otettiin käyttöön vuonna 2007 nimellä ISO ISO/IEC 42010:2007.

Arkkitehtuurin kuvauskielet

Arkkitehtuurin kuvauskieliä (ADLS) käytetään kuvaamaan ohjelmiston arkkitehtuuria. Eri organisaatiot ovat kehittäneet useita erilaisia ​​ADLS:itä, mukaan lukien AADL (SAE-standardi), Wright (kehitetty Carnegie Mellonin yliopistossa), Acme (kehitetty Carnegie Mellonin yliopistossa), xADL (kehitetty UCI:ssä), Darwin (kehitetty Imperial Collegessa Lontoossa) , DAOP-ADL (kehitetty Malagan yliopistossa) ja ByADL (L'Aquilan yliopisto, Italia). Yhteisiä elementtejä kaikille näille kielille ovat komponentin, liittimen ja konfiguroinnin käsitteet. Lisäksi arkkitehtuurin kuvaamiseen käytetään erikoiskielten lisäksi usein yhtenäistä mallinnuskieltä UML .

Näkymät

Ohjelmistoarkkitehtuuri sisältää yleensä useita näkymiä, jotka ovat samankaltaisia ​​kuin talonrakentamisen erityyppiset piirustukset. ANSI/IEEE 1471-2000:n määrittelemässä ontologiassa näkemykset ovat näkökulmia, joissa on näkökulma kuvaamaan arkkitehtuuria tietyn sidosryhmien joukon näkökulmasta.

Arkkitehtoninen näkymä koostuu kahdesta osasta:

Arkkitehtoniset näkymät voidaan jakaa kolmeen päätyyppiin [10] :

  1. Modulaariset näkymät (eng. module view ) - esittelevät järjestelmän eri ohjelmistolohkojen rakenteena.
  2. Komponentit ja liittimet (eng. komponentti-ja liitinnäkymät ) - näyttää järjestelmän rinnakkaisten kulkuelementtien (komponenttien) rakenteena ja niiden vuorovaikutuksen (liittimet).
  3. Allocation (eng. allocation view ) - näyttää järjestelmäelementtien sijainnin ulkoisissa ympäristöissä.

Esimerkkejä modulaarisista näkymistä:

Esimerkkejä komponentti- ja liitintyypeistä:

Esimerkkejä majoitustyypeistä:

Vaikka ohjelmistoarkkitehtuuria on kehitetty kuvaamaan useita kieliä, tällä hetkellä ei ole yksimielisyyttä siitä, mitkä näkemykset tulisi ottaa viitteeksi. UML-kieli luotiin standardiksi "ohjelmistojärjestelmien (eikä vain) mallintamiseen".

Arkkitehtoniset kuviot

Erilaisia ​​arkkitehtonisia malleja käytetään tyydyttämään suunniteltu järjestelmä erilaisilla laatuominaisuuksilla. Jokaisella mallilla on omat tavoitteensa ja haittapuolensa.

Esimerkkejä arkkitehtonisista malleista:

MVC-konseptilla on kuitenkin myös haittapuolensa. Erityisesti vuorovaikutuksen monimutkaisuuden vuoksi järjestelmän nopeus laskee.

Ohjelmistoarkkitehtuurin peruskehykset

Ohjelmistoarkkitehtuuriin liittyvät seuraavat puitteet ( englanninkieliset  ohjelmistoarkkitehtuurikehykset ):

Arkkitehtuuriesimerkit, kuten Zachman Framework, DoDAF ja TOGAF, kuuluvat yritysarkkitehtuurien alaan.

Katso myös

Muistiinpanot

  1. Kruchten, Philippe . Rational Unified Process - An Introduction, Addison-Wesley, 1998
  2. Rumbaugh, J. , Jacobsen, I. ja Booch, G. The Unified Modeling Language Reference Manual. Reading, Mass.: Addison-Wesley, 1999
  3. Ohjelmistoarkkitehtuurien dokumentointi: Views and Beyond, 2010 , P.1.1. Yleiskatsaus.
  4. Ohjelmistoarkkitehtuurien dokumentointi: Views and Beyond, 2010 , P.1.2. Arkkitehtuuri ja laatuominaisuudet.
  5. Ohjelmistoarkkitehtuuri: Sanasto arkistoitu 5. tammikuuta 2013 Wayback Machinessa , Software Engineering Institute
  6. Mikä on ohjelmistoarkkitehtuurin  määritelmä ? resources.sei.cmu.edu. Haettu 23. lokakuuta 2019. Arkistoitu alkuperäisestä 28. helmikuuta 2020.
  7. ISO/IEC/IEEE 42010: "arkkitehtuurin" määrittely . www.iso-architecture.org. Haettu 23. lokakuuta 2019. Arkistoitu alkuperäisestä 7. huhtikuuta 2017.
  8. M. Fowler. Suunnittelu - Kuka tarvitsee arkkitehdin?  // IEEE-ohjelmisto. - 2003-9. - T. 20 , no. 5 . — S. 11–13 . - doi : 10.1109/MS.2003.1231144 . Arkistoitu alkuperäisestä 23. lokakuuta 2019.
  9. Johdatus ohjelmistoarkkitehtuuriin . Haettu 23. lokakuuta 2019. Arkistoitu alkuperäisestä 6. toukokuuta 2021.
  10. Len Bass, Paul Clements, Rick Kazman. Software Architecture in Practice (3. painos) (SEI-sarja ohjelmistosuunnittelussa). - 3 painos (5. lokakuuta 2012). - 2012. - 640 s. — ISBN 978-0321815736 .

Kirjallisuus

Linkit