I define context in two related ways. First, I mean the network of thoughts and meanings needed to understand phenomena or utterances. Second, and more importantly for requirements engineering, I mean the part of a system’s environment that matters for understanding the system and its requirements. For clarity, I call the second meaning the system context.
First, I identify the actors. For example, I list users, administrators, and external systems. Then, I draw the system boundary. I show what lies inside and what lies outside. Thus, I clarify scope. In addition, I show data and control flows between the system and its neighbors. For instance, I may use a context diagram. Moreover, I can use SysML block diagrams, UML use case diagrams, or data flow diagrams. For example, a SysML block diagram can show actors and data flows for an automated production machine. Therefore, diagrams help me to document interfaces clearly.
Next, I ask four key questions. First, which external roles and people interact with the system? Second, which other systems relate to the system from an operational view? Third, which aspects of the context are relevant or irrelevant for the system? Fourth, which contextual aspects can I change during development? These questions target the scope and the context boundary. For instance, in a bank project, I decide whether account setup belongs to the context. Similarly, I decide whether the approval decision stays with the bank clerk. So, I mark what I include and what I exclude. Consequently, stakeholders can understand responsibilities.
I document the context view carefully; I describe roles and persons; I list related systems and their properties; and I explain interface details. In addition, I record which external qualities matter for my system. For example, I note response times of neighboring systems if these affect my requirements. Furthermore, I explain which context elements can change and which cannot. This clarity reduces misunderstandings later.
I keep the context boundary explicit. However, I know it remains incomplete. Because I can only exclude things I have considered, I admit that new elements may appear later. Therefore, I treat scope as flexible. Moreover, I communicate changes to all relevant stakeholders. In addition, I update the context documentation when requirements or operations change.
Also, I select modeling techniques that suit the project. For simple cases, I may use a table instead of a diagram. For complex systems, I prefer visual context diagrams. Meanwhile, I ensure the basic elements appear: the system under development, actors, and data or message flows. In data flow-oriented modeling, I often represent the system as a circle or a box. Then, I connect it to neighboring systems using labeled flows.
Finally, I emphasize the role of context in requirements engineering. The context view helps me draw the line between what the system must do and what external elements must provide. Thus, the context view guides requirement elicitation and interface design. In short, I treat it as the essential frame that makes requirements meaningful, testable, and implementable.
« Back to Glossary Index
