Requirements Engineering (RE) is concerned with the elicitation, analysis, description, and validation of system or software requirements. RE aims at understanding the stakeholders' desires and needs and reducing the risk of developing the wrong system, i.e., one that does not satisfy its stakeholders' (in particular, its end users') desires and needs. The specification of requirements is a critical and intrinsically difficult task. Therefore, Requirements Engineering is an important topic in the development and evolution of systems.
Requirements are a mental model of how a system should behave. However, requirements do not simply describe a desired state of reality. They also change or even construct reality. Therefore, work on methods and languages for requirements modeling lies at the very core of requirements engineering research. The existing methods for requirements specification are far from being completely satisfactory. Methods widely used in industry have serious weaknesses, both in modeling paradigms and in the preciseness of their definition. Formal specification techniques, on the other hand, are too complicated and too expensive for broad industrial application. This motivates our research in requirements modeling, which was the core topic of our research for many years.
When deployed systems evolve, feedback by end users, for example, app reviews, posts in social networks or direct in-app feedback, becomes a new source from which requirements can be elicited. This motivates our research on feedback in RE.
Another major RE challenge in systems evolution is keeping the requirements in sync with the source code. Keeping the requirements up-to-date saves valuable knowledge about the system and preserves requirements traceability which is vital for any safety-critical system. This motivates our research about supporting the evolution of requirements.
Other topics that we have been working on include non-functional requirements, shared understanding in RE and motivating stakeholders to contribute voluntarily to the elicitation and prioritization of requirements.
We are currently active in the following fields and projects:
Flexible Modeling - The goal of this project is to unite the flexibility of unconstrained sketching with the power of formal modeling.
Quality Requirements - We are investigating the nature and role of quality requirements in Requirements Engineering.
In the past, we have carried out the following research projects:
ADORA - In this project, we have developed a semiformal specification language and a prototype tool that overcome the weaknesses of existing approaches, in particular those of UML.
AquaBench - A benchmark for traceability.
Attempto - In this project, we developed a requirements specification language which is based on the idea of using controlled natural language for specification.
CASA - In this project we have developed a framework for mobile applications which can adapt automatically to changes in their environment (availability of resources or location) at runtime. CASA employs a contract-based adaptation policy, thus allowing modification of the adaptation policy at runtime.
Flexible artifacts visualization - This project is about creating a new visualization technique to help software engineers to manage and edit all their artifacts at the levels of abstraction they need.
Game-based Stakeholder Engagement - In this project we develop a new elicitation method to engage stakeholders who are outside organizational reach in requirements elicitation.
GuideGen – In this SNSF-funded project, we explored how we can keep requirements and acceptance tests aligned by automatically generating guidance for how to change acceptance tests from an analysis of changed requirements.
Handshaking - In this project, we are exploring pragmatic requirements communication according to Win-Win principles.
Metamodeling - Here we explored new, better ways for defining the syntax and semantics of graphic specification languages.
MiRiA - This project aimed to define objective measurement of a model's abstractness and systematic guidance to attain the right level of abstraction.
Requirements update - The goal of this work is to facilitate the update of requirements documents when software systems evolve.
SPREBA - In this project we work on new concepts and mechanisms for efficiently dealing with commonality and variability in requirements modeling.
Scenarios - We investigated the role of scenarios in Requirements engineering and developed new techniques for representing scenarios. We also dealt with scenario integration.
SCENT - In the SCENT project, we developed a method for scenario-based testing of software.
UML - We have contributed to a better understanding of stereotypes and have investigated weaknesses of UML.