Skip to main content Link Search Menu Expand Document (external link)

1. Introdução

Antes de começar a analisar o plano de qualidade, é importante entender o que é qualidade de software. Qualidade de software é um termo que abrange diversas propostas e pontos de vistas, por exemplo:

  • Qualidade de software é a capacidade de um software de atender aos requisitos de um cliente.
  • “Um produto de software apresenta qualidade dependendo do grau de satisfação das necessidades dos clientes sob todos os aspectos do produto” (Sanders, 1994).
  • “Qualidade é a totalidade de características e critérios de um produto ou serviço que exercem suas habilidades para satisfazer as necessidades declaradas ou envolvidas” (ISO9126).

2. Objetivo do Plano de Qualidade

O plano de qualidade visa em especificar os procedimentos, tecnicas e ferramentas utilizadas, empregados para que o produto atenda os requisitos de qualidade. Portando, o plano deve guiar para que o produto, construido, atenda a qualidade estipulada.

Objetivos da qualidade serão apontados e por meio de metricas, temos uma noção sobre a qualidade do produto construído. Portanto, com valores, melhorias podem ser realizadas afim de melhorar a qualidade do produto.

O objetivo deste documento:

  • Definir os objetivos de qualidades.
  • Apresentar como podemos atingir os objetivos de qualidade.
  • Apresentar metricas para aferição da qualidade, de acordo com os objetivos.
  • Apresentar a interpretação e uso das metricas para o produto.
  • Especificar procedimentos, tecnicas e ferramentas utilizadas para medir/melhorar a qualidade do produto.

3. Documentação

A documentação do produto como arquitetura, requisitos, documentação de usuário, guias de instalações e outras informações sobre o projeto.

4. Objetivos de qualidade

O objetivo deste plano é especificar como medir e melhorar a qualidade do produto Alection. Tendo como foco a qualidade interna, externa e qualidade em uso do produto.

A qualidade interna é medida e avaliada com relação aos requisitos de qualidade interna. Os requisitos da qualidade interna podem incluir modelos estáticos e dinâmicos, outros documentos e código-fonte (ISO/IEC 9126-1:2003).

Enquanto a qualidade externa é quando o software é executado, o qual é tipicamente medido e avaliado enquanto está sendo testado num ambiente simulado, com dados simulados e usando métricas externas (ISO/IEC 9126-1:2003).

A qualidade em uso é a visão da qualidade do produto de software do ponto de vista do usuário, quando este produto é usado em um ambiente e um contexto de uso especificados. Ela mede o quanto usuários podem atingir seus objetivos num determinado ambiente e não as propriedades do software em si(ISO/IEC 9126-1:2003).

Para medir a qualidade interna, externa e em uso, utilizaremos o modelo de qualidade proposto na ISO/IEC 9126. Portanto, a partir das caracteristicas e subcaracteristicas apresentadas, metricas que ajudam a aferir a qualidade serão utilizadas. As metricas coletadas, apresentam valores que dão um indicativo da qualidade do produto.

4. Verificação e validação

Para verficação e validação da qualidade do software é utilizado 3 abordagens, sendo elas:

  • Analise estatica do codigo: A ferramenta sonar cloud para está analise, onde ferramenta irá coletar metricas de qualidade definidas pelo grupo descritas na seção 5.3. A coleta das metricas é realizada apos a criação de um pull request onde a coleta é ativada automaticamente atraves do pipeline

  • Testes automatizados: A equipe deve produzir testes unitarios e testes de integração com o intuito de verificar se o software execute sem falhas

  • Teste de manuais: A equipe realiza testes de aceitação para validar que o software cumpra com suas especificações planejadas e atenda às necessidades dos usuários

5. Padrões, práticas, convenções e métricas

Os padrões de software são importantes para a garantia da qualidade, pois representam a identificação das melhores práticas. As métricas de qualidade de produto são essenciais para destacar componentes que não seguem um padrão previamente estabelicdo e que podem ter problemas de qualidade. Não existem métricas de softwares padronizadas e universalmente aplicáveis, ou seja, uma métrica não possui a mesma interpretação para todos os projetos podendo ser utilizada ou não.

5.1 ISOS e normas

As ISO’s e normas na qual o projeto segue são as:

  • ISO 9126-1, ISO’s 2500n
  • Q-rapids Quality Model

5.2 Padrões de codificação

Os padrões utilizados no projeto foram as ferramentas eslint e prettier, para padronização de código independente do membro que está desenvolvendo. Além disso, foi adotado alguns princípios clean code para que outras pessoas possam rapidamente entender o código e saber onde procurar o que precisam. Isto permite a propriedade do código compartilhado de forma que qualquer membro da equipe ou fora dela possa entender rapidamente o que foi codificado.

5.3 Metricas

Métricas ou processo de medição são atributos uilizados para avaliar a qualidade do produto. Não existem medidas quantitativas básicas, medidas absolutas e com isso tentamos derivar medidas para que indicão a representação do software. Para medir qualidade de software deve-se determinar quais características medir e como medir. [4]

Existem algumas razões para medir o software:

  • Indicar a qualidade do produto
  • Avaliar a produtividade
  • Aferir os resultados gerados

As métricas escolhidas foram:

Metrica Descrição
Cognitive Complexity Medida de dificuldade de entender uma unidade de código
Comments (%) Densidade de comentários no código
Coverage Medição de cobertura de testes
Cyclomatic Complexity Indica complexidade de caminhos de execução do código
Duplicated Lines (%) Indicas Linhas duplicadas no código
Files Indica quantidade de arquivos de código
Functions Indica quantidade de funções no código
Lines of Code Indica quantidade de linhas de código
Security Rating Indica segurança interna da aplicação e as vunerabilidades
Unit Test Duration Tempo de execução dos testes unitários
Unit Test Errors Indica quantidade de erros nos testes unitários
Unit Test Failures Indica quantos testes unitários falharam
Unit Tests Indica a quantidade de testes unitários
Formulário de validação Valida se a US atende os requisitos, critérios de aceitação e expectativas do cliente

Com essas métricas é possível criar parâmetros para análise de qualidade do software.

5.4 Metricas para o produto

Com os valores coletados com as metricas, temos indicativo sobre a qualidade do produto. Portanto, podemos definir um valores minimos aceitaveis para cada metrica, fazendo com que o produto atenda no minimo esses indicativos.

Para definir os valores das metricas aceitaveis, selecionadas, para a qualidade interna usamos como base metricas definitas no Q-rapids e sonarCloud. Indicadas abaixo:

Metrica Valor
Cyclomatic Complexity até 10
Comments (%) até 30%
Duplicated Lines (%) até 5%
Coverage acima de 60%
Security Rating 0(A)
Unit Test Failures 0
Unit Test Errors 0
Satisfação do usuário acima de 3

6. Testes

O teste de software é uma maneira de avaliar a qualidade da aplicação e reduzir o risco de falha em operação. Mas não consiste em apenar executar os testes, é necessário verificar os resultados. Existem algumas formas de testar o software:

  • Teste de unitários: consiste em verigicar o comportamento das unidades da aplicação
  • Teste de integração: os módulos são testados em grupos para garantir que as funcionalidades unitárias se comunicam quando integrado
  • Teste caixa branca: testes referentes ao acesso à estrutura interna da aplicação, garantindo que os componentes do software estejam concisos.
  • Teste caixa preta: testes que se preocupam com os elementos funcionais do software, garantindo que os requisitos funcionais estão coerentes

7. Ferramentas, técnicas e metodologias

  • Jest: Framework de teste para JavaScript

  • ESLint: Ferramenta de verificação automática de código, faz com que o código seja escrito de acordo com os padrões encontrados no ECMAScript.

  • Prettier: Ferramenta formatadora de código

  • SonarCloud: Ferramenta de varredura de código para analisar o código de acordo com as regras e métricas definidas.

8. Controle de código

Para garantir os procedimentos de qualidade estão sendo realizados temos tarefas automatizadas, como: testes automatizados, documentação, controle de versão, controle de código, controle de commit e outros. E também tarefas manuais onde a equipe de gerência fica responsável por verificar se os parâmentros do plano de qualidade estão sendo atendidos.

9. Coleta e manutenção

Consiste na fase onde após a coleta e análise das métricas inicia-se um processo de mudanças no sistema. O objetivo é modificar o produto após liberação para melhorias, correções ou adaptações do produto. Existem algumas categorias de manutenção:

  • Manutenção Adaptativa: realizar adaptações
  • Manutenção Corretiva: correções de erros, bugs
  • Mnutenção Preventiva: Melhorar a manutenibilidade ou confiabilidade do produto
  • Manutenção Perfectiva: realizar as modificações solicitadas pelo usuário e efetuar melhorias gerais

Para realizar analíse das métricas através das coletas obtidas pelo sonar utilizamos notebook em python disponizado pelo professor.

10. Referências Bibliográficas

[1] NBR - ISO/IEC 9126-1 - Software engineering - Product quality - Part 1: Quality model. Disponivel em: https://jkolb.com.br/wp-content/uploads/2014/02/NBR-ISO_IEC-9126-1.pdf

[2] SOMMERVILLE, I. Engenharia de software. São Paulo: Person, 2007.

[3] FILHO, WILSON DE PADUA PAULA (2009). ENGENHARIA DE SOFTWARE FUNDAMENTOS, MÉTODOS E PADRÕES. [S.l.]: LTC. 456 páginas

[4] Boehm, B., Software Engineering Economics, Prentice-Hall, 1981

11. Histórico da revisão

Data Descrição Autor(es)
23/08/2022 Criação do documento Guilherme
30/08/2022 Revisão do documento Moacir e Guilherme
30/08/2022 Incremento do documento Moacir, Guilherme, Lucas Alexandre, João Pedro Soares e Matheus
21/09/2022 Atualizado tópico 9 Lucas Alexandre e Matheus Estanislau