Gestão de Qualidade
Introdução
A gestão da qualidade é um elemento fundamental no desenvolvimento de produtos e serviços, sendo especialmente relevante no contexto do desenvolvimento de software. Segundo a ISO 25010, a qualidade de um produto de software é mensurada pelo grau em que ele atende aos requisitos de seus usuários, oferecendo valor e confiabilidade. Esses requisitos abrangem características como funcionalidade, desempenho, segurança e manutenibilidade, entre outras, e são organizados em um modelo de qualidade que as categoriza em atributos principais e suas respectivas subcaracterísticas.
Para garantir que esses requisitos sejam atendidos, é imprescindível estabelecer um sistema de métricas que permita monitorar e avaliar continuamente os aspectos do produto. Esse monitoramento não apenas assegura conformidade com os objetivos definidos, mas também viabiliza melhorias ao longo do projeto. Assim, o planejamento da qualidade desempenha um papel estratégico ao delinear como as métricas serão implementadas e como o desempenho do produto será acompanhado, promovendo a entrega de software de alta qualidade e alinhado às expectativas dos usuários.
Processo de Qualidade
O processo de qualidade adotado neste projeto foi fundamentado em uma abordagem colaborativa e iterativa, garantindo que o produto final atendesse às expectativas e necessidades do cliente. Desde o início, a validação das User Stories (US) foi conduzida em conjunto com o cliente, utilizando protótipos e critérios de aceitação para alinhar os objetivos e assegurar que os requisitos fossem claramente compreendidos. Esse ciclo contínuo de validação e aprimoramento permitiu que melhorias fossem implementadas de forma incremental, promovendo a evolução do produto ao longo do desenvolvimento.
Após a conclusão do desenvolvimento de cada funcionalidade, foram realizados testes de aceitação diretamente pelo cliente, o que possibilitou identificar ajustes necessários e incorporar novos aperfeiçoamentos ao produto. Essa dinâmica não apenas assegurou a qualidade do produto entregue, mas também reforçou a satisfação do cliente com o resultado final.
Para monitorar e garantir a qualidade técnica do projeto, cada serviço desenvolvido foi integrado com a ferramenta SonarQube, utilizando a interface SonarCloud para maior clareza e controle das métricas de qualidade. Essa integração forneceu uma visão abrangente e em tempo real do desempenho do código, possibilitando a detecção precoce de problemas e garantindo a entrega de um software robusto e alinhado aos padrões estabelecidos.
A estruturação para a observação da qualidade do produto segue um modelo baseado na ISO 25010, categorizando diferentes aspectos da qualidade em características e fatores específicos. Essa abordagem permite uma avaliação detalhada e objetiva do software, garantindo que métricas relevantes sejam monitoradas continuamente. No projeto, a manutenibilidade é avaliada por meio das métricas de complexidade, comentários e duplicação, garantindo que o código seja compreensível e fácil de modificar. Já a confiabilidade é analisada com base nos fatores Testing Status e Testing Performance, representados pelas métricas Test Success e Fast Tests, assegurando que o software funcione corretamente e que os testes sejam executados de forma eficiente. Além disso, a cobertura de código desempenha um papel essencial, verificando a extensão dos testes automatizados para garantir uma validação abrangente das funcionalidades. Essa estrutura de observação permite uma abordagem sistemática e iterativa para o controle da qualidade, facilitando a identificação precoce de problemas e a implementação de melhorias contínuas.
Foi desenvolvido um notebook com tais métricas, que pode ser acessaado por esse link.
Métricas Monitoradas e Práticas de Garantia de Qualidade
O monitoramento de métricas e a implementação de práticas estruturadas foram fundamentais para assegurar a qualidade do projeto. Dentre as principais métricas e estratégias adotadas, destacam-se:
Métricas Monitoradas
Cobertura de Código
- Monitoramos a extensão em que o código-fonte foi testado, assegurando que os testes automatizados cobrissem cenários críticos e minimizassem a ocorrência de bugs não detectados.
Duplicidade de Código
- Identificamos e reduzimos trechos de código redundantes, promovendo manutenibilidade e eficiência no desenvolvimento.
Vulnerabilidades e Bugs
- Avaliamos continuamente o código para detectar vulnerabilidades e erros, utilizando ferramentas de análise estática integradas com o SonarCloud.
Integração com CI/CD
- Configuramos pipelines de integração contínua para executar automaticamente as análises do SonarCloud, garantindo que problemas fossem detectados antes da fusão de branches.
Tempo de Execução dos Testes (test_execution_time
)
- Medimos o tempo de execução dos testes para garantir eficiência e rapidez no ciclo de desenvolvimento.
Fast Tests
- Garantimos que os testes fossem executados rapidamente, utilizando um valor de referência de 300000 microssegundos.
Taxa de Sucesso nos Testes (tests_success
)
- Unificamos as métricas de falhas e erros de testes para avaliar a confiabilidade dos testes automatizados.
Políticas de Código e Revisão
Pull Requests e Code Review
- Implementamos um processo rigoroso de revisão de código, com melhores práticas que asseguraram qualidade e aderência aos padrões.
Padrões de Codificação
- Adotamos ferramentas para verificar e reforçar regras de codificação, promovendo uniformidade e clareza no código-fonte.
Merge Guidelines
- Só vai ser mergeado os prs que tiverem aprovação e passarem na validação de CI/CD.
Essas práticas integradas garantiram um desenvolvimento contínuo e alinhado com os objetivos de qualidade, resultando em um produto robusto, seguro e com alto nível de confiabilidade.
Ferramentas de Teste e Gerenciamento Utilizadas
Para garantir a qualidade e eficiência no desenvolvimento, foram utilizadas ferramentas robustas de teste e gerenciamento que se complementam, proporcionando um ambiente de trabalho estruturado e produtivo.
Jest - Framework completo para testes em JavaScript, amplamente utilizado para testes de unidade, integração e ponta a ponta. - Suporte a mocks e snapshots, permitindo simulações precisas de dependências e verificações de consistência de saída. - Interface intuitiva, que facilita a configuração e execução de testes, acelerando o ciclo de desenvolvimento.
Vitest - Framework leve e rápido, projetado para o ecossistema JavaScript moderno, com foco em integração com o Vite. - Compatível com TypeScript e módulos ESM, garantindo flexibilidade no desenvolvimento de aplicações front-end. - Ideal para cenários que exigem performance otimizada em testes.
SonarCloud - Plataforma de análise de código que identifica bugs, vulnerabilidades e code smells, promovendo a segurança e manutenibilidade do projeto. - Suporte a diversas linguagens de programação e integração direta com pipelines de CI/CD, assegurando monitoramento contínuo da qualidade. - Relatórios detalhados e visualizações gráficas que facilitam a identificação e resolução de problemas no código.
ZenHub - Ferramenta de gerenciamento de projetos integrada ao GitHub, permitindo um fluxo de trabalho centralizado e eficiente. - Recursos como quadros Kanban e relatórios de produtividade possibilitam uma visão clara do progresso do projeto e o acompanhamento de tarefas. - Facilita a comunicação entre equipes e a organização de backlog, assegurando o alinhamento com os objetivos do projeto.
Essas ferramentas foram fundamentais para implementar um processo de desenvolvimento ágil e orientado à qualidade, otimizando tanto o aspecto técnico quanto a gestão das atividades.
Qualidade e suas Características
A qualidade do software é definida por um conjunto de características e subcaracterísticas que permitem medir e garantir um produto confiável. Seguindo o modelo da ISO 25010, a qualidade pode ser analisada com base nos seguintes aspectos:
- Funcionalidade: Capacidade do software de fornecer funcionalidades que atendam aos requisitos do usuário.
- Eficiência de Desempenho: Tempo de resposta, consumo de recursos e capacidade de processamento.
- Confiabilidade: Disponibilidade, tempo médio entre falhas e recuperação.
- Usabilidade: Facilidade de uso, acessibilidade e aprendizado.
- Manutenibilidade: Facilidade para modificar, corrigir ou aprimorar o software.
- Portabilidade: Capacidade de ser executado em diferentes ambientes.
Modelo de Qualidade do Q-Rapids
O modelo Q-Rapids é um framework de avaliação contínua da qualidade de software que integra diferentes métricas e fontes de dados para fornecer insights estratégicos sobre o desenvolvimento. Ele utiliza um conjunto de fatores de qualidade, como manutenibilidade, confiabilidade e produtividade, combinados com métricas extraídas de ferramentas como SonarQube. O modelo permite que equipes tomem decisões informadas com base em análises quantitativas e qualitativas, facilitando a identificação de problemas e a implementação de melhorias contínuas. Além disso, o Q-Rapids adota uma abordagem iterativa e adaptável, permitindo personalizações conforme as necessidades específicas de cada projeto, garantindo que a qualidade do software seja mantida e aprimorada ao longo do ciclo de desenvolvimento.
Fatores e Métricas de Qualidade
Os fatores de qualidade, como manutenibilidade, confiabilidade, usabilidade e eficiência, são pilares para avaliar o sucesso do produto, do processo e da organização. As métricas associadas fornecem dados quantitativos que:
- Permitem monitorar e melhorar continuamente a qualidade.
- Identificam problemas de forma precoce, reduzindo custos com retrabalho.
- Aumentam a satisfação do cliente ao garantir um alinhamento mais forte com suas expectativas e requisitos.
Contribuição do SonarCloud
O SonarCloud desempenha um papel crucial nesse modelo, fornecendo suporte contínuo ao monitoramento de métricas de qualidade e integração de diferentes fontes de dados. Sua capacidade de gerar relatórios detalhados e dashboards oferece uma visão clara da saúde do projeto, contribuindo diretamente para a execução dos objetivos do Q-Rapids.
Esse modelo integrado reflete uma abordagem robusta para a qualidade, combinando planejamento estratégico, uso eficiente de ferramentas e monitoramento contínuo, promovendo produtos confiáveis e alinhados às demandas do mercado.
Métricas para o Produto
O uso de métricas permite identificar subcaracterísticas associadas e avaliar a qualidade do produto. Essa análise também possibilita medir a produtividade do projeto, gerando resultados que influenciam as decisões de desenvolvimento. No projeto, analisamos diferentes métricas que pertencem a fatores e características específicas da qualidade do software, conforme a ISO 25010.
-
Complexidade, Comentário e Duplicação: Essas métricas pertencem ao fator de qualidade de código, que faz parte da característica de manutenibilidade. Elas permitem avaliar a facilidade de manutenção e compreensão do código, reduzindo riscos de retrabalho e melhorando a eficiência do desenvolvimento.
-
Test Success: Essa métrica pertence ao fator Testing Status, que faz parte da característica de confiabilidade. Ela mede a taxa de sucesso dos testes automatizados, garantindo que o software funcione corretamente sem falhas inesperadas.
-
Fast Tests: Associada ao fator Testing Performance, essa métrica também pertence à característica de confiabilidade e mede o tempo de execução dos testes para assegurar que a validação do código ocorra de forma ágil e eficiente.
-
Cobertura de Código: Mede a porcentagem do código que é testado por testes automatizados. Uma cobertura adequada garante que a maioria das funcionalidades seja testada, reduzindo a probabilidade de falhas em produção.
Com base nas métricas especificadas no Q-Rapids, além dos dados coletados, foram definidos os valores mínimos aceitáveis para cada métrica no projeto Sentinela, conforme mostrado na tabela abaixo.
Valores de Referência para as Métricas utilizadas
Métrica | Valor de Referência |
---|---|
Complexity | < 10 por função |
Duplicated Lines Density (%) | Entre 10% e 30% |
Coverage | > 60% |
Densidade de Duplicidade | < 5% |
Fast Tests | < 300000 microssegundos |
Esses valores foram definidos com base em referências do modelo Q-Rapids e no relatório do Google de boas práticas de cobertura de código, garantindo um alto padrão de qualidade no desenvolvimento do software.
Histórico de Versões
Alteração | Data | Autor |
---|---|---|
Criação do documento | 08/12/2024 | Daniela Soares |
Revisão do documento | 08/12/2024 | Clara Marcelino |
Ajuste do planejamento de qualidade | 08/01/2025 | Clara Marcelino |