The Unified Modeling Language (UML) has been widely accepted as the standard
language for object-oriented analysis and design. UML provides generic
concepts, supporting multiple views of the same information and poses few
constraints during modeling, allowing great flexibility within the analysis and
design stages; while avoiding the fragmentary nature of structured analysis, by
providing a smooth transition from use case models (requirements) to analysis
models (specifications) and then further down to design models and source code.
Software inspection is a well-known method of cost-effectively verifying
documents; its benefits are generally accepted, with success stories regularly
published. Many articles reports a thirty to forty times return on investment
for every hour devoted to inspection These benefits are derived from applying
inspection early in the lifecycle. By inspecting products as early as possible,
major defects will be caught sooner and will not be propagated through to the
final product, where the cost of removal is far greater. An unresolved question
is "How to verify UML models?" Given the interconnectivity of the
multiple views, this is far from straightforward. While many situations are
amenable to static analysis, only a human expert can resolve many of the
issues. Hence, an inspection approach seems an obvious choice. Despite, the
success of inspection processes, little work exists on the adoption and
specialisation of the generic inspection process into specific domains.
So, How do we verify these models?