Docente: Hidelbrando Ferreira Rodrigues.
Discentes: Ana Clarissy de S. Soares; Chyntia F.
Prestes; José S. M. Neto; Kássia R. Oliveira.
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. Isso porque a qualidade do código impacta diretamente na eficácia do software. Um código que seja bem escrito e estruturado garante uma maior probabilidade de funcionar conforme o esperado, atendendo aos requisitos dos envolvidos e proporcionando uma experiência satisfatória ao usuário final. Dentro desse contexto, existe duas variáveis: cobertura de código e Bugs reportados, ambas estão intimamente conectadas à qualidade do código, pois contribuem para a confiabilidade, robustez e eficácia do software desenvolvido. Portanto, este estudo busca abordar e apresentar uma análise estatística a cerca de projetos desenvolvidos. Para isso foi criada uma base de dados 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). Neste Relatório, analisamos os dados coletados somente nos projetos de desenvolvimento mobile, com foco na cobertura de código e no número de bugs reportados, para que fosse possível avaliar a eficiência dos testes automatizados e entender a relação entre a qualidade do código e a incidência de bugs.
O Problema proposto foi analisar a eficiência em projetos mobile. Dessa forma, o objetivo deste estudo é analisar a relação entre a cobertura de código e o número de bugs reportados dos projetos de desenvolvimento mobile. Além de avaliar a eficiência dos testes automatizados e como a qualidade do código pode está relacionada com a incidência dos bugs.
Coleta de Dados: Os dados foram coletados de
diversos projetos de software desenvolvidos em diferentes ambientes
(Web, Mobile e Desktop). Para cada um desses projetos 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. Para esse relatório em específico, vamos analisar somente os
projetos desenvolvidos no ambiente mobile. Para isso utilizamos um
filtro para retirar da base de dados somente os dados dos projetos
mobile.
Análise Descritiva: Será realizada uma análise
descritiva para entender a distribuição das váriaveis e identificar
padrões iniciais nos dados.
Análise Inferencial: Serão aplicadas técnicas
estatísticas para investigar as relações entre as váriaveis
quantitativas (bugs reportados e cobertura de código) e qualitativas
(tipo de projeto e qualidade do código).
A seguir foi apresentada uma tabela com a base de dados dos projetos desenvolvidos em ambiente Mobile.
Abaixo vamos fornecer uma pequena descrição de cada uma das váriaveis presentes na base apresentada anteriormente, com o intuito de elucidar o leitor a respeito da importância da variavel bem como auxiliar seu entendimento das análises aplicadas e descritas no decorrer do documento.
- ID -
Tipo: Quantitativa Discreta.
Descrição: É o identificador único para cada registro
no conjunto de dados, na base apresentada não possuem uma ordem, por
terem sido filtrados de uma base maior.
Importância: Não possui.
- Bugs Reportados -
Tipo: Quantitativa Discreta.
Descrição: Número de bugs reportados durante o ciclo de
vida do projeto.
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.
- Cobertura de Código -
Tipo: Quantitativa Contínua
Descrição: Porcentagem de cobertura de código obtida
através de testes automatizados.
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.
- Tipo de Projeto -
Tipo: Qualitativa Nominal
Descrição: Tipo de projeto de software (Web, Mobile,
Desktop).
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.
- 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.
Como passo inicial da elaboração da análise, o relatório foi dividido em dois tipos de análise, e inicialmente vamos tratar da análise descritiva com as váriaveis quantitativas: Bugs Reportados e Cobertura de Código e depois com as variáveis qualitativas.
Inicialmente vamos colocar os dados em ordem crescente com o Diagrama de Ramo-e-folhas para que tenhamos uma visão inicial da distribuição dos dados de bugs reportados e Cobertura de Código.
##
## The decimal point is 1 digit(s) to the right of the |
##
## 0 | 11223
## 0 | 8
## 1 | 01333444
## 1 | 79
## 2 | 34
## 2 | 5578
## 3 | 3
## 3 | 8
## 4 | 01333
## 4 | 6
##
## The decimal point is 1 digit(s) to the right of the |
##
## 5 | 23
## 5 | 68
## 6 | 23334
## 6 | 5568
## 7 | 04
## 7 | 788
## 8 | 23
## 8 | 5566
## 9 | 0244
## 9 | 56
A tabela de distribuição de frequência é uma representação que organiza os dados em intervalos ou categorias, mostrando a frequência com que os dados ocorrem em cada intervalo. Isso nos ajuda a entender a dispersão dos dados e identificar possíveis outliers ou padrões.
## Class limits f rf rf(%) cf cf(%)
## [1,8) 5 0.17 16.67 5 16.67
## [8,15) 9 0.30 30.00 14 46.67
## [15,22) 2 0.07 6.67 16 53.33
## [22,29) 6 0.20 20.00 22 73.33
## [29,36) 1 0.03 3.33 23 76.67
## [36,43) 3 0.10 10.00 26 86.67
## [43,50) 4 0.13 13.33 30 100.00
As classes mais frequentes são: [8-15] e [22-29], com frequências de 9(30%) e 6(20%) respectivamente, isso indica que a maioria dos projetos mobile possuem entre 8 e 15 bugs reportados, ou entre 22 e 29 bugs reportados. Por outro lado a classe menos frequente é no intervalo de [29-36] que possui apenas 1 ocorrência, isso indica que pouquissimos projetos possuem essa quantidade de bugs reportados. Analisando a frequência acumulada podemos perceber que esta atinge a 50% em até 14 bugs reportados e 75% em até 22 bugs reportados, isso significa que a maioria dos projetos possuem menos de 22 bugs reportados.
## Class limits f rf rf(%) cf cf(%)
## [50,57.1) 3 0.10 10.00 3 10.00
## [57.1,64.1) 6 0.20 20.00 9 30.00
## [64.1,71.2) 5 0.17 16.67 14 46.67
## [71.2,78.3) 4 0.13 13.33 18 60.00
## [78.3,85.4) 4 0.13 13.33 22 73.33
## [85.4,92.4) 3 0.10 10.00 25 83.33
## [92.4,99.5) 5 0.17 16.67 30 100.00
As classes mais frequentes na tabela de cobertura de código são nos intervalos de [57.1-64.1], [64.1-71.2] e [92.4-99.5], com 6(20%) e 5(16.67%) de ocorrências. Isso sugere que muitos projetos possuem uma cobertura de código na faixa de 57.1% a 64.1% e 92.4% a 99.5%. Como classe menos frequente temos os intervalos[50-57.1] e [85.4-92.4] cada uma com apenas 3(10%) ocorrências, indicando que poucos projetos possuem uma cobertura de código nessa faixa. A distribuição acumulada sugere uma série de intervalos, porém vamos adicionar somente o maior que garante que 100% dos projetos possuem uma cobertura de código até 99.5%.Com isso, concluimos que uma parte significativa dos projetos possuem uma cobertura de código moderada a alta, com a maioria dos projetos com uma cobertura de 57.1% e 92.4%. 16.67% dos projetos com uma cobertura de 92.4% indicando que esses projetos são bem testados, e apenas 10% dos projetos possuem uma cobertura abaixo de 57.1%, ou seja, poucos projetos possuem uma cobertura de código muito baixa.
O histogramas e também as ogivas de galton a seguir, apresentam a visualização da distribuição dos Bugs Reportados e também da cobertura de Código nos projetos mobile. A partir deles podemos analisar graficamente as frequências identificadas e discutidas anteriormente nas tabelas de distribuição de frequência.
Como podemos analisar, esse histograma demonstra que a maioria dos projetos tem menos de 29 bugs reportados, com um pico na faixa de 8 a 15 bugs. As barras caem drasticamente após o intervalo de [22-29], isso sugere que projetos com muitos bugs são menos comuns.
Esse histograma indica que muitos projetos possuem uma cobertura de código entre 57.1% e 64.1%. Existe ainda um segundo pico na cobertura alta que é nos intervalos de [92.4 - 99.5] indicando que alguns projetos são bem testatos.
## Média de Bugs Reportados: 21.13333
## Mediana de Bugs Reportados: 18
## Moda de Bugs Reportados: 13
A média calculada indica que, em média, 21.13 bugs são reportados por projeto. A mediana sugere que metade dos projetos tem até 18 bugs reportados. E por fim, a moda sugere que a quantidade mais frequente dos bugs reportados é igual à 13, ou seja, esse é um valor comum entre os projetos.
## Média de Cobertura de Código: 74.718
## Mediana de Cobertura de Código: 75.255
## Moda de Cobertura de Código: 51.65
A média de 74.3% indica uma cobertura de código moderada, ou seja até 75% de cobertura de código. A mediana próxima da média sugere uma distribuição equilibrada. A moda mostra que a cobertura mais comum entre os projetos é de 51.65.
A partir das medidas de variabilidade vamos perceber que ambas as variáveis apresentam alta variabilidade,isso indica que os valores individuaus estão espalhados em relação às suas médias. Com isso, podemos concluir que existe uma necessidade de foco maior em práticas consistentes de desenvolvimento e testes para reduzir essa dispersão nos resultados das qualidades dos códigos.
## Variância de Bugs Reportados: 206.7402
## Desvio Padrão de Bugs Reportados: 14.37846
## Amplitude de Bugs Reportados: 45
A variância e o desvio padrão mostram que existe uma dispersão moderada nos bugs reportados entre os projetos, a amplitude de 45 indica a diferença entre o maior e menor número de bugs reportados.
## Variância de Cobertura de Código: 186.1673
## Desvio Padrão de Cobertura de Código: 13.64431
## Amplitude de Cobertura de Código: 44.1
A variância e o desvio padrão indicam que a cobertura de código também apresenta uma variabilidade significativa. Esses valores variam bastante entre os projetos. A amplitude indica que há uma diferença substancial entre os projetos com a menor e a maior cobertura.
Nessa análise, ambas as variáveis apresentaram uma assimetria positiva, isso indica que a maioria dos projetos tende a ter menos bugs reportados e uma cobertura de código mais alta, com uma proporção pequena de projetos com valores extremos como: mais bugs reportados ou uma cobertura pequena. Portanto, a distribuição dos dados de ambas as variáveis estão razoavelmente equilibrada, com uma tendência leve para valores baixos nos bugs reportados e valores mais altos na cobertura de código.
## Assimetria de Bugs Reportados: 0.2911599
A assimetria positiva indica uma leve inclinação à direita, o que sugere uma concentração relativamente maior de projetos com menos bugs reportados.
## Assimetria de Cobertura de Código: 0.04271644
O resultado da assimetria sugere uma assimetria leve na distribuição dos dados de cobertura. o que indica que há uma concentração ligeiramente maior de projetos com cobertura de código alta.
A análise dos boxplots irão ressaltar a distribuição dos dados e destacar a presença de prossíveis outliers, o que irá fornecer os insights valiosos sobre a variabilidade e a distribuição das métricas de bugs reportados e da cobertura de código nos projetos mobile. A partir disso podemos ganhar orientação para futuras investigações e estratégias de melhoria de qualidade do software.
Para os bugs reportados temos uma distribuição relativamente simétrica dos dados. Isso porque como podemos verificar no gráfico a mediana se encontra aproximadamente no centro do box, o que indica uma distribuição equilibrada entre os projetos com menor ou maior bugs reportados.
Na cobertura de código, podemos verificar que a mediana está localizada centralmente no box, o que indica uma distribuição equilibrada entre os projetos com diferentes níveis de cobertura. Essa dispersão parece mais uniforme se comparados com os bugs reportados, ou seja, existe uma consistência geral nos valores de cobertura de código entre os projetos mobile.
A segunda parte da análise descritiva é a análise das váriavéis qualitativas descritas a seguir.
Inicialmente apresentamos uma tabela de contingência, que se baseia em fornecer uma visão clara da distribuição da qualidade do código nos projetos mobile. Ela vai mostrar o número de projetos em cada categoria de qualidade: Excelente, Boa, Regular e Ruim.
##
## Boa Excelente Regular Ruim
## 11 5 10 4
##
## Boa Excelente Regular Ruim
## 0.3666667 0.1666667 0.3333333 0.1333333
Através da análise da tabela de contingência e da proporção da qualidade do código, podemos concluir que a maioria dos projetos tem uma qualidade considerada Boa, seguida por regular, enquanto excelente e ruim possuem uma proporção menor.
## Variabilidade para Qualidade do Código: 0.7088889
O cálculo de variabilidade nos apresenta o quanto a qualidade do código varia entre os projetos. O resultado nos indica que existe uma variabilidade significativa na qualidade do código entre os projetos, isso pode significar diferentes práticas de desenvolvimento, ou níveis de experiências da equipe e etc.
Por fim, temos os boxplots que envolvem os bugs reportados e a cobertura de código em relação a qualidade do código. Eles mostram que projetos com uma qualidade de código mais alta tendem a ter menos bugs reportados e uma cobertura de código mais abrangente. Enquanto os projetos com uma qualidade de código mais baixa apresentam o oposto.
Portanto, a partir da análise detalhada apresentada podemos observar
que a qualidade do código desempenha um papel fundamental na performance
e na confiabilidade dos projetos. Alguns pontos que podemos destacar
são:
- Importância da qualidade do código: Os projetos que
possuem uma qualidade de código superior tendem a ter menos bugs
reportados e uma cobertura de código mais abrangente. Esse ponto destaca
a importância de manter altos padrôes de qualidade durante o
desenvolvimento.
- Variação nos resultados: No estudo de variabilidade
percebemos que os dados apresentam uma variabilidade considerável nos
números de bugs reportados e na cobertura de código entre os projetos.
Isso indica que diferentes práticas de desenvolvimento e experiências
podem influênciar nos resultados.
Logo, essa análise apresentou a importância de adotar abordagens de
desenvolvimento focadas na melhoria contínua e na implementação de
práticas de desenvolvimento robustas, com isso as equipes podem garantir
não apenas a eficiência do projetos mas a satisfação e a confiança dos
usuários finais, uma vez que a qualidade do código afeta não apenas a
eficiência do desenvolvimento, mas também a experiência final do
usuário.
Com base na análise apresentada, podemos apresentar algumas
recomendações importantes que auxiliariam na melhora da eficiência e a
qualidade dos projetos mobile.
- Implementação de Testes Automatizados: Como foi
observado, a cobertura de código é um importante fator para a redução de
bugs, logo recomenda-se investir na implementação de testes
automatizados abrangentes conhecidos dentro da engenharia de software,
como teste de unidade, integração e aceitação, para garantir uma
adequada cobertura de código.
- Adoção de Padrões de Codificação: Como na análise de
variabilidade obtivemos como resultado uma variabilidade consideravél é
recomendado estabelecer e seguir padrões de codificação, isso reduziria
a variabilidade e ajudaria na melhoria da qualidade do código, aplicar
esses padrões incluem: Práticas de nomeação de variáveis, modularização
de códigos e documentação adequada.
- Revisão e Refatoração de Código: Boas práticas de
programação auxiliariam a redução de bugs. A prática de revisão ou
refatoração ajudariam a identificar e corrigir problemas antes que
virassem bugs, consequentemente apresentariam um código limpo, legível e
de fácil manutenção.
De acordo com a análise aplicada e nos pontos de verificação são essas
as recomendações da equipe, a execução dessas recomendações auxiliariam
a melhorar a eficiência e a qualidade dos projetos mobile, e
automaticamente a experiência para os usuários finais.
RODRIGUES SOARES, Elifrancis. Adaptação do processo de desenvolvimento de software para análise de cobertura de código. 2007. Dissertação de Mestrado. Universidade Federal de Pernambuco.
Fernanda Peres. R Markdown: Gerando relatórios usando o R. Disponível em: https://youtu.be/177TA5Gyse4?feature=shared . Acesso em: 22 jun.2024.