by Tom Mens and Jacques Klein

As chair and member of the ERCIM Working Group on Software Evolution, we are honoured to act as guest editors for this issue of ERCIM News with the special theme of Evolving Software. The importance of software in our information society cannot be underestimated: just imagine what would happen if all software systems around us failed. There would be no television, no radio, no Internet, no financial transactions and e-commerce, no energy production, huge problems in public transport, and the list goes on.

by Michele Lanza

In order to analyze and understand large, complex, and evolving software systems, we take a holistic stance by combining diverse sources of information.

by Pamela Farries and Ajitha Rajan

Europe relies on the availability and flawless functioning of distributed infrastructure services such as electricity, water, communication, transportation and environmental management, which are all increasingly controlled by software. Currently, however, the potential for innovation is limited owing to the inherent risks and costs of upgrades. For example, incompatibilities when simultaneously running old and new versions of control software can result in major service outages. Similarly, fast moving technology, such as sensors, could enable advances in safety critical applications such as aerospace; however revalidating avionics software to introduce new niche functionality is prohibitively expensive. The PINCETTE project has been set up specifically to ensure safe infrastructure upgrades and enable rapid product development by providing solutions for continuous validation. Certainty in the safety of upgrades will allow communities to confidently apply and leverage the efficiency gains and advantages of upgrades.

by Mark Hills, Paul Klint, Tijs van der Storm and Jurgen Vinju

Real problems in software evolution render impossible a fixed, one-size-fits-all approach, and these problems are usually solved by gluing together various tools and languages. Such ad-hoc integration is cumbersome and costly. With the Rascal meta-programming language the Software Analysis and Transformation research group at CWI explores whether it is feasible to develop an approach that offers all necessary meta-programming and visualization techniques in a completely integrated language environment. We have applied Rascal with success in constructing domain specific languages and experimental refactoring and visualization tools.

by Zdeněk Troníček

Our work focuses on the automatic update of Java code in response to changes in library interfaces. Our approach is based on refactoring rules that are specified by the library author and later applied by a developer on client code. This approach turns out to be very successful in practice. Although many researchers have focused on the problem of automatic migration to a new API and several approaches to the problem have been suggested, there is currently no widely used tool for automatic migration and research is still active in this area.

by Muhammad Usman Bhatti, Nicolas Anquetil and Stéphane Ducasse

Moose is an open-source platform for the assessment of software and data analysis. Moose provides several engines to build tools, analyses and visualizations. One of Moose’s strengths is the possibility to rapidly build domain-specific analysis tools.

by Mircea Lungu and Oscar Nierstrasz

As a complex software system evolves, its architecture typically degrades, and thus it becomes progressively harder to understand and maintain. Softwarenaut is an interactive and collaborative tool that helps developers recover and consequently improve the architecture of such systems by offering mechanisms to represent, filter, query and manipulate architectural views of the system under analysis. Softwarenaut is an open and extensible tool that is part of the Moose software analysis platform, which is used for numerous academic and industrial projects related to software evolution.

by Francesca Arcelli Fontana, Marco Zanoni and Bartosz Walter and Paweł Martenka

Code smells are an example of a pattern-oriented trend applied to software evolution. Due to their abstract and informal nature, the detection process requires support from lower-level indicators like individual metric values, history of code changes, knowledge about program structure or results of program execution. We examine how the presence of program structures, called micro patterns, is correlated with the code smells and how micro patterns can be exploited for the purpose of smell detection.

by Davide Di Ruscio, Patrizio Pelliccione and Alfonso Pierantonio

EVOSS, a model-driven approach that manages the upgrade of Free and Open Source Software (FOSS) systems, is presented. The approach simulates upgrades so that failures can be predicted before they affect the operating system. Both fine-grained static aspects (eg, configuration incoherencies) and dynamic aspects (eg, the execution of configuration scripts) are taken into account, improving over the state of the art of upgrade planners. Effectiveness is validated by instantiations with widely-used FOSS distributions.

by Aakash Ahmad and Claus Pahl

Although architecture-centric maintenance and evolution is useful for adjusting software structure and behaviour at higher abstractions, this approach lacks the potential for systematic change reuse. The Pat-Evol project focuses on managing a constructive architecture-based evolution process for service software. It enables continuous automated identification of evolution patterns from the architecture change log with support for pattern specification and instantiation provided by a pattern library. A pattern library acts as a repository to enable pattern-driven change execution, supporting the notion of an off-the-shelf architecture evolution.

by Alexander Serebrenik, Wouter Poncin and Mark van den Brand

Modern software development commonly makes use of a multitude of software repositories. How can these help us to understand the on-going development process? Researchers of Eindhoven University of Technology design new methods revealing how software has been developed.

by Carlos E. Cuesta, M. Pilar Romay and Elena Navarro

At the architecture level, the application of adaptation strategies often implies dynamic reconfiguration and, ultimately, system evolution. Hence adaptation can be considered as a low-level version of architectural evolution; generic dynamic techniques, such as meta-level superimposition, can effectively be used for both. This approach can be translated to several different contexts, and we describe the specific case of service-oriented architectures.

by Xavier Blanc and Jean-Rémy Falleri

VPraxis is a tool to support the evolution of Internet applications. It automates the construction of a software application’s history together with the histories of used resources. Comparing these histories enables change impact analysis and eases evolution management.

by Fabio Paternò, Christian Sisti and Lucio Davide Spano

The current evolution of pervasive technologies means that traditional access modalities are not always suitable for a particular service and, consequently, need to be reassessed. There are many scenarios in which the user is unable to use a screen or keyboard to interact with a given service. In such cases, a vocal interaction can be useful, but this is only supported by a few application providers. We propose a solution to adapt existing Service Front Ends in order to support vocal interaction, which is based on reverse engineering, adaptation heuristics and automatic generation of the vocal implementation.

by Javier Cano, Christophe Joubert, Miguel Llácer and Miguel Montesinos

One of the main challenges of software evolution is to provide software applications with a maintenance environment with maximum time efficiency at minimum cost and the strongest accuracy. This includes managerial aspects of software evolution, like effort estimation, prediction models, and software processes. In this work, we focused on formative evaluation processes to give early feedback on the evolution of development metrics, global quantitative goals, non-functional evaluation, compliance with user requirements, and pilot applications results. Our results were applied to a monitoring control platform for remote software maintenance.

by Carlos Parra, Clément Quinton and Laurence Duchien

The design of a mobile application is a tedious task owing to its intrinsic variability. Software designers must take into account in their development process the versatility of available platforms (eg Android, iPhone, tablets). The variety of existing devices and their divergences (eg frontal camera, GPS) introduce a further layer of complexity to the development process. In addition, at runtime, many potential situations have to be considered (eg limited connectivity, hardware heterogeneity, changes of user preference, etc.). Such software systems are seen increasingly as evolutive systems.

by Serge Demeyer, Ahmed Lamkanfi and Quinten Soetens

The production of reliable software is an important area of investigation within the software engineering community. For many years, reliable software was seen as software "without bugs". Today however, reliable software has come to mean “easy to adapt” because of the constant pressure to change.

by Maurice ter Beek, Henry Muccini and Patrizio Pelliccione

Researchers from the Software Engineering and Architecture group, University of L’Aquila, together with the Formal Methods and Tools group of ISTI-CNR are developing a novel approach that extends and adapts assume-guarantee reasoning to evolving SPLs in order to guarantee resilience against changes in the product environment. The proposal is to selectively verify and test assume-guarantee properties over only the components affected by the changes.

Alexander Serebrenik, Mark van den Brand and Bogdan Vasilescu

Understanding software maintainability often involves calculation of metric values at a micro-level of methods and classes. Building on these micro-level measurements and complementary to them, econometric techniques help to provide a more precise understanding of the maintainability of software systems in general.

by Silvia Abrahão, Javier González-Huerta, Emilio Insfran and Isidro Ramos

New requirements and technology changes lead to continuous changes of the assets comprising a software product line. Since the product line represents a large number of potential products (or already deployed products) in a given domain, managing these changes becomes a key issue when dealing with evolution. We present a framework to support the development and evolution of high-quality software product lines. The framework is based on several interrelated models or system views (eg, functionality, variability, quality) and a production plan defined by model transformations that generate a software system that meets both functional and quality requirements. We used our framework to develop a software system for the automotive domain.

by Eric Bouwers and Arie van Deursen

Keeping the implementation of a software system in-line with the original design of the system is major challenge in developing and maintaining a system. One way of dealing with this issue is to use metrics to quantify important aspects of the architecture of a system and track the evolution of these metrics over time. We are working towards extending the set of available architecture metrics by developing and validating new metrics aimed at quantifying specific quality characteristics of implemented software architectures.

by Jakob Axelsson

Most industrial software-intensive systems have a very long life span, and undergo many changes after their initial conception. To ensure that they maintain the desired system-level properties, it is essential that their architecture is also updated to reflect the added functionality. To this end, we have investigated how Evolutionary Architecting should be carried out in order to provide a strong basis for a system, not only at conception but throughout its life. The results are concrete and based on empirical findings, and include both a new state-of-the-art process description and a light-weight maturity evaluation method.

by Nadia Elouali, Daniel Liabeuf, Xavier Le Pallec, José Rouillard and Jean-Claude Tarby

In the MOANO project we aim to create an end-user modelling environment to design and generate multimodal mobile Geographic Information Systems (GIS) capable of evolving over time. Here we discuss different challenges and suggestions to address them using a Model-Driven Engineering (MDE) approach.

by Amel Bennaceur, Paola Inverardi, Valérie Issarny and Romina Spalazzese

Today’s software systems are increasingly networked and are further characterized by ever-changing functionalities provided to/required from the networked environment because of the wide variety of dynamically available heterogeneous applications. To manage evolution in this context, the CONNECT project pursues the automated synthesis of CONNECTors enabling continuous composition and interoperability of applications.

by Alexandre Métrailler and Thibault Estier

This research proposes a framework (named EVOLIS) to study information systems (IS) evolution. The benefits of the EVOLIS framework are twofold. First, it gives managers a tool for assessing the impact of a change from either the user or the business/IS perspective. This can be used to design a strategy for IS evolution. Second, the repeated use of the EVOLIS framework reveals specific evolution patterns.

by Paul Grace, Gordon S. Blair and Valerie Issarny

We are moving towards a world in which everything is connected. Yet such a goal highlights the deficiencies of today’s systems platforms in achieving a fundamental property of distributed systems, namely interoperability. Faced with extreme heterogeneity of computational devices and networks, how can we ensure that every system can talk to every other system?

by Dirk Reith and Karl Kirschner

Computational chemistry began with the birth of computers in the mid 1900s, and its growth has been directly coupled to the technological advances made in computer science and high-performance computing. A popular goal within the field, be it Newtonian or quantum based methods, is the accurate modelling of physical forces and energetics through mathematics and algorithm design. Through reliable modelling of the underlying forces, molecular simulations frequently provide atomistic insights into macroscopic experimental observations.

by Antonia Bertolino, Antonello Calabrò, Maik Merten and Bernhard Steffen

Interoperability among the multitude of heterogeneous and evolving networked systems made available as black boxes remains a tough challenge. Learning technology is increasingly employed to extract behavioural models that form the basis for systems of systems integration. However, as networked systems evolve, their learned models need to evolve as well. This can be achieved by collecting actual interactions via monitoring and using these observations to continuously refine the learned behavioural models and, in turn, the overall system. This approach is part of the overall CONNECT approach.

by Carlos Noguera, Andy Kellens and Theo D'Hondt

For more than 20 years, the Belgian Science Policy has been promoting the Interuniversity Attraction Poles (IAP) programme, with the aim of providing an incentive for the formation of excellent research networks. As a means to achieve this goal, the IAP programme focuses on fostering collaboration between research groups, rather than on research results. It is within this programme that five years ago the “Fundamental Issues in Software Engineering: Modelling, Verification and Evolution of Software” (MoVES) project was founded. We report here on how this project was able to both advance the state-of-the-art in the domain of software evolution, and form a cohesive national research network.

Next issue: April 2021
Special theme:
"Brain-Inspired Computing"
Call for the next issue
Get the latest issue to your desktop
RSS Feed