O que é a arquitetura limpa na área de software?

Arquitetura apresentada pela primeira vez em 2012 por Robert Martin, em seu blog. Em 2018, Robert Martin lança o livro sobre a arquitetura limpa como solução para softwares frágeis a manutenção, ganhando atenção de muitos desenvolvedores e diretores.

A arquitetura limpa é composta por vários princípios. Alguns princípios foram criados por Robert Martin, outros foram de autoria de outros programadores experientes. Ao todo existem 11 princípios abordados:

  • Princípios SOLID (5 princípios)
    • Princípio de responsabilidade única
    • Princípio aberto fechado
    • Princípio de substituição de Liskov
    • Princípio de segregação de interfaces
    • Princípio da inversão de dependências
  • Princípios RCC (3 princípios)
    • Princípio equivalente de reuso/release (REP)
    • Princípio de fechamento comum (CCP)
    • Princípio de reuso comum (CRP)
  • Princípios ASS (3 princípios)
    • Princípio das dependências acíclicas (ADP)
    • Princípio das dependências estáveis (SDP)
    • Princípio das abstrações estáveis (SAP)

Além de abordar como o código deve ser escrito, a arquitetura limpa também fala como os componentes (conjunto de classes) devem ser agrupados, analisando a estrutura do nível de código e do nível arquitetural.

A regra de dependências é essencial na arquitetura limpa. Detalhes devem depender de abstrações, mas abstrações não devem depender de detalhes.

  O objetivo da arquitetura limpa é proteger os componentes de nível alto dos componentes de nível baixo

A proteção é feita usando a hierarquia de dependências em níveis, onde os componentes de nível baixo devem depender dos componentes de nível alto. 

Essa prática possibilita a reutilização de componentes e a substituição de detalhes por outros, uma vez que os componentes não sabem nada sobre os detalhes de nível baixo.

Imagem sobre arquitetura limpa:



Nenhum comentário:

Postar um comentário

Objeto de valor por Martin Fowler

  Ao programar, muitas vezes acho útil representar coisas como compostos. Uma coordenada 2D consiste em um valor x e um valor y. Uma quantia...