What is componentization (component-based development)?
Componentization is an approach to software development that involves breaking software down into identifiable and reusable pieces that application developers can independently build and deploy. These components are then stitched together through a series of network connections that rely on a standard interface model, such as SOA, CORBA, JavaBeans or COM+.
Benefits of componentization
Component-based development offers a number of benefits to software developers, often in the form of collaboration. Reusing components that meet defined, verified specifications can help accelerate product development, increase software reliability and cut down on the need for new code. Component-based development also allows developers to readily replace components to address changing requirements or unexpected failures. Finally, this approach also provides an opportunity to spread workloads across multiple servers, providing better scalability, availability and failover options.
The history of componentization is often traced back to 1968, when software engineer and programmer Douglas McIlroy introduced the concept during a presentation at the NATO conference on software engineering, titled Mass Produced Software Components. This idea achieved mainstream recognition and popularity within commercial enterprises up through the 1990s, as companies like IBM and Microsoft ramped up the release of software components and models aimed at component-based development.
Today, these same componentization concepts guide new levels of abstraction and partitioning through software architecture models and deployment techniques like microservices, containers and serverless computing. While the underlying details vary from industry to industry, this often plays out as a form of functional componentization that focuses on coordinating software application services across meticulously segmented and defined domains of application and business logic.