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).