Componentization is a seductive software development practice. 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 (i.e. by following a component model).
The promise of software componentization is five-fold: