Título: Análise da Qualidade de Código e Incidência de Bugs em Diferentes Tipos de Projetos de Software

1. Introdução

A análise da qualidade do código e a incidência de bugs são aspectos fundamentais no campo da engenharia de software, pois influenciam diretamente a eficácia e a eficiência dos projetos desenvolvidos. Nesse contexto, o presente estudo tem como objetivo 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, nomeadamente Web, Mobile e Desktop.

As variaveis a serem analisadas

  1. Bugs Reportados
  2. Cobertura de Código (%)
  3. Tipo de Projeto
  4. Qualidade do Código

2. Análise das Variáveis Quantitativas

2.1. Diagrama de Ramo-e-Folha

Os diagramas de ramo-e-folha são uma ferramenta essencial para visualizar a distribuição de um conjunto de dados. Cada número do conjunto de dados é dividido em duas partes: o “ramo”, que representa a parte mais significativa, e a “folha”, que representa a parte menos significativa. Neste relatório, apresenta-se os diagramas de ramo-e-folha para duas variáveis quantitativas: “Bugs Reportados” e “Cobertura de Código (%)”. Esses diagramas fornecem uma visão clara da distribuição dos valores dessas variáveis, ajudando-nos a identificar padrões e tendências nos dados.

  • Diagrama de Ramo-e-Folha para Bugs Reportados
## 
##   The decimal point is 1 digit(s) to the right of the |
## 
##   0 | 0111122333
##   0 | 5666777889
##   1 | 00133334444
##   1 | 55677789
##   2 | 0000112233334444
##   2 | 5556778889
##   3 | 0234
##   3 | 55567888999
##   4 | 011233333444
##   4 | 66667899
  • Diagrama de Ramo-e-Folha para Cobertura de Código
## 
##   The decimal point is 1 digit(s) to the right of the |
## 
##   5 | 012234
##   5 | 556677888
##   6 | 000112222333344
##   6 | 5556788899
##   7 | 0001112223444
##   7 | 57778888
##   8 | 000001223334
##   8 | 555556666
##   9 | 000123344
##   9 | 55667999
##   10 | 0

2.2. Tabela de Distribuição de Frequência

As tabelas de distribuição de frequência são uma ferramenta essencial na análise descritiva de dados. Elas nos permitem entender como os dados estão distribuídos ao longo de diferentes intervalos ou categorias.

Neste relatório, apresenta-se as tabelas de distribuição de frequência para duas variáveis quantitativas importantes no nosso conjunto de dados: “Bugs Reportados” e “Cobertura de Código (%)”. Essas tabelas fornecem uma visão de como os valores dessas variáveis estão distribuídos, ajudando-nos a interpretar melhor os dados e a fazer inferências mais precisas.

  • Tabela de distribuição de frequência para Bugs Reportados
## 
##  0  1  2  3  5  6  7  8  9 10 11 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 
##  1  4  2  3  1  3  3  2  1  2  1  4  4  2  1  3  1  1  4  2  2  4  4  3  1  2 
## 28 29 30 32 33 34 35 36 37 38 39 40 41 42 43 44 46 47 48 49 
##  3  1  1  1  1  1  3  1  1  3  3  1  2  1  5  3  4  1  1  2
  • Tabela de distribuição de frequência para Cobertura de Código
## 
## 50.03  50.7 51.65 52.02 53.24 54.04 54.77 55.27 55.54  56.1 56.97  57.4 57.54 
##     1     1     1     1     1     1     1     1     1     1     1     1     1 
## 58.23 58.41 59.94 60.09 60.15 60.92 60.94  61.8 62.11 62.21 62.34  62.7  62.8 
##     1     1     1     1     1     1     1     1     1     1     1     1     1 
## 63.34 63.47 63.61 63.74 64.67 64.78 65.24 66.22 67.25 67.63 67.81 68.48 68.54 
##     1     1     1     1     1     1     1     1     1     1     1     1     1 
## 69.15 69.74 69.94 70.19 70.55 70.83 71.17 71.97 72.39 72.47 72.83 73.52 73.77 
##     1     1     1     1     1     1     1     1     1     1     1     1     1 
## 74.24 75.41 76.55  76.7 76.99 77.64 77.91 78.06 78.16 79.56 79.63 79.94 80.22 
##     1     1     1     1     1     1     1     1     1     1     1     1     1 
##  80.3 81.22 81.72 82.38 82.55  83.3 83.44 84.04 84.62 84.74 84.78 84.79 84.82 
##     1     1     1     1     1     1     1     1     1     1     1     1     1 
## 85.53 85.57 85.61 86.09 89.51 89.92 90.16 90.82 92.45  92.5 92.92 94.02 94.16 
##     1     1     1     1     1     1     1     1     1     1     1     1     1 
## 94.79 95.34 95.75 96.32 97.14 98.59 98.83 99.17 99.89 
##     1     1     1     1     1     1     1     1     1

2.3. Histograma

Os histogramas são ferramentas essenciais para visualizar a distribuição dos dados quantitativos. Eles nos ajudam a identificar a frequência de diferentes valores em um conjunto de dados, proporcionando uma visão clara sobre como os dados estão distribuídos. Abaixo apresentamos dois histogramas: o primeiro mostra a distribuição da quantidade de bugs reportados nos projetos analisados, enquanto o segundo ilustra a distribuição da cobertura de código (%).

  • Histograma para Bugs Reportados

  • Histograma para Cobertura de Código

2.4. Ogiva

A ogiva é uma ferramenta útil para visualizar a distribuição cumulativa de um conjunto de dados. Ela mostra a frequência acumulada dos dados, o que nos permite entender como os valores se acumulam ao longo do intervalo de dados. Dessa forma, tem-se as ogivas para as duas variáveis quantitativas: “Bugs Reportados” e “Cobertura de Código (%)”. Essas ogivas, ajudam a entender melhor a distribuição cumulativa dessas variáveis, destacando a proporção dos dados que se encontra abaixo de determinados valores.

  • Ogiva para Bugs Reportados
## ------------------------------------------------------------------------------ 
## dados$Bugs.Reportados (integer)
## 
##   length       n    NAs  unique     0s   mean  meanCI'
##      100     100      0      46      1  24.07   21.20
##           100.0%   0.0%           1.0%          26.94
##                                                      
##      .05     .10    .25  median    .75    .90     .95
##     1.95    4.80  13.00   23.00  38.00  44.00   46.00
##                                                      
##    range      sd  vcoef     mad    IQR   skew    kurt
##    49.00   14.45   0.60   18.53  25.00   0.07   -1.21
##                                                      
## lowest : 0, 1 (4), 2 (2), 3 (3), 5
## highest: 44 (3), 46 (4), 47, 48, 49 (2)
## 
## ' 95%-CI (classic)

  • Ogiva para Cobertura de Código
## ------------------------------------------------------------------------------ 
## dados$Cobertura.de.Código (numeric)
## 
##   length       n     NAs  unique      0s    mean  meanCI'
##      100     100       0     = n       0  74.200  71.513
##           100.0%    0.0%            0.0%          76.887
##                                                         
##      .05     .10     .25  median     .75     .90     .95
##   54.000  56.883  62.775  73.175  84.750  94.034  96.361
##                                                         
##    range      sd   vcoef     mad     IQR    skew    kurt
##   49.860  13.540   0.182  16.183  21.975   0.131  -1.061
##                                                         
## lowest : 50.03, 50.7, 51.65, 52.02, 53.24
## highest: 97.14, 98.59, 98.83, 99.17, 99.89
## 
## ' 95%-CI (classic)

2.5. Medidas de Tendência Central

As medidas de tendência central são estatísticas que descrevem o centro ou a média de um conjunto de dados. As três medidas de tendência central mais comuns são a média, a mediana e a moda. Essas medidas fornecem uma compreensão básica de onde os dados estão concentrados e são fundamentais para resumir a distribuição dos dados. A seguir, são apresentadas as medidas de tendência central para as variáveis “Bugs Reportados” e “Cobertura de Código (%)”.

2.5.1. Média, Mediana e Moda para Bugs Reportados

  • Média
## [1] 24.07
  • Mediana
## [1] 23
  • Moda
## [1] 43
## attr(,"freq")
## [1] 5

2.5.2. Média, Mediana e Moda para Cobertura de Código

  • Média
## [1] 74.2
  • Mediana
## [1] 73.175
  • Moda
## [1] NA
## attr(,"freq")
## [1] NA

2.6. Medidas de Variabilidade

As medidas de variabilidade fornecem informações sobre a dispersão dos dados em relação à média. Elas são essenciais para entender a distribuição dos dados e a consistência das observações. A seguir, apresentaremos as medidas de variabilidade para as variáveis “Bugs Reportados” e “Cobertura de Código (%)”.

2.6.1. Desvio padrão, Variância, Amplitude para Bugs Reportados

  • Desvio Padrão Bugs Reportados
## [1] 14.44758
  • Variância Bugs Reportados
## [1] 208.7324
  • Amplitude para Bugs Reportados
## [1]  0 49

2.6.2. Desvio padrão, Variância, Amplitude para Cobertura de Código

  • Desvio Padrão Cobertura de Código
## [1] 13.5398
  • Variância Cobertura de Código
## [1] 183.3261
  • Amplitude para Cobertura de Código
## [1] 50.03 99.89

2.7. Assimetria

A assimetria é uma medida que indica a simetria de uma distribuição de dados em torno de sua média. Ajudando a identificar se os dados são distribuídos de maneira equilibrada ou se há uma tendência de concentração de valores em uma das extremidades da distribuição. A seguir, apresenta-se os valores de assimetria para as variáveis “Bugs Reportados” e “Cobertura de Código (%)”.

2.7.1. Assimetria para Bugs Reportados

## [1] 0.06647046

2.7.2. Assimetria para Cobertura de Código

## [1] 0.1333113

2.8. Boxplots por Qualidade do Código em Projetos Web

Os boxplots apresentados a seguir representam a análise da relação entre a qualidade do código e a incidência de bugs em projetos do tipo Web. O primeiro boxplot mostra a distribuição dos bugs reportados em todos os projetos, enquanto o segundo boxplot foca especificamente nos projetos web, diferenciando a distribuição por qualidade do código.

2.8.1. Boxplot para Bugs Reportados

Para esta análise, selecionaremos apenas os projetos do tipo Web.

3. Análise das Variáveis Qualitativas

Nesta seção, analisamos as variáveis qualitativas presentes na base de dados, que fornecem informações sobre categorias específicas de interesse. Sendo, essenciais para entender padrões e relações não numéricas dentro dos dados, ajudando a identificar tendências e comportamentos específicos de diferentes categorias.

  1. Tipo de Projeto: Classifica os projetos em três categorias: Desktop, Mobile, e Web.
  2. Qualidade do Código: Avalia a qualidade do código em quatro categorias: Boa, Excelente, Regular, e Ruim.

Para entender melhor a distribuição dessas variáveis, apresentamos a seguir a tabela de contingência, que mostra a frequência de cada categoria dentro das variáveis “Tipo de Projeto” e “Qualidade do Código”.

3.1. Distribuição de Frequência (Tabela de Contingência)

A tabela de contingência abaixo exibe a distribuição de frequência das categorias de qualidade do código em relação aos diferentes tipos de projeto.

##          
##           Boa Excelente Regular Ruim
##   Desktop  12         6       7    8
##   Mobile   11         5      10    4
##   Web       8        10       8   11

Tabela de Contingência

Tipo de Projeto Frequência
Desktop 33
Mobile 30
Web 37

3.2. Proporção

Além de examinar a frequência absoluta das categorias das variáveis qualitativas, é igualmente importante analisar suas proporções. A análise das proporções nos permite entender melhor a distribuição relativa das categorias dentro de cada variável, proporcionando uma visão mais clara da representatividade de cada grupo. A seguir, apresenta-se as proporções de cada tipo de projeto e de cada categoria de qualidade do código.

3.2.1. Proporção de cada Tipo de Projeto

## 
## Desktop  Mobile     Web 
##    0.33    0.30    0.37

3.2.2. Proporção de cada Qualidade do Código

## 
##       Boa Excelente   Regular      Ruim 
##      0.31      0.21      0.25      0.23

3.3. Medidas de Variabilidade

Para dados qualitativos, medidas de variabilidade comuns, como desvio padrão ou variância, não são aplicáveis. No entanto, podemos usar outras métricas para entender a diversidade e a distribuição das categorias. Uma dessas medidas é a Entropia de Shannon, que nos permite quantificar a diversidade dos tipos de projetos. A tabela a seguir apresenta a Entropia de Shannon para os tipos de projetos, proporcionando uma visão sobre a diversidade dos dados:

Medida Valor
Entropia de Shannon 1.094924

3.4. Boxplot

O Boxplot é uma ferramenta útil para visualizar a distribuição de dados quantitativos, mas não é aplicável diretamente a dados qualitativos. Entretanto, podemos utilizar gráficos de barras para visualizar a distribuição dos tipos de projetos e a qualidade do código. Essa abordagem nos permite observar a frequência de cada categoria e identificar possíveis tendências. A seguir, tem-se os gráficos de barras para a distribuição dos tipos de projetos e a qualidade do código.

3.4.1. A distribuição dos tipos de projetos

3.4.2. A distribuição da qualidade do código

4. Resultados e Discurssões

Nesta seção, discutimos os principais resultados obtidos a partir da análise dos dados, focando nas relações entre a qualidade do código, número de bugs reportados e cobertura de código em diferentes tipos de projetos de software.

4.1. Distribuição dos Bugs Reportados e Cobertura de Código

A distribuição dos bugs reportados é apresentada através do histograma e boxplot. Observa-se que a maioria dos projetos apresenta um número relativamente baixo de bugs, mas há uma dispersão significativa, indicando a presença de projetos com um número muito elevado de bugs. A cobertura de código também apresenta uma variação considerável entre os projetos, conforme mostrado no histograma e boxplot. Embora muitos projetos possuam uma cobertura de código moderada, há uma quantidade significativa de projetos com alta cobertura de código.

4.2. Distribuição dos Tipos de Projetos e Qualidade do Código

  • A distribuição dos tipos de projetos mostra uma predominância de projetos Web, seguidos por projetos Mobile e Desktop.
  • A avaliação da qualidade do código mostra uma distribuição relativamente uniforme entre as categorias “Excelente”, “Boa” e “Regular”, com poucos projetos sendo classificados como “Ruim”.

4.3. Boxplots de Bugs Reportados e Cobertura de Código por Qualidade do Código

  • Bugs Reportados:

  • Projetos com código de qualidade “Excelente” e “Boa” apresentam significativamente menos bugs em comparação com projetos com código de qualidade “Regular” e “Ruim”. Isso sugere que a qualidade do código tem um impacto direto na incidência de bugs.

  • Cobertura de Código:

  • Projetos com código de qualidade “Excelente” apresentam uma cobertura de código substancialmente maior em comparação com outras categorias. Isso indica que uma boa prática de testes automatizados está associada a uma melhor qualidade do código.

4.4. Tipo de Projeto e Incidência de Bugs

  • Projetos Web tendem a ter uma maior variação no número de bugs reportados, enquanto projetos Mobile e Desktop apresentam uma distribuição mais concentrada.
  • A relação entre o tipo de projeto e a cobertura de código mostra que projetos Web possuem, em média, uma maior cobertura de código, possivelmente devido à necessidade de assegurar a robustez e escalabilidade das aplicações web.

4.5. Correlação entre Cobertura de Código e Bugs Reportados

  • A análise confirma uma correlação negativa entre cobertura de código e número de bugs reportados. Projetos com maior cobertura de código tendem a apresentar menos bugs, indicando a eficácia dos testes automatizados em identificar e resolver problemas no código.

4.6. Impacto do Tipo de Projeto

  • Projetos Web apresentam maiores desafios em termos de manutenção da qualidade do código e gestão de bugs, possivelmente devido à complexidade e variabilidade dos ambientes de execução web. Em contraste, projetos Mobile e Desktop, que operam em ambientes mais controlados, apresentam uma distribuição mais estável de bugs e cobertura de código.

4.7. Qualidade do Código

  • Projetos com avaliações de qualidade “Excelente” e “Boa” têm menos bugs e maior cobertura de código, reforçando a importância de práticas de codificação de alta qualidade e testes rigorosos. A implementação de padrões de qualidade e boas práticas de desenvolvimento pode significativamente reduzir a incidência de bugs e melhorar a manutenção e evolução do software.

5. Conclusão

Este estudo revelou insights importantes sobre a relação entre qualidade do código, número de bugs reportados e cobertura de código em diferentes tipos de projetos de software. A análise demonstrou que práticas robustas de teste e manutenção de alta qualidade do código são essenciais para reduzir a incidência de bugs e melhorar a eficácia e eficiência dos projetos. Estas descobertas podem guiar gerentes de projetos e desenvolvedores na implementação de melhores práticas para otimizar o desenvolvimento de software e aumentar a satisfação dos usuários.

6. Considerações Finais

A análise de qualidade de código e incidência de bugs é crucial para a melhoria contínua no desenvolvimento de software. Este estudo fornece uma base sólida para futuras investigações e desenvolvimento de estratégias que possam aumentar a qualidade e eficiência dos projetos de software em diversos ambientes. Implementar práticas de qualidade e testes rigorosos deve ser uma prioridade para todas as equipes de desenvolvimento visando produtos de alta qualidade e satisfação do cliente.