ON THE RELATIONSHIP BETWEEN FEATURE DEPENDENCIES AND CHANGE PROPAGATION

PONTIFÍCIA UNIVERSIDADE CATÓLICA DO RIO DE JANEIRO === COORDENAÇÃO DE APERFEIÇOAMENTO DO PESSOAL DE ENSINO SUPERIOR === CONSELHO NACIONAL DE DESENVOLVIMENTO CIENTÍFICO E TECNOLÓGICO === PROGRAMA DE EXCELENCIA ACADEMICA === PROGRAMA DE DOUTORADO SANDUÍCHE NO EXTERIOR === Características são abstraçõe...

Full description

Bibliographic Details
Main Author: BRUNO BARBIERI DE PONTES CAFEO
Other Authors: ALESSANDRO FABRICIO GARCIA
Language:English
Published: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO RIO DE JANEIRO 2015
Online Access:http://www.maxwell.vrac.puc-rio.br/Busca_etds.php?strSecao=resultado&nrSeq=26957@1
http://www.maxwell.vrac.puc-rio.br/Busca_etds.php?strSecao=resultado&nrSeq=26957@2
Description
Summary:PONTIFÍCIA UNIVERSIDADE CATÓLICA DO RIO DE JANEIRO === COORDENAÇÃO DE APERFEIÇOAMENTO DO PESSOAL DE ENSINO SUPERIOR === CONSELHO NACIONAL DE DESENVOLVIMENTO CIENTÍFICO E TECNOLÓGICO === PROGRAMA DE EXCELENCIA ACADEMICA === PROGRAMA DE DOUTORADO SANDUÍCHE NO EXTERIOR === Características são abstrações-chave para o desenvolvimento e manutenção de linhas de produto de software. Um desafio encarado na manutenção de linhas de produto de software é o entendimento das dependências que existem entre características. No código-fonte, uma dependência entre características ocorre sempre que um elemento de programa dentro dos limites de implementação de uma característica depende de elementos externos a esta característica. Exemplos são atributos ou métodos definidos na implementação de uma característica, mas utilizados no código responsável pela implementação de outra característica. A medida que desenvolvedores modificam o código-fonte associado com uma característica, eles devem garantir que outras características são consistentemente atualizadas com as novas mudanças – as chamadas propagações de mudanças. No entanto, a apropriada propagação de mudanças não é uma tarefa trivial, pois características geralmente não são modularizadas no código-fonte. Dessa forma, dado uma mudança em uma determinada característica, é desafiador revelar quais (partes de) outras características também devem ser alteradas. Propagação de mudanças se torna, portanto, um aspecto central e não-trivial da manutenção de linhas de produto de software. Desenvolvedores podem negligenciar partes importantes de código que deveriam ser revisadas ou alteradas, portanto não propagando mudanças de forma completa. Por outro lado, desenvolvedores também podem analisar de forma desnecessária partes de código que não são relevantes para a tarefa de manutenção de características, portanto aumentando o esforço de manutenção ou até propagando mudanças de forma indevida. A criação de um bom modelo mental da estrutura das dependências de características se torna essencial para ganhar compreensão sobre o complexo relacionamento de características com o objetivo de propagar mudanças de forma apropriada. Infelizmente, não existe entendimento no estado-da-arte sobre propriedades estruturais de dependências de características que afetam a propagação de mudanças. Este entendimento ainda não é possível, pois: (i) não existe meios de caracterização e quantificação para propriedades estruturais de dependências de características, e (ii) não existem investigações empíricas sobre a influência dessas propriedades na propagação de mudanças. Nesse contexto, esta tese apresenta três contribuições para superar os problemas acima mencionados. Primeiro, foi desenvolvido um estudo para entender a propagação de mudanças na presença de dependência de características em várias linhas de produto industriais. Segundo, é proposto um arcabouço de medidas com o propósito de quantificar propriedades estruturais de dependências de características. Nesse contexto, também foi desenvolvido um estudo revelando que métricas convencionais tipicamente aplicadas em trabalhos de linha de produto, tais como a métrica de acoplamento, não são indicadores efetivos da propagação de mudanças em linhas de produto de software. As métricas propostas nesta tese superaram consistentemente as métricas convencionais estudadas. Terceiro, esta tese propõe um método para auxiliar a propagação de mudanças encarando informações sobre a organização de dependência de características encarando-as como um problema de agrupamento. Foi avaliado se a organização de informações proposta nesta tese tem potencial para auxiliar desenvolvedores a propagar mudanças em linhas de produto de software. === Features are the key abstraction to develop and maintain software product lines. A challenge faced in the maintenance of product lines is the understanding of the dependencies that exist between features. In the source code, a feature dependency occurs whenever program elements within the boundaries of a feature s implementation depend on elements external to that feature. Examples are either attributes or methods defined in the realisation of a feature, but used in the code realising other features. As developers modify the source code associated with a feature, they must ensure that other features are consistently updated with the new changes – the so-called change propagation. However, appropriate change propagation is far from being trivial as features are often not modularised in the source code. In this way, given a change in a certain feature, it is challenging to reveal which (part of) other features should also change. Change propagation becomes, therefore, a central and non-trivial aspect of software product-line maintenance. Developers may overlook important parts of the code that should be revised or changed, thus not fully propagating changes. Conversely, they may also unnecessarily analyse parts that are not relevant to the feature-maintenance task at hand, thereby increasing the maintenance effort or even mis-propagating changes. The creation of a good mental model based on the structure of feature dependencies becomes essential for gaining insight into the intricate relationship between features in order to properly propagate changes. Unfortunately, there is no understanding in the state of the art about structural properties of feature dependencies that affect change propagation. This understanding is not yet possible as: (i) there is no conceptual characterisation and quantification means for structural properties of feature dependency, and (ii) there is no empirical investigation on the influence of these properties on change propagation. In this context, this thesis presents three contributions to overcome the aforementioned problems. First, we develop a study to understand change propagation in presence of feature dependencies in several industry-strength product lines. Second, we propose a measurement framework intended to quantify structural properties of feature dependencies. We also develop a study revealing that conventional metrics typically used in previous research, such as coupling metrics, are not effective indicators of change propagation in software product lines. Our proposed metrics consistently outperformed conventional metrics. Third, we also propose a method to support change propagation by facing the organisation of feature dependency information as a clustering problem. We evaluate if our proposed organisation has potential to help developers to propagate changes in software product lines.