Page 16 - DCAP305_PRINCIPLES_OF_SOFTWARE_ENGINEERING
P. 16

Principles of Software Engineering



                   Notes         source software is better than proprietary software? Answer is not easy. Both schools of thought
                                 are in the market. However, popularity of many open source software give confidence to every
                                 user. They may also help us to develop small business applications at low cost.

                                 1.6 Software Components

                                 As an engineering regulation evolves a compilation of standard design mechanism is shaped.
                                 Standard screws and off-the –shelf included circuits are only two of thousands of standard
                                 mechanism that are used by mechanical and electrical engineers as they design new systems.
                                 The reusable components have been created so that the engineer can concentrate on the truly
                                 innovative elements of a design (i.e., the parts of the design that represent something new).
                                 In the hardware world, component reuse is a natural part of the engineering process. In the
                                 software world it is something that has yet to be achieved on a broad scale.
                                 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 we built scientific subroutine libraries that were reusable in a broad
                                 array of engineering and scientific applications. These subroutine libraries reused well-defined
                                 algorithms in an effective manner, but had a limited domain of application. Today we have
                                 extended our view of reuse components encapsulate both data and the processing that is applied
                                 to the data enabling the software engineer to create new application from reusable parts. For
                                 example today’s interactive interfaces are built using reusable components that enable the
                                 creation of graphics windows pull-down menus and a wide variety of interaction mechanism.
                                 The data structures and processing detail required to build the interface are contained within
                                 a library of reusable components for interface construction.
                                 Software components are built using a programming language that has a limited vocabulary an
                                 explicitly defined grammar and well formed rules of syntax and semantics. At the lowest level
                                 the language mirrors the instruction set of the hardware. At mid-level programming languages
                                 such as Ada 95, C or Smalltalk are used to create a procedural description of the program. A
                                 highest level the language uses graphical icons or other symbology to represent the requirements
                                 for a solution. Executable instructions are automatically generated.

                                 Machine  level  language  symbolic  representation  of  the  CPU  instruction  set.  When  a  good
                                 software developer produces a maintainable well documented program machine level language
                                 can made extremely efficient use of memory and “optimize” program execution speed. When
                                 a program is poorly designed and has little documentation machine language is a nightmare.
                                 Mid-level languages allow the software developer and the program to be machine-independent.
                                 When a more sophisticated translator is used, the vocabulary, grammar, syntax and semantics
                                 of a mid-level language can be such more sophisticated that machine-level languages. In fact
                                 mid-level language compilers ad interpreters produce machine-level language as output.

                                 Although hundreds of programming languages are in use today fewer than ten mid-level
                                 programming  languages  are  widely  used  in  the  industry.  Languages  such  as  COBOL  and
                                 FORTRAN remain in widespread use more than 30 years after their introduction. More modern
                                 programming languages such as Ada95, C, C++, Eiffel, Java and Smalltalk have each gained
                                 an enthusiastic following.
                                 Machine code assembly languages and mid-level programming languages are often referred to
                                 as the first three generation of computer languages. With any of these languages the programmer
                                 must be concerned both with the specification of the information structure and the control of the
                                 program itself. Hence languages in the first three generation are termed procedural languages.
                                 Fourth generation languages also called nonprocedural languages move the software developer
                                 even further from the computer hardware. Rather than requiring the developer to specify

        10                                LOVELY PROFESSIONAL UNIVERSITY
   11   12   13   14   15   16   17   18   19   20   21