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.
The event-partitioning approach is explained by Stephen M. McMenamin and John F. Palmer in Essential Systems Analysis . [1] A brief version of the approach is described in the article on Data Flow Diagrams (DFDs). A more complete discussion is in Edward Yourdon's Just Enough Structured Analysis. [2] 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 (UML), is an "actor".
The method has the following steps.
The technique was extended with "non-event" events by Paul T. Ward and Stephen J. Mellor in Structured Development for Real-Time Systems: Essential Modeling Techniques. [3]
"Since the terminators [actors] are by definition outside the bounds of the system-building effort represented by the model, the implementors cannot modify the terminator [actor] technology at will to improve its reliability. Instead, they must build responses to terminator [actor] problems into the essential model of the system. A useful approach to modeling responses to terminator [actor] problems is to build a list of 'normal' events and then to ask, for each event, 'Does the system need to respond if this event fails to occur as expected?' " [4] [emphasis added]
Yourdon/DeMarco style of data dictionary notation 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" (not arithmetic "plus") |
[x ; y ; z] | ) may be used to separate items in the list. |
m{x}nor m:n{x} 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 { x } 10 } 10 defines a two-dimensional matrix of 10 rows with 10 columns. |
(x) | "optionally x". This is equivalent to 0{x}1 or 0:1{x} or. |
@ | prefix for an identifier within an iteration. For example, in {@i+@j+x} 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:
NB. The items defined may be "material" (e.g., room key) as well as "data" (e.g., arrival date-time).
The event-response information may be captured in a table. The event is the raison d’être for the response, which gives "traceability" from the response back to the environment.
1. Actor | 2. External Event / Trigger | 3. Detected by | 4. Response(s) / Use Case(s) |
---|---|---|---|
Guest | Guest requests a room of a certain type, for a particular arrival date, departure date, at a certain rate, etc. | booking request + (payment validation) + (*external reservation system* booking confirmation) [5] | Book Room (may include guaranteed booking, alternate hotel booking, waitlisted booking) |
Guest | Guest asks to cancel room booking. | cancellation request [6] | Cancel Booking |
Guest | Guest arrives at hotel. | arrival message = * * = [guest name ; booking reference] [7] | Check in Guest |
Time / Scheduler | Guest fails to arrive at hotel. [This is a "non-event" event.] | 11 pm (local time) [A "non-event" event is detected by the arrival of a point in time, a deadline.] | Create Guest Bill, Update Booking |
Guest | Guest asks to check out of hotel. | check-out request = * * = [guest name ; room number] [8] | Create Guest Bill, Update Room Occupancy |
Time / Scheduler | Guest fails to check out of hotel. [This is a "non-event" event.] | 11 am (local time) [A "non-event" event is detected by the arrival of a point in time, a deadline.] | Create Guest Bill |
Guest | Guest offers payment of bill. | payment vehicle = * * = [cash ; cheque ; credit card ; debit card] + (guest id) [9] | Accept Guest Payment |
Time / Scheduler | Time to prepare Room Occupancy Report for previous night. | 8 am (local time) | 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 (carbon monoxide). | CO alarm message | Report CO Alarm |
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 (often a page or less). The intention is to reduce one of the risks associated with short-term memory, namely, forgetting what is not immediately visible ("out of sight, out of mind").
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.
If the response is lengthy or complex (i.e., more than a page of text), an analyst may decompose ("factor out" or deduplicate) 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. (In a UML use case diagram, they would be drawn as extended or included use cases, which are related to one or more primary use cases.)
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 [10] 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.
The Unified Modeling Language (UML) is a general-purpose, developmental, modeling language in the field of software engineering that is intended to provide a standard way to visualize the design of a system.
A state diagram is a type of diagram used in computer science and related fields to describe the behavior of systems. State diagrams require that the system described is composed of a finite number of states; sometimes, this is indeed the case, while at other times this is a reasonable abstraction. Many forms of state diagrams exist, which differ slightly and have different semantics.
In software and systems engineering, a use case is a list of actions or event steps typically defining the interactions between a role and a system to achieve a goal. The actor can be a human or other external system. In systems engineering, use cases are used at a higher level than within software engineering, often representing missions or stakeholder goals. The detailed requirements may then be captured in the Systems Modeling Language (SysML) or as contractual statements.
Structured Systems Analysis and Design Method (SSADM), originally released as methodology, is a systems approach to the analysis and design of information systems. SSADM was produced for the Central Computer and Telecommunications Agency, a UK government office concerned with the use of technology in government, from 1980 onwards.
An entity–relationship model describes interrelated things of interest in a specific domain of knowledge. A basic ER model is composed of entity types and specifies relationships that can exist between entities.
A data-flow diagram is a way of representing a flow of data through a process or a system. The DFD also provides information about the outputs and inputs of each entity and the process itself. A data-flow diagram has no control flow, there are no decision rules and no loops. Specific operations based on the data can be represented by a flowchart.
A functional software architecture (FSA) is an architectural model that identifies enterprise functions, interactions and corresponding IT needs. These functions can be used as a reference by different domain experts to develop IT-systems as part of a co-operative information-driven enterprise. In this way, both software engineers and enterprise architects can create an information-driven, integrated organizational environment.
The Shlaer–Mellor method, also known as Object-Oriented Systems Analysis (OOSA) or Object-Oriented Analysis (OOA) is an object-oriented software development methodology introduced by Sally Shlaer and Stephen Mellor in 1988. The method makes the documented analysis so precise that it is possible to implement the analysis model directly by translation to the target architecture, rather than by elaborating model changes through a series of more platform-specific models. In the new millennium the Shlaer–Mellor method has migrated to the UML notation, becoming Executable UML.
In software engineering, a system sequence diagram (SSD) is a sequence diagram that shows, for a particular scenario of a use case, the events that external actors generate, their order, and possible inter-system events.
Structured analysis and design technique (SADT) is a systems engineering and software engineering methodology for describing systems as a hierarchy of functions. SADT is a structured analysis modelling language, which uses two types of diagrams: activity models and data models. It was developed in the late 1960s by Douglas T. Ross, and was formalized and published as IDEF0 in 1981.
Business Process Model and Notation (BPMN) is a graphical representation for specifying business processes in a business process model.
Activity diagrams are graphical representations of workflows of stepwise activities and actions with support for choice, iteration and concurrency. In the Unified Modeling Language, activity diagrams are intended to model both computational and organizational processes, as well as the data flows intersecting with the related activities. Although activity diagrams primarily show the overall flow of control, they can also include elements showing the flow of data between activities through one or more data stores.
Glossary of Unified Modeling Language (UML) terms provides a compilation of terminology used in all versions of UML, along with their definitions. Any notable distinctions that may exist between versions are noted with the individual entry it applies to.
Object-oriented design is the process of planning a system of interacting objects for the purpose of solving a software problem. It is one approach to software design.
The Toolkit for Conceptual Modeling (TCM) is a collection of software tools to present specifications of software systems in the form of diagrams, tables, trees, and the like. TCM offers editors for techniques used in Structured Analysis as well as editors for object-oriented (UML) techniques. For some of the behavior specification techniques, an interface to model checkers is offered. More in particular, TCM contains the following editors.
Process specification is a generic term for the specification of a process. It is not unique to business activity, but can be applied to any organizational activity.
In software engineering, structured analysis (SA) and structured design (SD) are methods for analyzing business requirements and developing specifications for converting practices into computer programs, hardware configurations, and related manual procedures.
In systems engineering, software engineering, and computer science, a function model or functional model is a structured representation of the functions within the modeled system or subject area.
Enterprise engineering is defined as the body of knowledge, principles, and practices to design all or part of an enterprise. An enterprise is a complex, socio-technical system that comprises interdependent resources of people, information, and technology that must interact with each other and their environment in support of a common mission. According to Kosanke, Vernadat and Zelm, enterprise engineering is an enterprise life-cycle oriented discipline for the identification, design, and implementation of enterprises and their continuous evolution, supported by enterprise modelling. The discipline examines each aspect of the enterprise, including business processes, information flows, material flows, and organizational structure. Enterprise engineering may focus on the design of the enterprise as a whole, or on the design and integration of certain business components.
UML state machine, also known as UML statechart, is a significantly enhanced realization of the mathematical concept of a finite automaton in computer science applications as expressed in the Unified Modeling Language (UML) notation.