Docente: Hidelbrando Ferreira Rodrigues
Discentes: Erison Pinto; Juliane Athayde; Mateus Figueiredo
Título do Trabalho: Relatório Sobre a Eficiência em Projetos Web

1 Introdução

No campo da engenharia de software, a análise da qualidade do código é essencial para garantir a eficácia e a eficiência dos projetos desenvolvidos. A qualidade do código é um fator crítico que pode impactar significativamente o desempenho, a manutenção e a evolução dos sistemas de software, atendendo às expectativas dos usuários, e satisfazendo uma experiência satisfatória aos mesmos. Esta base de dados foi criada para investigar a relação entre o número de bugs reportados, a cobertura de código e a qualidade percebida do código em diferentes tipos de projetos de software (Web, Mobile, Desktop). Este estudo visa explorar como diferentes métricas de qualidade, como o número de bugs reportados e a cobertura de código, se correlacionam com a qualidade percebida do código em cada tipo de projeto. Ao entender essas relações, é possível identificar melhores práticas e estratégias que podem ser adotadas para melhorar a qualidade do software em diversas plataformas.

2 Problema e objetivo de estudo

O objetivo deste estudo é avaliar como o número de bugs reportados e a cobertura de código se relacionam com a qualidade percebida do código em diferentes tipos de projetos de software. Especificamente, o estudo busca responder se existe uma correlação entre a cobertura de código e o número de bugs reportados, como a qualidade percebida do código varia entre projetos Web e quais práticas de desenvolvimento são mais eficazes para melhorar a qualidade do código em diferentes plataformas.

3 Metodologia

Coleta de Dados: Os dados foram coletados de diversos projetos de software desenvolvidos em diferentes ambientes (Web, Mobile, Desktop). Para cada projeto, foram registrados o número de bugs reportados, a cobertura de código obtida através de testes automatizados, o tipo de projeto e a avaliação da qualidade do código. Neste relatório o objetivo é especificamente nos projetos de desenvolvimento Web. Filtramos a base de dados de desenvolvimento Web para facilitar no andamento do relatório.

Análise Descritiva: Será realizada uma análise descritiva para entender a distribuição das variáveis e identificar padrões iniciais nos dados.

Análise Inferencial: Serão aplicadas técnicas estatísticas para investigar as relações entre as variáveis quantitativas (bugs reportados e cobertura de código) e qualitativas (tipo de projeto e qualidade do código).

4 Base de dados da análise

4.1 Dados dos projetos Web

Disponibilizamos a seguir a tabela com base de dados do projeto de desenvolvimento Web.

ID Bugs Reportados Cobertura de Código (%) Tipo de Projeto Qualidade do Código
1 40 52.28 Web Ruim
2 15 99.16 Web Regular
7 75 69.34 Web Regular
8 7 91.6 Web Excelente
12 75 89.87 Web Boa
23 42 55.64 Web Boa
25 38 52.09 Web Regular
30 88 82.19 Web Ruim
34 95 88.9 Web Boa
35 83 56.7 Web Ruim
36 31 93.45 Web Boa
37 66 87.44 Web Regular
47 39 77.01 Web Excelente
48 46 80.42 Web Regular
49 8 91.31 Web Regular
51 15 58.84 Web Excelente
54 22 77.4 Web Ruim
59 83 63.7 Web Ruim
71 70 99.43 Web Excelente
74 19 82.17 Web Ruim
75 56 58.07 Web Excelente
78 68 87.09 Web Excelente
85 84 51.53 Web Ruim
86 90 67.86 Web Excelente
99 21 97.68 Web Regular

4.1.1 Variáveis da base de dados

A seguir, apresentamos uma descrição detalhada de cada variável presente na base de dados mencionada anteriormente. Nosso objetivo é esclarecer a importância de cada variável, facilitando o entendimento das análises realizadas e descritas ao longo do documento.

  • ID

Tipo: Quantitativa Discreta.

Descrição: Identificador único de cada registro no conjunto de dados, sem ordem específica, pois foram extraídos de uma base maior.

Importância: Serve apenas para identificar os registros, sem impacto na análise.

  • Bugs Reportados

Tipo: Quantitativa Discreta. Descrição: Número de bugs identificados durante o desenvolvimento e manutenção do projeto. Importância: Esta métrica é essencial para avaliar a robustez do software, já que um número elevado de bugs pode comprometer a usabilidade e a satisfação do usuário.

  • Cobertura de Código (%*)

Tipo: Quantitativa Contínua Descrição: Percentual do código fonte que é coberto por testes automatizados. Importância: Indica a eficácia dos testes implementados. Uma alta cobertura sugere que grande parte do código foi testada, o que pode reduzir a probabilidade de erros não detectados.

  • Tipo de Projeto

Tipo: Qualitativa Nominal Descrição: Classificação do projeto de software em categorias como Web, Mobile e Desktop. Importância: Cada tipo de projeto apresenta desafios e prioridades diferentes, como escalabilidade em projetos Web ou desempenho e usabilidade em projetos Mobile.

  • Qualidade do Código

Tipo: Qualitativa Ordinal Descrição: Avaliação da qualidade do código (Excelente, Boa, Regular, Ruim). Importância: A qualidade do código é uma medida subjetiva que pode influenciar a manutenção e a evolução do software. Código de alta qualidade é mais fácil de entender, modificar e escalar.

5 Análise descritiva

5.1 Variáveis Quantitativas

Inicialmente, o relatório foi dividido em dois tipos de análise. Primeiramente vemos a análise descritiva das variáveis quantitativas: Bugs Reportados e Cobertura de Código, seguida pela análise das variáveis qualitativas.

5.1.1 Diagramas de Ramo-e-Folhas

Vamos ordenar os dados e criar diagramas de ramo-e-folhas para visualizar a distribuição dos bugs reportados e da cobertura de código.

Digrama de ramos e folhas para Bugs Reportados

## 
##   The decimal point is 1 digit(s) to the right of the |
## 
##   0 | 78559
##   2 | 12189
##   4 | 0266
##   6 | 68055
##   8 | 334805

Diagrama de ramos e folhas para Cobertura de Código(%)

## 
##   The decimal point is 1 digit(s) to the right of the |
## 
##   5 | 2226789
##   6 | 489
##   7 | 77
##   8 | 022779
##   9 | 0123899

5.1.2 Tabela de distribuição de frequência

A tabela de distribuição de frequência organiza os dados em intervalos, mostrando a frequência de ocorrência em cada categoria. Isso ajuda a identificar padrões e outliers.

Tabela de Distribuição de Frequência para Bugs Reportados
Frequência
Bugs Reportados Frequência
7 1
8 1
15 2
19 1
21 1
22 1
31 1
38 1
39 1
40 1
42 1
46 1
56 1
66 1
68 1
70 1
75 2
83 2
84 1
88 1
90 1
95 1
Tabela de Distribuição de Frequência para Cobertura de Código (%)
Frequência
Cobertura de Código (%) Frequência
51.53 1
52.09 1
52.28 1
55.64 1
56.70 1
58.07 1
58.84 1
63.70 1
67.86 1
69.34 1
77.01 1
77.40 1
80.42 1
82.17 1
82.19 1
87.09 1
87.44 1
88.90 1
89.87 1
91.31 1
91.60 1
93.45 1
97.68 1
99.16 1
99.43 1

A tabela de distribuição de frequência organiza os dados em intervalos, mostrando a frequência de ocorrência em cada categoria, ajudando a identificar padrões e outliers. Para os “Bugs Reportados”, as classes mais frequentes são 15, 75 e 83, cada uma com uma frequência de 2. Para a “Cobertura de Código (%)”, todas as classes têm a mesma frequência de 1, indicando uma distribuição uniforme sem classes repetidas.

5.1.3 Histogramas

Os histogramas oferecem uma visualização gráfica da distribuição dos Bugs Reportados e da Cobertura de Código nos projetos de desenvolvimento Web.

Os histogramas fornecem uma visão clara sobre a distribuição de frequências das variáveis analisadas. No histograma de Bugs Reportados, observa-se que a maioria dos valores está concentrada em três faixas principais: entre 15 e 25 bugs, entre 45 e 55 bugs, e entre 70 e 80 bugs, indicando picos específicos nessas regiões. Já no histograma de Cobertura de Código (%), os dados se concentram majoritariamente entre 50% e 60%, e entre 80% e 100%, sugerindo que a cobertura de código tende a ser baixa ou alta, com poucas observações na faixa intermediária.

5.1.4 Ogiva

5.1.5 Medidas de tendências centrais

Medidas de Tendência Central para Bugs Reportados
Medida Valor
Média 51.04
Mediana 46.00
Moda 15.00
Medidas de Tendência Central para Cobertura de Código (%)
Medida Valor
Média 76.4468
Mediana 80.4200
Moda 51.5300

As medidas de tendência central fornecem uma visão clara sobre a distribuição central das variáveis analisadas. Para Bugs Reportados, a média é 51,04, indicando que, em média, há pouco mais de 51 bugs reportados. A mediana, que é 46, sugere que metade dos projetos tem menos de 46 bugs e a outra metade tem mais. A moda, 15, indica que o valor mais frequente de bugs reportados é 15. Para Cobertura de Código (%), a média é 76,4468%, sugerindo uma cobertura média relativamente alta. A mediana é 80,42%, indicando que metade dos projetos tem uma cobertura de código abaixo de 80,42% e a outra metade acima. A moda, 51,53%, mostra que o valor mais frequente de cobertura de código é 51,53%.

5.1.6 Medidas de variabilidade

A partir das medidas de variabilidade vemos que as duas variáveis possuem alta variabilidade, ou seja,seus valores estão espalhados em relação às suas médias. assim, percebe-se que é essencial concentrar-se mais em práticas consistentes de desenvolvimento e testes para diminuir a variabilidade nos resultados da qualidade do código.

Medidas de Variabilidade para Bugs Reportados
Medida Valor
Desvio Padrão 28.9374
Variância 837.3733
Amplitude 88.0000
Medidas de Variabilidade para Cobertura de Código (%)
Medida Valor
Desvio Padrão 16.38365
Variância 268.42390
Amplitude 47.90000

As medidas de variabilidade fornecem informações sobre a dispersão dos dados em torno da média. Para Bugs Reportados, o desvio padrão é 28,9374, indicando que os valores de bugs reportados tendem a variar cerca de 29 unidades em relação à média. A variância, que é 837,3733, mostra o quão espalhados estão os dados. A amplitude, 88, representa a diferença entre o maior e o menor valor de bugs reportados. Para Cobertura de Código (%), o desvio padrão é 16,38365, indicando que os valores de cobertura de código tendem a variar cerca de 16,38% em relação à média. A variância, 268,42390, reflete a dispersão dos dados de cobertura de código. A amplitude, 47,90, mostra a diferença entre a maior e a menor cobertura de código.

5.1.7 Análise de assimetria

Foi realizada a análise de assimetria para entender a distribuição dos dados em duas métricas críticas: Bugs Reportados e Cobertura de Código. Os resultados revelaram uma assimetria ligeiramente negativa para ambos os indicadores.

## Assimetria de Bugs Reportados: -0.03357757
## Assimetria de Cobertura de Código: -0.2227382

A assimetria negativa sugere que, em geral, as distribuições dessas métricas tendem a ser levemente deslocadas para a esquerda, indicando uma distribuição mais concentrada nos valores mais altos, porém com uma leve cauda à esquerda.

5.1.8 Boxplot

Os boxplots fornecem uma visualização clara da variabilidade e distribuição das métricas de bugs reportados e cobertura de código em projetos web.

5.1.8.1 Análise do Boxplot de Bugs Reportados

O boxplot de bugs reportados mostra que a mediana está em torno de 50, indicando que metade dos dados está acima desse valor e a outra metade abaixo. A distribuição é relativamente simétrica, pois os bigodes (whiskers) têm comprimentos semelhantes, sugerindo uma variabilidade equilibrada nos bugs reportados. Não há outliers visíveis, indicando que os dados são consistentes.

5.1.8.2 Análise do Boxplot de Cobertura de Código

O boxplot da cobertura de código revela que a mediana está por volta de 80, sugerindo que a maioria dos projetos tem uma cobertura de código acima desse valor. A distribuição parece ligeiramente assimétrica com uma cauda mais longa na parte inferior, indicando que alguns projetos têm uma cobertura de código significativamente menor. No entanto, a maior parte dos dados está concentrada entre 70 e 90, indicando uma boa cobertura de código na maioria dos casos.

5.2 Variáveis Qualitativas

Esta parte da análise descritiva tem como objetivo realizar a análise das qualitativas listadas a seguir.

5.2.1 Tabela de contigência

A tabela de contingência apresenta a frequência de diferentes níveis de qualidade do código em um conjunto de dados.

Qualidade do Código Frequência
Boa 4
Excelente 7
Regular 7
Ruim 7

Podemos concluir que:

A maioria dos códigos foi avaliada como “Excelente”, “Regular” ou “Ruim”, cada uma com 7 ocorrências, e apenas uma menor parte dos códigos foi avaliada como “Boa”, com 4 ocorrências.

5.2.2 Proporção

A tabela de proporção nos ajuda a entender a distribuição relativa das avaliações de qualidade do código.

Proporção da Tabela de contigência
Qualidade do Código Frequência Proporção
Boa 4 0.16
Excelente 7 0.28
Regular 7 0.28
Ruim 7 0.28

Com base nas proporções:

Boa: 16% dos códigos foram classificados como “Boa”. Excelente: 28% dos códigos foram classificados como “Excelente”. Regular: 28% dos códigos foram classificados como “Regular”. Ruim: 28% dos códigos foram classificados como “Ruim”.

As tabelas de contingência e proporção revelam que a qualidade do código é distribuída de maneira equilibrada entre “Excelente”, “Regular” e “Ruim”, cada uma representando 28% das avaliações, enquanto apenas 16% dos códigos são classificados como “Boa”.

Isso sugere uma diversidade significativa na qualidade do código, com uma variabilidade de 1.3664 indicando uma distribuição ampla entre as diferentes categorias. Esses insights podem orientar esforços de melhoria para aumentar a frequência de avaliações positivas e reduzir as avaliações “Ruim” e “Regular”.

5.2.3 Variabilidade para qualidade do Código

## ## Variabilidade para Qualidade do Código: 1.3664

A variabilidade para a qualidade do código, calculada em 1.3664, indica que as avaliações de qualidade do código possuem uma dispersão moderada em relação à média. Essa medida de variabilidade sugere que, embora haja uma distribuição equilibrada entre “Excelente”, “Regular” e “Ruim”, as avaliações não estão altamente concentradas em torno de uma única categoria, refletindo uma diversidade considerável na qualidade do código. Este resultado aponta para a necessidade de um foco contínuo em uniformizar e elevar os padrões de qualidade do código nos projetos.

5.2.4 Boxplot

Os dois gráficos de caixa (boxplots) apresentados mostram a relação entre a qualidade do código e duas métricas: o número de bugs reportados e a cobertura de código.

5.2.4.1 Número de Bugs Reportados

Este boxplot mostra a distribuição do número de bugs reportados em função da qualidade do código, que é categorizada em Ruim, Regular, Boa e Excelente.

  • Ruim: A mediana do número de bugs reportados é a mais alta, em torno de 75 bugs. A dispersão é relativamente alta, indicando uma variação significativa no número de bugs.

  • Regular: A mediana é menor que a da categoria “Ruim”, em torno de 50 bugs. A dispersão é menor, mas ainda significativa.

  • Boa: A mediana do número de bugs reportados é um pouco mais baixa que a da categoria “Regular”, em torno de 40 bugs. A dispersão é menor que nas categorias anteriores.

  • Excelente: A mediana do número de bugs reportados é a mais baixa, em torno de 30 bugs. A dispersão é relativamente maior em comparação com a categoria “Boa”, mas menor que nas categorias “Ruim” e “Regular”.

De modo geral, observa-se que, à medida que a qualidade do código melhora, o número de bugs reportados tende a diminuir, indicando uma correlação negativa entre a qualidade do código e o número de bugs.

5.2.4.2 Cobertura de Código

Este boxplot mostra a distribuição da cobertura de código em função da qualidade do código.

  • Ruim: A mediana da cobertura de código é a mais baixa, em torno de 65%. A dispersão é bastante alta, com valores variando consideravelmente.

  • Regular: A mediana da cobertura de código é mais alta que na categoria “Ruim”, em torno de 85%. A dispersão é menor, indicando maior consistência na cobertura de código.

  • Boa: A mediana da cobertura de código é ligeiramente menor que na categoria “Regular”, em torno de 85%. A dispersão é pequena, indicando consistência.

  • Excelente: A mediana da cobertura de código é em torno de 80%, com uma maior dispersão em comparação com a categoria “Boa”.

Abaixo, segue os dois códigos:

Observa-se que, embora a cobertura de código tenda a ser mais alta à medida que a qualidade do código melhora, a relação não é tão linear ou clara quanto a relação com o número de bugs reportados. Isso sugere que a cobertura de código é uma métrica importante, mas não necessariamente diretamente proporcional à qualidade percebida do código.

Em resumo, os dois gráficos indicam que há uma correlação negativa clara entre a qualidade do código e o número de bugs reportados: códigos de melhor qualidade tendem a ter menos bugs. No entanto, a relação entre a qualidade do código e a cobertura de código é menos direta, sugerindo que, embora a cobertura seja uma métrica relevante, outros fatores também influenciam a qualidade do código.

6 Conclusão

Neste relatório, analisamos a eficiência de projetos de desenvolvimento Web com base em métricas de qualidade do código, como o número de bugs reportados e a cobertura de código. Observamos que a cobertura de código e o número de bugs reportados são métricas cruciais para avaliar a robustez e a qualidade dos projetos de software. A análise descritiva e inferencial revelou que existe uma variação significativa na qualidade do código entre os diferentes projetos, o que pode estar associado às práticas de desenvolvimento adotadas. Identificamos que projetos com maior cobertura de código tendem a ter menos bugs, sugerindo uma correlação positiva entre a eficácia dos testes automatizados e a qualidade do software.

7 Recomendações

Aumentar a Cobertura de Código: Investir em testes automatizados para aumentar a cobertura de código pode reduzir significativamente o número de bugs e melhorar a qualidade geral do software.

Adotar Boas Práticas de Desenvolvimento: Implementar práticas de codificação limpas e seguir padrões de desenvolvimento pode melhorar a qualidade do código e facilitar a manutenção futura.

Monitorar e Analisar Métricas Regularmente: Manter um monitoramento contínuo das métricas de qualidade, como cobertura de código e bugs reportados, para identificar áreas de melhoria e agir preventivamente.

Treinamento e Capacitação: Proporcionar treinamentos regulares aos desenvolvedores sobre as melhores práticas de testes e desenvolvimento pode aumentar a eficiência e a qualidade dos projetos.

8 Referências

Martin, R. C. (2008). Clean Code: A Handbook of Agile Software Craftsmanship. Prentice Hall.

Fowler, M. (2018). Refactoring: Improving the Design of Existing Code. Addison-Wesley Professional.

Beck, K. (2003). Test Driven Development: By Example. Addison-Wesley.

Gamma, E., Helm, R., Johnson, R., & Vlissides, J. (1994). Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley.