Software Constraints
A
software constraint is a
constraint that constrains the
architecture, design, implementation, or testing of a
software component.
The typical objectives of a software constraint are to:
- Ensure that some or all software components conform to
necessary architecture, design, implementation, and testing
constraints that have been imposed for business or technical
reasons.
The following are typical examples of software
constraints:
- Architecture Constraint:
“The application shall use a layered
architecture, whereby each layer may only access the layer
directly below it.”
- Design Constraint:
“All application software shall be modularized
into classes using object-oriented design
principles.”
- Implementation Constraints:
- “To the extent that it is practical, all
software components of the application shall be
programmed in the Java programming language.“
- “All Java software components shall conform to
the official organizational Java programming
standards.“
- Testing Constraint:
“The component shall include built-in self-test
software that automatically and continuously tests the
component while it is in operation.”
The following guidelines have been found to be useful when
producing software constraints:
- Do not unnecessarily constrain the architecture, design,
or implementation of software components.
- Some software constraints can be specified via
programming standards.