Extreme Programming.

Slides:



Advertisements
Apresentações semelhantes
IFTO ESTRUTURA DE DADOS AULA 05 Prof. Manoel Campos da Silva Filho
Advertisements

Boas Práticas Adotadas em um Projeto de Design de Testes – Um relato de experiência
1 ANÁLISE E PROJETO NO PROCESSO DE DESENVOLVIMENTO DE SOFTWARE PROCESSO: CONCEITO MODELOS DE PROCESSO PROCESSO UNIFICADO HISTÓRIA CARACTERÍSTICAS AS QUATRO.
UNICAMP Universidade Estadual de Campinas Centro Superior de Educação Tecnológica Divisão de Telecomunicações Propagação de Ondas e Antenas Prof.Dr. Leonardo.
INFORMAÇÕES COMPLEMENTARES
A busca das mulheres para alcançar seu espaço dentro das organizações
Material pedagógico Multiplicar x 5 Clica!
Vamos contar D U De 10 até 69 Professor Vaz Nunes 1999 (Ovar-Portugal). Nenhuns direitos reservados, excepto para fins comerciais. Por favor, não coloque.
Rational Unified Process
14/10/09 Uma animação possui: Início; Passo; Fim; 1.
Exercício do Tangram Tangram é um quebra-cabeças chinês no qual, usando 7 peças deve-se construir formas geométricas.
Nome : Resolve estas operações começando no centro de cada espiral. Nos rectângulos põe o resultado de cada operação. Comprova se no final.
1 INQUÉRITOS PEDAGÓGICOS 2º Semestre 2003/2004 ANÁLISE GERAL DOS RESULTADOS OBTIDOS 1.Nº de RESPOSTAS ao inquérito 2003/2004 = (42,8%) 2.Comparação.
Rational Unified Process(RUP)
Desenvolvimento ágil: eXtreme Programming vs SCRUM Tiago Rodrigues de Mello CCO-230 – ENGENHARIA DE SOFTWARE / 2010.
O padrão de gerenciamento de projetos de um projeto
Curso de ADMINISTRAÇÃO
Modelos de processo de software:
Crescimento Econômico Brasileiro : Uma Visão Comparada de Longo Prazo Prof. Giácomo Balbinotto Neto UFRGS.
Aula 2 Aspectos Preliminares
Aula 4 Nomes, Vinculações, Tipos e Escopos
HellermannTyton Brasil Sistema de Gerenciamento Integrado HellermannTyton Brasil Sistema de Gerenciamento Integrado Alexandre Martins Consultor de Negócios.
Programação eXtrema Desenvolvendo Software com Qualidade e Agilidade
O que é 5(S)? ? 5(S) É a prática de hábitos que permitem mudanças nas relações... É a base de qualquer programa de qualidade. 1.
EXEMPLOS DE ESTRUTURAS PROTENDIDAS
Visão Geral do Desenvolvimento de Sistemas e Papéis no Desenvolvimento de Software Marcely Dias
FDD.
Gerenciamento do Escopo
Classes e objetos Modelagem
Provas de Concursos Anteriores
Alunos: Artulanez Souza Iony Melo
MATEMÁTICA PARA NEGÓCIOS
Renda até 2 SM.
Hamburgo, Alemanha Definir o caminho que irá permitir a Lions Clubs International alcançar o seu potencial pleno como organização.
MECÂNICA - ESTÁTICA Cabos Cap. 7.
Engenharia de Requisitos
José Roberto Blaschek Gerência do Escopo José Roberto Blaschek.
(CESPE/ Técnico Judiciário do TRT 17ª Região/ES) O Superior Tribunal de Justiça entende que o candidato aprovado em concurso público dentro do limite.
MECÂNICA - DINÂMICA Exercícios Cap. 13, 14 e 17. TC027 - Mecânica Geral III - Dinâmica © 2013 Curotto, C.L. - UFPR 2 Problema
Técnicas e Projeto de Sistemas
Aluno: Mário Monteiro Orientador: Sérgio Soares 1.
Visão Geral do RUP.
Fundamentos de Engenharia de SW
Implantando SCRUM na Simplestec Equipe Tributária
1 CENTRO DE DESENVOLVIMENTO E PLANEJAMENTO REGIONAL – 2006 P Ó S-GRADUA Ç ÃO EM ECONOMIA Microeconomia I Prof.: Edson Domingues Cap í tulo II: Escolha.
Universidade São Marcos Curso: Gestão de Negócios Internacionais
Estruturas de Dados com Jogos
Lemas (Sudkamp)  .
Coordenação Geral de Ensino da Faculdade
Plataforma Brasil – Submissão de pesquisa
Engenharia de Software
Projeto Marcas que Eu Gosto 1 PROJETO MARCAS QUE EU GOSTO Estudos Quantitativo de Consumidores Janeiro / 2005.
Modelagem Estatística
EMPREENDEDORES EM AÇÃO PROF. NILSON R. FARIA Colégio Wilson Joffre.
C ORROPIOS, C ARDINCHAS E C ÃES G RANDES O LIVRO de José Paixão em imagens – com pistas de leitura propostas por por www.joraga.net.
Gerência de Configuração - GC
Gerência, Planejamento e XP
DIEGO RICARDO DE ARAUJO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO INSTITUTO DE CIÊNCIA EXATAS UNIVERSIDADE FEDERAL DE JUIZ DE FORA Seleção de Características.
1 Aplicações do Fecho Regular. 2 A interseção de uma linguagem livre de contexto e uma linguagem regular é uma linguagem livre de contexto livre de contexto.
Olhe fixamente para a Bruxa Nariguda
Processo de Aquisição Adilson de Almeida Cezar Meriguetti
RUP - Cap. 5 – Processo Iterativo e Incremental
eXtreme Programming Metodologia XP
Engenharia de Software
Métodos Ágeis e Programação Extrema (XP)
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína ANA PAULA LIMA.
1 Programação eXtrema uma solução radical Seminário de Engenharia de Software Fabio Kon Departamento de Ciência da Computação 15 de maio de 2001.
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína XP (EXTREME PROGRAMMING) Pós-Graduação em Engenharia de Software Metodologias.
EXtreme Programming Eduardo Aranha.
1 Projeto Piloto Conclusão em Agenda Projeto Piloto –Descrição –Execução da aplicação –Implementação de requisitos funcionais e não- funcionais.
Transcrição da apresentação:

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. Trabalhar no software mais que documentação abrangente. Colaboração do cliente mais que negociação contratual. Responder às mudanças mais 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

O que é um projeto de sucesso? Cumpre o orçamento Cumpre o prazo Cliente fica feliz Equipe fica feliz

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

Motivação: custo de uma alteração Tempo de Projeto Custo $ 1 Requisitos $ 10 Análise $ 100 Design $ 1.000 Implem. $ 10.000 Testes

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.

Por que software falha?

Problemas desta premissa Premissa é irreal em vários casos O cliente não é capaz de especificar o software previamente Grande problema: DETALHE

Premissa do desenvolvimento ágil APRENDIZADO FEEDBACK DESENVOLVIMENTO ITERATIVO

Aprendizado O cliente aprende durante o desenvolvimento Descobre novas possibilidades Muda as prioridades

Trabalho intelectual Retrabalho é uma característica do trabalho intelectual Experimentação Criação Revisão Experimentação ...

Premissa: custo de uma alteração Tempo de Projeto Custo Mudanças nas últimas 3 décadas: Computadores 1000 vezes mais rápidos Computadores 1000 vezes mais baratos Ciclo de compilação e testes baixou de dias para segundos DBMS CM Tools CASE Tools Sobretudo OO

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

As 4 Variáveis do Desenvolvimento de Software Tempo Custo Qualidade Escopo (foco principal de XP)

Valores Feedback Comunicação Simplicidade Coragem

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 No início do projeto, deve-se determinar o número máximo de estórias e estimá-las. A estimativa é sempre feita pelos programadores. Ao mostrar os releases, dizer que no início de cada um se faz o release planning. Nele, o cliente indica as estórias que devem ser feitas. Esta estórias podem mudar ao longo do release, de acordo com as priridades do cliente. No início de cada iteração, ocorre o iteration planning. O cliente decide o que será feito na iteração. Ao contrário do release planning, o cliente não pode alterar as estórias que serão executadas em uma iteração. Elas ficam completamente congeladas. No início de cada semana, a equipe planeja as tarefas que serão executadas ao longo da semana. No início de cada manhã, a equipe faz um stand up meeting. 1 Sem. S1 S2

Release Planning Cliente recebe um “orçamento” dos desenvolvedores 8 Sem. 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

Iteration Planning Cliente recebe um “orçamento” 2 Sem. 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

CVS – Repositório de fontes Check out Add Commit Update Conflict Remove

CVS

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

Ambientes para deployment Desenvolvimento Aceitação Produção

Problemas de ter vários ambientes Possíveis erros devido a tarefas manuais repetitivas Gasto de tempo

Automatização do deployment Agiliza as integrações Evita erros

Ant

Exemplo simples <project name="projeto" default="desenvolvimento"> <target name="desenvolvimento"> <mkdir dir="build"/> <javac srcdir="src" destdir="build"/> <junit> <test name="test.SystemTester"/> </junit> </target> </project> tasks target

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

Exemplos

Importância da IDE para o XP Ganho de tempo Automação Facilidade de uso Verificação permanente do código

Importância da IDE para o XP

Steering Pequenas mudanças Ajustes simples ao longo do tempo X

Segredo do sucesso O conjunto é o que faz a diferença A ausência de uma prática mostra a deficiência de outras Metáfora do time de futebol

XP e RUP XP RUP Foco nas práticas da equipe Foco nos artefatos Comportamental Prescritivo Projetos de determinados tamanhos Qualquer projeto

Negociação Venda técnica Venda focada em negócio Duas propostas: Escopo fechado Escopo variável

Resistências Dificuldades com a área de TI Grande resistência dos desenvolvedores Pouca resistência na área usuária do cliente Estratégia: pedido de tempo

Ambiente de desenvolvimento Sala dedicada unicamente ao projeto Mural Quadros brancos Mesas que suportam programação em par Equipamentos com bom desempenho

XP no Brasil 2000: algumas práticas começam a ser usadas em projetos no Sul Dez/2002: primeiro XP Brasil Jan/2003: fundação do XP Rio Fev/2003: primeiro projeto full-XP em uma grande empresa brasileira (em andamento) Nov/2003: lançamento previsto do primeiro livro brasileiro sobre XP

Referências Site Xispê http://www.xispe.com.br XP Rio http://www.yahoogroups.com/groups/xprio Lista Xpers http://www.yahoogroups.com/groups/xpers