Åpen og lukket arkitektur beskriver to motstridende paradigmer i design og implementering av programvaresystemer.
Åpen arkitektur er en tilnærming som legger vekt på muligheten til å integrere og utvide et programvaresystem med tredjeparts komponenter og tjenester. Åpne arkitekturer er ofte preget av bruk av åpne standarder, APIer og protokoller, som lar utviklere enkelt koble til og kombinere ulike programvarekomponenter. Denne fleksibiliteten og utvidbarheten gjør åpne arkitekturer godt egnet for komplekse, utviklende systemer som krever interoperabilitet og integrasjon med eksterne systemer.
Lukket arkitektur , på den annen side, er en tilnærming som legger vekt på selvkontroll og kontroll i et programvaresystem. Lukkede arkitekturer er designet for å være komplette og uavhengige, med begrenset eller ingen avhengighet av eksterne komponenter eller tjenester. Denne tilnærmingen gir større kontroll over systemets oppførsel, sikkerhet og pålitelighet, men den gjør det også mindre fleksibelt og utvidbart. Lukkede arkitekturer brukes ofte i systemer som krever høye nivåer av sikkerhet, pålitelighet eller ytelse, eller hvor det er viktig å ha full kontroll over systemets funksjonalitet og oppførsel.
I praksis kan mange programvaresystemer falle et sted mellom disse to ytterpunktene. Det er mulig å ha en lukket arkitektur med noen åpne grensesnitt eller en åpen arkitektur med visse lukkede komponenter. Valget mellom åpen og lukket arkitektur avhenger av de spesifikke kravene og begrensningene til systemet som utvikles.