A component is a modular (cohesive), deployable (portable), replaceable (plug-and-play), and reusable set of well-defined functionalities that encapsulates its implementation and exports it as a higher-level interface. Why use components? Reusability, productivity, composability, adaptability, scalability, reliability, and many other features make component-oriented design and development very useful especially in enterprise frameworks. | Software design and architecture Lecture notes Chapter 32