Ir para o conteúdo

Plano de Qualidade

Introdução

A qualidade de software pode ser definida como "uma gestão de qualidade efetiva aplicada de modo a criar um produto útil que forneça valor mensurável para aqueles que o produzem e para aqueles que o utilizam" (PRESSMAN, 2021, pg. 312). Ou seja, um software de alta qualidade é caracterizado por sua confiabilidade, isenção de erros, atendimento às necessidades explícitas e implícitas dos usuários, e facilitador de processos de negócios, resultando em benefícios tanto para quem desenvolve quanto para a comunidade de usuários. Além disso, neste documento, são apresentadas as ferramentas utilizadas para garantir a qualidade do projeto durante o seu desenvolvimento, além da análise de métricas para estabelecer critérios de qualidade.

Ferramentas

SonarCloud

O SonarCloud é uma ferramenta amplamente empregada para coletar métricas e indicadores técnicos, permitindo o monitoramento da qualidade do código. Durante o desenvolvimento do projeto, métricas foram capturadas após cada Pull Request submetido. Essas métricas foram combinadas para calcular os aspectos relevantes de qualidade do código, com foco na confiabilidade e manutenibilidade. Esses dados são cruciais para orientar o planejamento de melhorias contínuas, visando garantir um código confiável e de fácil manutenção.

Testes Unitários

A meta principal dos testes não é necessariamente provar a total correção de um software, mas identificar e corrigir defeitos potenciais. Apesar das limitações teóricas, é importante que cada comando no código seja examinado e que as atribuições de valor às variáveis sejam rigorosamente verificadas para garantir a funcionalidade e a confiabilidade do software em desenvolvimento (DELAMARO, 2016). Os testes unitários são testes automatizados cujo objetivo é verificar o desempenho de partes isoladas de código em um sistema maior.

Jest

A equipe utilizou o Jest no frontend, um framework de testes em JavaScript e de código aberto, conhecido por sua simplicidade e eficiência. O Jest é compatível com uma variedade de projetos, incluindo Babel, TypeScript, Node, React, Angular, entre outros. A ferramenta oferece uma API intuitiva que promete resultados rápidos, otimizando os testes em aplicações JavaScript e TypeScript.

xUnit

Para assegurar a qualidade e a robustez do sistema, a equipe empregou o xUnit no backend para a execução de testes unitários. O xUnit.net, uma ferramenta de teste unitário gratuita e de código aberto, é focado na comunidade e adequado para o .NET Framework. Criado pelo inventor original do NUnit v2, é uma tecnologia atualizada para testar linguagens .NET, como C#, F# e VB.NET, e é compatível com ferramentas como ReSharper, CodeRush, TestDriven.NET e Xamarin.

ESLint

O ESLint é uma ferramenta muito utilizada para fazer a verificação e análise estática de código JavaScript. Ela ajuda os desenvolvedores a garantir a qualidade do código, ao encontrar e relatar possíveis problemas, erros ou práticas inadequadas de programação. O ESLint disponibiliza várias 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 melhorando a legibilidade, a manutenibilidade e a interoperabilidade do código-fonte.

Verificação e validação

Segundo Pressman (2021), a verificação e validação (V&V) são etapas cruciais para assegurar a funcionalidade e a adequação do produto às necessidades do cliente. A verificação se concentra em confirmar se o software realiza suas funções designadas corretamente, enquanto a validação verifica se o produto atende aos requisitos e expectativas do cliente. Esses processos não se limitam aos testes, mas incorporam uma variedade de atividades de garantia de qualidade, desde revisões técnicas até auditorias e simulações, todas integradas ao longo do desenvolvimento para implantar a qualidade desde o início, e não apenas no final do ciclo de vida do software.

Para garantir a qualidade do projeto, a equipe adotou as seguintes técnicas de verificação e validação:

Validações com os donos do produto: É essencial envolver os donos ou usuários do projeto na validação. Foram realizadas reuniões semanais com os POs para validar o progresso e obter feedback. Essa interação contínua ajuda a garantir que o software esteja sendo desenvolvido de acordo com as expectativas e necessidades dos stakeholders.

Inspeção contínua do código: A equipe optou por utilizar o Sonar Cloud como ferramenta de análise estática de código. Essa técnica permite obter métricas mensuráveis e identificar potenciais problemas no código-fonte. O Sonar Cloud fornece informações relevantes para a gestão da qualidade do projeto, auxiliando na tomada de decisões e na identificação de pontos que precisam ser aprimorados pela equipe.

Testes automatizados: Além da análise estática, a equipe utilizou testes automatizados, incluindo testes unitários e de integração, que atuam atuam durante o desenvolvimento e nas revisões de Pull Requests, para auxiliar no gerenciamento do projeto. Essa abordagem permite a equipe não apenas verificar os cenários planejados, mas também identificar e lidar com situações de erro indesejados.

Revisão de PRs: Foi implementada uma prática de verificação de correção de PRs. Antes de mesclar um PR no repositório principal, algum membro da equipe de EPS revisa o código, analisando a lógica, a qualidade, a conformidade com as diretrizes do projeto e identificando possíveis melhorias ou problemas. Essa verificação adicional ajuda a garantir que o código entregue esteja correto e atenda aos padrões de qualidade estabelecidos.

Métricas de Qualidade

As métricas de projeto, processo e produto de software são instrumentos quantitativos essenciais para avaliar a eficiência dos processos de software e dos projetos que empregam esses processos. Estas métricas oferecem insights objetivos, auxiliando engenheiros de software na análise e melhoria contínua da qualidade, eficiência e eficácia dos softwares. Uma métrica eficaz deve ser fácil de entender e calcular, fornecer resultados não ambíguos e estar fundamentada no modelo de requisitos, projeto ou estrutura do programa, independente das características específicas das linguagens de programação. As métricas definidas para esse projeto do DNIT seguem:

Métrica Descrição
Bugs Número de problemas identificados no código
Vulnerabilidades Quantidade de vulnerabilidades detectadas
Code Smell Indicadores de práticas inadequadas de código
Cobertura Grau de cobertura dos testes no código
Duplicação Quantidade de linhas de código duplicadas
Linhas Total de linhas de código no projeto
Security Hotspots Avaliação de segurança e vulnerabilidades

O uso de métricas proporciona uma avaliação objetiva, permitindo a identificação de tendências, aprimoramento de estimativas e a implementação de melhorias significativas na qualidade ao longo do tempo (PRESSMAN, 2021). Os valores mínimos aceitáveis para cada métrica do projeto foram estabelecidos com base nas métricas especificadas no SonarCloud.

Métrica Critério
Cobertura Pelo menos 80% de cobertura de testes
Vulnerabilidades Classificado como "A" no SonarCloud
Bugs Classificado como "A" no no SonarCloud
Security Hotspots Classificado como "A" no SonarCloud
Code Smells Classificado como "A" no SonarCloud
Duplicação Até 3.0% de duplicação de código

Referências

PRESSMAN, Roger S.; MAXIM, Bruce R. Engenharia de software. Grupo A, 2021. E-book. ISBN 9786558040118. Disponível em: https://integrada.minhabiblioteca.com.br/#/books/9786558040118/. Acesso em: 10 out. 2023.

DELAMARO, Marcio. Introdução ao Teste de Software. Grupo GEN, 2016. E-book. ISBN 9788595155732. Disponível em: https://integrada.minhabiblioteca.com.br/#/books/9788595155732/. Acesso em: 11 out. 2023.

Versionamento

Data Descrição Autore(es)
10/10/2023 Criação do documento Rafael
10/10/2023 Detalha introdução e V&V Rafael
11/10/2023 Escreve sobre Ferramentas Rafael
11/10/2023 Adição de métricas de qualidade Rafael
16/10/2023 Revisão e correção ortográfica Thiago