Tuesday, March 20, 2012

Thinking about the requirements


Users don't know what they want until you show it to them.
-Unknown

As good requirements are trickling in, it is important to think about their implications and how all the requirements are interrelated. After all, we are putting together an entire solution that will meet the requirements in a seamless manner. Two or more requirements in combination can actually generate a third requirement. Let’s examine this over-simplified example.

Requirement 1: The system will be able to receive alerts via CAP 1.1 and CAP 1.2.
Requirement 2: The system will allow the user to distribute incoming messages via CAP 1.1 and CAP 1.2 through a variety of channels to include CCTV video displays, speaker arrays, telephone speakerphones, computers and SMS.

So this is pretty straight forward; we receive alerts via a specific protocol and the user can send the message out via a wide variety of systems. Let’s see how it would play out in real world.

An alert comes in and the user sees the alert. The user goes into the CCTV system to publish it to displays. Then the user taps into the speaker array system and does Text to Voice to sound off the alarm, then the user taps into the phone system and transmits the recording to the phone system, then the user goes into another system to send the alert to PC and finally to the last system to send out the notice through SMS. In the end, the process took much longer than expected and the user is not happy and the distributed message may not be relevant anymore.

A derived requirement in this scenario could be:
Requirement 3: The system will provide a standard interface for transmission of messages from Requirement 1 through channels in Requirement 2.

In this scenario the user would receive the message, go through some checkbox list of systems that the message needs to go out of, click a button and voila!

Business users will not be able to proactively see the solution in the skeptical light that engineers can. As such, an experienced project team should develop additional requirements to improve end-user experience and usability. Naturally, these “good ideas” need to be vetted through the customer prior to being included in the design requirements.

There is much more to properly gathering and documenting requirements. However, I keep running into this scenario and as such wanted to address it.