Functional and Nonfunctional Requirements Specification and Types
Functional and Nonfunctional Requirements Specification and Types
Nonfunctional
Requirements:
Specification and Types
Clearly defined requirements are essential signs on the road that leads to a successful
project. They establish a formal agreement between a client and a provider that they are
both working to reach the same goal. High-quality, detailed requirements also help
mitigate financial risks and keep the project on a schedule. According to the Business
Analysis Body of Knowledge definition, requirements are a usable representation of a
need.
Classification of requirements
Prior to discussing how requirements are created, let’s differentiate their types.
High-level requirements cascade down to specific details
A search feature allows a user to hunt among various invoices if they want to credit an
issued invoice.
Here’s another simple example: As a guest, I want a sofa that I can sleep on overnight.
We don’t recommend composing SRS for the entire solution before the development
kick-off, but you should document the requirements for every single feature before
actually building it. Once you receive the initial user feedback, you can update the
document.
It’s essential to make the SRS readable for all stakeholders. You also should use
templates with visual emphasis to structure the information and aid in understanding it.
If you have requirements stored in some other document formats, link to them to allow
readers to find the needed information.
Use cases
Use cases describe the interaction between the system and external users that leads to
achieving particular goals.
Actors. These are the users outside the system that interact with the system.
Goals. The purposes of the interaction between the users and the system are outlined
as goals.
Description
Pre- and Post- interaction condition
Basic interaction path
Alternative path
Exception path
Example:
Use cases. Usually drawn with ovals, use cases represent different use scenarios that
actors might have with the system (log in, make a purchase, view items, etc.)
System boundaries. Boundaries are outlined by the box that groups various use
cases in a system.
Actors. These are the figures that depict external users (people or systems) that
interact with the system.
Associations. Associations are drawn with lines showing different types of
relationships between actors and use cases.
Example:
User stories
A user story is a documented description of a software feature seen from the end-user
perspective. The user story describes what exactly the user wants the system to do. In
Agile projects, user stories are organized in a backlog, which is an ordered list of
product functions. Currently, user stories are considered to be the best format for
backlog items.
A typical user story is written like this:
Example:
As an admin, I want to add descriptions to products so that users can later view these
descriptions and compare the products.
User stories must be accompanied by acceptance criteria. These are the conditions
that the product must satisfy to be accepted by a user, stakeholders, or a product
owner. Each user story must have at least one acceptance criterion. Effective
acceptance criteria must be testable, concise, and completely understood by all team
members and stakeholders. They can be written as checklists, plain text, or by using
Given/When/Then format.
Example:
Here’s an example of the acceptance criteria checklist for a user story describing a
search feature:
I – Independent
N – Negotiable
V – Valuable
E – Estimable
S – Small
T – Testable
Independent. This means that you can schedule and implement each user story
separately. This is very helpful if you implement continuous integration processes.
Valuable. A story must be valuable to the customer. You should ask yourself from the
customer’s perspective “why” you need to implement a given feature.
Estimatable. A quality user story can be estimated. This will help a team schedule and
prioritize the implementation. The bigger the story is, the harder it is to estimate it.
Small. Good user stories tend to be small enough to plan for short production releases.
Small stories allow for more specific estimates.
Testable. If a story can be tested, it’s clear enough and good enough. Tested stories
mean that requirements are done and ready for use.
The features should be decomposed to the point at which the lowest level parts can’t be
broken down any further.
Example:
An example of a functional decomposition
Software prototypes
Software prototype is an umbrella term for different forms of early stage deliverables
that are built to showcase how requirements must be implemented. Prototypes help
bridge the vision gaps and let stakeholders and teams clarify complicated areas of
products in development. Traditionally, prototypes represent how the solution will work
and give examples of how users will interact with it to accomplish their tasks.
Mockups. Once wireframes are ready, they are turned into mockups, visual designs
that convey the look and feel of the final product. Eventually, mockups can become the
final design of the product.
Design prototypes. These documents contain visuals and allow for some interface
interactions, like scrolling, clicking on links, or filling in forms. Design prototypes can be
built from scratch using HTML and CSS, but most UX teams use prototyping services
like InVision.
Example:
To learn more about how UX design processes are handled, check our case study
about building a travel management solution for Cornerstone, a corporate SaaS
provider, in which we used all three types of design requirements.
Nonfunctional requirements
Nonfunctional requirements describe how a system must behave and establish
constraints of its functionality. This type of requirements is also known as the
system’s quality attributes.
Usability
Usability defines how difficult it will be for a user to learn and operate the system.
Usability can be assessed from different points of view:
Efficiency of use: the average time it takes to accomplish a user’s goals, how many
tasks a user can complete without any help, the number of transactions completed
without errors, etc.
Security
Security requirements ensure that the software is protected from unauthorized access
to the system and its stored data. It considers different levels of authorization and
authentication across different users roles. For instance, data privacy is a security
characteristic that describes who can create, see, copy, change, or delete information.
Security also includes protection against viruses and malware attacks.
Reliability
Reliability defines how likely it is for the software to work without failure for a given
period of time. Reliability decreases because of bugs in the code, hardware failures, or
problems with other system components. To measure software reliability, you can count
the percentage of operations that are completed correctly or track the average period of
time the system runs before failing.
Example: The database update process must roll back all related updates when any
update fails.
Performance
Performance is a quality attribute that describes the responsiveness of the system to
various user interactions with it. Poor performance leads to negative user experience. It
also jeopardizes system safety when it’s is overloaded.
Example: The front-page load time must be no more that 2 seconds for users that
access the website using an LTE mobile connection.
Availability
Availability is gauged by the period of time that the system’s functionality and services
are available for use with all operations. So, scheduled maintenance periods directly
influence this parameter. And it’s important to define how the impact of maintenance
can be minimized. When writing the availability requirements, the team has to define the
most critical components of the system that must be available at all time. You should
also prepare user notifications in case the system or one of its parts becomes
unavailable.
Example: New module deployment musn’t impact front page, product pages, and check
out pages availability and mustn’t take longer than one hour. The rest of the pages that
may experience problems must display a notification with a timer showing when the
system is going to be up again.
Scalability
Scalability requirements describe how the system must grow without negative influence
on its performance. This means serving more users, processing more data, and doing
more transactions. Scalability has both hardware and software implications. For
instance, you can increase scalability by adding memory, servers, or disk space. On the
other hand, you can compress data, use optimizing algorithms, etc.
Final words
All the software projects include the information boundaries that describe the product
and project goals. These boundaries are drawn in the project requirements and
specifications. The value of creating a software requirement specifications is in the
optimization of the development process. Software requirement specifications answer
all developer’s questions about the product that are required to start the work. The
functional specification is approved by the client and ensures that developers are
building what the customer wants.