Componentization is an approach to software development that involves breaking software down into identifiable pieces that application developers independently write and deploy. These components are then stitched together with network connections and workflows.
Componentization aims to facilitate software development through the use of reusable components that connect together using standard interfaces. The components themselves must conform to a known model that dictates how the components connect. Common componentization models include SOA, CORBA, JavaBeans and COM+.
Benefits of componentization
Component-based development offers a number of benefits. In the short-term, componentization enables software development teams to more easily collaborate. Reusing components that meet well-defined specifications also helps accelerate product development while increasing software reliability. As a result, teams can bring better quality software to market faster.
In the long-term, componentization provides flexibility. Components can be easily replaced or added to address changing business requirements. Component-based development also spreads workflows across multiple servers, which improves software performance.
The concept of componentization has been around since 1968 when Douglas McIlroy gave a presentation titled Mass Produced Software Components at the NATO conference on software engineering. However, it wasn’t until the 1990s, when IBM and Microsoft released their software component models, that componentization became mainstream. Today, infrastructure trends like microservices, containers, and serverless computing help facilitate componentization.