Bolovo: Não use por aí 
7Masters OOD 
Palestra de 7 minutos 
29/10/2014
That’s me 
• Priscila Mayumi Sato 
• Twitter: @mayogax 
• Fullstack Software Developer 
• Microsoft MTAC 
• PHPSP + Woman ...
Vamos começar um projeto 
Como projetos começam
Arquitetura? 
Projeto 
MVC 
Entidades 
(Models) 
BLL 
(Busines 
Layer) 
DLL 
(Data Layer)
Arquitetura? 
Projeto 
MVC 
Entidades 
(Models) 
BLL 
(Busines 
Layer) 
DLL 
(Data Layer)
Simples e fácil 
• O projeto MVC acessa as entidades 
• O projeto MVC acessa a BLL que contem a lógica 
• A BLL acessa as ...
Quantos projetos começam assim? 
• Entre no Github e procure por projetos .net (ou java) 
• Quantas vezes você começou num...
BOLOVO 
Um pouco de história
BOLOVO 
• Em 2007 numa apresentação para o JustJava Paulo Silveira e introduziu 
o conceito de BOLOVO 
• Traduzindo: 
• Us...
BOLOVO 
• Conceito nasceu na comunidade Java, mas como muitos projetos, 
conceitos e ideias são “importados” para o .net 
...
BOLOVO - motivos 
• “Esses design patterns faziam muito sentido quando no J2EE os 
entity beans não eram serializáveis, e ...
BOLOVO – design das classes 
• Entidade/Model: 
• Palestra 
• BLL: 
• PalestraBLL 
• DLL: 
• PalestraDLL 
• MVC: 
• Palest...
BOLOVO 
Porque não usar por aí
Problemas antigos
Não há necessidade para BOLOVO hoje 
• “Os programadores mais novos podem não ter sido influenciados 
pelos problemas dos ...
Programação procedural 
• Projeto em BOLOVO faz seu código ser procedural 
• “ Veja, no momento que separamos dados de um ...
Um projeto inteiro de gets e setters 
• Projeto Entidades/Models inteiro de classes só com as propriedades 
• Classes aném...
Baixa testabilidade 
• Projeto entidades/models não é testado 
• Para testar BLL é preciso vários mocks de DAL (não necess...
Nada de SOLID  
• Princípio da Responsabilidade Única 
• classes da BLL além de lógica controlam cada aspécto de um model...
Nada de SOLID  
• Princípio de Substituição de Liskov 
• Não há em projetos BOLOVO subtipos 
• Se houver herança um subti...
Resumo da opera 
entãaaoooo
Resumo da opera 
• BOLOVO cai bem... Se você programa em java em 2004 
• Não é boa prática 
• Dica: o projeto já nasce leg...
O que eu faço então? 
• Sugestão: aprenda DDD 
• Aprenda TDD (se soubesse não estaria usando BOLOVO) 
• Fuja da preguiça –...
Dúvidas? 
Criticas, sugestões, idéias, convites para jogar Magic?
Obrigada :D 
@MayogaX
Próximos SlideShares
Carregando em…5
×

Bolovo - problema antigo de arquitetura de software - não use por aí

3.100 visualizações

Publicada em

BOLOVO é um padrão de arquitetura que teve seu nome criado em 2007 e que não deveria mais ser usado desde 2007, mas ainda é usada.

Saiba rapidinho porque não usar.

Palestra de 7 minutos feita no 7Masters de outubro de 2014

Publicada em: Tecnologia
0 comentários
13 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
3.100
No SlideShare
0
A partir de incorporações
0
Número de incorporações
26
Ações
Compartilhamentos
0
Downloads
17
Comentários
0
Gostaram
13
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Bolovo - problema antigo de arquitetura de software - não use por aí

  1. 1. Bolovo: Não use por aí 7Masters OOD Palestra de 7 minutos 29/10/2014
  2. 2. That’s me • Priscila Mayumi Sato • Twitter: @mayogax • Fullstack Software Developer • Microsoft MTAC • PHPSP + Woman • 7 anos de convivencia com .net <3
  3. 3. Vamos começar um projeto Como projetos começam
  4. 4. Arquitetura? Projeto MVC Entidades (Models) BLL (Busines Layer) DLL (Data Layer)
  5. 5. Arquitetura? Projeto MVC Entidades (Models) BLL (Busines Layer) DLL (Data Layer)
  6. 6. Simples e fácil • O projeto MVC acessa as entidades • O projeto MVC acessa a BLL que contem a lógica • A BLL acessa as entidades • A BLL acessa a DAL para salvar na base de dados • A DAL acessa as entidades • Arquitetura definida e projeto iniciado em 2 minutos • Simples e fácil
  7. 7. Quantos projetos começam assim? • Entre no Github e procure por projetos .net (ou java) • Quantas vezes você começou numa empresa que o código estava assim? • Até hoje muitos tutoriais online pregam essa prática como “boa prática”
  8. 8. BOLOVO Um pouco de história
  9. 9. BOLOVO • Em 2007 numa apresentação para o JustJava Paulo Silveira e introduziu o conceito de BOLOVO • Traduzindo: • UsuarioBusinessObject (BO) – nossa BLL • UsuarioLayerObject (LO) – nosso projeto MVC • UsuarioValueObject (VO) – nosso projeto de entidades/models • http://blog.caelum.com.br/justjava-2007-arquitetura-e-caelum/
  10. 10. BOLOVO • Conceito nasceu na comunidade Java, mas como muitos projetos, conceitos e ideias são “importados” para o .net • Até hoje existem tutoriais e projetos nascendo em arquitetura BOLOVO
  11. 11. BOLOVO - motivos • “Esses design patterns faziam muito sentido quando no J2EE os entity beans não eram serializáveis, e sim acessados remotamente, além de que não existia injeção de dependência.” • Paulo Silveira – em 2007 • Em .net não havia esses motivos • A arquitetura BOLOVO foi importada para projetos .net para organizar códigos e prover uma estrutura de arquitetura cebola
  12. 12. BOLOVO – design das classes • Entidade/Model: • Palestra • BLL: • PalestraBLL • DLL: • PalestraDLL • MVC: • PalestraController Várias classes irmãs com os mesmos nomes e sufixos indicando sua função Uníca que realmente necessita ser escrita dessa forma
  13. 13. BOLOVO Porque não usar por aí
  14. 14. Problemas antigos
  15. 15. Não há necessidade para BOLOVO hoje • “Os programadores mais novos podem não ter sido influenciados pelos problemas dos EJBs mas ele ainda foram ensinados à programar de uma só maneira: código procedural.” • http://blog.fragmental.com.br/2010/01/18/domain-driven-bolovo-passando- conhecimento-e-etc/ PROCEDURAL!!!
  16. 16. Programação procedural • Projeto em BOLOVO faz seu código ser procedural • “ Veja, no momento que separamos dados de um lado, e comportamento de outro, voltamos a programar de maneira procedural. Nesse tipo de arquitetura, é comum vermos imensas classes com as regras de negócios repetidas e espalhadas. A consequência disso? Um código dificílimo de ser mantido e evoluído.” • http://blog.caelum.com.br/o-que-e-modelo-anemico-e-por-que-fugir-dele/
  17. 17. Um projeto inteiro de gets e setters • Projeto Entidades/Models inteiro de classes só com as propriedades • Classes anémicas != orientação a objetos • Classes que nem são testadas (só propriedades) • Sobre criar classes só com gets e setters: http://blog.caelum.com.br/nao-aprender-oo-getters-e-setters/
  18. 18. Baixa testabilidade • Projeto entidades/models não é testado • Para testar BLL é preciso vários mocks de DAL (não necessáriamente uma coisa ruim, mas para você ver como há forte dependencia) • Métodos na BLL gigantes e dificeis de serem testados (afinal é preciso um mesmo métodos ter testes de lógica e de dados, tudo junto e misturado) • Uma odisséia para tentar usar TDD e você vai desistir logo no começo
  19. 19. Nada de SOLID  • Princípio da Responsabilidade Única • classes da BLL além de lógica controlam cada aspécto de um model, inclusive a inserção na base de dados (as classes como PalestraBLL) • Princípio do Aberto-Fechado • Ao mudar uma classe possivelmente vai mudar todas as classes irmãs, cada inserção de funcionalidades precisa alterar outras classes em seguida tornando custoso a adição de novas funcionalidades
  20. 20. Nada de SOLID  • Princípio de Substituição de Liskov • Não há em projetos BOLOVO subtipos • Se houver herança um subtipo de BLL, por exemplo, não pode ser substituidas por sua classe base • Princípio da Segregação de Interfaces • Interfaces para BLL nunca conseguem ter somente o que a classe precisa • Se possuem você provavelmente está colocando lógica nenhuma • Princípio da Inversão de Dependência • Classes da BLL dependem de implementações concretas de DAL e de Entidades/Models
  21. 21. Resumo da opera entãaaoooo
  22. 22. Resumo da opera • BOLOVO cai bem... Se você programa em java em 2004 • Não é boa prática • Dica: o projeto já nasce legado • Não há necessidade de programadores .net continuarem nessa estrutura hoje, em 2014!!
  23. 23. O que eu faço então? • Sugestão: aprenda DDD • Aprenda TDD (se soubesse não estaria usando BOLOVO) • Fuja da preguiça – se for programar em linguagem orientada a objetos não há pra que ser procedural • Evolua e não pare no tempo (lembre: BOLOVO já era ruim em 2007)
  24. 24. Dúvidas? Criticas, sugestões, idéias, convites para jogar Magic?
  25. 25. Obrigada :D @MayogaX

×