For many years I have campaigned for the use of components in software, with, I am afraid, little success. Hardware engineers have long ago adopted the concept, designing and constructing systems from integrated circuit components. The functionality of these components is fixed; the hardware designer lives with what is available.
They do not try to make minor "improvements" to the actual components, they concentrate their skills on designing systems instead. Only the chip designers at Intel, IBM, Motorola, etc. design the lower level components, specifically tailored to mass market demands. The effect is all too clear, the ultra reliable, incredibly cost effective PC is burdened with badly designed, over large, over expensive and unreliable software. Compared to the hardware the software is very unreliable and it is a sad commentary on the IT industry that we put up with it and accept it as the norm.
Software components have advanced a little of late however, particularly in the use of components for developing GUI interfaces. Most of the better development systems around today support the concept of re-useable components, but there is a long way to go. IBM has tried to establish the use of components for business applications with the San Francisco project and there is some activity aimed at creating libraries of Java components for business applications. Nevertheless the industry seems to be about 10 years behind where it should be by now.
It is not clear why hardware engineers have been so much more effective than software engineers. Perhaps software gives so much freedom that it is difficult to give it up! Software has also been side-tracked into the object model, a more complex concept. There is no equivalent to inheritance or polymorphism with hardware. If we draw an analogy, simpler software components (properly defined and rigorously coded subroutines, not available in source code form) should have been the industry standard before embarking on the more ambitious object model.
As usual however the Internet and its associated technologies are proving to be a catalyst. Java and similar concepts in .NET are not unique to the Internet but their acceptance has been accelerated by the increased freedom from commercial constraints it offers. The idea of an Application Server providing functionality such as text processing, etc. is not new (it used to be called time-sharing!). It offers high level functional components directly to the user, rather than the developer. But with help of standard APIs many of these services can be used by other applications. Again this is not new, but now we are seeing the all important acceptance of standards. This is as applicable to local business and office functions as much as for Web based services.
However the Internet brings with it new problems as well as solving some older ones. Most organisations have made a start in e-commerce by building consumer-to-business (C2B) applications. Initially these were simply "on-line catalogue" systems but now they are integrated with order processing systems, etc. Most organisations now have in-house skills with integrating new Web from-end "appliance servers" with legacy systems. As a result there is an increasing awareness of opportunities for business-to-business e-commerce, and an attendant awareness that it is a lot more difficult! B2B involves interaction with other companies who will inevitably have their own IT systems, which will be different and often incompatible. To date the bulk of B2B trials have been kept simple by constraining them to two participants. But real world B2B will involve inter-working between multiple companies and systems (despite what IBM, Sun and Microsoft would like, that means heterogeneous systems), some of which will be in chains and thus further remote.
The solution to these problems is to provide a special set of services, referred to as Web Services, which are in effect a set of high level components designed to provide the various applications with information about potential participants, independent of which technology is being used.
At the moment there are two groups working on standards for Web Services protocols, (not to be confused with actual Web Services applications), Web Services Interoperability Organisation (WS-I) and the Liberty Alliance. The former was initiated by IBM and Microsoft and includes BEA, H-P, Intel and Oracle. The latter was begun by Sun, but they have now joined WS-I. They are working with specific standards defined by W3C and others, avoiding unnecessary overlap.
Martin Healey, pioneer development Intel-based computers en c/s-architecture. Director of a number of IT specialist companies and an Emeritus Professor of the University of Wales.