Componentization is the process of atomizing (breaking down) resources into separate reusable packages that can be easily recombined. Simply put, software componentization is when you break your software system down into smaller easily identifiable pieces that have well-defined interfaces – and you do this in a specific way.
The promise of software componentization is five-fold:
- Complexity Management: having a manageable unit of software functionality enables design time tools and run time tools to help developers divide and conquer their increasingly unwieldy device software.
- Product Flexibility: the ability to easily replace a component when product requirements change provides product flexibility.
- Product Reliability: matured components that meet well-defined specifications and get re-used increases product reliability.
- Time-to-Market: re-use of components in new products accelerates product development and lowers cost
- Collaboration: a common format for software implementations helps multiple companies collaborate more easily.