SlideShare uma empresa Scribd logo
1 de 12
Arquitetura Limpa
Como e por que aplicar em seu projeto mobile
Quem é Hugo?
Desenvolvedor Android em AppProva / SOMOS Educação
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
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
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
O modelo conceitual da Arquitetura Limpa
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
Abordagem reativa
UI
ViewModel
Casos de Uso
do Domínio
Repositório
Disco Nuvem
Stream
Subscriber<T>
Observable<T>
Observable<T>
Provedores de Dados
Repositório
Banco de
Dados
NuvemMemória UserDefaults
Data Providers
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
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
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

Mais conteúdo relacionado

Semelhante a Arquitetura Limpa para projetos mobile

Apresentacão Android Components - Programando em camadas
Apresentacão Android Components - Programando em camadasApresentacão Android Components - Programando em camadas
Apresentacão Android Components - Programando em camadasVictor Aldir
 
Estratégias de Estruturação de Código-fonte e Controlo de Versão
Estratégias de Estruturação de Código-fonte e Controlo de VersãoEstratégias de Estruturação de Código-fonte e Controlo de Versão
Estratégias de Estruturação de Código-fonte e Controlo de VersãoComunidade NetPonto
 
ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)
ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)
ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)Giovanni Bassi
 
DNAD 2009 - Injeção de Dependência (por Leandro Daniel)
DNAD 2009 - Injeção de Dependência (por Leandro Daniel)DNAD 2009 - Injeção de Dependência (por Leandro Daniel)
DNAD 2009 - Injeção de Dependência (por Leandro Daniel)Leandro Daniel
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Softwareeros.viggiano
 
Criando Aplicações .NET com o TheWebMind
Criando Aplicações .NET com o TheWebMindCriando Aplicações .NET com o TheWebMind
Criando Aplicações .NET com o TheWebMindJaydson Gomes
 
Indo alem do_mvc_node_js
Indo alem do_mvc_node_jsIndo alem do_mvc_node_js
Indo alem do_mvc_node_jsgustavobeavis
 
Seja um desenvolvedor disruptivo, e se torne um grande DevOps
Seja um desenvolvedor disruptivo, e se torne um grande DevOpsSeja um desenvolvedor disruptivo, e se torne um grande DevOps
Seja um desenvolvedor disruptivo, e se torne um grande DevOpsValdomiro Bilharvas
 
RedGate .NET Reflector
RedGate .NET ReflectorRedGate .NET Reflector
RedGate .NET ReflectorNuno Gomes
 
01 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.101 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.1César Augusto Pessôa
 
Frameworks de desenvolvimento web
Frameworks de desenvolvimento webFrameworks de desenvolvimento web
Frameworks de desenvolvimento webArlindo Santos
 
Programação orientada à objetos & mvc
Programação orientada à objetos & mvcProgramação orientada à objetos & mvc
Programação orientada à objetos & mvcJhordam Siqueira
 
Padroes De Projeto
Padroes De ProjetoPadroes De Projeto
Padroes De Projetoejdn1
 
BlingTech - Padrões de Projeto
BlingTech - Padrões de ProjetoBlingTech - Padrões de Projeto
BlingTech - Padrões de ProjetoFernando Henrique
 
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )Getúlio Strapazzon
 

Semelhante a Arquitetura Limpa para projetos mobile (20)

Apresentacão Android Components - Programando em camadas
Apresentacão Android Components - Programando em camadasApresentacão Android Components - Programando em camadas
Apresentacão Android Components - Programando em camadas
 
Estratégias de Estruturação de Código-fonte e Controlo de Versão
Estratégias de Estruturação de Código-fonte e Controlo de VersãoEstratégias de Estruturação de Código-fonte e Controlo de Versão
Estratégias de Estruturação de Código-fonte e Controlo de Versão
 
ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)
ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)
ASP.NET MVC com jQuery (Retome o controle da sua aplicação web)
 
DNAD 2009 - Injeção de Dependência (por Leandro Daniel)
DNAD 2009 - Injeção de Dependência (por Leandro Daniel)DNAD 2009 - Injeção de Dependência (por Leandro Daniel)
DNAD 2009 - Injeção de Dependência (por Leandro Daniel)
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
 
Criando Aplicações .NET com o TheWebMind
Criando Aplicações .NET com o TheWebMindCriando Aplicações .NET com o TheWebMind
Criando Aplicações .NET com o TheWebMind
 
Escalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLIDEscalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLID
 
Indo alem do_mvc_node_js
Indo alem do_mvc_node_jsIndo alem do_mvc_node_js
Indo alem do_mvc_node_js
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Treinamento DDD .Net
Treinamento DDD .NetTreinamento DDD .Net
Treinamento DDD .Net
 
Padrões de Projeto de Software
Padrões de Projeto de SoftwarePadrões de Projeto de Software
Padrões de Projeto de Software
 
Seja um desenvolvedor disruptivo, e se torne um grande DevOps
Seja um desenvolvedor disruptivo, e se torne um grande DevOpsSeja um desenvolvedor disruptivo, e se torne um grande DevOps
Seja um desenvolvedor disruptivo, e se torne um grande DevOps
 
RedGate .NET Reflector
RedGate .NET ReflectorRedGate .NET Reflector
RedGate .NET Reflector
 
01 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.101 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.1
 
Frameworks de desenvolvimento web
Frameworks de desenvolvimento webFrameworks de desenvolvimento web
Frameworks de desenvolvimento web
 
Programação orientada à objetos & mvc
Programação orientada à objetos & mvcProgramação orientada à objetos & mvc
Programação orientada à objetos & mvc
 
Padroes De Projeto
Padroes De ProjetoPadroes De Projeto
Padroes De Projeto
 
BlingTech - Padrões de Projeto
BlingTech - Padrões de ProjetoBlingTech - Padrões de Projeto
BlingTech - Padrões de Projeto
 
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )
 

Arquitetura Limpa para projetos mobile

  • 1. Arquitetura Limpa Como e por que aplicar em seu projeto mobile
  • 2. Quem é Hugo? Desenvolvedor Android em AppProva / SOMOS Educação
  • 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
  • 6. O modelo conceitual da Arquitetura Limpa
  • 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
  • 8. Abordagem reativa UI ViewModel Casos de Uso do Domínio Repositório Disco Nuvem Stream Subscriber<T> Observable<T> Observable<T>
  • 9. Provedores de Dados Repositório Banco de Dados NuvemMemória UserDefaults Data Providers
  • 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