Metodologias Ágeis Metodologias Crystal Adaptive Software Development Tópicos Avançados de Engenharia de Software 3 Leonardo Cole Neto [email protected] Agenda Introdução O Jogo Filosofias A família Crystal Crystal Clear vs XP Adaptive Software Development Conclusão Referências Leonardo Cole Neto [email protected] Alistair Cockburn (pronounced "Coburn", the Scottish way ) Metodologista 20 anos coletando dados sobre projetos com e sem sucesso Tenta juntar os fatores que contribuem para criar uma metodologia adequada Ciclo: ignorant guess, experiência, aprendizado, formulação de uma teoria, descobrir que estava tudo errado "I can announce with perfect certainty and wonderful evidence what I believe, and be completely sure that it is wrong. However, I have no information as to where or how it is wrong" Leonardo Cole Neto [email protected] Game: “A way of amusing oneself” Diversos tipos – Físico, mental, individual, coletivo, competitivo, cooperativo, goal-seeking, finito, infinito “The Software Development is like a rock climbing game” – – Cooperativo, finito, goal-seeking, coletivo Objetivo Produzir um sistema o mais rápido possível, considerando fatores como: custo, facilidade de uso, livre de defeitos e segurança Leonardo Cole Neto [email protected] Características do Jogo Maior experiência e técnica, escaladas mais difíceis Individual e coletivo ao mesmo tempo Ferramentas necessárias para escaladas sérias Planejamento e improvisação – “Unforeseen obstacles are certain to show up” Diversão e desafio Leonardo Cole Neto [email protected] People as Non-Linear, First-Order Components Formalismos matemáticos – – Pessoas desenham muito, vamos produzir ferramentas – – As pessoas não estavam interessadas em aprender Tiveram sucesso em ignorar e ainda assim produzir software O que eles tinham a dizer – As pessoas não estavam interessadas em aprender Tiveram sucesso em ignorar e ainda assim produzir software “It slows me down - I won't make the schedule if I use it” Primeiro protótipo de metodologia (IBM) – – – “The most palatable, low-ceremony methodology I thought possible” As pessoas não estavam interessadas em aprender Tiveram sucesso em ignorar e ainda assim produzir software Leonardo Cole Neto [email protected] People, success and failure modes People are communicating beings, doing best face-toface, in person, with real-time question and answer People have trouble acting consistently (discipline) over time. People are highly variable, varying from day to day and place to place. People generally want to be good citizens, are good at looking around, taking initiative, and doing "whatever is needed" to get the project to work People prefer to fail conservatively than to risk succeeding differently Leonardo Cole Neto [email protected] Just-In-Time Methodology Construction Metodologia desenvolvida e adaptada durante o projeto Antes: melhor chute, baseado em entrevistas com pessoas de projetos anteriores Durante: Rascunho de metodologia – – – – – – – How long are the iterations and increments? What reviews are done? Where do people sit? What work products need to be produced? What standards are mandatory, what are recommended (for tools, drawings, tests, and code)? What does time reporting look like? What can be done to keep communication and morale up? Leonardo Cole Neto [email protected] Just-In-Time Methodology Construction Durante primeira iteração: refazer entrevistas – Depois de cada iteração: workshop – – Are we going to make it, working the way we are working? What did we learn? What can we do better? Durante outras iterações: verificações – – Is this working? Do we need to do something better in this increment? Leonardo Cole Neto [email protected] Crystal Crystal faz parte de um família de metodologias criadas por Alistair Cockburn (1998) cujas premissas são: Todo projeto tem necessidades, convenções e uma metodologia diferente O funcionamento do projeto é influenciado por fatores humanos, e há melhora neste quando os indivíduos produzem melhor Comunicação melhor e lançamentos freqüentes reduzem a necessidade de construir produtos intermediários do processo Leonardo Cole Neto [email protected] Família Crystal (1) “Strong on communication, light on work products. High productivity, self-evolving, based on human strengths and weaknesses" Classificação dos projetos quanto a problemas causados por perdas ou falhas: – – – – Confortável Algum custo Alto custo Custo de vidas (C) (D) (E) (L) Quanto a quantidade de pessoas envolvidas – – – – Até 6 pessoas De 7 à 20 De 21 à 40 De 41 à 80 (Clear) (Yellow) (Orange) (Red) Leonardo Cole Neto [email protected] Família Crystal (2) L4 E8 D10 C6 Leonardo Cole Neto [email protected] Crystal Orange D40 extensível para E80 1 a 2 anos de duração Time-to-market Necessidade de comunicação com equipe atual e futura Necessidade de manter tempo e custos baixos Sistemas não críticos Leonardo Cole Neto [email protected] Crystal Orange - Metodologia Papéis – Divisão em times responsáveis por: – “Sponsor, Business expert, Usage expert, Technical facilitator, Business analyst/designer, Project Manager, Architect, Design Mentor, Designer/programmer, Lead designer/ programmer, Reuse Point, Writer, Tester, UI designer” Planejamento, monitoramento, arquitetura, tecnologia, funções, infra-estrutura e testes externos Desenvolvimento incremental (2-4 meses) Rastreamento por milestones (releases e decisões importantes) ao invés de documentos Envolvimento direto do usuário Leonardo Cole Neto [email protected] Crystal Orange - Metodologia Workshops para ajustes na metodologia no começo e fim de cada iteração Artefatos – “Requirements document, release sequence, schedule, status reports, UI design document, a common object model, interteam specs, user manual, source code, test cases, and migration code” Templates, padrões de codificação e GUI e detalhes de testes são responsabilidade de cada time Cada indivíduo é livre para utilizar quaisquer técnicas Leonardo Cole Neto [email protected] Crystal Clear D6 extensível para E8 Papéis reduzidos – – Separados: “Sponsor, Senior designer, Designer/ programmer, User (part-time at least)” Compartilhados: “Project Coordinator, Business Expert, Requirements Gatherer” Um único time Desenvolvimento incremental (<2 meses) Artefatos reduzidos – “Release sequence, schedule of user viewings and deliveries, annotated use cases, design sketches & notes as needed, screen drafts, a common object model, running code, migration code, test cases and user manual” Leonardo Cole Neto [email protected] Crystal Clear vs XP XP é considerado um projeto D6-D14 Única grande diferença – Disciplina vs Tolerância “XP is a high-discipline, low-tolerance methodology while Crystal Clear is prioritized for tolerance” Crystal Clear pode ser um primeiro passo para utilização do XP Leonardo Cole Neto [email protected] Adaptive Software Development Ciclo de vida orientado a mudanças Desenvolvimento baseado em componentes Diversas semelhanças com o Crystal Leonardo Cole Neto [email protected] Unindo forças “Jim Highsmith, author of Adaptive Software Development, and Alistair Cockburn, author of the Software Development as a Cooperative Game have decided unify their work on light and self-adaptive methodologies” Leonardo Cole Neto [email protected] Conclusão “Desenvolvimento de software é um jogo de cooperação, usando desenvolvedores que pensam e fazem” Alistair Cockburn Leonardo Cole Neto [email protected] Referências www.crystalmethodologies.org/ alistair.cockburn.us/ www.agilealliance.org/articles Software development as a cooperative Game – Addison-Wesley 2002 www.cutter.com/consultants/charetter.html Leonardo Cole Neto [email protected] Perguntas ... Ser flexível é ser ágil? Ser produtivo é não “perder” tempo com normas? Ser tolerante é permitir tudo? Leonardo Cole Neto [email protected]