Sem resumo de edição |
|||
| (10 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
| Linha 1: | Linha 1: | ||
= Conceito de Métodos Ágeis = | == 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. | |||
== O que é | == 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 | **'''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. | ||
ser | **'''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. | ||
ao longo do | **'''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; | |||
*'''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;
- 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