A component[1] in the Unified Modeling Language represents a modular part of a system that encapsulates the state and behavior of a number of classifiers.Its behavior is defined in terms of provided and required interfaces,[2] is self-contained, and substitutable. A number of UML standard stereotypes exist that apply to components.[1]
A component has an external and internal view, also known as "black-box" and "white-box", respectively. In its external view, there are public properties and operations. For its internal view, there are private properties and realizing classifiers and shows how external behavior is realized internally.[1]
A component may be replaced at design time or run-time by another if and only if their provided and required interfaces are identical. This idea is the underpinning for the plug-and-play capability of component-based systems and promotes software reuse.[2] Larger pieces of a system's functionality may be assembled by reusing components as parts in an encompassing component or assembly of components, and wiring together their required and provided interfaces.[2]
A component acts like a package for all model elements that are involved in or related to its definition, which should be either owned or imported explicitly. Typically the classifiers related to a component are owned by it.[1]
Components of a system are modeled by means of component diagrams throughout the development life cycle and successively refined into deployment and run-time.[1]
In diagrams, components are shown as a rectangle with the keyword «component». Optionally, in the right hand corner a component icon can be displayed. This is a rectangle with two smaller rectangles protruding from its left hand side. If the icon symbol is shown, the keyword «component» may be hidden as seen to the side.[1]