A restriction that is imposed on the choices available to the developer for the design and construction of a product.
An influencing factor that cannot be changed, and that places a limit or restriction on a possible solution or solution option.
Constraints are requirements that limit the solution space beyond what is necessary to meet the given functional requirements and quality requirements.
CO-1: The system’s design, code, and maintenance documentation shall conform to the Process Impact Intranet Development Standard, Version 1.3.
CO-2: The system shall use the current corporate standard Oracle database engine.
CO-3: All HTML code shall conform to the HTML 5.0 standard.
Requirements that incorporate or are written in the form of solution ideas rather than needs are imposing design constraints, often unnecessarily, so watch out for those.
Sources of constraints include: ■ Specific technologies, tools, languages, and databases that must be used or avoided.
■ Restrictions because of the product’s operating environment or platform, such as the types and versions of web browsers or operating systems that will be used.
■ Required development conventions or standards. (For instance, if the customer’s organization will be maintaining the software, the organization might specify design notations and coding standards that a subcontractor must follow.)
■ Limitations or compliance requirements imposed by regulations or other business rules.
■ Interfaces to other existing systems, such as data formats and communication protocols.
■ Restrictions because of the size of the display, as when running on a tablet or phone.
CON-1. The user clicks at the top of the project list to change the sort sequence. [specific user interface control imposed as a design constraint on a functional requirement]
CON-2. Only open source software available under the GNU General Public License may be used to implement the product. [implementation constraint]
CON-3. The application must use Microsoft .NET framework 4.5. [architecture constraint]
CON-6. All textual data used by the application shall be stored in the form of XML files. [data constraint]
Note that some of these constraints exist to comply with some perhaps-unstated quality expectation. Ask why each constraint is imposed to try to reach that underlying quality requirement. Why must open-source software be used, as stated in CON-2? Perhaps because of a desire for increased modifiability, so that’s the requirement that leads to the constraint.
When specifying constraints, the following categories of constraints should be considered:
▪ Technical: given interfaces or protocols, components, or frameworks that have to be used, etc.
▪ Legal: restrictions imposed by laws, contracts, standards, or regulations
▪ Organizational: there may be constraints in terms of organizational structures, processes, or policies that must not be changed by the system.
▪ Cultural: user habits and expectations are to some extent shaped by the culture the users live in. This is a particularly important aspect to consider when the users of a system come from different cultures or when Requirements Engineers and developers are rooted in a different culture to the system’s users.
▪ Environmental: when specifying cyber-physical systems, environmental conditions such as temperature, humidity, radiation, or vibration may have to be considered as constraints; energy consumption and heat dissipation may constitute further constraints.
▪ Physical: when a system comprises physical components or interacts with them, the system becomes constrained by the laws of physics and the properties of materials used for the physical components.
▪ Furthermore, particular solutions or restrictions demanded by important stakeholders also constitute constraints.