Requirements Analysis Using Event/Response and Use Cases: Event Discovery Part 4

Planning

This is Part 4 in my series on Event Discovery techniques. In this post, I will describe how to use the major entities that you have identified as a starting point.

In the course of your requirements analysis you will have identified some entities for which you will be required to keep persistent data (these entities will translate into tables in your database when you are in the Design Phase). For each of these entities, you can discover the life-cycle (and therefore, the Events) by asking these questions:

  • What are the Create Events for an instance in this Entity? These are the Events in which your “business” first becomes aware of a specific instance of this Entity, and stores initial data.
  • What are the Read Events for an instance in this Entity? These are the Events that trigger usage of the data for this Entity without modifying the data.
  • What are the Update Events for an instance in this Entity? These are the Events which cause any of the data elements stored for this Entity to be modified.
  • What are the Delete Events for this Entity? These are the Events which cause “end of life” (defined as “there will be no more need to read or modify this instance”) for an instance in this Entity.

An acronym sometimes used for this analysis is “CRUD” (Create, Read, Update, Delete).

Here are some examples:

Let us say the scope of our “business” is to add the selling of refrigerated beverages in retail stores. Some Entities you might have identified are “Store” and “Product”. Let us examine each of these using CRUD.

For “Store”:

  • The Create Event might be “Store is opened”. That would lead you to ask questions such as “How do we get refrigerators to new stores?” and “How do we get the initial inventory of product to new stores?”. The answers lead to more Events.
  • Some Read Events are “Inventory or Sales requests by Store, Region, or Territory”.
  • Some Update Events can be “Store temporarily closed for remodel” or “Store commencing a going out of business sale”. This would lead you to ask questions such as “What do we do with existing inventory of refrigerated product?”.
  • A Delete Event would be “Store is closing”. This leads you to questions such as “What do we do with the refrigerators and the inventory contained within?”

For “Product”:

  • The Create Event could be “Product is ordered”. This would lead you to ask questions such as “How do you know you need to order product?” and “How do you know how much of each type to order?”. The answers will certainly lead to new Events.
  • A Read Event might be “Requests for Sales by product type”.
  • Some Update Events are “Product is sold” and “Product is restocked”.
  • A Delete Event could be “Specific Product type discontinued”.

Keep doing this for all of your identified Entities. You may be surprised how enlightening this is, revealing many Events that other forms of analysis would miss. Keep in mind, once you have identified new Events and added them to your Event List, you will fill in the detail for each column in the list and do the analysis of the Event Outputs described in a prior post.

In the next post I will describe how to use the data elements in the Entities to discover more Events.

Advertisements

Requirements Analysis Using Event/Response and Use Cases: Event Discovery Part 3

Planning

This is the third part in the series on Event discovery. In the first two parts I covered discovering Events using (1) the Context Diagram and (2) the Outputs listed on the Event List. In this post, I will cover using a technique known as “State-Transition”.

In specific cases of analysis where there is a central entity that moves to a variety of “states” during its life, the State-Transition diagram can be very useful in discovering Events. Let us take the example of a retail product where the project sponsor wishes to track the product in all of its possible states. The following are possible examples of the states of this product:

  • Designed
  • Ordered
  • Manufactured
  • Shipped / In-Transit
  • Arrived at Distribution Center
  • In Inventory
  • Allocated to Store
  • Packed
  • Shipped to Store
  • Arrived in Store
  • Available for Sale
  • Sold

Each of these states has a corresponding Event that causes the product to transition from one state to the next. For example, the transition from “In Inventory” to “Allocated to Store” could be triggered by the data event “Store Inventory Level for this Product drops below reorder point”. Now that you have the Event, you can fill in the rest of the row on the Event List in discussion with the SME’s (Subject Matter Experts).

Note that it is possible and allowed for an Entity in a given State to transition to more than one possible State, depending on the Event. For example, an Employee can transition to a new job (via promotion or transfer) or transition to full-time or part-time, or transition to terminated.

Knowing all of the relevant States of an Entity can be very useful to filling out the Event List in certain analysis situations.

In the next post, I will present another Event discovery technique involving the life cycle of key Entities.

Requirements Analysis Using Event/Response and Use Cases: Event Discovery Part 1

Planning

In prior posts I introduced the Context Diagram and the Event List. In this and the upcoming series of posts, I will define some techniques you can use to discover events and complete the Event List and Context Diagram.

The very first place to start defining events is the Context Diagram. Every input arrow on the diagram represents an event to which your “business” must respond. Remember, our definition of your “business” is the boundary of the business area under study. Inside of the business bubble on the Context Diagram, you have control over the business processes and data flows. Outside the boundary, you can negotiate the interfaces with the Suppliers and Customers but have little or no control over their business processes.

Let’s examine an example of how the Context Diagram can provide events. For this example, let us say the Supplier is an Employee and the input arrow is “Travel Expense Details”.

Our first column on the Event List is “When this happens”. In this example, you would state “Travel Expense Report Submitted”.

The second and third columns are “This Source” and “Gives us This”. In this example, the Source is “Employee”, and “Gives us This” is “Travel Expense Details”.

The fourth column is “Then we do this”. These are the labels of the business processes your “business” will execute upon receipt of the “Travel Expense Details”. You might have a list of processes that looks like this:

  • Verify expenses comply with business policy
  • Approve/Reject Expenses

The fifth column is “Which creates this”. These are the outputs of each business process. The outputs of the first process listed above might be “Valid Expenses” and “Invalid Expenses”. The outputs of the second process listed above might be “Approved Expenses” and “Rejected Expenses”.

The sixth column is “… and we give it to …”. These are the recipients of the outputs listed in the fifth column. In this case the recipient of the Valid and Invalid Expenses could be “Employee’s Manager”. The recipient of “Rejected Expenses” would be the Employee while the recipient of “Approved Expenses” could be the Travel Expense Data Repository.

Be sure to keep implementation details out of this analysis. You don’t want solutions to be constrained by using specifics such as “email:, “reports”, “database”, etc.

In the next post, I will continue the discussion of Event Discovery and show how, once you have a few events listed, you can use these events to discover more events and get the complete scope of the project.

Requirements Analysis using Event/Response and Use Cases – Analysis Sequence

Planning

Getting requirements right is a process. Your business stakeholders will rarely (if ever) be able to give you all of their requirements without some method of generating relevant questions to draw the requirements from them. What I am going to present in this and the following posts on this topic is NOT a new way to document your old thinking. It is a new way to think about requirements.

The deliverables created from this approach are:

  • Identification of all processes in scope
  • Documentation of the specific Use Cases for each process
  • Identification of all of the stakeholders that interact with the business processes
  • Creation of a framework with which you can generate and execute your test cases

Many analysts start and end their requirements elicitation with “functional requirements” (e.g. “I need to search by Last Name” or “Requests for time off need to be approved by the manager”). In the Event/Response/Use Case approach, functional requirements are derived from the Use Cases at the end of the analysis process.

The analysis sequence is as follows:

  • Business Objectives
  • Project Objectives (1st cut)
  • Event Model
  • Project Objectives (verified)
  • Use Cases
  • Functional Requirements

In the next post, I will discuss how the Business and Project Objectives are defined and used in the Event/Response methodology.

Requirements Analysis using Event/Response and Use Cases – Overview

Initiation

This is the start of a multi-part series on my favorite requirements elicitation technique: the Business Event/Response Analysis. Early versions of this methodology were developed in the late 1980’s by some of the great system development minds of that era. Since then it has evolved and I have adapted it to meet the needs of whatever organization in which I am working.

There are some that think you can gather requirements by just asking the sponsors and users “what do you want?”. Needless to say, this method will generate incomplete requirements and tends to start and end with functional requirements. In the latter half of the project when large requirements gaps are discovered, the sponsors/users blame the analyst and vice versa.

When I teach on this topic, I tell the analysts it is their responsibility to gather complete requirements. Given this, we need a method that will (1) generate the appropriate questions to ask, (2) ensure that we have the complete set of requirements, and (3) allow us to derive the functional requirements from the model.

The Business Event/Response method meets these desired outcomes. The advantages are:

  • It helps the Business Analyst create the questions needed to draw the requirements from the Business Owner, even if the Analyst has no knowledge of the business area.
  • It organizes the requirements in the context of Business Processes and Usage to promote better understanding.
  • The output serves as a starting point for defining the testing scope and scenarios.

In the upcoming posts I will describe this method in detail.