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