Component-Based Software Testing with UML

Traditional, non-component-based software development in its purest form is typically performed in a top-down fashion in which the whole system is broken down into consecutively smaller parts that are individually tackled and implemented. Each part of such a system is specified, designed, and coded exactly according to the specification of the superordinate part that subsumes it. Hence, all the modules and procedures in such a custom development are crafted exactly to fit the overall application, but only that. In contrast, the main idea in component-based development is the reuse of existing building blocks that are usually quite generic, and that have been initially developed with no particular application context in mind, or with an entirely different application context of an earlier development. So, component-based development in its purest form is typically performed in a bottom-up fashion. In fact, it is a composition activity in which the whole system is put together out of more or less suitable parts that are already available in a component repository in a form that should somehow map to the requirements of the overall application.
In practice, the two approaches are intermingled. On the one hand, traditional development also applies component principles when it uses already existing functionality from system libraries or domain-specific modules. The lowest level of reuse is achieved when the system is implemented in source code. In theory, source code instructions and library calls may be regarded as the most basic generic building blocks that may be reused in a traditional...