Event partitioning

Last updated
System context diagram for a fictitious hotel. (By convention, bidirectional flows, with arrows at both ends, are often used when a dialogue is initiated externally. For example, "booking dialogue" contains the flow "booking request", which is the initial trigger; "booking confirmation", the result, is sent back.) ContextDiagram LastResortHotel.png
System context diagram for a fictitious hotel. (By convention, bidirectional flows, with arrows at both ends, are often used when a dialogue is initiated externally. For example, "booking dialogue" contains the flow "booking request", which is the initial trigger; "booking confirmation", the result, is sent back.)

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.

Contents

Overview

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".

Event partitioning topics

Actor → Event → Detect → Respond

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]

Data dictionary notation

Yourdon/DeMarco style of data dictionary notation may be used to describe the composition and structure of data.

SymbolMeaning
="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).

Identifying Requirements and Their Reasons

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. Actor2. External Event / Trigger3. Detected by4. Response(s) / Use Case(s)
GuestGuest 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)
GuestGuest asks to cancel room booking.cancellation request [6] Cancel Booking
GuestGuest arrives at hotel.arrival message = * *
     = [guest name ; booking reference] [7]
Check in Guest
Time / SchedulerGuest 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
GuestGuest asks to check out of hotel.check-out request = * *
     = [guest name ; room number] [8]
Create Guest Bill,
Update Room Occupancy
Time / SchedulerGuest 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
GuestGuest offers payment of bill.payment vehicle = * *
     = [cash ; cheque ; credit card ; debit card] + (guest id) [9]
Accept Guest Payment
Time / SchedulerTime to prepare Room Occupancy Report for previous night.8 am (local time)Report on Room Occupancy
Hotel ManagerHotel Manager requests Room Occupancy Report.occupancy report requestReport on Room Occupancy
Smoke / CO AlarmAlarm detects smoke.smoke alarm messageReport Smoke Alarm
Smoke / CO AlarmAlarm detects CO (carbon monoxide).CO alarm messageReport CO Alarm

Defining requirements

Single process in a fictitious hotel using data flow diagram notation. LastResortHotel BookRoom Process.png
Single process in a fictitious hotel using data flow diagram notation.
Single use case in a fictitious hotel using use case diagram notation. LastResortHotel BookRoom UseCase.png
Single use case in a fictitious hotel using use case diagram notation.

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.

Complexity versus fragmentation

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.

See also

Related Research Articles

Unified Modeling Language

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.

State diagram diagram used in computer engineering and computer science

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.

Entity–relationship model Model or diagram describing interrelated things

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.

System sequence diagram

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

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 Graphical representation for specifying business processes

Business Process Model and Notation (BPMN) is a graphical representation for specifying business processes in a business process model.

Activity diagram

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.

Structured analysis

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.

Function model

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.

References

  1. MCME-84: McMenamin, Stephen M.; John F. Palmer (1984). Essential Systems Analysis . Prentice-Hall (Yourdon Press). ISBN   0-13-287905-0. ( ISBN   978-0-13-287905-7)
  2. YOUR-89: "yourdon.com - Just Enough Structured Analysis, Chapters 18, 19". 1989. Archived from the original on 2007-02-14. Retrieved 2008-04-24.
  3. WARD-85: Ward, Paul T.; Stephen J. Mellor (1985). Structured Development for Real-Time Systems: Volume 2, Essential Modeling Techniques . Prentice-Hall (Yourdon Press). ISBN   0-13-854787-4. ( ISBN   978-0-13-854787-5)
  4. WARD-85, pp. 38-39.
  5. booking dialogue = * *
         = *input* booking request + *output* booking confirmation
    booking request = * *
         = guest name + room type + (room facilities) +
           arrival date-time + departure date-time
    room type = * type of bedroom *
         = * values : [ single ; double ; family ] *
    room facilities = * booleans that indicate presence or absence of a facility *
         = television + radio + alarm clock + climate control + Internet access +
           telephone + refrigerator + mini-bar + toilet + sink + bath + shower + bidet
    arrival date-time = * *
         = date-time
    departure date-time = * *
         = date-time
    date-time = * ISO 8601 format *
         = year + month + day of month + 'T' + hour + minute >
  6. cancellation dialogue = * *
         = *input* cancellation request + *output* cancellation confirmation
  7. arrival dialogue = * *
         = *input* arrival message + *output* arrival packet
    arrival packet = * *
         = room key + room card + complimentary drink coupon
  8. check-out dialogue = * *
         = *input* check-out request + *output* guest bill
  9. payment dialogue = * *
         = *input* payment vehicle + *output* guest receipt
    guest receipt = * *
         = guest name + guest address + {charge detail} + charge total + (taxes) + amount due + amount paid
  10. see also Don't repeat yourself, also known as "DRY"