In this blog we’ll take a look at requirements, particularly the different types of requirements described in the BABOK(r), and how to write them to be effective for implementation and testing. Let’s start by defining what a requirement is. Simply put, a requirement is a feature that a product or service must have in order to be useful. For example, two requirements for a customer relationship management system might be to allow users to update the payment terms for an account and to add new customers.
The IEEE Glossary of Software Engineering Terminology provides a more precise definition. The same definition is also used by the BABOK®. Both define a requirement as a
- condition or capability needed by a user to solve a problem or achieve an objective.
- condition or capability that must be met or possessed by a system or system component to satisfy a contract, standard, specification, or other formally imposed document.
- documented representation of a condition or capability in (1) or (2).
Not all requirements are expressed at the same level of detail and specificity. Some might be high level requirements expressed by the business sponsor (e.g., reduce the cost of invoicing customers) while others might be very specific requirements that describe a function needed by a particular user (e.g., allow me to click on a customer name and then display that customer’s account history).
Requirements Classification
The BABOK® defines the following requirements types: business, stakeholder (or user), functional solution, non-functional (or quality of service), solution, constraint, and transition. Note that these terms are overloaded and have different meaning in different organizations. For example, a stakeholder requirement is often referred to as a business requirement in some organizations and a business requirement is sometimes called a business goal or project objective. Functional solution requirements are also often called technical requirements, detailed requirements, or system requirements. So, it is important to understand the semantics of the terms being used.
Business Requirement
A business requirement is a higher-level requirement that defines a business objective or goal for the project or initiative. For example, a business requirement for installing an asset-tracking system at a University might be to “reduce theft or misplacement of fixed assets by 10% each year.”
Business requirements describe the reasons for initiating a project. Each stakeholder requirement must be traceable back to a business requirement in order to be considered in-scope.
Stakeholder Requirement
A stakeholder requirement defines the need of a particular stakeholder, such as a project sponsor, end user, or regulatory body. These requirements are commonly defined through use cases as they describe how a stakeholder intends to interact with the solution. Stakeholder requirements define product features. For example, a stakeholder requirement for an asset-tracking system at a University might be to “allow IT Specialists to record fixed assets.”
Solution Requirement
Solution requirements describe specific characteristics of the solution both in terms of functionality and quality of service. Solution requirements are sub-classified into functional and non-functional requirements.
Functional Requirement
Functional solution requirements define details of the expected behavior of the solution. For example, a functional solution requirement for an asset-tracking system at a University might be to “display each asset’s ID, description, acquisition cost, current location, previous locations, and current responsible party.”
Non-Functional Requirement
A non-functional solution requirement defines a quality of service requirement such as those relating to speed, response time, throughput, usability, security, privacy, availability, and so forth. For example, a non-functional solution requirement for an asset-tracking system at a University might be to “display an asset’s current location and responsible party within 2 seconds after having its QR code scanned 90% of the time.”
Transition Requirement
Transition requirements express how the solution will be placed into service and how to transition from the current state of the organization to its future state. These requirements, unlike the others, are temporary and require that the solution exist. For example, a transition requirement for an asset-tracking system at a University might be to “enter asset information from the current file records into the asset-tracking system through manual data entry.”
SMART Requirements
Writing requirements that follow the SMART template is a good starting point. SMART requirements are specific, measurable, achievable, relevant, and testable. Note that there are alternate but equally valid definitions of SMART used in practice. SMART requirements apply equally to functional as well as non-functional (quality of service) requirements.
Specific
A good requirement is specific and does not rely on generic or vague terms and descriptions. It should be precise enough to avoid being misinterpreted and be non-compound. In other words, a requirements definition should state a single requirement, so conjunctions such as “and”, “or”, “except”, and so forth should be avoided. Split the requirement into several requirements if necessary.
Measurable
The requirement must specify a metric that can be measured. Common metrics are time, performance, response time, volume, and so forth.
Achievable
The requirement must be attainable; in other words it cannot state a condition or capability that cannot be implemented.
Relevant
The requirement must address some need and must be traceable back to a business objective. It must be relevant to the project. This attribute helps manage project scope by only considering requirements that address an actual objective.
As a challenge question ask the stakeholders: “If this requirement were not implemented, would we still be able to achieve all of our business objectives?” If the answer is yes, then the requirement is not relevant and should be considered out-of-scope (or at least low priority).
Examples of SMART Requirements
The online course registration portal shall allow students who register for courses but have an outstanding balance to pay the balance online using one or more U.S. bank issued Visa, MasterCard, or American Express credit cards as long as the outstanding balance is less than $1,000.
The asset tracking system shall allow users authorized to view report to generate an end-of-month report that includes a list of all currently deployed assets along with their last known locations and responsible parties’ full names.
Examples of Poor Requirements
Requirements that don’t meet the SMART guidelines tend to be poor and lead to issues meeting the business and end users needs. Here are some examples of requirements that are not SMART compliant.
The system shall produce a periodic report that displays all assets data.
Why is this requirement poor? It does not specify what periodic means and it wants all data. All is too generic and creating a test for that would be difficult. What should happen if new fields were added to the assets’ records? Would that invalidate that requirement? Can you devise a set of test scenarios that demonstrate that the asset tracking system meets these requirements fully?
The system shall provide immediate feedback when an assets’ bar code has been scanned to indicate a successful scan.
This requirement is poor because the term immediate is impossible to implement. There is always a lag between the time and stimulus occurs (the barcode scan) and an action happens (the lookup of the asset and the display of its data).
So that’s it for now. Tell us, how do you define requirements in your organization and how do you measure the effectiveness of requirements.