Event partitioning
Event partitioning is an easy-to-apply systems analysis technique that helps the analyst organize requirements for large systems into a collection of smaller, simpler, minimally-connected, easier-to-understand "mini systems" / use cases.
Overview
The event-partitioning approach is explained by Stephen M. McMenamin and John F. Palmer in Essential Systems Analysis. A brief version of the approach is described in the article on Data Flow Diagrams. A more complete discussion is in Edward Yourdon's Just Enough Structured Analysis. The description focuses on using the technique to create data flow diagrams, but it can be used to identify use cases as well.The premise of event partitioning is that systems exist to respond to external events: identify what happens in the business environment that requires planned responses, then define and build systems to respond according to the rules of the business. In particular, a business system exists to service the requests of customers. A customer, in the jargon of the Unified Modeling Language, is an "actor".
Event partitioning topics
Actor → Event → Detect → Respond
The method has the following steps.- 1. Identify the external systems by brainstorming a list of the "actors", which are the sources of external events. If you find a graphic to be helpful, create a context diagram showing the actors outside of the system under study and the flows/signals between them.
- 2. Putting oneself in the shoes of an "actor", brainstorm a list of the "external events" / "triggers" that they want the system to have a planned response to.
- 3. Identify what will enable the system to detect the external events:
- * the arrival of one or more pieces of data
- * the arrival of one or more points in time
- 4. Identify the planned response that the system may carry out when the events occur. It's the response/use case that will enable the system to achieve its goals.
Data dictionary notation
Yourdon/DeMarco style of may be used to describe the composition and structure of data.Symbol | Meaning |
= | "contains", "is", or "is composed of" |
+ | "and", "as well as", or "together with" may be used to separate items in the list. |
m'n or m:n or | "from m to n iterations of x". If m or n is not specified, then the lower or upper limit is simply "unknown" or "unspecified". Multi-dimensional arrays may be specified by nesting, e.g., 10 10 defines a two-dimensional matrix of 10 rows with 10 columns. |
"optionally x". This is equivalent to 01 or 0:1 or'. | |
@ | prefix for an identifier within an iteration. For example, in i and j are identifiers. |
*... * | Anything between single asterisks'' is regarded as a comment. At the data element level, a comment may contain such type tags as "range :", "limits :", "precision :", "unit :" or "values :". |
The data structure elements can map to structured programming′s control structures:
- "+" can map to a "sequence" of statements
- "" can map to "selection"
- "", "" can map to "iteration"
Identifying Requirements and Their Reasons
The event-response information may be captured in a table. The event is the for the response, which gives "traceability" from the response back to the environment.1. Actor | 2. External Event / Trigger | 3. Detected by | 4. Response / Use Case |
Guest | Guest requests a room of a certain type, for a particular arrival date, departure date, at a certain rate, etc. | booking request + + | Book Room |
Guest | Guest asks to cancel room booking. | cancellation request | Cancel Booking |
Guest | Guest arrives at hotel. | arrival message = * * = | Check in Guest |
Time / Scheduler | Guest fails to arrive at hotel. | 11 pm | Create Guest Bill, Update Booking |
Guest | Guest asks to check out of hotel. | check-out request = * * = | Create Guest Bill, Update Room Occupancy |
Time / Scheduler | Guest fails to check out of hotel. | 11 am | Create Guest Bill |
Guest | Guest offers payment of bill. | payment vehicle = * * = + | Accept Guest Payment |
Time / Scheduler | Time to prepare Room Occupancy Report for previous night. | 8 am | Report on Room Occupancy |
Hotel Manager | Hotel Manager requests Room Occupancy Report. | occupancy report request | Report on Room Occupancy |
Smoke / CO Alarm | Alarm detects smoke. | smoke alarm message | Report Smoke Alarm |
Smoke / CO Alarm | Alarm detects CO. | CO alarm message | Report CO Alarm |
Defining requirements
This approach helps the analyst to decompose the system into "mentally bite-sized" mini-systems using events that require a planned response. The level of detail of each response is at the level of "primary use cases". Each planned response may be modelled using DFD notation or as a single use case using use case diagram notation.The basic flow within a process or use case can usually be described in a relatively small number of steps, often fewer than twenty or thirty, possibly using something like "structured English". Ideally, all of the steps would be visible all at once. The intention is to reduce one of the risks associated with short-term memory, namely, forgetting what is not immediately visible.
Alternatively, using the notations of structured techniques, an analyst could create a "Nassi–Shneiderman diagram". In the UML, the use case could be modelled using an activity diagram, a sequence diagram, or a communication diagram. This could be problematic if there are many complex scenarios of the use case; the analyst may wish to model all or most of the scenarios.
Complexity versus fragmentation
If the response is lengthy or complex, an analyst may decompose into smaller "secondary use cases" to keep the "parent" primary use case smaller and simpler. These secondary use cases may prove to be reusable as well.While describing a use case, an analyst may also uncover "business rules". Some analysts suggest capturing business rules in a separate document using the Object Constraint Language or some other formal notation. Then when a business rule must be obeyed in a use case, the analyst makes reference to it. This minimises repetition within a specification, but risks fragmentation of a specification. One technique that may reduce this tension is to use hyperlinks in the specification document.
This reductionist approach lies somewhat in contrast to a systems thinking approach as represented by Peter Checkland's soft systems methodology.
In addition to functional requirements captured in a use case description, an analyst may include such non-functional requirements as response time, learnability, etc.