The concept of constraint has been used in multiple contexts and with different definitions in the software engineering literature.
We found two instances to be particularly related to our work.
In the context of business rules, Wiegers and Beatty [1]} define a constraint as “a statement that restricts the actions that the system or its users are allowed to perform”.
This definition covers data constraints, because it can be said that the system is only allowed to accept/produce valid data.
Breaux and Antón [2]} define a constraint as a statement that narrows the possible interpretations of a concept based on its properties.
For instance, “patient who receives healthcare services” restricts the set of all patients to only those who receive healthcare services.
This definition is similar to ours in that data constraints conceptually narrow the set of possible entities, e.g., “request to HEAD method” is a subset of all requests.
It is important to note that neither of these works explore how the constraints are enforced in source code.
