Escolar Documentos
Profissional Documentos
Cultura Documentos
2021
Abordagens Ágeis em Engenharia de Software
Bootcamp: Engenheiro de Software Ágil
Odivaney Ramos Pedro
© Copyright do Instituto de Gestão e Tecnologia da Informação.
Todos os direitos reservados.
Referências............ .................................................................................................. 29
Consegue entender agora qual o motivo deste capítulo? Ele mostrará formas
de direcionar o desenvolvimento, mas não exatamente modelos com processos
definidos e que devam ser seguidos de forma metódica.
1.1. Contextualização
Imagine só, você comprar uma casa na planta e só poder ver ela no dia de
pegar as chaves. E aí quando você tentar entrar na casa, vê que a porta é muito
baixa, ou que alguns cômodos não têm janela, ou ainda que a pintura é de uma cor
diferente da abordada.
Fonte: https://www.inovalab.net.br/post/metodologia-%C3%A1gil-tudo-que-
voc%C3%AA-precisa-saber-antes-de-come%C3%A7ar-a-usar.
As abordagens ágeis não são uma estratégia “bala de prata”, ou seja, que
mata todos os monstros. O que podemos afirmar categoricamente é que em alguns
contextos elas são o melhor caminho a ser seguido.
▪ Deadlines apertados;
▪ ...
2. Integração Contínua
Por tudo que foi falado neste capítulo inicial, podemos concluir que o
desenvolvimento de software ágil é uma importante alternativa para diversos
contextos, como sistemas nos quais os requisitos não estão previamente
determinados. No entanto, as abordagens ágeis não se aplicam em todos os
contextos, e nem sempre serão as melhores opções de desenvolvimento. Assim
como outras abordagens, a abordagem ágil tem suas limitações e as cautelas
necessárias para sua utilização. Para finalizar este capítulo, vou parafrasear uma
afirmação de autoria desconhecida, mas muita utilizada no nosso meio:
Fonte: http://www.agiledata.org/essays/tdd.html.
3. Teste a funcionalidade:
4. Refatore o código que passou no teste, deixando ele melhor e mais eficiente.
▪ C– Cunit- http://cunit.sourceforge.net/
Apesar das inúmeras vantagens do BDD, existia-se uma visão de que este
era muito técnico e que ainda existia uma lacuna na forma em que o cliente/usuário
poderia validar o que estava sendo feito. Isso porque alguns usuários poderiam não
ter a capacidade de validar um caso de teste por não ter conhecimento técnico
suficiente. Dessa forma, apesar do TDD produzir um software resiliente a erros de
programação, os erros de especificação continuariam existindo. Como alternativa
O clico de vida acima pode ser explicado pela sequência de passos abaixo:
▪ Passo 2:
▪ Passo 3:
Ainda nas reuniões com usuários, as User Stories são refinadas, verificando
o que realmente deve ser produzido (feature).
▪ Passo 4:
Uma vez definidas quais funcionalidades devem ser feitas, é definido quais
os testes de validação que serão realizados após o desenvolvimento para verificar se
a funcionalidade foi desenvolvida corretamente.
▪ Passo 5:
Fonte: https://blog.testlodge.com/tdd-vs-bdd/.
Fonte: https://www.productplan.com/glossary/user-story/.
Tanto o TDD quanto o BDD são métodos que utilizam a abordagem orientada
a testes. O primeiro mais focado na correção do código, enquanto o segundo é mais
focado na validação do que é esperado pelo usuário.
Antes de seguir para o restante do capítulo, peço que você veja o vídeo de
onde retirei a Figura 6. Basta copiar o link na fonte abaixo do vídeo e abrir no seu
navegador.
Fonte: https://www.youtube.com/watch?v=iEDFgXX-WcA.
Vamos entender um pouco mais dessa abordagem vendo o seu ciclo de vida.
De forma básica, o FDD usa o conceito de gastar um tempo inicial para fazer
a modelagem conceitual do sistema e depois, de forma iterativa, entregar
funcionalidades em ciclos curtos (14 dias). A Figura 7 demonstra o ciclo de vida do
FDD:
Nesta fase, uma equipe técnica composta por programadores avalia o modelo
conceitual gerado na fase 1 e cria uma lista de todas as funcionalidades que o
software deverá ter. Essa fase gera um dos principais benefícios do FDD, visto que a
• EXEMPLOS:
• Cadastrar dados do usuário.
• Realizar compra de livro.
• Solicitar aluguel do veículo.
• Calcular desconto de uma venda.
5) Desenvolvimento da funcionalidade.
Fonte: https://martinfowler.com/bliki/BoundedContext.html.
Para sua surpresa, o que descobriu é que grande parte das organizações
falava que usava Scrum, XP ou Kanban, mas quando o Ambler ia levantar detalhes,
o que ele via era que as organizações usam metodologias híbridas, como o Scrum
com programação em pares e conceitos de RUP para entrega de features.
Fonte: https://www.objective.com.br/disciplined-agile-delivery/.
1) INCEPTION:
Assim como as outras abordagens, o processo se inicia por uma fase onde
são levantadas informações necessárias para o desenvolvimento do software. Ex.:
levantamento de funcionalidades, mapeamento conceitual, escrita de User Stories. O
DAD não define quais informações devem ser levantadas ou quais ferramentas
podem ser utilizadas, ele apenas disponibiliza uma lista de ferramentas e dá
sugestões conforme o caso. Essa fase normalmente tem o prazo aproximado de 30
dias.
2) CONSTRUCTION:
Durante essa fase, uma equipe DAD produzirá uma solução potencialmente
consumível em uma base incremental. Eles podem fazê-lo por meio de um conjunto
de iterações ou por meio de uma abordagem de fluxo contínuo e enxuto. A equipe
pode aplicar aqui um híbrido de práticas do Scrum, XP, Agile Modeling, Agile Data e
outros métodos para fornecer a solução.
3) TRANSITION:
Fonte: https://www.objective.com.br/disciplined-agile-delivery/.
Essa metodologia, que também pode ser considerada uma abordagem, tem se
mostrado uma boa ferramenta e tem tido grande aceitação por empresas que têm
altos índices de governança e não possuem o desenvolvimento de software como
núcleo principal de seu negócio. Essa metodologia vem se mostrado muito eficiente
para empresas que estão buscando transitar do tradicional para o ágil.
Apenas destacando aqui alguns pontos que nos auxiliam a compreender esse
módulo de forma geral:
▪ DAD é uma framework de trabalho que tem como uma das principais
característica a flexibilidade, se adequando a vários contextos.
CASTRO, Artur de. Disciplined Agile Delivery: o que é e como funciona?. Disponível
em: https://www.objective.com.br/disciplined-agile-delivery/. Acesso em: 24 maio
2021.
CUKRIER, Daniel. DDD – Introdução a Domain Driven Design. 2010. Disponível em:
www.agileandart.com/2010/07/16/ddd-introducao-a-domain-driven-design/. Acesso
em: 24 maio 2020.
PACHECO, Diego. FDD: Um Método Ágil e Eficiente. 2009. Disponível em: diego-
pacheco.blogspot.com/2009/06/fdd-um-metodo-agil-e-eficiente.html. Acesso em: 24
maio 2021.
PIRES, Eduardo. DDD, TDD, BDD, Afinal o que são essas siglas?. 2012. Disponível
em: https://www.eduardopires.net.br/2012/06/ddd-tdd-bdd/. Acesso em: 24 maio
2021.