INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE RONDÔNIA – IFROPROFESSOR: DANIEL BRANDÃOProgramação Ágil – Extreme ...
2INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE RONDÔNIA – IFROPROFESSOR: DANIEL BRANDÃOSumárioIntrodução ...........
3INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE RONDÔNIA – IFROPROFESSOR: DANIEL BRANDÃOIntroduçãoA constante nece...
4INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE RONDÔNIA – IFROPROFESSOR: DANIEL BRANDÃO1. Programação ÁgilCom a e...
5INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE RONDÔNIA – IFROPROFESSOR: DANIEL BRANDÃO1.2 – MetodologiaMesmo com...
6INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE RONDÔNIA – IFROPROFESSOR: DANIEL BRANDÃOdesenvolvimento, tanto pel...
7INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE RONDÔNIA – IFROPROFESSOR: DANIEL BRANDÃO• Planejamento (Jogo de Pl...
8INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE RONDÔNIA – IFROPROFESSOR: DANIEL BRANDÃO• Metáfora (Metaphor): Pro...
9INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE RONDÔNIA – IFROPROFESSOR: DANIEL BRANDÃO3. Ciclo de Vida
10INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE RONDÔNIA – IFROPROFESSOR: DANIEL BRANDÃOConclusãoEstando ciente d...
11INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE RONDÔNIA – IFROPROFESSOR: DANIEL BRANDÃOReferências:KUHN, Giovane...
Upcoming SlideShare
Loading in …5
×

Apostila xp programação ágil

855 views
765 views

Published on

Breve apostila sobre XP - Extreme Proggramming projetada para microaula sobre o assunto.

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
855
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Apostila xp programação ágil

  1. 1. INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE RONDÔNIA – IFROPROFESSOR: DANIEL BRANDÃOProgramação Ágil – Extreme Programming (XP)
  2. 2. 2INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE RONDÔNIA – IFROPROFESSOR: DANIEL BRANDÃOSumárioIntrodução .................................................................................................................................... 31. Programação Ágil – Extreme Programming [XP]................................................................. 41.1 Criação .......................................................................................................................... 41.2 Metodologia ................................................................................................................. 51.3 Princípios básicos.......................................................................................................... 62. Práticas de programação...................................................................................................... 63. Ciclo de Vida ......................................................................................................................... 9Conclusão.................................................................................................................................... 10Referências: ................................................................................................................................ 11
  3. 3. 3INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE RONDÔNIA – IFROPROFESSOR: DANIEL BRANDÃOIntroduçãoA constante necessidade de se obter resultados favoráveis na economia mundial temobrigado a indústria a reunir esforços para dinamizar o seu processo produtivo. Aevolução de softwares de computadores precisa superar metas para poder atingir oobjetivo deste mercado globalizado. Muito capital tem sido investido para estaevolução, o processo de produção de desenvolvimento de software normalmenteenvolve riscos, como o atraso no cronograma, mudanças nos requisitos, saída de umimportante membro da equipe de desenvolvimento, alta taxa de defeitos, sistemastornando-se obsoletos, projetos cancelados, devido à concorrência, dentre outros.Indo de encontro a este cenário que surgiu o Extreme Programming – umametodologia ágil, que visa um rápido desenvolvimento, atende às reais necessidadesdo cliente e, ainda, permite modificações, à medida que novas necessidadesapareçam. A seguir, iremos abordar noções de programação ágil, através de métodosque simplificam e regulamentam o desenvolvimento de softwares para computadores.Nosso foco será o Extreme Programming (XP), que se trata de uma metodologia dedesenvolvimento de software que se destina a melhorar a qualidade do software e acapacidade de resposta à evolução das necessidades dos clientes. Como um tipo dedesenvolvimento ágil de software, defende "releases" frequentes em ciclos curtos dedesenvolvimento, que se destina a melhorar a produtividade e introduzir pontos deverificação onde novos requisitos do cliente podem ser adotados.
  4. 4. 4INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE RONDÔNIA – IFROPROFESSOR: DANIEL BRANDÃO1. Programação ÁgilCom a evolução da tecnologia e a transformação da engenharia de software, nasce umgrande problema nos projetos de sistemas: as coisas mudam. E com essa mudança,viu-se a necessidade de um processo que evolua junto com os requisitos do sistema, edesta ideia nasceram os Métodos Ágeis.Muitos acham que ser ÁGIL é ser rápido, mas a busca por uma solução em softwaresnão busca necessariamente rapidez, e sim um sistema ADAPTATIVO, que permitamudanças ao longo do processo de desenvolvimento. Como todo método,encontramos vantagens e desvantagens em seu processo. Os adeptos a este tipo deprogramação apontam como vantagem o fato de não ter que testar tanto umprograma antes de disponibiliza-lo para utilização do usuário final. Com XP, um projetode desenvolvimento de aplicativo é realizado em pequenos incrementos. Cada etapa,abordada separadamente em um período de tempo muito curto, complementa oaplicativo e representa uma parte completa da funcionalidade. Você podeimplementar o aplicativo parcial, que deverá permitir que as pessoas executem algumnível de trabalho, mesmo que o aplicativo ainda não faça tudo que você pretendepara ele no fim.Críticos observaram várias desvantagens potenciais, incluindo problemas comrequisitos instáveis, sem compromissos documentados de conflitos de usuários, e afalta de uma especificação de projeto total ou documentação.1.1 - CriaçãoO Extreme Programming é um modelo de desenvolvimento de software, criado entre1996-1997, por Kent Bech, no Departamento de Computação da montadora de carrosChrysler. Ele possui muitas diferenças em relação a outros modelos, podendo seraplicado a projetos de alto risco e com requisitos dinâmicos. O XP é um conjunto bemdefinido de regras, que vem ganhando um grande número de adeptos por oferecercondições para que os desenvolvedores respondam com eficiência a mudanças noprojeto, mesmo nos estágios finais do ciclo de vida do processo, devido a quatro lemasadotados por seus seguidores, que correspondem a cinco valores a partir das quais osprojetos podem ser melhorados. São eles: Comunicação, Simplicidade, FeedBack,Coragem e Respeito.
  5. 5. 5INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE RONDÔNIA – IFROPROFESSOR: DANIEL BRANDÃO1.2 – MetodologiaMesmo com todos seus prós, o XP não deve ser aplicado a qualquer tipo de projeto. Ogrupo de desenvolvedores deve formar uma equipe de 2 a 10 integrantes, que devemestar por dentro de todas as fases do desenvolvimento. É necessário realizar váriostestes, às vezes, alterar o projeto em decorrência destes. A equipe tem de ser bastanteinteressada e pró-ativa, para assegurar a alta produtividade, e o cliente deve estarsempre disponível para tirar dúvidas e tomar decisões em relação ao projeto.Seguindo os requisitos básicos, o XP poderá trazer inúmeros benefícios ao mercado, deforma que o processo de desenvolvimento se torne mais ágil e flexível. Um dessesbenefícios é a agilidade no Planejamento (Planning Games) de não definir umaespecificação completa e formal dos requisitos, ao contrário das metodologiastradicionais. Outro é a produção de sistemas simples que atendam aos atuaisrequisitos, não tentando antecipar o futuro e permitindo atualizações frequentes emciclos bastante curtos. Dentre asvariáveis de controle em projetos(Custo, Tempo, Escopo eQualidade) há um foco explicitoem escopo. Para isto recomenda-se a priorização defuncionalidades que representammaior valor possível para onegócio. Desta forma, caso sejanecessário a diminuição do escopo, as funcionalidades menos valiosos serão adiadasou canceladas do projeto.A comunicação com o cliente, no XP, mostra-se mais intensa que nos métodostradicionais, devendo o cliente estar sempre disponível para tirar as dúvidas, reverrequisitos e atribuir prioridades, utilizando-se de sistemas de nomes, em vez de termostécnicos para facilitar a comunicação. Nesse jogo, todos devem ter seus papéis bemdefinidos. O código deve estar padronizado, para que todos na equipe possamentender o que está sendo escrito e possa ser validado durante todo o
  6. 6. 6INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE RONDÔNIA – IFROPROFESSOR: DANIEL BRANDÃOdesenvolvimento, tanto pelos desenvolvedores quanto pelos clientes, a fim de sesaber se os requisitos estão ou não sendo atendidos.1.3 – Princípios básicosCom o modelo XP sendo utilizado amplamente no mercado, cabe às universidades atarefa de propagar este conhecimento entre os envolvidos. A inclusão de metodologiasde desenvolvimento ágil nos currículos de referência das universidades é de grandevalia para a indústria, que busca maior produtividade com a utilização do XP, mas queesbarra na falta de desenvolvedores qualificados para aplicar tais metodologias.E para que isto se torne realidade, além de abraçar a causa, nossas escolas de nívelsuperior precisam ensinar desde já os conceitos elementares da Programação Extremae Ágil. Veremos a seguir os principais conceitos da XP:- Feedback rápido: Quanto mais demorado o retorno, menor o aprendizado produzidopor ele.- Simplicidade assumida: Desenvolver a solução mais simples que possa funcionar.Não construir complexidade desnecessária.- Mudança incremental: Grandes mudanças tendem a não funcionar: os problemassão normalmente resolvidos com uma série de pequenas mudanças naquilo que fazdiferença.- Aceitar mudanças: A mudança é inevitável. Ao invés de combater a mudança, aceita-la como normal e saudável para o projeto.- Trabalho de qualidade: Se as pessoas que estão no projeto não gostam da qualidadedo trabalho que estão fazendo, a tendência do projeto e fracassar.2. – Práticas de Programação ExtremaEm suma, o projeto deve seguir passos bem definidos para não haver perda denenhum principio elementar, seja tempo, custo, desgaste da equipe ou a perda totaldo projeto. Para seguir a linha de forma cronológica, deve-se adotar as seguintespráticas:
  7. 7. 7INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE RONDÔNIA – IFROPROFESSOR: DANIEL BRANDÃO• Planejamento (Jogo de Planejamento - Planning Game): O desenvolvimento é feito emiterações semanais. No início da semana, desenvolvedores e cliente reúnem-se parapriorizar as funcionalidades. Essa reunião recebe o nome de Jogo do Planejamento. Nela,o cliente identifica prioridades e os desenvolvedores as estimam. O cliente é essencialneste processo e assim ele fica sabendo o que está acontecendo e o que vai acontecer noprojeto. Como o escopo é reavaliado semanalmente, o projeto é regido por um contrato deescopo negociável, que difere significativamente das formas tradicionais de contratação deprojetos de software. Ao final de cada semana, o cliente recebe novas funcionalidades,completamente testadas e prontas para serem postas em produção.• Fases pequenas (Small Releases): A liberação de pequenas versões funcionais do projetoauxilia muito no processo de aceitação por parte do cliente, que já pode testar uma partedo sistema que está comprando. As versões chegam a ser ainda menores que asproduzidas por outras metodologias incrementais, como o RUP.• Testes de Aceitação (Customer Tests): São testes construídos pelo cliente e conjunto deanalistas e testadores, para aceitar um determinado requisito do sistema.• Reuniões em pé (Stand-up Meeting): Reuniões em pé para não se perder o foco nosassuntos, produzindo reuniões rápidas, apenas abordando tarefas realizadas e tarefas arealizar pela equipe.• Padronização do Codigo (Coding Standards): A equipe de desenvolvimento precisaestabelecer regras para programar e todos devem seguir estas regras. Desta formaparecerá que todo o código fonte foi editado pela mesma pessoa, mesmo quando a equipepossui 10 ou 100 membros;• Desenvolvimento Orientado a Testes (Test Driven Development): Primeiro crie os testesunitários (unit tests) e depois crie o código para que os testes funcionem. Esta abordagemé complexa no início, pois vai contra o processo de desenvolvimento de muitos anos. Sóque os testes unitários são essenciais para que a qualidade do projeto seja mantida;
  8. 8. 8INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE RONDÔNIA – IFROPROFESSOR: DANIEL BRANDÃO• Metáfora (Metaphor): Procura facilitar a comunicação com o cliente, entendendo arealidade dele. O conceito de rápido para um cliente de um sistema jurídico é diferentepara um programador experiente em controlar comunicação em sistemas em tempo real,como controle de tráfego aéreo. É preciso traduzir as palavras do cliente para o significadoque ele espera dentro do projeto.• Design Simples (Simple Design): Simplicidade é um princípio da XP. Projeto simplessignifica dizer que caso o cliente tenha pedido que na primeira versão apenas o usuário"teste" possa entrar no sistema com a senha "123" e assim ter acesso a todo o sistema,você vai fazer o código exato para que esta funcionalidade seja implementada, sem sepreocupar com sistemas de autenticação e restrições de acesso. Um erro comum aoadotar essa prática é a confusão por parte dos programadores de código simples ecódigo fácil. Nem sempre o código mais fácil de ser desenvolvido levará a solução maissimples por parte de projeto. Esse entendimento é fundamental para o bom andamento doXP. Código fácil deve ser identificado e substituído por código simples.• Time Coeso (Whole Team): A equipe de desenvolvimento é formada por pessoasengajadas e de forma multidisciplinar (no sentido de incluir pessoas com cada uma dashabilidades necessárias para o projeto).• Semana de 40 horas (Sustainable Pace): Trabalhar com qualidade, buscando ter ritmo detrabalho saudável (40 horas/semana, 8 horas/dia), sem horas extras. Horas extras sãopermitidas quando trouxerem produtividade para a execução do projeto. Outra prática quese verifica neste processo é a prática de trabalho energizado, onde se busca trabalhomotivado sempre. Para isto o ambiente de trabalho e a motivação da equipe devem estarsempre em harmonia.• Propriedade Coletiva (Collective Ownership): O código fonte não tem dono e ninguémprecisa solicitar permissão para poder modificar o mesmo. O objetivo com isto é fazer aequipe conhecer todas as partes do sistema.• Programação Pareada (Pair Programming): é a programação em par/dupla numúnico computador. Geralmente a dupla é formada por um iniciante na linguagem e outrapessoa funcionando como um instrutor. Como é apenas um computador, o novato é quefica à frente fazendo a codificação, e o instrutor acompanha ajudando a desenvolver suashabilidades. Desta forma o programa sempre é revisto por duas pessoas, evitando ediminuindo assim a possibilidade de defeitos. Com isto busca-se sempre a evolução daequipe, melhorando a qualidade do código fonte gerado;• Refatoração (Refactoring): É um processo que permite a melhoria continua daprogramação, com o mínimo de introdução de erros e mantendo a compatibilidade com ocódigo já existente. Refabricar melhora a clareza (leitura) do código, divide-o em módulosmais coesos e de maior reaproveitamento, evitando a duplicação de código-fonte;• Integração Contínua (Continuous Integration): Sempre que produzir uma novafuncionalidade, nunca esperar uma semana para integrar à versão atual do sistema. Isto sóaumenta a possibilidade de conflitos e a possibilidade de erros no código fonte. Integrar deforma contínua permite saber o status real da programação.
  9. 9. 9INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE RONDÔNIA – IFROPROFESSOR: DANIEL BRANDÃO3. Ciclo de Vida
  10. 10. 10INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE RONDÔNIA – IFROPROFESSOR: DANIEL BRANDÃOConclusãoEstando ciente de que este tema tratado é amplo, pode-se concluir que a inclusão doExtreme Programming no dia a dia do desenvolvimento de software enriquece acomunidade de programação, independente do segmento das empresas nos quais osprofissionais desempenham suas atividades, garantindo a evolução dos negócios edinamismo na economia atual. Constatamos também que o que garante o sucesso deum projeto não é somente a adoção de uma metodologia comprovadamente eficaz, aadaptação ou a mesclagem de várias delas, mas sim a incorporação integral nas rotinasde desenvolvimento por parte da equipe e a crença de que tais princípios, valores epráticas terão o resultado esperado no final do projeto.
  11. 11. 11INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE RONDÔNIA – IFROPROFESSOR: DANIEL BRANDÃOReferências:KUHN, Giovane Roslindo; PAMPLONA, Vitor Fernando. Apresentando XP. Encante seusclientes com Extreme Programming.BECK, K. – Extreme Programming Explained: enbrance change. Boston : AddisonWesley /Longman, 1999.TELES, Vinicius Manhães. UM ESTUDO DE CASO DA ADOÇÃO DAS PRÁTICAS E VALORESDO EXTREME PROGRAMMING. (Dissertação de Mestrado). Disponível em:http://www.improveit.com.br/xp/dissertacaoXP.pdfSANTOS, Rildo. Engenharia de Software Ágil. www.extremeprogramming.org

×