3. O que é Arquitetura de Software?
● Estrutura de alto nível
● Definição
○ dos componentes
○ da relação entre os componentes
○ das propriedades dos componentes e das relações entre eles
● É uma metáfora à arquitetura de uma construção de um prédio
○ uma definição das peças guiam a definição das tarefas a serem executadas
● Não é sobre bibliotecas nem frameworks
4. O que é Arquitetura Limpa?
Um modelo arquitetural baseado em
outros, como Arquitetura Hexagonal e
Arquitetura em Cebola
Proposta por Robert Cecil Martin,
também conhecido como Uncle Bob
Publicada em seu livro de mesmo nome
(The Clean Architecture)
E também em seu blog, de maneira
prática e resumida
5. Os princípios para uma Arquitetura Limpa
1. Paradigma da Linguagem de programação adequada ao problema
2. Princípios de Design (SOLID)
a. Single Responsibility
b. Open-Close
c. Liskov Substitution
d. Interface Segregation
e. Dependency Inversion
3. Princípios de Componentes
a. Coesão
b. Acoplamento
7. Abordagem conceitual
Apresentação Domínio Dados
MVP
MVC
MVP
MVVM
Objetos sem
dependência de
plataforma
Padrão Repositório
API, Banco de
dados, memóriaCasosdeUso
Repositórios
10. Vantagens
● Foco: códigos ruins fazem muita coisa. Arquitetura Limpa te deixa focado
● Escalabilidade: você pode colocar mais desenvolvedores trabalhando no
projeto com o mínimo de conflitos
● Testabilidade: cada componente e camada podem ser testadas em isolamento
● Extensibilidade: é fácil adicionar funcionalidades sem que hajam efeitos
colaterais
11. Desvantagens Desafios
● Sensação de aumento da quantidade de classes e arquivos
○ Entretanto, cada classe tem uma única responsabilidade, facilitando os testes e a manutenção
● Curva de aprendizado
● Pode ser burocrático para projetos pequenos
● Encontrar o modelo que melhor se adapta ao seu projeto
12. Referências
The Clean Architecture book, by Robert C. Martin
Robert C. Martin "The Clean Architecture" blog post
Architecting Android...The clean way?, por Fernando Cejas
Architecting Android...The evolution, por Fernando Cejas