TRESE (Twente Research and Education on Software Engineering) is the popular name of the Software Engineering Group of the Faculty of Electrical Engineering, Mathematics and Computer Science (EEMCS) at the University of Twente. The research activities in the department are organized within the context of the research institute Centre for Telematics and Information Technology (CTIT).
SE focuses on Quality-Oriented Software Engineering. The group addresses the problems that affect the main stakeholders of software systems by developing and applying techniques that increase the quality of software models and products. Quality factors addressed by the group are, amongst others, compositionality, correctness, dependability, evolvability, traceability, open-endedness and flexibility. The application areas addressed by the group include embedded systems and highly distributed (large-scale) systems. Our mission is:
To model, implement and optimize software engineering processes for specifying, designing, implementing, verifying and optimizing software artifacts at various abstraction levels for the purpose of fulfilling the stakeholders’ requirements of software systems.
The Software Engineering group has effectively started with the appointment of Aksit as Head of Group in 11-2000. Prof. Aksit has built up the SE group from scratch, since the chair was vacant for more than 10 years. Initially, the group had few externally financed projects, but the group has invested a substantial amount of time in the acquisition of new projects and has been successful in this endeavor. Consequently the number of PhD candidates has grown considerably from 2 in 2001 up to 15 in the beginning of 2008. This growth has provided sufficient financial support and research capacity to sustain the research activities. All these projects are integrated within the context of the CTIT research institute.
The SE group has structured its research activities in complementary and partially overlapping research areas, identified by considering abstraction levels (from programming to architectures), application domains (from embedded to distributed systems), and relevant quality factors and supporting techniques. These areas have also been identified taking into consideration the expertise and interest of the scientific staff, and have allowed the group to acquire national and international projects. These research areas are:
Programming Languages (Bergmans (until 9-2008)):
In this area we define and implement expressive and intuitive programming language constructs so that adaptability and evolvability of software systems are enhanced, and complexity of software systems are reduced, while enabling reasoning about its correctness. For example, aspects improve the modularity of crosscutting concerns. The topic has been supported recently by the projects AOSD-NoE, IDEALS and OCTOPUS. The keywords of this topic are: components, aspects, composition, and robustness.
Since beginning of the 90’s, the group has been a pioneer in aspect-oriented language concepts through the programming languages Sina and Composition Filters. During the last years, the group has extended this work, among others to reduce potential conflicts among aspects, support reasoning about (undesired) behavior of composed aspects, and provide an infrastructure for the convenient creation of new software composition mechanisms.
Architecture design (Van den Berg and Tekinerdogan (until 9-2008))
In this area we define effective and intuitive problem analysis, solution synthesis and restructuring processes for transferring stakeholders’ requirements into software architectures, so that the desired quality factors can be effectively fulfilled, and we define expressive, scalable and reusable model transformation techniques to cope with (non-structure preserving) evolutions, to enable traceability and to enhance portability of software architectures and model-driven development. The area has been supported recently by the projects AOSD-NoE, AOSAD, TRADER, DARWIN, and QUADREAD. The keywords of this research activity are: software architecture design, model-driven engineering, aspect-oriented architecture, traceability, and evolvability.
Our research contributions in software architecture have been the introduction of new architectural styles and a set of tools for designing fault-tolerant systems, and the development of methods for separation and composition of crosscutting concerns in software architecture. In model-driven engineering, we have developed a way to structure the Meta Object Facility (MOF) meta-modeling architecture based on a simple and uniform representation of all model elements no matter at which level they are defined, and have presented a transformation language based on this framework which is independent of the instantiation and generalization mechanism specific for a given model. Furthermore, we have proposed formal semantics for relationships between requirements in a requirements meta-model, enabling reasoning over requirements models and change impact analysis.
Service architectures (Ferreira Pires (since 10-2007))
In this area we design, deploy and compose service-oriented architectures by using techniques like model-driven development and ontologies, improving the effectiveness of the service design and the flexibility and correctness of the resulting services. The topic has been recently supported by the projects AWARENESS, A-MUSE, AMIGO and SPICE. The keywords of this topic are: service composition, and service-oriented model-driven engineering.
This work builds upon the work on architectures and services started in the Architecture and Services of Network Applications (ASNA) group. In this work the main results have been a foundation ontology, a model-driven methodology for the development of context-aware service-oriented applications, a service-oriented context-aware framework and a service composition platform and algorithm (contributed to the SPICE project).
Verification and optimization ((Rensink (until 7-2005) and Van den Broek)
In this area we define expressive and scalable (software engineering) models for the verification of the software qualities correctness of service and software composition, run-time verification, reliability & fault tolerance and quality trade-off techniques, and we define expressive models for processes and products at different levels of abstractions and to specify effective and scalable optimization algorithms with respect to the quality constraints in the presence of imperfect information (uncertainty and impreciseness). The topic has been supported recently by the projects GROOVE, GRASLAND, AOSD-NoE, DARWIN and AMPLE. The keywords of this topic are: correctness in software design, graph transformation, software model checking, model transformation, dependability of software, evolvability of software architectures, traceability of software product line architectures, quality-trade off techniques and application of soft-computing techniques to software engineering.