Tom Mens obtained the degrees of Licentiate in Mathematics in 1992, Advanced Master in Computer Science in 1993 and PhD in Science in 1999 at the Vrije Universiteit Brussel. He was a teaching and research assistant at the Vrije Universiteit Brussel until September 1999. After that, he was a postdoctoral fellow of the Fund for Scientific Research – Flanders (FWO) for three years. In October 2003 he became a lecturer at the Université de Mons, where he founded and directs a research lab on software engineering. Since November 2008 he is full professor. His main research interest lies in the underlying foundations of, and tool support for, developing and evolving software. He published numerous peer-reviewed articles on this research topic in international journals and conferences. He has been co-organiser, program committee member and reviewer of numerous international symposia and workshops on software engineering. He has been involved in several interuniversity research projects and networks, and is founder and director of the ERCIM Working Group on Software Evolution. In 2008 he co-edited the Springer book “Software Evolution” with S. Demeyer. Address: Avenue du Champ de Mars 6 7000 Mons Belgium
During the last few years, software evolution research has explored new domains such as the study... more During the last few years, software evolution research has explored new domains such as the study of socio-technical aspects and collaboration between different individuals contributing to a software system, the use of search-based techniques and meta-heuristics, the mining of unstructured software repositories, the evolution of software requirements, and the dynamic adaptation of software systems at runtime. Also more and more attention is being paid to the evolution of collections of inter-related and inter-dependent software projects, be it in the form of web systems, software product families, software ecosystems, or systems of systems. This book presents insightful contributions on these and other domains currently being intensively explored, written by renowned researchers in the respective fields of software evolution. Each chapter presents the state of the art in a particular topic, as well as the current research, available tool support, and remaining challenges. The book is complemented by a glossary of important terms used in the community, a reference list of nearly 1,000 papers and books, and tips on additional resources that may be useful to the reader (reference books, journals, standards and major scientific events in the domain of software evolution, and datasets). This book is intended for all those interested in software engineering, and more particularly, software maintenance and evolution. Researchers and software practitioners alike will find in the contributed chapters an overview of the most recent findings, covering a broad spectrum of software evolution topics. In addition, it can also serve as the basis of graduate or postgraduate courses on e.g., software evolution, requirements engineering, model-driven software development or social informatics.
As chair and member of the ERCIM Working Group on Software Evolution, we are honoured to act as g... more 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. Software evolution will always remain inevitable due to a wide variety of factors: users that wish to have new features, bugs that need to be fixed, market pressure by competitors, technological changes in the environment with which the software needs to interact, performance issues that need to be dealt with, and so on. To accommodate these change requests, the software product needs to be changed and improved on a regular basis. In parallel to this, the software process itself is also subject to improvement, in order to produce new versions of the software more quickly and cost-effectively, without compromising software quality. This selection of papers in this special theme gives a clear overview of both traditional and emerging software engineering techniques, tools and approaches used by software evolution experts. Examples of such techniques are software/data analysis, data visualization, software metrics, software architecting, meta-programming, and more general paradigms like model-driven engineering (MDE) and software product line engineering (SPLE). These techniques provide a portfolio for tool developers to build dedicated software evolution tools. These tools are vital in order to better understand, manage and anticipate software evolution. We hope that these articles will convince you of the importance, relevance and challenges in software evolution research and practice in Europe. Enjoy!
Software has become omnipresent and vital in our information-based society, so all software produ... more Software has become omnipresent and vital in our information-based society, so all software producers should assume responsibility for its reliability. While "reliable" originally assumed implementations that were effective and mainly error-free, additional issues like adaptability and maintainability have gained equal importance recently. For example, the 2004 ACM/IEEE Software Engineering Curriculum Guidelines list software evolution as one of ten key areas of software engineering education.
Mens and Demeyer, both international authorities in the field of software evolution, together with the invited contributors, focus on novel trends in software evolution research and its relations with other emerging disciplines such as model-driven software engineering, service-oriented software development, and aspect-oriented software development. They do not restrict themselves to the evolution of source code but also address the evolution of other, equally important software artifacts such as databases and database schemas, design models, software architectures, and process management. The contributing authors provide broad overviews of related work, and they also contribute to a comprehensive glossary, a list of acronyms, and a list of books, journals, websites, standards and conferences that together represent the community’s body of knowledge.
Combining all these features, this book is the indispensable source for researchers and professionals looking for an introduction and comprehensive overview of the state of the art. In addition, it is an ideal basis for an advanced course on software evolution.
In class-based multiple inheritance systems, interpretations as different as duplication, sharing... more In class-based multiple inheritance systems, interpretations as different as duplication, sharing and specialization are associated with the single phenomenon of name collisions. To deal with those name collisions, various mechanisms have been proposed, but these solutions generally restrain software reusability which is considered to be one of the key features of OO systems. On top of this, most multiple inheritance systems do not completely cover all the different interpretations of name collisions. This paper shows that the entire ...
Abstract The principal aim of this paper is to apply the Taxonomy of Software Evolution, develope... more Abstract The principal aim of this paper is to apply the Taxonomy of Software Evolution, developed by Mens et. al [1], to position various software tools that support the activity of software refactoring as part of the evolutionary process. This taxonomy is based on the mechanisms of change and the factors that impact upon these mechanisms. The goal of this taxonomy is to position concrete tools and techniques within the domain of software evolution, so that it becomes easier to compare and combine them. In this paper, we apply ...
The semantic versioning (semver) policy is commonly accepted by open source package management sy... more The semantic versioning (semver) policy is commonly accepted by open source package management systems to inform whether new releases of software packages introduce possibly backward incompatible changes. Maintainers depending on such packages can use this information to avoid or reduce the risk of breaking changes in their own packages by specifying version constraints on their dependencies. Depending on the amount of control a package maintainer desires to have over her package dependencies, these constraints can range from very permissive to very restrictive. This article empirically compares semver compliance of four software packaging ecosystems (Cargo, npm, Packagist and Rubygems), and studies how this compliance evolves over time. We explore to what extent ecosystem-specific characteristics or policies influence the degree of compliance. We also propose an evaluation based on the "wisdom of the crowds" principle to help package maintainers decide which type of version constraints they should impose on their dependencies.
Abstract. We report on a prototype tool that automates the time-consuming and error-prone process... more Abstract. We report on a prototype tool that automates the time-consuming and error-prone process of software merging. Our tool is significantly more flexible than existing merge techniques, as it can detect syntactic, structural as well as semantic conflicts. It is implemented as a general framework for software evolution that can be customised to many different domains. Because of this, it can be used to support evolution of any kind of software artifact, independent of the target language or the considered phase in the software life ...
Abstract. In the advent of ubiquitous mobile systems in general and mobile code in particular, ne... more Abstract. In the advent of ubiquitous mobile systems in general and mobile code in particular, network latency is a critical factor due to the limited bandwidth in currentday networks. This paper investigates application streaming, a technique that exploits parallelism between loading and execution of code to reduce network latency. It allows applications to migrate from host to host without sacrificing execution time during the migration phase. We show that the performance of application streaming largely depends ...
In general, the goal of Advanced separation of Concerns (AsoC) technologies is to provide encapsu... more In general, the goal of Advanced separation of Concerns (AsoC) technologies is to provide encapsulations for all kinds of concerns, with a specific focus on cross-cutting concerns. An application is formed by composing these different concerns using some composition mechanism, specifically focused on concern integration and composition. In some cases, however, a specific concern needs to be decomposed in the resulting application. In this paper, we identify a need for decomposition in AsoC technologies, using a case dealing ...
Position paper, Programming Technology Lab, Vrije Universiteit Brussel, Mar 1, 2000
Current-day software abstractions architectures, coding conventions, design patterns, interaction... more Current-day software abstractions architectures, coding conventions, design patterns, interaction protocols are often not explicitly linked to the code. This lack of traceability causes problems like architectural drift and software erosion. In order to alleviate these problems, we propose to use virtual classifications to codify high-level software abstractions as logic predicates over the implementation. Besides being explicitly linked to the code, these classifications have the additional advantage that they allow us to declare ...
Developing intuitive interactive applications that are easy to maintain by developers is quite ch... more Developing intuitive interactive applications that are easy to maintain by developers is quite challenging, due to the complexity and the many technical aspects involved in such applications. In this article, we tackle the problem in two complementary ways. First, we propose a gestural interface to improve the user experience when interacting with applications that require the manipulation of 3D graphical scenes. Second, we reduce the complexity of developing such applications by modeling their executable behaviour using statecharts. We validate our approach by creating a modular and extensible Java framework for the development of interactive gesture-based applications. We developed a proof- of-concept application using this framework, that allows the user to construct and manipulate 3D scenes in OpenGL by using hand gestures only. These hand gestures are captured by the Kinect sensor, and translated into events and actions that are interpreted and executed by communicating statecharts that model the main behaviour of the interactive application.
When looking at existing tools that provide support for architectural software evolution, we can ... more When looking at existing tools that provide support for architectural software evolution, we can distinguish between support for run-time, pre-execution time and design- time evolution; between support for unconstrained and constrained evolution; and between proactive, reactive and retroactive support for evolution. Current tools that support architectural evolution can only deal with a subset of the above issues. Moreover, they typically
During the last few years, software evolution research has explored new domains such as the study... more During the last few years, software evolution research has explored new domains such as the study of socio-technical aspects and collaboration between different individuals contributing to a software system, the use of search-based techniques and meta-heuristics, the mining of unstructured software repositories, the evolution of software requirements, and the dynamic adaptation of software systems at runtime. Also more and more attention is being paid to the evolution of collections of inter-related and inter-dependent software projects, be it in the form of web systems, software product families, software ecosystems, or systems of systems. This book presents insightful contributions on these and other domains currently being intensively explored, written by renowned researchers in the respective fields of software evolution. Each chapter presents the state of the art in a particular topic, as well as the current research, available tool support, and remaining challenges. The book is complemented by a glossary of important terms used in the community, a reference list of nearly 1,000 papers and books, and tips on additional resources that may be useful to the reader (reference books, journals, standards and major scientific events in the domain of software evolution, and datasets). This book is intended for all those interested in software engineering, and more particularly, software maintenance and evolution. Researchers and software practitioners alike will find in the contributed chapters an overview of the most recent findings, covering a broad spectrum of software evolution topics. In addition, it can also serve as the basis of graduate or postgraduate courses on e.g., software evolution, requirements engineering, model-driven software development or social informatics.
As chair and member of the ERCIM Working Group on Software Evolution, we are honoured to act as g... more 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. Software evolution will always remain inevitable due to a wide variety of factors: users that wish to have new features, bugs that need to be fixed, market pressure by competitors, technological changes in the environment with which the software needs to interact, performance issues that need to be dealt with, and so on. To accommodate these change requests, the software product needs to be changed and improved on a regular basis. In parallel to this, the software process itself is also subject to improvement, in order to produce new versions of the software more quickly and cost-effectively, without compromising software quality. This selection of papers in this special theme gives a clear overview of both traditional and emerging software engineering techniques, tools and approaches used by software evolution experts. Examples of such techniques are software/data analysis, data visualization, software metrics, software architecting, meta-programming, and more general paradigms like model-driven engineering (MDE) and software product line engineering (SPLE). These techniques provide a portfolio for tool developers to build dedicated software evolution tools. These tools are vital in order to better understand, manage and anticipate software evolution. We hope that these articles will convince you of the importance, relevance and challenges in software evolution research and practice in Europe. Enjoy!
Software has become omnipresent and vital in our information-based society, so all software produ... more Software has become omnipresent and vital in our information-based society, so all software producers should assume responsibility for its reliability. While "reliable" originally assumed implementations that were effective and mainly error-free, additional issues like adaptability and maintainability have gained equal importance recently. For example, the 2004 ACM/IEEE Software Engineering Curriculum Guidelines list software evolution as one of ten key areas of software engineering education.
Mens and Demeyer, both international authorities in the field of software evolution, together with the invited contributors, focus on novel trends in software evolution research and its relations with other emerging disciplines such as model-driven software engineering, service-oriented software development, and aspect-oriented software development. They do not restrict themselves to the evolution of source code but also address the evolution of other, equally important software artifacts such as databases and database schemas, design models, software architectures, and process management. The contributing authors provide broad overviews of related work, and they also contribute to a comprehensive glossary, a list of acronyms, and a list of books, journals, websites, standards and conferences that together represent the community’s body of knowledge.
Combining all these features, this book is the indispensable source for researchers and professionals looking for an introduction and comprehensive overview of the state of the art. In addition, it is an ideal basis for an advanced course on software evolution.
In class-based multiple inheritance systems, interpretations as different as duplication, sharing... more In class-based multiple inheritance systems, interpretations as different as duplication, sharing and specialization are associated with the single phenomenon of name collisions. To deal with those name collisions, various mechanisms have been proposed, but these solutions generally restrain software reusability which is considered to be one of the key features of OO systems. On top of this, most multiple inheritance systems do not completely cover all the different interpretations of name collisions. This paper shows that the entire ...
Abstract The principal aim of this paper is to apply the Taxonomy of Software Evolution, develope... more Abstract The principal aim of this paper is to apply the Taxonomy of Software Evolution, developed by Mens et. al [1], to position various software tools that support the activity of software refactoring as part of the evolutionary process. This taxonomy is based on the mechanisms of change and the factors that impact upon these mechanisms. The goal of this taxonomy is to position concrete tools and techniques within the domain of software evolution, so that it becomes easier to compare and combine them. In this paper, we apply ...
The semantic versioning (semver) policy is commonly accepted by open source package management sy... more The semantic versioning (semver) policy is commonly accepted by open source package management systems to inform whether new releases of software packages introduce possibly backward incompatible changes. Maintainers depending on such packages can use this information to avoid or reduce the risk of breaking changes in their own packages by specifying version constraints on their dependencies. Depending on the amount of control a package maintainer desires to have over her package dependencies, these constraints can range from very permissive to very restrictive. This article empirically compares semver compliance of four software packaging ecosystems (Cargo, npm, Packagist and Rubygems), and studies how this compliance evolves over time. We explore to what extent ecosystem-specific characteristics or policies influence the degree of compliance. We also propose an evaluation based on the "wisdom of the crowds" principle to help package maintainers decide which type of version constraints they should impose on their dependencies.
Abstract. We report on a prototype tool that automates the time-consuming and error-prone process... more Abstract. We report on a prototype tool that automates the time-consuming and error-prone process of software merging. Our tool is significantly more flexible than existing merge techniques, as it can detect syntactic, structural as well as semantic conflicts. It is implemented as a general framework for software evolution that can be customised to many different domains. Because of this, it can be used to support evolution of any kind of software artifact, independent of the target language or the considered phase in the software life ...
Abstract. In the advent of ubiquitous mobile systems in general and mobile code in particular, ne... more Abstract. In the advent of ubiquitous mobile systems in general and mobile code in particular, network latency is a critical factor due to the limited bandwidth in currentday networks. This paper investigates application streaming, a technique that exploits parallelism between loading and execution of code to reduce network latency. It allows applications to migrate from host to host without sacrificing execution time during the migration phase. We show that the performance of application streaming largely depends ...
In general, the goal of Advanced separation of Concerns (AsoC) technologies is to provide encapsu... more In general, the goal of Advanced separation of Concerns (AsoC) technologies is to provide encapsulations for all kinds of concerns, with a specific focus on cross-cutting concerns. An application is formed by composing these different concerns using some composition mechanism, specifically focused on concern integration and composition. In some cases, however, a specific concern needs to be decomposed in the resulting application. In this paper, we identify a need for decomposition in AsoC technologies, using a case dealing ...
Position paper, Programming Technology Lab, Vrije Universiteit Brussel, Mar 1, 2000
Current-day software abstractions architectures, coding conventions, design patterns, interaction... more Current-day software abstractions architectures, coding conventions, design patterns, interaction protocols are often not explicitly linked to the code. This lack of traceability causes problems like architectural drift and software erosion. In order to alleviate these problems, we propose to use virtual classifications to codify high-level software abstractions as logic predicates over the implementation. Besides being explicitly linked to the code, these classifications have the additional advantage that they allow us to declare ...
Developing intuitive interactive applications that are easy to maintain by developers is quite ch... more Developing intuitive interactive applications that are easy to maintain by developers is quite challenging, due to the complexity and the many technical aspects involved in such applications. In this article, we tackle the problem in two complementary ways. First, we propose a gestural interface to improve the user experience when interacting with applications that require the manipulation of 3D graphical scenes. Second, we reduce the complexity of developing such applications by modeling their executable behaviour using statecharts. We validate our approach by creating a modular and extensible Java framework for the development of interactive gesture-based applications. We developed a proof- of-concept application using this framework, that allows the user to construct and manipulate 3D scenes in OpenGL by using hand gestures only. These hand gestures are captured by the Kinect sensor, and translated into events and actions that are interpreted and executed by communicating statecharts that model the main behaviour of the interactive application.
When looking at existing tools that provide support for architectural software evolution, we can ... more When looking at existing tools that provide support for architectural software evolution, we can distinguish between support for run-time, pre-execution time and design- time evolution; between support for unconstrained and constrained evolution; and between proactive, reactive and retroactive support for evolution. Current tools that support architectural evolution can only deal with a subset of the above issues. Moreover, they typically
Many software systems must always stay opera- tional, and cannot be shutdown in order to adapt th... more Many software systems must always stay opera- tional, and cannot be shutdown in order to adapt them to new requirements. For such systems, dynamic software evolution techniques are needed. In this paper we show how we can exploit automated refactorings to improve a software the component structure of a software system while the system is running in order to facilitate
Evolution (incremental change) of software is pre-dominant over development from scratch. Transfo... more Evolution (incremental change) of software is pre-dominant over development from scratch. Transformations provide a general and uniform view of incremental software development. Based on this unifying view, this workshop provides a forum to discuss both the phenomenon of evolution as such and its support by techniques and tools. Thereby, we cover: the transformation of different artifacts, like models, code, or data, different transformation techniques, like graph transformation, term-rewriting, logic programming, ...
This is my first in a series of 4 lectures on the topic of Evolving Software Ecosystems, presente... more This is my first in a series of 4 lectures on the topic of Evolving Software Ecosystems, presented during the NATO Marktoberdorf 2014 Summer School on Dependable Software System Engineering in Germany, August 2014.
Uploads
Books by Tom Mens
This book presents insightful contributions on these and other domains currently being intensively explored, written by renowned researchers in the respective fields of software evolution. Each chapter presents the state of the art in a particular topic, as well as the current research, available tool support, and remaining challenges. The book is complemented by a glossary of important terms used in the community, a reference list of nearly 1,000 papers and books, and tips on additional resources that may be useful to the reader (reference books, journals, standards and major scientific events in the domain of software evolution, and datasets).
This book is intended for all those interested in software engineering, and more particularly, software maintenance and evolution. Researchers and software practitioners alike will find in the contributed chapters an overview of the most recent findings, covering a broad spectrum of software evolution topics. In addition, it can also serve as the basis of graduate or postgraduate courses on e.g., software evolution, requirements engineering, model-driven software development or social informatics.
list goes on.
Software evolution will always remain inevitable due to a wide variety of factors: users that wish to have new features, bugs that need to be fixed, market pressure by competitors, technological changes in the environment with which the software needs to interact, performance issues that need to be dealt with, and so on. To accommodate these change requests, the software product needs to be changed and improved on a regular basis. In parallel to this, the software process itself is also subject to improvement, in order to produce new versions of the software more quickly and cost-effectively, without compromising software quality.
This selection of papers in this special theme gives a clear overview of both traditional and emerging software engineering techniques, tools and approaches used by software evolution experts. Examples of such techniques are software/data analysis, data visualization, software metrics, software architecting, meta-programming, and more general paradigms like model-driven engineering (MDE) and software product line engineering (SPLE). These techniques provide a portfolio for tool developers to build dedicated software evolution tools. These tools are vital in order to better understand, manage and anticipate software evolution.
We hope that these articles will convince you of the importance, relevance and challenges in software evolution research and practice in Europe. Enjoy!
Mens and Demeyer, both international authorities in the field of software evolution, together with the invited contributors, focus on novel trends in software evolution research and its relations with other emerging disciplines such as model-driven software engineering, service-oriented software development, and aspect-oriented software development. They do not restrict themselves to the evolution of source code but also address the evolution of other, equally important software artifacts such as databases and database schemas, design models, software architectures, and process management. The contributing authors provide broad overviews of related work, and they also contribute to a comprehensive glossary, a list of acronyms, and a list of books, journals, websites, standards and conferences that together represent the community’s body of knowledge.
Combining all these features, this book is the indispensable source for researchers and professionals looking for an introduction and comprehensive overview of the state of the art. In addition, it is an ideal basis for an advanced course on software evolution.
Papers by Tom Mens
This book presents insightful contributions on these and other domains currently being intensively explored, written by renowned researchers in the respective fields of software evolution. Each chapter presents the state of the art in a particular topic, as well as the current research, available tool support, and remaining challenges. The book is complemented by a glossary of important terms used in the community, a reference list of nearly 1,000 papers and books, and tips on additional resources that may be useful to the reader (reference books, journals, standards and major scientific events in the domain of software evolution, and datasets).
This book is intended for all those interested in software engineering, and more particularly, software maintenance and evolution. Researchers and software practitioners alike will find in the contributed chapters an overview of the most recent findings, covering a broad spectrum of software evolution topics. In addition, it can also serve as the basis of graduate or postgraduate courses on e.g., software evolution, requirements engineering, model-driven software development or social informatics.
list goes on.
Software evolution will always remain inevitable due to a wide variety of factors: users that wish to have new features, bugs that need to be fixed, market pressure by competitors, technological changes in the environment with which the software needs to interact, performance issues that need to be dealt with, and so on. To accommodate these change requests, the software product needs to be changed and improved on a regular basis. In parallel to this, the software process itself is also subject to improvement, in order to produce new versions of the software more quickly and cost-effectively, without compromising software quality.
This selection of papers in this special theme gives a clear overview of both traditional and emerging software engineering techniques, tools and approaches used by software evolution experts. Examples of such techniques are software/data analysis, data visualization, software metrics, software architecting, meta-programming, and more general paradigms like model-driven engineering (MDE) and software product line engineering (SPLE). These techniques provide a portfolio for tool developers to build dedicated software evolution tools. These tools are vital in order to better understand, manage and anticipate software evolution.
We hope that these articles will convince you of the importance, relevance and challenges in software evolution research and practice in Europe. Enjoy!
Mens and Demeyer, both international authorities in the field of software evolution, together with the invited contributors, focus on novel trends in software evolution research and its relations with other emerging disciplines such as model-driven software engineering, service-oriented software development, and aspect-oriented software development. They do not restrict themselves to the evolution of source code but also address the evolution of other, equally important software artifacts such as databases and database schemas, design models, software architectures, and process management. The contributing authors provide broad overviews of related work, and they also contribute to a comprehensive glossary, a list of acronyms, and a list of books, journals, websites, standards and conferences that together represent the community’s body of knowledge.
Combining all these features, this book is the indispensable source for researchers and professionals looking for an introduction and comprehensive overview of the state of the art. In addition, it is an ideal basis for an advanced course on software evolution.