On software projects, nonfunctional technical requirements such as performance, security and reliability must be considered throughout the development lifecycle, regardless of the methodology you follow. Here is a primer on defining these requirements, and best practices for avoiding some common pitfalls.
Whether you gather them at the outset of your software development project or wait to deal with them at the bitter end, sooner or later you will be forced to adhere to a set of technical requirements, also known as software quality attributes or nonfunctional requirements. While it is arguably not imperative that you document such requirements, you must consider them when designing your system. Otherwise, in due course, one of your customers will reject your system because it doesn’t meet their expectations in terms of performance, security or reliability.
Independent of the development process you follow, nonfunctional technical requirements such as performance, security and reliability should be considered throughout the software lifecycle. Some organizations capture all of the requirements upfront. Others follow a more iterative approach, putting together a prototype, demonstrating it to the customers, gathering feedback and gradually improving the functionality of their system.
In the telecommunications industry, for example, systems