Download - Extreme Programming
![Page 1: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/1.jpg)
Extreme Programming
Princípios, valores e práticas
CHRISTIANO MILFONT - [email protected] Fortaleza, Ceará. 26/05/2006
SEAD 2006
![Page 2: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/2.jpg)
ROTEIRO
1. HISTÓRICO.
2. AGILE SOFTWARE DEVELOPMENT.
3. EXTREME PROGRAMMING.
4. A METODOLOGIA.
5. DESENVOLVIMENTO.
6. CONCLUSÃO.
![Page 3: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/3.jpg)
1. HISTÓRICO
![Page 4: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/4.jpg)
ANOS 80
• Anos 80 - década Code-and-Fix.• Ausência de metodologias de desenvolvimento.• Programação procedural e estruturada.• Evolução da programação linear.• Programas são: sequência, decisão e iteração.• Dificuldade de simular relações entre entidades em processos de negócios.
![Page 5: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/5.jpg)
ANOS 90• Linguagem UML.• Processos unificados (UP).• Metodologias Orientadas a Objetos.• Fases bem definidas e controladas.• Analogia com a Engenharia Civil.• Concepção, Elaboração, Construção e Transição.
![Page 6: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/6.jpg)
● Os aspectos que destinguem o processo unificado são três conceitos chaves, as saber:
● Direcionados a casos de usos;
1. HISTÓRICOPROCESSOS UNIFICADOS
● Centrado na arquitetura;● Iterativo e incremental.
![Page 7: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/7.jpg)
PROCESSOS UNIFICADOS● Rational Unified Process (RUP).● Basic Unified Process (BUP).● Enterprise Unified Process (EUP).● Microsoft Solution Framework (MSF).
![Page 8: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/8.jpg)
PROJETOS COM PROCESSOS UNIFICADOS
● Código complexo.● Manutenção difícil.● Baixa produtividade.● Cronograma sempre atrasado.● Insatisfação de todos.● Design degradado.● Documentação defasada,
excessiva e ilegível.● Fracasso no projeto.
![Page 9: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/9.jpg)
2. AGILE SOFTWARE DEVELOPMENT
![Page 10: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/10.jpg)
ORIGENS DOS METODOS AGEIS
• Lendário Projeto C3 - Comprehensive Compensation project – Payroll system (Chrysler).
• Melhores práticas (Design patterns).• Análise Orientada a Objetos.• Manifesto ágil.• Agile Alliance (http://www.agilealliance.org/).
Ron Jeffries Kent BeckWard Cunningham
![Page 11: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/11.jpg)
MANIFESTO AGIL
“Estamos evidenciando maneiras melhores de desenvolver software fazendo-o nós mesmos e ajudando outros a fazê-lo. Através desse
trabalho, passamos a valorizar:
● Software em funcionamento MAIS QUE documentação abrangente;● Indivíduos e interação MAIS QUE processos e ferramentas;● Colaboração com o cliente MAIS QUE negociação de contratos;● Responder a mudanças MAIS QUE seguir um plano.
Ou seja, mesmo tendo valor os itens à direita, valorizamos mais os itens à esquerda.”
![Page 12: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/12.jpg)
METODOS AGEIS
1. Extreme Programming2. Scrum3. Pragmatic Programming4. Feature Driven Development (FDD)5. Crystal6. Adaptive Software Development7. Dynamic Systems Development Method (DSDM)8. Agile Lean Development (LD)
![Page 13: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/13.jpg)
3. EXTREME PROGRAMMING
![Page 14: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/14.jpg)
EXTREME PROGRAMMING
O XP é formado por um conjunto de valores, princípios e práticas.
Os princípios conectam os valores (crenças fundamentais dos processos) às práticas (atividades concretas do cotidiano).
O XP é uma metodologia rigorosa e disciplinada que requer o cumprimento de suas práticas para o sucesso na adoção.
Ao contrário do que os gurus pregam, o XP pode ser usado com CMM e UPs como atestam alguns estudos especificos nos últimos anos.
A preocupação não é com qualidade (que deve natural) e sim com a saúde do sistema (segundo Kent Beck).
![Page 15: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/15.jpg)
VALORES Communication (Comunicação)
Simplicity (Simplicidade)
Feedback
Courage (Coragem)
Respect (Respeito)
• PRINCÍPIOS– Humanity (Humanidade)– Economics (Economia)– Mutual Benefit (Benefício mútuo)– Self-Similarity (Similaridade própria)– Improvement (Progresso)– Diversity (Diversidade)– Reflection (Reflexão)– Flow (Fluxo)– Opportunity (Oportunidade)– Redundancy (Redundância)– Failure (Falha)– Quality (Qualidade)– Babe Steps (Passo-de-bêbê)– Acceptance (Aceite)– Responsibility (Responsabilidade)
![Page 16: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/16.jpg)
Sit Together (Sentem-se juntos)
Whole Team (Equipe completa)
Energized Work (Trabalho energizado)
Pair Programming (Programação em par)
Move People Around (Mova as equipes)
Stories (Histórias)
Weekly Cycle (Ciclo semanal)
Quarterly Cycle (Ciclo trimestral)
Slack (Folga)
Ten-Minute Build (Construir em 10 minutos)
Continuous Integration (Integração contínua)
Test-First Integration (Teste primeiro)
Incremental Design (Design incremental)
Informative Workspace (Ambiente informatizado)
PRÁTICAS PRIMÁRIAS
![Page 17: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/17.jpg)
Real Customer Involvement (Envolvimento real do cliente)
Incremental Deployment (Disponibilização incremental)
Team Continuity (Continuidade da equipe)
Shrinking Teams (Diminuição de equipes)
Root-Cause Analysis (Análise da causa-origem)
Daily Deployment (Disponibilização (entrega) diária)
Negotiated Scope Contract (Contrato com escopo negociável)
Shared Code (Código compartilhado)
Code and Tests (Código e testes)
Single Code Base (Código único)
Metaphor (Metáforas)
Refactoring (Refatoração)
•PRÁTICAS COROLÁRIAS (CONSEQUÊNCIA)
Pay-per-Use (Pague-por-uso)
Design Patterns (Padrões de projeto)
40 Hour Week (40 horas semanais)
Planning Game (Jogo do planejamento)
Stand Up Meetings (Reuniões em pé)
Coding Standards (Padrões de codificação)
![Page 18: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/18.jpg)
![Page 19: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/19.jpg)
![Page 20: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/20.jpg)
4. METODOLOGIA
![Page 21: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/21.jpg)
Fase de exploração;● Compreender e estimar o possível
Fase de planejamento;● Comprometimento das escolhas.
Fase de gerenciamento;● Gerenciamento do progresso na construção.
O jogo do planejamento é um processo circular e iterativo com objetivos, partes jogadas, jogadores e regras para os movimentos permitidos. Cada fluxo circular contínuo apresenta as fases:
JOGO DO PLANEJAMENTO
![Page 22: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/22.jpg)
JOGO DO PLANEJAMENTO
![Page 23: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/23.jpg)
● Definição de Releases e marcos.● Iterações com os clientes em ciclos semanais (marcos).
Não permite mudanças nessas versões.● Ciclo mensais para funcionalidades produtivas
(Releases). Versões funcionais e correções de erros.● Ciclos trimestrais para sistemas ou módulos em
produção. ● Mudanças no escopo de forma simples.● Feedback rápido.● Agilidade no gerenciamento de mudanças.
ITERAÇÕES
![Page 24: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/24.jpg)
ITERAÇÕES
![Page 25: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/25.jpg)
● Presença constante do cliente.● Histórias dos usuários em torno dos requisitos.● Definição entre processos, casos e funções.● História definida a partir de um pedaço de negócio
que possa ser testada, executada e entregue.● Divisão de Stories em Tasks caso necessário.● Documentação simplificada, clara e objetiva.● Definição de metáforas para claro entendimento.
USER STORY (HISTÓRIAS DOS USUÁRIOS)
![Page 26: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/26.jpg)
Real Customer Involvement(Envolvimento Real do Cliente)
![Page 27: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/27.jpg)
ID# 005 Usuario Fulano de tal
<Story name> Correlação de atos
Source:__________________________________________ _________
<Story texto>
Os atos após serem identificados e filtrados na consulta ao acervo do Diário Oficial devem ser correlacionados de forma que se identifique ...
Data início 01/02/2006 Data Fim 08/02/2006
Teste de Aceitação: ID# 011
USER STORY CARD
![Page 28: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/28.jpg)
USER STORY CARD
![Page 29: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/29.jpg)
USER STORY CARD
![Page 30: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/30.jpg)
INFORMATIVE WORKSPACEAMBIENTE INFORMATIZADO
![Page 31: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/31.jpg)
5. DESENVOLVIMENTO
![Page 32: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/32.jpg)
RELEASE PLAN
![Page 33: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/33.jpg)
ITERATION PLAN
![Page 34: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/34.jpg)
INTEGRAÇÃO CONTÍNUA
![Page 35: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/35.jpg)
INTEGRAÇÃO CONTÍNUA
![Page 36: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/36.jpg)
● Condutor e navegador.● Condutor cria testes e refatora.● Navegador avalia atrás de bugs.● Navegador critica código.● Sit Together (sentam-se juntos)● Parceiro força boas práticas.● Parceiro evita dispersão.● Menos prospecção a erros.● Disseminação dos conhecimentos e nivelamento.● Stand up meeting (Reuniões breves em pé).● Confiança no desenvolvimento.
PAIR PROGRAMMINGPROGRAMAÇÃO EM PAR
![Page 37: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/37.jpg)
MOVE PEOPLE AROUNDMOVA AS PESSOAS PELO PROJETO
● Revezamento de pares entre as histórias e iterações.● Maior revisão de códigos e disseminação.● Desenvolvedores podem alterar qualquer código.
![Page 38: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/38.jpg)
MOVE PEOPLE AROUND
MOVA AS PESSOAS PELO PROJETO
HISTÓRIA1 2 3
SegMANHÃ PAULO & JOSÉ PEDRO & CARLOSTARDE PAULO & CARLOS PEDRO & JOSÉ
TerMANHÃ CARLOS & PEDRO JOSÉ & PAULOTARDE CARLOS & PAULO JOSÉ & PEDRO
QuaMANHÃ CARLOS & JOSÉ PEDRO & PAULOTARDE CARLOS & PAULO PEDRO & JOSÉ
QuiMANHÃ PAULO & PEDRO JOSÉ & CARLOSTARDE PAULO & CARLOS JOSÉ & PEDRO
SexMANHÃ CARLOS & JOSÉ PEDRO & PAULOTARDE CARLOS & PAULO PEDRO & JOSÉ
![Page 39: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/39.jpg)
● Todos desenvolvedores são responsáveis pelo código.● Utiliza-se SCM (Source Control Management).● SCM versionam, arquivam e controlam o projeto.● Versões continuam em paralelo sem interromper a evolução do
sistema.
SHARED CODECÓDIGO COMPARTILHADO
![Page 40: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/40.jpg)
SHARED CODECÓDIGO COMPARTILHADO
![Page 41: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/41.jpg)
SHARED CODECÓDIGO COMPARTILHADO
![Page 42: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/42.jpg)
ColaboraçãoResponsabilidadeClasse
AtoAcao
Conhece AtosConhece ações
Conhece motivosCorrelaciona Atos
AtoCorrelato
EXPLORAÇÃO DO DOMÍNIO DA RELEASE EM CRC CARDS
![Page 43: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/43.jpg)
● Objetos que conhecem seus dados e comportamentos● Colaboram entre si e não pulam entre funções.● Só expõem o necessário.● Objetos ativos, e não passivos como tabelas.● Design simples● Implementam estritamente o que o processo define.● Representam os processos de negócios do cliente.● Não se preocupam com arquitetura do sistema.
DOMAIN MODEL
![Page 44: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/44.jpg)
Usando C#
using System;
using System.IO;
public class RemoveArquivosVelhos {
public static void Main(string[] args) {
foreach (FileInfo fi in (new DirectoryInfo (@“\temp\backup”)).GetFiles()) {
if (((TimeSpan) (DateTime.Now - fi.LastWriteTime)).Days > 7) {
fi.Delete();
}
}
}
}
Usando BASH do sistema operacional LINUX→ find /usr -atime +6 -exec rm -f “{}” “;”
SIMPLICIDADE
![Page 45: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/45.jpg)
DOMAIN MODEL
EXEMPLO
![Page 46: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/46.jpg)
FUNCTIONAL TESTS (TESTES FUNCIONAIS)
● ACCEPTANCE TESTS (TESTES DE ACEITAÇÃO).● Os testes de aceitação descrevem as ações e
definem o domínio dos processos que são necessários para validar a história.
● UNIT TESTS (TESTES DE UNIDADE).● Os testes de unidade avaliam cada entidade
participante no teste de aceitação usando refactoring para criar o código funcional.
TEST-DRIVEN DEVELOPMENT
![Page 47: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/47.jpg)
Testes que cruzam os limites de uma classe, invariavelmente são testes que descrevem e definem processos.
ACCEPTANCE TESTSTESTES DE ACEITAÇÃO
![Page 48: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/48.jpg)
UNIT TESTSTESTES UNITÁRIOS
![Page 49: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/49.jpg)
REFACTORINGS
![Page 50: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/50.jpg)
6. CONCLUSÃO
![Page 51: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/51.jpg)
● Problemas:● Saída de pessoal (Risco na implementação).● Dificuldade cultural.● Indisciplina nas práticas da metodologia podem
comprometer o sucesso.● Problemas estruturais na empresa.
● Soluções:. Projeto saudável.● Agilidade nas mudanças.● Menos pontos de manutenção.● Produtividade no ciclo de vida do produto.● Menor incidência de falhas.
![Page 52: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/52.jpg)
REFLEXÃO: MOÇOS BONITOS COMO NÓS
DESENVOLVEM EM JAVA.
DUVIDAS?
![Page 53: Extreme Programming](https://reader033.vdocuments.net/reader033/viewer/2022061111/54561104af795940578b9ec1/html5/thumbnails/53.jpg)
● Extreme Programming Explained - Kent Beck● Planning Extreme Programming - Kent Beck and Martin Fowler● Extreme Programming Installed - Ron Jeffries● Extreme Programming Explored - William C. Wake● Agile Software Development - Evaluating the Methods for Your
Organization - Alan S. Koch● Agile Software Development - Alistair Cockburn● Agile Software Development Ecosystems - Jim Highsmith● Applying UML and Patterns - An Introduction to Object-Oriented
Analysis and Design and Iterative Development (3rd) - Craig Larman● Test-Driven Development By Example - Kent Beck● Martin Fowler - Refactoring-Improving the Design of Existing Code● Domain-Driven Design - Tackling Complexity in the Heart of Software -
Eric Evans
APÊNDICEBIBLIOGRAFIA