A Component is a modular unit with well-defined Interfaces that is replaceable within its environment. It serves at the core of Component-based development.
A Component has one or more provided and/or required Interfaces (potentially exposed through Ports), and its internals are hidden and inaccessible other than as provided by its Interfaces.
Although it may be dependent on other elements in terms of Interfaces that are required, a Component is encapsulated and its Dependencies should be designed such that it can be treated as independently as possible.