You can even design them to make it reusable, extensible, but you can only achieve the benefit based on the source code. This is annoying. The code must be compiled and link together to produce the monolithic program. However the distributing encourages you to make business logic independently. We need component programming.
Components are program unit, which can be deployed independently.
We have to find a way to produce part of the business and deploy it independently. The OLE is one of the specifications I knew in the beginning of early nineties. It really fascinates me for quite a while. Look, you just produce some component obeying the rule of OLE, you get your program used by Microsoft Word. It is amazing, although the life to write OLE is a nightmare.