Prof. Luiz A. Nascimento As práticas denominadas ágeis vêm sendo cada vez mais utilizadas na gerência de projetos de software. Porque metodologias ágeis? A história dos fracassos no desenvolvimento de projetos de software é amplamente conhecida e divulgada. Pequena parcela dos projetos de software é considerada bem sucedida: concluídos no tempo estipulado; sob o orçamento previsto; de acordo com os requisitos dos usuários. Quais os principais motivos de falhas em software? Estudos apontam que o principal problema não é de caráter técnico, mas sim gerencial. Iniciativas iniciais envolveram padrões de qualidade de software e o conhecimento das melhores práticas de gerenciamento de projetos. CMMI (SEI) Definição modelo de maturidade no desenvolvimento de software. PMBOK (PMI) Identificação das necessidades do projeto; Estabelecimento de objetivos claros e alcançáveis; Equilibrio de demandas de qualidade, escopo, tempo e custo; Adaptação das diferentes especificações, planos e abordagem das. diversas partes interessadas. 1
O que justifica a pesquisa por novas metodologias de desenvolvimento de software? Muitas falhas em desenvolvimento de software. Falhas em Projetos de Software. (Johnson, 2001) 1994 1998 2000 2006 Sucesso projetos concluídos e operacionais, 16% 27% 28% 35% dentro do escopo, prazo e orçamento. Sucessos parciais projetos concluídos, mas 53% 33% 49% 46% fora do escopo ou prazo ou orçamento. Cancelados. 31% 40% 23% 19% Quais os fatores de sucesso de um projeto de software? Chaos Report Fatores de Sucesso em Projetos % 1. Envolvimento do Usuário 15,9% 2. Suporte da alta administração 13,9% 3. Clara definição dos requisitos 13,0% 4. Planejamento Apropriado 9,6% 5. Expectativas Realísticas 8,2% 6. Pontos de verificação dos projetos menores 7,7% 7. Competência da Equipe 7,2% 8. Propriedade 5,3% 9. Clara visão e objetivos 2,9% 10. Trabalho intenso 2,4% 11. Outros 13,9% Quais os fatores de fracasso de um projeto de software? Chaos Report Fatores de Fracasso em Projetos % 1. Requisitos e especificações incompletos 13,1% 2. Falta de participação dos usuários 12,4% 3. Falta de recursos 10,6% 4. Expectativas irreais 9,9% 5. Ausência de suporte da alta administração 9,3% 6. Volatilidade de requisitos e especificações 8,7% 7. Falta de planejamento 8,1% 8. Obsolescência do Projeto 7,5% 9. Ausência de gerência de Tecnologia da Informação 6,2% 10. Problemas com a tecnologia empregada 4,3% 11. Outros 9,9% 2
O que são metodologias ágeis? São um conjunto de metodologias de desenvolvimento de software que objetivam agilizar o processo de desenvolvimento e melhorar a qualidade do produto final. Algumas das principais metodologias: XP (extreme Programming) DSDM ( Dynamic Systems Development Method) Família Crystal ASD (Adaptive Software Development) SCRUM FDD (Feature-driven development) LD ( Lean Development ) Onde surgiu o conceito de metodologias ágeis? "Manifesto Para o Desenvolvimento Ágil de Software Reunião entre 17 gurus da comunidade de software; Realizada em estação de esqui em 2001 nos EUA; Elaboração do Manifesto Ágil: Indivíduos e interações => mais importantes que processos e ferramentas. Software funcionando => mais importante do que documentação completa e detalhada. Colaboração com o cliente => mais importante do que negociação de contratos. Adaptação a mudanças => mais importante do que seguir o plano inicial. Quais os principais conceitos das metodologias ágeis? entregas freqüentes, ciclos rápidos de desenvolvimento, aceite das alterações, consciência que as alterações sempre irão ocorrer, participação ativa do cliente. 3
Porque ocorrem mudanças ao longo do desenvolvimento de software? Clientes não sabem o que querem no início; Desenvolvedores não sabem qual a melhor maneira de fazer o software no início. Porque não ocorrem mudanças ao logo do desenvolvimento de software no modelo tradicional? custo Modelo Cascata Modelos Ágeis Requisitos Análise Projeto Implementação Testes Produção tempo Quais são os problemas do desenvolvimento ágil? Não são exigidas linguagens de representação. Propõe que se façam esboços a serem jogados fora. Sem documentação gráfica; Não exige documentação técnica extensa; Necessita de desenvolvedores experientes; A maioria não funciona bem com equipes grandes; Complicado com equipes em paralelo; Complicado para evolução de sistemas legados. Dificuldade em reorganizar código existente. 4
Qualquer equipe pode adotar metodologias de desenvolvimento ágil? Não porque: Necessita de local adequado para trabalhar em conjunto e as vezes duas pessoas na mesma máquina; Complicado trabalhar em conjunto com indivíduos problemáticos; Complicado trabalhar com gerentes mandões em trabalho em grupo: Dificil aprovação para adoção da metodologia; Nem todas as equipes conseguem convencer os clientes em participar efetivamente. Características do Desenvolvimento ágil Iteração No modelo Cascata os projetos são organizados para percorrer cada etapa em seqüência apenas 1 vez. Quando pela primeira vez o produto é criado, o teste começa e podem aparecer problemas (ocultos na Análise, projeto e Implementação). Começa um longo ciclo de correção de erros. Características do Desenvolvimento ágil Iteração Mais flexível (e menos arriscada) de percorrer várias vezes as diversas etapas de desenvolvimento, construindo um melhor entendimento dos requisitos liberando uma série de implementações. 5
Características do Desenvolvimento ágil Iteração Esse procedimento chama-se Ciclo de Vida Iterativo. A cada passagem, a seqüência de etapas do processo chama-se Iteração. No desenvolvimento ágil o ciclo de vida do software é uma sucessão de iterações, por meio das quais o software se desenvolve de maneira Incremental. Características do Desenvolvimento ágil Release Release é um parte do software com conjunto de funcionalidades bem definidas e que representam algum valor para o cliente. Um release pode ser interno ou externo. Release interno: usado apenas pela equipe de desenvolvimento, como parte de um marco, ou para fazer uma demonstração para usuários ou clientes. Release externo: produto completo ou incompleto liberado para os usuários finais. Existem ferramentas que ajudam no desenvolvimento de software ágil? Sim, como exemplo: Microsoft Project; Primavera; dotproject; GanttProject; OpenProject; Version one: Scrum Works; Xplanner; ClockingIT Pivotal Tracker 6
7