Hi everyone, I'm Yulia Kosarenko,
author of the book "Business Analyst: a Profession and a Mindset".
I also love pictures. I love models and visuals, and that's why I have here
a new series of videos called "Pictures Speak".
To me, pictures indeed speak and they can say so much
in just one diagram and one model.
And that's why for any business analyst or architect or anybody else
It's a really useful skill to be able to draw a simple model to help communication.
We have so many ways we can make pictures!
We can use formal diagrams, just informal drawings,
we can use cartoons, photographs, checkpoints – anything you can imagine
just to make that communication easier and just to convey the meaning.
Today, we're going to talk about context models.
Can you do a context model in five minutes? Let's see!
So let's talk about a context model: what it is and when we would create it.
A context model can be created for really anything that you're interested in.
It can be a business, process or system, and the goal is to show what
the main entities are that this business, process or system interacts with.
It's really about understanding the context in which it exists.
Our main goal is to show high-level data flows in and out,
because my interaction with other entities usually means exchange of data,
and sometimes it could be also exchange of physical objects or money,
for example, products, supplies and funds.
So when I'm working on a context model,
I don't need to make things very complicated.
I have to stay at a very high level, which really means I want to name
those external entities or systems or processes that my system interacts with.
I want to identify the nature of those interactions,
and I want to name the interactions – that's all I want.
What we will do today is we will use Visio and create a very simple diagram.
You can create it in PowerPoint, you can create it in Paint,
in any type of graphical interface – whatever works for you.
So I'm going to use my Visio and I've just created a blank diagram.
and I'm going to zoom in so that it's easier for us to see.
and let's just make a very simple example.
My simple example will be a catering company.
Imagine you're going to start a catering company,
and you are thinking: "Well, what does it mean?"
So here is your catering company, and maybe you start by thinking:
"Well, what am I going to do? What will be my product?"
I'm going to cook some meals and sell that to my customers.
So most definitely I will be interacting with customers. Here is my customers.
and there will be a connection between a catering company and a customer, okay?
What else is in my context?
What are other important entities that I need to interact with?
I am going to copy the box and I will say: "Well, I need some suppliers,
because I will need to buy ingredients, I will need to buy maybe boxes,
I may need to buy some pots and pans, or napkins, or forks,
or whatever else is required for me, whatever else i'm offering in my product.
So I'm definitely going to be interacting with suppliers.
Is that it, at the high level? Well, because it's a catering company,
and I always need to think about what's governing my business,
because any business usually needs to be governed by certain rules and regulations,
so because we're dealing with food and food requires to be safe,
there's definitely going to be some governing bodies.
Let's imagine that we have some governing bodies,
and then we will connect them here.
On a very high level, I have just created a context model for my catering company.
This probably isn't enough because I want to explain what those interactions are.
For example, what is interaction with customers?
I'm going to be delivering catered meals to my customers, and in exchange
my customers are going to pay me my price.
So I'm going to create a couple of text boxes here, just to display catered meals.
This is what my customers will receive. Let me make it a little bigger.
And then my customers are going to pay for it, okay?
So that's part of my business model.
In addition, my suppliers are going to supply things to me:
maybe they'll supply ingredients, and they'll supply all of my napiery and cutlery
to provide to the customers. I'm going to make it all nice, the same font.
That's going to be what suppliers provide to me,
and I'm going to have to pay for that.
Now, governing bodies – what is my interaction with them?
Well, maybe they will be checking food safety at my enterprise.
Maybe they will provide certain food safety rules that I will need to comply with.
And if I don't comply with those rules maybe I'll need to pay fines.
Look at this at a very high level: this is my context model for my new business,
and this shows my main types of entities I will interact with.
This will be my very high-level context model
that I can create probably in 2 minutes.
Now, let's think what we can do in 5 minutes.
Let me just take the same model as an example, and let's say
"What kind of governing bodies, what kind of suppliers,
what kind of customers might I have?"
If I want to do a little bit more analysis, I may want to say, well, let's look at this.
In my Suppliers category, I might have several groups of suppliers.
So if I were to align these suppliers here,
I could then say I'll have different types of suppliers.
Maybe some of them supply ingredients, for example, I will purchase fruits,
vegetables and meats from them.
And maybe some other suppliers will provide specialty orders, for example,
if my customer put in a wonderful order that includes tiramisu, and maybe
I don't happen to make tiramisu myself, maybe I will subcontract it to someone else,
and then include it in the overall order.
I can do the same with customers if I want to continue my analysis, I can say
well, what kind of customers do I need to cater to?
Are there different categories of customers? What I can do is I can say
let me assume that I'll have two types of customers:
perhaps I'll just have private customers and companies.
So, if I'm doing a more detailed analysis then I may need to
have different requirements for these.
So I'll have Private and I'll have Companies,
that will have perhaps corporate accounts.
Let me call them Corporate Clients.
So this is a little more detail that I've added about my context model.
I could do the same with Governing Bodies.
What if there is more than one governing body? Then I could also make connectors
from each different type of supplier and each different type of customer.
This is an example of a context model as it relates to business.
Now, let's think of a context model for a specific system or application.
That's what one of traditional uses for context models is. Let's imagine now that
my catering company requires a new order processing system.
So I want to receive orders online and then I want to process them.
This is my order processing system that I want to build.
What would be its context? Let me just think about it. Imagine that
customers go online, on the website, and that's where they place their orders.
First of all, maybe my order processing system wants to interact
with my customer website or maybe other customer channels, because customers
may be calling on the phone, calling the contact center. Let me just say that
I'll have different customer channels from where the orders may come from.
What else? In addition, I need to receive payments for my orders.
Once I create an order, customers should be able to pay for it, so I probably will need
to communicate with a payment system.
Imagine that my business already has a payment system, because today I receive
payments online, for example, or in paper form.
My new order processing system needs to be able to communicate with it as well.
So let me call it Payment Processing System.
I'm going to make all of them the same size and same font size.
Now, let's talk about data. What would be the data exchanged
between order processing system and these two other entities?
In this case, from different customer channels I'll receive order details, because
a customer will indicate, for example, on the website, this is what I want to order.
I may also receive information about the customer themselves, for example,
if it's a new customer, maybe, they'll give me their address, name, etc.
so Customer Account or Customer Information.
This information can come from various channels
through which I can communicate with my customers today
Now, what information will I be exchanging with the payment processing system?
First of all, I will probably need to communicate the order amount
in order to request proper payment and process it, and maybe on the way back
the payment processing system needs to send me back a confirmation
of the payment or payment status, because I need to know whether
the payment was successful or not.
Needless to say that you can also use arrows to make it very clear but because
we're just using some examples we're not going to do that.
On the other hand, if my customer is communicating with me through
different channels such as website or maybe an app on their mobile phone,
they'll provide order details and customer information, but in return
I probably want to give them order status and notifications to let them know
what's going on with their order.
That would be the data flowing from the order processing system to the customer.
I'm just going to make it a little bit different colour. Wonderful!
What else? What other systems will my order processing system
need to communicate with? Perhaps, you already have
an inventory management system where you manage the inventory.
If you're already providing catering, you just perhaps don't have
an order processing system – instead you just have a call center.
Maybe you already have an inventory management system that monitors
whether you have enough ingredients
and when you need to purchase more ingredients.
Let's say Inventory Management System. Let's draw another line
because these 2 systems will need to interact and exchange data.
What is this data that they need to exchange?
My order processing system most likely will need to confirm the new orders
and pass that information because every order implies
that certain ingredients are required.
So, Order Details, such as what was requested and how much of each
ingredient is required, needs to go to inventory management system.
And then perhaps the inventory management system in response may
let me know if, oh, there are not enough ingredients – you ordered something but
we actually need to purchase it. So maybe there will be some low inventory alerts
that I may need to receive, for example, to let the customer know
okay, this particular ingredient is low, so we may not be able to deliver it on time,
or perhaps you want to ask for expedited order or you may just make a decision to
immediately make a new purchase or request more ingredients.
Whatever your business rules require, you may need some information back from
the inventory management system. Let's see what else you might need?
If you are catering, then you probably need to deliver your orders, so you
must have some way of delivering them through your internal logistics department
or even a delivery partner. Let's say that you have a delivery system that
allows you to coordinate all deliveries, let's call it Delivery Dispatch System.
That system manages how many trucks you need, how many drivers you need
to deliver all the orders that you have, for example, for the next day.
This system will need to receive order details, address and date,
to allow for planning, and I would expect that this good delivery system will in turn
let me know what the delivery status is as the delivery is happening.
For example, if there are any issues with delivery, I may need to pass
that information to the customer, say, to the customer app.
This is a very simple example of a context model for an order processing system
that shows you what other systems it needs to interact with and what are
the main groups of data that it needs to exchange.
This context model can be then used for more discovery, more exploration,
planning of more detailed risk requirements and of course also
for data architecture activities such as more detailed conceptual data modeling,
data dictionary, understanding of data mapping, and so on.
I hope it was helpful. Remember that a picture can speak a thousand words and
pictures are very helpful during the analysis process, and if you are
doing a discovery with your client and if you can draw a quick picture using Visio,
using a scratch pad, using PowerPoint or anything else that you have handy,
that's very helpful and that means that
you'll be much more efficient as a business analyst.
Thank you for watching and see you next time !