Component-Based Software Testing with UML

Component-based software development and software testing are two subdisciplines of what today is generally understood as software engineering. Software engineering is a discipline that attempts to bring software development activities, and testing is part of that, more in line with the traditional engineering disciplines such as civil engineering, mechanical engineering, or electrical engineering. The main goal of software engineering is to come up with standard ways of doing things, standard techniques and methods, and standard tools that have a measurable effect on the primary dimensions that all engineering disciplines address: cost and quality. Software engineering is still in its relative infancy compared with the more traditional engineering disciplines, but it is on its way.
Component-based software development directly addresses the cost dimension, in that it tries to regard software construction more in terms of the traditional engineering disciplines in which the assembly of systems from readily available prefabricated parts is the norm. This is in contrast with the traditional way of developing software in which most parts are custom-designed from scratch. There are many motivations for why people allocate more and more effort toward introducing and applying component-based software construction technologies. Some will expect increased return on investment, because the development costs of components are amortized over many uses. Others will put forward increased productivity as an argument, because software reuse through assembly and interfacing enables the construction of larger and more complex systems in shorter development cycles than would otherwise be feasible. In addition, increased software quality is...