Requirements reflection: Requirements as runtime entities

Nelly Bencomo, Jon Whittle, Pete Sawyer, Anthony Finkelstein, Emmanuel Letier

Research output: Chapter in Book/Report/Conference proceedingConference PaperResearchpeer-review

115 Citations (Scopus)


Computational reflection is a well-established technique that gives a program the ability to dynamically observe and possibly modify its behaviour. To date, however, reflection is mainly applied either to the software architecture or its implementation. We know of no approach that fully supports requirements reflection- that is, making requirements available as runtime objects. Although there is a body of literature on requirements monitoring, such work typically generates runtime artefacts from requirements and so the requirements themselves are not directly accessible at runtime. In this paper, we define requirements reflection and a set of research challenges. Requirements reflection is important because software systems of the future will be self-managing and will need to adapt continuously to changing environmental conditions. We argue requirements reflection can support such self-adaptive systems by making requirements first-class runtime entities, thus endowing software systems with the ability to reason about, understand, explain and modify requirements at runtime.

Original languageEnglish
Title of host publicationICSE 2010 - Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering
Number of pages4
Publication statusPublished - 2010
Externally publishedYes
EventInternational Conference on Software Engineering 2010 - Cape Town, South Africa
Duration: 2 May 20108 May 2010
Conference number: 32nd (Proceedings)


ConferenceInternational Conference on Software Engineering 2010
Abbreviated titleICSE 2010
Country/TerritorySouth Africa
CityCape Town
Internet address


  • reflection
  • requirements
  • runtime
  • self-adaptive systems

Cite this