Skip to content

Commit

Permalink
Adicao planejamento qualidade
Browse files Browse the repository at this point in the history
  • Loading branch information
viniman27 authored Jul 6, 2024
1 parent b3dedbe commit 12997ac
Showing 1 changed file with 95 additions and 0 deletions.
95 changes: 95 additions & 0 deletions docs/planejamento/PlanoQualidade.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
## 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). 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 - Jasmine

Jasmine é um framework open source para a realização de testes unitários a partir de códigos que utilizam da linguagem JavaScript. O Jasmine tem como característica a sua fácil utilização e a independencia de outros frameworks. No projeto utilizaremos o Jasmine para realizar testes no front-end.

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.

### Testes Unitários - TestClient

Ferramenta muito utilizada para testagem do framework FastAPI. Tem como característica ser de fácil utilização. Será usado pela equipe para a realização de testes unitários no back-end.

#### Testes Unitários - Pytest

Para assegurar a qualidade e a robustez do sistema, a equipe empregou o Pytest no backend para a execução de testes unitários. O Pytest, uma ferramenta de teste unitário gratuita e de código aberto, é focado na comunidade e adequado para o desenvolvimento em Python. Ele é amplamente utilizado para testar código Python e é compatível com várias ferramentas e frameworks populares no ecossistema Python.

### 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.

egundo 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.


## 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.


## Métricas de qualidade

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

| Métrica | Descrição |
| ---------------- | --------------------------------------------- |
| Bugs | Número de problemas identificados no código |
| Coverage | 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 Rating | Avaliação de segurança e vulnerabilidades |

Através do uso de métricas, é possível identificar as subcaracterísticas relacionadas e avaliar a qualidade do produto. Essa avaliação fornece insights sobre a produtividade do projeto e influencia as decisões tomadas durante o desenvolvimento. 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 |
| ----------------- | -------------------------------- |
| Coverage | Pelo menos 80% de cobertura |
| Bugs | Classificado como "A" |
| Security Hotspots | Classificado como "A" |
| Duplication | Até 3.0% de duplicação de código |


## Referências

- Qualidade de Software. Disponível em: <https://www.devmedia.com.br/qualidade-de-software-engenharia-de-software-29/18209>. Acesso em 05 julho. 2024

- ISO/IEC 25010. ISO 25000. Software and data quality. 2011. Disponível em: <https://iso25000.com/index.php/en/iso-25000-standards/iso-25010>. Acesso em 04 julho. 2024

- ENGSOFTMODERNA. Engenharia de Software Moderna. Disponível em: <https://engsoftmoderna.info/>. Acesso em 04 julho. 2024

- 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 06 julho. 2024

- 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 06 julho. 2024


## Versionamento do Documento

| Data | Versão | Descrição | Autor |
| :-----: | :-------------: | :---------------: | :-: |
| 06/07/2024 | 1.0 | Versão inicial do documento | [Vinícius Assumpção de Araújo](https://github.com/viniman27) |

0 comments on commit 12997ac

Please sign in to comment.