Asked by
harsha
in
Computers & Technology
at
5:46 PM on May 08, 2008
Sudipta Deb's Answer
A software component is a system element offering a predefined service or event, and able to communicate with other components. Clemens Szyperski and David Messerschmitt give the following five criteria for what a software component shall be to fulfill the definition:
* Multiple-use
* Non-context-specific
* Composable with other components
* Encapsulated i.e., non-investigable through its interfaces
* A unit of independent deployment and versioning
A simpler definition can be: A component is an object written to a specification. It does not matter what the specification is: COM, Enterprise JavaBeans, etc., as long as the object adheres to the specification. It is only by adhering to the specification that the object becomes a component and gains features such as reusability.
Software components often take the form of objects or collections 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 computer.
When a component is to be accessed or shared across execution contexts or network links, techniques such as serialization or marshalling are often employed to deliver the component to its destination.
Reusability is an important characteristic of a high quality software component. A software component should be designed and implemented so that it can be reused in many different programs.
In the 1960s, scientific subroutine libraries were built that were reusable in a broad array of engineering and scientific applications. Though these subroutine libraries reused well-defined algorithms in an effective manner, they had a limited domain of application. Today, modern reusable components encapsulate both data structures and the algorithms that are applied to the data structures.
Software components are built using a programming language that has a limited vocabulary, an explicit defined grammar and well-defined rules of syntax and semantics. At the lowest level, the language mirrors the instruction set of the hardware. At the mid level, a programming language such as C or Smalltalk is used to create a procedural description of the program. And at the highest level, the language uses graphical icons or other symbology to represent the requirement for a solution. Here executable instructions are automatically generated.
When a good software developer produces a maintainable, well documented program, machine level language can make extremely efficient use of memory and "optimize" program execution speed. But mid level language allow software developer and the program to be machine independent. These are procedural languages. In non procedural language, a program by specifying the desired result is required to achieve the result. Support software translates the specification results into a machine executable code.
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 the object oriented design of all these. It claims that software components, like the idea of hardware components, used for example in telecommunications, can ultimately be made interchangeable and reliable.
Answered at
6:15 PM on May 08, 2008
Read all answers