How to Model Requirements and Capabilities

In the previous article, we covered the four categories of requirements: functional, non-functional, Symbol, and System. Let us now discuss how to determine the requirements that will meet the needs of a project. Listed below are some of the most common categories:


A technical specification will typically consist of a set of functional requirements, which specify what a system must do to satisfy a particular business need. In contrast, a functional requirement is more concrete, describing the behavior that the system should exhibit when someone clicks on a button. Non-functional requirements are more ambiguous and are meant to cover any leftover items. These requirements can directly affect the quality of the system and the user experience.


During the requirements phase, non-functional requirements and capabilities are important considerations. While the term “functional requirement” applies to specific behaviors of a system, non-functional requirements and capabilities are more generalized. In a way, they are equivalent: they describe the user experience and the user interface. Identifying these attributes early in the development cycle will allow you to test against them and ensure that the system fulfills those needs.


Object and symbol capabilities define the requirements of the objects within a system. Object capabilities relate to the entire object, whereas symbol capabilities pertain to specific functions. For example, if a symbol is called bar.o, there are two instances of that symbol: bar.o and bar.b. Each instance has different capabilities. They follow a convention, which the runtime linker can use to determine the best instance.


Systems that provide essential functions and services can be described as systems with system requirements. These are quantitative requirements that define how the system should perform. They define individual performance attributes and may include multiple criteria. A systems capabilities define its quality of use, as well as how it will meet specific business requirements. In the context of information systems, system capabilities are used to define the capabilities of individual components and the systems overall. As such, the requirements document should be a concise and comprehensive document that specifies the capabilities of the system.


The process of modeling requirements and capabilities begins by defining scope, which describes the business activities and behaviors that must be achieved in order to transform a company’s current state to its desired future state. This process includes defining pain points and areas for improvement and efficiency, and analyzing business drivers and objectives. Once the scope is defined, it is time to determine the capabilities needed to achieve those goals. After scoping, a capability model will help define implementation opportunities and help identify the right solution.


The process of verification and validation involves documenting requirements, but the exact questions can vary. The goal of validation is to understand what end users actually need and whether their needs are met. A typical example of validation is a hiker arriving at the end of a trail, and determining whether or not the route was successful. Invalid requirements can lead to derived artefacts of lower level requirements and other systems. These derived artefacts will need to be addressed and validated before the product is released to the market.


The distinction between the two is important when implementing systems. When using the model of requirements and capabilities, you have to take care to link each requirement to the appropriate capability. The functionalities of a system are determined by its requirements, while its capabilities are determined by its architecture. The differences between the two are important because each of them affects the other. A good structure for requirements is to map the functionality of a system to its capabilities and vice versa.