• Nenhum resultado encontrado

Aula 10 - XP

N/A
N/A
Protected

Academic year: 2021

Share "Aula 10 - XP"

Copied!
25
0
0

Texto

(1)

XP - Extreme Programming

Engenharia de Software

(2)

Lewis Carroll

“Se você não sabe para onde você quer ir, qualquer caminho você pode seguir e

(3)

XP

– Extreme Programming

Extreme Programming, mais conhecido simplesmente como XP, foi criado por Kent Beck nos anos 90, e

é um dos métodos ágeis que melhor cobre aspectos técnicos do desenvolvimento de software.

O Extreme Programming (XP) utiliza uma abordagem “extrema” no desenvolvimento iterativo.

• Novas versões podem ser construídas várias vezes por dia.

• Incrementos são entregues aos clientes a cada 2 semanas.

• Todos os testes devem ser realizados em todas as versões e cada versão só é aceita se os testes forem concluídos com sucesso.

(4)

XP - Extreme Programming

O desenvolvimento incremental é mantido através de releases de sistema pequenos e frequentes.

• O envolvimento do cliente significa compromisso do cliente com a equipe em tempo integral.

• “Pessoas e não processos” por meio de programação em pares, propriedade coletiva do código e um processo que evita longas horas de trabalho.

Mudanças suportadas através de releases regulares de sistema.

(5)
(6)

Valores XP

• Comunicação

• O cliente de um projeto de software tem um conjunto de problemas que deseja solucionar com o sistema em

desenvolvimento e possui algumas ideias sobre que funcionalidades podem resolvê-los.

• Por sua vez, desenvolvedores possuem conhecimento sobre aspectos técnicos que influenciam a forma de

solucionar o problema do cliente.

• Para que os desenvolvedores compreendam o que o cliente deseja e este último entenda os desafios técnicos

que precisam ser vencidos, é preciso que haja comunicação entre as partes.

XP prioriza o uso do diálogo presencial, com o objetivo de garantir que todas as partes envolvidas em um projeto tenham a chance de

(7)

Valores XP

Feedback

Feedback significa fazer perguntas e aprender com as respostas.

• A única maneira de saber o que o cliente realmente quer é perguntar a ele.

• A única maneira de saber se o código faz o que realmente deve fazer é testá-lo.

Quanto mais cedo você pode obter feedback, mais tempo você tem para reagir.

XP fornece rápido e frequente feedback. As práticas XP apoiam o

(8)

Valores XP

• Simplicidade

• Construa apenas o que precisa ser construído.

• Não adicione complexidade desnecessária.

• Não tente prever o futuro.

“Eu acho que vamos precisar disso no futuro, então, vou aproveitar e já fazer”.

O princípio YAGNI (You Ain’t Gonna Need It ou Você não vai precisar disso)

(9)

Valores XP

• Coragem

• Significa tomar as decisões duras quando necessário: se um recurso não está funcionando, corrija-o; se algum

código não é lá essas coisas, melhore-o; se você não vai ter como entregar tudo o que prometeu, informe ao cliente.

• A coragem é uma virtude difícil de aplicar. Ninguém quer estar errado ou quebrar uma promessa. A única

maneira de se recuperar de um erro, no entanto, é de admiti-lo e corrigi-lo.

Equipes XP consideram mudanças inevitáveis e procuram se adaptar a elas com segurança e com coragem.

(10)

Valores XP

• Respeito

• Para com os outros e para consigo mesmo.

• Membros de uma equipe só irão se preocupar em comunicar-se melhor, por exemplo, caso se importem uns

com os outros. Respeito é o mais básico de todos os valores.

• Ninguém na equipe deve se sentir desvalorizado ou ignorado.

(11)
(12)
(13)

Mudanças e XP

• O senso comum da engenharia de software diz que se deve projetar pensando em mudanças.

• Vale a pena gastar tempo e esforço antecipando as mudanças já que, posteriormente, esse esforço reduz custos no ciclo de vida.

• No entanto, o XP afirma que isso não vale a pena já que as mudanças não podem ser antecipadas de forma confiável.

• Ao invés disso, propõe melhorias constantes do código (refatoração) para tornar as mudanças mais fáceis quando essas precisam ser implementadas.

(14)
(15)
(16)

Refatoração

• Refatorar é alterar a estrutura do código sem alterar o seu comportamento. É uma prática que permite que o desenvolvedor melhore o design do código, tornando-o mais limpo e fácil de se compreender.

• É uma técnica essencial para prevenir que o código se deteriore.

• Para que o desenvolvedor possa alterar o código com segurança de que o comportamento não será alterado, é essencial que o código possua uma boa base de testes.

“Qualquer idiota pode escrever código que um computador pode entender. Bons programadores escrevem código que seres humanos

(17)

Exemplos de Refatoração

• Reorganização de uma hierarquia de classes para remover código duplicado.

• Organização e renomeação de atributos e métodos para torná-los mais fáceis de entender.

(18)
(19)

Test-Driven Development (TDD)

• Escrever teses antes do código esclarece o que deve ser implementado.

• Os testes são escritos na forma de programas para que possam ser executados automaticamente.

• Os testes incluem checagem de que foram executados corretamente.

Geralmente conta com um framework de testes como o Junit.

• Todos os testes anteriores e novos são executados automaticamente quando uma nova funcionalidade é adicionada, para checar se a nova funcionalidade não introduziu erros.

(20)

Envolvimento

do Cliente

• A função do cliente no processo de testes é ajudar a desenvolver testes de aceitação para as histórias que serão implementadas no próximo release do sistema.

• No entanto, a pessoa que assume a função de cliente tem tempo limitado disponível e não pode trabalhar em tempo integral com a equipe de desenvolvimento.

• Eles podem pensar que prover os requisitos seja contribuição suficiente e se tornarem relutantes em se envolverem no processo de testes.

(21)

Automação

de Testes

• A automação de testes significa que os testes são escritos como componentes executáveis antes que a tarefa seja implementada.

• Esses componentes de teste devem ser autômatos, devem simular a submissão de entrada para ser testada e devem avaliar se o resultado atende à especificação de saída Um framework de testes

automatizados (ex. Junit) é um sistema que facilita a escrita de testes executáveis e a submissão de um conjunto de testes para execução.

• Como os testes são automatizados, sempre existe um conjunto de testes que podem ser rapidamente e facilmente executados.

(22)

Programação em Pares

• Em XP, programadores trabalham em pares sentando junto para desenvolver código.

• Isso ajuda a desenvolver propriedade coletiva do código e espalha o conhecimento na equipe.

• Serve como um processo de revisão informal pois cada linha do código é observada por mais de uma pessoa.

• Encoraja a refatoração pois toda a equipe pode se beneficiar dessa atividade.

• Algumas avaliações sugerem que a produtividade do desenvolvimento com programação em pares é similar a de duas pessoas trabalhando independentemente.

(23)

Programação em Pares

• Na programação em pares os programadores sentam-se juntos na mesma estação de trabalho para desenvolver softwares.

• Os pares são criados dinamicamente para que todos os membros da equipe trabalhem com cada um dos outros membros durante o processo de desenvolvimento.

• O compartilhamento de conhecimento que acontece durante a programação em pares é muito importante por reduzir os riscos gerais de um projeto quando um membro da equipe vai embora.

(24)

Vantagens

da Programação em Pares

• Apoia a ideia da propriedade coletiva e responsabilidade pelo sistema.

• Os indivíduos não são responsabilizados por problemas no código. Ao invés disso, a equipe tem responsabilidade coletiva na solução desses problemas.

• Funciona como um processo de revisão informal porque cada linha de código é observada por pelo menos duas pessoas.

• Ajuda a apoiar a refatoração, que é um processo de melhoria do software.

• Em processos nos quais a programação em pares e a propriedade coletiva são usados, outros se beneficiam imediatamente da refatoração, o que provavelmente fará com que apoiem o processo.

(25)

Referências

Documentos relacionados

Our contributions are: a set of guidelines that provide meaning to the different modelling elements of SysML used during the design of systems; the individual formal semantics for

Curvas de rarefação (Coleman) estimadas para amostragens de espécies de morcegos em três ambientes separadamente (A) e agrupados (B), no Parque Estadual da Ilha do Cardoso,

Nessa situação temos claramente a relação de tecnovívio apresentado por Dubatti (2012) operando, visto que nessa experiência ambos os atores tra- çam um diálogo que não se dá

Não houve diferenças estatísticas no tipo de bactéria isolada segundo os grupos definidos (Streptococcus sp, outros aeróbios e anaeróbios) com relação ao uso ou não

variáveis “potência de UV irradiada” e pH , quando a variável [CN - ]0 está em seu nível inferior e a variável “razão molar [H2O2]:[CN - ]” estão em seu nível superior

Inicialmente, há necessidade de dados para resolução dos problemas existentes no desempenho da cultura no campo e, posteriormente, na indústria; alguns destes dados são: tipo de

Após a reunião com a equipa multidisciplinar caso a Casa da Praia não consiga ir ao encontro das necessidades da criança, esta poderá ser encaminhada para outro serviço

A very simple and practical way of removing a trend is done by fitting a trend surface to the original values by minimum least squares and then subtracting the value of the