Henrique Vignando
Orientador: Prof. Dr. Edson A. Oliveira Junior
UNIVERSIDADE ESTADUAL DE MARINGÁ
CENTRO DE TECNOLOGIA DEPARTAMENTO DE INFORMÁTICA
PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
O processo de experimentação em Engenharia de Software (ES) é fundamental para ciclo de vida de um software.
Existe uma discussão sobre a qualidade dos experimentos em ES na qual aborda que o conhecimento seja gerado de forma sistemática, disciplinada, quantificável e controlada.
Portanto melhorar a qualidade dos experimentos¹ torna-se viável construir um corpo de conhecimento confiável e referente na área de experimentação em ES.
¹O termo ”experimento”para denotar ambos os conceitos de ”experimento controlado”e ”quasi-experimento controlado”
Lopes e Travassos, 2009 / Wohlin et al., 2012
De outro lado os sistemas de recomendação em ES vêm ganhado espaço por causa de própria evolução dos sistemas de recomendação tradicionais no mercado, como por exemplo Amazon, Netflix, Spotify, entre outros grandes palyers.
Os sistemas de recomendação têm como objetivo recomendar algo mais atrativo para seu usuário.
Nos sistema de recomendação em ES o espaço de informação para gerar recomendação são os próprios recursos do ambiente de projeto e desenvolvimento de software.
Robillard et al., 2010
Dessa forma, acredita-se haver uma oportunidade de poder juntar essas duas áreas de pesquisa, possibilitando investigar o estudo de sistemas de recomendação em ES para apresentar recomendações no contexto de experimentos em ES e quasi-experimentos controlados.
Atualmente, não há diretrizes específicas para avaliar a qualidade de experimentos em ES, especialmente, para áreas emergentes e em processo de consolidação como é o caso de Linha de Produto de Software (LPS).
Além disso, tem-se percebido uma constante carência
de documentação adequada dos experimentos que acabam por inviabilizar a repetição e auditoria dos estudos em LPS.
A indústria tem adotado de forma crescente o conceito de LPS, tronando-se cada vez mais exigente por um corpo de conhecimento na área.
Este projeto de dissertação de mestrado propõe a especificação e implementação de um sistema de recomendação a fim de gerar recomendações de experimentos em LPS que possa garantir uma qualidade.
Espera-se que com estes processos e diretrizes os usuários possam planejar, executar, analisar e reportar experimentos em LPS com maior qualidade, não comprometendo a replicação e auditoria dos mesmos.
Linha de Produto de Software LPS
Experimento e Quasi-Experimento em ES
Qualidade de experimento em ES
Ontologia
Sistemas de Recomendação
RSSE Recommedention System in Software Enginnering
Uma LPS é um conjunto de produtos que endereçam a um determinado segmento de mercado ou missão particular
Esse conjunto de produtos também é denominado família de produtos, no qual os membros desta família são produtos específicos gerados a partir da reutilização de uma infraestrutura comum, denominada núcleo de artefatos (Core assets).
Pohl et al. 2005.
Pohl et al. desenvolveram o framework para engenharia de LPS, com o objetivo de incorporar os conceitos centrais da engenharia de linha de produto tradicional, proporcionando a reutilização de artefatos e a customização em massa através de variabilidades.
Este framework está dividido em dois processos:
Pohl et al. 2005.
Framework de Engenharia de LPS (Pohl et al., 2005). Traduzido por Geraldi, 2015
Produtos são instâncias do núcleo de artefatos!
A realização de um experimento é um relacionamento entre CAUSA e EFEITO, através de um modelo teórico entre dois ou mais fenômenos relacionados a fim de determinar se o modelo proposto pode ser considerado correto.
Kitchenham et al., 2016
Um dos principais elementos de um experimento são as suas variáveis, sendo elas: Independentes e Dependentes.
Kitchenham et al., 2016
Traduzido de Wohlin et al., 2012
O processo de realização de um experimento pode ser dividido em cinco atividades
Traduzido de Wohlin et al., 2012
O conceito de qualidade de experimentos em ES pode ser visto em dois pontos de vista diferentes, o primeiro é considerar a qualidade como o resultado da validade interna de um bom experimento e o segundo é tornar a qualidade operacional assim como a quantidade de vieses nos resultados experimentais.
Experimentos de boa qualidade são livres de vieses. O viés está relacionado com a validade interna, por exemplo, quão bem os experimentos são planejados, executados e analisados.
Dieste e Juristo, 2013
Adaptado e Traduzido de Dieste (2011)
Até o momento não se tem conhecimento de trabalhos que tratam a qualidade de experimentos em área especifica de ES.
Entretanto, existem alguns trabalhos relacionados a avaliação de qualidade dos experimentos em Engenharia de Software.
Kitchenham e Charters (2007) propõem um checklist de avaliação de qualidade de experimentos em ES contendo cinquenta questões;
Kitchenham et al. (2010) apresentam um checklist de avaliação de qualidade de experimentos em ES com nove questões
Dieste et al. (2011) desenvolveram uma escala de qualidade para determinar a qualidade de experimentos, contendo dez questões baseadas nas cinco dimensões de Kitchenham
Ontologia é um ramo da filosofia que estuda a realidade e existência, ou o ser enquanto ser. Em outras palavras, é o estudo da descrição de coisas do mundo real.
Ontologias são uma especificação formal de uma contextualização e uma contextualização é uma visão abstrata e simplificada do mundo.
Wolff e École, 1962 / Gruber, 1993
Ontologia em Computação, Sistemas de Informação e Ciência da Informação, é definida como um modelo de dados que representa um conjunto de conceitos dentro de um domínio e os relacionamentos entre estes.
Uma ontologia define primitivas/diretrizes de um domínio de conhecimento, estas primitivas/diretrizes podem ser definidas como classes, atributos, propriedades e restrições. Essas definições seguem o padrão de representação conhecido como lógica descritiva
A lógica descritiva representa os conceitos de um domı́nio (chamado de TBox - Terminological Box ) separadamente dos indivı́duos (chamado de ABox - Assertion Box ).
Portanto uma ontologia para a representação de um conhecimento possui a seguinte estrutura:
Sistema de recomendação é uma tecnologia de sucesso da IA (inteligencia Artificial)
Sistemas de recomendação são aplicativos software que visam dar suporte para usuário na tomada de decisões ao interagir com grandes espaços de informação.
Os sistemas de recomendação são técnicas ou ferramentas de software, que pode reduzir a sobrecarga de informações para os usuários, sugerindo itens, conteúdos ou serviços, etc.
Felfernig et al. / ACM Conferece Recommendation System / Mahmood e Ricci, 2009
Em um problema de recomendação, as principais entidades são o usuário e o item e o objetivo é recomendar os itens com melhores score aos usuários, como pode ser visto nos grandes players como, Netflix, Amazon, Facebook, Spotfy, etc...
O primeiro sistema de recomendação proposto foi Tapestry, ele introduziu o conceito de Collaborative Filtering.
Kwong et al., 1992
Definição formal do modelo Tradicional:
As principais abordagens/técnicas estão divididas em duas áreas:
Em Engenharia de Software, sistemas de recomendação desempenham importantes funções a fim de ajudar a equipe de software a lidar com sobrecarga de informações, filtrando e fornecendo informações úteis em um determinado contexto.
São ferramentas de software introduzidas especificamente para ajudar equipes de desenvolvimento de software e partes interessadas para lidar com a busca de informações em um determinado contexto em ES.
Robillard et al., 2010 / Rahman et al., 2014
Recommendation System in Software Engineeiring (RSSE) compreendem três componentes principais que são:
Rahman et al., 2014
Passos de Construção para um RSSE. Traduzido e Adaptado de Maki et al. 2015, p.151
Foram encontradas duas revisões sistemáticas que abordam os métodos e modelos de implementação de um RSSE apresentando vários aspectos de SR em ES, principalmente no tipo de corpo de conhecimento aplicado a RSSE. Nessas revisões foi possível identificar alguns tipos de trabalhos utilizando RSSE.
Robillard et al., 2010 / Maki et al. 2015
Exemplos em RSSE:
Source Code
Enviromment
Traduzido e Adaptado de Maki et al. 2015
Em uma das RS foi possível identificar quais alguns domínios e quais técnicas de SR se aplica a elas.
Como pode ser notado nestas revisões sistemática que não existe até o momento um avanço no estudo de RSSE voltado para área de experimentação em ES.
Oceano Azul...
Por que recomendar experimentos?
Por que então não usar um motor de busca?
SR entrega exemplos de experimento a partir de informações de contexto (qualidade) sobre o corpo de conhecimento!
Objetivo geral:
Objetivos especı́ficos:
Projeto de pesquisa institucional Prof. Edson A. Oliveira Junior
Técnicas de SR: KBF ou IA
Domínio / subdomínio em LPS
Tipos de artefatos de LPS
Feature Model utilizado
Tamanho da amostra
Dimensões para avaliação de um sistema de recomendação e as recomendações provida por ele.
Robillard et al., 2010
Robillard et al., 2010
Categorização das dimensões.
Traduzido e adaptado de Robillard et al., 2010
Cruzamento de interesses entre as dimensões.
| E1 | Revisão da Literatura |
| E2 | Projeto: Tecnologias |
| E3 | Projeto: Modelo de Ontologias |
| E4 | Projeto: Modelo de Predição |
| E5 | Projeto: Modelagem de dados |
| E6 | Projeto: Modelo de Recomendação |
| E7 | Projeto: Front-End |
| E8 | Desenvolvimento: Ontologias |
| E9 | Desenvolvimento: Predição |
| E10 | Desenvolvimento: Recomendação |
| E11 | Desenvolvimento: Front-End |
| E12 | Testes |
| E13 | Avaliação dos Resultados |
| E14 | Conclusões |
| E15 | Escrever Qualificação |
| E16 | Defesa da Qualificação |
| E17 | Escrever Dissertação |
| E18 | Defesa da Dissertação |
Todo projeto está sendo versionado no Github.
https://github.com/rickvig/pcc-pesquisa
O objetivo desta proposta de dissertação é desenhar um sistema de recomendação que possa gerar processos e diretrizes para realização de experimentos para LPS com o qualidade.
Portanto, acredita-se que após a realização do projeto de software do sistema de recomendação de experimentos para LPS será possível desenvolver o sistema de recomendação para que os usuários que interagirem com este sistema possa receber recomendações de processos e diretrizes para suas pesquisas experimentais em LPS de maneira fácil e intuitiva que posso garantir a qualidade em seus experimentos.
Lopes, V. P.; Travassos, G. H. Experimentação em engenharia de software: Glossário de termos. In: 6th Experimental Software Engineering Latin American Workshop (ESELAW 2009), 2009, p. 42–51.
Pohl, K.; Böckle, G.; Linden, F. J. v. d. Software Product Line Engineering: Foundations, Principles and Techniques. Secaucus, NJ, USA: Springer-Verlag New York, Inc., 2005.
Kitchenham, B. A.; Budgen, D.; Brereton, P. Evidence-Based Software engineering and systematic reviews, v. 4. CRC Press, 2016.
Dieste, O.; Grim, A.; Juristo, N.; Saxena, H.; et al. Quantitative determination of the relationship between internal validity and bias in software engineering experiments: Consequences for systematic literature reviews. In: 5th International Symposium on Empirical Software Engineering and Measurement (ESEM), 2011, p. 285–294.
Kampenes, V. Quality of design, analysis and reporting of software engineering experiments: A systematic review. Tese de Doutoramento, Department of Informatics, Faculty of Mathematics and Natural Sciences, University of Oslo, 2007.
Wolff, C.; École, J. Philosophia prima sive ontologia. 1962.
Gruber, T. What is an ontology. WWW Site http://www-ksl. stanford. edu/kst/whatis-an-ontology. html (accessed on 07-09-2004), 1993.
Mahmood, T.; Ricci, F. Improving recommender systems with adaptive conversational strategies. In: Proceedings of the 20th ACM conference on Hypertext and hypermedia, ACM, 2009, p. 73–82.
Kwong, K. K.; Belliveau, J. W.; Chesler, D. A.; Goldberg, I. E.; Weisskoff, R. M.; Poncelet, B. P.; Kennedy, D. N.; Hoppel, B. E.; Cohen, M. S.; Turner, R. Dynamic magnetic resonance imaging of human brain activity during primary sensory stimulation. Proceedings of the National Academy of Sciences, v. 89, n. 12, p. 5675–5679, 1992.
Robillard, M.; Walker, R.; Zimmermann, T. Recommendation systems for software engineering. IEEE software, v. 27, n. 4, p. 80–86, 2010.
Rahman, M. M.; Yeasmin, S.; Roy, C. K. Towards a context-aware ide-based meta search engine for recommendation about programming errors and exceptions. In: Software Maintenance, Reengineering and Reverse Engineering (CSMR-WCRE), 2014 Software Evolution Week-IEEE Conference on, IEEE, 2014, p. 194–203.