Recomendação de Experimentos e Quasi-Experimentos Controlados para Linha de Produto de Software

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

Agenda

  • Introdução
  • Fundamentação Teórica
  • Proposta da Pesquisa
    • Objetivos
    • Metodologia
    • Avaliação
    • Empacotamento
    • Contribuições Esperadas
    • Resultados Preliminares
  • Cronograma
  • Conclusão​

Introduçã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

Introdução

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

Introdução

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.

Introdução

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.

Introdução

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.

Fundamentação Teórica

  1. Linha de Produto de Software LPS

  2. Experimento e Quasi-Experimento em ES

  3. Qualidade de experimento em ES

  4. Ontologia

  5. Sistemas de Recomendação

  6. RSSE Recommedention System in Software Enginnering

Linha de Produtos de Software

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.

Linha de Produtos de Software

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:

  • Engenharia de Domı́nio
  • Engenharia de Aplicação

Pohl et al. 2005.

Linha de Produtos de Software

Framework de Engenharia de LPS (Pohl et al., 2005). Traduzido por Geraldi, 2015

Produtos são instâncias do núcleo de artefatos!

Experimentos e

Quasi-Experimentos em ES

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

Experimentos e

Quasi-Experimentos em ES

Um dos principais elementos de um experimento são as suas variáveis, sendo elas: Independentes e Dependentes.

 

  • Variáveis independentes: são associadas à causa e controladas como resultado das atividades do experimentador, também são chamadas de fatores que podem assumir valores denominados tratamentos;
  • Variáveis dependentes: são associadas ao efeito e resultam nas mudanças que o experimentador realiza às variáveis independentes

Kitchenham et al., 2016

Experimentos e

Quasi-Experimentos em ES

Traduzido de Wohlin et al., 2012

Experimentos e

Quasi-Experimentos em ES

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.

Qualidade de Experimentos em ES

Dieste e Juristo, 2013

Qualidade de Experimentos em ES

Adaptado e Traduzido de Dieste (2011)

Qualidade de Experimentos em ES

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

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

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

Ontologia

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:

  • Uma base de conhecimento onde estão os dois conjuntos de conhecimento terminológico (TBox) e o conjunto de conhecimento sobre objetos (ABox), seguido de um mecanismo de inferência e uma aplicação para atuar na manipulação de informações extraídas do mecanismo de inferência.

Ontologia

Sistemas de Recomendação

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

Sistemas de Recomendação

Tradicional

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

Sistemas de Recomendação

Definição formal do modelo Tradicional:

  • Seja C o conjunto de todos os usuários de um determinado sistema, e seja S o conjunto de todos os possíveis itens que podem ser recomendados como livros, filmes, restaurantes etc. Seja u a função utilidade que mede o quão útil é um determinado item s para um determinado usuário c, u:C x S → R, onde R é um conjunto totalmente ordenado. Então, para cada usuário c ∈ C, procura-se um item s’ ∈ S que maximiza a utilidade do usuário.
\forall c\in C,{s}' = argmax_{s\in Su(c,s))}

Sistemas de Recomendação

As principais abordagens/técnicas estão divididas em duas áreas:

 

  • Foco nos Usuários: proximidades dos vizinho "usuários com gostos semelhantes, recomenda itens com base nos gostos semelhantes dos usuários" - Collaborative Filtering (CF)

 

  • Foco nos Itens: se o usuário gostou do item A provavelmente irá gostar dos itens relacionados ao item A" - Content-based Filtering (CbF) - Knowledge-Based Recommendation (KbR)

 

  • Hybrid Recommender Systems (HRS)
  • Context-aware Recommender Systems (CaRS): Sistemas de Recomendação usando Informações de Contexto

Sistemas de Recomendação

em Engenharia de Software

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

Sistemas de Recomendação

em Engenharia de Software

Recommendation System in Software Engineeiring (RSSE) compreendem três componentes principais que são:

 

  • Um mecanismo para coletar dados;
  • Um mecanismo de recomendação para analisar dados e gerar recomendações e;
  • uma interface de usuário para fornecer recomendações.

Rahman et al., 2014

Sistemas de Recomendação

em Engenharia de Software

Passos de Construção para um RSSE. Traduzido e Adaptado de Maki et al. 2015, p.151

Sistemas de Recomendação

em Engenharia de Software

Sistemas de Recomendação

em Engenharia de Software

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.

Sistemas de Recomendação

em Engenharia de Software

Robillard et al., 2010 / Maki et al. 2015

Exemplos em RSSE:

  • SR para exploração / reuso / refatoração de código (por exemplo, class em OO);
  • SR para reuso de componentes;
  • SR na exploração de API;
  • SR na depuração de código (debugging)
  • SR na recomendação de agentes Agile
  • SR na descoberta de requisitos;
  • SR na mudança / evolução / bugs no ciclo de vida de um software.

Source Code

Enviromment

Sistemas de Recomendação

em Engenharia de Software

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.

Sistemas de Recomendação

em Engenharia de Software

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

Proposta de Dissertação

Motivação

Por que recomendar experimentos?

 

  • Motivação tradicional de SR (amplo espaço de informações)
  • Aluno/pesquisador  ("existe algum experimento com as minhas características de pesquisa em LPS?")
  • Industria ("existe algum experimento com as características da minha LPS? Já foi realizado algum tipo de experimento semelhante minha LPS?")

 

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!

Proposta de Dissertação

Motivação

  • Experimento de ES em LPS exige alguns pontos de atenção específicos para garantir a qualidade do experimento. Estes pontos tem sido investigados em um trabalho de mestrado em andamento do nosso Grupo de pesquisa em Reuso Sistemático de Software e Experimentação (GRSSE). Um destes pontos são Diretrizes para a avaliação de experimentos com qualidade em LPS.
  • Esta pesquisa demonstrou que existe uma lacuna nas pesquisas de qualidade em experimentos em LPS que proporciona esta pesquisa, apresentando um campo aberto à pesquisa para determinar qualidade.
  • Melhora significativa no corpo de conhecimento na area de experimentação em LPS.

Objetivos

Objetivo geral:

  • Especificar e implementar um sistema de recomendação para experimentos em LPS caracterizados por sua qualidade.

Objetivos especı́ficos:

  • Gerar e representar um conjunto de meta dados e meta modelos a partir das informações de experimentos em LPS;
  • Definir técnicas de recomendação com base nos meta dados  e meta modelos;
  • Projeto e desenvolvimento do sistema de recomendação;
  • Avaliar e empacotar o sistema de recomendação.

Objetivos

Metodologia

Projeto de pesquisa institucional Prof. Edson A. Oliveira Junior

Metodologia

Metodologia

  • Acadêmia
  • Indústria
  • ...
  • Experimentos em LPS
Técnicas de SR: KBF ou IA
Domínio / subdomínio em LPS
Tipos de artefatos de LPS
Feature Model utilizado
  • Experimentos
  • Diretrizes
  • ...
Tamanho da amostra

Avaliação

Dimensões para avaliação de um sistema de recomendação e as recomendações provida por ele.

Robillard et al., 2010

Avaliação

Robillard et al., 2010

Categorização das dimensões.

Avaliação

Traduzido e adaptado de Robillard et al., 2010

Cruzamento de interesses entre as dimensões.

Contribuições Esperadas

  • Espera-se que com este trabalho seja encontrado uma modelo (projeto e implementação) de recomendação para experimentos de LPS, focado em potencializar a qualidade do experimento a ser recomendado.
  • Espera-se que com esta pesquisa se inicie um processo de melhoria continua na qualidade de experimentação em LPS.
  • Contribuir com a comunidade de LPS a projetor e executar experimentos com qualidade aumentando a confiança do corpo de conhecimento visando a transferência de tecnologia para indústria.

Cronograma

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

Cronograma

Resultados Preliminares

  • ETL de transformação de planilha para banco de dados
  • Grafo inicial de diretrizes para base ontológica de qualidade de
    experimentos em LPS
  • SQL para lista comum de diretrizes

Todo projeto está sendo versionado no Github.

https://github.com/rickvig/pcc-pesquisa

Empacotamento

Conclusão

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.

Perguntas ?

Referências

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.

Referências

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.

Made with Slides.com