We are all accustomed to building an application where a single code base consists of all the functional components of an application, closely tied together to achieve a certain desired result. These applications follow a rigorous development approach where the functioning and architecture of the application is first thought of during the initial requirement-gathering and design phases, and then the rigorous development of the application starts.
It is only after all the components have been developed and thoroughly tested that an application enters the production stage, where it is deployed on the infrastructure for regular use. This model is shown in the following diagram:
This process ...