The Lab for Software Composition and Decomposition (deComp) researches tools and techniques that allow one to develop systems out of smaller pieces. deComp is led by Roel Wuyts and is part of the Département d'Informatique of the Université Libre de Bruxelles.
The research of deComp is situated in the fields of Software Engineering and Language Design. It is structured around four complementary axes:
Declarative Meta Programming (DMP) is defined as a flavour of multi-paradigm programming where one uses a declarative language as meta-language for an object-oriented language.
The main vehicle for the experiments with DMP is the DMP language Soul. Soul is a logic programming language living in symbiosis with its implementation language (Smalltalk). The novel way of integrating these two languages from different paradigms allows one to write logic programs that can do full logic reasoning on objects and do full logic reasoning using objects.
We used Soul primarily to reason about Smalltalk code, expressing programming conventions, design patterns and software architectures in such a way that they can be checked against the source code. It is also used extensively as program composition engine for aspect oriented programming (AOP). More recently however we are also applying Soul to reason about dynamic information.
We are currently undergoing a shift from object-oriented programming towards component-oriented programming. However, this shift is far from done. Two research questions interest us with respect to components:
To see what we have done in this context (and what we continue to do), have a look at the Pecos pages (component model for small embedded systems), the Traits system (a compositional model for structuring OO programs) and the ClassBox system (a module system for object-oriented programs).
We are very interested in the symbiosis that can occur between languages, and especially between languages of different paradigms. For example, the Soul language features symbiosis between the object-oriented and the logic paradigm. This axe is interested in studying new forms of reflection, mixins and prototyping approaches that integrate languages from different paradigms.
Check out the Soul pages for more information, or have a look at the Agora pages (a language with symbiosis between class-based and object-based OO).
Since "the language is the environment" (an important principle we stand by), it is not enough to invent new programming languages or composition mechanisms. These have to be supported by development environments, so that developers can leverage the new features. Moreover, development environments have to allow the integration of different tools, end-user customisability and multiple views on the system. This is the focus of this axe.
The StarBrowser is the research artifact that incorporates some of these ideas in practice.