Page 14 - DCAP305_PRINCIPLES_OF_SOFTWARE_ENGINEERING
P. 14
Principles of Software Engineering
Notes 1.4.3 Reusability of Components
If we have to manufacture a TV, we may purchase picture tube from one vendor, cabinet from
another, design card from third and other electronic components from fourth vendor. We will
assemble every part and test the product thoroughly to produce a good quality TV. We may
be required to manufacture only a few components or no component at all. We purchase every
unit and component from the market and produce the finished product. We may have standard
quality guidelines and effective processes to produce a good quality product. In software, every
project is a new project. We start from the scratch and design every unit of the software product.
Huge effort is required to develop software which further increases the cost of the software
product. However, effort has been made to design standard components that may be used in
new projects. Software reusability has introduced another area and is known as component
based software engineering. Hence developers can concentrate on truly innovative elements of
design, that is, the parts of the design that represent something new. In the hardware world,
component reuse is a natural part of the engineering process. In software, there is only a humble
beginning like graphical user interfaces are built using reusable components that enable the
creation of graphics windows, pull-down menus, and a wide variety of interaction mechanisms.
1.4.4 Software is Flexible
We all feel that software is flexible. A program can be urbanized to do almost anything.
Sometimes, this feature may be the best and may help us to accommodate any kind of change.
However, most of the times, this “almost anything” characteristic has made software development
difficult to plan, monitor and control. This unpredictability is the basis of what has been referred
to for the past 30 years as the “Software Crisis”.
1.5 The Changing Nature of Software
Software has become integral part of most of the fields of human life. We name a field and we
find the usage of software in that field. Software applications are grouped in to eight areas for
expediency as shown in Figure. 1.7.
Figure 1.7: Software Application
System Real time
software software
Engineering Embedded
and science software
software
Web based Business
software software
Artificial Personal
intelligence computer
software software
1.5.1 System Software
Infrastructure software comes under this category like compilers, operating systems, editors,
drivers, etc. Basically system software is a set of programs to provide service to other programs.
8 LOVELY PROFESSIONAL UNIVERSITY