Customization
Customization of components makes the components reusable without the source code.
There are two phases where these customization can occur: assembly and deployment.
Assembly process takes the various components and defines a various connection between them and initial values.
Deployment process takes the output of assembly and updates the some values if necessary for deployment (mapping for security, initialize unset values,etc.).