Inspeção de Software
Inspeção de software é um tipo particular de revisão que pode ser aplicado a todos os artefatos de software e possui um processo de detecção de defeitos rigoroso e bem definido. A Figura a seguir ilustra a possibilidade de se realizar inspeções nos diferentes artefatos de software:
Vamos revisar e adicionar algumas definições:
Erro: É um defeito cometido por um indivíduo ao tentar entender uma determinada informação, resolver um problema ou utilizar um método ou uma ferramenta.
Defeito (ou Falta): É uma manifestação concreta de um erro num artefato de software. Um erro pode resultar em diversos defeitos.
Falha: É o comportamento operacional do software diferente do esperado pelo usuário. Uma falha pode ter sido causada por diversas faltas e algumas faltas podem nunca causar uma falha.
Omissão:
Algum requisito importante relacionado à funcionalidade, ao desempenho, às restrições de projeto, ao atributo, ou à interface externa não foi incluído;
não está definida a resposta do software para todas as possíveis situações de entrada de dados;
faltam seções na especificação de requisitos;
faltam referências de figuras, tabelas, e diagramas;
falta definição de termos e unidades de medidas.
Ambiguidade: Um requisito tem várias interpretações devido a diferentes termos utilizados para uma mesma característica ou vários significados de um termo para um contexto em particular.
Inconsistência: Dois ou mais requisitos são conflitantes.
Fato Incorreto: Um requisito descreve um fato que não é verdadeiro, considerando as condições solicitas para o sistema.
Informação Estranha: As informações fornecidas no requisito não são necessárias ou mesmo usadas.
Outros: Outros defeitos como a inclusão de um requisito numa seção errada do documento.
Benefícios da Aplicação de Inspeções de Software
Esforço, Produtividade, Tempo e Custo.
O esforço gasto por organizações de software com retrabalho pode variar em média entre 40% e 50% do esforço total do desenvolvimento de um projeto.
O retrabalho tende a aumentar na medida em que o desenvolvimento progride. Uma das razões para isto é o aumento no esforço para corrigir defeitos nas atividades finais do processo de desenvolvimento.
Assim, um dos maiores benefícios de se utilizar inspeções de software é a detecção de defeitos nas fases iniciais do processo de desenvolvimento de software, facilitando a correção destes defeitos com menor esforço e custo.
Produtividade. De acordo com (GILB e GRAHAM, 1993), inspeções aumentam a produtividade de 30% a 50%;
Tempo. De acordo com (GILB e GRAHAM, 1993), inspeções reduzem o tempo de desenvolvimento de 10% a 30%;
Custo. Resultados de estudos mostram que a introdução de inspeções de código pode reduzir os custos de implementação de projetos em 39%.
É interessante aplicar tanto inspeções quanto testes para detectar defeitos em artefatos de software.
Em resumo, o objetivo de inspeções de software é melhorar a qualidade de artefatos de software através de sua análise, detectando e removendo defeitos antes que o artefato seja passado para a próxima fase do processo de desenvolvimento de software. Conforme visto neste artigo, a aplicação de inspeções entre as atividades do ciclo de vida de software pode trazer diversos benefícios para organizações de software.
Walkthrough
"Travessia" é um esforço conjunto de revisão com a finalidade de melhorar a qualidade do produto em trabalhos de desenvolvimento de softwares; (na televisão) ensaio geral sem câmaras; (no teatro) ensaio geral da peça.
Pair Programming
O conceito básico que envolve a prática de programação em par é o seguinte:
compartilhar a codificação de uma classe, de um método ou de um trecho de código paralelamente entre 2(dois) programadores, onde, ambos trabalham ao mesmo tempo e no mesmo computador, mas claro que invertendo periodicamente entre os papéis do piloto e do co-piloto, ou seja, enquanto um dos programadores está codificando, o outro acompanha seu trabalho, observando se os padrões de projeto estão sendo seguidos, se a declaração das variáveis e métodos estão seguindo a mesma nomenclatura padrão, se sintaxe utilizada está correta, se método que está sendo implementado não pode ser simplificado, inclusive, já observando as possibilidades de refatoração no mesmo, se as regras de negócios estão de acordo com os casos de usos ou com os cartões, se os testes unitários ou de integração estão sendo seguidos a risca e de maneira geral, os programadores trabalham em par para compartilhar conhecimentos para melhor implementar as estórias definidas nos cartões.
Vantagens
Uma grande vantagem da programação em par é o fato de a mesma favorecer o uso de outras práticas XP, como por exemplo:
rodízio de pessoas
código coletivo
ritmo sustentável
padrões de projeto
Rodízio de pessoas: uma vez que consiga dividir sua equipe em duplas, torna-se então possível fazermos periódicas trocas de pares, visando com que todos os membros compartilhem o conhecimento agregado no código produzido, favorecendo dessa forma à prática de propriedade coletiva do código, ou seja, nem uma classe ou método está somente sob a guarda de um único programador e todos possuem a mesma visão de todo o projeto.
Em projetos que usam a prática de programação em par existem também vantagens com relação à qualidade do código produzido, pois é observado que:
Há um aumento significativo na atenção depositada na codificação do software;
O rigor é maior no objetivo de seguir os padrões definidos para aquele projeto;
Dedicação do trabalho mental do momento, para o que está sendo executado em, dupla, pois dessa forma anula-se, à vontade de checar e-mails, acessar o Facebook, atender telefonemas não produtivos, reuniões não produtivas e outras atividades na Internet que são fatores críticos de desvio de atenção.
A quantidade de erros de sintaxe diminui;
A necessidade de refatoração diminui;
Os erros dos testes unitários também diminuem;
Os programadores somam conhecimento para produzir códigos mais criativos e eficazes.
Fontes:
http://www.devmedia.com.br/artigo-engenharia-de-software-introducao-a-inspecao-de-software/8037
http://tradutor.babylon-software.com/ingles/portugues/walkthrough/
http://www.devmedia.com.br/implementando-pair-programming-em-sua-equipe/1694