Um projeto desenvolvido a partir da abordagem XP apresenta diversas fa- ses, como exploração, planejamento, iterações até versão, produção manutenção e morte. As tarefas e artefatos envolvidos podem ser visualizados na figura 4.9.
Exploração Planejamento Iterações até versão Produção Manutenção Morte Revisão contínua Análise Prioridades Estimativas de esforço Atualizações regulares Estórias para próxima iteração Projeto
Planejamento para teste Análise
Teste Base dedados coletiva
Pequena
Versão AtualizadasVersões Versão Final Estórias
Programação em pares
Integração contínua Feedback
Figura 4.8 – Ciclo de Vida Extreme Programming. Fonte:<http://www2.dc.ufscar. br/~junia/MetAgEds.pdf>.
Fase de Exploração
A fase de exploração tem como objetivo verificar a viabilidade do projeto a partir da análise dos requisitos iniciais. É neste momento que as funcionalidades e características do produto são detalhadas para que todos os envolvidos tenham
Fase de Planejamento
Na fase de planejamento as histórias de usuário são definidas e priorizadas. Além disto, cada história é estimada em relação à sua complexidade. Histórias de usuário mais complexas devem ser implementadas primeiro. Neste momento de- vem ser definidos o tempo de iteração e de release. Cada iteração pode ser realizada de uma a três semanas, enquanto a release deve ter de dois a quatro meses.
Fase de Iteração
A fase de iteração é a etapa de concentração das atividades de engenharia do produto. A equipe deve realizar de forma contínua e iterativa as atividades de aná- lise, projeto, implementação e testes a partir dos princípios, valores e práticas do XP. Normalmente a primeira iteração tende a ser mais longa já que o problema e as tecnologias envolvidas ainda podem ser desconhecidos. Com o tempo de projeto, a equipe vai amadurecendo as estimativas e as iterações podem passar a ter um tempo mais curto.
Fase de produção
Após o final de cada release, o produto parcial deve ser integrado e disponibili- zação em ambiente similar ao de produção. O objetivo é realizar testes em relação ao desempenho e comportamento do software. Testes de aceitação podem ser rea- lizados para que o cliente valide a entrega.
Fase de Manutenção
A fase de manutenção é marcada pela acomodação de mudanças necessárias para fazer com que o software continue sendo útil ao cliente. Neste momento, novas funcionalidades podem ser adicionadas ao produto, como também erros podem ser corrigidos. Além disto, o código pode ser melhorado ou adaptado a novos contextos. É importante que alterações nesta fase sejam realizadas com cau- tela, já que erros podem ser inseridos no sistema, causando prejuízo aos clientes.
Fase de Morte
A fase da morte é caracterizada pelo encerramento do projeto. A finalização das atividades em um projeto XP pode ocorrer por duas razões: o cliente pode estar satisfeito ao ponto de não precisar de novas alterações ou o sistema está deteriorado a um ponto em que manutenções já são complexas de ser realizadas, tornando a continuação do projeto inviável economicamente.
ATIVIDADES
01. O desenvolvimento ágil de software é guiado por metodologias que compartilham um conjunto comum de valores e de princípios, conforme definido pelo Manifesto Ágil. Assinale a opção que indica um princípio do desenvolvimento ágil.
a) As mudanças nos requisitos devem ocorrer dentro do quadro de tempo estabelecido para a iteração
b) O método mais eficiente e eficaz de transmitir informações para e entre uma equipe de desenvolvimento é por meio de conversa face a face.
c) Os intervalos regulares devem ser evitados para tornar a equipe mais eficaz e maximizar a quantidade de trabalho realizado.
d) As pessoas de negócio e desenvolvedores devem interagir somente no início de cada iteração.
e) A entrega contínua e adiantada de software, mesmo que o conjunto de funcionalidades desenvolvidas não agregue valor, deve ser feita para satisfazer o cliente.
02. Como o desenvolvimento enxuto de software atua na construção do desenvolvimento ágil de sistemas?
03. NÃO é uma característica da Extreme Programming (XP): a) simplicidade.
b) agilidade.
c) desenvolvimento orientado a testes. d) programação em par.
e) documentação extensa e abundante em artefatos.
04. Determinado projeto de software utiliza XP (Extreme Programming) como metodologia de desenvolvimento. A esse respeito, é INCORRETO afirmar que:
a) o cliente participa ativamente e acompanha os passos dos desenvolvedores diariamente. b) os integrantes da equipe se reúnem rapidamente no início do dia, de preferência em pé. c) a equipe de desenvolvimento concentra esforços naquilo que gera maior valor para
o cliente.
d) a programação em pares dispensa o desenvolvimento orientado a testes no projeto. e) as funcionalidades do software são descritas em histórias, da forma mais simples possível. 05. Assegurar que a equipe se concentre em fazer, primeiro, apenas aquilo que é claramente necessário e evite fazer o que poderia vir a ser necessário, mas ainda não se provou essen- cial. Este é um dos cinco valores fundamentais do XP (Extreme Programming), denominado: a) coragem. b) respeito. c) comunicação. d) simplicidade. e) feedback.
REFLEXÃO
Neste capítulo estudamos os princípios de metodologias ágeis a partir da análise do ma- nifesto ágil. Estes princípios norteiam abordagens como a extreme programming e o Scrum. Continuamos nossos estudos entendendo a desenvolvimento rápido de software, criado a partir da metodologia Toyota de produção. Aprofundamos o entendimento de ágil a partir do estudo detalhado sobre XP a partir dos seus valores, papéis, princípios e práticas. Por fim, detalhamos o ciclo de vida XP.
É importante que, baseado nos conceitos apresentados, você seja capaz de identificar as vantagens e desvantagens de metodologias ágeis. Os conhecimentos adquiridos serão importantes para o entendimento da abordagem Scrum, foco do nosso estudo no próximo capítulo.
LEITURA
Para você avançar mais o seu nível de aprendizagem envolvendo os conceitos de extreme programming e demais assuntos deste capítulo, consulte o capítulo 3 do livro:
REFERÊNCIAS BIBLIOGRÁFICAS
SOMMERVILLE, I. Engenharia de Software. 9ª Edição. Editora Pearson, 2011. PRESSMAN, R. S. Engenharia de Software. 6ª Edição. Editora McGraw Hill, 2011.
LARMAN, Craig. Agile & Iterative Development: A Manager’s Guide. Addison-Wesley, 2003. HIGHSMITH, Jim. Agile Software Development Ecosystems. Adisson-Wesley, 2002. FRANCO, Eduardo Ferreira. Um modelo de gerenciamento de projeto baseado nas
metodologias ágeis de desenvolvimento de software e nos princípios da produção enxuta. São Paulo, 2007. Disponível em: http://www.teses.usp.br/teses/disponiveis/3/3141/tde- 09012008- 155823/pt-br.php Acesso em: 04 de agosto de 2016.
SHINGO, S. Study of “Toyota” Production System from Industrial Engineering Viewpoint: Produce What Is Needed, When It’s Needed. Cambridge: Productivity Press, 1981. 291 p.
POPPENDIECK, M.; POPPENDIECK, T. Lean Software Development: An Agile Toolkit for Software Development Managers. Primeira Edição. Boston: Addison-Wesley Professional, 2003. 240 p.
Scrum
Scrum
O framework Scrum surgiu na década de 90, porém a sua popularização é mais recente. Até os anos 2000 as abordagens tradicionais ainda eram imperativas. Somente a partir desse período que os métodos ágeis tornaram-se uma forma bem sucedida de desenvolver sistemas.
Projetos que utilizam o Scrum possuem 3,5 vezes mais chances de sucesso do que outros projetos (The Standish Group, 2015). Isso não dignifica que a adoção do framework garante que problemas não irão acontecer. Muitas das vantagens proporcionadas pela abordagem só poderão ser percebidas caso a ferramenta seja bem utilizada. Neste capítulo vamos estudar os conceitos gerais do Scrum, seus papeis, artefatos e eventos. Por fim vamos analisar a abordagem Kanban.
OBJETIVOS
• Aprender os conceitos básicos de Scrum; • Entender os papéis envolvidos no Scrum; • Conhecer os artefatos presentes no Scrum; • Entender o ciclo de vida do XP;
• Aprender os conceitos de Kanban.