
790
Glossary
component
A larger part of the overall system that is often separately deployable. Component-
based development involves decomposing the overall functionality into a series
of individual components that can be built and deployed separately. This allows
sharing of the components between applications that need the same functionality.
Each component is a consequence of one or more design decisions, although its
behavior may also be traced back to some aspect of the requirements.
Components can take many forms, depending on the technology being
employed. The Windows platform uses dynamic linked libraries (DLLs) or
assemblies as components. The Java platform uses Java Archives (JARs). A
service-oriented architecture (SOA) uses Web Services as its large-grained
components. The components may implement front-end logic (e.g., a “File
Open Dialog”) or back-end logic (e.g., a “Customer Persistence” component).
A component can and should be verifi ed using component tests before the
overall application is tested using customer tests.
component test
A test that verifi es the behavior of some component of the overall system. The
component is a consequence of one or more design decisions, although its be-
havior may also be traced back to some aspect of the requirements. There is
no need for component tests to be readable, recognizable, or verifi able by the
customer or business domain expert. Contrast this with a customer test, which
is derived almost entirely from the requirements and should be verifi able by
the customer, and with a unit test, which verifi es a much smaller component. A
component test lies somewhere in between these two extremes.
During test-driven development, component tests are written after the cus-
tomer tests are written and the overall design is solidifi ed. They are written as
the architectural decisions are made but before the individual units are designed
or coded. They are usually automated using a member of the xUnit family.
constructor
A special method used in some object-oriented programming languages to con-
struct a brand-new object. It often has the same name as the class and is typically
called automatically by the runtime system whenever the special operation new is
invoked. A Complete Constructor Method [SBPP] returns a ready-to-use object
that requires no additional tweaking; this usually implies arguments must be
passed to the constructor.