SlideShare uma empresa Scribd logo
1 de 32
Baixar para ler offline
CONTRA1a jornada de um desenvolvedor de princípios SOLID
contra o impulso de usar muitos padrões ou não pensar sobre elesUM
@helmedeiros
senta que lá vem
história…
framework
MV*
princípios
design patterns
a-gi-li-ty
|əˈjilitē|
Consiste em criar software em
incrementos minúsculos.
como projetar um…
Software que tenha boa estrutura?
Software que seja flexível?
Software passível de manutenção?
Software que seja reutilizável?
who knows
who knows
who knows
who knows
Se você cria em incrementos minúsculos,
não vai perder a visão global?
projeto ágil
maus cheiros
princípios
projeto de software

um conceito abstrato
software project
|ˈsôftˌwe(ə)r ˈpräjˌekt, -ikt|
Relacionado à forma e estrutura global
do programa, assim como o detalhe
de cada módulo, classe e método.
Se tiver sorte, você começa um
projeto com uma ideia clara de
como deseja que o sistema seja. Se
tiver mais sorte ainda, a primeira
versão reflete a imagem do projeto.
projeto ágil
maus cheiros
princípios
algo dá errado

o software começa a apodrecer
como podemos detectar…
os problemas antes ou no último momento responsável?
sem exagerar nas precauções?
permitindo mudar?
RIGIDEZ: É difícil de alterar o
projeto.1
FRAGILIDADE: O projeto
(design) é fácil de estragar.2
IMOBILIDADE: É difícil
reutilizar o projeto.3
VISCOSIDADE: É difícil fazer a
coisa certa.4
COMPLEXIDADE DESNECESSÁRIA:
Projeto excessivo.5
REPETIÇÃO DESNECESSÁRIA:
Abuso do mouse.6
OPACIDADE: Expressão
desorganizada.7
por que o software apodrece…
mudanças não previstas
mudanças para ontem
desenvolvedor desconhece a filosofia inicial do projeto
requisitos sempre mudam

nossos projetos e práticas estão errados
projeto ágil
maus cheiros
princípios
aplicação continua

para melhorar a estrutura e legibilidade do software
iterativamente visando…
simplicidade no código
limpeza do código
expressividade do código
moderado
moderado
moderado
SRP: Princípio da
responsabilidade únicaS
OCP: Princípio do Aberto/
FechadoO
LSP: Princípio de substituição
de LiskovL
ISP: Princípio da Segregação
de InterfaceI
DIP: Princípio da inversão de
DependênciaD
“  as  equipes  ágeis  aplicam  os  princípios  apenas  para  
resolver  maus  cheiros.  Eles  não  são  um  perf9me  que  
deve  ser  bor<ifado  por  todo  o  sistema.  “  
- Robert C. Martin
CONTRA1a jornada de um desenvolvedor de princípios SOLID
contra seu impulso de usar muitos padrões ou não pensar sobre elesUM
@helmedeiros

Mais conteúdo relacionado

Semelhante a SOLID Princípios em Projetos Ágeis

Arquitetura de Software - Uma Visão Crítica
Arquitetura de Software - Uma Visão CríticaArquitetura de Software - Uma Visão Crítica
Arquitetura de Software - Uma Visão CríticaPedro Castilho
 
Seu código fonte é sustentável?
Seu código fonte é sustentável?Seu código fonte é sustentável?
Seu código fonte é sustentável?Isaac de Souza
 
Princípios de Programação Orientada a Objetos Solid, dry e kiss
Princípios de Programação Orientada a Objetos Solid, dry  e kiss Princípios de Programação Orientada a Objetos Solid, dry  e kiss
Princípios de Programação Orientada a Objetos Solid, dry e kiss DanielChristofolli
 
Pragmatismo e Padroes - Um limiar tenue entre o sucesso e o fracasso do seu p...
Pragmatismo e Padroes - Um limiar tenue entre o sucesso e o fracasso do seu p...Pragmatismo e Padroes - Um limiar tenue entre o sucesso e o fracasso do seu p...
Pragmatismo e Padroes - Um limiar tenue entre o sucesso e o fracasso do seu p...Klederson Bueno
 
Software fácil de usar não é difícil de programar
Software fácil de usar não é difícil de programarSoftware fácil de usar não é difícil de programar
Software fácil de usar não é difícil de programarHarlley Oliveira
 
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013Gabriel Rubens
 
Introdução a Modelagem
Introdução a ModelagemIntrodução a Modelagem
Introdução a ModelagemRodrigo Branas
 
Aprendendo a programar - Programação Procedural vs OOP
Aprendendo a programar - Programação Procedural vs OOPAprendendo a programar - Programação Procedural vs OOP
Aprendendo a programar - Programação Procedural vs OOPLeonardo Bastos
 
Primeiros passos para estruturar uma equipe front-end
Primeiros passos para estruturar uma equipe front-endPrimeiros passos para estruturar uma equipe front-end
Primeiros passos para estruturar uma equipe front-endDiego Eis
 
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Developer Academy
 
99% serverless, mais aquele 1% legado
99% serverless, mais aquele 1% legado99% serverless, mais aquele 1% legado
99% serverless, mais aquele 1% legadomestredemon
 
Gestão Ágil de Projetos com Scrum e FDD - Manoel Pimentel
Gestão Ágil de Projetos com Scrum e FDD - Manoel PimentelGestão Ágil de Projetos com Scrum e FDD - Manoel Pimentel
Gestão Ágil de Projetos com Scrum e FDD - Manoel PimentelManoel Pimentel Medeiros
 
Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software
Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de SoftwareConceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software
Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de SoftwareFelizardo Charles
 
Mwds01 - Introdução a Arquitetura e Projeto de Soluções Mobile
Mwds01 - Introdução a Arquitetura e Projeto de Soluções MobileMwds01 - Introdução a Arquitetura e Projeto de Soluções Mobile
Mwds01 - Introdução a Arquitetura e Projeto de Soluções MobileWsdevs Desenvolvedores
 

Semelhante a SOLID Princípios em Projetos Ágeis (20)

O que é ser um bom programador?
O que é ser um bom programador?O que é ser um bom programador?
O que é ser um bom programador?
 
Arquitetura de Software - Uma Visão Crítica
Arquitetura de Software - Uma Visão CríticaArquitetura de Software - Uma Visão Crítica
Arquitetura de Software - Uma Visão Crítica
 
Seu código fonte é sustentável?
Seu código fonte é sustentável?Seu código fonte é sustentável?
Seu código fonte é sustentável?
 
Princípios de Programação Orientada a Objetos Solid, dry e kiss
Princípios de Programação Orientada a Objetos Solid, dry  e kiss Princípios de Programação Orientada a Objetos Solid, dry  e kiss
Princípios de Programação Orientada a Objetos Solid, dry e kiss
 
Pragmatismo e Padroes - Um limiar tenue entre o sucesso e o fracasso do seu p...
Pragmatismo e Padroes - Um limiar tenue entre o sucesso e o fracasso do seu p...Pragmatismo e Padroes - Um limiar tenue entre o sucesso e o fracasso do seu p...
Pragmatismo e Padroes - Um limiar tenue entre o sucesso e o fracasso do seu p...
 
Software fácil de usar não é difícil de programar
Software fácil de usar não é difícil de programarSoftware fácil de usar não é difícil de programar
Software fácil de usar não é difícil de programar
 
AOP
AOPAOP
AOP
 
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
 
Código limpo php
Código limpo phpCódigo limpo php
Código limpo php
 
Introdução a Modelagem
Introdução a ModelagemIntrodução a Modelagem
Introdução a Modelagem
 
Aprendendo a programar - Programação Procedural vs OOP
Aprendendo a programar - Programação Procedural vs OOPAprendendo a programar - Programação Procedural vs OOP
Aprendendo a programar - Programação Procedural vs OOP
 
O que devo procurar em um code review
O que devo procurar em um code review O que devo procurar em um code review
O que devo procurar em um code review
 
Primeiros passos para estruturar uma equipe front-end
Primeiros passos para estruturar uma equipe front-endPrimeiros passos para estruturar uma equipe front-end
Primeiros passos para estruturar uma equipe front-end
 
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
 
Design Patterns - Com Java
Design Patterns  - Com JavaDesign Patterns  - Com Java
Design Patterns - Com Java
 
99% serverless, mais aquele 1% legado
99% serverless, mais aquele 1% legado99% serverless, mais aquele 1% legado
99% serverless, mais aquele 1% legado
 
Gestão Ágil de Projetos com Scrum e FDD - Manoel Pimentel
Gestão Ágil de Projetos com Scrum e FDD - Manoel PimentelGestão Ágil de Projetos com Scrum e FDD - Manoel Pimentel
Gestão Ágil de Projetos com Scrum e FDD - Manoel Pimentel
 
Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software
Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de SoftwareConceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software
Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software
 
Mwds01 - Introdução a Arquitetura e Projeto de Soluções Mobile
Mwds01 - Introdução a Arquitetura e Projeto de Soluções MobileMwds01 - Introdução a Arquitetura e Projeto de Soluções Mobile
Mwds01 - Introdução a Arquitetura e Projeto de Soluções Mobile
 
Agile User Experience
Agile User ExperienceAgile User Experience
Agile User Experience
 

Mais de Hélio Medeiros

Team building - Workshop - ThoughtWorks Away Day 2018
Team building - Workshop - ThoughtWorks Away Day 2018Team building - Workshop - ThoughtWorks Away Day 2018
Team building - Workshop - ThoughtWorks Away Day 2018Hélio Medeiros
 
Team building praticas e atividades
Team building   praticas e atividadesTeam building   praticas e atividades
Team building praticas e atividadesHélio Medeiros
 
Historias, hipoteses e metricas aprendendo no dia a dia
Historias, hipoteses e metricas   aprendendo no dia a diaHistorias, hipoteses e metricas   aprendendo no dia a dia
Historias, hipoteses e metricas aprendendo no dia a diaHélio Medeiros
 
Team building - Software depende de relacionamento
Team building  - Software depende de relacionamentoTeam building  - Software depende de relacionamento
Team building - Software depende de relacionamentoHélio Medeiros
 
Continuidade de times - quando os relacionamentos contam?
Continuidade de times - quando os relacionamentos contam?Continuidade de times - quando os relacionamentos contam?
Continuidade de times - quando os relacionamentos contam?Hélio Medeiros
 
Historias sao suposicoes: build:measure:learn no kanban e livro de possibilid...
Historias sao suposicoes: build:measure:learn no kanban e livro de possibilid...Historias sao suposicoes: build:measure:learn no kanban e livro de possibilid...
Historias sao suposicoes: build:measure:learn no kanban e livro de possibilid...Hélio Medeiros
 
Faça Frameworks, Não faça refens
Faça Frameworks, Não faça refensFaça Frameworks, Não faça refens
Faça Frameworks, Não faça refensHélio Medeiros
 
Feature injection - descobrindo e entregando valor testável
Feature injection - descobrindo e entregando valor testávelFeature injection - descobrindo e entregando valor testável
Feature injection - descobrindo e entregando valor testávelHélio Medeiros
 
Growth hacking - customer lifecycle na pratica
Growth hacking - customer lifecycle na praticaGrowth hacking - customer lifecycle na pratica
Growth hacking - customer lifecycle na praticaHélio Medeiros
 
Tdc growth hacking-customer lifecycle na pratica
Tdc   growth hacking-customer lifecycle na praticaTdc   growth hacking-customer lifecycle na pratica
Tdc growth hacking-customer lifecycle na praticaHélio Medeiros
 
Feature Injection - Descobrindo e entregando valor testável
Feature Injection - Descobrindo e entregando valor testávelFeature Injection - Descobrindo e entregando valor testável
Feature Injection - Descobrindo e entregando valor testávelHélio Medeiros
 
RBS QCon São Paulo 2014 REVIEW
RBS QCon São Paulo 2014 REVIEWRBS QCon São Paulo 2014 REVIEW
RBS QCon São Paulo 2014 REVIEWHélio Medeiros
 
Git that like a boss - Colaborando com GITHUB
Git that like a boss - Colaborando com GITHUBGit that like a boss - Colaborando com GITHUB
Git that like a boss - Colaborando com GITHUBHélio Medeiros
 
Git that like a boss - Dos comandos básicos aos branches.
Git that like a boss - Dos comandos básicos aos branches.Git that like a boss - Dos comandos básicos aos branches.
Git that like a boss - Dos comandos básicos aos branches.Hélio Medeiros
 
Treinamento git - Papos RBSDev
Treinamento git - Papos RBSDevTreinamento git - Papos RBSDev
Treinamento git - Papos RBSDevHélio Medeiros
 
RBS Agile Brazil Review - Managing dojo
RBS Agile Brazil Review - Managing dojoRBS Agile Brazil Review - Managing dojo
RBS Agile Brazil Review - Managing dojoHélio Medeiros
 
RBS Agile Brazil 2013 Review - HotSpot
RBS Agile Brazil 2013 Review - HotSpotRBS Agile Brazil 2013 Review - HotSpot
RBS Agile Brazil 2013 Review - HotSpotHélio Medeiros
 
Agile brazil 2013 - Laboratório Experimental refinando ideias e lançando prod...
Agile brazil 2013 - Laboratório Experimental refinando ideias e lançando prod...Agile brazil 2013 - Laboratório Experimental refinando ideias e lançando prod...
Agile brazil 2013 - Laboratório Experimental refinando ideias e lançando prod...Hélio Medeiros
 
Agile Brazil 2013 - Sucesso na medida certa – métricas de vaidade
Agile Brazil 2013 - Sucesso na medida certa – métricas de vaidadeAgile Brazil 2013 - Sucesso na medida certa – métricas de vaidade
Agile Brazil 2013 - Sucesso na medida certa – métricas de vaidadeHélio Medeiros
 
Lançando versões em um clique - deploy contínuo
Lançando versões em um clique - deploy contínuoLançando versões em um clique - deploy contínuo
Lançando versões em um clique - deploy contínuoHélio Medeiros
 

Mais de Hélio Medeiros (20)

Team building - Workshop - ThoughtWorks Away Day 2018
Team building - Workshop - ThoughtWorks Away Day 2018Team building - Workshop - ThoughtWorks Away Day 2018
Team building - Workshop - ThoughtWorks Away Day 2018
 
Team building praticas e atividades
Team building   praticas e atividadesTeam building   praticas e atividades
Team building praticas e atividades
 
Historias, hipoteses e metricas aprendendo no dia a dia
Historias, hipoteses e metricas   aprendendo no dia a diaHistorias, hipoteses e metricas   aprendendo no dia a dia
Historias, hipoteses e metricas aprendendo no dia a dia
 
Team building - Software depende de relacionamento
Team building  - Software depende de relacionamentoTeam building  - Software depende de relacionamento
Team building - Software depende de relacionamento
 
Continuidade de times - quando os relacionamentos contam?
Continuidade de times - quando os relacionamentos contam?Continuidade de times - quando os relacionamentos contam?
Continuidade de times - quando os relacionamentos contam?
 
Historias sao suposicoes: build:measure:learn no kanban e livro de possibilid...
Historias sao suposicoes: build:measure:learn no kanban e livro de possibilid...Historias sao suposicoes: build:measure:learn no kanban e livro de possibilid...
Historias sao suposicoes: build:measure:learn no kanban e livro de possibilid...
 
Faça Frameworks, Não faça refens
Faça Frameworks, Não faça refensFaça Frameworks, Não faça refens
Faça Frameworks, Não faça refens
 
Feature injection - descobrindo e entregando valor testável
Feature injection - descobrindo e entregando valor testávelFeature injection - descobrindo e entregando valor testável
Feature injection - descobrindo e entregando valor testável
 
Growth hacking - customer lifecycle na pratica
Growth hacking - customer lifecycle na praticaGrowth hacking - customer lifecycle na pratica
Growth hacking - customer lifecycle na pratica
 
Tdc growth hacking-customer lifecycle na pratica
Tdc   growth hacking-customer lifecycle na praticaTdc   growth hacking-customer lifecycle na pratica
Tdc growth hacking-customer lifecycle na pratica
 
Feature Injection - Descobrindo e entregando valor testável
Feature Injection - Descobrindo e entregando valor testávelFeature Injection - Descobrindo e entregando valor testável
Feature Injection - Descobrindo e entregando valor testável
 
RBS QCon São Paulo 2014 REVIEW
RBS QCon São Paulo 2014 REVIEWRBS QCon São Paulo 2014 REVIEW
RBS QCon São Paulo 2014 REVIEW
 
Git that like a boss - Colaborando com GITHUB
Git that like a boss - Colaborando com GITHUBGit that like a boss - Colaborando com GITHUB
Git that like a boss - Colaborando com GITHUB
 
Git that like a boss - Dos comandos básicos aos branches.
Git that like a boss - Dos comandos básicos aos branches.Git that like a boss - Dos comandos básicos aos branches.
Git that like a boss - Dos comandos básicos aos branches.
 
Treinamento git - Papos RBSDev
Treinamento git - Papos RBSDevTreinamento git - Papos RBSDev
Treinamento git - Papos RBSDev
 
RBS Agile Brazil Review - Managing dojo
RBS Agile Brazil Review - Managing dojoRBS Agile Brazil Review - Managing dojo
RBS Agile Brazil Review - Managing dojo
 
RBS Agile Brazil 2013 Review - HotSpot
RBS Agile Brazil 2013 Review - HotSpotRBS Agile Brazil 2013 Review - HotSpot
RBS Agile Brazil 2013 Review - HotSpot
 
Agile brazil 2013 - Laboratório Experimental refinando ideias e lançando prod...
Agile brazil 2013 - Laboratório Experimental refinando ideias e lançando prod...Agile brazil 2013 - Laboratório Experimental refinando ideias e lançando prod...
Agile brazil 2013 - Laboratório Experimental refinando ideias e lançando prod...
 
Agile Brazil 2013 - Sucesso na medida certa – métricas de vaidade
Agile Brazil 2013 - Sucesso na medida certa – métricas de vaidadeAgile Brazil 2013 - Sucesso na medida certa – métricas de vaidade
Agile Brazil 2013 - Sucesso na medida certa – métricas de vaidade
 
Lançando versões em um clique - deploy contínuo
Lançando versões em um clique - deploy contínuoLançando versões em um clique - deploy contínuo
Lançando versões em um clique - deploy contínuo
 

SOLID Princípios em Projetos Ágeis