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.
[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] 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.