Extreme Programming. Manifesto do Desenvolvimento Ágil. www.agilealliance.org Aplicar os ideais do desenvolvimento ágil ao nosso processo particular poderia nos ajudar a ser mais ágeis, mesmo que não pudéssemos adotar XP. Indivíduos e interações mais que processos e ferramentas.
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation
Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement.Téléchargez la présentation en cliquant sur ce lien.Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.
Manifesto do Desenvolvimento Ágil www.agilealliance.org Aplicar os ideais do desenvolvimento ágil ao nosso processo particular poderia nos ajudar a ser mais ágeis, mesmo que não pudéssemos adotar XP. Indivíduos e interaçõesmais que processos e ferramentas. Trabalhar no softwaremais que documentação abrangente. Colaboração do clientemais que negociação contratual. Responder às mudançasmais que seguir um plano.
O que é XP? • Processo de desenvolvimento de software • Projetos com requisitos muito voláteis • Equipes pequenas (até ~10 pessoas) • Desenvolvimento incremental
Premissas do desenvolvimento • Cliente é capaz de especificar um software antes de iniciar o desenvolvimento • Equipe de desenvolvimento é capaz de quantificar o esforço • Equipe é capaz de criar o software imaginado pelo cliente • Cliente ficará feliz
Resumo • Divisão nítida entre “produção” e “consumo” • Cliente produz uma especificação que é consumida pela equipe de desenvolvimento • Equipe de desenvolvimento produz o software que é consumido pelo cliente
Custo Tempo de Projeto $ 1 Requisitos $ 10 Análise $ 100 Design $ 1.000 Implem. $ 10.000 Testes Motivação: custo de uma alteração
Premissas Básicas do Modelo Tradicional • É necessário fazer uma análise de requisitos profunda e detalhada antes de projetar a arquitetura do sistema. • É necessário fazer um estudo minucioso e elaborar uma descrição detalhada da arquitetura antes de começar a implementá-la. • É necessário testar o sistema completamente antes de mandar a versão final para o cliente.
Aprendizado • O cliente aprende durante o desenvolvimento • Descobre novas possibilidades • Muda as prioridades
Trabalho intelectual • Retrabalho é uma característica do trabalho intelectual • ExperimentaçãoCriaçãoRevisãoExperimentação ...
Custo Tempo de Projeto Premissa: custo de uma alteração
E se essa fosse a realidade? • A atitude dos desenvolvedores de software seria completamente diferente: • Tomaríamos as grandes decisões o mais tarde possível. • Implementaríamos agora somente o que precisamos agora. • Não implementaríamos flexibilidade desnecessária (não anteciparíamos necessidades).
E essa é a nova realidade !(pelo menos em muitos casos) • Orientação a Objetos • facilita e cria oportunidades para mudanças • Técnicas de Refatoramento • possibilita melhorar continuamente a implementação aumentando constantemente a qualidade do código produzido • Testes automatizados • nos dão segurança quando fazemos mudanças • Prática / cultura de mudanças • aprendemos técnicas e adquirimos experiência em lidar com código mutante
User Stories • Funcionalidades são informadas através de user stories • Estórias devem ser simples • Desenvolvedores estimam tempo
Planejamento • De posse das estimativas, é possível priorizar • Cliente entrega as estórias priorizadas para serem implementadas • Desenvolvedores respeitam as prioridades dos clientes • Projeto é dividido em partes: releases e iterações
Priorização • Cliente deve priorizar as estórias • Para obter o máximo de valor rapidamente • Se baseia nas suas necessidades e nas estimativas dos desenvolvedores
Release e Iteração Projeto: 8 meses = 32 semanas 8 Sem. R1 R2 R3 R4 2 Sem. I2 I3 I4 I1 1 Sem. S1 S2
8 Sem. R1 R2 R3 R4 Release Planning • Cliente recebe um “orçamento” dos desenvolvedores • Seleciona as estórias prioritárias que possam ser implementadas dentro do orçamento • Pode trocar estórias durante o release
2 Sem. I2 I3 I4 I1 Iteration Planning • Cliente recebe um “orçamento” • Não pode haver troca de funcionalidades durante uma iteração • Velocidade: quantidade de estórias que a equipe consegue implementar em uma iteração
Stand-up meeting • Reunião rápida • Diária • Usada para atualização da equipe
Desenvolvimento: orientação a objetos • Sistema é composto por pequenas peças • Peças têm objetivos específicos • Facilita construção • Facilita evolução
Buscando bugs • Sistemas podem ter defeitos • É difícil descobrir qual é a peça defeituosa • É mais fácil se o problema for detectado logo após a adoção da peça
Test Driven Design • No XP, primeiro se especifica o teste • Depois se constrói a peça
Unit Test • Nome dado à verificação feita sobre cada peça • Cada peça possui um unit test associado a ela • Testes são automatizados • Quando uma nova peça entra no sistema, todos os testes são executados
Acceptance Test • Cliente deve especificar testes de aceitação para cada funcionalidade de uma iteração • Sistema deve passar nestes testes ao término da iteração
Pair Programming • Todo código é escrito em par • Duas pessoas trabalham em um único computador • Uma digita, enquanto a outra revisa, corrige e sugere
Collective code ownership • Todos são responsáveis por todas as partes do sistema • Código tem que estar sempre “limpo” • Todos são capazes de modificá-lo
Refactoring • Uma [pequena] modificação no sistema que não altera o seu comportamento funcional • mas que melhora alguma qualidade não-funcional: • simplicidade • flexibilidade • clareza • desempenho
Exemplos de Refactoring • Mudança do nome de variáveis • Mudanças nas interfaces dos objetos • Pequenas mudanças arquiteturais • Encapsular código repetido em um novo método • Generalização de métodos • raizQuadrada(float x)raiz(float x, int n)
Desenvolvimento em equipe • Como conciliar diversos desenvolvedores? • Estrutura de diretórios • Atualização do código por várias pessoas diferentes
40 hour week • Desenvolvimento de software é um trabalho intelectual intenso • Não é produtivo trabalhar além do limite
Customer onsite • Fator mais importante no XP: • Comunicação • Feedback • Viabiliza a simplicidade da metodologia • War room c / quadro branco
Feedback constante • Permite que pequenas mudanças sejam feitas • Evita a necessidade de mudanças bruscas • Mantém o projeto em curso
Integração contínua • Máquina destacada para a integração • Integração ocorre diversas vezes ao dia • Os testes são executados em cada integração • Correções são feitas imediatamente
Ambientes para deployment • Como lidar com diferentes ambientes? • Exemplo: • Desenvolvimento • Aceitação • Produção
Produção Aceitação Desenvolvimento Ambientes para deployment
Ambiente de Desenvolvimento • Desejável que tenha: • Code completion • Validação on-line • Suporte à depuração • Suporte a Refactoring • Integração com jUnit • Integração com CVS • Integração com Ant
Connexion au compte
Connectez-vous pour publier votre contenu sur SlideServe.