Introduction to Components
What are Components?
Szyperski lists several characteristics of components: composition, units of deployment and resuability.
Other projects have also offered what a component may be:
Some descriptions of a component are:
- A nontrivial, nearly independent, and replaceable part of a system that fulfils a clear function in the context of a well-defined architecture. A component conforms to and provides the physical realization of a set of interfaces. (Philippe Krutchen, Rational Software)
- A runtime software component is a dynamically bindable package of one or more programs managed as a unit and accessed through documented interfaces that can be discovered at runtime. (Gartner Group)
- A software component is a unit of composition with contractually specified interfaces and explicit context dependencies only. A software component can be deployed independently and is subject to third-party composition. (Clemens Szyperski, "Component Software")
- A self-contained piece of software that can be independently deployed and plugged into an environment that provides a compatible socket. It has well-defined run-time interfaces, and it can cooperate out of the box with other components (Peter Herzum, Olivier Sims, "Business Component Factory")
Criteria for Components
Meyer: "Seven Criteria for Components"
- May be used by other software elements (clients).
- May be used by clients without the intervention of the component's developers.
- Includes a specification of all dependencies (hardware and software platform, versions, other components).