Back to search

FRINATEK-Fri prosj.st. mat.,naturv.,tek

Evidence-Based Recommendations to Guide the Evolution of Component-Based Product Families

Awarded: NOK 9.0 mill.

Many large-scale software-intensive systems are produced as instances of component-based product families, a known tactic to develop a portfolio of software products based on a collection of shared assets. However, sharing components between software products introduces dependencies that complicate maintenance and evolution: changes made in a component to address an issue in one product may have undesirable effects on other products in which the same component is used. Therefore, developers not only need to understand how a proposed change will impact the component and product at hand; they also need to understand how it affects the whole product family, including systems that are already deployed. Given that these systems contain thousands of components, it is no surprise that it is hard to reason about the impact on a single product, let alone on a complete product family. Conventional impact analysis techniques do not suffice for large-scale software-intensive systems and highly populated product families, and engineers need better support to conduct these tasks. In the evolveIT project, we have focused on devising automated techniques for the precise, scalable, analysis of the impact of proposed changes on component-based product families. Moreover, we created novel automated recommendation technology that builds on the newly developed change impact analysis methods to guide software engineers during evolution and help them determine a cost-effective evolution strategy. During the project, we have focused on three activities that are aimed at collecting the knowledge needed to support the evolution and testing of large-scale software-intensive systems: (1) Systematically reviewing the scientific literature on the analysis and evolution of heterogeneous (i.e. multi-language) software systems. Data has been extracted from the primary studies that matched our search, inclusion and appraisal criteria and we have distilled and synthesized the general trends, proven solutions and open research questions from the selected publications. A journal paper is under revision for an international scientific journal. (2) We have investigated the literature and existing approaches for software change impact analysis and focused on language-independent techniques that can be applied on heterogeneous systems. In particular we have investigated the phenomenon of so-called evolutionary coupling, which assumes that files which are regularly changed together throughout a systems development history have a semantic dependency. We have done a gap-analysis of approaches described in literature and the state of the practice and identified a major shortcoming in one of the most popular approaches which severely limits practical usability. We have devised an improved method that does not suffer from this shortcoming and are currently working on evaluating it's performance. A paper on the improved algorithm has been published at an international conference and three additional studies were conducted that respectively aim at combining evidence from various sources, and at investigating the impact of parameters to the algorithm and characteristics of the source system on recommendation quality. All three studies were published at international conferences and two extended papers are under revision for international scientific journals. In addition, we are working with two industrial partners to evaluate benefits and drawbacks of our approach in the context of large scale industrial software development. (3) We have continued our software quality assessment research in which we are investigating how so called code smells, a metaphor for suboptimal patterns in software implementations, are related to problems with software evolution and maintainability and how developers experience and are affect ed by code smells. The overall goal is to come to better software quality & maintainability assessment techniques that express the potential issues using terminology that is more meaningful to developers than the abstracted numbers that are typically used in the current state-of-the-art. To this end, we have organized several editions of the International Workshop on Pattern Promotion and Anti-pattern Prevention (PPAP) and the International Workshop on Technical Debt Analytics (TDA). The aim of these workshops is to bring together practitioners, researchers and students to discuss challenges and opportunities surrounding the (anti-)patterns in software evolution, and to develop a roadmap that aims to further their application. We expect to gain a common understanding of the positive and negative aspects related to pattern application and anti-pattern detection, and their relation to technical debt and technical wealth. In particular, researchers will gain insights on the factors that may prevent practitioners to adopt patterns and practitioners will benefit from a deeper understanding of the current state of the art.

Many large-scale software-intensive systems are produced as instances of component-based product families, a known tactic to develop a portfolio of software products based on a collection of shared assets. However, sharing components between software prod ucts introduces dependencies that complicate maintenance and evolution: changes made in a component to address an issue in one product may have undesirable effects on other products in which the same component is used. Therefore, developers not only need to understand how a proposed change will impact the component and product at hand; they also need to understand how it affects the whole product family, including systems that are already deployed. Given that these systems contain thousands of components, it is no surprise that it is hard to reason about the impact on a single product, let alone on a complete product family. Conventional impact analysis techniques do not suffice for large-scale software-intensive systems and highly populated product famil ies, and engineers need better support to conduct these tasks. The overall goal of this project is to conceive novel recommendation technology that supports engineers with the evolution of families of complex, safety-critical, software-intensive systems . These recommendations are based on concrete evidence gathered from the software artifacts that need to be evolved. We achieve this goal by means of three scientific break-throughs: (1) techniques to systematically reverse engineer abstract representati ons of software products and complete software product families from their development artifacts; (2) algorithms to conduct scaleable and precise change impact analysis (CIA) on representations of component-based product families; (3) novel recommendation technology that uses CIA results and constraint programming to find an evolution strategy that minimizes re-certification efforts.

Funding scheme:

FRINATEK-Fri prosj.st. mat.,naturv.,tek