Requirements Analysis Using Event/Response and Use Cases – Event Discovery Part 6

Planning

For those of you that are familiar with Data Modeling, there is a technique you can use involving the Entity Relationships that can help you discover events you may have missed. Entity Relationships are part of the Business Rules and are expressed in terms such as “A Customer may purchase one or more Products” and “A Product may be purchased by zero, one or more Customers“.

Whenever the term “zero” is expressed in an Entity Relationship, that is of special interest to the Business Analyst looking to discover events. In the above example, where a Product does not necessarily have to be purchased, that could lead you to questions such as “Is there an expiration date? If so, what then?”, or “Is there a point which the price is reduced to induce sales?”.

Also in the example above, the Customer-to-Product relationship did not have the “zero” (at least on the first pass at the model). Event Analysis may help you discover zero relationships where one was not initially defined. For example, you could ask the SME’s (Subject Matter Experts) “Can a Customer be someone who has not purchased a product?”. That goes to the very heart of what the organization considers a “Customer”. One answer might be “Well, we allow people to sign up for our mailing list even if they haven’t purchased anything yet”. In this case, that person is a Customer, so the relationship is revised to state “A Customer can purchase zero, one or many Products“.

Once you know the events that define that zero relationship you can ask follow up questions such as “Is creating and maintaining a mailing list in the scope of this project?”. I have found exploring these zero relationships very valuable in real world projects.

Requirements Analysis Using Event/Response and Use Cases – Event Discovery Part 5

Planning

This is Part 5 in my series of posts on Event Discovery. The technique I present in this post is very effective in cases where you know little or nothing about the business area under study.

Using the methods presented in my prior posts, you are able to discover Entities (e.g. “Customer”, “Sale”, “Store”, etc.) for which you need to store persistent data. As you flesh out the data needs for each Entity, here are some powerful questions that enable you to discover more events:

  • For new data elements (i.e. data that is not currently being captured in the existing system), ask “Why do you need this data? What will it enable you to do?”. The answers will be business processes that can be entered on the Event List. Once you have at least one cell of information for a row on the Event List, you can fill in the rest of the row with the relevant questions. For example, if the new piece of data is “Customer Mobile Phone #”, your business partners may say “We want to conduct text message marketing campaigns”. That answer leads you to the questions on the Event List such as “What Event starts a campaign”, “What is the input data and who/what provides it”, “What are the business processes”, “What are the outputs and who/what receives them”.
  • For existing data elements (i.e. data that is currently captured by the existing system) ask “If I took this data away from you, what will it prevent you from doing?”. This is a question that will get your business partners to think deeply about the answer, as the thought of losing something usually heightens awareness. For example, if the data element in question is the Employee Address, this may prompt your business partners to reveal all of the direct mail items sent to an Employee (an example would be “Start or open enrollment for benefits), and these would have corresponding events that initiate them.

The Event Discovery series continues in the next post.

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 int eh Entities to discover more Events.