Escolar Documentos
Profissional Documentos
Cultura Documentos
Inserir ÁgeisAqui
Inserir
com Extreme
Título Aqui
Programming (XP)
Validação e Verificação em XP
Revisão Textual:
Prof.ª Dr.ª Selma Aparecida Cesarin
Validação e Verificação em XP
Objetivos
• Conhecer as boas práticas da XP.
Caro Aluno(a)!
Normalmente, com a correria do dia a dia, não nos organizamos e deixamos para o
último momento o acesso ao estudo, o que implicará o não aprofundamento no material
trabalhado ou, ainda, a perda dos prazos para o lançamento das atividades solicitadas.
Assim, organize seus estudos de maneira que entrem na sua rotina. Por exemplo, você
poderá escolher um dia ao longo da semana ou um determinado horário todos ou alguns
dias e determinar como o seu “momento do estudo”.
Após o contato com o conteúdo proposto, participe dos debates mediados em fóruns de
discussão, pois estes ajudarão a verificar o quanto você absorveu do conteúdo, além de
propiciar o contato com seus colegas e tutores, o que se apresenta como rico espaço de
troca de ideias e aprendizagem.
Bons Estudos!
UNIDADE
Validação e Verificação em XP
Contextualização
Bem, você já deve conhecer a cena clássica em Empresas que desenvolvem software
em nosso país, não é mesmo?!
Empresa pequena, poucos funcionários, todo mundo fazendo tudo, muitos salvado-
res da pátria, clientes rosnando o dia todo e você atrasado com as entregas, cheio de
coisa para fazer, não sabe nem por onde começar e quando acha o fio da meada e se
concentra para desenvolver, vem logo um telefonema dizendo que o usuário precisou
fazer uma mudança num requisito, por necessidade do negócio.
Então, você fica sabendo de Empresas e colegas que, ao contrário, obtém sucesso nas
entregas e têm um ar mais descarregado, menos estresse.
Você conversa com eles e a notícia é sempre a mesma: métodos ágeis, desenvolvi-
mento enxuto, scrum e XP.
Você tem contato com as 12 práticas e algo chama a sua atenção, porque parece
óbvio, mas no caos em que você está, fica meio sem sentido, porque simplesmente
não há tempo para isso... arrumar tempo para inventar metáforas, fazer um design
simples, realizar testes e fatoração constante...
Sim, mas eles conseguem, e o que é o melhor, fazem grandes aplicações de software
que funcionam e deixam o cliente feliz. Principalmente porque, pasmem, o cliente está tra-
balhando no mesmo ambiente que os desenvolvedores.
Blasfêmia!
Saiba que mais que nunca, XP é utilizado e desejado pelas grandes corporações
exatamente porque prega práticas possíveis e viáveis de tal forma que incrementam
a produtividade e os resultados.
Isso significa que você deve aprender essas técnicas e práticas agora!
Vamos lá?!
6
Introdução
XP usa, em vez de uma Arquitetura formal, uma simples história compartilhada de
como o Sistema funciona, ou seja, uma metáfora.
Essa história, geralmente, envolve um punhado de classes e padrões que moldam o fluxo
principal do Sistema que está sendo construído; porém, não são úteis em todos os projetos.
Estrutura em larga escala de software, por exemplo, em geral não é essencial. Mas,
não pense que se resolve com alguma técnica trivial ou padrão; muito pelo contrário;
teríamos de usar uma linguagem ubiquitous para promover entendimento comum do
domínio do negócio.
Porém, aqui se faz necessária uma distinção, conforme Ubiquitous Language (2012),
uma metáfora de Sistema diz respeito à Arquitetura da solução, enquanto uma Linguagem
Ubiquitous começa com o domínio do negócio.
Metáfora
A Metáfora do Sistema é uma das principais práticas do Processo de Desenvol-
vimento de software conhecido como XP. A prática da Metáfora do Sistema ainda
é mal compreendida e é a prática que as equipes de XP mais comumente escolhem
ignorar (BIDDLE, 2004).
7
7
UNIDADE
Validação e Verificação em XP
Como identifico uma metáfora para o Sistema em desenvolvimento? Como eu sei que
é bom? O que faz uma boa metáfora? Editar-clarificação? Pode uma má metáfora fazer
mais mal do que bem? O que isso habilita? Como eu fico bom em encontrar metáforas?
8
• Use as analogias em todas as comunicações: código-fonte, planejamen-
to de reuniões, falar com os usuários ou abandonar Deus, escrevendo
a documentação. Se você achar que os conceitos que você usa não se
encaixam em alguma área, tente encontrar uma metáfora melhor.
Design Simples
A Agile Alliance (2018) defende que uma equipe que adota a prática do “design sim-
ples” baseia sua estratégia de design de software nos seguintes princípios:
• Design é uma atividade contínua, que inclui refatoração e heurísticas,
como YAGNI;
É enganoso invocar a prática de design simples para justificar decisões que têm a ver
com os requisitos de um cliente ou proprietário do produto, ou considerações de usa-
bilidade. Essas práticas podem ser muito inconsistentes se o grupo de desenvolvedores
for muito grande ou distribuído em vários locais.
Para utilizar essas práticas, a Agile Alliance ainda sugere que as equipes:
• Mantenham um backlog de tarefas específicas de design:
9
9
UNIDADE
Validação e Verificação em XP
Portanto, tire da sua cabeça que a atividade de design é feita uma única vez, em uma
fase obscura de algum ciclo de vida de projeto de software criado por algum ninja.
Afinal, ver o design como um evento único é simplista e restrito, ele é um processo
contínuo que acontece nos níveis conceitual e físico. Isso faz todo o sentido quando você
considera que a mudança é um dado e nós nunca temos certeza do que está por vir.
Não use design simples como uma desculpa para um design ruim. Simpli-
cidade requer um pensamento cuidadoso. Como diz a citação de Einstein
10
no início desta seção, é muito mais fácil criar projetos complexos do que
os simples. Não finja que “simples” significa “mais rápido” ou “mais fácil”.
Testes
Sabemos que XP reinventou a forma de escrever código, principalmente, no que-
sito de aplicação de testes.
Baird (2002) escreve que “Quando eles escrevem todos os testes para esse compo-
nente, eles escrevem apenas código suficiente para passar no teste. Escrever testes nos
fornece um conjunto completo para o nosso sistema e escrevemos a coisa mais simples
que poderia funcionar”.
Add a test
[Pass]
Run the test
[Fail]
Make a little
change
[Development
continues]
[Fail]
Run the test
[Development
stops]
11
11
UNIDADE
Validação e Verificação em XP
Fowler (2014), um dos apoiadores e desenvolvedores do XP, junto com Kent Beck
(criador do XP), que também fez o TDD – Test Driven Development, define o teste
de unidade:
Apesar das variações, existem alguns elementos comuns. Em primeiro
lugar, há uma noção de que os testes de unidade são de baixo nível,
concentrando-se em uma pequena parte do sistema de software. Em
segundo lugar, os testes unitários geralmente são escritos hoje em dia
pelos próprios programadores, usando suas ferramentas regulares – a
única diferença é o uso de algum tipo de estrutura de testes unitários.
Em terceiro lugar, espera-se que os testes unitários sejam significativa-
mente mais rápidos do que outros tipos de testes.
Imagine que você está testando o método de preço de uma classe de pedidos. O método
de preço precisa invocar algumas funções nas classes de produto e cliente. Se você quiser
que seus testes unitários sejam solitários, não deseja usar o produto real ou classes de
clientes aqui, porque uma falha na classe do cliente faria com que os testes da classe de
pedido falhassem. Em vez disso, você usa Test Doubles para os colaboradores.
Por fim, lembre-se que a maioria das linguagens possui frameworks de testes unitários.
Você deve procurar um que se adapte ao jeito da sua equipe desenvolver as coisas, os testes,
geralmente, são executados periodicamente, normalmente, após cada alteração no código-
-fonte. Quanto mais vezes, melhor, porque pegaremos os problemas mais cedo.
12
Daí a necessidade de você escolher a ferramenta mais adequada para realizar a au-
tomação disso.
Vamos comentar, também, os outros tipos de testes envolvidos com XP, do mais bási-
co, que vimos até aqui, que é o Teste Unitário, até o desejável Teste de Aceitação, normal-
mente, feito pelo usuário.
13
13
UNIDADE
Validação e Verificação em XP
Você poderá utilizar vários frameworks para auxiliar na criação de testes de unida-
de, por exemplo: jUnit, xUnit, nUnit. Essas estruturas fornecem uma maneira formali-
zada de criar testes.
Refatoração
Teles (2006) escreve que a estrutura de qualquer Sistema tende a se degradar ao lon-
go do tempo, à medida que novas funcionalidades são inseridas, alterações são feitas,
erros são corrigidos e mais código é introduzido.
A refatoração é uma prática para que todas essas alterações venham a transformar o
Sistema em algo lento, obsoleto e ineficiente.
Refatorar envolve um processo ou ao menos uma rotina. Veja umas dicas sobre
como montar uma rotina:
• Encontre um teste de trabalho adequado para uma parte do código que você de-
seja refatorar;
• Proceda com a refatoração;
• Realize o teste de unidade da unidade que foi refatorada;
• Proceda com a repetição dos itens anteriores para todas as outras unidades
desenvolvidas.
14
Figura 4 – Exemplo de framework de trabalho XP contendo refatoração
Fonte: https://goo.gl/wm9VS7
15
15
UNIDADE
Validação e Verificação em XP
Material Complementar
Indicações para saber mais sobre os assuntos abordados nesta Unidade:
Vídeos
Refactoring Strategies: a walkthrough experiment
SATO, D. Refactoring Strategies: a walkthrough experiment. 2011.
https://goo.gl/UvQsbv
Universidade XTI - JAVA - 114 - Teste Unitário com JUnit
JAVA & CIA. Teste Unitário com JUnit. 2014.
https://youtu.be/MF2_IbbG2gA
10 Mandamentos do Teste Automatizado
GUERRA, E. 10 Mandamentos do Teste Automatizado. 2014.
https://youtu.be/OinhnbZWo3A
Leitura
Adoção da Metodologia Extreme Programming para Construção de Software
DIAS, T. M. R.; OLIVEIRA, J. L. L. Adoção da Metodologia Extreme Programming
para Construção de Software. 2009.
https://goo.gl/KrwHRU
16
Referências
FOWLER, M. UnitTest. 2014. Disponível em: <https://martinfowler.com/bliki/Unit-
Test.html>. Acesso em: 25 maio, 2018.
17
17