Component-based software engineering (CBSE), also calledcomponent-based development (CBD), is a style ofsoftware engineering that aims to construct asoftware system fromcomponents that areloosely coupled andreusable. This emphasizes theseparation of concerns among components.[1][2]
To find the right level of component granularity,software architects have to continuously iterate their component designs withdevelopers. Architects need to take into accountuser requirements, responsibilities, andarchitectural characteristics.[3]
CBSE grew out of earlier paradigms such asstructured programming andobject-oriented programming, but it places greater emphasis on building software by assembling and integrating pre-existing components. Unlikeobjects, which typically encapsulate both data and behavior, components are higher-level constructs that provide well-defined interfaces and can be deployed independently.[4]
Component orientation underlies many modernsoftware frameworks andarchitectural styles, includingservice-oriented architecture (SOA),microservices, and widely usedfrontend frameworks such asReact,Angular, andVue.

For large-scale systems developed by large teams, a disciplinedculture and process is required to achieve the benefits of CBSE.[5]Third-party components are often utilized in large systems, raising issues ofintegration,licensing, andsoftware quality.
The system can be designed visually with theUnified Modeling Language (UML). Eachcomponent is shown as a rectangle, and aninterface is shown as a lollipop to indicate a provided interface and as a socket to indicate consumption of an interface. This graphical representation helps clarify the relationships and dependencies between components.
Component-based usability testing is applied when components interact directly with theend user, ensuring both functionality and user experience are preserved when components are reused or replaced.
CBSE principles are used across multiple domains:
While component-based development improvesmaintainability and reusability, it introduces challenges such as: