Escolar Documentos
Profissional Documentos
Cultura Documentos
SISTEMAS DE INFORMAÇÃO
PRÁTICAS DE ENGENHARIA DE SOFTWARE
1. Introdução ............................................................................................................................... 3
3.1 Cenário: “Esqueci minha senha” na plataforma do Outlook (Restauração de senha) ...... 8
4. Conclusão ............................................................................................................................. 10
Neste documento será realizada uma pesquisa com exemplos sobre as boas práticas de
desenvolvimento, testes ágeis, testes funcionais, padrões de arquitetura e de projetos, que
abordam os tópicos BBD (Behavior Driven Development), TDD (Test Driven Development),
as principais diferenças entre BDD e TDD, ATDD (Acceptance Test Driven Development) e
DDD (Domain Driven Development ou Domain Driven Design).
3
2. Sistemas de Desenvolvimentos (BDD, TDD, ATDD e DDD)
Quando se estuda Engenharia de Software, aprende-se que todo sistema tem um tempo
de vida útil, e que uma série de fatores podem contribuir para aumentar ou diminuir este tempo:
arquitetura, modelagem, tecnologia utilizada, aceitação do mercado, etc. No entanto, nenhuma
empresa desenvolve um sistema pensando no dia em que ele deixará de atender as necessidades
do seu cliente, apesar desta ser uma verdade certa.
Neste ciclo, o sistema passa a maior parte do tempo sofrendo alterações. E estas
manutenções, sejam elas corretivas ou não, podem melhorar ou piorar o sistema, dependendo
da forma que forem implementadas. Pensando neste e em outros problemas, Kent Beck
apresentou ao mundo em 2003, através do seu livro “Test-Driven Development”, uma técnica
para criar sistemas baseados em testes que visa garantir a qualidade e a funcionalidade do
software durante este ciclo.
Embora TDD seja uma técnica testada e aprovada por grandes desenvolvedores ágeis,
muitas equipes de desenvolvimento ainda caem em algumas armadilhas e mal-entendidos do
tipo: por onde começar, o que testar e o que não testar. Isto sem falar que quem escreve os testes
são os desenvolvedores, mas quando a equipe de qualidade vai testar, ela se preocupa com o
comportamento do sistema e não com os testes unitários. Desta forma, não há comunicação
eficiente entre as duas equipes no nível de código. Mas o que seria o TDD?
4
Além disso, todos os testes devem seguir o modelo F.I.R.S.T ( fast - rápidos, isolated -
testes unitários são feitos de forma isoladas, repeatable - repetição nos testes, self verifying -
verificação de falhas, timely - o teste deve ser oportuno, sendo um teste por unidade).
Kent Beck declarou em 2003 que TDD encoraja designs de código simples e inspira
confiança. Do ponto de vista de Robert C. Martin, escritor do livro “Agile Software
Development”, o objetivo de TDD é a especificação e não a validação, ou seja, é a maneira de
pensar através das necessidades do projeto antes de escrever o código funcional.
5
Vantagens em usar BDD
Quando Dan North fala sobre BDD, ele sempre esclarece que o propósito não é anular
as práticas de TDD, muito pelo contrário, é adicionar a elas uma série de outras vantagens,
dentre as quais se podem listar:
Comunicação entre equipes: na maioria das empresas de desenvolvimento de software
é difícil fazer com que desenvolvedores e testadores trabalhem em conjunto para atingir um
objetivo. BDD possibilita esta integração porque os testadores podem escrever os cenários de
testes para os desenvolvedores implementarem;
Compartilhamento de conhecimento: com desenvolvedores e testadores trabalhando
juntos, ao longo do tempo, um irá transferir o seu conhecimento para o outro, criando assim
uma equipe multifuncional;
Documentação dinâmica: algumas equipes ágeis afirmam que não documentam o
sistema porque a manutenção destes artefatos é custosa. Usando os frameworks de BDD estes
artefatos são gerados dinamicamente sem nenhum esforço adicional. Alguns, inclusive, geram
relatórios em formato HTML, o que irá facilitar uma consulta posterior;
Visão do todo: Fergus O’Connell, em sua obra “How to Run Successful High-Tech
Project-Based Organizations”(Artech House, 1999), apresenta uma relação dos principais
motivos que levamprojetos de software ao fracasso. O primeiro deles é: “os objetivos do projeto
não são bem definidos e compartilhados entre todos os envolvidos”. Por este motivo, BDD
sugere que os analistas/testadores escrevam os cenários antes mesmo dos testes serem
implementados, e desta forma os desenvolvedores terão uma visão geral do objetivo do projeto
antes de codificá-lo.
6
camada é o repositório de dados. De uma forma a exemplificar melhor essa divisão em camadas
que o modelo DDD traz é:
O ATDD é muito similar ao TDD, diferenciando-se deste último pelo fato de termos
uma colaboração maior entre o desenvolvedor, analista de qualidade (tester) e negócio
(cliente/partes interessadas). Enquanto o teste unitário está intrinsicamente relacionado com o
código, de um ângulo do desenvolvedor (visão interna), o teste de aceitação está voltado ao
ponto de vista do usuário, uma visão externa ao sistema.
Neste modelo, os testes automatizados são utilizados para especificar os requisitos.
7
O ciclo de implementação do ATDD gira em torno de basicamente 3 etapas na prática:
• Debater;
• Desenvolver;
• Revisar.
Enquanto Craig Larman e Bas Vodde, em seu artigo, consideram a aplicação do ATDD
como um fluxo de 3 etapas, ou seja: debater, desenvolver e revisar;
Hendrickson incluiu mais um passo: refinar. Portanto, exploraremos os 4 passos de
Hendrickson para ficar mais claro e detalhado como o processo funciona.
A principal diferença do ATDD, como oposto das outras abordagens ágeis, é seu foco
em fazer desenvolvedores, testers, analistas de negócios, product owners e outros stakeholders
colaborarem como uma unidade e criar um entendimento claro do que é necessário ser
implementado.
8
3.2 Cenário: Compra no eCommerce
Dado: Que estou na tela de compras de determinado eCommerce
Quando: Insiro itens do meu interesse no carrinho de compras
E: Clicar no botão de comprar, após inserir todos os itens
Então: Na página de finalização de compras, inserir dados para pagamento
E: Dados de entrega (CEP) para o cálculo correto do frete
Então: Finalizar a compra, clicando no botão “finalizar”
E: Mensagem de “Compra realizada com sucesso” deverá ser apresentada
9
4. Conclusão
Levando em consideração as definições dos métodos acima, podemos dizer que o BDD
trabalha para definir como a demanda chegará ao time de desenvolvimento, integrando os
setores da empresa. Já o TDD busca a qualidade do código, buscando a cobertura total em testes
na aplicação. Portanto, se pode aplicar em conjunto os dois métodos, pois ambos buscam
melhorar o desenvolvimento de software.
10
5. Referências Bibliográficas
https://www.devmedia.com.br/tdd-fundamentos-do-desenvolvimento-orientado-a-testes/28151
https://www.devmedia.com.br/desenvolvimento-orientado-por-comportamento-bdd/21127
https://www.devmedia.com.br/introducao-ao-ddd-em-net/32724
https://blog.locaweb.com.br/artigos/metodologias-ageis/diferenca-entre-bdd-tdd/
https://gaea.com.br/tdd-bdd-ddd/
https://www.agilealliance.org/glossary/bdd/#q=~(filters~(postType~(~'page~'post~'aa_book~'
aa_event_session~'aa_experience_report~'aa_glossary~'aa_research_paper~'aa_video)~tags~(
~'bdd))~searchTerm~'~sort~false~sortDirection~'asc~page~1)
https://www.infoq.com/br/articles/atdd-passo-a-passo/
https://www.devmedia.com.br/introducao-ao-ddd-em-net/32724
11