EXtreme Programming Grupo Pará.

Slides:



Advertisements
Apresentações semelhantes
Metodologia R/XP.
Advertisements

XP EXTREME PROGRAMMING
Modelos de Ciclo de Vida
Tipos de sistemas de Lehman
Sistema Gerenciador de Ocorrências
Análise e Projeto de Sistemas I
Rational Unified Process(RUP)
Extreme Programming(XP)
Desenvolvimento ágil: eXtreme Programming vs SCRUM Tiago Rodrigues de Mello CCO-230 – ENGENHARIA DE SOFTWARE / 2010.
Mitos e Problemas Relacionados ao Software
Modelos de processo de software:
Análise e Projeto de Sistemas
Implementação de Sistemas
TSDD Teste de segurança durante o desenvolvimento.
Visão Geral do Desenvolvimento de Sistemas e Papéis no Desenvolvimento de Software Marcely Dias
FDD.
Alunos: Artulanez Souza Iony Melo
Métodos Ágeis de Desenvolvimento
Métodos Ágeis Agile Modeling, ou AG
Extreme Programming.
Técnicas e Projeto de Sistemas
Engenharia de Software
Visão Geral PRO.NET.
Fundamentos de Engenharia de SW
Avaliação Experimental de Técnicas Ágeis de Desenvolvimento
Implantando SCRUM na Simplestec Equipe Tributária
Gerenciamento de Configuração
Gerenciamento do Escopo: principais conceitos
Engenharia de Software
Oficina Mecânica TADS 2011.
Análise e Projeto de Sistemas
Utilizando Testes Unitários Gleibson Rodrigo “dartanham” Fontes: antiga apresentação de testes da disciplina de ESS e na curso de testes do PDesigner.
XPRecife Madson Menezes Costa Ricardo de Oliveira Cavalcanti.
Analises de sistemas ESTRUTURADA Analise de sistema estruturada.
Bruno Silva Desenvolvido a partir de
O Processo Unificado (UP)
Análise e Projeto de Sistemas UNIVERSIDADE DE CRUZ ALTA Ciência da Computação 2010/1.
eXtreme Programming Metodologia XP
Engenharia de Software
EXTREME PROGRAMMING XP.
O que é? É o processo de investigação técnica com intuito de identificar a qualidade, a segurança e a exatidão do software desenvolvido. A validação do.
Gestão de defeitos.
Processo de Desenvolvimento de Software – PDS C Construção - PAS
Trabalho de Engenharia de Software II
Técnicas e Projeto de Sistemas
Modelando Sistemas em UML
Engenharia de Software
ADS – 5º Semestre Trabalho de Conclusão de Curso
“A Evolução de XP” segundo Kent Beck – Parte 1 O que mudou nesses 5 anos? Danilo Toshiaki Sato
O que é Domain Driven Design Especificação Design Refactor Testes Quanto tempo isso leva?
Projeto e-Build. Apresentação FábricaEquipeProdutoMercado ProjetoEscopoMetodologiaCronograma ArtefatosPrincipais riscosArquiteturaLições aprendidas.
Gerenciamento de Equipes com Scrum Curso de Verão 2008 – IME/USP Dairton Bassi Danilo Sato 24/Jan/2008.
Trabalho de PAW Scrum Nome: Jaila Cíntia.
Metodologias Ágeis Para o Desenvolvimento 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.
Extreme Programming João Gabriel Pedro Ramos Renan Santos.
Gestão Ágil de Projetos
Estrutura de Gerenciamento de projetos
Backlog Lílian.
Análise e Projeto de Sistemas Orientados a Objetos - Métodos Ágeis – Extreme Programming Rogério Lacerda
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.
Erton W. Vieira Metodologias Ágeis, Qualidade de Software e Design Centrado no usuário: Pontos de Interação Erton W. Vieira.
Análise e Projeto de Sistemas Análise e Projeto de Sistemas Aula 2 Professor: Italo Rodrigues Castro.
PSP - Aula 02 Vanilson Burégio.
RUP – Rational Unified Process Márcia Seabra Cabral Prof. Augusto Sampaio Centro de Informática - UFPE.
Gerenciamento de riscos
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.
Testes de Unidade. 2 Pauta Testes de Unidade; Testes de Unidade; Desenvolvimento orientado a testes; Desenvolvimento orientado a testes; Testes unitários.
Transcrição da apresentação:

eXtreme Programming Grupo Pará

1 -Definição “XP é a arte de maximizar a quantidade de software que você não vai fazer” ImprovIT “XP é um jeito leve, eficiente, de baixo risco, flexível, preditivo, científico e divertido de se desenvolver software” Kent Beck “XP é uma disciplina, porque existem coisas que você precisa fazer para dizer que está fazendo XP ” Kent Beck Se revisar código é bom, faremos o tempo inteiro (programação em par). Se testar é bom, vamos testar o tempo inteiro (testes unitários) e o cliente também (testes funcionais). Se um projeto eficiente é bom, será uma rotina (refatoração). XP como disciplina: é uma questão cultural.

2 - Valores do XP Comunicação Simplicidade Feedback Coragem

Comunicação Sincroniza o time em torno do mesmo objetivo

Comunicação Práticas de comunicação Programação em par colocam as pessoas lado a lado sem individualismo Testes unitários esclarecem os objetivos do código fonte Estimativas envolvem programadores, gerentes e clientes

Simplicidade Coisas simples são mais fáceis de entender, manter, construir em cima e, se for necessário, derrubar e refazer

Simplicidade A tendência de software é o custo de mudança aumentar ao longo do tempo

Simplicidade A proposta é achatar essa curva

Simplicidade Itens complexos demoram. Você vai perder tempo em algo que não será usado?

Feedback Quanto antes você tiver feedback sobre uma situação, mais rápido você pode agir

Feedback Formas de feedback: Estimativa imediata do time para o cliente Leitura do código (pergunte ao sistema) Testes unitários / TDD Testes funcionais Integração Contínua Deploy Contínuo

Coragem “Coragem é resistência ao medo, domínio do medo, e não ausência do medo.” Mark Twain

Papéis Gerente de projetos Responsável pelo relacionamento entre equipe e cliente. Reporta o andamento, os problemas e os riscos. Filtra para a equipe de desenvolvimento os aspectos administrativos e burocráticos. Contatar clientes, agendar, garantir a presença do cliente; Garantem à equipe: equipamentos, softwares, itens de escritório.

Papéis Gerente de projetos Deve compreender os valores e práticas da XP. Mentalidade industrial representa ameaça ao projeto. (programação em par, equipe gerenciável. ritmo sustentável (40h/semana, industria: repetição, software: criatividade/esforço mental, cansaço)) Desaconselháveis fazer com que uma pessoa assuma o papel de gerente e coach. proximidade: coach-equipe-tecnico, gerente=cliente=admin

Papéis Coach Assegura que a equipe respeita e utiliza os valores e práticas do XP. Possui conhecimento técnico e do processo de desenvolvimento de software. Sendo o XP voltado para o comportamento humano, o coach verifica o andamento e mostra eventuais erros.

Papéis Analista de testes Testa e garante a qualidade do sistema. Ajuda o cliente a escrever testes de aceitação e que assegura que o sistema os respeite. Não envolvido com o desenvolvimento. (Visão de fora, não da codificação.)

Papéis Redator técnico Mantém a documentação do sistema atualizada. Evita envolver o desenvolvedor na documentação. Sintonia com a equipe e cliente

Papéis Desenvolvedor Analisa, projeta, codifica. Equipe multidisciplinar (membros exercem vários papéis em momentos diferentes do projeto). Não existe aristocracia ou hierarquia. Todos aprendem com todos (programação em par)

3 – Práticas do XP

Envolvimento do Cliente Sugere que os usuários finais sejam envolvidos diretamente no processo de desenvolvimento. Vantagens: Feedback rápido Percepção se o que está implementado consegue ser usado facilmente pelos usuários finais.

Releases Curtos Melhor fazer pequenos lotes de trabalho de cada vez, validá-los e só então seguir adiante. Quando os erros são descobertos rapidamente e abrangem um escopo pequeno, solucionar torna-se mais fácil.

Jogo do Planejamento O que fazer na próxima semana Estórias (cliente escreve) Estimativa Seleção de cartões Aguarde e confie Reunião diária

Jogo do Planejamento Estórias (Cliente escreve)

Jogo do Planejamento Estimativa

Jogo do Planejamento Seleção de estórias

Jogo do Planejamento Aguarde e confie...

Jogo do Planejamento

Jogo do Planejamento Reuniões diárias

Jogo do Planejamento Reunião diária Ocorre todos os dias, com todos os membros da equipe. Objetiva,15 min, em pé. O que cada um fez no dia anterior (equipe atualizada com o andamento do projeto) O que será feito (quais cartões,quem faz o quê, decisões tomadas em equipe).

Programação em Par Une várias técnicas em uma só: Revisão de código Correções imediatas Evita acumulo de pequenos erros. Melhor Modelagem da Solução Todo desenvolvimento feito em pares. Um computador, dois programadores. Um piloto, um co-piloto Papéis são alternados freqüentemente Pares são trocados periodicamente

Programação em Par Um digita, outro revisa código, e os dois discutem soluções juntos. Interpretação errada: uma pessoa trabalha, e a outra fica parada (desperdício).

Programação em Par Pressão do Par Minimiza focos de distração (bate papo, email, etc...). Responsabilidade compartilhada.

Programação em Par Revezamento Fundamental. Não há regra definida. Desenvolvedores sabem hora de trocar.

Programação em Par Disseminação de Conhecimento Troca de par incentiva disseminação de conhecimento. Nivela equipe por alto. Facilita inserção de novos membros.

Programação em Par Benefícios: Melhor qualidade do design, código e testes Revisão constante do código Nivelamento da equipe Maior comunicação

Programação em Par Pesquisas demonstram que duplas produzem código de melhor qualidade em aproximadamente o mesmo tempo que programadores trabalhando sozinho.

Programação em Par Principais Desafios Exige que as pessoas envolvidas sejam receptivas, compreensivas umas com as outras, engajadas e, sobretudo, humildes. Organização física do escritório. Visão Gerencial: desenvolvedores vistos como operários.

Desenvolvimento guiado por testes Testar é a parte do desenvolvimento de software que todo mundo sabe que precisa ser feita, mas ninguém quer fazer. Software é complexo, erros são inevitáveis (natureza lógica, atenção, interpretação de requisitos).

Desenvolvimento guiado por testes ACEITE ISSO!

Desenvolvimento guiado por testes É possível fazer algo QUANDO os erros são detectados e diminuir QUANTO de impacto será causado no cronograma. Diminuir o tempo entre uma ação e o feedback que ela gera é essencial para o aprendizado.

Desenvolvimento guiado por testes Plano de saúde Prevenir x Remediar

Desenvolvimento guiado por testes Prevenindo… Investimento monetário inicial Benefícios a longo prazo Custo inferior comparado à necessidade de remediar em caso de fatalidade

Desenvolvimento guiado por testes Doenças = Bugs = Tempo de depuração Aumento do custo (tempo de inserção ............. tempo de descoberta)

Desenvolvimento guiado por testes Testes expõem o defeito assim que ele entra no sistema. Testes dizem exatamente ONDE está o erro.

Desenvolvimento guiado por testes TESTES DE UNIDADE - realizado em cada classe do sistema para verificar se o resultado gerado é correto. TESTE DE ACEITAÇÃO - realizado sobre cada funcionalidade, ou estórias do sistema. A interação entre várias classes que implementam uma funcionalidade.

Desenvolvimento guiado por testes TESTES AUTOMATIZADOS - Classes que testam outras classes

Desenvolvimento guiado por testes Testes dão confiança ao time, pois diminuem o risco da mudança

Refatoração Conceito Porque Refatorar? Quando Refatorar? Como Refatorar? Riscos e impedimentos Reflexão

Refatoração "Refatoração é o processo de alteração de um sistema de software de modo que  o comportamento externo do código  não mude, mas que sua estrutura interna  seja melhorada." Vinícius Teles, citando ASTELS

Refatoração Conceito A Refatoração é utilizada após a implementação da funcionalidade, ou seja, depois que a função estiver sendo executada perfeitamente, usa-se a Refatoração.

Refatoração Por que refatorar? Mudança contínua de Requisitos Refatorar melhora o projeto do software Torna o software mais fácil de entender Ajuda a encontrar falhas Ajuda a programar mais rapidamente 

Refatoração Quando refatorar? Regra de três Quando acrescentar funções Quando existe duplicação Quando precisar consertar uma falha Enquanto revisa o código

Refatoração Como refatorar? O primeiro passo para Refatorar é criar um sólido conjunto de testes para o  trecho de código.

Refatoração Riscos e impedimentos Desenvolver códigos com erros Sem metodologia de Refatoração o risco aumenta Tempo: pode ocorrer atraso no término do produto Gera custos

Refatoração Reflexão Se Refatorar me toma mais tempo, me dá mais trabalho, que a implementação da funcionalidade em si, então porque Refatorar? Trabalhando desta maneira você se assegura que conseguirá adicionar uma próxima funcionalidade com menos esforço, e assim sucessivamente

Integração Contínua Integrar e testar o sistema inteiro diversas vezes por dia. Ferramentas: SVN, TFS, etc O build rápido é uma prioridade. Código coletivo.

Metáfora Construir ideais para explicar outras ideias.

A Documentação do Projeto Documentar não é o Objetivo Principal. Documenta-se o mínimo necessário antes. A documentação mais abrangente acontece quando o código está pronto.

A Documentação do Projeto Documentos que compõem a documentação: Estória. Testes. Javadoc Diagramas de classe. – Rational Rose Modelos de dados. Manual do usuário. UML. Fotos.

4.Conclusões XP leva princípios e práticas do senso comum a níveis extremos: Se revisar o código é bom, revisaremos o tempo inteiro (programação em par); Se testar é bom, todos vão testar o tempo inteiro; Se o projeto é bom, ele fará parte das funções diárias de todos (refatoração);

Conclusões Se simplicidade é bom, sempre deixaremos o sistema com o projeto mais que simples que suporte a funcionalidade atual; Se testes de integração são importantes, vamos integrar e testar várias vezes ao dia; Se iterações são boas, faremos iterações muito, muito pequenas - horas e semanas, não meses e anos;

5. Fontes [Beck 2004] Kent Beck. Extreme Programming Explained. Addison-Wesley, 2004. [Teles 2004] Vinícius Manhães Teles. Extreme Programming: Aprenda como encantar seus usuários desenvolvendo software com agilidade e alta qualidade. Novatec, 2004. [Improve IT] http://improveit.com.br

Perguntas ?