7 views
Seen by:1 views
Seen by:Towards a software evolution benchmark
by Tom Mens
Authors: Serge Demeyer, Tom Mens, Michel Wermelinger.
Published in IWPSE 2011 international workshop on principles of software evolution.
Case-studies are extremely popular in rapidly evolving research disciplines such as software engineering because they... more Case-studies are extremely popular in rapidly evolving research disciplines such as software engineering because they allow for a quick but fair assessment of new techniques. Unfortunately, a proper experimental set-up is rarely the case: all too often case- studies are based on a single small toy-example chosen to favour the technique under study. Such lack of scientific rigor prevents fair evaluation and has serious consequences for the credibility of our field. In this paper, we propose to use a representative set of cases as benchmarks for comparing various techniques dealing with software evolution. We hope that this proposal will launch a consensus building process that eventually must lead to a scientifically sound validation method for researchers investigating reverse- and re-engineering techniques.
Automated support for framework-based software
by Tom Mens
PhD thesis of Tom Tourwé. Advisors: Theo D'Hondt, Tom Mens.
Challenges in software evolution
by Tom Mens
Authors: Tom Mens, Michel Wermelinger, Stéphane Ducasse, Serge Demeyer, Robert Hirschfeld, Mehdi Jazayeri
Today’s information technology society increasingly relies on software at all levels. Nevertheless, software quality... more Today’s information technology society increasingly relies on software at all levels. Nevertheless, software quality generally continues to fall short of expectations, and software systems continue to suffer from symptoms of aging as they are adapted to changing requirements and environments. The only way to overcome or avoid the negative effects of software aging is by placing change and evolution in the center of the software development process. In this article we describe what we believe to be some of the most important research challenges in software evolution. The goal of this document is to provide novel research directions in the software evolution domain.
Introduction and roadmap: History and challenges of software evolution
by Tom Mens
Chapter 1 of book "Software Evolution", co-edited by Tom Mens and Serge Demeyer.
(c) Springer, 2008
The ability to evolve software rapidly and reliably is a major challenge for software engineering. In this... more The ability to evolve software rapidly and reliably is a major challenge for software engineering. In this introductory chapter we start with a historic overview of the research domain of software evolution. Next, we briefly introduce the important research themes in software evolution, and identify research challenges for the years to come. Finally, we provide a roadmap of the topics treated in this book, and explain how the various chapters are related.
On the use of graph transformations for model refactoring
by Tom Mens
2006. Invited lecture at GTTSE 2005 summer school
Model-driven software engineering promotes the use of models and transformations as primary artifacts. Several... more Model-driven software engineering promotes the use of models and transformations as primary artifacts. Several formalisms can be used for the specification of model transformations. We propose to represent models as graphs, and model transformations as graph transformations. In particular, we focus on the activity of model refactoring, and show how graph transformation theory can provide formal support for this activity. We also show how such support can be implemented in state-of-the-art graph transformation tools such as AGG and Fujaba, and provide two concrete experiments. Critical pair analysis in AGG enables the analysis of dependencies between model refactorings. The round-trip engineering facility of Fujaba enables the automatic generation of code for model refactorings.
Conditional Graph Rewriting as a Domain-Independent Formalism for Software Evolution
by Tom Mens
Published at AGTIVE 1999
This paper presents a formal approach for managing unanticipated software evolution. Labelled typed nested graphs are... more This paper presents a formal approach for managing unanticipated software evolution. Labelled typed nested graphs are used to represent arbitrarily complex software artifacts, and conditional graph rewriting is used for managing evolution of these artifacts. More specifically, we detect structural and behavioural inconsistencies when merging parallel evolutions of the same software artifact. The approach is domain-independent, in the sense that it can be customised to many different domains, such as software architectures, UML analysis and design models, and software code.
A Declarative Evolution Framework for Object-Oriented Design Patterns
by Tom Mens
Published at ICSM 2001, co-authored with Tom Tourwé
Object-oriented design patterns and high-level refactorings are popular means of implementing and evolving large... more Object-oriented design patterns and high-level refactorings are popular means of implementing and evolving large object-oriented software systems. Unfortunately, these techniques are inadequately supported at implementation level by current-day software development environments. To alleviate this problem, we propose to use the promising technique of declarative metaprogramming. It offers a tight, yet flexible, symbiosis between a base language and a metalevel declarative reasoning engine. It provides a uniform and language-independent way to specify design patterns and transformations declaratively, to instantiate patterns and generate code for them, and to deal with the evolution of these pattern instances. Providing support for evolution of a software system in terms of the design pattern instances it uses is the main emphasis of this paper.
17 views
Seen by:Maintaining software through intentional source-code views
by Tom Mens
Authors: Kim Mens, Tom Mens, Michel Wermelinger. Proceedings of ACM Software Engineering and Knowledge Engineering Conference (SEKE 2002).
(c) ACM 2002
Maintaining the source code of large software systems is hard. One underlying cause is that existing modularisation... more
Maintaining the source code of large software systems is hard. One underlying cause is that existing modularisation mechanisms are inadequate to handle crosscutting concerns. We propose intentional source-code views as an intuitive and lightweight means of modelling such concerns. They increase our ability to understand, modularise and browse the source code by grouping together source-code entities that address the same concern. They facilitate software development and evolution, because alternative descriptions of the same intentional view can be checked for consistency and relations among intentional views can be defined and verified. Finally, they enable us to specify knowledge developers have about source code that is not captured by traditional program documentation mechanisms.
Our intentional view model is implemented in a logic metaprogramming language that can reason about and manipulate object-oriented source code directly. The proposed model has been validated on the evolution of a medium-sized object-oriented application in Smalltalk, and a prototype tool has been implemented.
Ontology Evolution: State of the Art and Future Directions
by Tom Mens
Authors: Pieter De Leenheer, Tom Mens.
Chapter 5 of book Ontology Management: Semantic Web, Semantic Web Services, and Business Applications Edited by:Martin Hepp, Pieter De Leenheer, Aldo de Moor, York Sure. 131-176 Springer 2007.
The research area of ontology engineering seems to have reached a certain level of maturity, considering the vast... more The research area of ontology engineering seems to have reached a certain level of maturity, considering the vast amount of contemporary methods and tools for formalising and applying knowledge representation models. However, there is still little understanding of, and support for, the evolutionary aspects of ontologies. This is particularly crucial in distributed and collaborative settings such as the Semantic Web, where ontologies naturally co-evolve with their communities of use. For managing the evolution of single ontologies, established techniques from data schema evolution have been successfully adopted, and consensus on a general ontology evolution process model seems to emerge. Much less explored, however, is the problem of evolution of interorganisational ontologies. In this “complex” and dynamic setting, a collaborative change process model requires more powerful engineering, argumentation and negotiation methodologies, complemented by support for context dependency management.. It turns out that much can be learned from other domains where formal artefacts are being collaboratively engineered. In particular, the field of system engineering offers a wealth of techniques and tools for versioning, merging and evolving software artefacts, and many of these techniques can be reused in an ontology engineering setting. Based on this insight, this chapter gives a unified overview of the wide variety of models and mechanisms that can be used to support all of the above aspects of ontology evolution. The key remaining challenge is to construct a single framework, based on these mechanisms, which can be tailored for the needs of a particular environment.
Measuring Software Flexibility
by Amnon Eden
Co-authored with Tom Mens. IEE Software Vol. 153, No. 3 (Jun. 2006), pp. 113–126. London, UK: The Institution of Engineering and Technology
Flexibility has been recognized as a desirable quality of software since the earliest days of software engineering.... more
Flexibility has been recognized as a desirable quality of software since the earliest days of software engineering. Classic and contemporary software design literature suggest that particular implementations are more flexible than others but stop short of suggesting objective criteria for quantifying such claims. To establish intuitions on flexibility in precise terms, we introduce the notion of evolution complexity and demonstrate how evolution cost metrics can be used to measure and compare the flexibility of—
* programming paradigms: object-oriented and procedural programs;
* architectural styles: Shared data, Pipes and Filters, and Abstract Data Type;
* design patterns: Visitor and Abstract Factory.
We also demonstrate how evolution complexity can be used to choose the most flexible design policy. We conclude with experimental results corroborating our predictions.
Key terms: Software evolution, software flexibility, science of software design, software metrics.
42 views
Seen by:On the Interplay between Structural and Logical Dependencies in Open Source Software
Oliva, Gustavo Ansaldi; Gerosa, Marco Aurelio; , "On the Interplay between Structural and Logical Dependencies in Open-Source Software," Software Engineering (SBES), 2011 25th Brazilian Symposium on , vol., no., pp.144-153, 28-30 Sept. 2011
doi: 10.1109/SBES.2011.39
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=6065158&isnumb
Structural dependencies have long been explored in the context of software quality. More recently, software evolution... more Structural dependencies have long been explored in the context of software quality. More recently, software evolution researchers have investigated logical dependencies between artifacts to assess failure-proneness, detect design issues, infer code decay, and predict likely changes. However, the interplay between these two kinds of dependencies is still obscure. By mining 150 thousand commits from the Apache Software Foundation repository and employing object-oriented metrics reference values, we concluded that 91% of all established logical dependencies involve non-structurally related artifacts. Furthermore, we found some evidence that structural dependencies do not lead to logical dependencies in most situations. These results suggest that dependency management methods and tools should rely on both kinds of dependencies, since they represent different dimensions of software evolvability.
Towards a Classification of Logical Dependencies Origins: A Case Study
Oliva, G.A., Santana, F.W.S., Gerosa, M.A. & de Souza, C.R.B. "Towards a classification of logical dependencies origins: a case study", Proceedings of the 12th International Workshop on Principles of Software Evolution and the 7th annual ERCIM Workshop on Software Evolution, IWPSE-EVOL '11, 2011, Szeged, Hungary, pp 31--40.
Logical dependencies are implicit relationships established between software artifacts that have evolved together.... more Logical dependencies are implicit relationships established between software artifacts that have evolved together. Software engineering researchers have investigated this kind of dependency to assess fault-proneness, detect design issues, infer code decay, and predict likely changes in code. Despite the acknowledged relation between logical dependencies and software quality, the nature of the logical dependencies is unknown in the literature. Most authors hypothesize about their origins, but no empirical study has been conducted to investigate the real nature of these dependencies. In this paper, we investigated the origins of logical dependencies by means of a case study involving a Java FLOSS project. We mined the project repository, filtered out irrelevant data based on statistical analyses, and performed a manual inspection of the logical dependencies to identify their origins using information from the revision comments, code diffs, and informal interviews held with the developers of the analyzed project. Preliminary results showed that logical dependencies involved files that changed together for a series of different reasons, which ranged from changing software license to refactoring classes that belonged to a same semantic class.
19 views
Seen by:Towards a Classification of Logical Dependencies Origins: A Case Study
Oliva, G.A., Santana, F.W.S., Gerosa, M.A. & de Souza, C.R.B. "Towards a classification of logical dependencies origins: a case study", Proceedings of the 12th International Workshop on Principles of Software Evolution and the 7th annual ERCIM Workshop on Software Evolution, IWPSE-EVOL '11, 2011, Szeged, Hungary, pp 31--40.
Logical dependencies are implicit relationships established between software artifacts that have evolved together.... more Logical dependencies are implicit relationships established between software artifacts that have evolved together. Software engineering researchers have investigated this kind of dependency to assess fault-proneness, detect design issues, infer code decay, and predict likely changes in code. Despite the acknowledged relation between logical dependencies and software quality, the nature of the logical dependencies is unknown in the literature. Most authors hypothesize about their origins, but no empirical study has been conducted to investigate the real nature of these dependencies. In this paper, we investigated the origins of logical dependencies by means of a case study involving a Java FLOSS project. We mined the project repository, filtered out irrelevant data based on statistical analyses, and performed a manual inspection of the logical dependencies to identify their origins using information from the revision comments, code diffs, and informal interviews held with the developers of the analyzed project. Preliminary results showed that logical dependencies involved files that changed together for a series of different reasons, which ranged from changing software license to refactoring classes that belonged to a same semantic class.
Hierarchical Small-Worlds in Software Architecture
Sergi Valverde and Ricard V. Solé
Dynamics of Continuous Discrete and Impulsive Systems: Series B; Applications and Algorithms, 1-11
In this paper, we present a complex network approach to the study of software engineering. We have found universal... more In this paper, we present a complex network approach to the study of software engineering. We have found universal network patterns in a large collection of object-oriented (OO) software systems written in C++ and Java. All the systems analyzed here display the small-world behavior, that is, the average distance between any pair of classes is very small even when coupling is low and cohesion is high. In addition, the structure of OO software is a very heterogeneous network characterized by a degree distribution following a power-law with similar exponents. We have investigated the origin of these universal patterns. Our study suggests that some features of OO programing languages, like encapsulation, seem to be largely responsible for the small-world behavior. On the other hand, software heterogeneity is largely independent of the purpose and objectives of the particular system under study and appears to be related to a pattern of constrained growth. A number of software engineering topics may benefit from the present approach, including empirical software measurement and program comprehension.

