English

CIn - Centro de Informática UFPE




Eventos Relacionados

Defesa de Dissertação de Mestrado Nº 1.371: "Modular Reasoning for Software Product Lines with Emergent Feature Interfaces"

O aluno Jean Carlos de Carvalho Melo irá defender seu trabalho dia 7 de março, às 10h, no Anfiteatro Início: 07/03/2014 às 10:00 Término: 07/03/2014 às 12:00 Local: Anfiteatro do CIn

Pós-Graduação em Ciência da Computação - UFPE
Defesa de Dissertação de Mestrado Nº  1.371
 
Aluno: Jean Carlos de Carvalho Melo
Orientador: Prof. Paulo Henrique Monteiro Borba
Título: Modular Reasoning for Software Product Lines with Emergent Feature Interfaces
Data: 07/03/2014
Hora/Local: 10h - Anfiteatro
Banca Examinadora:
Prof. Kiev Santos da Gama(UFPE / CIn)
Prof. Márcio de Medeiros Ribeiro(UFAL / Instituto de Computação)
Prof. Paulo Henrique Monteiro Borba(UFPE / CIn)
 
RESUMO:
 
A Software Product Line (SPL) represents a family of software systems developed from reusable artifacts, which contain variation points. Artifacts correspond to components, classes, property files, among others that are composed in different manners to specify or build specific products. Features in turn hold the variability of a SPL. One widespread technique to implement features of a SPL is preprocessors, but it obfuscates the source code reducing comprehensibility, making maintenance error-prone and costly.
To minimize this problem, researchers recently proposed Emergent Interfaces (EI) to capture dependencies between part of a feature that a programmer is maintaining and the others. Yet, they do not provide an overall feature interface considering all parts in an integrated way. As a consequence, a programmer still might introduce bugs in the software product line since she cannot safely understand and reason about one complete feature before changing the code.
To address that, we propose the concept of Emergent Feature Interfaces (EFI), an evolution of Emergent Interfaces, that consists of inferring feature dependencies by looking at a feature as a whole. EFI provide to the developer to see the dependencies of a given feature through a global interface, which considers all parts of a feature in an integrated way. That way, EFI help to the developer achieves independent feature comprehensibility and, consequently, she can change a feature code aware of its dependencies, avoiding breaking the relations among features. We adapted the Emergo to implement our proposal and we evaluate our proposal in terms of size and precision comparing with EI by using five 
preprocessor-based systems. The results of our study suggest the feasibility and usefulness of the proposed approach.
Besides, we observe that modern software product lines are large and multi-language. This means that capturing feature dependencies for these types of systems can be even harder. With this in mind, we propose a cross-language automated analysis for improving the maintainability of multi-language software product lines. Our approach uses the idea of emergent feature interfaces to capture feature dependencies out of a multitude of artifacts written in different languages. We developed an open-source tool called GSPAnalyzer to implement our technique. To evaluate the proposed approach, we ran a case study with a multi-language product line named RGMS and the results brought preliminary evidence that exists feature dependencies between heterogeneous artifacts and these dependencies can be easily broken if a developer changes either relation end.
Palavras-chave: Software Product Lines, Preprocessors, Feature Dependencies, Multi-language Software Systems, Cross-Language Dependencies.
 
 
Título em português: Entendimento Modular para Linhas de Produto de Software com Interfaces de Features Emergentes 
 
 
Resumo: Uma Linha de Produto de Software (LPS) consiste em uma família de sistemas que compartilham um conjunto gerenciado de funcionalidades e são desenvolvidos a partir de um núcleo comum de artefatos. Esses artefatos correspondem a componentes, classes, arquivos de propriedade, e outros tipos de arquivos que são compostos de diversas formas para especificar ou construir produtos específicos. As features detêm os pontos variáveis da LPS. Elas são frequentemente implementadas usando pré-processadores. Embora os pré-processadores sejam largamente utilizados, eles poluem o código prejudicando a compreensão do mesmo, tornando a manutenção propensa a erros e, consequentemente, mais cara.
Para minimizar esse problema, pesquisadores propuseram Interfaces Emergentes (Emergent Interfaces) que estabelece contratos entre os elementos de código que compõem as features com a finalidade de capturar suas dependências. Porém, eles não oferecem uma interface de feature global que considere todos os fragmentos de uma determinada feature. Como resultado, o desenvolvedor pode introduzir erros na LPS visto que o mesmo não pode entender e raciocinar sobre uma dada feature por completo.
Para solucionar isto, nós propomos o conceito de Interfaces de Features Emergentes (Emergent Feature Interfaces) que infere as dependências entre features considerando todos os fragmentos de cada feature. Desta forma, nossa abordagem ajuda o desenvolvedor a compreender uma feature de forma independente visto que ele está ciente das dependências da feature como o todo, evitando assim a quebra dessas dependências. Para implementar a nossa abordagem, nós adaptamos o Emergo. Posteriormente, avaliamos nossa proposta usando cinco LPSs comparando-a com Interfaces Emergentes. Os resultados preliminares sugerem que Interfaces de Features Emergentes são viáveis e úteis para manter LPSs.
Além disso, nós observamos que as LPSs atuais são multilinguagens e complexas. Isto significa que capturar dependências entre features torna-se ainda mais complicado. Com isso em mente, propomos uma análise automática que computa dependências entre features a partir de uma gama de artefatos escritos em diferentes linguagens de programação. Assim sendo, usamos a ideia de Interfaces de Features Emergentes para melhorar a mantenabilidade de LPSs multilinguagens. Nós também desenvolvemos uma ferramenta protótipo e avaliamos a nossa análise através de um estudo de caso. As descobertas iniciais mostram que existem dependências entre features que estão espalhadas nos diferentes artefatos e que as mesmas podem ser facilmente quebradas caso um desenvolvedor altere alguma extremidade da dependência.
 
Palavras-chave: Linhas de Produtos de Software, Pré-processadores, Dependências de feature, Sistemas de software multilinguagens, Dependências entre linguagens. 
  • © Centro de Informática UFPE - Todos os direitos reservados
    Tel +55 81 2126.8430 - Cidade Universitária - 50740-560 - Recife/PE
Plano4 Consultoria Web