Ir para o conteúdo

Plano de Gerenciamento de Qualidade

1. Introdução

A ISO/IEC 25000 (SQuaRE) fornece diversas diretrizes para a avaliação da qualidade de software em diferentes aspectos. Ela estabelece um conjunto de características de qualidade, como funcionalidade, confiabilidade, usabilidade, eficiência, manutenibilidade e portabilidade.

Já a ISO/IEC 25010, disponibilizada, estabelece um modelo para a qualidade do produto de software, definindo como características de qualidade: adequação funcional, desempenho, compatibilidade, usabilidade, segurança, manutenibilidade e portabilidade.

2. Objetivo

Esse documento tem como objetivo especificar as ferramentas que serão utilizadas, bem como as métricas que serão analisadas com o objetivo de definir os critérios de qualidade do projeto.

3. Qualidade

3.1. Qualidade Interna

Refere-se às características do software que não são visíveis para os usuários finais. Dessa forma, está relacionada à estrutura interna do software, sua manutenibilidade, facilidade de modificação, extensibilidade e outras propriedades técnicas.

A qualidade interna está focada nos desenvolvedores e equipes de manutenção de software. Assim, temos como exemplos de métricas de qualidade interna: complexidade do código, acoplamento e coesão dos módulos, presença de padrões de projeto, ausência de código duplicado, entre outros. Com isso, uma boa qualidade interna pode facilitar a manutenção do software, melhorar a produtividade da equipe de desenvolvimento e reduzir os custos de correção de defeitos.

3.2. Qualidade Externa

Refere-se às características do software que são diretamente percebidas pelos usuários finais. Desta forma, está relacionada à usabilidade, desempenho, confiabilidade, eficiência e outras propriedades que afetam diretamente a experiência do usuário.

A qualidade externa é voltada para as expectativas e requisitos dos usuários finais do software. Temos como exemplos de métricas de qualidade externa: tempo de resposta, taxa de erros, facilidade de uso, eficiência de recursos, entre outros. Uma boa qualidade externa contribui para a satisfação do usuário, confiabilidade do software e efetividade na realização das tarefas desejadas.

3.3. Qualidade de Uso

Concentra-se em quatro características principais: eficácia, produtividade, segurança e satisfação do usuário, características derivadas da combinação das características de qualidade definidas na ISO.

4. Ferramentas

4.1. Testes Unitários (Jest)

Os testes unitários são testes automatizados que visam verificar o funcionamento de pequenas unidades de código, isoladas do restante do sistema (VALENTE, 2020). Para a realização desses testes, a equipe utiliza o Jest, uma ferramenta de código aberto que permite a aplicação de testes em aplicações JavaScript de maneira fácil e simplificada.

4.2. ESLint

O ESLint é uma ferramenta amplamente utilizada para verificação e análise estática de código JavaScript. Ele auxilia os desenvolvedores a garantir a qualidade do código, identificando e reportando possíveis problemas, erros ou más práticas de programação. O ESLint oferece uma variedade de regras configuráveis, que podem ser personalizadas de acordo com as necessidades do projeto, permitindo a aplicação de padrões de codificação consistentes e aprimorando a legibilidade, manutenibilidade e interoperabilidade do código.

4.3. SonarCloud

O SonarCloud é uma ferramenta usada para coletar métricas e indicadores técnicos, permitindo o monitoramento da qualidade do código. Esses dados coletados são usados para auxiliar no planejamento de melhorias na qualidade do código. Durante o desenvolvimento do projeto, foram coletadas métricas após cada Pull Request submetido. Essas métricas foram combinadas para calcular os aspectos de qualidade relevantes para este projeto, que se dividem em confiabilidade e manutenibilidade do código.

5. Planejamento

5.1 Modelos e métricas de qualidade

Como modelo de qualidade de software, optamos pela utilização da NBR - ISO/IEC 25010.

Característica Subcaracterísticas
Adequação Funcional Integridade funcional, Correção funcional, Adequação funcional
Eficiência de performance Comportamento do tempo, Uso de recursos, Capacidade
Compatibilidade Coexistência, Interoperabilidade
Usabilidade Adequação reconhecível, Capacidade de aprendizado, Operabilidade, Proteção de erro do usuário, Estética da interface de usuário, Acessibilidade
Confiabilidade Maturidade, Disponibilidade, Tolerância a falhas, Recuperabilidade
Segurança Confidencialidade, Integridade, Ausência de repúdio, Rastreabilidade de uso, Autenticidade
Manutenibilidade Modularidade, Reusabilidade, Analisabilidade, Modificabilidade, Testabilidade
Portabilidade Adaptabilidade, Facilidade de instalação, Capacidade de substituição

5.2 Métricas de qualidade

As métricas de qualidade definidas para o software são:

Métrica Descrição
Bugs Quantidade de bugs encontrados
Vulnerabilidades Quantidade de vulnerabilidades encontradas
Code Smell Quantidade de code smell encontrada
Coverage Cobertura de código dos testes
Duplicação Quantidade de linhas de código duplicadas
Linhas Quantidade de linhas de código
Security Rating Avaliação de segurança e falhas

Dessa forma, por meio da utilização de métricas, é possível identificar as subcaracterísticas associadas e, assim, avaliar a qualidade do produto. Essa avaliação não apenas proporciona insights sobre a produtividade do projeto, mas também oferece resultados que podem influenciar as decisões tomadas em relação ao seu desenvolvimento.

Foram estabelecidos então valores mínimos aceitáveis para cada métrica do projeto PUMA a partir das métricas especificadas no SonarCloud:

Métrica Descrição
Coverage no mínimo 80%
Vulnerabilities Nota A
Bugs Nota A
Security Hotspots Nota A
Code Smells Nota A
Duplication até 3.0%

6. Controle de qualidade

Para garantir a implementação de procedimentos de qualidade, adotamos as seguintes atividades: documentação, controle de versão, controle de código, controle de commits e testes automatizados.

Essas tarefas são executadas por meio de ferramentas e sistemas que desempenham um papel fundamental na garantia da qualidade do software.

7. Referências

  • ISO/IEC 25010. Disponível aqui. Acesso em: 03/06/2023.

  • Jest. Disponível aqui. Acesso em: 03/06/2023.

  • VALENTE, Marco. Engenharia de Software Moderna: Princípios e Práticas para Desenvolvimento de Software com Produtividade. 2020. Disponível aqui. Acesso em: 03/06/2023.

Histórico de Revisão

Data Versão Modificação Autor
04/06/2023 0.1 Abertura do documento. Guilherme Daniel Fernandes da Silva
10/07/2023 0.2 Refatoração da estrutura do documento Juliana Valle