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