Metodologias Ágeis e Software Livre
Daniel Wildt -dwildt@gmail.com Bacharel em Informática (PUCRS) Professor Universitário (FACENSA) Mais de 10 anos de experiência em Desenvolvimento de Software, hoje atuando como CIO Instrutor de Metodologias Ágeis da TargetTrust Atua como Coach para adoção de Metodologias Ágeis desde 2004, focando em Lean Development, Scrum, extreme Programming e Feature Driven Development Forte atuação na comunidade de desenvolvimento de software (RSJUG, DUG-RS, JEDI) Fundador do XP-RS (Grupo de Usuários de Metodologias Ágeis do RS) e Coordenador do GUMA (Grupo de Usuários de Metodologias Ágeis) vinculado a SUCESU-RS
Guilherme Lacerda -guilhermeslacerda@gmail.com Mestre em Ciência da Computação, área de Engenharia de Software (UFRGS) Professor Universitário de Graduação (FACENSA, UniRitter) e Pós-Graduação (UniRitter) Coordenador do Curso de Sistemas de Informação (FACENSA) Consultor de TI e Engenharia de Software Instrutor de Metodologias Ágeis da TargetTrust Mais de 14 anos de experiência em desenvolvimento de software, onde atuou por 9 anos como Diretor de Tecnologia de uma Empresa de Desenvolvimento de Software Livre e Open Source Pioneiro em Metodologias Ágeis no Brasil Fundador do XP-RS (Grupo de Usuários de Metodologias Ágeis do RS) e Vice-Coordenador do GUMA (Grupo de Usuários de Metodologias Ágeis) vinculado a SUCESU-RS Editor do InfoQ Brasil
Quem faz programa?
Por que 80% a 90% dos projetos de SW fracassam? Fonte: Standish Group
Principais Problemas Sistemas entregues com atrasos e/ou orçamento estourado Não atendem os requisitos de negócio Clientes descontentes (sem confiança nos desenvolvedores) Clientes não têm compreensão clara do que é desenvolvido Clientes não dão suporte correto para o desenvolvimento Clientes não estão interessados em participar de processos complexos
Principais Problemas Desenvolvedores trabalham muitas horas por semana Desenvolvedores relaxam na disciplina Desenvolvedores perdem o foco Processos prescritivos são atrativos para a gerência mas não para os desenvolvedores Baseados no paradigma do comando e controle Tenta minimizar o papel do cliente Foco em tecnologia e não no negócio
O que é ser Ágil? Ágil é ser rápido, ligeiro (dicionário) Eficaz: produz o resultado esperado Eficiente: produz o resultado esperado, mas com qualidade Características importantes: Foco nas necessidades do cliente (resultado!) Liderança Envolvimento das pessoas Melhoria Contínua Tomada de decisões baseada em análise de dados e informações (controle!)
Direitos do Cliente (Ron Jeffries) Planejamento Geral, definindo o que pode ser realizado, quando e a que custo Ver e acompanhar o andamento do projeto e, principalmente, o progresso do SW, passando por testes definidos em conjunto com a equipe Mudar de idéia, substituir funcionalidades, sem pagar custos exorbitantes Ser informado de mudanças no cronograma, em tempo de escolher e reduzir o escopo Poder cancelar o projeto a qualquer momento e ainda assim ter um sistema funcionando, refletindo o investimento realizado até o momento
Direitos do Desenvolvedor (Ron Jeffries) Saber o que é necessário, com declarações claras de prioridade Produzir trabalho de qualidade o tempo todo Pedir e receber ajuda da equipe, superiores e clientes Fazer e atualizar suas próprias estimativas Aceitar as suas responsabilidades, ao invés de tê-las impostas
Processos Tradicionais ciclos sequenciais, etapas dependentes Prever o futuro Temores (mudanças nos requisitos) Processos de Software
Manifesto Ágil Estamos evidenciando maneiras melhores de desenvolver software fazendoo nós mesmos e ajudando outros a fazê-lo. Através desse trabalho, passamos a valorizar: Interação entre pessoas MAIS QUE processos e ferramentas; Software em funcionamento MAIS QUE documentação abrangente; Responder a mudanças MAIS QUE seguir um plano. Colaboração com o cliente MAIS QUE negociação de contratos; Ou seja, mesmo tendo valor os itens à direita, valorizamos mais os itens à esquerda. Kent Beck, Robert C. Martin, Scott Ambler, Alistair Cockburn, Ward Cunningham, Ron Jeffries, Steve Mellor, Mike Beedle, Arie van Bennekum, Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt, Brian Marick, Ken Schwaber, Jeff Shuterland, Dave Thomas Utah Fev/2001
Pessoas e as Metodologias Ágeis
Princípios Satisfazer o cliente, entregando o software em tempo hábil e continuamente Aceitar as mudanças de requisitos, em qualquer fase do projeto Entregar software na menor escala de tempo possível Equipe de desenvolvimento e cliente são do mesmo time Construir projetos com indivíduos motivados e comprometidos com o resultado
Princípios Usar a comunicação efetiva Ter o software em funcionamento é a principal medida de progresso Atenção contínua à excelência técnica As melhores arquiteturas, requisitos e projetos provêm de equipes organizadas Refletir sobre como se tornar mais eficaz, ajustando e adaptando o comportamento da equipe
Metodologias Ágeis MSF for Agile http://lab.msdn.microsoft.com/teamsystem/workshop/msfagile/ SCRUM http://www.controlchaos.com/ FDD http://www.featuredrivendevelopment.com/ Lean Software Development http://www.poppendieck.com/ Crystal http://alistair.cockburn.us/crystal/crystal.html DSDM http://www.dsdm.org/ extreme Programming http://www.extremeprogramming.org/
Lean Software Development
SCRUM
XP extreme Programming Práticas organizacionais Práticas de equipe Práticas de pares
Ferramentas de Apoio Open QA Selenium
Ferramentas de Apoio
Práticas Ágeis e Software Livre
Práticas Ágeis e Software Livre
Práticas Ágeis e Software Livre
Práticas Ágeis e Software Livre
Práticas Ágeis e Software Livre
Práticas Ágeis e Software Livre
Práticas Ágeis e Software Livre
Agile Coaching 10/10 David Hussman DevJam Horário: 14h30min às 18h Sala 517 da FACIN (PUCRS), Prédio 32 Evento gratuito! Vagas Limitadas!
Exercício de Superação do medo Dois voluntários, por favor...
http://www.guma-rs.org/ Apoio