Extreme ProgrammingXPSeminário de Engenharia de SoftwareProf. Luiz Alberto Ferreira GomesAlunos: Fernando Henrique CândidoJaffer dos Santos VeroneziJoão Paulo FernandesPUC-MINAS Campus Poços de Caldas-MG
O que é Extreme Programming? 
Metodologia ágil, que visa um rápido desenvolvimento, atende as reais necessidades do cliente e, ainda, permite modificações, á medida que novas necessidades apareçam; 
Criada por Kent Beck em 1996; 
Ágil ≠Rápido 
Ágil = Adaptativo
Valores do XP 
O Extreme Programmingdetém de valores fundamentais que sustentam as boas práticas de desenvolvimento de sistema; 
Esse valores são as diretrizes que definem as atitudes da equipe e as principais prioridades da metodologia;
Feedback 
O feedback é importante para qualquer processo de desenvolvimento, principalmente na XP; 
O diferencial da XP está no tempo de execução desse processo, uma vez que possui contato incessante com o cliente esse retorno é quase que imediato;
Comunicação 
É a chave para um desenvolvimento rápido e com a satisfação do cliente; 
A comunicação na XP é realizada com foco na simplicidade, em vez de extensos documentos escritos, é utilizada uma comunicação face a face, sempre que possível;
Simplicidade 
Significa que o software é desenvolvido usando a forma mais simples possível de design e construção, o que permite eliminar os elementos desnecessários na construção de software e facilitar modificações futuras; 
Esse valor segue a regra que diz “você não vai precisar”, uma funcionalidade só é adicionada quando realmente for necessária;
Coragem 
É preciso ter coragem para implementar uma série de inovações no processo de desenvolvimento como: desenvolver software de forma incremental, permitir que o cliente defina prioridades, fazer desenvolvedores trabalhar em par, modelar e documentar apenas quando for necessário;
Princípios ou Práticas da XP 
São as atividades seguidas pela equipe XP durante o processo de desenvolvimento de um sistema;
Envolvimento do Cliente 
No XP a presença do cliente é essencial no dia-a- dia do projeto, pois ele é a pessoa mais apta a sanar dúvidas dos desenvolvedores;
SmallRelease –Pequenas Versões 
É a elaboração de pequenas versões funcionais do sistema e liberação ao cliente;
Integração Contínua 
É a realização da integração de novas funcionalidades, ao sistema, em curtos espaços de tempo, se possível, podem ser realizados até diversas vezes ao dia;
Refactoring 
É a melhoria e padronização de códigos, esta prática tende a alterar todo o código duplicado, ilegível, mal codificado, lento e sem padronização dentro do projeto;
Código Coletivo 
Não existe uma pessoa responsável por uma parte do código, todos os desenvolvedores tem acesso e total liberdade para alterá-lo; 
Essa prática contribui para uma maior revisão do código;
Design Simples 
É importante que o projeto seja desenvolvido da forma mais simples, com códigos simples, que atendam a necessidade e possíveis alterações do cliente;
Metáfora 
Objetivo é facilitar a comunicação dentro do projeto, através de comparações e analogias com um determinado assunto em questão; 
Essa prática traduz as palavras do cliente para uma melhor compreensão dentro do projeto;
Stand upmeeting 
Stand upmeeting ou Reunião em pé, essas reuniões são realizadas dessa forma para que não se perca o foco no assunto abordado e para evitar que as reuniões se alonguem;
Ritmo sustentável 
Para garantir que a equipe esteja sempre concentrada e menos propicia à falhas, o XP abomina a prática de trabalhos exaustivos, que desrespeite os limites físicos de cada integrante da equipe;
Jogo do Planejamento 
É o momento usado para reunir desenvolvedores e cliente para priorizar funcionalidades e assegurar que a equipe esteja trabalhando naquilo que gere o máximo de valor para o cliente;
Programação em Par 
Baseia-se em um código implementado por duas pessoas trabalhando juntas em um único computador;
Desenvolvimento guiado por testes -TDD 
No XP para cada código implementado deve existir um teste automatizado; 
A prática do TDD conta com os testes de unidade e teste de aceitação;
Documentação do Projeto 
Não é uma prática primordial no modelo XP, a Extreme Programmingfoi projetada para realizar comunicação face a face e não por documentação escrita; 
Defende a ideia de menos burocracia e mais conversa eficaz no encontro com a equipe;
Contrato de escopo 
De acordo com Kent Beck, no contrato dos projetos XP, são definidos previamente o tempo, custos, qualidade e um escopo que indica o que será feito, como no desenvolvimento tradicional; 
A diferença do XP está que ele não engessa o escopo em um contrato assinado no início do projeto, mas sim negocia as etapas do projeto a medida que estas evoluam;
Desvantagens da XP 
Membros individuais da equipe podem não ter personalidade adequada para interagir bem com o outros membros da equipe;
Desvantagens da XP 
Representante do cliente acoplado ao projeto; 
Membros experientes dificilmente aceitariam tal tarefa; 
Dificuldade em encontrar um representante; 
Alternativa 
Definir uma especificação de requisitos concisa;
Desvantagens da XP 
Programação em pares 
Pode gerar aborrecimentos (programadores de níveis diferentes), programa sozinho favorece a criatividade; 
Alternativa 
Utilizar programação mútua (um programador garante a qualidade do software do outro e vice-versa);
Desvantagens da XP 
Falta de documentação 
Dificulta o uso e a manutenção do código; 
Muito centrado no código; 
Alternativa 
Automatizar o processo de documentação; 
Ex: Utilizando XML;
Quando não usar XP 
Cultura 
A equipe já está organizada e trabalhando em um modelo tradicional de desenvolvimento; 
Tamanho da equipe 
OXP preza por trabalhar com uma equipe pequena;
Quando não usar XP 
Tecnologia 
Não é aconselhável usar XP quando a tecnologia não permite escrever casos de teste, quando o feedback é demorado e quando não incorpora facilmente as mudanças; 
Cliente 
Para aplicação do XP é imprescindível que o cliente esteja presente e disponível para esclarecimento de dúvidas no desenrolar do projeto;
Conclusões 
Metodologia que requer disciplina; 
Quando uma prática não é bem realizada pode gerar efeito cascata; 
São mais adequados para desenvolvimento de sistemas para pequenas e médias empresas, não sendo tão adequados para sistema de larga escala ou críticos;
Referências bibliográficas 
Sommerville, Ian. Engenharia de Software 8ª ed. Person Education-Brasil 
Beck, Kent. Programação Extrema (XP) . Bookman, 2004 
< http://desenvolvimentoagil.com.br/xp/ >. Acessado em 03 maio 2014. 
< http://pt.slideshare.net/DanielBrando3/extreme-programming-xp-resumo > Acessado em 03 maio 2014. 
< http://www.extremeprogramming.org/ > Acessado em 03 maio 2014. 
< http://www.cin.ufpe.br/~gamr/FAFICA/Desenvolvimento%20de%20sistemas/XP.pdf > Acessado em 03 maio 2014.

Extreme Programming (XP) Metodologia Ágil

  • 1.
    Extreme ProgrammingXPSeminário deEngenharia de SoftwareProf. Luiz Alberto Ferreira GomesAlunos: Fernando Henrique CândidoJaffer dos Santos VeroneziJoão Paulo FernandesPUC-MINAS Campus Poços de Caldas-MG
  • 2.
    O que éExtreme Programming? Metodologia ágil, que visa um rápido desenvolvimento, atende as reais necessidades do cliente e, ainda, permite modificações, á medida que novas necessidades apareçam; Criada por Kent Beck em 1996; Ágil ≠Rápido Ágil = Adaptativo
  • 3.
    Valores do XP O Extreme Programmingdetém de valores fundamentais que sustentam as boas práticas de desenvolvimento de sistema; Esse valores são as diretrizes que definem as atitudes da equipe e as principais prioridades da metodologia;
  • 4.
    Feedback O feedbacké importante para qualquer processo de desenvolvimento, principalmente na XP; O diferencial da XP está no tempo de execução desse processo, uma vez que possui contato incessante com o cliente esse retorno é quase que imediato;
  • 5.
    Comunicação É achave para um desenvolvimento rápido e com a satisfação do cliente; A comunicação na XP é realizada com foco na simplicidade, em vez de extensos documentos escritos, é utilizada uma comunicação face a face, sempre que possível;
  • 6.
    Simplicidade Significa queo software é desenvolvido usando a forma mais simples possível de design e construção, o que permite eliminar os elementos desnecessários na construção de software e facilitar modificações futuras; Esse valor segue a regra que diz “você não vai precisar”, uma funcionalidade só é adicionada quando realmente for necessária;
  • 7.
    Coragem É precisoter coragem para implementar uma série de inovações no processo de desenvolvimento como: desenvolver software de forma incremental, permitir que o cliente defina prioridades, fazer desenvolvedores trabalhar em par, modelar e documentar apenas quando for necessário;
  • 8.
    Princípios ou Práticasda XP São as atividades seguidas pela equipe XP durante o processo de desenvolvimento de um sistema;
  • 9.
    Envolvimento do Cliente No XP a presença do cliente é essencial no dia-a- dia do projeto, pois ele é a pessoa mais apta a sanar dúvidas dos desenvolvedores;
  • 10.
    SmallRelease –Pequenas Versões É a elaboração de pequenas versões funcionais do sistema e liberação ao cliente;
  • 11.
    Integração Contínua Éa realização da integração de novas funcionalidades, ao sistema, em curtos espaços de tempo, se possível, podem ser realizados até diversas vezes ao dia;
  • 12.
    Refactoring É amelhoria e padronização de códigos, esta prática tende a alterar todo o código duplicado, ilegível, mal codificado, lento e sem padronização dentro do projeto;
  • 13.
    Código Coletivo Nãoexiste uma pessoa responsável por uma parte do código, todos os desenvolvedores tem acesso e total liberdade para alterá-lo; Essa prática contribui para uma maior revisão do código;
  • 14.
    Design Simples Éimportante que o projeto seja desenvolvido da forma mais simples, com códigos simples, que atendam a necessidade e possíveis alterações do cliente;
  • 15.
    Metáfora Objetivo éfacilitar a comunicação dentro do projeto, através de comparações e analogias com um determinado assunto em questão; Essa prática traduz as palavras do cliente para uma melhor compreensão dentro do projeto;
  • 16.
    Stand upmeeting Standupmeeting ou Reunião em pé, essas reuniões são realizadas dessa forma para que não se perca o foco no assunto abordado e para evitar que as reuniões se alonguem;
  • 17.
    Ritmo sustentável Paragarantir que a equipe esteja sempre concentrada e menos propicia à falhas, o XP abomina a prática de trabalhos exaustivos, que desrespeite os limites físicos de cada integrante da equipe;
  • 18.
    Jogo do Planejamento É o momento usado para reunir desenvolvedores e cliente para priorizar funcionalidades e assegurar que a equipe esteja trabalhando naquilo que gere o máximo de valor para o cliente;
  • 19.
    Programação em Par Baseia-se em um código implementado por duas pessoas trabalhando juntas em um único computador;
  • 20.
    Desenvolvimento guiado portestes -TDD No XP para cada código implementado deve existir um teste automatizado; A prática do TDD conta com os testes de unidade e teste de aceitação;
  • 21.
    Documentação do Projeto Não é uma prática primordial no modelo XP, a Extreme Programmingfoi projetada para realizar comunicação face a face e não por documentação escrita; Defende a ideia de menos burocracia e mais conversa eficaz no encontro com a equipe;
  • 22.
    Contrato de escopo De acordo com Kent Beck, no contrato dos projetos XP, são definidos previamente o tempo, custos, qualidade e um escopo que indica o que será feito, como no desenvolvimento tradicional; A diferença do XP está que ele não engessa o escopo em um contrato assinado no início do projeto, mas sim negocia as etapas do projeto a medida que estas evoluam;
  • 23.
    Desvantagens da XP Membros individuais da equipe podem não ter personalidade adequada para interagir bem com o outros membros da equipe;
  • 24.
    Desvantagens da XP Representante do cliente acoplado ao projeto; Membros experientes dificilmente aceitariam tal tarefa; Dificuldade em encontrar um representante; Alternativa Definir uma especificação de requisitos concisa;
  • 25.
    Desvantagens da XP Programação em pares Pode gerar aborrecimentos (programadores de níveis diferentes), programa sozinho favorece a criatividade; Alternativa Utilizar programação mútua (um programador garante a qualidade do software do outro e vice-versa);
  • 26.
    Desvantagens da XP Falta de documentação Dificulta o uso e a manutenção do código; Muito centrado no código; Alternativa Automatizar o processo de documentação; Ex: Utilizando XML;
  • 27.
    Quando não usarXP Cultura A equipe já está organizada e trabalhando em um modelo tradicional de desenvolvimento; Tamanho da equipe OXP preza por trabalhar com uma equipe pequena;
  • 28.
    Quando não usarXP Tecnologia Não é aconselhável usar XP quando a tecnologia não permite escrever casos de teste, quando o feedback é demorado e quando não incorpora facilmente as mudanças; Cliente Para aplicação do XP é imprescindível que o cliente esteja presente e disponível para esclarecimento de dúvidas no desenrolar do projeto;
  • 29.
    Conclusões Metodologia querequer disciplina; Quando uma prática não é bem realizada pode gerar efeito cascata; São mais adequados para desenvolvimento de sistemas para pequenas e médias empresas, não sendo tão adequados para sistema de larga escala ou críticos;
  • 30.
    Referências bibliográficas Sommerville,Ian. Engenharia de Software 8ª ed. Person Education-Brasil Beck, Kent. Programação Extrema (XP) . Bookman, 2004 < http://desenvolvimentoagil.com.br/xp/ >. Acessado em 03 maio 2014. < http://pt.slideshare.net/DanielBrando3/extreme-programming-xp-resumo > Acessado em 03 maio 2014. < http://www.extremeprogramming.org/ > Acessado em 03 maio 2014. < http://www.cin.ufpe.br/~gamr/FAFICA/Desenvolvimento%20de%20sistemas/XP.pdf > Acessado em 03 maio 2014.