Will future business applications be built on shallow knowledge or deep knowledge?
by
Tom Hill
The pundits estimate that most future business applications will be constructed using a combination of 10% custom code and 90% vendor-provided reusable software components.
The reusable components will take the form of new web services and conventional APIs. Should we be concerned that the percentage of custom business application code will diminish from 100% to 10% in less than 50 years? A more positive historian would say that code reuse will be moved from zero to ninety percent over this cycle.
The more alarming business question might be – How will we (or anyone) understand the new business applications that are constructed using vendor-provided software components. The future application will be developed and maintained using an incomplete and shallow knowledge of how (or how efficiently) a component performs a given task. Wait a minute, this sounds a lot like a major goal of object-oriented design and programming. So it can not be all bad.
Creating a business-critical application with shallow or incomplete component knowledge is unacceptable to professional Systems Engineers.
How do professional SEs gain deep knowledge of vendor-provided components? Before 1983, SEs obtained a deep understanding of packaged mainframe components by examining internal program logic documentation and source code. Yes, source code was delivered with most purchased IBM software components, making IBM and its customers the first open-source community.
Since February 8, 1983, when IBM announced an “object code only” policy, most commercial off the shelf product vendors do not distribute source code.
A restricted copy of source code is provided with open source community components. The phrase “clone and own” is used to describe the internal reuse policy of the open source community.
The “object code only” deployment of system components reduces our ability to fully understand the component. Vendor-supplied documentation provides the applications SE with a shallow knowledge of the component. Shallow knowledge can tell us “what [component event] just happened,” however, deep knowledge is required to understand “why the event happened and what event is going to happen in the future.”
Engineering research to gain deep knowledge of a component without source code need not stop at vendor-supplied documentation and product training. The professional SE eventually builds a model of significant components by a scientific method of;
- Retaining a deep understanding of the complete operational environment (hardware, operating system, network, the architecture of similar components) and observing the component’s behavior.
- Documenting a hypothetical model
- Using the model to record algorithms and external structures to predict additional performance characteristics
- Testing the component and recording limit behaviors to update the model