Skip to content

Plano de Qualidade

1. Introdução

Um dos fundamentos essenciais de um produto reside na qualidade que ele oferece. Nesse contexto, a ISO 9126 estabelece a qualidade como a "totalidade de características e critérios de um produto ou serviço que emprega suas capacidades para satisfazer as necessidades declaradas ou implícitas".

Por sua vez, a ISO 25010, lançada em 2011 como uma substituição da ISO 9126, estabelece padrões para a qualidade de produtos de software. Essa norma define qualidade como o grau em que um sistema atende às necessidades expressas e não expressas dos stakeholders, resultando na criação de valor.

A ISO 25010 identifica oito características fundamentais para a qualidade de um produto, que são: adequação funcional, eficiência de desempenho, compatibilidade, usabilidade, confiabilidade, segurança, manutenção e portabilidade.

2. Objetivo

A elaboração deste plano tem como propósito detalhar as ferramentas a serem empregadas e as métricas a serem analisadas pela equipe, visando estabelecer os padrões de qualidade do produto e embasar as decisões a serem tomadas. Com isso, podemos citar os seguintes objetivos específicos deste documento:

  • Definir os objetivos de qualidade;
  • Apresentar formas de atingir os objetivos de qualidade;
  • Selecionar e coletar métricas de qualidade
  • Apresentar a compreensão e a aplicação das métricas para o produto;
  • Especificar os procedimentos, técnicas e ferramentas que serão utilizados para a garantia da qualidade do produto.

3. Objetivos de Qualidade

No âmbito dos objetivos delineados pela norma ISO 25010:2011, a análise da qualidade do projeto é direcionada a três áreas fundamentais: qualidade interna, qualidade externa e qualidade de uso.

A avaliação da qualidade interna e externa visa examinar o próprio produto e está centrada em seis características primordiais: funcionalidade, confiabilidade, usabilidade, eficiência, manutenibilidade e portabilidade. Cada uma dessas características engloba diversas subcaracterísticas, as quais se tornam observáveis externamente durante a utilização do software e são influenciadas pelos atributos internos do produto.

A qualidade de uso, por outro lado, concentra-se em quatro características principais: eficácia, produtividade, segurança e satisfação. Essas características derivam da combinação das seis características de qualidade (interna e externa) previamente definidas pela norma ISO.

Durante a análise da qualidade do projeto, são abordados tanto os aspectos internos quanto os externos do software, considerando as seis características de qualidade. Além disso, é avaliada a experiência do usuário final por meio das quatro características específicas de qualidade de uso. Ao adotar essas abordagens complementares, busca-se realizar uma avaliação abrangente da qualidade do produto sob diferentes perspectivas.

4. Verificação e Validação (V&V)

A verificação e validação são processos essenciais no desenvolvimento de produtos, sistemas ou softwares, desempenhando papéis cruciais na garantia de qualidade e na conformidade com requisitos específicos.

A verificação refere-se à avaliação sistemática de um sistema ou componente para determinar se os resultados esperados estão em conformidade com os requisitos predeterminados. Deste modo, é o processo de checar se o produto está sendo construído corretamente, garantindo que cada etapa do desenvolvimento atenda às especificações e normas estabelecidas.

Por outro lado, a validação está relacionada à confirmação de que o sistema atende às necessidades e expectativas do usuário final. É o processo de assegurar que o produto seja útil e eficaz para o propósito a que se destina. Assim, a validação garante que o produto construído é o produto certo, atendendo aos requisitos e proporcionando valor real aos usuários.

Com isso, com o objetivo de alcançar os objetivos de qualidade propostos para o projeto, serão adotadas três técnicas de verificação e validadação:

  • Análise estática do código:: Serão utilizadas as funcionalidades do Sonar Cloud como ferramenta de análise estática de código, visando a obtenção de métricas mensuráveis. Essa ferramenta será capaz de identificar possíveis problemas no código e oferecer informações pertinentes à gestão da qualidade do projeto, promovendo uma contribuição valiosa para a tomada de decisões e a identificação de áreas a serem abordadas pela equipe.

  • Testes automatizados: Serão empregados testes automatizados, abrangendo tanto os testes unitários quanto os de integração. Essa abordagem possibilita a validação não apenas dos cenários esperados, mas também das situações de erro, assegurando o correto funcionamento do software em diversas condições.

  • Validação com os POs: Reuniões semanais serão realizadas para validar o progresso e obter feedback. Deste modo, é possível realizar a validação da implementação.

5. Padrões e métricas

A principal ISO e modelo utilizados no projeto são:

  • NBR - ISO/IEC 25010
  • Modelo de Qualidade Q-Rapids

Métricas

As métricas definidas para o monitoramento de qualidade foram:

Métrica Descrição
Reliability Quantidade de bugs presentes do código fonte
Security Rating Avaliação de segurança de falhas e vulnerabilidades
Maintainability Quantidade de mau cheiros de código
Coverage Porcentagem de linhas de código cobertos por testes
Duplications Densidade em porcentagem de código duplicado
Size Quantidade de linhas de declarações, funções, classes, arquivos e comentários
Complexity Quantidade de complexidade ciclomática e cognitiva
Issues Quantidade de issues abertas, fechadas, reabertas, falsa positiva e "won't fix"

6. Testes

O software é um produto da criatividade humana que envolve alta complexidade e, por isso, pode apresentar falhas e inconsistências. Para garantir que o software funcione conforme o esperado, existem os testes, que são processos que verificam a qualidade do software e evitam que os erros afetem o usuário final.

Os testes podem ser classificados em diferentes tipos, de acordo com o nível de abstração do software:

Testes de unidade: são testes que verificam uma parte isolada do código, geralmente uma classe ou um método.

Testes de integração: são testes que verificam o funcionamento de uma funcionalidade ou uma transação completa, envolvendo a interação entre diferentes componentes do software.

Testes de sistema: são testes que simulam o uso real do software por um usuário, verificando se o software atende aos requisitos e expectativas.

7. Ferramentas

  • Jest: Framework de testes para Javascript;

  • ESLint: Ferramenta para identificar e reportar padrões encontrados no código ECMAScript/JavaScript, com o objetivo de tornar o código mais consistente e evitar bugs.

  • SonarCloud: Ferramenta de análise de código que verifica a qualidade do código conforme as métricas e regras estabelecidas.

8. Controle de código

Para garantir a qualidade dos procedimentos, usamos uma mistura de tarefas automáticas e manuais. As tarefas automáticas envolvem documentação, controle de versão, código, commits e testes, que são feitos por ferramentas e sistemas que contribuem para a qualidade do software. Essas tarefas serão realizadas com o auxílio de ferramentas e sistemas, para a garantia da qualidade do software.

9. Histórico de versão

Data Descrição Autore(es)
22/10/2023 Criação do documento Guilherme Daniel Fernandes da Silva
22/10/2023 Adicionando tabela de métricas Antonio Rangel
22/10/2023 Revisando documentação Júlia Farias Sousa
22/10/2023 Revisando documentação Davi Matheus da Rocha de Oliveira