Component-based software engineering involves assembling systems out of reusable software components. A component model defines standards for component properties, interfaces, and composition. Developing components separately from systems allows components to be reused across applications. Architectural designs organize how components fit and work together to meet quality requirements.