Programvaruarkitektur är de grundläggande strukturerna i ett mjukvarusystem och disciplinen att skapa sådana strukturer och system. Det är i huvudsak en hög nivå plan som definierar:
* komponenter: De viktigaste byggstenarna i systemet (t.ex. moduler, tjänster, databaser). Den beskriver vad varje komponent gör och hur den interagerar med andra.
* Kontakter: Hur dessa komponenter kommunicerar och interagerar med varandra (t.ex. API:er, meddelandeköer, delat minne).
* Begränsningar: Begränsningar och begränsningar för systemets utformning och implementering (t.ex. prestationskrav, säkerhetsöverväganden, skalbarhetsbehov).
* Egenskaper: Systemets egenskaper som helhet, såsom tillförlitlighet, skalbarhet, underhållbarhet och säkerhet. Arkitekturen syftar till att uppnå dessa önskade egenskaper.
Kort sagt, programvaruarkitekturen är en design på hög nivå som styr utvecklingsprocessen och säkerställer att systemet uppfyller sina krav. Det fokuserar på "vad" och "varför" av systemet, snarare än det detaljerade "hur" som "hanteras av design och implementering på lägre nivå. Att välja rätt arkitektur är avgörande för framgången för ett mjukvaruprojekt eftersom det påverkar faktorer som underhåll, skalbarhet, prestanda och kostnad.