Åben og lukket arkitektur beskriver to modsatrettede paradigmer i design og implementering af softwaresystemer.
Åben arkitektur er en tilgang, der understreger evnen til at integrere og udvide et softwaresystem med tredjeparts komponenter og tjenester. Åbne arkitekturer er ofte karakteriseret ved brugen af åbne standarder, API'er og protokoller, som giver udviklere mulighed for nemt at forbinde og kombinere forskellige softwarekomponenter. Denne fleksibilitet og udvidelsesmuligheder gør åbne arkitekturer velegnede til komplekse, udviklende systemer, der kræver interoperabilitet og integration med eksterne systemer.
Lukket arkitektur , på den anden side, er en tilgang, der lægger vægt på selvstændighed og kontrol inden for et softwaresystem. Lukkede arkitekturer er designet til at være komplette og uafhængige, med begrænset eller ingen afhængighed af eksterne komponenter eller tjenester. Denne tilgang giver større kontrol over systemets adfærd, sikkerhed og pålidelighed, men den gør det også mindre fleksibelt og udvidelsesvenligt. Lukkede arkitekturer bruges ofte i systemer, der kræver høje niveauer af sikkerhed, pålidelighed eller ydeevne, eller hvor det er vigtigt at have fuldstændig kontrol over systemets funktionalitet og adfærd.
I praksis kan mange softwaresystemer falde et sted mellem disse to yderpunkter. Det er muligt at have en lukket arkitektur med nogle åbne grænseflader eller en åben arkitektur med visse lukkede komponenter. Valget mellem åben og lukket arkitektur afhænger af de specifikke krav og begrænsninger for det system, der udvikles.