Non-Functional Requirements Reading

Introduction

The categories of non-functional requirements defined below are just as important as all the functionality you provide in your system. This is because IT systems that process data in this interconnected global world can't bring value if we can't maintain them, they can't scale as the organization grows, they aren't easily accessible to users, they're not secure, and they are overly slow.  These types of requirements provide important context for your system and give a set of expectations to the system that isn't related to functionality.  Non-functional requirements also are critical to helping you avoid surprises in your system development related to a client's expectations not being met. 

Description & Definitions

Maintainability.  This sounds like fixing holes in technology is just like filling potholes on the roadways.  This is not what is meant regarding the non-functional requirement of maintainability. Instead, IT maintainability means creating systems that are easy to change or modify without great expense allowing the technology to preserve its value as it changes over time.

Changes in the global situation, as well as technology advances, lead to frequent changes in strategies and tactics by upper management. Government regulations are another source of demands for frequent change. This means that the software systems running the business must be able to be changed or modified without great expense to adapt to the user’s ever-changing needs.

Additionally, an entrepreneur’s goal is to get a basic system to market as soon as possible.  This means you will deploy a phased approach by getting a Minimum Viable Product (MVP) into the marketplace and continue adding functionality or features that distinguish the system from all the others.

Your maintainability goal is to plan for these strategic shifts and future phases and create an infrastructure and software architecture that can handle these dynamic demands. The clean coding with clear comments that you learned in your programming classes is relevant here, but you must think more broadly: choose tools that allow module changes, and ensure that the system is designed with enhancements in mind.

Here is an elementary example:  once a system is in production, permission levels should be set by a user interacting with a data entry screen with advanced administrative privileges. No one should need to go into the code and set permission levels. Likewise , web content updates for client situations in MIS 374 should not require knowledge of html or even visual studio—web content should be part of the system update process, just like such routine tasks as adding an employee.

Portability.  How many electronic gadgets do you use daily?  Are you able to retrieve the same information across the multiple platforms?  If yes, then you know the developer planned for the non-functional portability requirement.

The most common cross-platform concern is browser compatibility.  What looks good in Internet Explorer doesn’t always look good in Firefox or Chrome. Access by mobile phone is an increasingly common portability requirement for systems that depend on high user volume for profitability. Global companies sometimes require a special process for systems that are critical to operations in remote locations with undependable internet access—a problem you may encounter professionally, but not for MIS 374 clients.

Consider these portability issues.  Someone in South Korea is trying to access a North American website but there is no translation software.  How much business is the North American company losing by failing to plan for the non-functional portability requirement?

Someone in Saudi Arabia is using an Arabic keyboard to access a North American site but the IT specialist did not plan for translation of non-English keys.  The North American business will not be making any sales to potential customers who happen to be using non-English keyboards. Worse, the strange characters might cause a system crash if the system does not handle non-standard characters.

Our globalized economy makes it imperative for the IT specialist to take into account the non-functional portability requirements of the system.

Scalability.  Imagine you launched your website yesterday morning and this afternoon you go to Google analytics and read that you had 5 views and two sales.  The following day you see that you had 50 views and 25 sales.  Wow! And the next day your fantasy comes true and your website gets one million hits and then it crashes hard.  If only you had considered the non-functional requirement of scalability. 

Also, as the organization grows, internal systems must be ready and able to handle the increased usage.  Instead of implementing a recovery plan for a crash, implement a non-functional scalability requirement plan early, enabling growth and prosperity.

Security.  Non-functional security requirements are dependent on production requirement concerns regarding fraud and theft of money, identity, and ideas. The tiered permission levels required for your MIS 333k project are access level security measures. For production systems, you need to consider company policies on maintaining permissions, as well as checks and balances for any functionality involving money.  Security also can encompass system availability (aka "uptime") so you need to consider how this system is hosted or what hardware it's running on top of.  Lastly, you should consider the integrity of the data which relates to how the data is structured and stored.  Consider how you increase the integrity of the data as it's entered on the form and what constraints you add to the fields in the database to ensure data is captured and stored in a clean manner. 

Performance. Should a system be "fast"?  If so, how fast is fast enough.  In some cases, the responsiveness and speed of an application could matter greatly but one could argue in some cases it does not.  Make sure you consider the importance of this by asking your client questions about performance needs and setting clear, measurable performance criteria.   

As you consider performance be sure to ask or consider the following aspects:

  • When does the system get used the most by certain users?
  • When do reports and calculations need to run?
  • Where is the source of the data you're pulling in searches or reports?  In this case specifically, you don't want queries or reports hitting the same data that users are maintaining at the same time through their screens because this could contention and slow response speed on user screens.  Ultimately a case like this could affect the design of your database to create a separate reporting table perhaps.  So knowing early on how performance matters can help you in proper design of the system.

Purpose

How your system performs is just as important as how it functions.  Creating a Non-functional Requirements Summary will ensure a maintainable, portable, scalable, and secure system providing a high-quality user experience and a low total cost of ownership (TCO).

Creating a Non-functional Requirements Summary

To create your Non-functional Requirements Summary start with the Non-functional Requirements template found below.  Replace the definition of each category of non-functional requirements with a sentence or two summarizing the relevant facts about the context for your project for that category. Fill in the non-functional requirements for each area.  PRO TIP: Don't confuse non-functional requirements with functional requirements.  To avoid doing this, think of them as "non-functional expectations" of the system. Then fill in the corresponding priority levels for each requirement/expectation.  Add more rows for additional requirements as necessary. For an example see the Non-functional Requirements Summary below.  

Benefits

Your end goal is to develop a system that has all the functionality agreed upon and includes planning for non-functional requirements including maintainability, portability, scalability, performance, and security. Ultimately, you take into account your client’s current situation while simultaneously planning for their future technology needs.  By looking at the non-functional requirement summary examples below you can see that these requirements are dependent on the firm’s situation.  The non-functional requirements for creating a system for the non-profit, Latinitas, with only a volunteer “staff” are similar to an organization with full time employees, who still want as little time spent maintaining a website as possible, but are different from a place that has hired tech support and has budget for IT Staff. The goal is always to match your non-functional requirements with your client’s situation.

Later in the semester, we will cover strategies for improving the maintainability of systems. For now, focus on MIS 374 examples, your background in MIS classes, internships, and your own experience of using systems to complete the non-functional requirements analyses that are part of your Group Project 2 and your Project Charter for your client project.

Figure 1.  Non-functional Requirements Summary for the Woom Bikes

NOTE: You may think that some of these requirements may be vague or not clear.  You want to avoid that.  A reminder that the examples below are not perfect and should not be blindly copied.  Ensure your expectations are clear and actionable.  

Non-functional Requirements for onTrax app for Woom Bikes:

Maintainability, Portability, Scalability, Security, Performance

 non-functional requirements example

 

High-Quality Delivery Tips

  • Clearly outline maintainability, portability, scalability, security, and performance requirements and expectations.
  • Requirements under each category describe the environment that must be in place for the system to perform the non-functional requirements optimally.
  • Ensure that the context issues for each of the sections are consistent with the details in the case or your client project situation.
  • Make sure that these requirements and priorities are consistent with other parts of your analysis in Root Cause, overlapping functional requirements, and Risk Analysis.  
  • After you identify, prioritize, and get signoff from the client, incorporate these requirements with your functional requirements in your project plan or task board to ensure they are not missed in your project scope.
  • Also, use non-functional requirements as validations to do during the testing portion of each sprint.

Templates & Examples: