Functional / Nonfunctional Requirements


Functional/Non-Functional Requirements
by  Madurski, RonaldNo presence information  on 5/27/2016 10:29 AM
Category: Practices

Functional/Non-functional Requirements
 
There are many ways to generate Functional Requirements (FR). One of my preferred methods is to start with a Mind Map or Structured Hierarchy. This artifact, which we introduced to illustrate the Principle of Subproblems, allows us to identify the problems and subproblems that we need solve in order to satisfy the business need. This specific example is from our On-Premise Private Cloud Proof of Concept (POC). Our Operational Need in this instance was to enhance the provisioning of servers in the Data Center. The information derived from that artifact is then used to document and track the requirements.
 
Remember the example provided last week of our Business Requirement (BR):
 
“We need to be able to send a message to individual agents”
 
This is a pretty generic, but powerful, requirement. The next step in the process is to decompose  this into Functional and Non-Functional Requirements (FR/NFR) . This is where the design starts to take shape. Continuing with the messaging BR, a possible decomposition of this BR would be that:
-          The system shall send electronic mail to agents
-          The system shall send SMS text messages to agents
-          The system shall send Voice messages to agents
-          The system shall identify agents individually
-          The system shall identify agents by agency
-          The system shall allow individuals to be associated with multiple agencies…
 
And so on until all of the use cases have been satisfied.
 
Non-functional requirements are typically somewhat generic and geared toward the “ilities” of a system. Reliability, Quality, Availability, etc… These tend to be the same from one system to another with varying degrees of implementation (e.g., 99% vs. 99.999% availability). Chuck Weindorf developed a suite of NFR which are systematically being applied to systems as time and/or needs arise.
 
The output of this step is the Requirements Document (or Requirements Traceability and Verification Matrix (RTVM) ) which will be updated throughout the process. A common form is a spreadsheet like our example and/or textual document. Mature organizations will typically have a vendor provided requirements management tool (Doors, Caliber RM, …) which makes the traceability much easier. (If you look closely you can find some mistakes in our traceability example which I had not noticed until I started writing this blog installment, these kinds of mistakes can be avoided by using a better tool). The Requirements Document can be split up into FR and NFR or combined into one document depending on the system’s needs. When we get into the Test step discussion we will see how this document can be used during testing to ensure all of our business requirements are being met.
 
The FR in this example are the items with an “Assoc ID” in the form of X.x, where X is the BR and x is the FR in order of appearance. I’ve worked with some analysts that like to use the ”x” to represent priority also but find that causes issues if the priority changes later in the process.
 
It is very common at this step to generate a conceptual solution design including high level component and logical network diagrams describing the interfaces to and from the proposed design. If a reference architecture exists the components can be associated with it to make sure nothing has been left out.