| • Science | • People | • Locations | • Timeline |
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.
Software componentry is a common and convenient means for inter-process communication (IPC).
A software component is a loosely defined term for a software technology for encapsulating software functionality. Clemens Szyperski and David Messerschmitt give the following five criteria for what a software component shall be to fulfill the definition:
Software components often take the form of objects (from Object Oriented Programming), in some binary or textual form, adhering to some interface description language (IDL) so that the component may exist autonomously from other components in a computertower of a personal computer. A computer is a device for making calculations or controlling operations that are expressible in numerical or logical terms. While factually accurate, this definition and those found in other dictionaries are so broad that th.
When a component is to be accessed or shared across execution contexts or network links, some form of serializationSee serial publication for the term in publishing In computer science, serialization means to force one-at-a-time access for the purposes of concurrency control, or to encode a data structure as a sequence of bytes. This latter form of serialization (whic (also known as marshalling) is employed to turn the component or one of its interfaces into a bitstreamA bitstream or bit stream is a time series of bits. A bytestream is a series of bytes, typically of 8 bits each, and can be regarded as a special case of a bitstream. Bitstreams are used extensively in telecommunications and computing: for example, the SD.
The idea that software should be componentized - built from prefabricated components - was first published in Douglas McIlroyDouglas McIlroy is a professor of computer science, mathematician, engineer and famous programmer. He is known for having invented: The pipes and filters architecture of UNIX The entire concept of software componentry Several UNIX tools such as spell, dif's address at the NATOThe North Atlantic Treaty Organisation NATO , sometimes called North Atlantic Alliance Atlantic Alliance or the Western Alliance is an international organization for defense collaboration established in 1949, in support of the North Atlantic Treaty signed conference on software engineering in GarmischGarmisch-Partenkirchen (29,875 inhabitants; 01-01-2004) is a market town, and the administrative centre of the district of Garmisch-Partenkirchen, in the Oberbayern region of Bavaria, Germany, near the border with Austria. The town is served by an Autobah, Germany, 1968 titled Mass Produced Software Components. This conference set out to counter the so-called software crisis. His subsequent inclusion of pipes and filters into the Unix operating system was the first implementation of an infrastructure for this idea.
The modern concept of a software component was largely defined by Brad Cox of Stepstone, who called them Software ICs and set out to create an infrastructure and market for these components by inventing the Objective C programming language. (He summarizes this view in his book Object-Oriented Programming - An Evolutionary Approach 1986.) Cox's attempt did not succeed because of the most obvious, yet fundamental, difference between silicon and software ICS. The former are made of atoms, so it is possible to buy and sell them through scarcity-based economics. The latter are made of bits which don't abide by the same laws, which undercuts the incentive to provide them.
Microsoft paved the way for actual deployment of component software with OLE and COM, a very successful attempt to encapsulate and simplify object interfaces. Nowadays several successful software component models exist.