8. When
When questions are about time and events. There are two types of When Question:
- Temporal When Questions – these are about specific points in time and durations in time.
- Event When Questions – these are about system responses that happen in time in response to internal or external events.
We cover dealing with temporal When Questions in considerable detail in Generative Analysis, and there isn't anything more we need say about it here. If you are working on hard real-time systems, then you will be quite obsessed by temporal When questions!
When Questions about internal events seek to elucidate events that are internally generated by the system itself. There isn't much we can say about these, because they are dependent on the details of the system. However, it can be important to distinguish between what we might call "business events" that are related to the problem domain (e.g. a bank account becoming overdrawn) and "system events" that are artefacts of the system implementation. The business events need analysing, and the system events need designing.
When Questions about external events are logically restricted to those external events that are in the scope of the system because they affect it in some way. This identification of external events that are in scope is one of the most important aspects of analysis, and these When Questions usually resolve into Who/What questions about the event, often followed by a How/What cascade to elucidate the effect of the event.
9. Where
We can identify two distinct types of Where Question:
- Physical – these Questions are about the physical location of something.
- Logical – these Questions are about the logical location of something.
Physical Where Questions tend to be about the location of Resources or about implementation constraints on the system. For example, if you have identified a useful Resource for information (say the Head Librarian), then you will need to ask Where that Resource can be contacted. Similarly, in the hardware realm, you might need to know the physical locations of remote devices and other systems that communicate with your system.
Logical Where Questions specify relationships between things. For example, you might locate a particular component within another one or on a specific piece of hardware without specifying the physical location of either the component or the hardware. Other examples might be URIs or database links that are sources or sinks for information. In each case, we locate something in a logical space that, at some point, will be mapped to one or more physical locations on specific pieces of hardware when the software is delivered.