Component-Based Software Testing with UML

Software testing is a widely used and accepted approach for verification and validation of a software system, and it can be regarded as the ultimate review of its specification, design, and implementation. Testing is applied to generate modes of operation on the final product that show whether it is conforming to its original requirements specification, and to support the confidence in its safe and correct operation [71], [91]. Appropriate testing should be primarily centered on requirements and specification not on code, which means that testing should always aim to show conformance or non-conformance of the final software product with some requirements or specification documents. Source code provides a great deal of information to guide the testing efforts according to testing criteria [11], but it cannot replace specification documents as a basis for testing. This is because code is a concrete representation of abstract requirements and design documents, and testing is supposed to show conformance of the concrete implementation with the abstract specifications. Testing based merely on source code documents shows that the tested program does what it does, but not what it is supposed to do.
The Unified Modeling Language (UML) has received much attention from academic software engineering research and professional software development organizations. It has almost become a de-facto industry standard in recent years for the specification and the design of software systems, and it is readily supported by many commercial and open tools such as Rational's Rose, Verimag's Tau, and VisualThought. The UML...