Erick (discussão | contribs)
Etiqueta: visualeditor
Victor CM (discussão | contribs)
Sem resumo de edição
 
(25 revisões intermediárias por 2 usuários não estão sendo mostradas)
Linha 1: Linha 1:
= eXtreme Programming =
Extreme Programming (XP) é um Método Ágil de programação com o objetivo de desenvolver softwares de maneira prática, flexível, científica e eficiente. Criada nos Estados Unidos na década de 90.<br>
== Conceito de Métodos Ágeis ==
== Conceito de Métodos Ágeis ==
O Desenvolvimento Ágil de Softwares, ou Métodos Ágeis, é um método de trabalhar de forma eficiente e flexível, em ambientes exigentes onde mudanças costumam ser constantes e, a interação entre os integrantes do projeto é fundamental.<br>
*Os métodos ágeis são uma alternativa à gestão tradicional de projetos, eles nasceram nos braços do desenvolvimento de software, mas hoje podem ser aplicados a qualquer tipo de projeto (inclusive os que não se remetem ao software). Os métodos ágeis vem ajudando muitas equipes a encarar as imprevisibilidades dentro de um projeto através de entregas incrementais e ciclos iterativos. As metodologias ágeis passaram a ser uma alternativa aos métodos tradicionais, também conhecidos como métodos pesados ou clássicos.
*Os métodos ágeis buscam promover um processo de gerenciamento de projetos que incentiva a inspeção e adaptação frequente. É uma filosofia que acaba por incentivar o maior trabalho em equipe, a auto-organização, a comunicação frequente, o foco no cliente e a entrega de valor. Basicamente, os métodos ágeis são um conjunto de práticas eficazes que se destinam a permitir a entrega rápida e de alta qualidade do produto, tendo uma abordagem de negócios que alinha o desenvolvimento do projeto com as necessidades do cliente e os objetivos da empresa.


== O que é xTreme Programming? ==
== O que é Extreme Programming? ==
É uma disciplina de programação, com o objetivo de desenvolver softwares bem amplos, com definições vagas, que estão constantemente sendo alterados. Um método planejado para a realização de softwares que constantemente passarão por alterações no processo de sua construção.
*Extreme Programming, ou XP, é um processo de desenvolvimento de software voltado para:
**Projetos cujos requisitos são vagos e mudam com freqüência;
**Desenvolvimento de sistemas orientados a objeto;
**Equipes pequenas, preferencialmente até 12 desenvolvedores
**Desenvolvimento incremental (ou iterativo), onde o sistema começa a ser implementado logo no início do projeto e vai ganhando novas funcionalidades ao longo do tempo.
*Existe uma categoria de processos de desenvolvimento conhecida como Processos Ágeis de Desenvolvimento, dentro da qual o XP e outros processos se encaixam. Eles compartilham a premissa de que o cliente aprende sobre suas necessidades, na medida em que é capaz de manipular o sistema que está sendo produzido. Com base no feedback do sistema ele re-avalia as suas necessidades e prioridades, gerando mudanças que devem ser incorporadas ao software. O aprendizado é importante, porque permite que o cliente direcione o desenvolvimento de modo que a equipe produza sempre aquilo que tem o maior valor para o seu negócio.
*O XP é um processo de desenvolvimento que busca assegurar que o cliente receba o máximo de valor de cada dia de trabalho da equipe de desenvolvimento. Ele é organizado em torno de um conjunto de valores e práticas que atuam de forma harmônica e coesa para assegurar que o cliente sempre receba um alto retorno do investimento em software.


Uma característica da extreme programming se dá por sua prioridade se focar no escopo do projeto, enfatizando as funcionalidades mais valiosas. Portanto um projeto com certa flexibilidade, concebe a equipe de programação a regalia de não necessitar de um grande contingente de programadores.<br>


== Os 4 valroes de XP ==
== Os 4 valroes de XP ==
* Comunicação
*O XP se baseia em 4 valores fundamentais:
* Simplicidade
**'''Feedback''': O feedback é o mecanismo fundamental que permite que o cliente conduza o desenvolvimento diariamente e garanta que a equipe direcione as suas atenções para aquilo que irá gerar mais valor.
* Feedback
**'''Comunicação''': A comunicação entre o cliente e a equipe permite que todos os detalhes do projeto sejam tratados com a atenção e a agilidade que merecem.
* Coragem
**'''Simplicidade''':  Também é necessário que a equipe compreenda e utilize o valor da simplicidade, que nos ensina a implementar apenas aquilo que é suficiente para atender a cada necessidade do cliente. Ou seja, ao codificar uma funcionalidade devemos nos preocupar apenas com os problemas de hoje e deixar os problemas do futuro para o futuro. Não devemos tentar prever o futuro, pois raramente acertamos nas previsões.
* Respeito
**'''Coragem''': Dado que o sistema é desenvolvido de forma incremental, a equipe está continuamente fazendo a manutenção do software e criando novas funcionalidades. Em muitos casos, ela irá alterar algo que vinha funcionando corretamente, o que leva ao risco de gerar falhas no sistema. Por esta razão, a equipe precisa ser corajosa e acreditar que, utilizando as práticas e valores do XP, será capaz de fazer o software evoluir com segurança e agilidade.
<br>
 
*Portanto todos esses valores são muito importantes, pois um complementa o outro. Para receber um feedback é necessária a comunicação e para que tudo corra bem os desenvolvedores devem trabalhar com simplicidade fazendo com que o cliente tenha logo um resultado e possa dar novamente um feedback. E por fim o desenvolvedor deve ter a coragem na hora de corrigir falhas para que o produto final esteja satisfatório ao cliente.
 
== As práticas de XP ==
*O XP se baseia nas seguintes práticas:
**'''Cliente Presente''': O XP trabalha com a premissa de que é essencial que o cliente participe ativamente do processo de desenvolvimento, a sua presença viabiliza a simplicidade do processo em diversos aspectos, especialmente na comunicação.
**'''Jogo do Planejamento''': O XP utiliza diversas formas de planejamento para assegurar que a equipe esteja sempre trabalhando naquilo que é o mais importante para o cliente.Por esta razão, todo projeto em XP é dividido em releases e iterações, de modo que cliente e equipe tenham diversas oportunidades de se reunir para revisar o planejamento.
**'''Stand Up Meeting''': Trata-se de uma reunião rápida que recebe o nome de stand up meeting, que em inglês significa reunião em pé, onde a equipe de desenvolvimento se reúne a cada manhã para avaliar o trabalho que foi executado no dia anterior e priorizar aquilo que será implementado no dia que se inicia.
**'''Programação em Par''': diante de cada computador, existem sempre dois desenvolvedores que trabalham juntos para produzir o mesmo código. Isso permite que o código seja revisado permanentemente, enquanto é construído.
**'''Desenvolvimento Guiado pelos Testes''': Os desenvolvedores escrevem testes para cada funcionalidade antes de codificá-las. Fazendo isso, eles aprofundam o entendimento das necessidades do cliente (o que aprimora a análise), se preocupam com as interfaces externas dos métodos e classes antes de codificá-los (o que melhora o design), sabem até onde codificar cada funcionalidade (o que ajuda a manter o sistema simples) e passam a contar com uma massa de testes que pode ser usada a qualquer momento para validar todo o sistema.
**'''Refactoring''': O refactoring é o ato de alterar um código sem afetar a funcionalidade que ele implementa. É utilizado para tornar o software mais simples de ser manipulado.
**'''Código Coletivo''': No XP o sistema não é segmentado em partes, de modo que cada desenvolvedor fique responsável por uma delas. Os desenvolvedores têm acesso a todas as partes do código e podem alterar aquilo que julgarem importante sem a necessidade de pedir autorização de outra pessoa, pois o código é coletivo.
**'''Código Padronizado''': Para que todos os desenvolvedores possam manipular qualquer parte do software de forma mais rápida, a equipe estabelece padrões de codificação, que servem também para tornar o sistema mais homogêneo e permitir que qualquer manutenção futura seja efetuada mais rapidamente.
**'''Design Simples''': Para que o cliente possa obter feedback logo, a equipe precisa ser ágil no desenvolvimento, o que a leva a optar pela simplicidade do design.
**'''Metáfora''': Para facilitar a criação de um design simples, a equipe de desenvolvimento utiliza metáforas, já que elas têm o poder de transmitir idéias complexas de forma simples, através de uma linguagem comum que é estabelecida entre a equipe de desenvolvimento e o cliente.
**'''Ritmo Sustentável''': o XP recomenda que os desenvolvedores trabalhem apenas oito horas por dia e evitem fazer horas-extras, visto que é essencial estar descansado a cada manhã, de modo a utilizar a mente na sua plenitude ao longo do dia.
**'''Integração Contínua''':  leva os pares a integrarem seus códigos com o restante do sistema diversas vezes ao dia. Cada vez que um par faz isso, ele executa todos os testes para assegurar que a integração tenha ocorrido de forma satisfatória.
**'''Releases Curtos''':  A equipe produz um conjunto reduzido de funcionalidades e coloca em produção rapidamente de modo que o cliente já possa utilizar o software no dia-a-dia e se beneficiar dele. Durante todo o projeto, a equipe colocará o sistema em produção diversas vezes, cada vez incorporando mais funcionalidades e gerando mais valor.


== AS práticas de XP ==
* Cliente presente
* Jogo do Planejamento
* Reunião em Pé
* Programação em Par
* Desenvolvimento Guiado por Testes
* Refatoração
* Código Coletivo
* Código Padronizado
* Design Simples
* Metáfora
* Ritimo Sustentável
* Integração Contínua
* Releases Curtos<br>


== Vantagens ==
== Vantagens ==
As vantagens de XP é um
*O cliente está sempre por perto, resultando em um produto final muito próximo daquilo que ele o deseja;
trabalho produtivo, com flexibilidade para novas perspectivas. Um
*A programação em dupla reduz o número de erros e a aumenta a legibilidade do código, o que facilita nas futuras manutenções;
desenvolvimento prático que se faz no essencial, se assegurando de não perder tempo
*Erros são encontrados em um estágio cedo, pois são realizados vários testes de diversas formas;
desenvolvendo funções que podem não ser aproveitadas.<br>
*Organização;
 


== Referências bilbiográficas ==
'''<nowiki>http://www.desenvolvimentoagil.com.br/xp/</nowiki>'''


'''<nowiki>http://www.devmedia.com.br/introducao-ao-extreme-programming-xp/29249</nowiki>'''


'''<nowiki>http://www.martinsfontespaulista.com.br/</nowiki>'''<br>
*'''Referências Bibliográficas'''
**https://www.culturaagil.com.br/o-que-sao-metodos-ageis/
**https://www.culturaagil.com.br/manifesto-agil-como-tudo-comecou/
**https://www.culturaagil.com.br/iterativo-e-incremental-suas-definicoes/
**http://www.martinsfontespaulista.com.br/anexos/produtos/capitulos/143120.pdf
**http://www.inf.ufpr.br/lmperes/slides/Extreme_Programming.pdf

Edição atual tal como às 19h59min de 6 de junho de 2017

Conceito de Métodos Ágeis

  • Os métodos ágeis são uma alternativa à gestão tradicional de projetos, eles nasceram nos braços do desenvolvimento de software, mas hoje podem ser aplicados a qualquer tipo de projeto (inclusive os que não se remetem ao software). Os métodos ágeis vem ajudando muitas equipes a encarar as imprevisibilidades dentro de um projeto através de entregas incrementais e ciclos iterativos. As metodologias ágeis passaram a ser uma alternativa aos métodos tradicionais, também conhecidos como métodos pesados ou clássicos.
  • Os métodos ágeis buscam promover um processo de gerenciamento de projetos que incentiva a inspeção e adaptação frequente. É uma filosofia que acaba por incentivar o maior trabalho em equipe, a auto-organização, a comunicação frequente, o foco no cliente e a entrega de valor. Basicamente, os métodos ágeis são um conjunto de práticas eficazes que se destinam a permitir a entrega rápida e de alta qualidade do produto, tendo uma abordagem de negócios que alinha o desenvolvimento do projeto com as necessidades do cliente e os objetivos da empresa.

O que é Extreme Programming?

  • Extreme Programming, ou XP, é um processo de desenvolvimento de software voltado para:
    • Projetos cujos requisitos são vagos e mudam com freqüência;
    • Desenvolvimento de sistemas orientados a objeto;
    • Equipes pequenas, preferencialmente até 12 desenvolvedores
    • Desenvolvimento incremental (ou iterativo), onde o sistema começa a ser implementado logo no início do projeto e vai ganhando novas funcionalidades ao longo do tempo.
  • Existe uma categoria de processos de desenvolvimento conhecida como Processos Ágeis de Desenvolvimento, dentro da qual o XP e outros processos se encaixam. Eles compartilham a premissa de que o cliente aprende sobre suas necessidades, na medida em que é capaz de manipular o sistema que está sendo produzido. Com base no feedback do sistema ele re-avalia as suas necessidades e prioridades, gerando mudanças que devem ser incorporadas ao software. O aprendizado é importante, porque permite que o cliente direcione o desenvolvimento de modo que a equipe produza sempre aquilo que tem o maior valor para o seu negócio.
  • O XP é um processo de desenvolvimento que busca assegurar que o cliente receba o máximo de valor de cada dia de trabalho da equipe de desenvolvimento. Ele é organizado em torno de um conjunto de valores e práticas que atuam de forma harmônica e coesa para assegurar que o cliente sempre receba um alto retorno do investimento em software.


Os 4 valroes de XP

  • O XP se baseia em 4 valores fundamentais:
    • Feedback: O feedback é o mecanismo fundamental que permite que o cliente conduza o desenvolvimento diariamente e garanta que a equipe direcione as suas atenções para aquilo que irá gerar mais valor.
    • Comunicação: A comunicação entre o cliente e a equipe permite que todos os detalhes do projeto sejam tratados com a atenção e a agilidade que merecem.
    • Simplicidade: Também é necessário que a equipe compreenda e utilize o valor da simplicidade, que nos ensina a implementar apenas aquilo que é suficiente para atender a cada necessidade do cliente. Ou seja, ao codificar uma funcionalidade devemos nos preocupar apenas com os problemas de hoje e deixar os problemas do futuro para o futuro. Não devemos tentar prever o futuro, pois raramente acertamos nas previsões.
    • Coragem: Dado que o sistema é desenvolvido de forma incremental, a equipe está continuamente fazendo a manutenção do software e criando novas funcionalidades. Em muitos casos, ela irá alterar algo que vinha funcionando corretamente, o que leva ao risco de gerar falhas no sistema. Por esta razão, a equipe precisa ser corajosa e acreditar que, utilizando as práticas e valores do XP, será capaz de fazer o software evoluir com segurança e agilidade.
  • Portanto todos esses valores são muito importantes, pois um complementa o outro. Para receber um feedback é necessária a comunicação e para que tudo corra bem os desenvolvedores devem trabalhar com simplicidade fazendo com que o cliente tenha logo um resultado e possa dar novamente um feedback. E por fim o desenvolvedor deve ter a coragem na hora de corrigir falhas para que o produto final esteja satisfatório ao cliente.

As práticas de XP

  • O XP se baseia nas seguintes práticas:
    • Cliente Presente: O XP trabalha com a premissa de que é essencial que o cliente participe ativamente do processo de desenvolvimento, a sua presença viabiliza a simplicidade do processo em diversos aspectos, especialmente na comunicação.
    • Jogo do Planejamento: O XP utiliza diversas formas de planejamento para assegurar que a equipe esteja sempre trabalhando naquilo que é o mais importante para o cliente.Por esta razão, todo projeto em XP é dividido em releases e iterações, de modo que cliente e equipe tenham diversas oportunidades de se reunir para revisar o planejamento.
    • Stand Up Meeting: Trata-se de uma reunião rápida que recebe o nome de stand up meeting, que em inglês significa reunião em pé, onde a equipe de desenvolvimento se reúne a cada manhã para avaliar o trabalho que foi executado no dia anterior e priorizar aquilo que será implementado no dia que se inicia.
    • Programação em Par: diante de cada computador, existem sempre dois desenvolvedores que trabalham juntos para produzir o mesmo código. Isso permite que o código seja revisado permanentemente, enquanto é construído.
    • Desenvolvimento Guiado pelos Testes: Os desenvolvedores escrevem testes para cada funcionalidade antes de codificá-las. Fazendo isso, eles aprofundam o entendimento das necessidades do cliente (o que aprimora a análise), se preocupam com as interfaces externas dos métodos e classes antes de codificá-los (o que melhora o design), sabem até onde codificar cada funcionalidade (o que ajuda a manter o sistema simples) e passam a contar com uma massa de testes que pode ser usada a qualquer momento para validar todo o sistema.
    • Refactoring: O refactoring é o ato de alterar um código sem afetar a funcionalidade que ele implementa. É utilizado para tornar o software mais simples de ser manipulado.
    • Código Coletivo: No XP o sistema não é segmentado em partes, de modo que cada desenvolvedor fique responsável por uma delas. Os desenvolvedores têm acesso a todas as partes do código e podem alterar aquilo que julgarem importante sem a necessidade de pedir autorização de outra pessoa, pois o código é coletivo.
    • Código Padronizado: Para que todos os desenvolvedores possam manipular qualquer parte do software de forma mais rápida, a equipe estabelece padrões de codificação, que servem também para tornar o sistema mais homogêneo e permitir que qualquer manutenção futura seja efetuada mais rapidamente.
    • Design Simples: Para que o cliente possa obter feedback logo, a equipe precisa ser ágil no desenvolvimento, o que a leva a optar pela simplicidade do design.
    • Metáfora: Para facilitar a criação de um design simples, a equipe de desenvolvimento utiliza metáforas, já que elas têm o poder de transmitir idéias complexas de forma simples, através de uma linguagem comum que é estabelecida entre a equipe de desenvolvimento e o cliente.
    • Ritmo Sustentável: o XP recomenda que os desenvolvedores trabalhem apenas oito horas por dia e evitem fazer horas-extras, visto que é essencial estar descansado a cada manhã, de modo a utilizar a mente na sua plenitude ao longo do dia.
    • Integração Contínua: leva os pares a integrarem seus códigos com o restante do sistema diversas vezes ao dia. Cada vez que um par faz isso, ele executa todos os testes para assegurar que a integração tenha ocorrido de forma satisfatória.
    • Releases Curtos: A equipe produz um conjunto reduzido de funcionalidades e coloca em produção rapidamente de modo que o cliente já possa utilizar o software no dia-a-dia e se beneficiar dele. Durante todo o projeto, a equipe colocará o sistema em produção diversas vezes, cada vez incorporando mais funcionalidades e gerando mais valor.


Vantagens

  • O cliente está sempre por perto, resultando em um produto final muito próximo daquilo que ele o deseja;
  • A programação em dupla reduz o número de erros e a aumenta a legibilidade do código, o que facilita nas futuras manutenções;
  • Erros são encontrados em um estágio cedo, pois são realizados vários testes de diversas formas;
  • Organização;