Inspeção de Software é uma das poucas técnicas que permite testar outros artefatos além de código fonte, principalmente no documento de definição de requisitos de software.
Revisões de Artefatos
Atualmente, uma grande parte das organizações utiliza uma quantidade enorme de informações e depende de aplicações de software para desenvolver seus trabalhos diante de um mercado competitivo que exige da empresa a informação certa para conduzir seus negócios (ROCHA, 2001). Para isso, as empresas devem possuir sistemas de informação adequados às mudanças impostas pelo mercado que convivem.
O uso destas informações nos sistemas é uma atividade de grande importância, pois somente com um software desenvolvido a partir das necessidades reais dos processos de negócio de uma empresa, pode-se garantir que as organizações poderão gerar informações confiáveis e em tempo hábil para tomada de decisão.
Para isso é importante gerar uma boa documentação ao longo de todo o ciclo de vida do software, pois é ela que define as características do produto de software.
A prevenção de erros deve ser realizada em todas as etapas do Ciclo de Vida do software para evitar a necessidade de ajustes e correções posteriores, já que toda alteração realizada causa impacto nos custos e no cronograma do projeto.
Para auxiliar na diminuição do retrabalho e dos custos gerados pelos defeitos de um sistema, devem ser promovidas revisões nos artefatos gerados por cada fase de seu ciclo de vida.
Figura 1 – Ciclo de vida do software e a inspeção
Qualidade de Software
A complexidade e o escopo dos sistemas vêm crescendo, acompanhando a evolução dos processos organizacionais. Por esses motivos, a garantia de qualidade de software, extremamente importante para a satisfação das necessidades dos clientes, tem se tornado mais difícil e custosa.
Segundo Pressman (2002), a garantia de qualidade de software está na “Conformidade a requisitos funcionais e de desempenho que foram explicitamente declarados, a padrões de desenvolvimento claramente documentados, e a características implícitas que são esperadas de todo software desenvolvido por profissionais”.
Além disso, a construção de um sistema é realizada por diversas pessoas que interagem em momentos distintos do processo de produção e, ao evoluir a solução, podem também inserir problemas.
Os problemas encontrados em um sistema podem ser classificados em três tipos:
- Defeito: É qualquer imperfeição ou inconsistência no produto do software ou em seu processo, um defeito é também uma não conformidade. Resultado encontrado num código ou num documento;
- Erro: O Erro pode ser um resultado de um defeito ou uma falha, como um retorno inesperado, que por causa de uma falha teve um valor diferente do que esperado;
- Falha: Esta mais ligada ao hardware, como uma rede inacessível, queda de energia. Uma falha pode ocorrer por causa de um erro, por exemplo, houve um retorno de um valor não esperado, como null, isso é um erro, e por causa desse null ocasionou uma falha no sistema.
Para encontrar e tratar estes problemas, é preciso primeiramente conhecer os conceitos inseridos no contexto de qualidade de software.
A verificação, a validação e o teste são os três macroprocessos que contém as atividades relacionadas à investigação e constatação de erros, que podem conter defeito ou falha, atuando em todas as fases do desenvolvimento, e estão definidas a seguir:
- Verificação: Processo que tem por objetivo conferir se os artefatos gerados ao longo da etapa de desenvolvimento estão de acordo com a especificação do software;
- Validação: Processo que tem por objetivo conferir se o produto está concordante com os requisitos do sistema;
- Teste: Processo que tem por objetivo conferir se o produto possui o comportamento esperado através de sua execução.
Com o intuito de viabilizar a garantia da qualidade de software, diversas técnicas de verificação, validação e teste foram elaboradas e estão sendo utilizadas por empresas do ramo de desenvolvimento de sistemas.
Uma abordagem de verificação que tem revelado bons resultados é a inspeção de software.
Inspeção
A inspeção de software, uma das abordagens de revisão , possui um processo de detecção de defeitos bem definido.
Inspeção é uma técnica de análise estática para verificar propriedades de qualidade de produto de software, é bem estruturada e possui processos e regras bem definidos, técnicas de leitura para detecção de defeitos e resultados documentados.
Existem diversas técnicas de inspeção de software específicas para a minimização das inconsistências destes artefatos:
- TÉCNICA DE LEITURA AD HOC
- TÉCNICA DE LEITURA BASEADA EM CHECKLISTS – LBCh
- TÉCNICA DE LEITURA BASEADA EM CENÁRIOS
- TÉCNICA DE LEITURA BASEADA EM PERSPECTIVAS – LBPe
Os benefícios das inspeções consistem em melhorar a produtividade do novo produto, melhorar a comunicação entre os especialistas e usuários e diminuir o esforço econômico (BRIAND, 2000).
O processo de inspeção formal inclui seis etapas principais (FAGAN, 1986; EBENAU, 1994; ABIB, 1998; TYRAN, 2002; WONG; 2002), cada qual com objetivos específicos:
- Planejamento. Determina se os materiais que serão inspecionados são satisfatórios, organiza as pessoas que irão participar da inspeção e o local onde serão realizadas as sessões de inspeção.
- Visão Geral. Inclui a apresentação do material a ser inspecionado aos participantes e a atribuição de funções a cada participante durante a inspeção.
- Preparação. Nesta etapa, os participantes são treinados para executarem as funções que lhes foram atribuídas, visando encontrar os defeitos constantes do produto ou artefato de software.
- Realização da Inspeção. Inclui sessões de trabalho, nas quais os participantes analisam o produto ou artefato de software enfocado, com o fim de detectar os defeitos existentes nesses produtos.
- Retrabalho. Nesta etapa, os defeitos detectados, devidamente documentados, são encaminhados ao autor do produto que foi inspecionado, para que seja providenciada a remoção destes defeitos.
- Revisão. Finalmente, o autor confere o produto revisado, juntamente com a equipe de inspeção, para assegurar-se de que todas as correções necessárias foram realizadas e que nenhum defeito novo foi introduzido.
Figura 2 – Visão geral de processo de inspeção
- Durante as etapas de planejamento e visão geral, um membro da equipe de inspeção envia o material para os outros participantes e faz um cronograma para as próximas etapas.
- Na preparação, cada inspetor da equipe, individualmente entende e revisa o documento para encontrar os defeitos.
- Na reunião, todos os inspetores encontram-se para coletar e discutir os defeitos das revisões individuais e mais adiante revisar o documento para encontrar defeitos adicionais.
- No retrabalho, o autor revisa o documento para corrigir os defeitos. Finalmente, na revisão o retrabalho é conferido com a equipe de inspeção, assegurando que todos os defeitos foram solucionados e nenhum foi introduzido no material inspecionado.
Inspeção e Teste se complementam, trabalhando juntos na remoção de defeitos. A Inspeção encontra defeitos não encontrados em teste e Teste encontra defeitos não encontrados na fase de inspeção ou que tenham sido inseridos depois da fase de Inspeção.
A técnica de Inspeção elimina cerca de 50 a 90% dos defeitos do processo de construção do software, antes de começar a execução dos testes. A Inspeção pode salvar tempo de desenvolvimento, pois remove defeitos em fases anteriores, reduzindo substancialmente os custos com correção em fases posteriores.
Contudo, a quantidade de empresas onde a inspeção de software faz parte da cultura e do processo organizacional ainda é pequena face os benefícios de sua utilização.
Este Post foi para que você possa conhecer essa técnica e procurar aprender e aplicar em seu trabalho de forma a melhorar a qualidade do produto de software entregue ao seu cliente.
A realização da técnica de inspeção nos artefatos produzidos durante o ciclo de construção de software principalmente nos estágios iniciais melhora a qualidade do software e busca garantir que o produto a ser entregue esteja de acordo com as necessidades do negócio.
Eduardo Jose Ribeiro de Castro, MSc é gerente de equipes de construção de software, Coordenador e professor em curso de Graduação e Pós-graduação em Engenheiro de requisitos de Software, presencial e a distância, Instrutor em cursos de Analise e Gerencia de Requisito. Consultor na área de Engenharia de Software e Requisitos na implantação de métodos de análise e desenvolvimento em softwares orientado ao negócio e autor do método IRON – Integração de Requisitos Orientado ao Negócio. Graduação em Ciências Contábeis, especialização em Análise de Sistemas e Mestrado em Gestão do Conhecimento e da Tecnologia da Informação. Palestrante nas áreas de produção e gerencia de requisitos, método IRON como fator de sucesso em projetos de software e Construção de Software orientado ao Negócio.
linkedin: https://br.linkedin.com/in/eduardo-castro-4b264b6
Lattes: http://lattes.cnpq.br/2217593248315675
Email: eduardocastro@metodoiron.com.br