Type | Short Definition or example |
---|---|
Integrability (system integration) | ‘System integration (SI) is an IT or engineering process or phase concerned with joining different subsystems or components as one large system. It ensures that each integrated subsystem functions as required’ [20]. SI methods are as follows:
|
Internationalization and localization | “localization revolves around combining language and technology to produce a product that can cross cultural and language barriers.” [21]
|
Interoperability |
“Interoperability is a characteristic of a product or system, whose interfaces are completely understood, to work with other products or systems, present or future, in either implementation or access, without any restrictions.” [22] Degree of operability
|
Legal and licensing issues or patent-infringement-avoidability | Things to consider:
|
Maintainability (code) |
Specifically, for software code and supported by an international standard (ISO/IEC 25010:2011). Maintainability is a set of attributes that bear on the effort needed to make specified modifications. It is often encompassed in the “modifiability” category of NFRs (IEEE framework for example) Some of the maintainability sub-characteristics are as follows:
|
Modifiability |
Modifiability encompasses two aspects: “Maintainability.
“Flexibility:
|
Network topology | Most of the time this will be decided at the solution design stage. However, if users are working from a cruise ship or even living for a few months in the International Space Station where it is almost impossible to deploy new equipment in timely fashion it might be of importance to your solution architect or supplier. |
Open source | Companies, stakeholders or projects might have reasons/biases/beliefs/preferences toward using or not Open Source software and code. Reasons that qualifies or disqualifies open source are often based on these criterias:
|
Operability |
“Purpose of Operability Requirements is to facilitate reliable operations with sufficient performance. The more requirements are addressed by software, the less repeating work for staff members, who then can pay more attention to improving automated operation and optimizing the system.” [23] It can be encompassed in multiple categories such as deployment, monitoring and manageability but always with a set goal of making the solution easier to operate and maintain through automation and reducing repetitive tasks. |
Operationnal Environment | ‘Your operating environment is influenced by several general areas. These areas summarize the external environment every organization operates in (…). Remember your operating environment is the outside circle influencing your business. Some of these trends and issues may even appear to come and go in slow motion. You may not need to watch them religiously but having an eye on them can be the key to your company’s boom — or bust. Although some of these issues may seem ridiculous to you, they may be someone else’s reality.’ [24] |
Performance and response time | This can be a different thing to different people but at the end the goal is to provide a good quality of experience (QoE) to the end-user. “Response Time measures the performance of an individual transaction or query. Response time is the amount of time from the moment that a user sends a request until the time that the application indicates that the request has completed.” [25] |
Platform compatibility | Compatible with a‘Specific computer hardware, as in the phrase “platform-independent”. It may also refer to a specific combination of hardware and operating system and/or compiler, as in ‘this program has been ported to several platforms’.’ [26] |
Privacy | Privacy concerns cover a wide range of information that can be collected, aggregated and acted upon.
They are often covered by industry codes, self-regulation, co-regulation, legislation and laws. |
Portability | ‘A software unit is portable (exhibits portability) across a class of environments to the degree that the cost to transport and adapt it to a new environment in the class is less than the cost of redevelopment.’ [27] |
Quality | “Quality is about satisfying applicable specifications. Quality is a simple matter of producing products or delivering services whose measurable characteristics satisfy a fixed set of specifications that usually are numerically defined.” [28] |
Readability |
“When a programmer builds software, they do so based on requirements which are likely to change in the future. Requirements change because software interacts with the real world which is dynamic. When these requirements change, the developer, who perhaps did not write the original version, must implement the new requirements. In order to do so, they read the original source code, understand the different abstractions, identifies what needs to change and then implements the changes. Readable source code facilitates the reading and understanding of the abstraction phases and as a result, facilitates the evolution of the codebase. Readable code saves future developers’ time and effort. Code readability is key for large software projects with many developers, and where the source code that is being written will have to be modified by another person.” [29] |
Reliability | ‘Reliability engineering is a sub-discipline of systems engineering that emphasizes dependability in the lifecycle management of a product. Dependability, or reliability, describes the ability of a system or component to function under stated conditions for a specified period of time.[1] Reliability is closely related to availability, which is typically described as the ability of a component or system to function at a specified moment or interval of time.’ [30]. (e.g. Monitoring, Mean Time Between/To Failures – MTBF/MTTF) |
Reporting | Unless required, paper reports coming out of printers the size of a washing machine are things of the past. Reporting is often an afterthought of a project even with the new delivery methods available to IT. Analyst should define these requirements early in the project stage as they might have direct impacts on the solution architecture and data storage.
|
Resilience | “Resilience is the ability of the network to provide and maintain an acceptable level of service in the face of various faults and challenges to normal operation. Resilient networks aim to provide acceptable service to applications:
|
Resource constraints | Constraints related to physical hardware resources such as memory, processor speed, display resolution, network bandwith. Often the case in embedded system such as mobile phone, ATM, IoT devices etc. |
Reusability | “Reuse can be achieved through different modes. Compositional reuse involves constructing new software products by assembling existing reusable assets, while generative reuse involves the use of application generators to build new applications from high level descriptions.” [31] |
Robustness | “The degree to which a system or component can function correctly in the presence of invalid inputs or stressful environmental conditions” [32] |
Scalability (horizontal, vertical) |
“Scalability is a desirable attribute of a network, system, or process. The concept connotes the ability of a system to accommodate an increasing number of elements or objects, to process growing volumes of work gracefully, and/or to be susceptible to enlargement… We consider four types of scalability here: load scalability space scalability space-time scalability structural scalability” [33] |
Security | Main domains where security is of concern
|
Stability | Stability is not related to the concept of a software being “stable” from a user standpoint but is a model tightly intertwined with the reusability and maintainability categories. The Stability Model is built using three main concepts:
|
Supportability | In software engineering and hardware engineering, serviceability is also known as supportability. It refers to the ability of technical support personnel to install, configure, and monitor computer products, identify exceptions or faults, debug or isolate faults to root cause analysis, and provide hardware or software maintenance in pursuit of solving a problem and restoring the product into service. Incorporating requirements for serviceability facilitating features typically results in more efficient product maintenance and reduces operational costs and maintains business continuity. |
Testability | In short, these requirements have to be documented to make sure that everything can be tested. Software testability is the degree to which a software artifact (i.e. a software system, software module, requirements- or design document) supports testing in each test context. If the testability of the software artifact is high, then finding faults in the system (if it has any) by means of testing is easier. |
Throughput | Software testability is the degree to which a software artifact (i.e. a software system, software module, requirements- or design document) supports testing in a given test context. If the testability of the software artifact is high, then finding faults in the system (if it has any) by means of testing is easier. |
Transparency | In human-computer interaction, whereby a system after change adheres to its previous external interface as much as possible while changing its internal behavior. That is, a change in a system is transparent to its users if the change is unnoticeable to them. |
Usability | ‘Usability is a quality attribute that assesses how easy user interfaces are to use. The word “usability” also refers to methods for improving ease-of-use during the design process. Usability is defined by 5 quality components:
|
Volume | Refers to the expected volume of users, requests and data a solution will have to deal with. Further down the road of development these requirements will make it to load/volume testing. |
Want to Know More
More on NFR Categories (Part 1 of 2) here.
Acronyms, Abbreviations & Terms
Acronyms
Acronym | Definition | Details |
Abbreviations
Abbreviation | Definition | Details |
Terms
Term | Definition | Details |
Works Cited
|
||
|