Software Components
As an engineering discipline evolves a group of standard design software components is assembled. Standard screws and off-the -shelf integrated circuits are only two of thousands of standard parts that are used through mechanical and electrical engineers as they design a new system. The reusable components have been created so by that the engineer can concentrate on the truly innovative elements of a design example the component of the design that represent something new in designing. In the hardware world component reuse is a natural component of the engineering procedure. In the software world it is something that has yet to be achieved on a broad scale.
An important characteristic Reusability is a high quality software component. A software component should be implemented and designed so that it can be reused in several programs. In the year of 1960s we built scientific subroutine libraries that were reusable in a large array of scientific and engineering applications. These subroutine libraries reused and having well-defined algorithms in an effective manner but had a limited domain of application. Presently we have extended our view of reuse components encapsulate both processing and the data that is applied to the data enabling the software engineer to built new application from reusable components. For example presents interactive interfaces are created using reusable components that enable the creation of pull-down menus graphics windows and a broad variety of interaction mechanism. The data structures and the processing detail need to build the interface that are contained within a library of reusable parts for interface construction.
Software components are assembling using a programming language that has an explicitly defined grammar well formed rules of syntax and semantics and a limited vocabulary. At the lowest stage in programming the language mirrors the instruction set of the hardware. At middle level programming languages such as Ada 95, C or Smalltalk are used to make a procedural description of the program. At the highest level of the language uses graphical icons or other symbology to represent the requirements for a solution. Executable instructions in program are automatically generated.
Machine level language is symbolic representation of the CPU instruction set. When a good and professional software developer produces a maintainable well documented program machine level language can "optimize" program execution speed and made extremely efficient use of memory. When a program is poorly designed and has only a little documentation machine language is a nightmare.
Middle level languages allow the program and the software developer to be machine-independent. When a more sophisticated translator is used in programming the grammar , vocabulary, syntax and semantics of a middle level language can be like more sophisticated that machine-level languages. In fact middle level language interpreters and compilers and produce machine-level language as output.
Today's hundreds of programming languages are in use fewer than ten middle level programming languages are broadly used in the organizations. Languages like COBOL and FORTRAN remain in widespread use more than 30 years after their introduction. More modern programming languages like Ada95, C, C++, Java, Eiffel and Smalltalk have each gained an enthusiastic following.
Middle level programming languages and Machine code assembly languages are often referred as the first three generation of computer languages. With these languages the programmer must be concerned both with the control of the program itself and the specification of the information structure. Hence languages in the first three generation are termed procedural languages.
Fourth generation languages is also called nonprocedural languages which move the software developer even further from the computer hardware. Rather than need the developer to specify procedural detail the nonprocedural language implies a program by specifying the desired result rather than specifying action needed to achieve that result [COB85]. Support software translates the specification of result into a machine executable program.