• Publications
  • Influence
Software Engineering for Self-Adaptive Systems: A Second Research Roadmap
The goal of this roadmap paper is to summarize the state-of-the-art and identify research challenges when developing, deploying and managing self-adaptive software systems. Instead of dealing with a
Context-oriented Programming
This paper lays the foundations of COP, shows how dynamic layer activation enables multi-dimensional dispatch, illustrates the application of COP by examples in several language extensions, and demonstrates that COP is largely independent of other commitments to programming style.
Traits: A mechanism for fine-grained reuse
This work develops a formal model of traits that establishes how traits can be composed, either to form other traits, or to form classes, and outlines an experimental validation in which traits are applied to refactor a nontrivial application into composable units.
Traits: Composable Units of Behaviour
How traits overcome the problems arising with the different variants of inheritance is demonstrated, how traits can be implemented effectively is discussed, and the experience applying traits to refactor an existing class hierarchy is summarized.
Object-oriented reengineering patterns
This paper addresses problem of understanding and reengineering such object-oriented legacy systems by presenting a set of "reengineering patterns" - recurring solutions that experts apply while reengineering and maintaining object- oriented systems.
Regular types for active objects
A new type framework is proposed that characterizes objects as regular (finite state) processes that provide guarantees of service along public channels and proposes a new notion of subtyping for active objects that extends Wegner and Zdonik's "principle of substitutability" to non-uniform service availability.
Classbox/J: controlling the scope of change in Java
This paper demonstrates how classboxes can be implemented in statically-typed languages like Java and shows how Classbox/J, a prototype implementation of classboxes for Java, is used to provide a cleaner implementation of Swing using local refinement rather than subclassing.
Finding refactorings via change metrics
A set of heuristics for detecting refactorings by applying lightweight, object-oriented metrics to successive versions of a software system are proposed and suggested to support the reverse engineering process by focusing attention on the relevant parts of a program.
Pharo by Example
Pharo by Example, intended for both students and developers, will guide you gently through the Pharo language and environment by means of a series of examples and exercises. This book is made
A Component Model for Field Devices
This paper introduces a component model for field devices that captures a range of non-functional properties and constraints in component-based software development.