Ohjelmistoarkkitehtuuri
Ohjelmistoarkkitehtuuri kuvaa ohjelmiston tai ohjelmistojärjestelmän rakennetta. Järjestelmän koon kasvaessa suunnitteluongelma ylittää algoritmien ja tietorakenteiden määrittelyn ja suurissa järjestelmissä kokonaisuuden suunnittelu ja määrittely esiintyy uutena ongelmana.[1]
Määritelmä
Määritelmiä arkkitehtuurille on esitetty useita.
Arkkitehtuuri on joukko rakenteita, joita tarvitaan järjestelmän ymmärtämiseksi, johon liittyy ohjelmistoelementtejä, niiden välisiä suhteita sekä molempien ominaispiirteitä.[2]
Arkkitehtuurin sanotaan olevan asiantuntijakehittäjillä oleva jaettu ymmärrys järjestelmästä.[3]
Arkkitehtuuri voidaan jakaa hierarkisesti osiin, jotka kommunikoivat rajapintojen välityksellä.[4] Osa voi olla luokka, komponentti tai alijärjestelmä.[4]
Arkkitehtuuri on kaavio sekä järjestelmästä että projektista, joka kehittää sitä ja määrittelee tehtävät suunnittelu- ja toteutusryhmille.[5]
Termistössä arkkitehtuuri vastaa useiden osapuolten (engl. stakeholder) intresseistä (engl. concerns).[6]
Standardit
Arkkitehtuurien kuvaamisesta on julkaistu standardit IEEE 1471-2000, ISO/IEC 42010:2007 ja ISO/IEC/IEEE 42010:2011, joka korvaa aikaisemmat.[7][8]
Arkkitehtuurityylejä
Yleisiä rakennetyylejä ovat:[9]
- kerroksittainen rakenne
- asiakas-palvelin-arkkitehtuuri
- isäntä-orja -malli
- putki-suodatin -malli
- välittäjämalli (broker)
- peer-to-peer -malli
- tapahtumajono
- MVC-malli
- liitutaulumalli (blackboard)[10]
- tulkkimalli