XP – Extreme Programming

Prólogo

Programação extrema (do inglês eXtreme Programming), ou simplesmente XP, é uma metodologia ágil para equipes pequenas e médias e que irão desenvolver software com requisitos vagos e em constante mudança. Para isso, adota a estratégia de constante acompanhamento e realização de vários pequenos ajustes durante o desenvolvimento de software.

Metodologias ágeis

Desenvolvimento ágil de software (Agile software development) ou Método ágil é um conjunto de metodologias de desenvolvimento de software. O desenvolvimento ágil, tal como qualquer metodologia de software, providencia uma estrutura conceitual para reger projetos de engenharia de software.

Frameworks e Processos

Existem inúmeros frameworks e processos para desenvolvimento de software. A maioria dos métodos ágeis tenta minimizar o risco pelo desenvolvimento do software em curtos períodos, chamados de iteração, os quais gastam tipicamente menos de uma semana a até quatro. Cada iteração é como um projeto de software em miniatura de seu próprio, e inclui todas as tarefas necessárias para implantar o mini-incremento da nova funcionalidade: planejamento, análise de requisitos, projeto, codificação, teste e documentação.

imagem1

Desenvolver por Partes

Enquanto em um processo convencional, cada iteração não está necessariamente focada em adicionar um novo conjunto significativo de funcionalidades, um projeto de software ágil busca a capacidade de implantar uma nova versão do software ao fim de cada iteração, etapa a qual a equipe responsável reavalia as prioridades do projeto.

espiral1

Orientação a Objetos

Os métodos ágeis surgiram de profissionais que vieram da orientação a objetos como Kent Back e Ward Cunningham, duas grandes personalidades no que tange o tema de métodos ágeis. Essas pessoas foram lideres na adoção dessas linguagens orientadas a objetos, ambos vieram principalmente da linguagem Smalltalk. A partir disso também surgiram outras práticas da comunidade Smalltalk como refatoração, programação em par, mudanças rápidas, feedback constante do cliente, reforçou-se o desenvolvimento iterativo, testes automatizados, etc.

 

imagem2

O Extreming Programming (XP) tem muita semelhança com SCRUM em termos de valores e modelo de desenvolvimento de projetos, ou seja, como desenvolver projetos que possam abraçar as incertezas de forma mais seguras. No entanto, esses dois métodos também são complementares, visto que SCRUM é mais como um framework gerencial. O XP desenvolve menos esses aspectos e foca mais em práticas de engenharia.

2000px-scrum_process-svg

Criada em 1997 o XP possui adeptos e outros que duvidam da sua real utilidade, muitos por falta de conhecimento ou entendimento achando que no XP apenas código é o que realmente interessa descartando o resto como planejamento, documentação, etc.

 

 

O CÓDIGO É A DOCUMENTAÇÃO

 

 

Documentar por Versão

Uma ótima documentação são as próprias versões geradas em um desenvolvimento, onde todos os detalhes são os próprios commit.

imagem4

O XP é um método de desenvolvimento de software, leve, não é prescritivo, e procura fundamentar as suas práticas por um conjunto de valores. O XP, diferentemente do que muitos pensam, também pode ser adotado por desenvolvedores com conhecimento médios e não apenas por desenvolvedores experientes.

O objetivo principal do XP é levar ao extremo um conjunto de práticas que são ditas como boas na engenharia de software. Entre elas podemos citar o teste, visto que procurar defeitos é perda de tempo, nós temos que constantemente testar. Mas o XP possui mais práticas do que apenas testar, entre as práticas, o XP diz que:

  • Já que testar é bom, que todos testem o tempo todo;
  • Já que revisão é bom, que se revise o tempo todo;
  • Se projetar é bom, então refatorar o tempo todo;
  • Se teste de integração é bom, então que se integre o tempo todo;
  • Se simplicidade é bom, desenvolva uma solução não apenas que funcione, mas que seja a mais simples possível;
  • Se iterações curtas é bom, então mantenha-as realmente curtas;

Portanto, como podemos notar todas a s coisas boas são levadas ao extremo no XP.

 

imagem5

 

Case: Olimpíadas Rio 2016

O projeto de segurança da informação desenvolvido para os Jogos Olímpicos Rio 2016 foi, certamente, o mais complexo já implantado na América Latina nos últimos tempos. Primeiramente, porque teve um portfólio de produtos extremamente amplo, que deve ser integrado a diversas tecnologias de diferentes marcas e aspectos. Em segundo lugar, pela sua visibilidade, já que atende o maior evento esportivo do mundo, teve aproximadamente 4,8 bilhões de espectadores, segundo seus organizadores.

Todos os projetos de segurança da informação abrangem basicamente três premissas: processos, soluções de segurança e pessoas. A diferença é que os Jogos Olímpicos Rio 2016 tiveram o tamanho de uma cidade inteligente. Para se ter uma ideia, o time envolvido nas operações foi de 136,5 mil pessoas, entre funcionários diretos, indiretos e voluntários, cada um com um nível de permissão e dinâmica de trabalho diferentes. Além disso, foi preciso atender milhares de atletas, profissionais de mídia e agentes de delegações que circularam durante o evento.

Em um esforço para aumentar a segurança dos jogos olímpicos, a Atos (Empresa responsavel pelo TI dos jogos) pagou hackers para oferecer informações sobre as vulnerabilidades dos sistemas e portais.

Como os jogos olímpicos é um evento de nível mundial, a estratégia adotada foi desenvolver as aplicações (desktop, sites e hotsites) com Extreming Programming, a cada versão de um sistema, hackers buscavam encontrar vulnerabilidades em forma de competição do tipo HackFlag.

Sempre que uma “bandeira” era encontrada o hacker mostrava o passo a passo de como ele encontrou a vulnerabilidade e passava para a fase seguinte da competição e o meio que ele utilizou para invadir o sistema era corrido.

Membros da equipe enviavam os endereços dos servidores em fóruns de hacker em forma de convite e também em páginas da Deep Web e ficavam monitorando a movimentação a fim de mitigar todos os ataques que obtiveram sucesso.

 

Valores do Extreme Programming

As práticas do XP são fundamentadas em valores. Veremos cada um dos valores do XP.

  • Comunicação
    • Segundo Beck “Os problemas nos projetos invariavelmente recaem sobre alguém não falando com alguém sobre algo importante”. Assim, a comunicação enfatiza que devemos sempre estar se comunicando seja entre desenvolvedores ou com os clientes. XP é organizado em práticas que não podem ocorrer se não houver comunicação.
  • Simplicidade
    • É tentar fazer o mais simples possível e caso seja necessário faremos algo mais complexo amanhã. Muitas vezes algo é feito de forma completa e posteriormente não é mais sequer usado ou necessário. Portanto, entre os princípios temos: Qual é a coisa mais simples que funciona?Aqui também temos a importância do coach que deve estar sempre verificando se a simplicidade esta sempre sendo seguida nos projetos.Fazendo um paralelo entre a simplicidade e a comunicação conclui-se que a simplicidade faz com que temos menos a comunicar e de uma forma mais completa e por sua vez a comunicação faz com que transmitimos mais clareza e confiança para alimentar a simplicidade.
  • Feedback
    • É muito presente no SCRUM através das reuniões diárias, retrospectiva, reuniões de revisão do produto, etc. Feedback é o valor primordial dentro do desenvolvimento ágil. O XP foi o precursor a falar em feedback e afirma que ele possibilita que o software evolua. O XP, como algo mais técnico que o SCRUM, diz que devemos sempre “Perguntar ao software, e não a um documento”, uma forma de alcançar isso é através dos testes automatizados que permitem feedback rápido. Os teste automatizados respondem de forma imediata se aquilo que foi introduzido ainda esta funcionando.O Feedback precisa ser cedo para sabermos se estamos fazendo a coisa correta, precisa ser concreto perguntando diretamente ao código e precisa ser constante através de iterações curtas, incrementos, e releases. Aqui garantimos constantemente junto ao cliente se estamos fazendo certo e o prazo esta seguindo bem o planejado.
  • Coragem
    • Muitas vezes não fazemos as coisas porque não temos coragem de fazer as mudanças. XP diz que devemos ter coragem de sempre colocar o cliente a par do que está acontecendo. Entre aquilo que o XP considera que devemos ter coragem de fazer destacam-se:Acreditar na capacidade de reagir a mudanças;
      • Trocar de paradigma;
      • Aprender com os erros;
      • Dar e receber feedback sem medo das consequências;
      • Acreditar no feedback concreto (não na “teoria”);
      • Fazer o que precisa ser feito;
      • Jogar fora código ruim;
      • Jogar fora protótipos criados para testar ideias.
  • Coach
    • É uma pessoa responsável por garantir a aderência a estes valores nas práticas. O Coach normalmente é uma pessoa experiente que também ajuda as equipes a implementarem o XP e monitorar se as coisas estão sendo bem seguidas.

 

Conclusão

Por fim, XP preconiza que Codificação é a atividade central do projeto, que os Testes (que também são código) servem de especificação de requisitos, e a Comunicação oral entre desenvolvedores é fundamental.

Isto não quer dizer que a equipe XP não constrói documentos e não faz modelagem, ela só não considera que um modelo é um documento. Modelos são feitos o tempo todo seja como quadro branco, sessões de design, etc, mas servem como um suporte para o concreto que realmente importa.

 

 

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *