Qualidade de Software e Métricas

6

Click here to load reader

description

Qualidade de Software, Engenharia de Software, Métricas de Software, Medidas de Software

Transcript of Qualidade de Software e Métricas

Page 1: Qualidade de Software e Métricas

Universidade Tecnológica Federal do Paraná

Campus Ponta Grossa

Departamento Acadêmico de Informática

Prof. Danillo Leal Belmonte

Engenharia de Software 2

ALUNO: RENAN RAMON RAMOS MENDES

TEMA: Qualidade de software

1. DEFINIÇÕES:

Primeiramente é necessário definir qualidade. Inicialmente, o conceito parece serintuitivo, porém, realizando a definição através de uma perspectiva abrangente aconceituação torna-se complexa. Um pressuposto que ajuda na definição é assumirobtenção de objetivos, qual será a melhor forma de atingi-los e quão satisfatórios serão osresultados. Assim, qualidade refere-se ao grau de satisfação no cumprimento de objetivospreestabelecidos.

A definição posterior é a qualidade de software. Segundo Pressman, qualidade desoftware é “uma gestão de qualidade efetiva aplicada de modo a criar um produto útil queforneça valo mensurável para aqueles que o produzem e para aqueles que outilizam.”(PRESSMAN, 2011). Partindo dessa definição, conclui-se que a qualidade desoftware é um mecanismo aplicável ao desenvolvimento que obtém o resultado adequadoas expectativas do cliente e do desenvolvedor.

2. CARACTERÍSTICAS:

David Garvin apresenta oito dimensões de qualidade, que podem ser aplicadas aqualidade de software:

Qualidade do desempenho: referente ao ganho esperado pelo usuário, se osoftware garante que os recursos especificados cumprem com o que foi proposto.

Qualidade dos recursos: diz respeito a satisfação e encantamento do usuário comos recursos apresentados.

Confiabilidade: relaciona-se com o âmbito total de garantia de execução dastarefas sem a ocorrência de falhas ou erros.

Conformidade: refere-se a obediência aos padrões estabelecidos, tanto internosquanto externos.

Durabilidade: capacidade do software resistir a mudanças e correções semprovocar efeitos colaterais não desejados.

Manutenibilidade: facilidade de manutenção do software, se ela é feita de formarápida e compatível com a complexidade da manutenção.

Estética: característica até certo ponto subjetiva, mais todos os usuários esperamencontrar uma aplicação elegante e que apresente fluência no desenvolver dasatividades.

Page 2: Qualidade de Software e Métricas

Percepção: relacionada ao sentido de perceber a real qualidade de um produto. Elanão pode ser influenciada pela má ou boa reputação da empresa que desenvolveu osoftware.

McCall desenvolveu uma categorização de fatores que influenciam a qualidade dosoftware. São eles: correção confiabilidade, usabilidade, integridade, eficiência,manutenção, flexibilidade, testabilidade, portabilidade, reutilização, interoperabilidade.Esses fatores estão relacionados a três aspectos fundamentais de um produto desoftware, que são as características operacionais, o suporte a mudanças e aadaptabilidade aos diversos ambientes.

Existe um grande dilema relacionado a qualidade de software: entre produzir umsoftware praticamente perfeito, gastando muito tempo e dinheiro na sua construção oudesenvolver um sistema que tenha péssima qualidade, mas que ninguém adquirirá.A solução encontrada para esse dilema é desenvolver um software que seja aceitável esuficientemente bom, onde os gastos fiquem dentro dos planos e a qualidade sejalapidada com as manutenções e versões posteriores.

Para se alcançar a qualidade de software desejada, existem quatro atividades quedevem sem muito bem desempenhadas e desenvolvidas, garantindo alto padrãoqualitativo. A seguir, as atividades:

- Métodos de engenharia de software: em qualquer trabalho que está sendodesenvolvido, deve-se primeiramente entender o problema proposto e criar um projetoque efetivamente resolva o problema. Existem métodos adequados para esseentendimento e que fornecem uma base sólida para a construção do projeto da melhorforma possível.

- Técnicas de gerenciamento de software: a qualidade de software é dependentedo gerenciamento do projeto. “Quando cada tarefa de projeto é iniciada, um líder deprojeto tomará decisões que podem ter um impacto significativo sobre a qualidade doproduto.” (PRESSMAN, 2011).

- Controle de qualidade: “O controle de qualidade engloba um conjunto de ações de

Ilustração 1: (Fonte:http://www.testexpert.com.br/?q=node/669)

Page 3: Qualidade de Software e Métricas

engenharia de software que ajudam a garantir que cada produto resultante atinja suasmetas de qualidade.” (PRESSMAN, 2011). É a forma de identificar possíveis erros dedesenvolvimento que afetariam a qualidade esperada do software.

- Garantia da qualidade: ela é a responsável por definir uma infraestrutura que sejapossível garantir o sucesso de todas as outras atividades. “(...) a garantia da qualidadeconsiste em um conjunto de funções de auditoria e de relatórios que possibilita umaavaliação da efetividade e da completude das ações de controle de qualidade.”(PRESMANN, 2011).

3. NORMAS:

Para a identificação dos atributos fundamentais da qualidade de software, foi criadoo padrão ISO 9126. São definidos seis atributos essenciais para a qualidade:

- Funcionalidade: o quanto a aplicação é capaz de satisfazer as necessidadesimpostas pela adequabilidade, exatidão, interoperabilidade, conformidade e segurança.

- Confiabilidade: garantia de disponibilidade do software conforme a maturidade,tolerância a falhas, facilidade de recuperação.

- Usabilidade: refere-se a facilidade de uso definidos pela facilidade decompreensão, aprendizagem e operação.

- Eficiência: o quanto o software é capaz de otimizar o uso dos recursos do sistemaindicados pelo comportamento em relação ao tempo e em relação aos recursos.

- Facilidade de manutenção: o quão fácil é realizar correções no software,conforme a facilidade de análise, facilidade de realização de mudanças, estabilidade etestabilidade.

- Portabilidade: o grau de facilidade com que um software é transportado de umaplataforma a outra conforme a adaptabilidade, facilidade de instalação, conformidade efacilidade de substituição.

4. MEDIÇÕES E MÉTRICAS:

Em qualquer processo de engenharia é preciso medir. Porém, na engenharia desoftware, diferentemente de outras engenharias, as formas mensuráveis não estãodefinidas na física, como massa, tensão, temperatura. Esse fato acaba gerando muitadiscussão. Mas, o incontestável é que deve-se medir quantitativamente o software,buscando a compreensão do processo de desenvolvimento.

É importante estabelecer uma estrutura de medição de produto. Através destaestrutura é possível definir o conceito de métrica de produto para software.Primeiramente, é essencial diferenciar medida, medição, métrica e indicador. Medida, noâmbito da engenharia de software, pode ser definida como um meio de proporcionar avisualização da quantidade de algum atributo pertencente ao produto. A ação dedeterminar uma medida é denominada medição. Métrica está associada ao grau de umdeterminado sistema possuir um atributo estabelecido. Quando ocorre uma combinaçãode métricas capazes de proporcionar informações sobre o processo de software, écaracterizado um indicador.

Assim como na qualidade de software, existe um grande desafio em mediçõesquantitativas. Durante décadas, desenvolvedores e pesquisadores tentaram encontraruma métrica que seja de fácil entendimento, porém, sem sucesso. Cada atributorepresenta um ponto de vista qualitativo de um produto, e mensurar esse ponto de vistaparte de uma subjetividade, visto que ele pode ser primordial ou desprezível paradeterminada aplicação.

Page 4: Qualidade de Software e Métricas

Esse grande problema distancia a teoria inicial da medição. Todavia, especialistasafirmam que se a medição de um produto for realizada nos primeiros estágios dodesenvolvimento, o projeto terá uma base consistente para a avaliação qualitativa.

Para execução da medição existem alguns princípios básicos: Formulação(construção de métricas e medidas adequadas), Coleção (método de reunião dos dadosnecessários para as métricas), Análise (computação e uso de recursos matemáticos),Interpretação (avaliação), Feedback (resposta da interpretação obtida através damedição).

Alguns especialistas também definem alguns atributos eficazes para a métrica desoftware. As métricas e as medições devem ser:

- Simples e computáveis: fáceis e aprendizado simplificado.- Empiricamente e intuitivamente persuasivas: deve corresponder as expectativas

esperadas pelo engenheiro.- Consistentes e objetivas: resultados corretos, sem possibilitar ambiguidade.- Consistentes no seu uso das unidades e dimensões: devem obter resultados que

tenham coerência, sem combinar variáveis totalmente diferentes. - Independentes da linguagem de programação: devem ser baseadas na estrutura

do programa e modelos de requisitos e projeto.- Mecanismo efetivo para feedback de alta qualidade: devem fornecer informações

que levem a uma melhora efetiva da aplicação final.

Métricas para o modelo de requisitosÉ desejável obter métricas para o modelo de requisitos, pois é nessa fase que os

requisitos são especificados e toda base para o projeto é montada. A métrica de pontospor função é um excelente mecanismo para medir a funcionalidade que um sistemaproporcionará. Ela é capaz de “(...) estimar o custo ou trabalho necessário para projetar,codificar e testar o software; prever o número de erros que serão encontrados durante oteste; e prever o número de componentes e/ou número de linhas de código-fonte nosistema implementado.”(PRESSMAN, 2011). São definidos valores de domínio comobjetivo de mensurar o software:

Entrada Externa (EE): Número de entradas de outras aplicações.Saída Externa (SE): Número de saídas que serão fornecidas ao usuário.Consulta Externa (CE): Número de entrada on-line que resultam resposta imediata

da aplicação.Arquivos Lógicos Internos (ALI): Número de agrupamentos de arquivos de dados

que residem dentro da fronteira da aplicação.Arquivos de Interface Externos (AIE): Número de agrupamentos de arquivos de

dados que estão fora da aplicação.Com esses dados coletados, eles são lançados numa tabela objetivando um valor

final para cada atividade.No final são quantificados os fatores de ajuste. Eles são os requisitos não-

funcionais do software. São obtidos através de questões referentes as funcionalidades daaplicação.

Métricas para o modelo de projetoAs métricas de projeto são fundamentais para o desenvolvimento de um software

ou de qualquer outro produto que esteja sendo desenvolvido. Ela é um indicador de comoocorrerá a evolução do projeto.

As métricas para o projeto de arquitetura se preocupa com a estrutura daarquitetura e o quão eficientes são os componentes internos a ela.

“Card e Glass definem três medidas de complexidade de projeto de software:complexidade estrutural, complexidade de dados e complexidade de sistema.”

Page 5: Qualidade de Software e Métricas

(PRESMANN, 2011). A complexidade estrutural é definida através da elevação aoquadrado dos módulos subordinados ao módulo em questão (Ce = (Msub)²). Acomplexidade de dados depende da razão entre, as variáveis de entrada e saída domódulo, e os módulos subordinados mais um (Cd = var/(Msub + 1)). Para obter acomplexidade de sistema é feita a soma da complexidade estrutural e a complexidade dedados (Cs = Ce + Cd). Existem muitas outras formas de se obter métricas para o projeto.

Métricas de projeto para WebAppsAs aplicações web estão amplamente presentes no cotidiano das pessoas.

Atualmente são desenvolvidos milhares de softwares e é de fundamental importânciaestabelecer métricas para fornecer dados quantitativos sobre eles. As métricas quepodem ser adotas são as seguintes:

- Métricas de interface: estão relacionadas a interação do usuário com a aplicação;complexidade de layout, quanto tempo o usuário leva para realizar a atividade desejada, aaplicação exige muitos cliques e digitações, número médio de palavras por página.

- Métricas de estética: tem relação com a quantidade total de palavras na página,total de links, tamanho da página e da fonte das palavras, contagem de figuras e coresutilizadas.

- Métricas de conteúdo: essa métrica é responsável pela contabilização do tempomédio de carregamento da página, número de vídeo, áudio e animações presentes naspáginas.

- Métricas de navegação: métrica que trata do fluxo de navegação, mensurando onúmero de links por página, internos e externos, a densidade de conectividade.

Métricas para Código-fonte“A teoria de Halstead da “ciência do software” propôs as primeiras “leis” analíticas

para programas de computador.”(PRESSMAN, 2011)As medidas desenvolvidas por Halstead são as seguintes:n1 = números de operadores distintos que aparecem no programa;n2 = número de operandos distintos que aparecem no software;N1 = número total de determinado operador;N2 = número total de determinado operando.Para se estimar o tamanho global do programa é realizado o seguinte calculo: N =

n1 log n1 + n2 log n2. Para ser definido o volume do programa é utilizada a seguintefórmula: V = N log (n1+n2). Como V varia conforme a linguagem de programaçãoutilizada, é definida uma razão de volume L, que indica a razão entre o volume doprograma na versão mais compacta e o volume real: L = (2/n1) * (n2/N2)

Métricas para testeÉ possível realizar uma adaptação as métricas obtidas por Halstead para aplicá-las

a testes. Utiliza-se a definição do volume V e nível PL, calculando o trabalho “e”:PL = 1/(n1/2)*(N2/n2)e = V/PL;A porcentagem de trabalho de teste pode ser obtida através da relação abaixo:Porcentagem de trabalho de teste = e/∑ e.

Métricas para manutençãoTodas as métricas aplicadas em outros estágios do desenvolvimento do software,

podem ser aplicadas para sua manutenção. Contudo, foram criadas métricas específicaspara a manutenibilidade da aplicação. A IEEE define uma norma para a indicar aestabilidade de um produto, através do índice de maturidade de software:

SMI = (Mt – (Fa + Fc + Fd ))/Mt, onde:

Page 6: Qualidade de Software e Métricas

Mt = número de módulos na versão atual;Fc = número de módulos na versão atual que foram alterados;Fa = número de módulos na versão atual que foram acrescentados;Fd = número de módulos na versão anterior que foram excluídos.

Ao passo que o índice de maturidade de software se aproxime de 1.0, a aplicaçãocomeça a ser considerada estável.

5. OUTROS:

Custos qualidade de softwarePara ser assegurada a garantia de qualidade de um produto é demandado

muito tempo e dinheiro. Porém a falta de qualidade também tem seu preço. Os usuáriosterão que conviver com uma aplicação que apresenta diversos erros e a empresa que odesenvolveu terá que realizar manutenções constantes. Nesse contexto é definido o custoda qualidade. Ela é caracterizada por todos os custos inerentes pela busca de qualidade eexecução de atividades relacionadas a qualidade, e também pelos custos ocasionadospela falta de qualidade.

Os custos de qualidade podem ser divididos em custos referentes à prevenção,avaliação e falhas: - Custos de prevenção: são aqueles associados a gastos com atividades degerenciamento necessárias para o planejamento e coordenação das atividades quegarantem a qualidade. Também estão inclusos os custos de planejamento e testes,treinamento para as atividades relacionadas, e atividades técnicas adicionais para odesenvolvimento de modelos de requisitos e projetos.

- Custos de avaliação: estão inclusas atividades de entendimento aprofundado doproduto a ser projetado. Custos de revisões técnicas, coleta de dados, testes e depuraçãoestão incluídos nos gastos com a avaliação

- Custos de falhas: são os custo que são necessários quando a aplicação nãoapresenta boa qualidade, ou seja, seriam descartados caso não surgisse nenhumproblema antes ou após a entrega ao cliente. Quando o problema é detectado antes daentrega esse custo é interno; quando a falha aparece após a sua entrega, o custo éexterno.

Ferramentas para métricas de produtoExistem ferramentas para auxiliar a contabilização de métricas, ajudando

engenheiros e desenvolvedores de software a avaliar de forma mais precisa odesenvolvimento de uma aplicação. As ferramentas analisam uma representação dosoftware e apresentam como resultado o desenvolvimento de métricas avaliativas.

6. REFERÊNCIAS:

PRESSMAN, Roger S. Engenharia de software: uma abordagem profissional. 7.ed. Porto Alegre, RS: AMGH, 2011. 780 p. ISBN 9788563308337.