Experiˆencias com desenvolvimento ´agil Dairton Luiz Bassi Filho Dissertac¸a˜o apresentada ao Instituto de Matema´tica e Estat´ıstica da Universidade de Sa˜o Paulo para obtenc¸a˜o do t´ıtulo de Mestre em Cieˆncias ´ Area de Concentra¸c˜ao: Ciˆencia da Computa¸c˜ao Orientador: Prof. Dr. Eduardo Colli S˜ao Paulo, 20 fevereiro de 2008 ii Agradecimentos Este trabalho aconteceu gra¸cas a colabora¸c˜ao de muitas mentes. Algumas influenciaram direta- mente com sugest˜oes e opini˜oes, outras proveram est´ımulos para reflex˜oes, e outras mais, involunta- riamente colaboraram simplesmente pelo contato. Todas de alguma forma me ajudaram a lapidar este trabalho. Agrade¸co`aminhafam´ıliaeaomeuorientador, Prof. Dr. EduardoColli, pelaconfian¸ca, incentivo e apoio durante todo o longo percurso deste mestrado. Em especial, agrade¸co ao Prof. Dr. Fabio Kon, pela exigˆencia, colabora¸c˜ao e confian¸ca. Agrade¸co aos companheiros ´ageis da AgilCoop. Alexandre Freire, Paulo Cheque, Mariana Bravo, HugoCorbucci,Prof. Dr. Jef,eJulianMonteiro,quetˆemsededicadoatemas´ageis. Eespecialmente, aoProf. Dr. AlfredoGoldman,quesempreofereceuopini˜oeseajudade´otimaqualidade,eaoparceiro de aventuras ´ageis, Danilo Sato, pelas sugest˜oes que deu, principalmente na reta final. Agrade¸coatodosquecontribu´ıramcomoColm´eia,poiscolaboraramcomumsoftwareimportante para o IME. Ao pessoal da PR&A, em particular ao S´ergio Malacrida pela confian¸ca que depositou durante todo o projeto. A` equipe da ALESP pelo excelente trabalho que realizamos juntos. E ao pessoal do Ikwa, que trabalha muito para fazer um sonho se tornar realidade. Obrigado, esta obra s´o foi poss´ıvel gra¸cas a todos vocˆes! iii iv Resumo A grande demanda por sistemas e as dificuldades em produzi-los motiva a busca por maneiras mais objetivas e eficazes para desenvolvˆe-los. As metodologias ´ageis apresentam uma abordagem que considera os fatores humanos envolvidos no processo de desenvolvimento de software e foca na entregadeprodutoscomom´aximodevaloragregado. Contudo,aimensaquantidadedevari´aveisque influenciamnaprodu¸c˜aodesistemasabrangefatorest´ecnicos,comerciais,estrat´egicosemotivacionais que tornam cada projeto altamente espec´ıfico e exige uma metodologia personalizada. Nestetrabalho,apresentamosasprincipaismetodologias´ageisdedesenvolvimentodesoftwareque serviram de base para as metodologias que adotamos nos quatro casos de estudo que descrevemos e dosquaisextra´ımospercep¸c˜oeseumconjuntodepr´aticasquepodemseradotadosporoutrasequipes de desenvolvimento. Palavras-chave: M´etodos ´ageis, Programa¸c˜ao Extrema, Pr´aticas, XP, Scrum, Crystal, Desenvolvi- mento de Software, Engenharia de Software. v vi Abstract The great demand for systems and the hard path to build software motivates the search for more efficient ways to develop them. The agile methodologies propose an approach that consider the human factors involved in software development processes and put the focus on delivery products with the maximum business value. However, the wide amount of variables involved makes every project extremely specific that it requires a customized methodology. In this work, we introduce the principles of agile methodologies of software development that were the basis to the methodologies that we implemented in four cases that we describe, and from where we extract perceptions and a set of practices that can be useful for other development teams. Keywords: Agile Methods, Extreme Programming, Practices, XP, Scrum, Crystal, Software Deve- lopment, Software Engineering. vii viii Sum´ario Lista de Figuras xiii Lista de Tabelas xv 1 Introdu¸c˜ao 1 1.1 Nosso Escopo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.2 A Quem se Destina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.3 Trabalhos Relacionados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.4 Defini¸c˜oes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.5 Organiza¸c˜ao do Trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2 Metodologias de Desenvolvimento de Software 9 2.1 Modelos Tradicionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.1.1 Cascata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.1.2 Prototipa¸c˜ao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.1.3 Espiral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.1.4 Rapid Application Development - RAD . . . . . . . . . . . . . . . . . . . . . . 15 2.1.5 Rational Unified Process - RUP . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.2 Processos Emp´ıricos e Processos Prescritivos . . . . . . . . . . . . . . . . . . . . . . . 19 ix x SUMA´RIO 2.3 Modelos A´geis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.3.1 Surgimento dos M´etodos A´geis . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.3.2 Caracter´ısticas Comuns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.3.3 Programa¸c˜ao eXtrema - XP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 2.3.4 Desenvolvimento Lean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 2.3.5 Scrum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 2.3.6 Evolutionary Project Management - EVO . . . . . . . . . . . . . . . . . . . . . 56 2.3.7 Feature Driven Development - FDD . . . . . . . . . . . . . . . . . . . . . . . . 58 2.3.8 M´etodos Crystal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 2.3.9 Dynamic Systems Development Method - DSDM . . . . . . . . . . . . . . . . . 70 2.3.10 Adaptative Software Development - ASD . . . . . . . . . . . . . . . . . . . . . 74 3 Experiˆencias com Desenvolvimento A´gil 75 3.1 Na Universidade - IME-USP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 3.1.1 Os Sistemas da USP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 3.1.2 Colm´eia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 3.1.3 XP e a Academia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 3.1.4 Fase Incremental . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 3.1.5 Fase de Matura¸c˜ao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 3.1.6 Avalia¸c˜ao da Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 3.2 Na Indu´stria - PR&A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 3.2.1 O Projeto e a Equipe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 3.2.2 Processo de Desenvolvimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 3.2.3 Pr´aticas A´geis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 3.2.4 Conclus˜ao do Projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Description: