When modeling large software systems it is common to break the software into manageable subsystems. UML provides the component classifier for exactly this purpose. A component is a replaceable, executable piece of a larger system whose implementation details are hidden. The functionality provided by a component is specified by a set of provided interfaces that the component realizes (see "Black-Box View"). In addition to providing interfaces, a component may require interfaces in order to function. These are called required interfaces. The functionality of a component's provided interfaces is implemented with one or more internal classifiers. These are typically classes but can be other components (see "White-Box View"). Components should be designed to be reused, with dependencies on external interfaces, strong encapsulation, and high cohesion. |