What are the characteristics of a component?
- Reusability − Components are usually designed to be reused in different situations in different applications. However, some components may be designed for a specific task.
- Replaceable − Components may be freely substituted with other similar components.
- Not context specific − Components are designed to operate in different environments and contexts.
- Extensible − A component can be extended from existing components to provide new behavior.
- Encapsulated − A A component depicts the interfaces, which allow the caller to use its functionality, and do not expose details of the internal processes or any internal variables or state.
- Independent − Components are designed to have minimal dependencies on other components.
https://www.tutorialspoint.com/software_architecture_design/component_based_architecture.htm