1
April 05 Prof. Ismael H. F. Santos - [email protected] 1
Modulo IIntrodução ao XP
Prof. Ismael H F Santos
April 05 Prof. Ismael H. F. Santos - [email protected] 2
Ementa
Modulo VI – Xtreme ProgrammingValores e Princípios do XPDesenvolvimento centrado em Testes
Continuous IntegrationJUnit, Maven, Code-cruiser
2
April 05 Prof. Ismael H. F. Santos - [email protected] 3
Extreme ProgrammingVinicius Manhaes Teles, Novatec Editora
Bibliografia
April 05 Prof. Ismael H. F. Santos - [email protected] 4
IntroduçãoPOO-Java
3
April 05 Prof. Ismael H. F. Santos - [email protected] 5
Orientação a Objetos
A Decepção da UMLAnálise essencial dizia o QUE fazer, COMO fazer e QUANDOQuando surge a UML, o mercado queria um substituto para a Análise EssencialUML é uma linguagem e não um processo. Ela fornece os elementos, mas não define QUANDO usarO mercado rejeitou a UML por não compreendê-laRUP, XP são processos que se utilizam da UML
April 05 Prof. Ismael H. F. Santos - [email protected] 6
Orientação a Objetos
UMLSTRUCTURAL VIEW
Classe Objetos
IMPLEMENTATION VIEWComponentes
BEHAVIORAL VIEW
SequênciaColaboração
EstadosAtividades
USER VIEWUse Case
ENVIRONMENT VIEW
Implantação
4
April 05 Prof. Ismael H. F. Santos - [email protected] 7
Engenharia de Software
Pressman (1995) destaca que, ainda que várias definições tenham sido dadas à ES, todas reforçam a exigência da disciplina de engenharia no desenvolvimento de software. Abrange um conjunto de três elementos fundamentais:
métodos, ferramentas e procedimentos.
Desenvolvimento de Software é Ciência ou Arte?!?
April 05 Prof. Ismael H. F. Santos - [email protected] 8
Engenharia de Software
Os métodos detalham "como fazer" para se construir o software.
As ferramentas proporcionam apoio automatizado ou semi-automatizado aos métodos.
Os procedimentos constituem o elo de ligação que mantém juntos os métodos e suas ferramentas, e possibilita um processo de desenvolvimento claro, eficiente, visando garantir ao desenvolvedor e seus clientes a produção de um software de qualidade.
5
April 05 Prof. Ismael H. F. Santos - [email protected] 9
Engenharia de Software
RUP - Rational Unified Process
April 05 Prof. Ismael H. F. Santos - [email protected] 10
Engenharia de Software
XP Simplicidade, Comunicação, Feedback e Coragem
“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:
Indivíduos e interação MAIS QUE processos e ferramentas;Software em funcionamento MAIS QUE documentação abrangente;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.”
6
April 05 Prof. Ismael H. F. Santos - [email protected] 11
Engenharia de Software
XP Prevê a Participação intensa do usuário como membro efetivo da equipe;
Ciclos muito curtos – uma, duas semanas para dar retorno concreto;
Testes, Testes, Refactoring e TestesFaça o essencial para resolver o seu problema
Documente Sim! O que realmente for feitoMuito Interessante para Projetos Pequenos e Médios
April 05 Prof. Ismael H. F. Santos - [email protected] 12
Engenharia de Software
RUP ou XP?Existem aspectos positivos e negativos em cada uma das abordagens;Nem todos os contratos podem ser feitos na base da “camaradagem”Não pense duas vezes: Teste Duas Vezes!!!Será que você realmente tem que pagar uma fortuna por uma ferramenta?A Documentação deve ser feita e faz parte do Produto
final! Não vamos retroceder...Procure usar documentos padronizadosCuidado com aspectos Religiosos
7
April 05 Prof. Ismael H. F. Santos - [email protected] 13
Engenharia de Software
Qual é a nossa missão?Desenvolver Software:
Atendendo a todas as necessidades de todos os envolvidosCom o nível de qualidade esperado por nossos clientesDentro do PrazoDentro do Orçamento
April 05 Prof. Ismael H. F. Santos - [email protected] 14
Engenharia de Software
Diamante Mágico
Escopo
Custo
Qualidade
Prazo
8
April 05 Prof. Ismael H. F. Santos - [email protected] 15
Engenharia de Software
O Refinamento...
...Deve ser tanto...
...Quanto você precise!!
April 05 Prof. Ismael H. F. Santos - [email protected] 16
IntroduçãoPOO-Java
9
April 05 Prof. Ismael H. F. Santos - [email protected] 17
O que é XP?
Processo de desenvolvimento de softwareProjetos com requisitos muito voláteisEquipes pequenas (até ~10 pessoas)Desenvolvimento incremental
April 05 Prof. Ismael H. F. Santos - [email protected] 18
Premissa do desenvolvimento ágil
APRENDIZADOO cliente aprende durante o desenvolvimentoDescobre novas possibilidadesMuda as prioridadesSistema deve acompanhar o aprendizado
FEEDBACKDESENVOLVIMENTO ITERATIVO
10
April 05 Prof. Ismael H. F. Santos - [email protected] 19
AprendizadoO cliente aprende durante o desenvolvimentoDescobre novas possibilidadesMuda as prioridadesSistema deve acompanhar o aprendizado
April 05 Prof. Ismael H. F. Santos - [email protected] 20
Valores ePrincípios XP
POO-Java
11
April 05 Prof. Ismael H. F. Santos - [email protected] 21
Valores do XP
FeedbackComunicaçãoSimplicidadeCoragem
April 05 Prof. Ismael H. F. Santos - [email protected] 22
User Stories
Funcionalidades são informadas através de user storiesEstórias devem ser simplesDesenvolvedores estimam tempo
12
April 05 Prof. Ismael H. F. Santos - [email protected] 23
Planejamento
De posse das estimativas, épossível priorizarCliente entrega as estórias priorizadas para serem implementadasDesenvolvedores respeitam as prioridades dos clientesProjeto é dividido em partes: releases e iterações
April 05 Prof. Ismael H. F. Santos - [email protected] 24
Release e Iteração
R1 R2 R3 R4
I1
S1
8 Sem.
I2 I3 I4
2 Sem.
1 Sem.
S2
Projeto: 8 meses = 32 semanas
13
April 05 Prof. Ismael H. F. Santos - [email protected] 25
Release Planning
Cliente recebe um “orçamento” dos desenvolvedoresSeleciona as estórias prioritárias que possam ser implementadas dentro do orçamentoPode trocar estórias durante o release
R1 R2 R3 R4
8 Sem.
April 05 Prof. Ismael H. F. Santos - [email protected] 26
Iteration Planning
Cliente recebe um “orçamento”Não pode haver troca de funcionalidades durante uma iteraçãoVelocidade: quantidade de estórias que a equipe consegue implementar em uma iteração
I1 I2 I3 I4
2 Sem.
14
April 05 Prof. Ismael H. F. Santos - [email protected] 27
Stand-up meeting
Reunião rápidaDiáriaUsada para atualização da equipe
April 05 Prof. Ismael H. F. Santos - [email protected] 28
Desenvolvimento: orientação a objetos
Sistema é composto por pequenas peçasPeças têm objetivos específicosFacilita construçãoFacilita evolução
15
April 05 Prof. Ismael H. F. Santos - [email protected] 29
Pair Programming
Todo código é escrito em parDuas pessoas trabalham em um único computadorUma digita, enquanto a outra revisa, corrige e sugere
April 05 Prof. Ismael H. F. Santos - [email protected] 30
Collective code ownership
Todos são responsáveis por todas as partes do sistemaCódigo tem que estar sempre “limpo”Todos são capazes de modificá-lo
16
April 05 Prof. Ismael H. F. Santos - [email protected] 31
Refactoring
Melhorar o código permanentementeAlterações na implementação sem afetar a interface
April 05 Prof. Ismael H. F. Santos - [email protected] 32
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 concepção da peça
17
April 05 Prof. Ismael H. F. Santos - [email protected] 33
Unit Test
Teste feito sobre cada classeCada classe possui um unit test associado a elaTestes são automatizadosQuando uma nova classe entra no sistema, todos os testes são executados
April 05 Prof. Ismael H. F. Santos - [email protected] 34
18
April 05 Prof. Ismael H. F. Santos - [email protected] 35
April 05 Prof. Ismael H. F. Santos - [email protected] 36
Desenvolvimento em equipeComo conciliar diversos desenvolvedores?Estrutura de diretóriosAtualização do código por várias pessoas diferentes
19
April 05 Prof. Ismael H. F. Santos - [email protected] 37
Repositório
April 05 Prof. Ismael H. F. Santos - [email protected] 38
CVS
20
April 05 Prof. Ismael H. F. Santos - [email protected] 39
CVS
April 05 Prof. Ismael H. F. Santos - [email protected] 40
jCVS
21
April 05 Prof. Ismael H. F. Santos - [email protected] 41
CVS – Principais conceitosCheck outAddCommitUpdateConflictRemove
April 05 Prof. Ismael H. F. Santos - [email protected] 42
jCVS
22
April 05 Prof. Ismael H. F. Santos - [email protected] 43
Integração contínuaMáquina destacada para a integraçãoIntegração ocorre diversas vezes ao diaOs testes são executados em cada integraçãoCorreções são feitas imediatamente
April 05 Prof. Ismael H. F. Santos - [email protected] 44
Ambientes para deployment
Como lidar com diferentes ambientes?Exemplo:
DesenvolvimentoAceitaçãoProdução
23
April 05 Prof. Ismael H. F. Santos - [email protected] 45
Ambientes para deployment
Desenvolvimento
Aceitação
Produção
April 05 Prof. Ismael H. F. Santos - [email protected] 46
Problemas de ter vários ambientes
Possíveis erros devido a tarefas manuais repetitivasGasto de tempo
24
April 05 Prof. Ismael H. F. Santos - [email protected] 47
Automatização do deployment
Agiliza as integraçõesEvita erros
April 05 Prof. Ismael H. F. Santos - [email protected] 48
Ant
25
April 05 Prof. Ismael H. F. Santos - [email protected] 49
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>
targ
et
tasks
April 05 Prof. Ismael H. F. Santos - [email protected] 50
Ambiente de Desenvolvimento
Desejável que tenha:Code completionValidação on-lineSuporte à depuraçãoSuporte a refactoringIntegração com jUnitIntegração com CVSIntegração com Ant
26
April 05 Prof. Ismael H. F. Santos - [email protected] 51
Exemplos
April 05 Prof. Ismael H. F. Santos - [email protected] 52
Importância da IDE para o XP
Ganho de tempoAutomaçãoFacilidade de usoVerificação permanente do código
27
April 05 Prof. Ismael H. F. Santos - [email protected] 53
Importância da IDE para o XP
April 05 Prof. Ismael H. F. Santos - [email protected] 54
XP no Brasil
2000: algumas práticas começam a ser usadas em projetos no SulDez/2002: primeiro XP BrasilJan/2003: fundação do XP RioFev/2003: projeto full-XP em uma grande empresa brasileira (em andamento)Set/2003: lançamento previsto do primeiro livro brasileiro sobre XP
28
April 05 Prof. Ismael H. F. Santos - [email protected] 55
Referências sobre XP
Site Xispêhttp://www.xispe.com.brXP Riohttp://www.yahoogroups.com/groups/xprioLista Xpershttp://www.yahoogroups.com/groups/xpers
April 05 Prof. Ismael H. F. Santos - [email protected] 56
Referências sobre as ferramentas
jUnithttp://www.junit.orgCVShttp://www.cvshome.orgAnthttp://ant.apache.orgIntelliJhttp://www.intellij.com