Design
verification and validation requires reviewing the design artifacts
according to an inspection checklist in order to evaluate the validity
of the design and verify its correctness.
As design artifacts are being created, it is important for the
developer to test parts of the design by creating prototype programs
that can be used as a proof-of-concept tool. This allows developers to
quickly identify the hardest design problems that will need to be
solved. It also helps in indentifying and culling out requirements that
cannot be accomplished with current skillsets, toolsets, and
technology. Such requirements are unfeasible and thus invalid.
As design artifacts are completed, they should be subjected to thorough
peer reviews. To ensure a consistent level of review rigor, these
reviews should be performed according to an inspection checklist.
The following inspection checklist provides guidance on some things to look for when reviewing a design artifact.
Design Artifact Inspection Checklist
- Verify that all applicable requirements are addressed by the design artifact.
- Verify that the design artifact correctly fulfills the requirements that it addresses.
- Verify that the design
artifact does not contain "gold-plating". Stated another way, ensure
that the design does not contain features that the customer has not
required.
- Verify that the design artifact follows organizational policy such as style guides and approved modeling notations.
- Verify that the design correctly follows the notational rules of whatever modeling language is used.
- Verify that the design
contains the correct level of detail. Ensure that the design does not
"gloss over" the really difficult or complex parts of the system.
- Verify that the design does not make any invalid assumptions.
- Verify that the design clearly specifies all assumptions made.
- Verify that the design can be implemented given the available toolset and skillsets of the developing organization.
- Verify that the design honors all interface specifications that apply.
- Verify that the design components contain cohesive sub-components.
- Verify that the design components are not coupled (any more than is absolutely necessary).
- Verify that the design
does not break any architectural patterns. For instance, if a layered
model has been specified such that layers can only call across or down,
but never up, make sure that the design does not break that convention.