In this post, I going to teach you how to perform a Gap analysis.
But before we get there, let's travel back to 2007 when I was a brand new technician...
Picture this, you are a newly hired service technician and you arrive at a customer site. Customer comes up to you and tells you that the air handling systems they ordered are ready to be pulled into the building automation system.
What do you do?
I faced this exact dilemma back in 2007. I showed up to customer site for my monthly service visit, the customer proceeded to "ambush" me with this task. In my youthful ignorance I said sure why not, I mean after all it was just pulling in some air handlers into the building automation system,
How hard could that be?
As I would soon find out, it can actually be quite hard to pull in systems to a building automation system if you haven't planned it out.
Now for those of you who are reading my articles for a while, you probably know that I can be pretty stubborn. So I proceeded to spend an entire day trying to get these air handlers pulled into the building automation system. In retrospect, it seems quite obvious that you can’t pull LON handlers into a BACnet building automation system. The problem was, at that point my career I had barely begun to dabble in systems integration.
Now nine years later, a couple of pounds heavier, and with a little less hair, I know exactly what I did wrong.
The problem actually began about six months before when the customer casually mentioned that he was looking to buy some new air handlers. He asked me what I recommended and I suggested a specific brand and that was that.
At the time I didn’t even think, how is he going to pull these into the building automation system?
That my friends is where it all went wrong…
You see, even if you know the existing system you can’t count on the new system natively working. There are simply too many variables that could cause your existing system to not work with the new system.
Which brings us to the main point of this article,
You’ve probably heard the saying, if you don’t know where you’re going, you’ll never get there.
Well this post covers how to know where you’re going to make sure that you get there.
Summary of Lesson #4
In this post, I’m going to lay out a clear step-by-step plan, to show you how you can perform a gap analysis on your integrations.
By the time this post is over you will know:
- What a gap analysis is
- Why it is critical to perform the gap analysis on any of your integrations prior to purchasing any products or executing any work
- How to perform a gap analysis
Alright you ready for the fun?
Lesson #4: How to Use a Gap Analysis to Detail out the New Systems
What is a gap analysis
A gap analysis is a key part of the integration process but what is it?
In a gap analysis you take the functional specifications you created in your use case and you compare your existing system(s) to the functional specifications. In laments terms you look at the capabilities required for the use case and the capabilities you currently have.
The missing capabilities become the gap.
Why is it critical to perform a gap analysis
Think about it, imagine you go and decide to buy some really cool video game... Ok, I am admitting to one of my really bad hobbies here.
But, you go and buy this game and you don't check if your computer can run it. You come home and all you have is a $60 dollar brick because the game won't run on your computer.
Now, for most $60 dollars isn't the end of the world. Imagine though, if you had went and purchased a $300,000 analytics package.
You didn't go and check if your BAS could provide the required information for the analytics software to run. Now, here you are with this $300,000 software package and you don't have the points in your system that the analytics software needs! So, now you have two choices, cancel the contract and absorb any termination fees OR go and spend the time, money, and effort to add all the necessary points to your BAS.
Chose your poison..
How do you perform a gap analysis
Ok Phil, you've sold me on the need to perform a gap analysis but how do you do one?
Quite simply you take the requirements of your use case and you put them next to your current capabilities.
Let's see this in action, by continuing our scenario, laid out at the beginning of this series, where we are integrating two BAS into a single graphical user interface (GUI).
Step 1: Identify your use case requirements
In the beginning of this series we created a use case for our single GUI integration. While we laid out several use cases, we did not identify the technical requirements of our single GUI. Let's do that now.
Our ultimate goal is to have a single GUI that the two existing BAS can tie into to provide full access and control of real-time systems and historical data. This GUI shall use existing logins and not require new logins.
Let's break this into bite size chunks.
We need a way to capture and control the existing data points from the two BAS. The new GUI supports BACnet/IP
We need a single database or a way to access the existing two databases and pull them into the new GUI. The new GUI supports SQL
We need to allow the users to continue to use their current logins and passwords. If the user changes their login or the user is removed then the GUI needs to reflect this. The new GUI stores its user name and passwords in a SQL database but does not support external user names and passwords.
Step 2: Identify your current capabilities
Currently our two BAS systems support BACnet/IP, have SQL databases, and they have SQL databases for user accounts.
The two BAS's however, do not have a common data model.
Step 3: Map out the present and missing requirements
Because of these requirements we know that we have:
- Database connectivity (SQL)
- Protocol connectivity (BACnet/IP)
- User Interfaces in SQL in the two BAS and new GUI
The big gap here is, how do we get and manage the new user logins into the new GUI?
Step 4: Identify a solution to close the gap
Ok, so we have a gap. We need to find a way to transfer the user name and logins to the new GUI.
Problem is, we need to maintain the state of the logins.
What does maintain the state mean?
In any database you have what is called the state, the state is the current condition, or snapshot if you will of the database. In order to achieve our scope of using the user accounts and passwords that exist in the BAS we need to make sure that the user database for the GUI reflects, is consistent with the accounts that exist in the new BAS.
Minor problem, what if two users accounts with the same name exist?
This is quite easy to solve, we can simply import both user names and using some SQL magic we can make them unique. When someone tries to login the GUI will check both passwords to see if that is correct. Naturally this assumes that Bob on system A is the same Bob on system B.
Because of this, it's often a good practice to pull all user names look for identical names and request the user change their name. This is done in the beginning of the integration process.
So far we have identified 2 issues:
- Maintaining the database state
- Dealing with identical user names
Now we need to document our resolution for these two issues. Let's say that in order to maintain the database state it will take 8 hours a week of a Database Administrator at $60/hr.
The facility manager doesn't want to carry this cost.
What can he/she do?
This is where alternate solutions come in play. The facility manager will ask the integrator or rather the integrator will present alternate options to the facility manager.
The facility manager can now go and chose between accepting the cost of managing database state OR going and looking at a second option, like making folks create new user names and passwords on the single GUI...
There you have it, the ultra critical, often skipped, step of performing a gap analysis. In next weeks post I will be discussing the topic of Detailing out the Physical and Logical Integration Points. In this topic I will guide you through how to form your integration diagrams and scope.
I'm curious, how do you perform gap analysis' or do you not perform them at all (it's ok to admit that we're all family here in the BAM Nation)?
Let me know in the comments below.
By, the way, if you're not already a member of the SBA nation I encourage you to subscribe below!