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.

 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ä.

Arkkitehtuurin sanotaan olevan asiantuntijakehittäjillä oleva jaettu ymmärrys järjestelmästä.

Arkkitehtuuri voidaan jakaa hierarkisesti osiin, jotka kommunikoivat rajapintojen välityksellä. Osa voi olla luokka, komponentti tai alijärjestelmä.

Arkkitehtuuri on kaavio sekä järjestelmästä että projektista, joka kehittää sitä ja määrittelee tehtävät suunnittelu- ja toteutusryhmille.

Termistössä arkkitehtuuri vastaa useiden osapuolten () intresseistä ().

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

 Arkkitehtuurityylejä 
Yleisiä rakennetyylejä ovat:
 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)
 tulkkimalli

 Katso myös 
 Suunnittelumalli

 Lähteet 

 Aiheesta muualla 

 Foundations for the Study of Software Architecture