790 likes | 964 Views
PADS. Processos Ágeis de Desenvolvimento de Software. Márcio Amorim mkamorim@gmail.com Milton Campos miltoncampospe@gmail.com Recife-PE, 2009. Estrutura do Capítulo. 9.1 Introdução 9.2 Origem Ágil 9.3 Extreme Programming – XP 9.4 Scrum 9.5 Feature Driven Development – FDD
E N D
PADS Processos Ágeis de Desenvolvimento de Software Márcio Amorim mkamorim@gmail.com Milton Campos miltoncampospe@gmail.com Recife-PE, 2009
Estrutura do Capítulo CIN/UFPE Márcio Amorim / Milton Campos • 9.1 Introdução • 9.2 Origem Ágil • 9.3 Extreme Programming – XP • 9.4 Scrum • 9.5 Feature Driven Development – FDD • 9.6 Dynamic Systems Development Method - DSDM • 9.7 Considerações Finais • 9.8 Exercício • 9.9 Referências Bibliográficas
Estrutura do Processo no Capítulo CIN/UFPE Márcio Amorim / Milton Campos 9.5 Processo X 9.5.1 A Aplicabilidade do X. 9.5.2 Características do X. 9.5.3 Ciclo de Vida do X. 9.5.4 Papéis do X. 9.5.5 Práticas do X.
Contextualização A Engenharia de software vêm recorrentemente enfrentando o cenário onde ... as aplicações são cada vez mais complexas... o tempo de desenvolvimento é cada vez menor... há necessidade de diminuição de custos ... busca constante pelo aumento da qualidade.
Contextualização Processos tradicionais tornaram-se “pesados” para a engenharia de software Muita burocracia Muita documentação Pouca flexibilidade a mudanças no projeto Não contemplam o cenário atual Conflito de interesses
Origem Ágil CIN/UFPE Márcio Amorim / Milton Campos • Reunião entre 17 gurus da comunidade de desenvolvimento: • Kent Beck, Mike Beedle, Arie Van Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Steve Mellor, Ken Schwaber, Jeff Sutherland e Dave Thomas. • Realizada entre os dias 11 e 13 de fevereiro de 2001 em uma estação de esqui nas montanhas de Utah, Estados Unidos,
Origem Ágil CIN/UFPE Márcio Amorim / Milton Campos Manifesto for Agile Software Development We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value: Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan That is, while there is value in the items on the right, we value the items on the left more.
XP eXtreme Programming Márcio Amorim mkamorim@gmail.com Milton Campos miltoncampospe@gmail.com
eXtreme Programming CIN/UFPE Márcio Amorim / Milton Campos • Em meados de 1990, Kent Beck procurou formas mais simples e eficientes de desenvolver software • Identificou o que tornava simples e o que dificultava o desenvolvimento de software • Em Março de 1996, ele iniciou um projeto com novos conceitos que resultaram no processo XP - eXtreme Programming
eXtreme Programming CIN/UFPE Márcio Amorim / Milton Campos “Trata-se de uma metodologia ágil para equipes pequenas e médias desenvolvendo software com requisitos vagos e em constante mudança” Kent Beck
Características do XP CIN/UFPE Márcio Amorim / Milton Campos Equipes pequenas e médias; Requisitos vagos; Valores, Princípios e Práticas; Foco na programação.
Papéis do XP Gerente de Projeto Analista de Teste Coach Desenvolvedor Cliente Redator Técnico CIN/UFPE Márcio Amorim / Milton Campos
Valores do XP CIN/UFPE Márcio Amorim / Milton Campos Comunicação; Simplicidade; Feedback; e Coragem.
Princípios do XP CIN/UFPE Márcio Amorim / Milton Campos Feedback rápido; Assumir simplicidade; Mudanças incrementais; e Trabalho de qualidade.
Práticas do XP CIN/UFPE Márcio Amorim / Milton Campos Cliente Presente; Jogo de Planejamento; Stand Up Meeting; Programação Pareada; Desenvolvimento guiado pelos testes; Refatoração;
Práticas do XP CIN/UFPE Márcio Amorim / Milton Campos Código Coletivo; Código Padronizado; Projeto Simples; Metáfora; Ritmo Sustentável; Integração Continua; e Pequenas Versões.
Ciclo de Vida do XP CIN/UFPE Márcio Amorim / Milton Campos • A fase de exploração • É anterior à construção do sistema; • Investigações de possíveis soluções são feitas e verifica-se a viabilidade de tais soluções; • Os programadores elaboram possíveis arquiteturas e fazem considerações sobre o ambiente tecnológico (hardware, rede, software, performance, tráfego) onde o sistema irá rodar.
Ciclo de Vida do XP CIN/UFPE Márcio Amorim / Milton Campos • A fase de planejamento inicial • Definição das estórias pelo cliente; • Os programadores assinalam dificuldades; • Escolhas das estórias por valor de negócio.
Ciclo de Vida do XP CIN/UFPE Márcio Amorim / Milton Campos • Iterações do release • São escritos os casos de teste funcionais e de unidade. Os programadores vão seguindo mais ou menos o seguinte fluxo de atividades na seguinte ordem (em cada iteração): escrita dos casos de testes; projeto e refatoramento; codificação; realização dos testes; e integração.
Ciclo de Vida do XP CIN/UFPE Márcio Amorim / Milton Campos • A fase de manutenção • pode ser considerada como uma característica inerente a um projeto XP; • Em XP você está simultaneamente produzindo novas funcionalidades, mantendo o sistema existente rodando, incorporando novas pessoas na equipe e melhorando o código.
Ciclo de Vida do XP CIN/UFPE Márcio Amorim / Milton Campos • A fase de morte • Atendendo o que foi solicitado pelo cliente; • Economicamente inviável, devido a dificuldades de adicionar funcionalidades a um custo baixo e devido a uma alta taxa de erros.
Referências Bibliográficas CIN/UFPE Márcio Amorim / Milton Campos MANHÃES Teles, Vinícius. Extreme Programming. 1. ed. Novatec Editora, 2004. BECK, Kent. Programação Extrema Explicada: acolha as mudanças. 1. ed. Bookman, 2004. MANHÃES Teles, Vinícius. Um Estudo de Caso da Adoção das Práticas e Valores do Extreme Programming. Dissertação (mestrado em informática) – Universidade Federal do Rio de Janeiro - UFRJ, IM / DCC, 2005.
Scrum Márcio Amorim mkamorim@gmail.com Milton Campos miltoncampospe@gmail.com
SCRUM Ênfase dada ao gerenciamento do projeto. Atividades de monitoramento e feedback Não estabelece técnicas para o desenvolvimento Equipes pequenas (máximo 7 pessoas) Requisitos que são pouco estáveis ou desconhecidos Ciclos curtos (Sprint máx. 30 dias) Envolvimento do “cliente”
Papéis no Scrum Product Owner (PO): representa os interesses de todos no projeto, define as funcionalidades e as priorizam. Scrum Master (SM): facilitador, apóia a equipe no uso adequado do processo, promove reuniões, remove os impedimentos Time: desenvolve as funcionalidades
Sprint Backlog Requirements Analysis and Design Coding Test Code Review Deployment Requirements Analysis and Design Coding Test Code Review Deployment Requirements Analysis and Design Coding Test Code Review Deployment
Daily Scrums • Reunião diária de 15 minutos • Mesmo local e hora todo os dias • Cada integrante do time, responde: • O que você terminou desde a última reunião? • O que vai terminar antes da próxima reunião? • Quais os impedimentos?
Sprint – The Task Board Requirements Analysis and Design Coding Test Code Review Deployment Requirements Analysis and Design Coding Code Review Deployment dev 0 imp Test dev 1 Requirements Analysis and Design Coding Test Code Review Deployment
Sprint Review Meeting Participa todos os stakeholders Apresentação do que foi “feito” durante a Sprint
Sprint Retrospective Participa o time e o PO Melhoria do Processo Soluções para os problemas críticos
Referências Bibliográficas CIN/UFPE Márcio Amorim / Milton Campos Schwaber, K., Agile Project Management WithScrum, Microsoft, 2004. Schwaber, K. andBeedle, M., Agile Software DevelopmentWithScrum. NJ: Prentence Hall, 2002.
FDD Feature Driven Development Márcio Amorim mkamorim@gmail.com Milton Campos miltoncampospe@gmail.com
Feature Driven Development CIN/UFPE Márcio Amorim / Milton Campos ... após 2 anos de consultoria, 3.500 páginas de casos de uso e um modelo de objetos com centenas de classes, foi avaliado como impossível.
Feature Driven Development CIN/UFPE Márcio Amorim / Milton Campos Criada em 1997 em um grande projeto em Java para o UnitedOverseasBank, em Singapura; Nasceu a partir da experiência de análise e modelagem orientadas por objetos de Peter Coad, e de gerenciamento de projetos de Jeff De Luca;
Feature Driven Development CIN/UFPE Márcio Amorim / Milton Campos Primeira publicação em 1999, no do livro Java Modeling in ColorwithUML, de Peter Coad, Eric Lefebvre e Jeff De Luca; Em 2002, Stephen Palmer e John Mac Felsing publicaram o livro A PraticalGuide to FeatureDrivenDevelopment, com a versão completa;
Feature Driven Development CIN/UFPE Márcio Amorim / Milton Campos Em 2003, David Anderson, o livro Agile Management for Software Engineering: UsingtheTheoryofConstraints for Business Results, considerado por muitos como um marco na literatura ágil.
Feature Driven Development CIN/UFPE Márcio Amorim / Milton Campos Metodologia ágil para o processo de engenharia de software, com foco na entrega frequente do sistema funcionando e na utilização de boas práticas durante o ciclo de desenvolvimento.
Características do FDD CIN/UFPE Márcio Amorim / Milton Campos Situa-se numa posição intermediária entre as abordagens mais tradicionais e as ágeis; Envolvimento do cliente nos processos de planejamento e desenvolvimento de software;
Características do FDD CIN/UFPE Márcio Amorim / Milton Campos Não é extremamente focada apenas na programação ou no modelo, mas sim utiliza o bom senso para abstrair o melhor dos dois mundos; Tamanho dos times de 16 – 20 membros, suportando composições bem maiores;
Características do FDD CIN/UFPE Márcio Amorim / Milton Campos Entrega resultados funcionais e tangíveis a cada 2 semanas ou menos; Pequenos blocos de funcionalidades (features) valorizados pelo cliente; Planejamento detalhado e guiado para medição; Produção de software com qualidade.
Papéis do FDD Suporte Documentador Testador Gestor de projeto Adm. de sistemas Eng. de builds Gestor de desenvolvimento CLIENTE Guru de linguagem Chefe de design Papéis: Gestor de atividade Programador chefe Primário Secundário Adicionais Especialista Dono de classe CIN/UFPE Márcio Amorim / Milton Campos
Práticas CIN/UFPE Márcio Amorim / Milton Campos Modelagem de objetos de domínio; Desenvolvimento por feature; Posse individual do código/classe; Equipes de features; Inspeções e builds reguladores; Gerenciamento de configuração; Relatório/visibilidade de resultados.