(@DeveloperVibes) Chapter
(@DeveloperVibes) Chapter
Chapter Includes :
• Introduction
• Reusable Software Components
• What is Well Engineered Software ?
• Programming And Software Engineering
• What is Software Engineering ?
• Goals of Software Engineering
• Software Processes
• Software Process Models
• Process Iteration
• Other Important Software Models
INTRODUCTION
What water means to a fish, ‘software’ means to a computer system. Fish cannot
live without water. Similarly, a computer cannot go without software. It is some-
thing that utilizes all hardware resources of a computer system. Software are of
different kinds and they perform different roles in executing different functions.
This chapter delivers you a very good amount of information on software.
Software, consisting of programs, enables a computer to perform specific tasks, as
opposed to its physical components (hardware) which can only do the tasks they
are mechanically designed for. The term includes application software such as word
processors, which perform productive tasks for users, system software such as
operating systems, which interface with hardware to run the necessary services for
user-interfaces and applications, and middleware which controls and co-ordinates
distributed systems.
Computer software is so called in contrast to computer hardware, which encom-
passes the physical interconnections and devices required to store and execute (or
run) the software. In computers, software is loaded into RAM and executed in the 5
central processing unit. At the lowest level, software consists of a machine language
Software specific to an individual processor. A machine language consists of groups of binary
Engineering values signifying processor instructions (object code), which change the state of the
computer from its preceding state. Software is an ordered sequence of instructions
for changing the state of the computer hardware in a particular sequence. It is
NOTES usually written in high-level programming languages that are easier and more ef-
ficient for humans to use (closer to natural language) than machine language.
High-level languages are compiled or interpreted into machine language object
code. Software may also be written in an assembly language, essentially, a mne-
monic representation of a machine language using a natural language alphabet.
Assembly language must be assembled into object code via an assembler.
Suppose you are given a machine and you do not know how to operate it. Can
you do anything with that machine? Similarly, you are given a computer that
contains a box (CPU), a monitor that looks like a television and a board consisting
of a few keys. What would you do? You will remain staring unless an operating
system loads on it. Means, the first thing you require to see what your computer
system does is an operating system which is a kind of software that comes under
the category of system software. The basic need of this software is to start a
computer or a computer based gadget like mobile or something else. Now, when
you have loaded the software called an operating system, you can be in position
to start your computer system. If you want to work further like you have an office
to automate, you need something more than an operating system. For instance, if
you want to type a letter or to create a textual or graphical chart or to create a
presentation or to manage your official and personal data, you again need a number
of different software for different purposes, which are called application software.
Moreover, if your computer is infected with virus, you agained a software called
utility. In short, if you have a computer system and want to work smoothly, you
need software at every step. Now why do you need software may likely be justified
by giving following reasons:
➤ To start your computer
➤ To type a letter
➤ To create a chart
➤ To create presentation
➤ To manage your data
➤ To use Internet
➤ To let operating system work perfectly
Definition:
In general, we consider the software as ‘set of programs’. But the term ‘software’
might take following form:
➤ In both the cases quality is achieved by good design but manufacturing phase
of hardware can introduce quality problems that are absent in software.
➤ Both activities depend on people but relationship between people applied
and work done is different in both the cases.
➤ Both the cases require the ‘construction of product”, but approaches are
different.
➤ Software does not wear out. Note that, ‘wear out’ refers to the process of
losing the material.
➤ Hardware components are affected by dust, temperature and other environ-
mental maladies. Stated simply, hardware can wear out. However software is
not influenced by such environmental means.
➤ When hardware component wear out, it can be replaced by spare part. But
there are no spare parts for software. Any software error indicates error in
design or coding of that software. Hence, software maintenance involves
more complexity than hardware maintenance.
➤ Mostly software is custom built rather than assembled from existing compo-
nents. Computer hardware can be assembled from existing components as
per our requirements. But that is not the case for software. Software is
developed according to customer’s need.
➤ Word processing
➤ Spreadsheets
➤ Computer graphics
➤ Multimedia
➤ Entertainment
➤ Database Management.
➤ Personal and business financial applications
➤ External network and Database access
➤ Expert systems.
➤ Robotics
➤ Pattern recognition (Image processing and voice)
➤ Artificial neural networks
➤ Theorem proving
➤ Game playing
The above areas are major application of software. But nowadays software is required
in new areas as well : 9
Software Ubiquitous Computing
Engineering
It includes software required for in computer networking. The rapid growth of
wireless networking is coming in picture. Hence, related system and application
NOTES
software are required to allow the use of :
➤ Small devices
➤ Personal computers
➤ Small networks to communicate with large networks.
Netsourcing :
➤ The World Wide Web is rapidly becoming computing engine as well as a
continent provider. Hence software is required for :
o Personal financial planning.
o Sophisticated applications that provide benefit to targeted end
user markets worldwide.
Open Source Software :
This area includes distribution of source code for; system applications e.g.
➤ Operating Systems (e.g. Linux) )
➤ Databases
➤ Other development Environments
Such type of software is self-descriptive so that customers and developers easily
understand them and can modify them.
Business Process
Application Software
Support Software
Hardware
2. System and software design : The requirements specification enables the software
14
engineer to proceed further to define the overall architecture of the system. The
software and hardware components of the system are identified. Detailed design Introduction to
activities are performed during this phase and the document produced at this Software Engineering
stage is known as design description document.
3. Coding : At this stage, the implementation of design is carried out. A software
may comprise of several program units. Each unit is tested in isolation from the NOTES
rest of the product. The implementation and testing operation ensures that each
program runs smoothly and conforms to the specifications.
4. Integration and system testing : At this stage, the individual programs are inte-
grated to produce a complete system. System testing is performed to ensure that
the interface between various unit modules is correct and the system meets the
requirements given by the user.
5. Operation and maintenance : This phase begins with the delivery of the software
product to the client. It is very important to keep the software operational after
its delivery to the client. Software maintenance is another important activity
which involves error correction, capability enhancement and optimization. It is
an evolution process which helps preserving the value of the software product for
a longer time span.
1. Exploratory development : The development of the product starts with the part
of system which is well understood by the developer. This product is exposed to
the user to get more features. These new features are added to the product and
process continues until a final acceptable product is built. In this type of devel-
opment, the user has an active participation.
2. Throwaway prototyping : The development of the product starts with the part
of system which is poorly understood. It is then exposed to the user to get more
and refined requirements. This type of development is helpful to understand the
user’s requirements clearly which were not properly understood in the begin-
ning. Afterwards this developed part is thrown-away and actual system develop-
16 ment starts from scratch.
Introduction to
Software Engineering
NOTES
➤ Need of skilled staff : This type of development can be carried out by highly
skilled and motivated software engineers.
NOTES
In this type of development, the need for verification is minimized since the developed
system is true implementation of specifications. The clean room process developed by
IBM is one of the examples of the formal development process. The clean room
processes relies on incremental development of software and each stage is developed on
its correctness and demonstrated using formal approach.
PROCESS ITERATION
The requirements of a large system evolve during the development process. This
necessitates the process iteration as certain steps of process are repeated during the
evolution of system requirements. The two approaches used in process iteration are:
➤ Incremental development ➤ Spiral development
Incremental Development
The incremental model combines the advantages of Waterfall as well as Evolutionary
approaches. This approach was suggested by Mills in 1980 with the objective of
curtailing the scope for rework in software development process. The system in this
approach is released in parts (or increments) providing the user with certain func-
tionality. Simultaneously the evolution of the remaining system continues. Each new
release incorporates additional features and functionalities. The first increment of the
system serves as core product, incorporating only the basic requirements of the
system. The supplementary features will not be available to the users at this stage.
The addition of services to increments is carried out in the order of priority. The
feedback from the users at early increments helps refining the requirements for later
increments. The addition of new increments enhances the functionality of the core
increments.
Depending on the clarity of specifications different models can be used for develop-
ing different increments. The Waterfall model can be used for increments with better
clarity whereas in a less clear situation the Evolutionary model will be appropriate.
Spiral Model
The spiral model was proposed by Dr. Berry Boehm.
This model possesses the iterative nature of prototyping model and controlled and
systematic approaches of the linear sequential model. This model gives efficient
development of incremental versions of software. In this model, the software is
developed in series of increments. The spiral model is divided into a number of
framework activities. These framework activities are denoted by task regions.
NOTES
3) Process modeling - In this phase the data objects are transformed into processes.
These processes are to extract the information from data objects and are respon-
sible for implementing business functions.
5) Testing and turnover - As RAD uses reusable components the testing efforts are
reduced. But if new components are added in software development process then
such components need to be tested. It is equally important to test all the
interfaces.
Prototyping Model
Check Your Progress
In prototyping model initially the requirement gathering is done. The developer and
customer define overall objectives, identify areas needing more requirement gather- 3. What are advantage of
spiral model?
ing. Then a quick design is prepared. This design represents what will be visible to
4. What are stages of soft-
users in input and output format. From the quick design a prototype is prepared. ware production?
Customer or user evaluates the prototype in order to refine the requirements. Itera-
tively prototype is tuned for satisfying customer requirements. Thus prototype is 23
important to identify the software requirements.
Software When working prototype is built, developer use existing program fragments or pro-
Engineering gram generators to throw away the prototype and rebuild the system to high quality.
When to choose it ?
Prototyping has some drawbacks which must be taken into consideration while
following this approach. Such as :
➤ In the first version itself, customer often wants “few fixes” rather than re-
building of the system. Whereas rebuilding of new system maintains high
level of quality.
EXERCISE
1. Define software. What is software engineering?
2. What are the characteristics of a Software ?
3. Describe the application areas of software.
4. What are the goals of Software Engineering?
5. Define Software Process.
6. Define Software Process model. What is the need for Process Model.
7. Explain linear sequential model.
8. What is evolutionary development ? What are its merits & demerits ?
9. Write short notes on :
(a) Formal system development
(b) Reuse oriented development
(c) Incremental development
10. Explain the following :
(a) Spiral model
(b) RAD model
(c) Prototyping model
26