The first software was specialized codes written in close collaboration with hardware architecture, and was intended to serve a single operation or process only. Reprogramming meant reconfiguring the hardware as well. However, computer architecture and its relation with software changed dramatically in the coming years. The modular architecture of the hardware has been responsible for the phenomenal growth of computers. The same modular or object-oriented architecture was imported to software development.
The idea that software should be ‘componentized’, first came at a NATO conference in 1968. The modern concept of a software component was largely defined by Brad Cox. Software componentry is a field of study within software engineering. It builds on prior theories of software objects, software architectures, software frameworks and software design patterns, and the extensive theory of object-oriented programming and object-oriented design of all these. It claims that software components, like the idea of a hardware component used e.g., in telecommunication, can be ultimately made interchangeable and reliable.
The component structure of software has enabled usage of pre-coded units to be used to develop programs, resulting in faster development and infinite experimentation. Software modularity enabled a single software to do multiple tasks without hardware reconfiguration, as was required during the earlier days. Therefore, software componentry may be equated in its contribution towards development of computers to the same extent as the modular nature of computer hardware.
In this section of the webdirectory, we provide links to many relevant resources.