Baixe o app para aproveitar ainda mais
Prévia do material em texto
UNIVERSIDADE FEDERAL DO CEARÁ CAMPUS QUIXADÁ CURSO DE GRADUAÇÃO EM ENGENHARIA DE SOFTWARE PUBLIO BLENILIO TAVARES SILVA UTILIZANDO ALGORITMOS DE MACHINE LEARNING CAIXA BRANCA PARA AVALIAR A MANUTENIBILIDADE DOS MODELOS DE FEATURES QUIXADÁ 2021 PUBLIO BLENILIO TAVARES SILVA UTILIZANDO ALGORITMOS DE MACHINE LEARNING CAIXA BRANCA PARA AVALIAR A MANUTENIBILIDADE DOS MODELOS DE FEATURES Trabalho de Conclusão de Curso apresentado ao Curso de Graduação em Engenharia de Software do Campus Quixadá da Universidade Federal do Ceará, como requisito parcial à obtenção do grau de bacharel em Engenharia de Software. Orientadora: Profa. Dra. Carla Ilane Mo- reira Bezerra Coorientador: Prof. Dr. Ivan do Carmo Machado QUIXADÁ 2021 Dados Internacionais de Catalogação na Publicação Universidade Federal do Ceará Biblioteca Universitária Gerada automaticamente pelo módulo Catalog, mediante os dados fornecidos pelo(a) autor(a) S582u Silva, Publio Blenilio Tavares. Utilizando Algoritmos de Machine Learning Caixa Branca para Avaliar a Manutenibilidade dos Modelos de Features / Publio Blenilio Tavares Silva. – 2021. 86 f. : il. color. Trabalho de Conclusão de Curso (graduação) – Universidade Federal do Ceará, Campus de Quixadá, Curso de Engenharia de Software, Quixadá, 2021. Orientação: Profa. Dra. Carla Ilane Moreira Bezerra. Coorientação: Prof. Dr. Ivan do Carmo Machado. 1. Aprendizado do Computador. 2. Engenharia de Linha de Produto de Software. 3. Manutenibilidade. 4. Modelo de Características. I. Título. CDD 005.1 PUBLIO BLENILIO TAVARES SILVA UTILIZANDO ALGORITMOS DE MACHINE LEARNING CAIXA BRANCA PARA AVALIAR A MANUTENIBILIDADE DOS MODELOS DE FEATURES Trabalho de Conclusão de Curso apresentado ao Curso de Graduação em Engenharia de Software do Campus Quixadá da Universidade Federal do Ceará, como requisito parcial à obtenção do grau de bacharel em Engenharia de Software. Aprovada em: ___/___/______ BANCA EXAMINADORA Profa. Dra. Carla Ilane Moreira Bezerra (Orientadora) Universidade Federal do Ceará (UFC) Prof. Dr. Ivan do Carmo Machado (Coorientador) Universidade Federal da Bahia (UFBA) Prof. Dr. Enyo José Tavares Gonçalves Universidade Federal do Ceará (UFC) Me. Anderson Gonçalves Uchôa Pontifícia Universidade Católica do Rio de Janeiro (PUC-Rio) À Deus. À minha família. Vocês me inspiram e me en- chem de confiança. AGRADECIMENTOS Agradeço em primeiro lugar à Deus, à quem devo tudo e sem o qual nada seria possível! Agradeço aos meus pais Benedito e Consuelo pelo amor, incentivo e apoio incondi- cional em todas os momentos de minha vida. Não existem palavras suficientes para agradecer. Agradeço aos meus irmãos Ruben e Suele pelo companheirismo. Agradeço especial- mente ao meu irmão Ruben pelas orientações e ajudas durante a graduação e por me introduzir à Engenharia de Software. Agradeço à minha orientadora, Profa. Dra. Carla Bezerra pela experiência e conheci- mento transmitidos e por todo o auxílio no desenvolvimento deste trabalho. Ao meu coorientador, Prof. Dr. Ivan Machado pelas orientações na criação do questionário para a classificação da manutenibilidade de MF enviado aos especialistas. Sou grato aos professores do Campus UFC Quixadá pelo conhecimento transmitido durante a graduação, que foi sem dúvidas essencial para que eu chegasse a esse momento. Agradeço aos amigos que conquistei durante a graduação, em especial Caio Weliton, Elenilson Monteiro e Samuel Barbosa, pela amizade, conversas e troca de experiências. Por fim, agradeço a todas as pessoas que de alguma forma contribuíram com a realização deste trabalho. “O sonho é que leva a gente para frente. Se a gente for seguir a razão, fica aquietado, acomo- dado.” (Ariano Suassuna) RESUMO Linhas de Produtos de Software (LPS) são geralmente especificadas por meio de um modelo de features (MF), artefato concebido nas primeiras fases do ciclo de vida da LPS. Este artefato pode facilmente vir a se tornar demasiadamente complexo, o que dificulta a manutenção da LPS. Por isso, é essencial avaliar continuamente a manutenibilidade deste artefato, o que pode ser feito através de medidas. São descritas na literatura algumas abordagens que avaliam a manutenibilidade do MF por meio da agregação de medidas de manutenibilidade. Modelos de machine learning (ML) podem ser utilizados para criar estas abordagens, pois são capazes de agregar os valores de um conjunto de variáveis independentes em um único dado alvo, também chamado de variável dependente. Além disso, se forem utilizados modelos de ML caixa branca é possível interpretar e explicar os resultados obtidos com esse tipo de modelo de ML. Neste contexto, este trabalho se propõe a criar modelos de ML caixa branca para classificar a manutenibilidade do MF, com base em 15 medidas de manutenibilidade. Para construção dos modelos realizamos os seguintes passos: (i) comparamos duas abordagens de avaliação da manutenibilidade dos MFs por meio de um oráculo de classificações da manutenibilidade do MF feitas de forma manual por 15 especialistas em LPS; (ii) utilizamos a melhor das duas abordagens para pré-classificar o dataset de treinamento dos algoritmos de ML; (iii) geramos 3 modelos de ML e os comparamos com as métricas de classificação acurácia, precisão, recall, F1 e AUC-ROC; e, (iv) utilizamos o melhor dentre os 3 modelos para criar um mecanismo capaz de fornecer indicativos de melhoria aos engenheiros de domínio. O melhor dos 3 modelos utilizou o algoritmo de árvore de decisão que obteve acurácia, precisão e recall de 0.81, F1 de 0.79 e AUC-ROC de 0.91. Utilizando este modelo, conseguimos reduzir a quantidade de medidas necessárias para avaliar a manutenibilidade do MF de 15 para 9 medidas. A árvore de decisão gerada pelo algoritmo foi utilizada para criar um mecanismo capaz de fornecer sugestões de mudança nas medidas de manutenibilidade para que a manutenibilidade do artefato melhore. Palavras-chave: Aprendizado do Computador. Engenharia de Linha de Produto de Software. Manutenibilidade. Modelo de Características. ABSTRACT Software Product Lines (SPL) are generally specified using a Feature Model (FM), an artifact designed in the early stages of the SPL life cycle. This artifact can easily become too complex, which makes it difficult to maintain SPL. Therefore, it is essential to continuously assess the maintainability of this artifact, which can be done through measurements. Some approaches that assess the maintainability of the FM through the aggregation of maintenance measures are described in the literature. Machine Learning (ML) models can be used to create these approaches, as they can aggregate the values of a set of independent variables into a single target data, also called a dependent variable. Besides, if white box ML models are used, it is possible to interpret and explain the results obtained with this type of ML model. In this context, this work proposes to create ML white-box models to classify the maintainability of the FM, based on 15 maintenance measures. To build the models, we performed the following steps: (i) we compared two approaches to assess the maintainability of FMs through an oracle of FM maintainability classifications made manually by 15 SPL specialists; (ii) we use the best of the two approaches to pre-classify the ML dataset training dataset; (iii) we generated 3 ML models and compared them with the metrics of classification accuracy, precision, recall, F1 and AUC-ROC; and, (iv) we use the best of the 3 models to create a mechanism capable of providing improvement indicators to domain engineers. The best of the 3 models used the decision tree algorithm that obtained accuracy, precision, and recall of 0.81, F1 of 0.79, and AUC-ROC of 0.91. Using this model, we were able to reduce the number ofmeasures needed to assess the maintainability of the FM from 15 to 9 measures. The decision tree generated by the algorithm was used to create a mechanism capable of providing suggestions for changing maintenance measures so that the maintainability of the artifact improves. Keywords: Computer Learning. Feature Model. Maintainability. Software Product Line Engineering. LISTA DE FIGURAS Figura 1 – Features obrigatórias e opcionais. . . . . . . . . . . . . . . . . . . . . . . . 19 Figura 2 – Features "OR". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Figura 3 – Features alternativas ou “XOR”. . . . . . . . . . . . . . . . . . . . . . . . 20 Figura 4 – MF de biblioteca gráfica. . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Figura 5 – DyMMer - Visualização do MF. . . . . . . . . . . . . . . . . . . . . . . . . 24 Figura 6 – Funções de associação para MIFM. . . . . . . . . . . . . . . . . . . . . . . 27 Figura 7 – Exemplo de problema de classificação genérico. . . . . . . . . . . . . . . . 30 Figura 8 – Gráfico de uma função sigmóide. . . . . . . . . . . . . . . . . . . . . . . . 31 Figura 9 – Exemplo de árvore de decisão binária. . . . . . . . . . . . . . . . . . . . . 33 Figura 10 – Matriz de confusão binária. . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Figura 11 – Área sob a curva ROC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Figura 12 – Acurácia do modelo de árvore de decisão com diferentes valores para a profundidade máxima da árvore. . . . . . . . . . . . . . . . . . . . . . . . 58 Figura 13 – Histogramas que mostram a distribuição das 15 medidas do MiniCOfFEE e da manutenibilidade dos MFs no dataset. . . . . . . . . . . . . . . . . . . . 60 Figura 14 – Coeficiente de correlação de Spearman entre as 15 medidas de manutenibili- dade e a classificação da manutenibilidade dos MFs. . . . . . . . . . . . . . 61 Figura 15 – Importância das 15 medidas de manutenibilidade para o modelo de ML que utilizou o algoritmo de árvore de decisão. . . . . . . . . . . . . . . . . . . . 62 Figura 16 – Acurácia dos 3 modelos de ML em cada etapa da validação cruzada. . . . . 66 Figura 17 – Precisão dos 3 modelos de ML em cada etapa da validação cruzada. . . . . . 66 Figura 18 – Recall dos 3 modelos de ML em cada etapa da validação cruzada. . . . . . . 67 Figura 19 – F1 dos 3 modelos de ML em cada etapa da validação cruzada. . . . . . . . . 67 Figura 20 – AUC-ROC dos 3 modelos de ML em cada etapa da validação cruzada. . . . 67 Figura 21 – MF antes as sugestões fornecidas pelo mecanismo serem aceitas. . . . . . . 69 Figura 22 – MF após as sugestões fornecidas pelo mecanismo serem aceitas. . . . . . . 69 LISTA DE QUADROS Quadro 1 – Catálogo de medidas MiniCOfFEE. . . . . . . . . . . . . . . . . . . . . . 22 Quadro 2 – Comparativo entre os trabalhos relacionados e o trabalho proposto. . . . . 39 Quadro 3 – Perfis dos especialistas que participaram da avaliação dos MF. . . . . . . . 48 Quadro 4 – Comparação entre classificações feitas por especialistas, pela abordagem Silva e pela abordagem Oliveira . . . . . . . . . . . . . . . . . . . . . . . 49 Quadro 5 – Valores das métricas de comparação entre as abordagens Silva e Oliveira . 50 Quadro 6 – Conjuntos de medidas de manutenibilidade obtidos no processo de seleção de variáveis independentes. . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Quadro 7 – Acurácia média com diferentes conjuntos de medidas de manutenibilidade aplicados ao modelo de ML que utilizou o algoritmo Naive Bayes. . . . . . 63 Quadro 8 – Acurácia média com diferentes conjuntos de medidas de manutenibilidade aplicados ao modelo de ML que utilizou o algoritmo de regressão logística. 63 Quadro 9 – Acurácia média com diferentes conjuntos de medidas de manutenibilidade aplicados ao modelo de ML que utilizou o algoritmo de árvore de decisão. . 63 Quadro 10 – Valor máximo, valor mínimo, média e desvio padrão de cada métrica de classificação em uma validação cruzada de 10 etapas para o modelo de ML que utilizou o algoritmo Naive Bayes. . . . . . . . . . . . . . . . . . . . . 65 Quadro 11 – Valor máximo, valor mínimo, média e desvio padrão de cada métrica de classificação em uma validação cruzada de 10 etapas para o modelo de ML que utilizou o algoritmo de regressão logística. . . . . . . . . . . . . . . . 65 Quadro 12 – Valor máximo, valor mínimo, média e desvio padrão de cada métrica de classificação em uma validação cruzada de 10 etapas para o modelo de ML que utilizou o algoritmo de árvore de decisão. . . . . . . . . . . . . . . . . 65 Quadro 13 – Média das métricas precisão, recall, F1 e AUC-ROC para cada classe com o modelo de ML que utilizou o algoritmo de árvore de decisão. . . . . . . . 66 LISTA DE ABREVIATURAS E SIGLAS LPS Linhas de Produtos de Software MF Modelo de Features ML Machine Learning COfFEE CatalOg of measures for Feature modEl quality Evaluation DyMMer Dynamic feature Model tool based on Measures LPSD Linhas de Produtos de Software Dinâmicas DTMax Profundidade máxima da árvore NF Número de features NLeaf Número de features folha CogC Complexidade cognitiva NTop Número de features do topo RDen Coeficiente de densidade de conectividade FoC Flexibilidade de configuração NM Número de features obrigatórias FEX Extensibilidade das features SCDF Número de features dependentes de ciclos únicos MCDF Ciclos múltiplos dependentes de features RoV Razão de variabilidade NVC Número de configurações válidas NGOr Número de grupos Or NGXOr Número de grupos XOr IA Inteligência Artificial SUMÁRIO 1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2 FUNDAMENTAÇÃO TEÓRICA . . . . . . . . . . . . . . . . . . . . . . 18 2.1 Linha de Produtos de Software . . . . . . . . . . . . . . . . . . . . . . . 18 2.1.1 Modelo de Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.2 Medidas de Manutenibilidade do MF . . . . . . . . . . . . . . . . . . . . 21 2.3 Ferramenta DyMMer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.4 Abordagens de Avaliação da Manutenibilidade de MF Utilizando Medi- das de Manutenibilidade . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.4.1 Abordagem Silva et al. (2020) . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.4.2 Abordagem Oliveira e Bezerra (2019) . . . . . . . . . . . . . . . . . . . . 26 2.5 Machine Learning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.5.1 Algoritmos de Classificação . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.5.1.1 Naive Bayes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.5.1.2 Regressão Logística . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 2.5.1.3 Árvore de Decisão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 2.5.2 Métricas para Modelos de Classificação . . . . . . . . . . . . . . . . . . . 32 2.5.2.1 Acurácia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 2.5.2.2 Precisão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 2.5.2.3 Recall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 2.5.2.4 F1 Score . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 2.5.2.5 AUC-ROC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 2.5.3 Modelos de Caixa Branca e Caixa Preta . . . . . . . . . . . . . . . . . . . 35 3 TRABALHOS RELACIONADOS . . . . . . . . . . . . . . . . . . . . . 37 3.1 Metrics for analyzing variability and its implementation in software pro- duct lines: A systematic literature review (EL-SHARKAWY et al., 2019) . 37 3.2 Measures for quality evaluation of feature models (BEZERRA et al., 2014) 37 3.3 Exploring quality measures for the evaluation of feature models: a case study (BEZERRA et al., 2017) . . . . . . . . . . . . . . . . . . . . . . . . 38 3.4 Classifying feature modelsmaintainability based on machine learning al- gorithms (SILVA et al., 2020) . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.5 Development of the maintainability index for SPLs feature models using fuzzy logic (OLIVEIRA; BEZERRA, 2019) . . . . . . . . . . . . . . . . . 39 3.6 Análise Comparativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4 UMA INVESTIGAÇÃO COMPARATIVA DAS ABORDAGENS DE AVA- LIAÇÃO DA MANUTENIBILIDADE DO MF . . . . . . . . . . . . . . 41 4.1 Planejamento do Estudo . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 4.1.1 Questões de Pesquisa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 4.1.2 Passos do Estudo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 4.1.2.1 Procedimentos para a Coleta dos Dados . . . . . . . . . . . . . . . . . . . 43 4.1.2.2 Procedimentos para a Análise dos Dados . . . . . . . . . . . . . . . . . . . 45 4.2 Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.2.1 Compilação dos Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.2.2 QP1: Com que frequência cada abordagem classifica a manutenibilidade de um MF da mesma forma que especialistas em LPS? . . . . . . . . . . . 50 4.2.3 QP2: As abordagens de avaliação da manutenibilidade dos MFs são mais pessimistas ou otimistas em relação às classificações feitas por especialis- tas em LPS? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 4.2.4 QP3: Qual a variação das classificações de cada abordagem em relação às classificações feitas por especialistas em LPS? . . . . . . . . . . . . . . . 51 4.3 Ameaças à Validade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 4.4 Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 5 AVALIANDO A MANUTENIBILIDADE DO MF UTILIZANDO MO- DELOS DE ML CAIXA BRANCA . . . . . . . . . . . . . . . . . . . . . 54 5.1 Planejamento do Estudo . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 5.1.1 Questões de Pesquisa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 5.1.2 Passos do Estudo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 5.1.2.1 Coleta e Preparação dos Dados . . . . . . . . . . . . . . . . . . . . . . . . 56 5.1.2.2 Seleção das Variáveis Independentes . . . . . . . . . . . . . . . . . . . . . 56 5.1.2.3 Treinamento dos Modelos de ML . . . . . . . . . . . . . . . . . . . . . . . 57 5.1.2.4 Avaliação dos Modelos de ML . . . . . . . . . . . . . . . . . . . . . . . . . 58 5.2 Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 5.2.1 QP1: É possível reduzir a quantidade de medidas de manutenibilidade necessárias para avaliar a manutenibilidade de um MF? . . . . . . . . . . 58 5.2.2 QP2: Qual o melhor modelo de ML para avaliação da manutenibilidade do MF? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 5.2.3 Criação do Mecanismo para Fornecer Indicativos de como Melhorar a Manutenibilidade do MF . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 5.3 Ameaças à Validade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 5.4 Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 6 CONCLUSÕES E TRABALHOS FUTUROS . . . . . . . . . . . . . . . 73 REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 APÊNDICE A–FORMULÁRIO DE AVALIAÇÃO DA MANUTENIBI- LIDADE DO MF . . . . . . . . . . . . . . . . . . . . . 79 APÊNDICE B–ÁRVORE DE DECISÃO BINÁRIA . . . . . . . . . . . 83 15 1 INTRODUÇÃO Produtos de software podem ser criados por meio do reuso de componentes pré- existentes, o que inclui não somente código mas também arquitetura, requisitos, testes, entre outros. O reuso desses componentes traz uma série de benefícios, entre eles estão: a diminuição no tempo necessário para que o produto entre no mercado (time-to-market) e o aumento na qualidade final do produto, uma vez que os componentes reusados já foram desenvolvidos, testados e utilizados (MARQUES et al., 2019). Uma das principais estratégias de reuso de software é a de Linhas de Produtos de Software (LPS) (BARROS-JUSTO et al., 2018). Clements e Northrop (2002) definem uma LPS como “um conjunto de produtos que juntos atendem a um segmento de mercado específico ou cumprem uma missão específica”. Segundo Soares et al. (2018), uma LPS também pode ser definida como “uma família de sistemas criada e desenvolvida a partir de um conjunto de features”, onde uma feature é “uma unidade de funcionalidade de um sistema de software que satisfaz um requisito, representa uma decisão de design e provê uma potencial opção de configuração”. Features são um conceito central dentro do paradigma de LPS e o artefato utilizado para especificá-las é o Modelo de Features (MF). O MF é uma representação que especifica todas as features de uma LPS, assim como os relacionamentos e restrições existentes entre elas e o conjunto de todas as combinações válidas entre as features (BÜRDEK et al., 2016). O MF é concebido na fase de engenharia de domínio, nos estágios iniciais da criação de uma LPS, por isso, erros neste artefato podem se espalhar por toda a LPS (BEZERRA et al., 2017). O fato de todas as features de uma LPS serem especificadas no MF faz com que este artefato possa facilmente vir a se tornar demasiadamente complexo com o decorrer do tempo, o que dificulta sua manutenção e a evolução da LPS. Esse aumento na complexidade ocorre porque as mudanças sofridas pela LPS (mudanças nos requisitos que resultam em adição ou remoção de features, por exemplo) geralmente implicam em mudanças no MF (BÜRDEK et al., 2016). Por isso, é essencial avaliar a qualidade deste artefato durante a evolução de uma LPS para que o modelo permaneça manutenível. Uma das estratégias comumente utilizadas para avaliar a manutenibilidade do MF é a que faz uso de medidas de qualidade (OLIVEIRA; BEZERRA, 2019). Bezerra et al. (2014) realizaram um mapeamento sistemático com o objetivo de identificar medidas de qualidade do MF e apresentaram como resultado um catálogo de 32 medidas que podem ser utilizadas na 16 avaliação da qualidade de um MF. Contudo, ainda é difícil avaliar a qualidade geral de um MF utilizando-se dessa estratégia, pois, cada medida tem foco em uma característica específica do modelo e não neste como um todo. Além disso, em geral as faixas de valores das medidas são amplas e não há um indicativo claro de quais valores podem ser considerados adequados ou inadequados (OLIVEIRA; BEZERRA, 2019). Um modo de superar os problemas mencionados anteriormente seria a agregação de várias medidas em um valor único que indique a manutenibilidade geral de um MF. Oliveira e Bezerra (2019) utilizaram uma estratégia desse tipo, aplicando lógica fuzzy à um conjunto de 15 medidas de qualidade para agregá-las, de modo a produzir um índice único capaz de indicar o grau de manutenibilidade de um MF. A estratégia utilizada por Oliveira e Bezerra (2019) também permite classificar a manutenibilidade de um MF em muito baixa, baixa, média, alta e muito alta a partir do valor do índice. Em nosso trabalho anterior (SILVA et al., 2020), foi utilizada outra estratégia para agrupar os valores de medidas de manutenibilidade em um valor único. Foram aplicados algoritmos de clustering, um tipo de algoritmo de Machine Learning (ML), para agrupar os MF de acordo com os valores de um conjunto de medidas de manutenibilidade e, assim, classificar a manutenibilidade do MF em muito ruim, ruim, moderada, boa e muito boa. Uma vantagem dessa abordagem que é possível utilizar algoritmos de caixa-branca (também chamados de interpretáveis), que são um tipo de algoritmo de ML cujo processo de predição pode ser entendido de forma intuitiva e cujos resultados podem ser interpretados e entendidos em linguagem próxima à humana (LIPTON, 2018). Utilizando este tipo de algoritmo não somente seriaavaliada a manutenibilidade de um MF, mas poderiam ser fornecidas também sugestões de melhoria para o MF aos engenheiros de domínio. Uma grande dificuldade da abordagem de ML é obter um dataset do MF pré- classificados para ser utilizado no treinamento dos algoritmos. Um modo de classificar os dados seria utilizando especialistas em LPS, mas para conseguir um dataset de tamanho razoável seria necessário um número relativamente grande de especialistas, o que torna a opção inviável. Por isso, optou-se neste trabalho por utilizar uma abordagem de classificação automática da manutenibilidade do MF, como a de Oliveira e Bezerra (2019) ou a proposta em nosso trabalho (SILVA et al., 2020) anterior para pré-classificar o dataset de treinamento dos algoritmos. Neste contexto, o objetivo do presente trabalho é utilizar algoritmos de ML caixa branca para classificar a manutenibilidade do MF e utilizar os dados obtidos a partir da execução 17 dos modelos de classificação para fornecer aos engenheiros de domínio indicativos de melhoria do MF por meio de sugestões de mudança nas medidas de manutenibilidade. Para isso, será realizada uma comparação entre a abordagens de classificação da manutenibilidade do MF proposta por Oliveira e Bezerra (2019) e a proposta em nosso trabalho anterior (SILVA et al., 2020). O resultado da comparação será utilizado como base para escolher uma das duas abordagens para pré-classificar o dataset, que será utilizado no treinamento dos algoritmos de ML. Os modelos de classificação obtidos também serão comparados e um deles será escolhido para criar um mecanismo de sugestão de melhoria da manutenibilidade do MF. Com isso, engenheiros de domínio poderão realizar a avaliação da manutenibilidade de LPS de forma fácil e rápida e as sugestões de melhoria poderão ser utilizadas para guiar o processo de melhoria da LPS a partir de mudanças no MF. Este trabalho está organizado da seguinte forma. O Capítulo 2 apresenta os conceitos necessários para o entendimento do trabalho. No Capítulo 3 são apresentados trabalhos relacio- nados com o presente trabalho. No Capítulo 4 é feita uma comparação entre duas abordagens de classificação da manutenibilidade dos MFs. No Capítulo 5 são criados modelos de ML de caixa branca para a avaliação da manutenibilidade dos MFs e um mecanismo capaz de fornecer indicativos para a melhoria da manutenibilidade dos MFs. Por fim, o Capítulo 6 apresenta as conclusões e trabalhos futuros. 18 2 FUNDAMENTAÇÃO TEÓRICA Nesta seção serão apresentados os conceitos mais relevantes necessários para o entendimento deste trabalho. Na Seção 2.1 serão apresentados conceitos básicos de LPS. Na Seção 2.1.1 será descrito em detalhes o artefato MF. Na Seção 2.2 serão abordadas medidas de manutenibilidade para avaliação de modelos de features. Na Seção 2.3 será descrita a ferramenta de extração de medidas de qualidade DyMMer utilizada neste trabalho. Na Seção 2.4 serão apresentadas duas abordagens de avaliação da manutenibilidade de ML descritas na literatura. Na Seção 2.5 conceitos relacionados a machine learning serão abordados e a técnica utilizada neste trabalho será apresentada. 2.1 Linha de Produtos de Software O reuso de software é um método para lidar com o aumento na complexidade dos produtos de software e a demanda pela diminuição do tempo necessário para disponibilizar um produto no mercado (time-to-market) permitindo que as empresas se mantenham competitivas (JUSTO et al., 2018). Uma das principais estratégias de reuso de software é a de LPS (BARROS- JUSTO et al., 2018). Uma LPS é uma família de sistemas criada a partir de um conjunto de features em comum (SOARES et al., 2018). Uma feature pode ser definida como “uma unidade de funcionalidade de um sistema de software que satisfaz um requisito, representa uma decisão de design e provê uma potencial opção de configuração” (SOARES et al., 2018). O processo de definição de uma LPS é dividido em duas fases, sendo estas: (i) engenharia de domínio e (ii) engenharia de aplicação (MARQUES et al., 2019). Na fase engenharia de domínio o conhecimento do domínio é utilizado para identificar as features comuns e variáveis (MARQUES et al., 2019). Esta fase pode ser divida nas atividades de análise do domínio, projeto do domínio, implementação do domínio, testes do domínio, e gerenciamentos dos produtos (LINDEN et al., 2007). E na fase engenharia de domínio também que é gerado o MF, sendo este considerado o principal artefato desta fase (LINDEN et al., 2007). Já na fase de engenharia de aplicação as necessidades do cliente são identificadas e posteriormente utilizadas para derivar novos produtos (criando novas configurações de produtos) (MARQUES et al., 2019). 19 2.1.1 Modelo de Features O MF especifica todas as features de uma LPS, as restrições existentes entre elas e o conjunto de todas as combinações válidas entre as features (BÜRDEK et al., 2016). O MF é, a notação mais popular para modelagem de LPS (BÉCAN et al., 2016). No design e implementação orientados a recursos o MF é geralmente representado visualmente por um diagrama de features (APEL et al., 2016). Um diagrama de features é uma notação gráfica para especificar um MF (APEL et al., 2016). Esta notação tem a forma de uma árvore onde cada nó recebe o nome de uma feature da LPS. Uma feature pai representa um conceito mais geral enquanto uma feature filha representa um conceito mais específico (uma feature filha só pode ser selecionada quando sua feature pai também foi) (APEL et al., 2016). Em um MF existem tanto features obrigatórias (devem estar presentes em todos os produtos derivados da LPS), quanto opcionais (podem ou não estar presentes nos produtos derivados da LPS). No diagrama de features estes dois tipos de features são representados por um círculo na feature filha, que é preenchido quando a feature é obrigatória e vazio quando é opcional (APEL et al., 2016), como é mostrado na Figura 1. Figura 1 – Features obrigatórias e opcionais. Fonte: Adaptado de Apel et al. (2016). Em um MF podem existir ainda features “OR” (quando dentro de um grupo de features uma ou mais podem estar presentes nos produtos derivados da LPS) e alternativas ou “XOR” (quando dentro de um grupo de features apenas uma pode estar presente nos produtos derivados da LPS). O modo como features “OR” e “XOR” são representadas no diagrama de features é apresentado nas Figuras 2 e 3, respectivamente. No MF podem existir também restrições entre as features (também chamadas de cross-tree constraints). Existem dois tipos básicos de cross-tree constraints, os quais são: (i) inclusão, quando a presença de uma feature A exige a presença de uma feature B e (ii) exclusão, 20 Figura 2 – Features "OR". Fonte: Adaptado de Apel et al. (2016). Figura 3 – Features alternativas ou “XOR”. Fonte: Adaptado de Apel et al. (2016). quando a presença de uma feature A exige a ausência de uma feature B. A Figura 4 mostra o exemplo de um MF de uma biblioteca gráfica. Como é possível observar na Figura, apenas a feature “Edge Type” é obrigatória, todas as outras são opcionais. Isso significa que a feature “Edge Type” estará em todos os produtos derivados dessa LPS enquanto as outras podem ou não estar. As features “Directed” e “Undirected” filhas da feature “Edge Type” são exemplos de features em um relacionamento do tipo alternativo, isso significa que entre elas apenas uma pode ser escolhida para estar presente em um produto derivado da LPS. As features “Cycle”, “ShortestPath”, “MST” e “Transpose” são exemplos de features em um relacionamento do tipo “OR”, o que significa que um subconjunto delas pode ser escolhido para compor os produtos derivados da LPS. No MF mostrado na Figura 4 existem duas restrições do tipo inclusão mas nenhuma do tipo exclusão. Uma dessas restrições é “MST => Directed” , o que significa que sempre que a feature “MST” for selecionada para estar em um produto a feature “Directed” também deve ser.Figura 4 – MF de biblioteca gráfica. Fonte: Adaptado de Apel et al. (2016). 21 O MF é um dos primeiros artefatos produzidos em uma LPS (BEZERRA et al., 2014), e as mudanças sofridas pela linha de produtos no decorrer do tempo geralmente também provocam mudanças neste artefato (BÜRDEK et al., 2016). Consequentemente, com o tempo o MF pode se tornar complexo o que dificulta sua manutenção e a evolução da LPS. Por isso, o MF foi o artefato escolhido neste trabalho para se avaliar a manutenibilidade da LPS. 2.2 Medidas de Manutenibilidade do MF Na engenharia de software, a qualidade de um produto é expressa por meio de um conjunto de atributos de qualidade que são divididos em: (i) atributos internos, que podem ser medidos diretamente a partir do software; e, (ii) atributos externos, que precisam ser medidos de maneira indireta (ALSOLAI; ROPER, 2020). Um dos principais atributos de qualidade externos é a manutenibilidade, que lida com o grau com que um produto de software pode ser entendido, reparado ou melhorado (JHA et al., 2019). Nas últimas décadas os produtos de software tem se tornado cada vez maiores, mais complexos e mais difíceis de manter (JHA et al., 2019). Isso mostra o porquê da manutenibi- lidade ser reconhecidamente uma área de interesse primário dentro da engenharia de software (ALSOLAI; ROPER, 2020). Aproximadamente 70% do tempo de desenvolvimento de um produto de software envolve atividades de manutenção. Por esse motivo, a manutenibilidade está diretamente relacionada aos custos de um produto de software e, consequentemente, ao sucesso do produto e da organização (JHA et al., 2019). No paradigma de LPS a manutenibilidade também é considerada um importante atributo de qualidade. LPS evoluem durante todo o seu ciclo de vida, enquanto que nas metodolo- gias tradicionais a evolução acontece predominantemente na fase de manutenção (BEZERRA et al., 2016b). Isso faz com que em LPS, a manutenibilidade seja tanto quanto ou mais importante que nas metodologias tradicionais de desenvolvimento de software. A manutenibilidade de uma LPS pode ser avaliada por meio da análise de seu MF, pois este artefato é criado nos estágios iniciais do desenvolvimento de uma LPS e nele são descritas as features comuns e variáveis (BEZERRA et al., 2016b). O fato de as mudanças sofridas pela LPS ao longo do tempo geralmente também resultarem em mudanças no MF (BÜRDEK et al., 2016), faz deste um bom artefato para avaliar a manutenibilidade de uma LPS durante seu ciclo de vida. Uma possível estratégia para avaliar a manutenibilidade de um MF (buscando com 22 isso avaliar também a qualidade da LPS como um todo) seria utilizar medidas de qualidade (OLIVEIRA; BEZERRA, 2019). Medidas de qualidade são utilizadas para refletir características, subcaracterísticas e atributos de qualidade de uma determinada entidade ou artefato (BEZERRA et al., 2014). Bezerra et al. (2014) realizaram um mapeamento sistemático no qual identificaram 32 medidas de qualidade para MF que foram descritas em um catálogo, denominado CatalOg of measures for Feature modEl quality Evaluation (COfFEE). Para validar as medidas do catálogo foram realizadas revisões em pares com especialistas em qualidade de software e LPS. Em um estudo posterior, Bezerra et al. (2017) analisaram as medidas descritas no catálogo COfFEE com o objetivo de investigar de que modo essas medidas poderiam ser utilizadas na avaliação de qualidade de modelos de features. Neste segundo estudo foram descobertas correlações entre algumas medidas do catálogo COfFEE e descobriu-se que a caracterização da qualidade de um MF poderia ser feita com apenas 15 das 32 medidas. Foi então criado um novo catálogo descrevendo apenas estas 15 medidas denominado MiniCOfFEE (Quadro 1). Quadro 1 – Catálogo de medidas MiniCOfFEE. Nome da Medida Descrição da Medida Number of Features (NF) Número de features no modelo Number of Mandatory Features (NM) Número de features obrigatórias no modelo Number of Top Features (NTop) Número de features decendentes diretas da raiz Number of Leaf Features (NLeaf) Número de features sem filhos Cognitive Complexity (CogC) Número de pontos de variação Feature Extensibility (FEX) NLeaf + SCDF + MCDF Flexibility of Configuration (FoC) NO / NF Maximum Depth of Tree (DT Max) Número de features do caminho mais longo desde a raiz do MF Number of Valid Configurations (NVC) Número de configurações possíveis e válidas do MF Ratio of Variability (RoV) Número médio de filhos por features Density of the dependency graph (RDen) Número médio de features referenciadas em restrições por feature Number OR Groups (NGOr) Número de pontos de variação com cardinalidade [1..*] Number XOR Groups (NGXOr) Número de pontos de variação com cardinalidade [1..1] Single Cyclic Dependent Features (SCDF) ∑(Participantes de restrições de features e filhas de pontos variantes comcardinalidade [1..1]) Multiple Cyclic Dependent Features (MCDF) ∑(Participantes de restrições de features e filhas de pontos variantes comcardinalidade [1..*]) Fonte: Adaptado de Bezerra et al. (2014), Oliveira e Bezerra (2019). 23 Apesar das medidas de qualidade fornecerem informações úteis sobre a manutenibili- dade de um MF, é difícil avaliar a manutenibilidade deste artefato como um todo. Em geral, cada medida considera apenas aspectos específicos do artefato e não este como um todo. Uma possível solução, seria agregar os valores de várias medidas em um índice de manutenibilidade. Isso é feito no trabalho de Oliveira e Bezerra (2019), onde as 15 medidas do catálogo MiniCOfFEE são agregadas em um índice de manutenibilidade utilizando-se para isso lógica fuzzy. No presente trabalho, as medidas de manutenibilidade descritas no catálogo Mini- COfFEE são agregadas visando caracterizar a manutenibilidade geral de um MF, mas utilizando um modelos de ML de caixa branca. Desse modo, será possível avaliar a manutenibilidade do MF e também fornecer indicativos de como melhorar a manutenibilidade do artefato. 2.3 Ferramenta DyMMer Dynamic feature Model tool based on Measures (DyMMer) é uma ferramenta desktop para extração automática de medidas de qualidade dos MFs de LPS e Linhas de Produtos de Software Dinâmicas (LPSD) (BEZERRA et al., 2016a). Os MFs suportados pela ferramenta DyMMer são descritos em um arquivo XML no formato definido pelo repositório S.P.L.O.T. (MENDONCA et al., 2009). Ao importar na ferramenta um arquivo XML neste formato é possível visualizar e interagir com o MF por meio da interface gráfica. Dentre as principais funcionalidades da ferramenta DyMMer estão (BEZERRA et al., 2016a): 1. Importar MFs. Não é possível criar MFs diretamente pela ferramenta. Contudo, é possível importar MFs descritos em arquivos XML no formato definido pelo repositório S.P.L.O.T. 2. Visualizar MFs. Após importar um MF é possível visualizar e interagir com a árvore e as restrições do MF como pode ser visto na Figura 5. A ferramenta exibe as features por tipo (obrigatórias, opcionais, agrupamentos OR e agrupamentos XOR) e destaca features ativas e inativas (conceitos específicos para LPSD). 3. Editar MFs. Após importar um MF, é possível editá-lo. A ferramenta permite adicionar e remover features, ativar e desativar features, alterar restrições e gerenciar os contextos (caso a LPS seja dinâmica). 4. Calcular e exportar medidas. A ferramenta DyMMer também permite o cálculo de medidas de qualidade dos MF, tanto para LPS, quanto para LPSD. No total são 40 medidas 24 suportadas pela ferramenta, sendo 32 para LPS e LPSD e 8 específicas para LPSD. A ferramenta permite também a exportação das medidas calculadas para uma planilha no formato Microsoft Office Excel. Figura 5 – DyMMer - Visualização do MF. Fonte: Adaptado de Bezerra et al. (2016a). A ferramenta DyMMer tem suporte às 15 medidas descritas no catálogo MiniCOf- FEE, as quais serão utilizadas neste trabalho para a avaliação da manutenibilidade do MF. Por isso, a ferramenta foiescolhida para realizar o cálculo das medidas neste trabalho. 2.4 Abordagens de Avaliação da Manutenibilidade de MF Utilizando Medidas de Manu- tenibilidade Na literatura são descritas algumas abordagens de avaliação da manutenibilidade do MF que utilizam medidas de manutenibilidade. Dentre as abordagens descritas na literatura, duas utilizam o mesmo catálogo de medidas que nos propomos a utilizar neste trabalho, as quais são: a abordagem proposta por Silva et al. (2020) (a qual nos referiremos no presente trabalho como Abordagem Silva) e a proposta por Oliveira e Bezerra (2019) (a qual nos referimos no presente trabalho como Abordagem Oliveira). No presente trabalho é realizada uma comparação entre as duas abordagens e a melhor entre as duas é utilizada para pré-classificar o dataset de treinamento dos algoritmos de ML. Estes algoritmos são utilizados para a construção da abordagem proposta 25 neste trabalho. 2.4.1 Abordagem Silva et al. (2020) Silva et al. (2020) realizaram um estudo com o objetivo de investigar como técnicas de ML poderiam ser utilizadas para avaliar a manutenibilidade do MF. Os autores propuseram uma abordagem de avaliação da manutenibilidade do MF utilizando algoritmos de clustering, que é um tipo de algoritmo de ML. Esses algoritmos são utilizados para gerar clusters (ou grupos) a partir de dados não categorizados ou não classificados considerando as características e similaridades das amostras do dataset (ALLOGHANI et al., 2020). Os autores selecionaram um dataset composto por 326 MFs, o qual foi proposto no trabalho de Oliveira e Bezerra (2019). Para cada amostra no dataset, era definido o nome do MF e os valores das 15 medidas de manutenibilidade do catálogo MiniCOfFEE. Após isso, os autores selecionaram e aplicaram ao dataset 3 algoritmos de clustering para fins de comparação: K-Means (JAIN, 2010), Density-Based Spatial Clustering of Applications with Noise (DBSCAN) (ERMAN et al., 2006) e Hierarchical Agglomerative Clustering (HAC) (AGGARWAL; REDDY, 2013). O processo de clusterização faz a separação do dataset de acordo com as caracte- rísticas e similaridades das amostras, mas não fornece informações qualitativas com relação a manutenibilidade dos MFs. Para que a avaliação da manutenibilidade do MF fosse possível, os autores precisaram atribuir rótulos indicando a manutenibilidade de cada cluster. Desse modo, seria possível saber a manutenibilidade de um MF apenas pelo cluster ao qual o MF pertence. O autores criaram um processo para atribuição dos rótulos aos clusters, que consiste em: (i) analisar as amostras presentes em cada um dos clusters; (ii) atribuir uma nota a cada cluster con- siderando o grau de manutenibilidade geral dos MF que compõem com o auxílio de thresholds gerados com o método VALE (VALE et al., 2019) para a medidas de manutenibilidade; e, (iii) organizar as notas em ordem crescente e atribuir para a menor nota o rótulo que indique a pior manutenibilidade. Esse processo se repete sucessivamente até que o cluster com a melhor nota seja atribuído ao rótulo que indica a melhor manutenibilidade. Com aplicação dos algoritmos de clustering os autores geraram modelos de clas- sificação da manutenibilidade do MF. Para identificar dentre os 5 modelos, o melhor modelo de classificação da manutenibilidade do MF, os autores criaram um novo dataset composto de 23 MFs extraídos do repositório S.P.L.O.T (MENDONCA et al., 2009) e utilizaram quatro 26 especialistas em LPS para classificar manualmente o dataset. Os 5 modelos foram utilizados para classificar as amostras do novo dataset, os resultados foram comparados com os obtidos com o uso de especialistas, e as métricas acurácia e precisão foram calculadas. O melhor modelo de classificação obtido foi o que utilizou o algoritmo K-Means com 5 clusters, o que significa que o modelo classifica a manutenibilidade doMF em 5 classes, sendo estas: muito ruim, ruim, moderado, muito bom e bom. O modelo obteve acurácia de 61.9% e precisão de 70.2%. Umas das principais vantagens da abordagem proposta por Silva et al. (2020) é que como algoritmos de clustering pertencem a classe de algoritmos de aprendizado não supervisionado. Dessa forma, não é necessário utilizar especialistas para classificar todo o dataset utilizado no treinamento dos algoritmos de ML (o que seria muito custoso, dado o tamanho do dataset e quantidade de medidas que seriam analisadas manualmente pelos especialistas). 2.4.2 Abordagem Oliveira e Bezerra (2019) Medidas de qualidade do MF podem ser utilizadas para a avaliação da manuteni- bilidade de LPS. Contudo, a análise dos valores de cada medida individualmente não permite perceber a manutenibilidade de um MF como um todo. Por esse motivo, Oliveira e Bezerra (2019) propuseram um índice de qualidade que agrega várias medidas de qualidade, desse modo é possível analisar a manutenibilidade de um MF analisando o valor de uma única medida. No trabalho de Oliveira e Bezerra (2019), foi utilizado o catálogo de medidas Mi- niCOfFEE, o mesmo utilizado no trabalho de Silva et al. (2020). As 15 medidas do catálogo MiniCOfFEE foram agrupadas em 3 grupos de acordo com a subcaracterística de manuteni- bilidade de cada medida do catálogo. As medidas Profundidade máxima da árvore (DTMax), Número de features (NF) e Número de features folha (NLeaf) compõem o grupo tamanho, as me- didas Complexidade cognitiva (CogC), Número de features do topo (NTop), NTop, Coeficiente de densidade de conectividade (RDen) e Flexibilidade de configuração (FoC) compõem o grupo complexidade e, por fim, as medidas Número de features obrigatórias (NM), Extensibilidade das features (FEX), Número de features dependentes de ciclos únicos (SCDF), Ciclos múltiplos dependentes de features (MCDF), Razão de variabilidade (RoV), Número de configurações válidas (NVC), Número de grupos Or (NGOr) e Número de grupos XOr (NGXOr) compõem o grupo variabilidade. Para realizar a agregação das medidas foi utilizada Lógica Fuzzy, um tipo de lógica que admite que uma premissa seja parcialmente verdadeira e parcialmente falsa (KLIR; YUAN, 27 1995). Para validar as funções de pertinência e regras fuzzy utilizadas no processo de agregação das medidas, quatro especialistas em LPS realizaram revisão em pares. Com esse processo foi obtida uma nova medida agregada nomeada de Índice de Manutenibilidade para Modelos de Features (MIFM) 1,2. A nova medida varia de 0 a 100 e permite classificar a manutenibilidade do MF em 5 categorias de acordo com o valor de MIFM, sendo estas: muito baixa, baixa, média, alta e muito alta. As funções de associação entre o valor de MIFM e as 5 categorias podem ser vistas na Figura 6. O índice de manutenibilidade foi aplicado a 20 MF extraídos a partir do repositório S.P.L.O.T., o que permitiu avaliar a manutenibilidade dos MF em alta ou baixa a partir do valor de MIFM. Figura 6 – Funções de associação para MIFM. Fonte: Adaptado de Oliveira e Bezerra (2019). 2.5 Machine Learning ML é uma subárea da Inteligência Artificial (IA) que reúne “um conjunto de méto- dos que permitem aos computadores aprender com os dados para fazer e melhorar predições” (ALPAYDIN, 2020). Esse é um ramo de algoritmos computacionais ainda em evolução (NAQA; MURPHY, 2015), mas seus métodos e técnicas já têm sido aplicados à problemas de diversas áreas, tais como: finanças, saúde e publicidade (BAILEY et al., 2018). A área de ML é ampla e possui diversos tipos de problemas, técnicas e algoritmos. Para facilitar o entendimento, ela é geralmente dividida em 4 tipos de “aprendizados”, sendo estes: aprendizado supervisionado, aprendizado não supervisionado, aprendizado por reforço e aprendizado evolutivo (MARSLAND, 2015). Dentre estes, o tipo mais comum é o aprendizado 1 http://jfuzzylogic.sourceforge.net/ 2 https://github.com/davicedraz/fuzzy-aggregation http://jfuzzylogic.sourceforge.net/ https://github.com/davicedraz/fuzzy-aggregation 28 supervisionado (MARSLAND, 2015).Tanto em problemas de aprendizado supervisionado quanto em problemas de aprendizado não supervisionado, é necessário haver um dataset para treinamento dos algoritmos de ML. Nos dois casos, o dataset deve ter um conjunto de dados de entrada, também chamados de variáveis independentes. Especificamente nos problemas de aprendizado supervisionado, um dado alvo, chamado de variável dependente, que é a resposta que se deseja obter (no caso dos problemas de aprendizado não supervisionado a presença da variável dependente no dataset não é necessária) (MARSLAND, 2015). Para a resolução de problemas de ML (especialmente nos aprendizados supervisi- onado e não supervisionado) é geralmente adotado um processo que é dividido nas 5 etapas, descritas à seguir (MARSLAND, 2015): 1. Coleta e preparação dos dados. Nesta etapa são coletados os dados que compõem o dataset (contendo os valores das variáveis independentes e no caso de problemas de apren- dizado supervisionado também o valor da variável dependente), que será utilizado para treinamento dos algoritmos de ML. No caso de problemas de aprendizado supervisionado, pode ser necessário envolver especialistas no domínio do problema para definir o valor da variável dependente para cada amostra no dataset, caso esse não seja previamente conhecido. Nesta etapa também são tratadas quaisquer anomalias nos dados, tais como: dados duplicados, dados faltantes, entre outros. 2. Seleção de variáveis independentes. Nesta etapa são selecionadas as variáveis inde- pendentes consideradas mais relevantes para a resolução do problema, e podem também ser excluídas variáveis independentes que estejam corrompidas de alguma forma ou que possuam algum tipo de “ruído”. Uma análise de correção entre as variáveis independentes pode ser realizada para embasar a exclusão de uma ou outra variável. 3. Escolha do algoritmo. Nesta etapa são escolhidos os algoritmos de ML mais adequados às características do problema e do dataset. 4. Seleção de parâmetros e modelos. Determinados algoritmos de ML exigem a esco- lha dos valores de alguns parâmetros, e isso pode exigir alguma análise adicional ou experimentação. Esta etapa destina-se à escolha dos valores desses parâmetros. 5. Avaliação. Antes que um modelo de ML seja efetivamente utilizado, é necessário avaliá-lo com dados que não fizeram parte do dataset de treinamento. Essa avaliação pode ser feita com o auxílio de especialistas no domínio do problema ou com a escolha e utilização de métricas apropriadas. 29 Os problemas de aprendizado supervisionado são divididos em dois tipos de proble- mas, os quais são: (i) problemas de classificação, no qual a variável dependente é categórica; e, (ii) problemas de regressão, no qual a variável dependente é numérica (MARSLAND, 2015). O problema que tratamos neste trabalho, envolve classificar MFs considerando sua manutenibili- dade a partir dos valores de um conjunto de 15 medidas de manutenibilidade do MF. Este pode ser classificado como um problema de classificação (aprendizado supervisionado), já o resultado que se deseja obter é categórico. 2.5.1 Algoritmos de Classificação Nos problemas de classificação têm-se um dataset com uma determinada quantidade de amostras, cada amostra contendo os valores de um conjunto de variáveis independentes e o valor da variável dependente, pois este é um tipo de problema de aprendizado supervisionado (MARSLAND, 2015). A Figura 7 ilustra um cenário de exemplo de um problema de classificação genérico. O problema tem duas variáveis independentes (representadas pelos eixos X e Y) e duas classes possíveis (representadas pelas cores azul e laranja). A linha que divide a parte azul da parte laranja seria um limiar encontrado por um determinado algoritmo de classificação para separar as duas classes existentes. O algoritmo considera todas as amostras que estão na parte laranja como pertencentes a classe laranja, e todas as amostras que estão na parte azul como pertencentes a classe azul. Existem diversos algoritmos de classificação, cada um com suas particularidades. A seguir, são descritos alguns dos mais conhecidos e utilizados algoritmos de classificação. 2.5.1.1 Naive Bayes Naive Bayes é uma família de algoritmos que calculam a probabilidade de um determinado resultado dado um conjunto de condições, utilizando o teorema de Bayes (BONAC- CORSO, 2017). O teorema de Bayes é expresso pela fórmula abaixo onde A e B são eventos. Naive Bayes é um classificador poderoso e fácil de treinar (BONACCORSO, 2017). Ele recebe o nome naive (ingênuo) porque supõe que as variáveis independentes não possuem dependên- cias (i.e., não são correlacionadas), o que pode não ser o caso em determinados problemas de 30 Figura 7 – Exemplo de problema de classifica- ção genérico. Fonte: Elaborado pelo autor. classificação (SEN et al., 2020). P(A|B) = P(B|A) ·P(A) P(B) (2.1) Para classificar uma determinada amostra, o que o algoritmo faz é calcular a probabi- lidade da amostra pertencer a cada uma das classes possíveis e a classe com maior probabilidade é dada como resultado (SEN et al., 2020). Por exemplo, em um problema de classificação onde se deseja descobrir se um empréstimo aceito (sendo as duas classes possíveis “Aceito” e “Recu- sado”), com base no salário mensal de uma pessoa ser menor que 9000 reais, as probabilidades para ambas as classes são expressas pelas fórmulas abaixo. As probabilidades utilizadas no cálculo do teorema de Bayes (P(B|A), P(A) e P(B)) são calculadas na etapa de treinamento do algoritmo, com base nos dados que compõem o dataset de treinamento. P(Aceito|Salário < 9000) = P(Salário < 9000|Aceito) ·P(Aceito) P(Salário < 9000) (2.2) P(Recusado|Salário < 9000) = P(Salário < 9000|Recusado) ·P(Recusado) P(Salário < 9000) (2.3) 31 2.5.1.2 Regressão Logística Apesar de ter regressão no nome, este é um algoritmo de classificação, que se baseia na probabilidade de uma determinada amostra pertencente a uma determinada classe (BONACCORSO, 2017). O algoritmo de regressão logística tem algumas semelhanças com o algoritmo de regressão linear (utilizado em problemas de regressão). Este último, tenta encontrar uma função linear que melhor representa um conjunto de amostras, ou seja, que dados os valores das variáveis independentes o valor de saída da função seja o mais próximo possível do valor da variável dependente (BONACCORSO, 2017). A diferença é que na regressão logística o valor de saída da função precisa estar limitado entre (0, 1). Por isso, é introduzida a função sigmóide, cujo valor de saída é limitado entre (0, 1) e é representada pela fórmula abaixo. f (x) = 1 1+ e−x (2.4) Um gráfico parcial de uma função sigmóide pode ser visto na Figura 8. Considerando um problema de classificação com uma variável independente (representada pelo eixo X), duas possíveis classes, sendo estas, 0 e 1 e o valor do eixo Y como sendo a probabilidade de uma amostra pertencer a classe 1, basta definir um limiar para o eixo Y e será possível classificar as amostras com base na curva da função sigmóide. Por exemplo, considerando a função sigmóide, que é mostrada no gráfico da Figura 8, e o limiar como sendo 0.5, uma amostra cujo valor de X fosse -5 seria tida como pertencente a classe 0 e uma amostra cujo valor de X fosse 5 seria tida como pertencente a classe 1. Figura 8 – Gráfico de uma função sigmóide. Fonte: Adaptado de Bonaccorso (2017). 32 2.5.1.3 Árvore de Decisão Árvore de decisão é um tipo de algoritmo baseado em lógica que pode ser utilizado para problemas de regressão e classificação (SEN et al., 2020). Em problemas de classificação o algoritmo forma uma estrutura de árvore binária que permite um processo de decisão sequencial para a descoberta da classe de uma determinada amostra (BONACCORSO, 2017). A partir da raiz da árvore, o valor de uma determinada variável independente é avaliado e se decide se o próximo nó será o da direita ou o da esquerda. Esse processo é repetidoaté que se chegue a um nó folha que indica a classe que será dada como resultado (BONACCORSO, 2017). Na Figura 9 é mostrado uma parte de uma árvore de decisão binária de um problema onde se deseja descobrir se um determinado estudante é homem ou mulher com base nas características do cabelo do estudante. Uma das principais vantagens do algoritmo de árvore de decisão é que a estrutura de árvore que é formada pode ser facilmente visualizada e entendida por humanos e, desse modo, os resultados também podem ser entendidos e explicados. Uma outra vantagem é que a estrutura de árvore que é formada permite mensurar a importância de cada uma das variáveis independentes e isso pode até mesmo ser utilizado como critério para a seleção das variáveis independentes que serão efetivamente utilizadas (BONACCORSO, 2017). Contudo, ao utilizar o algoritmo de árvore de decisão é necessário fornecer as limitações apropriadas para evitar que a árvore cresça ao ponto de haver quase que um nó folha para cada amostra do dataset de treinamento o que resultaria em um modelo pouco generalizável (BONACCORSO, 2017). 2.5.2 Métricas para Modelos de Classificação Como é possível observar na Figura 7, em geral um modelo de classificação não consegue representar os dados com total exatidão (o que seria o resultado ideal), mas o objetivo é que o modelo se aproxime ao máximo deste resultado. Existem diversas métricas para medir o quão próximas estão as predições feitas por um modelo de classificação, do modelo de classificação ideal e as métricas mais básicas (algumas vezes utilizadas para compor outras métricas) geralmente se baseiam em uma matriz de confusão. Uma matriz de confusão resume as informações relacionadas às predições de um modelo de classificação e as classificações reais (FAYZRAKHMANOV et al., 2018). Em um modelo de classificação binário (onde só existem duas classes possíveis), a matriz de confusão seria semelhante a exibida na Figura 10, onde VP 33 Figura 9 – Exemplo de árvore de decisão binária. Fonte: Adaptado de Bonaccorso (2017). é verdadeiro positivo, FN é falso negativo, FP é falso positivo e VN é verdadeiro negativo. Os resultados corretos são VP (amostras positivas que são corretamente classificadas como positivas) e VN (amostras negativas que são corretamente classificadas como negativas), enquanto que FN corresponde a uma amostra que é de fato positiva mas que foi incorretamente classificada como negativa e FP corresponde a uma amostra que é de fato negativa mas que foi incorretamente classificada como positiva (CHICCO; JURMAN, 2020). Figura 10 – Matriz de confusão binária. Fonte: Adaptado de Fayzrakhmanov et al. (2018). Neste trabalho, serão utilizados algumas das mais conhecidas utilizadas métricas 34 para avaliação de problemas de classificação, as quais são descritas a seguir. 2.5.2.1 Acurácia A acurácia é medida através da razão entre o número de classificações corretas e o número total de amostras e é expressa pela fórmula a seguir (CHICCO; JURMAN, 2020). Alguns pesquisadores a consideram a métrica mais razoável, no entanto, se o dataset for desbalanceado, ou seja, o número de amostras em de uma classe for muito maior que o de outra classe a métrica não é mais confiável pois fornece uma previsão otimista do comportamento do modelo de classificação (CHICCO; JURMAN, 2020). A acurácia varia de 0 a 1, sendo 0 o pior valor e 1 o melhor valor. Acurácia = V P+V N V P+FP+V N +FN (2.5) 2.5.2.2 Precisão A métrica de precisão tem maior ênfase em capturar erros por falso positivo e é medida através da razão entre o número classificações positivas corretas e o número total de classificações positivas (CHICCO; JURMAN, 2020). A precisão varia de 0 a 1, sendo 0 o pior valor e 1 o melhor valor e é expressa pela fórmula abaixo. Precisão = V P V P+FP (2.6) 2.5.2.3 Recall Ao contrário da precisão a métrica recall tem maior ênfase em capturar erros por falso negativo e é medida através da razão entre o número de classificações positivas corretas e o número de classificações positivas corretas mais o número de classificações negativas falsas Chicco e Jurman (2020). A métrica recall varia de 0 a 1, sendo 0 o pior valor e 1 o melhor valor e é expressa pela fórmula abaixo. Recall = V P V P+FN (2.7) 35 2.5.2.4 F1 Score A métrica F1 Score é obtida a partir do cálculo da média harmônica entre as métricas precisão e recall (CHICCO; JURMAN, 2020). Atualmente a métrica F1 Score é amplamente utilizada em diversos problemas de ML tanto binários quanto multiclasse (CHICCO; JURMAN, 2020). A métrica F1 Score varia de 0 a 1, sendo 0 o pior valor e 1 o melhor valor e é expressa pela fórmula abaixo. F1 = 2 · Precisão ·Recall Precisão+Recall (2.8) 2.5.2.5 AUC-ROC AUC-ROC é uma métrica de desempenho para problema de classificação que informa o quanto um modelo é capaz de distinguir entre as classes (NARKHEDE, 2018). ROC (Receiver Operating Characteristic) é uma curva de probabilidade traçada com TPR (true positive ratio ou razão de verdadeiros positivos) contra FPR (false positive ratio ou razão de falsos positivos) cujas fórmulas podem ser vistas abaixo Narkhede (2018). Em AUC-ROC, AUC é a área sob a curva ROC que pode ser vista na Figura 11. T PR = V P V P+FN (2.9) FPR = FP V N +FP (2.10) 2.5.3 Modelos de Caixa Branca e Caixa Preta Atualmente, existe uma discussão na comunidade internacional de ML sobre a uti- lização de modelos de caixa preta ou caixa branca (LOYOLA-GONZALEZ, 2019). Modelos considerados de caixa preta são aqueles cujos algoritmos se baseiam em funções matemáticas complexas ou que exigem profundo conhecimento de funções de distância e espaço de represen- tação que são difíceis para um especialista humano entender e explicar (LOYOLA-GONZALEZ, 2019). Já modelos de caixa branca, são aqueles cujo comportamento pode ser completamente entendido por seres humanos e até mesmo repetido (LIPTON, 2018). Parte da comunidade 36 Figura 11 – Área sob a curva ROC. Fonte: Adaptado de Narkhede (2018). científica defende os modelos de caixa preta, pois eles tem melhor desempenho que os modelos de caixa branca em certos tipos de problema. Enquanto uma outra parte defende os algorimos de caixa branca, porque seus resultados são comparáveis e podem ser explicados em linguagem próxima à humana (LOYOLA-GONZALEZ, 2019). Como um dos objetivos do presente estudo é fornecer, além da classificação da manutenibilidade dos MFs, indicativos de como melhorar a manutenibilidade do artefato, foram escolhidos os modelos de caixa branca. A partir desses modelos pode-se extrair informações sobre como melhorar efetivamente a qualidade de um MF. 37 3 TRABALHOS RELACIONADOS Foram identificados na literatura alguns estudos que se relacionam com este trabalho. Nesta seção, estes estudos serão descritos e comparados com o trabalho proposto. 3.1 Metrics for analyzing variability and its implementation in software product lines: A systematic literature review (EL-SHARKAWY et al., 2019) El-Sharkawy et al. (2019) realizaram uma revisão sistemática da literatura com o objetivo de identificar medidas de variabilidade desenvolvidas especificamente para as necessida- des de LPSs considerando tanto modelos de variabilidade quanto artefatos de código. Os autores analisaram 42 artigos nos quais foram identificadas 52 medidas para modelos de variabilidade, 80 para artefatos de código e 10 para ambos os artefatos. No presente trabalho, serão utilizadas medidas do MF (um tipo de modelo de variabilidade) para avaliar a manutenibilidade de LPS o que não foi feito no trabalho de El-Sharkawy et al. (2019). Além disso, no presente trabalho as medidas de manutenibilidade também serão agregadas visando gerar um único valor que indique a manutenibilidade de um MF. 3.2 Measures for quality evaluation of feature models (BEZERRA et al., 2014) Bezerra et al. (2014) realizaram um mapeamento sistemático com o objetivo de identificar medidas que pudessem ser utilizadaspara avaliar a qualidade dos MFs. Os autores então propuseram o COfFEE, um catálogo de 32 medidas de qualidade dos MFs. Para validar este catálogo, eles calcularam os valores de um subconjunto destas medidas para 3 MF extraídos do repositório S.P.L.O.T. (MENDONCA et al., 2009). Com o processo de validação, foi possível observar que cada um dos 3 MFs se destacou positivamente em um ou outro atributo de qualidade, porém não foi possível dizer qual dos 3 tinha a melhor manutenibilidade. Este é um problema desse tipo de abordagem de avaliação dos MF, pois, como os valores de várias medidas são avaliados individualmente, apenas pontos específicos do MF são considerados e não a qualidade geral deste artefato. Contudo, as medidas de qualidade fornecem informações úteis sobre a qualidade dos MFs e estas informações, quando agregadas, podem fornecer uma visão geral da qualidade do artefato. Neste trabalho, um subconjunto das medidas propostas por Bezerra et al. (2014) serão agregadas de modo a fornecer um indicativo da manutenibilidade de um MF. 38 3.3 Exploring quality measures for the evaluation of feature models: a case study (BE- ZERRA et al., 2017) Em um trabalho posterior, Bezerra et al. (2017) realizaram uma análise de corre- lação entre as medidas do catálogo COfFEE. Com a análise, os autores descobriram que um subconjunto das medidas do catálogo original era suficiente para avaliar a qualidade dos MFs. Os autores então propuseram um novo catálogo denominado MiniCOfFEE, composto por 15 das 32 medidas do catálogo COfFEE. As 15 medidas que compõem o catálogo MiniCOfFEE podem ser vistas no Quadro 1. Neste trabalho, as medidas do catálogo MiniCOfFEE serão utilizadas para treinar modelos de ML com o objetivo avaliar a manutenibilidade dos MFs. Além disso, são analizadas as medidas do catálogo MiniCOfFEE para verificar se ainda é possível reduzir o número de medidas necessárias para avaliar a manutenibilidade de um MF. Essa análise é feita com base na observação das correlações entre as 15 medidas de manutenibilidade de um MF e a importância de cada medida para um conjunto de modelos de ML. 3.4 Classifying feature models maintainability based on machine learning algorithms (SILVA et al., 2020) Em Silva et al. (2020) foi realizado um estudo com o objetivo de investigar a utilização de técnicas de ML na avaliação de LPSs. No trabalho foi proposta uma abordagem para classificação da manutenibilidade dos MFs que utiliza algoritmos de clustering para agrupar os MFs por similaridade. Foi utilizado o método Vale (VALE et al., 2019) de derivação de thresholds para analisar cada grupo dos MFs e atribuir a cada um deles um rótulo indicando a manutenibilidade dos membros do grupo. A abordagem foi avaliada em termos de acurácia e precisão, obtendo uma acurácia de 61,9% e uma precisão de 70,2%. O dataset utilizado no estudo considerava o catálogo de medidas de manutenibilidade proposto por Bezerra et al. (2017). Neste trabalho, também é utilizado o catálogo de medidas proposto por Bezerra et al. (2017). Porém, são utilizados modelos de aprendizado supervisionado para avaliar a manutenibilidade do MF, ao contrário do trabalho anterior onde foram utilizados modelos de aprendizado não supervisionado. 39 3.5 Development of the maintainability index for SPLs feature models using fuzzy logic (OLIVEIRA; BEZERRA, 2019) No trabalho de Oliveira e Bezerra (2019) os autores desenvolveram um índice de manutenibilidade dos MFs através da agregação de um subconjunto das medidas propostas por Bezerra et al. (2014) utilizando lógica fuzzy. O índice foi aplicado a um conjunto do MF e foi possível verificar que esse era capaz de medir se um modelo tinha alta ou baixa manutenibilidade. O presente trabalho utilizará o mesmo subconjunto de medidas utilizado por Oliveira e Bezerra (2019), pois em Bezerra et al. (2017) foi feita uma análise que revelou a existência de correlações entre as medidas do catálogo COfFEE e que é possível avaliar a manutenibilidade de um MF apenas com as 15 medidas utilizadas por Oliveira e Bezerra (2019). A principal diferença do presente trabalho para o trabalho de Oliveira e Bezerra (2019) é o tipo de técnica utilizada para agregar as medidas de manutenibilidade para permitir avaliar a manutenibilidade geral de um MF. No trabalho de Oliveira e Bezerra (2019), foi utilizada lógica fuzzy e no presente trabalho serão utilizados modelos de ML caixa branca. O uso de modelos de ML de caixa branca neste trabalho permitirá fornecer aos engenheiros de domínio indicativos de como melhorar a manutenibilidade de um MF. Quadro 2 – Comparativo entre os trabalhos relacionados e o trabalho proposto. Trabalhos Descreve ou UtilizaMedidas Propõe Abordagem Indica como Melhorar o MF Tem Suporte Automatizado Trabalho Proposto Sim Sim Sim Sim El-Sharkawy et al. (2019) Sim Não Não Não Bezerra et al. (2014) Sim Não Não Sim Bezerra et al. (2017) Sim Não Não Sim Silva et al. (2020) Sim Sim Não Sim Oliveira e Bezerra (2019) Sim Sim Não Sim Fonte: Elaborado pelo autor. 40 3.6 Análise Comparativa O Quadro 2 compara o presente trabalho com os 5 trabalhos relacionados descritos anteriormente em 4 pontos, sendo estes: (i) se o trabalho descreve ou utilizada medidas de manutenibilidade do MF; (ii) se propõe abordagem de avaliação da manutenibilidade do MF; (iii) se fornece indicativos de como melhorar a manutenibilidade do MF; e, (iv) se tem suporte automatizado. O presente trabalho utiliza medidas de manutenibilidade para classificar a ma- nutenibilidade do MF e todos os 5 trabalhos relacionados utilizam ou pelo menos descrevem medidas de manutenibilidade do MF. Dos 5 trabalhos relacionados apenas o presente trabalho e os trabalhos de Silva et al. (2020) e Oliveira e Bezerra (2019) propõem abordagens de avaliação da manutenibilidade do MF. O presente trabalho também fornece indicativos de como melhorar a manutenibilidade do MF, o que não é feito por nenhum dos outros trabalhos relacionados. Todos os trabalhos relacionados, exceto o de El-Sharkawy et al. (2019), fornecem suporte automatizado, o que também é fornecido pelo presente trabalho. 41 4 UMA INVESTIGAÇÃO COMPARATIVA DAS ABORDAGENS DE AVALIAÇÃO DA MANUTENIBILIDADE DO MF Neste capítulo, é realizada uma comparação entre duas abordagens de classificação da manutenibilidade do MF. Na Seção 4.1 as questões de pesquisa são apresentadas e os procedimentos adotados para a coleta e análise dos dados utilizados na comparação das duas abordagens são descritos. A Seção 4.2 apresenta os resultados e as respostas das questões de pesquisa. Na Seção 4.3 são apresentadas as ameaças à validade e os procedimentos adotados para mitigar seus efeitos. Por fim, na Seção 4.4 são apresentadas as conclusões do estudo. 4.1 Planejamento do Estudo Um dos objetivos do presente trabalho é utilizar modelos de ML caixa branca para classificar a manutenibilidade dos MFs. Este problema pode ser considerado como um problema de classificação, um tipo de problema de aprendizado supervisionado. Como descrito na Seção 2.5, este tipo de problema requer um dataset com os valores das variáveis independentes e da va- riável dependente para cada amostra. Portanto, para o presente trabalho é necessário um dataset contendo os valores das 15 medidas de manutenibilidade do catálogo MiniCOfFEE. Essas medi- das representam as variáveis independentes do problema e a classificação da manutenibilidade de cada MF, que representa a variável dependente do problema. Um possível caminho para se obter um dataset pré-classificado é utilizar especialistas no domínio do problema para classificar as amostras do dataset de forma manual, com base em sua própria experiência. Contudo, no contexto do presente trabalho seria muito custoso utilizar especialistas em LPS para pré-classificar todo o dataset, visto que seria necessário reunir um grande número de especialistas para que fosse possível gerar um dataset de tamanho aceitável para treinamentodos algoritmos de ML. Por esse motivo, optamos por utilizar uma abordagem de classificação automática da manutenibilidade dos MFs já descrita na literatura para pré-classificar o dataset a ser utilizado no treinamento dos algoritmos de ML. Identificamos duas abordagens deste tipo na literatura. Uma delas foi proposta em nosso trabalho anterior Silva et al. (2020) e a outra foi proposta por Oliveira e Bezerra (2019). Como descrito na Seção 2.4, ambas as abordagens recebem como entrada as 15 medidas do catálogo MiniCOfFEE e a partir disso classificam a manutenibilidade de um MF. No presente trabalho, iremos nos referir a abordagem proposta em nosso trabalho anterior (SILVA et al., 2020) como abordagem Silva, e a abordagem proposta por Oliveira e Bezerra (2019) como 42 abordagem Oliveira. Nesta seção, descrevemos os procedimentos realizados para comparar as duas abordagens e decidir qual delas será utilizada para a pré-classificação do dataset de treinamento dos algoritmos de ML. 4.1.1 Questões de Pesquisa Como dito anteriormente, não seria viável utilizar especialistas em LPS para pré- classificar todo o dataset de treinamentos dos algoritmos de ML. Por isso, optamos por utilizar uma abordagem de classificação automática da manutenibilidade dos MFs. Identificamos duas abordagens deste tipo na literatura, e para compará-las utilizamos um oráculo composto por alguns MFs que foram classificados quanto a manutenibilidade de forma manual por especialistas em LPS. Para guiar o processo de comparação das duas abordagens, foram definidas três questões de pesquisa: – QP1: Com que frequência cada abordagem classifica a manutenibilidade de um MF da mesma forma que especialistas em LPS? Uma abordagem ideal para classificação da manutenibilidade dos MFs seria aquela cujas classificações estivessem quase sempre em concordância com classificações feitas por especialistas em LPS. Os especialistas fazem a classificação de forma manual analisando as particularidades de cada MF e utilizam sua própria experiência no processo. Respondendo a QP1, será possível dizer qual a acurácia das duas abordagens considerando como oráculo uma classificação feita por especialistas em LPS. Ou seja, quando cada abordagem classifica MFs em conformidade com a classificação feita de forma manual por especialistas em LPS. – QP2: As abordagens de avaliação da manutenibilidade dos MFs são mais pessimistas ou otimistas em relação às classificações feitas por especialistas em LPS? Quando a classificação de uma das abordagens não for igual a dos especialistas, o ideal é que ela seja um pouco mais pessimista (por exemplo, classificar como ruim um MF considerado moderado pelos especialistas), à ser mais otimista (por exemplo, classificar como bom um MF considerado moderado pelos especialistas). Nesse cenário, os engenheiros de domínio serão alertados de que este MF não tem boa manutenibilidade e poderão assim buscar melhorá-lo. Respondendo a QP2, será possível dizer se as duas abordagens classificam com mais pessimismo ou mais otimismo os MFs em relação a classificação feita pelos especialistas em LPS. – QP3: Qual a variação das classificações de cada abordagem em relação às classificações 43 feitas por especialistas em LPS? Respondendo a QP3 será possível dizer o quanto em média as classificações das abordagens se distanciam em relação a classificação feita por especialistas em LPS. Assim, como qual das abordagens cujos resultados estão mais próximos de resultados obtidos com o uso de especialistas em LPS. 4.1.2 Passos do Estudo Nesta seção, são apresentados os procedimentos adotados para coleta e análise dos dados utilizados na comparação das abordagens de classificação da manutenibilidade dos MFs. 4.1.2.1 Procedimentos para a Coleta dos Dados Como dito anteriormente, as variáveis independentes do problema de ML abordado neste trabalho são as 15 medidas de manutenibilidade do MF descritas no catálogo de medidas MiniCOfFEE e a variável dependente é um valor categórico que indica a manutenibilidade de um MF. As abordagens Silva e Oliveira classificam os MFs quanto à manutenibilidade em 5 categorias. Por isso, optamos utilizar no presente trabalho o mesmo número de categorias utilizado por ambas as abordagens. A nomenclatura utilizada pela abordagem Silva para as 5 categorias de manutenibilidade do MF, é: muito ruim, ruim, moderada, boa e muito boa. Já na abordagem Oliveira, a nomenclatura utilizada para as 5 categorias de manutenibilidade do MF, é: muito baixa, baixa, média, alta e muito alta. No presente trabalho optamos por utilizar a mesma nomenclatura utilizada pela abordagem Silva. Construção do dataset. Para formar o dataset a ser utilizado neste trabalho para o treinamento dos algoritmos de ML extraímos 342 MFs1 do repositório S.P.L.O.T. (MENDONCA et al., 2009) e utilizamos a ferramenta DyMMer (BEZERRA et al., 2016a) para calcular as 15 medidas do catálogo MiniCOfFEE para cada uma das amostras. O dataset2 é composto por MFs de diferentes tamanhos, variando de 10 a 290 features, com uma média de aproximadamente 30 features por MF. Após calcular os valores das 15 medidas de manutenibilidade para cada MF no dataset, utilizamos as abordagens Silva e Oliveira para classificar a manutenibilidade dos 342 MF do dataset passando como entrada para as abordagens os valores das 15 medidas de manutenibilidade calculados para cada MF no dataset3,4. As duas abordagens têm suporte 1 https://github.com/publiosilva/tcc-2/tree/master/feature-models 2 https://github.com/publiosilva/tcc-2/blob/master/unclassified-dataset.csv 3 https://github.com/publiosilva/tcc-2/blob/master/silva-dataset.csv 4 https://github.com/publiosilva/tcc-2/blob/master/oliveira-dataset.csv https://github.com/publiosilva/tcc-2/tree/master/feature-models https://github.com/publiosilva/tcc-2/blob/master/unclassified-dataset.csv https://github.com/publiosilva/tcc-2/blob/master/silva-dataset.csv https://github.com/publiosilva/tcc-2/blob/master/oliveira-dataset.csv 44 automatizado, então este processo foi feito de maneira automática. Para facilitar a comparação das abordagens fizemos com que as categorias de manutenibilidade de ambas as abordagens fossem iguais. O que fizemos foi substituir a nomenclatura utilizada pela abordagem Oliveira pela mesma utilizada pela abordagem Silva, desse modo as classes muito baixa, baixa, média, alta e muito alta foram substituídas pelas classes muito ruim, ruim, moderada, boa e muito boa, respectivamente. A abordagem Silva classificou 76 MFs como muito ruins, 60 como ruins, 144 como moderados, 56 como bons e 6 como muito bons. Já a abordagem Oliveira classificou 27 MFs como muito ruins, 72 como ruins, 66 como moderados, 49 como bons e 128 como muito bons. Construção do óraculo. Para formar o oráculo que seria a base para a comparação entre as abordagens Silva e Oliveira escolhemos um subconjunto dos 342 MFs que compunham o dataset para que fosse classificado quanto a manutenibilidade de forma manual por um conjunto de especialistas em LPS. Para que o subconjunto escolhido fosse representativo em relação ao dataset completo agrupamos os 342 MFs por similaridade considerando os valores das 15 medidas de manutenibilidade. Para fazer este agrupamento utilizamos o algoritmo de agrupamento K-Means que é um dos mais conhecidos e utilizados algoritmos de agrupamento ou clustering (JAIN, 2010) e está disponível na biblioteca scikit-learn5. Após o processo de agrupamento foram selecionados 100 MFs6,7 dos diferentes grupos gerados garantindo assim que os MFs a serem avaliados pelos especialistas teriam diferentes características e seriam representativos em relação ao dataset completo. Avaliação pelos especialistas. Foi criado um formulário para que os especialistas pudessem avaliar os 100 MFs. Em cada formulário, além das perguntas relacionadas ao perfil dos participantes, haviam 10 perguntas onde o especialista deveria classificar a manutenibilidade de 10 MFs nas 5 categorias
Compartilhar