Assembling a statically linked, standalone application is easy. In the simplest scenario, all of the binaries that constitute a standalone application are linked into a single file during development. Deploying the application is an all-or-nothing proposition. If you have possession of that single file, then the application is correctly deployed. If you do not have the file, then you do not have the application.
Actual practice is more complex. There are many reasons that you need to split applications into separate components:
Different applications may share the same components. It is wasteful to deploy a separate copy of a component for each application that uses it.
Applications change over time. If you make ...