Models-as-assets change how we work as software developers. Just as thirty years ago, developers learned to relax, forget about register allocation, and love programming language compilers that conferred hardware-platform independence, so too will we learn to relax, forget about distribution, and love model compilers that confer independence from the software platform.
We can therefore look forward to the day when software developers search the Web for reusable models that have the required functionality, and then combine those models with model compilers that deliver the appropriate performance for the event rates and data access patterns which can, in turn, be combined with common infrastructure for the enterprise. Subset the models, add a little functionality perhaps, and away we go.
The incremental cost will reside primarily in selecting the appropriate models and linking them together. The models themselves will need to be constructed, of course, but once they're complete, they will have greater longevity than code because they will evolve independently of other models.
We developers will not hack out code, or even models. Rather, we will do the following:
When it comes time to change the application, we will make the changes in the application model, marks, or mapping functions, as appropriate, and leave the models of the implementation technologies alone. When we need to retarget an application to a different implementation environment, we will select the models for the new environment and regenerate. There will be no need to modify the application models. Costs will be lower; productivity will be higher, based on increased reuse of models; maintenance will be cheaper and each new UML model that's built will become an asset that can be subsequently reused.
Note that this vision is already a reality in the hardware world. Hardware designers already have online libraries where vendors offer designs for sale. These designs constitute valuable (and, controversially, protectable) intellectual property.