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.
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.
##
## 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
##
## 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
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.
##
## 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
##
## 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
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
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.
## ------------------------------------------------------------------------------
## 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)
## ------------------------------------------------------------------------------
## 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)
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 (%)”.
## [1] 24.07
## [1] 23
## [1] 43
## attr(,"freq")
## [1] 5
## [1] 74.2
## [1] 73.175
## [1] NA
## attr(,"freq")
## [1] NA
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 (%)”.
## [1] 14.44758
## [1] 208.7324
## [1] 0 49
## [1] 13.5398
## [1] 183.3261
## [1] 50.03 99.89
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 (%)”.
## [1] 0.06647046
## [1] 0.1333113
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.
Para esta análise, selecionaremos apenas os projetos do tipo Web.
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.
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”.
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
| Tipo de Projeto | Frequência |
|---|---|
| Desktop | 33 |
| Mobile | 30 |
| Web | 37 |
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.
##
## Desktop Mobile Web
## 0.33 0.30 0.37
##
## Boa Excelente Regular Ruim
## 0.31 0.21 0.25 0.23
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 |
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.
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.
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.
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.
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.
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.