Component-based software engineering (CBSE) is an approach that relies on reusable software components. It emerged due to limitations of object-oriented development in supporting effective reuse. CBSE uses independent and interchangeable components that communicate through well-defined interfaces. Middleware provides support for component interoperability. CBSE processes involve both developing components for reuse and developing systems using existing reusable components.