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]

Yksinkertaistettu kaavio Wikimedian palvelinarkkitehtuurista.

Määritelmä muokkaa

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 muokkaa

Arkkitehtuurien kuvaamisesta on julkaistu standardit IEEE 1471-2000, ISO/IEC 42010:2007 ja ISO/IEC/IEEE 42010:2011, joka korvaa aikaisemmat.[7][8]

Arkkitehtuurityylejä muokkaa

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

Katso myös muokkaa

Lähteet muokkaa

  1. David Garlan & Mary Shaw: An Introduction to Software Architecture (PDF) cs.cmu.edu. tammikuu 1994. Viitattu 4.3.2020. (englanniksi)
  2. What is your definition of software architecture? (PDF) resources.sei.cmu.edu. Viitattu 4.3.2020. (englanniksi)
  3. Martin Fowler: Software Architecture Guide martinfowler.com. 1.8.2019. Viitattu 4.3.2020. (englanniksi) 
  4. a b Haikala, Ilkka & Märijärvi, Jukka: Ohjelmistotuotanto, s. 409. Satku, 2000. ISBN 951-762-769-6.
  5. Software Architecture sei.cmu.edu. joulukuu 2017. Viitattu 4.3.2020. (englanniksi) 
  6. Rich Hilliard: The role of architecture frameworks: Lessons learned from ISO/IEC/IEEE 42010 (PDF) mit.edu. Viitattu 5.3.2020. (englanniksi)
  7. Systems and software engineering — Architecture description iso-architecture.org. Viitattu 4.3.2020. (englanniksi) 
  8. ISO/IEC/IEEE 42010:2011 Systems and software engineering — Architecture description iso.org. Viitattu 4.3.2020. (englanniksi)
  9. 10 Common Software Architectural Patterns in a nutshell towardsdatascience.com. Viitattu 4.3.2020. (englanniksi) 
  10. Blackboard Design Pattern: A Practical C# Example - Radar Defence System social.technet.microsoft.com. Viitattu 4.3.2020. (englanniksi)

Aiheesta muualla muokkaa

 
Commons
Wikimedia Commonsissa on kuvia tai muita tiedostoja aiheesta Ohjelmistoarkkitehtuuri.