Arquitetura aberta e fechada descrevem dois paradigmas opostos no projeto e implementação de sistemas de software.
Arquitetura aberta é uma abordagem que enfatiza a capacidade de integrar e estender um sistema de software com componentes e serviços de terceiros. As arquiteturas abertas são frequentemente caracterizadas pelo uso de padrões, APIs e protocolos abertos, que permitem aos desenvolvedores conectar e combinar facilmente diferentes componentes de software. Esta flexibilidade e extensibilidade tornam as arquiteturas abertas adequadas para sistemas complexos e em evolução que requerem interoperabilidade e integração com sistemas externos.
Arquitetura fechada , por outro lado, é uma abordagem que enfatiza a autocontenção e o controle dentro de um sistema de software. As arquiteturas fechadas são projetadas para serem completas e independentes, com dependência limitada ou nenhuma dependência de componentes ou serviços externos. Essa abordagem proporciona maior controle sobre o comportamento, a segurança e a confiabilidade do sistema, mas também o torna menos flexível e extensível. As arquiteturas fechadas são frequentemente utilizadas em sistemas que exigem altos níveis de segurança, confiabilidade ou desempenho, ou onde é importante ter controle total sobre a funcionalidade e o comportamento do sistema.
Na prática, muitos sistemas de software podem ficar em algum lugar entre esses dois extremos. É possível ter uma arquitetura fechada com algumas interfaces abertas ou uma arquitetura aberta com determinados componentes fechados. A escolha entre arquitetura aberta e fechada depende dos requisitos e restrições específicas do sistema que está sendo desenvolvido.