Prévia do material em texto
AULA 6 DIFERENTES METODOLOGIAS ÁGEIS DE PROJETOS Profª Ana Paula Costacurta 2 INTRODUÇÃO Olá, querido(a) aluno(a)! Seja bem-vindo(a). Nas aulas anteriores, já estudamos sobre os principais conceitos de gestão de projetos, conhecemos um pouco sobre as metodologias FDD, Microsoft Solutions Framework (MSF), Scaled Agile Framework® (SAFe®), Crystal e DSDM. Na aula anterior, conhecemos o Agile UP e iniciamos nossos estudos sobre a Programação Extrema (XP): valores, princípios, regras, vantagens e desvantagens, mapa do processo, etapa de interação e etapa de desenvolvimento. Na nossa aula de hoje, vamos continuar nossos estudos sobre a abordagem a XP. Veremos os seguintes tópicos: 1. Principais práticas da XP; 2. Práticas para equipe; 3. Programação em pares; 4. Comunicação Diária; 5. Tendência da adoção das abordagens ágeis. TEMA 1 – PRINCIPAIS PRÁTICAS DA XP A Programação Extrema sugere 12 práticas principais que devem ser utilizadas durante o desenvolvimento de software, que quando utilizadas em conjunto ajudam a mitigar os riscos do processo de desenvolvimento e geram alta qualidade no resultado. Neste tema, separamos as práticas em quatro grupos: participação do cliente, atividade contínua, entendimento compartilhado e bem-estar. 1.1 Grupo de participação do cliente Neste grupo, temos quatro práticas que priorizam o feedback do cliente, pois nada melhor que a opinião das partes interessadas para garantir a qualidade do software e atingir o sucesso do projeto. No Desenvolvimento Orientado a Testes (Test-Driven Development – TDD), os testes devem ser escritos antes da etapa de desenvolvimento e devem ser executados de preferência de forma automatizada. 3 Saiba mais Veja mais detalhes sobre desenvolvimento orientado a testes no link. Disponível em: <http://wiki.c2.com/?TestDrivenDevelopment>. Acesso em: 18 mar. 2022. O jogo de planejamento (Planning Game) é uma reunião de planejamento para estimar histórias e priorizar. O jogo consiste em criar uma distância emocional do planejamento, tratando este como se fosse um jogo. Neste jogo, as peças são as histórias de usuários. O objetivo é colocar o maior valor possível nas histórias em produção ao longo do jogo. Os jogadores são equipes de negócios e desenvolvedores com várias possibilidades de movimentações. Veja na Figura 1 o fluxograma do jogo de planejamento. Figura 1 – fluxograma do jogo de planejamento 4 Saiba mais Veja mais detalhes sobre planejamento no link. Disponível em: <http://wiki.c2.com/?PlanningGame>. Acesso em: 18 mar. 2022. O cliente deve sempre estar presente, com disponibilidade para responder eventuais dúvidas dos desenvolvedores. O nome dessa prática foi alterado para Equipe Inteira (Whole Team). Veremos em mais detalhes no tema sobre práticas para equipe. • Programação em pares (Pair Programming): dois programadores trabalham juntos. Enquanto um digita, o outro fica observando. Assim, é possível pensar em melhorias e alternativas. Veremos em mais detalhes em um próximo tema. 1.2 Grupo de atividade contínua Neste grupo, temos três práticas para garantir a integração e a qualidade do software. Na integração contínua (Continuous Integration), o processo de integração contínua produz, em intervalos regulares, versões executáveis que adicionam funcionalidades a cada versão. Saiba mais Veja mais detalhes sobre integração contínua no link. Disponível em: <http://wiki.c2.com/?ContinuousIntegration>. Acesso em: 18 mar. 2022. A refatoração (refactoring) tem como objetivo melhorar o design do código. Por exemplo, a verificação de códigos duplicados ou variáveis desnecessárias no código devem ser corrigidas na refatoração, ou seja, refatoração é mudar a implementação sem alterar a funcionalidade. Saiba mais Veja mais detalhes sobre refatorar sem piedade no link. Disponível em: <http://wiki.c2.com/?RefactorMercilessly>. Acesso em: 18 mar. 2022. Realizar pequenos lançamentos (small releases) é uma prática central do XP. Com ciclos curtos, deve-se fornecer um conjunto pequeno de funcionalidades, ou seja, implementar apenas algumas histórias de usuários a cada ciclo. 5 1.3 Grupo de entendimento compartilhado Neste grupo, temos três práticas para a compreensão compartilhada do projeto. No Design Simples (Simple Design), a ideia principal é implementar apenas o que tem valor para o negócio. Os quatro mandamentos da simplicidade do código são: 1. passa em todos os testes; 2. claro, expressivismo e consistente; 3. não duplicar comportamento ou configuração; 4. mínimo de métodos, classes e módulos. A propriedade coletiva do código (Collective Ownership) considera o código pertencente ao projeto, e não a um desenvolvedor individualmente. Para trabalhar neste modo, é necessário, pelo menos: • padrão de codificação que todos utilizam; • ferramenta de gerenciamento de código; • testes unitários de forma abrangente para garantir qualidade; • refatoração para encontrar métodos antigos e realizar a substituição por novos; • integração contínua para eliminar a chance de conflitos. Saiba mais Veja mais detalhes sobre propriedade coletiva de código no link. Disponível em: <http://wiki.c2.com/?CollectiveCodeOwnership>. Acesso em: 18 mar. 2022. Nos padrões de codificação (Coding Standards), a equipe deve seguir um padrão comum, para que o código pareça ter sido escrito por apenas uma pessoa. O código deve ser possível de ler facilmente por qualquer membro da equipe, apoiando a propriedade coletiva do código. Saiba mais Veja mais detalhes sobre padrão de codificação no link. Disponível em: <http://wiki.c2.com/?CodingStandard>. Acesso em: 18 mar. 2022. A metáfora do sistema (System Metaphor) é um pequeno código que apenas descreve realmente a arquitetura lógica do sistema. A arquitetura lógica 6 é, no caso de sistemas OO, as classes e objetos mais importantes e como eles interagem. Saiba mais Veja mais detalhes sobre metáfora do sistema no link. Disponível em: <http://wiki.c2.com/?SystemMetaphor>. Acesso em: 18 mar. 2022. 1.4 Grupo de bem-estar Neste tema, vamos conhecer a prática de semana de 40 horas (Forty Hour Week), que é uma metáfora para alcançar o ritmo sustentável da equipe. Deve-se evitar a sobrecarga da equipe, criando condições de uso de carga normal de trabalho sem horas extras, ou seja, em um ritmo saudável de trabalho. Saiba mais Veja mais detalhes sobre semana de 40 horas no link. Disponível em: <http://wiki.c2.com/?FortyHourWeek>. Acesso em: 18 mar. 2022. TEMA 2 – PRÁTICAS PARA EQUIPE Neste tema, veremos algumas práticas relacionadas com trabalho em equipe visando a qualidade e sucesso do projeto. 2.1 Sente junto Em espaço aberto, para que toda a equipe tenha contato, porém com espaço próprio. A prática de sente juntos possui o significado de trabalho em equipe, porém muitos pensam que equipes remotas (multisite) não possam trabalhar com XP. O sentar junto prevê muito tempo presencial, com interação humana e produtiva. Pode ser pensado de maneira que as equipes distantes tenham tempo para terem a interação necessária, mesmo que para isso seja necessário que os membros da equipe viajem. 2.2 Equipe inteira Em uma equipe, deve haver pessoas com habilidades e perspectivas diversificadas para o sucesso do projeto. A prática de equipe inteira (Whole Team) 7 tem o significado de integridade na equipe com disponibilidade de todos os recursos necessários para o bom andamento do projeto. Um tamanho bom de equipe é 12 pessoas para que a interação seja realizada de forma confortável. Em equipes com quantidade maior do que isso, pode não existir confiança e colaboração entre os membros da equipe. 2.3 Espaço de trabalho interativo O espaço de trabalhoda equipe deve apresentar uma ideia geral do progresso do projeto em 15 segundos. A implantação dessa prática seria a colocação de cartões de histórias de usuários na parede (Figura 2). Figura 2 – Exemplo de parede de histórias de usuários Fonte: Beck; Andres, 2005. O espaço de trabalho precisa atender outras necessidades humanas e proporcionar conforto e interação sociais. O espaço da equipe aberto deve possibilitar privacidade, podendo implementar cubos separados ou limitação de horário de trabalho. Na Figura 3, podemos ver um exemplo de espaço de trabalho interativo. 8 Figura 3 – Exemplo de espaço de trabalho Fonte: Beck; Andres, 2005. Saiba mais Veja mais detalhes sobre asp práticas no link. Disponível em: <https://learning.oreilly.com/library/view/extreme-programming- explained/0321278658/ch07.html#ch07lev1sec2>. Acesso em: 18 mar. 2022. TEMA 3 – PROGRAMAÇÃO EM PARES Na programação extrema (XP), todo código a ser enviado para produção é criado com dois programadores trabalhando juntos em um computador. A técnica funciona com o estabelecimento de dois papéis, que são revesados durante a codificação: piloto e copiloto. O piloto tem a função de escrever o código, e o copiloto faz a inspeção do código. Quando um ciclo finaliza, o papel de piloto e copiloto é invertido. 3.1 Vantagens da programação em pares Podemos citar cinco vantagens de utilizar a programação em pares em seu projeto: • Disciplina: quando programamos em dupla, existe um compromisso de manter o foco no desenvolvimento. 9 • Compartilhamento de conhecimentos: a inversão dos papéis permite que exista uma troca de conhecimento entre a dupla e nivela as habilidades do time. • Qualidade do código: como o código é revisado e aprimorado de forma constante, é mais fácil identificar trechos sem clareza e ineficientes. • União da equipe: existe troca de experiência e o comprometimento da dupla, onde erros e acertos são responsabilidade da dupla. • Velocidade de codificação: existe um nível maior de atenção da dupla, que possibilita que exista uma entrega mais rápida. A revisão realizada pelo copiloto reduz a necessidade de refatoração. 3.2 Dificuldades de implementar programação em pares Existem algumas dificuldades que devem ser superadas para que a prática de programação em pares funcione. Algumas delas são: • Custo do projeto: alocar duas pessoas pode parecer desperdício de recursos, o que dá impressão de aumento de custos. • Comunicação: pode gerar atrito entre pares que não possuem habilidades sociais, gerando problemas na comunicação da equipe. • Resistência: em uma equipe com personalidades diferentes, podem existir pessoas que não consigam trabalhar em conjunto e prefiram trabalhar sozinhas ou não gostem de compartilhar conhecimento. • Manter a prática: ao longo do tempo, pode ser difícil manter a prática por causa dos imprevistos, como faltas ou trabalhos individuais. 3.3 Como implementar programação em pares Seguem dicas que devem ser adotadas pelos membros da equipe para realizar a implementação da programação em pares nos projetos: • Entender como os outros trabalham: diferenças devem ser respeitadas e deve-se conhecer as formas como o outro gosta de lidar com as tarefas. • Movimento de pessoas: a troca de pares pode acontecer frequentemente. • Cordialidade: comunicação e empatia são essenciais. • Objetivo claro para equipe: a equipe deve conhecer o objetivo do trabalho em pares e os benefícios de aplicação da técnica. 10 • Respeito: respeitar o momento que está no papel de piloto e o outro está no copiloto. • Aprendizado contínuo: existe mais de uma forma de codificar para chegar à mesma solução, portanto deve-se estar aberto a aprender algo novo. • Trabalho em equipe: a discussão de alternativas pela equipe é importante e as soluções devem ser pensadas em conjunto. • Boa estrutura: fornecer uma estrutura propícia para trabalhar em pares é importante, como cadeiras ergométricas e mesas que possam ser utilizadas pela dupla. TEMA 4 – COMUNICAÇÃO DIÁRIA Sentar junto em um espaço de trabalho aberto promove a comunicação todos os dias. Reuniões diárias em pé são realizadas todos os dias e reuniões com toda equipe auxilia a eliminar impedimentos e falhas na comunicação. 4.1 Fluxograma de comentários O fluxograma da rotação comentários (feedback loops) recomendados pela XP pode ser visto na Figura 4. Quando receber o retorno precocemente, é possível realizar a correção do curso. Figura 4 – Fluxograma do feedback loops Fonte: Wells, 2022. 11 Os comentários podem ser realizados de muitas formas possíveis e com tempos diferentes. Por exemplo, quando a dupla está realizando a programação, os comentários são uma forma de feedback importante. Os testes também fornecem um feedback muito importante com os resultados ou no momento de criá-los. Caso esteja muito difícil realizar a criação dos testes, pense em simplificar o design que pode estar complexo. Saiba mais Veja mais detalhes sobre comunicação diária no link. Disponível em: <http://www.agile-process.org/communicate.html>. Acesso em: 18 mar. 2022. TEMA 5 – TENDÊNCIA DA ADOÇÃO DAS ABORDAGENS ÁGEIS As forças de trabalho remotas exigem uma nova forma de se trabalhar dentro das equipes de desenvolvimento de software. Neste tema, conheceremos um pouco sobre tendências mundiais na adoção das abordagens ágeis. 5.1 Técnicas ágeis e maturidade A pesquisa mostra que o XP tem 1% de popularidade e que a metodologia híbrida Scrum/XP está com 6% da popularidade. Ainda, o Scrum é a abordagem ágil mais popular com 66%. Veja na Figura 5 o gráfico de resultado da pesquisa de utilização das práticas. Figura 5 – Gráfico de popularidade de abordagens ágeis Fonte: Digital.Ai, 2022. 12 Sobre as técnicas e práticas utilizadas, a pesquisa cita que são utilizadas: reuniões diárias em pé, retrospectivas e planejamento de interação. Também são utilizados os quadros de atividades e planilhas. Podemos ver, na Figura 6, em verde, as técnicas e práticas que as organizações utilizam, e em azul, as ferramentas de gerenciamento e entrega utilizadas pelas empresas. Figura 6 – Gráfico de utilização de técnicas e práticas ágeis Fonte: Digital.Ai, 2022. 5.2 Experiência das empresas com Agile As três principais áreas que adotaram os princípios e práticas ágeis são: Desenvolvimento de Software, Tecnologia da Informação (TI) e Operações. E a distribuição da equipe não está em tempo integral presencialmente. Podemos ver na Figura 7 o resultado da pesquisa. 13 Figura 7 – Gráfico de área que adoram princípios e práticas ágeis Fonte: Digital.Ai, 2022. 5.3 Motivos para adoção do Agile Os dois principais motivos para adoção das abordagens ágeis é a flexibilidade e velocidade. Podemos ver, na Figura 8, o gráfico que mostra as razões mencionadas pelas empresas para utilizarem as abordagens ágeis. 14 Figura 8 – Gráfico de motivos de adoção de abordagens ágeis Fonte: DIGITAL.AI, 2022. 5.4 Pontos positivos da utilização do Agile A pesquisa mostra que o gerenciamento de prioridades, a visibilidade e os alinhamentos são os principais pontos positivos da adoção da abordagem ágil. As organizações mencionam que utilizam como métrica para determinar o sucesso na utilização da abordagem ágil a satisfação do cliente, valor do negócio e objetivos da área de negócios atingidos. Podemos ver na Figura 9 o gráfico com os pontos positivos em laranja e as medidas de sucesso em azul. Figura 9 – Gráfico Fonte: DIGITAL.AI, 2022. 15 Saiba mais Veja mais detalhes sobre o 15º relatório anual do Estado do Agile no link. Disponível em: <https://digital.ai/resource-center/analyst-reports/state-of-agile- report>. Acesso em: 18 mar. 2022. 16 REFERÊNCIASALTEXSOFT. Extreme Programming: Values, Principles and Practices. Disponível em: <https://www.altexsoft.com/blog/business/extreme-programming- values-principles-and-practices/>. Acesso em: 9 fev. 2022. BECK, K; ANDRES, C. Extreme Programming Explained: Embrace Change. 2. Ed. USA: Pearson Education, 2005. DIGITAL.AI. 15th Annual State Of Agile Report. Disponível em: <https://digital.ai/resource-center/analyst-reports/state-of-agile-report>. Acesso em: 3 fev. 2022. NOLETO, C. Pair programming: como implementar a programação em par. Disponível em: <https://blog.betrybe.com/carreira/pair-programming-como- implementar/> Acesso em: 2 fev. 2022. WELLS, D. Extreme Programming: a gentle introduction. Disponível em: <http://www.extremeprogramming.org/>. Acesso em: 9 fev. 2022. WIKI XP. Extreme Programming. Disponível em: <http://wiki.c2.com/?ExtremeProgramming> Acesso em: 9 fev. 2022. INTRODUÇÃO TEMA 1 – PRINCIPAIS PRÁTICAS DA XP 1.1 Grupo de participação do cliente 1.2 Grupo de atividade contínua 1.3 Grupo de entendimento compartilhado 1.4 Grupo de bem-estar TEMA 2 – PRÁTICAS PARA EQUIPE 2.1 Sente junto 2.2 Equipe inteira 2.3 Espaço de trabalho interativo TEMA 3 – PROGRAMAÇÃO EM PARES 3.1 Vantagens da programação em pares 3.2 Dificuldades de implementar programação em pares 3.3 Como implementar programação em pares TEMA 4 – COMUNICAÇÃO DIÁRIA 4.1 Fluxograma de comentários TEMA 5 – TENDÊNCIA DA ADOÇÃO DAS ABORDAGENS ÁGEIS 5.1 Técnicas ágeis e maturidade 5.2 Experiência das empresas com Agile 5.3 Motivos para adoção do Agile 5.4 Pontos positivos da utilização do Agile REFERÊNCIAS