Component-Based Software Testing with UML

During the development of an application, after we have decomposed the entire system into subcomponents, we will iteratively move these components toward more concrete representations, starting from high-level UML models, through lower-level models, to code that is ready to compile and execute. All the design and development decisions that we take when we move toward more concrete representations are concerned with the concretization dimension in an iterative development process, and the activity is termed embodiment [6], as illustrated in Fig. 5.1.
Embodiment typically involves a last manual step along the abstraction dimension before the artifacts can be processed automatically. The outcome of this last step is a representation, some kind of source code (e.g., Java source code) that translators can understand and transform into a final executable form. In accordance with the prevailing terminology, this code representation is called the implementation of a system [6]. Most implementations traditionally exist in the form of code in high-level programming languages such as Cobol, C, Ada, C++, Java, etc., but recently component platforms such as COM, CORBA, and EJB are becoming more the implementation representation of choice when it comes down to modern distributed component-based systems and service-oriented products.
In the case of component technologies and component-based development, embodiment takes a very specific form. In component-based application engineering with third-party units, quite in contrast with traditional custom development, embodiment is not typically concerned with turning an abstract representation (i.e., a...