Práticas do XP - WordPress.com · O ritmo sustentável é mais produtivo n O XP recomenda que as...
Transcript of Práticas do XP - WordPress.com · O ritmo sustentável é mais produtivo n O XP recomenda que as...
Práticas do XP
Tópicos
n Ritmo sustentáveln Integração contínuan Releases curtosn A organização do ambiente de trabalhon A equipe de desenvolvimento
2
Ritmo sustentável
3
Trabalho em excesso
n Segundo Frederick Brooks (1995) o problema maisrecorrente nos projetos de software é a falta de tempopara finalizar o projeto.
n As restrições de tempo sobre o projeto acabam levandomuitas equipes a trabalhar em excesso.
n Essa solução pode, ao invés de resolver o problema,piorá-lo.
n As conseqüências vão, desde uma maior lentidão naresolução de problemas, até a introdução de erros nosoftware.
4
O ritmo sustentável é mais produtivo
n O XP recomenda que as pessoas trabalhem oito horas pordia (40h semanais).
n Isso demonstra respeito pela individualidade e aintegridade de cada membro da equipe.
n Aumenta a agilidade do projeto.n No modelo industrial, o aumento do trabalho e da
operação das máquinas normalmente aumenta aprodução.
n No desenvolvimento de software este princípio não podeser aplicado, uma vez que se trata de um trabalho queexige muita concentração e criatividade.
5
Integração contínua
6
Integração
n Um software desenvolvido em equipe é dividido empartes.
n Cada programador fica responsável por uma parte, epelos seus testes.
n Para que o sistema funcione é necessário integrar asvárias partes desenvolvidas.
n Para isso é necessário convencionar as interfaces.n Em teoria essa estratégia funciona bem, na prática podem
ocorrer os seguintes problemas:
7
Causas dos problemas de integração
n As interfaces convencionadas não são respeitadas. Porexemplo, assinatura de métodos não conferem ou objetosnão se comportam como deveriam.
n Não houve compreensão por parte de um desenvolvedorda interface do outro.
n O sistema como um todo é pouco coeso.n Quanto mais tempo a equipe demora para integrar, maior
é o risco de problemas na integração (por exemplo asinterfaces podem ser alteradas e não serem publicadascorretamente para os desenvolvedores.
8
Integração contínua
n O XP propõe que a equipe integre e teste o sistema inteirodiversas vezes ao dia.
n Uma das dificuldades para efetuar essa prática é acompilação e ligação do sistema, que deve ser mantidobaixo ao longo de todo o projeto. Existem diversas formasde fazer isso:n Fazer com que a interdependência entre os arquivos seja baixa.n Fazer com que o compilador só compile os arquivos que tiverem
sido editados e utilize diretamente o código objeto para os demais.n Trabalhar com a carga dinâmica de bibliotecas quando isso for
possível.
9
Fases pelas quais o código passa
1. Local – Primeira fase do desenvolvimento. O par acaboude começar a trabalhar no código e as mudanças queexecutaram ainda não estão disponíveis para os outrosdesenvolvedores.
2. Candidato à liberação – O par terminou a sua tarefa eestá pronto para disponibilizar o novo código contendosuas alterações para os demais desenvolvedores.
3. Disponibilizado no repositório – Esta é a versão oficialcorrente do código. Os teste de unidade executam com100% de sucesso. As alterações do par se tornamdisponíveis para todos os desenvolvedores.
10
Liberação de mudanças
n Enquanto um par programa, outros também estãofazendo alterações e sempre há uma chance de que maisde um par tenha editado e alterado o mesmo código.
n Por isso é importante que exista um processo disciplinadopara que se possa fazer a liberação de mudanças deforma rápida e com o mínimo de risco.
11
Passos para a liberação de mudanças
1. Sempre comece a trabalhar com o código mais atual quese encontra no repositório.
2. Escreva os testes de unidade que são necessários para asua tarefa. Os testes de unidade devem ser escritosantes do código.
3. Rode todos os testes de unidade.4. Conserte qualquer teste que esteja quebrado.5. Quando todos os testes de unidade estiverem rodando
com 100% de sucesso as alterações locais se tornamcandidatas a liberação, podendo ser colocadas norepositório.
12
Passos para a liberação de mudanças
6. O código que é candidato a liberação é integrado com ocódigo atual do repositório.
7. Se o código do repositório tiver sido alterado enquantovocê fazia a mudança, compare as diferenças entre assuas mudanças e o código do repositório. Identifique asmudanças que tiverem sido adicionadas pelo outro par eintegre estas mudanças com as suas.
8. Uma vez que você tenha integrado as suas mudanças ,execute os testes de unidade na máquina de integração.
9. Quando os testes de unidade estiverem executando com100% de sucesso, coloque todo o código da máquina deintegração no repositório.
13
Máquina separada para a integração
n Integrar em uma máquina separada isola o código no qualvocê está trabalhando daquele que está no repositório.
n Ritual de passagem: o código deixa de pertencer ao parque o criou e passa a ser coletivo, estando disponível paratodos os desenvolvedores.n Apenas um par pode integrar de cada vez. Ter uma máquina
separada ajuda a disciplinar a equipe, pois deixa muito evidentequando existe um par integrando.
14
Ferramentas
n Ferramenta de build: utilizada para compilar todo osistema e executar outras atividades que se façamnecessárias para que ele possa ser executado.
n Sistema de controle de versão (repositório): armazenatodos os códigos fontes do sistema mantendo a versãodeles.
15
Atividades suportadas pelo repositório
n Identificar mudanças locais.n Mostrar a diferença entre alterações locais e o código que
está no repositório.n Identificar quem colocou uma determinada mudança no
repositório e quando isso aconteceu.n Fundir mudanças locais com o código que está no
repositório.n Voltar a versão de um código que já existia no repositório
antes da integração.
16
GCVS (Sistema de Controle de Versão)
17
GCVS - Características
n Gerenciamento de projeto em equipe.n Log de todas as alterações realizadas.n Histórico de todas as mudanças feitas, isto permite voltar
a uma versão anterior em caso de problemas, e ver o quehouve de errado com o código.
n Permite visualizar facilmente o que foi modificado entreduas versões de um arquivo.
18
Jakarta ANT (Ferramenta de build)
19
Jakarta ANT - Características
n Ao contrário do make que utiliza extensões baseadas noshell , utiliza classes Java e seus arquivos de configuraçãosão baseados em XML.
n Portanto, é uma ferramenta multiplataforma que foiintegrada a diversos IDEs (ex. Eclipse, Netbeans, Jbuilderetc).
20
Releases curtos
21
Releases
n Cada release representa um conjunto de funcionalidadesimplementadas que representam um valor bem definidopara o cliente e que é colocado em produção para quetodos os usuários possam ser beneficiar dele.
22
Retorno de investimento
n Um projeto de software é um investimento.n O cliente investe uma certa quantidade de recursos na
expectativa de obter um retorno dentro de um certoprazo.
n Este retorno pode se materializar de diferentes formas,tais como:n Aumento de vendasn Melhoria na qualidade de seus produtosn Racionalização da produçãon Redução de custosn Abertura de um novo canal de relacionamento com os clientes
23
Fluxo de caixa de um projeto tradicional
24
Fluxo de caixa de um projeto XP
25
A organização do ambiente de trabalho
26
Ambiente de trabalho
n A forma como a equipe se organiza influencia diretamentea sua capacidade de adotar as práticas do XP.
n O XP recomenda que o ambiente de trabalho seja abertoe público de modo que:n Todos os membros da equipe possam trabalhar próximos uns dos
outros;n Cada pessoa possa escutar as eventuais perguntas de seus
colegas;n Seja possível escutar uma conversa “acidentalmente” em relação à
qual um membro da equipe tenha uma contribuição vital.
27
Mesas e cadeiras
n As mesas usadas pelos desenvolvedores devem permitirque duas pessoas trabalhem juntas.
n As cadeiras devem ter braços ajustáveis e sejamergonômicas.
28
Mesas e cadeiras
n As mesas devem ser arranjadas de modo que ela consigaaproximar ao máximo os desenvolvedores. O ideal éarrumá-las de modo a formar uma área central ao redorda qual todos os desenvolvedores se posicionem.
29
Equipamentos
n Os computadores devem ser velozes, com muita memória,discos rápidos e com grande capacidade dearmazenamento.
n A rede deve ser rápida.n Os monitores devem ser grandes e com alta qualidade de
imagem.n Deve haver uma máquina separada para integração.n É recomendável que exista um servidor, acessível também
pela Web, para armazenar documentações do projeto,manuais etc.
30
Mural
n Serve para a colocação dos cartões da iteração.n Neste, deve-se criar três colunas com as seguintes
informações: cartões não-iniciados, cartões emandamento, cartões finalizados.
31
Quadro branco
n Usado para apoiar as discussões e debates da equipe.n Fornece um local no qual a equipe pode fazer desenhos e
anotações e compartilhá-los facilmente com todos osmembros.
32
Mandamentos
n Representam regras que devem ser seguidas no projeto.Costuma ser fixados na parede com letras grandes.
33