Disciplina Probabilidade e Estatística
Professor Hidelbrando Rodrigues

library(dplyr)
library(readxl) 
library(rstatix)
library(rmarkdown)
library(rmarkdown)
library(knitr)
library(emmeans)
library(ggplot2)
library(htmltools)
library(fdth)
library(kableExtra)
library(psych)
moda <- function(x) {
    modal <- unique(x)
    modal[which.max(tabulate(match(x, modal)))]
}

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

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

glimpse(baseDeDados)
## Rows: 100
## Columns: 5
## $ ID                        <dbl> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1…
## $ `Bugs Reportados`         <dbl> 24, 3, 56, 72, 0, 21, 19, 74, 41, 10, 21, 38…
## $ `Cobertura de Código (%)` <dbl> 61.53, 84.57, 82.52, 86.20, 73.75, 79.83, 53…
## $ `Tipo de Projeto`         <chr> "Desktop", "Desktop", "Web", "Desktop", "Mob…
## $ `Qualidade do Código`     <chr> "Ruim", "Regular", "Regular", "Excelente", "…

2 Descrição das Variáveis

2.1 ID

Descrição: Identificador único para cada registro no conjunto de dados.
Tipo: Quantitativa Discreta

2.2 Bugs Reportados

Descrição: Número de bugs reportados durante o ciclo de vida do projeto.
Tipo: Quantitativa Discreta
Importância: Esta variável fornece uma medida direta dos problemas encontrados no software, afetando diretamente a satisfação do usuário e a qualidade geral do produto.

2.3 Cobertura de Código

Descrição: Porcentagem de cobertura de código obtida através de testes automatizados.
Tipo: Quantitativa Contínua
Importância: A cobertura de código é uma métrica crucial para avaliar a eficácia dos testes. Uma alta cobertura de código geralmente indica que uma maior parte do código foi testada, potencialmente reduzindo a quantidade de bugs.

2.4 Tipo de Projeto

Descrição: Tipo de projeto de sotware (Web, Mobile, Desktop)
Tipo: Qualitativa Nominal
Importância: Diferentes tipos de projetos podem apresentar desafios distintos. Por exemplo, projetos Web podem focar mais na responsividade e escalabilidade, enquanto projetos Mobile podem priorizar a performance e a usabilidade.

2.5 Qualidade de Código

Descrição: Avaliação da qualidade de código (Excelente, Boa Regular, Ruim)
Tipo: Qualitativa Ordinal
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.

3 Tratamento dos Dados

O banco de dados contém 100 linhas de dados.

3.1 Analizando a tabela

3.2 Analizando as variáveis Categóricas

3.2.1 Analizando as colunas de dados Categóricos, coluna Tipo de Projeto

## 
## Desktop  Mobile     Web 
##      39      35      26
  • Baseado na coluna Tipo de Projeto, podemos identificar que as maiores incidências de Bugs estão nos projetos Desktop.

3.2.2 Analizando as colunas de dados Categóricos, coluna Qualidade do Código

## 
##       Boa Excelente   Regular      Ruim 
##        21        29        27        23
  • Com base na coluna Qualidade de Código, podemos identificar que a maioria dos códigos são Excelentes

3.2.3 Tabela de referência cruzada entre as colunas Tipo de Projeto* e Qualidade do Código

##          
##           Boa Excelente Regular Ruim
##   Desktop   8        11       8   12
##   Mobile   10        11       6    8
##   Web       3         7      13    3
  • Cruzando os dados entre Tipo de Projeto e Qualidade de Código podemos observar a distribuição da qualidade de código em função do projeto.

3.3 Analisando a coluna Bugs Reportados

3.3.1 Diagrama de ramos e folhas

## 
##   The decimal point is 1 digit(s) to the right of the |
## 
##   0 | 001122379
##   1 | 03466889
##   2 | 00111124468899
##   3 | 022333367777899
##   4 | 1344688889
##   5 | 12445566669
##   6 | 001233469
##   7 | 12444589
##   8 | 0158
##   9 | 000113456679

3.3.2 Tabela de distribuição de frequências

##    Class limits  f   rf rf(%)  cf cf(%)
##      [0,16.665) 14 0.14    14  14    14
##  [16.665,33.33) 24 0.24    24  38    38
##  [33.33,49.995) 18 0.18    18  56    56
##  [49.995,66.66) 19 0.19    19  75    75
##  [66.66,83.325) 11 0.11    11  86    86
##  [83.325,99.99) 14 0.14    14 100   100

3.3.3 Mínimo e Máximo, Quartis, Média e Mediana

summary(bugsReportados)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    0.00   24.00   45.00   46.93   66.75   99.00

3.3.4 Histograma

hist(bugsReportados)

3.3.5 Medidas de Tendência Central e Variabilidade

describe(bugsReportados)
##    vars   n  mean    sd median trimmed   mad min max range skew kurtosis   se
## X1    1 100 46.93 27.78     45   46.45 31.13   0  99    99 0.19       -1 2.78

3.3.6 Moda

moda(bugsReportados)
## [1] 56

3.3.7 Análises

3.3.7.1 Medidas de Tendência Central

  • Média: 47 bugs
  • Mediana: 45 bugs
  • Moda: 56 bugs

3.3.7.2 Análise de Assimetria

  • Coeficiente de Assimetria de Pearson: 0,19

3.3.7.3 Boxplot

boxplot(bugsReportados, 
        main = "Boxplot de Bugs Reportados", 
        ylab = "Quantidade", 
        col = "cyan",
        horizontal = TRUE)

3.4 Analisando a coluna Cobertura de Código (%)

3.4.1 Diagrama de ramos e folhas

## 
##   The decimal point is 1 digit(s) to the right of the |
## 
##   5 | 233344444
##   5 | 55677888999
##   6 | 0000011223344
##   6 | 567888
##   7 | 1123444444
##   7 | 77788
##   8 | 02233334
##   8 | 555556666677799
##   9 | 012222233444
##   9 | 55666888899

3.4.2 Tabela de distribuição de frequências

##     Class limits  f   rf rf(%)  cf cf(%)
##  [51.935,59.877) 22 0.22    22  22    22
##  [59.877,67.819) 14 0.14    14  36    36
##  [67.819,75.761) 13 0.13    13  49    49
##  [75.761,83.702) 12 0.12    12  61    61
##  [83.702,91.644) 18 0.18    18  79    79
##  [91.644,99.586) 21 0.21    21 100   100

3.4.3 Mínimo e Máximo, Quartis, Média e Mediana

summary(coberturaDeCodigo)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   52.46   60.72   77.05   75.59   87.74   98.60

3.4.4 Histograma

hist(coberturaDeCodigo)

3.4.5 Medidas de Tendência Central e Variabilidade

describe(coberturaDeCodigo)
##    vars   n  mean    sd median trimmed   mad   min  max range  skew kurtosis
## X1    1 100 75.59 14.85  77.04   75.63 21.48 52.46 98.6 46.14 -0.06    -1.44
##      se
## X1 1.49

3.4.6 Moda

moda(coberturaDeCodigo)
## [1] 61.53

3.4.7 Análises

3.4.7.1 Medidas de Tendência Central

  • Média: 77%
  • Mediana: 76%
  • Moda: 62%

3.4.7.2 Análise de Assimetria

  • Coeficiente de Assimetria de Pearson: 0,06

3.4.7.3 Boxplot

boxplot(coberturaDeCodigo, 
        main = "Boxplot de Cobertura de Código (%)", 
        ylab = "Quantidade", 
        col = "cyan",
        horizontal = TRUE)

# Objetivo do Estudo O objetivo deste estudo é analisar a relação entre a cobertura de código e o número de bugs reportados em diferentes tipos de projetos de software. Além disso, buscamos entender como a qualidade do código é percebida em projetos com diferentes níveis de bugs e cobertura de código.

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

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

5 Potenciais Descobertas

Correlação entre Cobertura de Código e Bugs Reportados: Espera-se encontrar uma correlação negativa, onde projetos com maior cobertura de código apresentam menos bugs reportados.

Impacto do Tipo de Projeto: Diferentes tipos de projetos podem apresentar diferentes padrões de bugs e cobertura de código.

Qualidade do Código: Projetos com alta qualidade de código podem correlacionar com menos bugs e maior cobertura de código.

6 Conclusão

A análise dos dados de qualidade de código e bugs reportados em projetos de software revelou insights significativos. Observamos uma variabilidade considerável na quantidade de bugs, com uma média de 47 bugs por projeto. A distribuição dos bugs mostrou uma leve assimetria positiva, indicando uma leve tendência dos valores se agruparem mais à esquerda da média.

A cobertura de código apresentou uma média de 76%, com a maioria dos projetos mostrando uma cobertura alta e uma distribuição praticamente simétrica. A qualidade do código foi classificada majoritariamente como “Excelente” ou “Regular”, com uma menor quantidade de projetos classificados como “Boa” ou “Ruim”. Notamos que os projetos Desktop têm uma maior incidência de código “Ruim”, enquanto os projetos Mobile e Web apresentam uma qualidade de código mais balanceada.

Esses resultados sugerem que uma maior atenção deve ser dada aos projetos Desktop para melhorar a qualidade do código. Além disso, implementar monitoramento contínuo da qualidade do código e dos bugs pode ajudar a identificar problemas precocemente e aplicar correções mais eficazes.