Code Analysis and Manipulation
- As shown by a number of studies, on average, software systems tend to be rewritten from scratch approximately every seven years.
- Over time, the internal quality of a piece of software steadily decreases, such that at a certain moment it becomes impossible to further maintain the software, and a complete rewrite of the system becomes inevitable. This degradation of the software can have various causes. For example, a poor initial modularization, the lack of proper coding guidelines, inherent restrictions in the used programming language and so on can all contribute to software that is difficult to maintain, adapt and understand.
- Adding to this is the constant time pressure under which developers have to work to cope with ever changing requirements, resulting that only minimal effort can be devoted to improve the software's structure, and the consistency and quality of the source code.
Goals
At the Software Languages Lab, we envision the development of sustainable software systems. Such systems are devised from the start to be used and maintained over an extended period of time. We aim to support the development of software systems by providing dedicated tool support and novel language constructs. More concretely, we can discern three major themes in our research:
- Logic Program Querying We have a long-standing tradition in the use of logic programming languages to query software systems. This research has culminated in the development of the Soul logic query language that is still being actively developed and extended, as well as a wide range of tools such as IntensiVE, Deuce and that leverage Soul to support various software engineering tasks and share as a common goal the improvement of the quality of the source code of a system.
- Static Analysis Static analysis can be used to verify non-trivial properties of programs, express complex program transformations, or implement powerful optimizations at compile-time. It allows you to determine which procedures can be applied at a call site (control flow), what values an expression may evaluate to (value flow) or the variables read and written by an expression (dependence). Because static analysis is performed at compile-time, we try to infer the answer to these questions without actually running the program. Since the questions themselves are generally undecidable problems, we have to settle for approximations using techniques like abstract interpretation. The challenge therefore is to find a balance between precision and speed.
- Domain-Specific Language Design Nowadays, developers have to cope with ever changing requirements. In order to accommodate this problem, we research both the application and development of so-called domain specific languages: languages that are dedicated to a particular problem domain and that offer a lean and mean way to deal with the challenges and concepts of this problem domain. This research resulted in the development of the KALA and Linglet Transformation System software artifacts.
- Meta-Level Architectures and Framework Development
Members
Professor
Post-docs
Pre-docs
Artifacts
SOUL
The Smalltalk Open Unification Language (SOUL) is a language integrated into Smalltalk environments and is designed for declarative meta programming. Declarative meta programming is the use of a declarative language for meta programming. SOUL falls in the class of logic-based declarative languages and is similar to Prolog, but includes some specialized features for meta programming.
IntensiVE
The Intensional Views Environment (IntensiVE) empowers software architects and developers with tools and techniques to monitor the internal quality of software development projects. IntensiVE verifies a wide range of good practices, detects bad code smells and, most importantly, verifies application-specific architectural rules and constraints in your application's source code.
Padus is an aspect-oriented extension to BPEL, which allows modularizing crosscutting concerns in separate aspects.
Unify is a framework for uniform modularization of all workflow concerns, be they regular or crosscutting.
JAsCo
A new AOP language that is tailored for CBSD.
StrongAspectJ
An AspectJ language extension to support flexible and safe pointcut/advice bindings.
WSML
Enabling client-side management of Web Services using Dynamic AOSD.
FuseJ
A new AOP approach aiming at integrating aspect and components.
PacoSuite
Enhancing viusal component based software development. Integrates AOSD into CBSD design level.
CoBro
A Smalltalk environment empowering developers to build extensible and documented software (based on the Concept-Centric Coding approach).
Dynamic Annotations
An extension to Java annotations that allows developers to include dynamic conditions on the activation of annotations.





