0% found this document useful (0 votes)
6 views

(@DeveloperVibes) Chapter

Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views

(@DeveloperVibes) Chapter

Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 22

Introduction to

Introduction to Software Engineering

1 Software Engineering NOTES

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:

➤ Set of instructions i.e. a computer program, which when executed, provides


desired features, functions and performance.
➤ Data structure, which enables the program to manipulate information.
6
➤ Document, that describes the operation and use of that program.
Characteristics of Software: Introduction to
Software Engineering
Software has some characteristics which are totally different from hardware charac-
teristics. Software is developed or engineered and it is not manufactured in classical
sense. There exist some similarities between development of software and manufac- NOTES
turing of hardware.

➤ 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.

REUSABLE SOFTWARE COMPONENTS


Software building blocks should always be developed and maintained properly. That
is, they must be catalogued for easy reference, standardized for easy application, and
validated for easy integration.
There could be several categories of resources off-the-shelf components: these are
existing software components developed internally by the members of the team for
past project. They are also called COTS (commercial off-the-shelf components). Full-
experience components: are existing software components developed in the past for
similar, but not the same, projects. Partial-experience components: are software com-
ponents developed in the past that require substantial modification. New compo-
nents: are software components that must be built.
SOFTWARE SYSTEM
If the software system does what the user wants, and can be made to continue to
do what the user wants, it is said to be well engineered. Development of software
must include the requirement for the development to be done in a cost effective way,
to be constrained by limits on resource and schedule. In addition, any software
product will subject to continual change and must be able to be ‘maintained’ in a
cost effective way.
Any well engineered software system should have the following attributes:
7
➤ Maintainability – The case with which a software can be changed.
Software ➤ Efficiency – The amount of computing resources and code required by a
Engineering program to perform its functions.
➤ Usability – The effort required to learn, operate, prepare input and interpret
output of a program.
NOTES
➤ Dependability – It includes a range of characterstics including reliability,
security and safety. Adependable software should not cause physical or eco-
nomic damage in the event of system failure.
The development of software must make trade-offs between these attributes.
Application Areas of Software:
Now a days, software is used in every field of life. According to its use, following
broad categories of software are considered:
1. System Software : System software is a collection of programs written to provide
services to other programs. System software is characterized by its heavy inter-
action with computer hardware. Following are the examples of system software:
➤ Operating Systems : Windows, Linux, UNIX etc.
➤ Editors : TC, KAWA, DOS editor, JCreator, Norton Editor, etc.
➤ Assemblers : They convert assembly language program into machine lan-
guage program.
➤ Compilers: They convert high-level language like C/C++ programs into machine
language program.
➤ Linkers and loaders
➤ Drivers (Driver is program that drives a given hardware e. g. Printer driver,
modem driver, web camera driver etc.)
➤ Networking software.
2. Application Software : Application software consists of standalone programs that
solve some specific business application. This software is used to control business
functions in real time. Following are the examples of application software for
database processing:

➤ Hostel management system


➤ Bank management system
➤ Inventory control programs
➤ A payroll system
3. Engineering/ Scientific Software : In this type the application areas are :

➤ Astronomy – Theory of space


➤ Volcanology – Science about volcano
➤ Molecular biology
➤ Computer Aided Design (e.g. AutoCAD software)
➤ System simulations (Simulator is a model for any real world application)
4. Embedded Software : Software in this category performs limited functions.
8
Example of embedded softwares are:
➤ Software for Keypad controlling for microwave oven. Introduction to
➤ Software providing significant functions and control capabilities (e.g. digital Software Engineering
functions in an automobile such as fuel control, dashboard displays, braking
systems).
NOTES
5. Personal computer software : The personal computer software market has bur-
geoned over the past two decades. Examples of personal computer software:

➤ Word processing
➤ Spreadsheets
➤ Computer graphics
➤ Multimedia
➤ Entertainment
➤ Database Management.
➤ Personal and business financial applications
➤ External network and Database access

6. Business software : Business information processing is the largest software appli-


cation area. Discrete “systems” (e.g., payroll, accounts receivable/payable, inven-
tory) have evolved into management information system (MIS) software that
accesses one or more large databases containing business information. Applica-
tions in this area usually have to restructure existing data in a way that facilitates
business operations or management decision making. In addition to conventional
data processing application, business software applications also encompass inter-
active computing (e.g. point of- safe transaction processing).
7. Real-time software : Software that monitors/analyzes/controls real-world events
as they occur is called real rime. Elements of real-time software include a data
gathering component that collects and formats information from an external
environment, an analysis component that transforms information as required by
the application. A control/output component that responds to the external en-
vironment and a monitoring component that coordinates all other components
so that real-time response (typically ranging from 1 millisecond to 1 second) can
be maintained.

8. Artificial Intelligence Software:

The applications within these areas include :

➤ 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.

PROGRAMMING AND SOFTWARE ENGINEERING


Software engineering is the field of computer science that deals with the building of
software systems which are so large or so complex that they are built by a team or
teams of engineers. Usually these software systems exist in multiple versions and are
used for many years. During their life-time, they undergo many changes-to fix
defects, to enhance existing features, to add new features, to remove old features or
to be adaptive to run in the new environment.
There is an obvious difference between programmer and software engineer. The term
programmer is used to denote an individual who is concerned with the details of
implementing, packaging and modifying algorithms and data structures written in
a particular programming language. A software engineer should have considerable
skill and experience as a programmer in order to understand the problem areas, goals
and objectives of software engineering. Software engineers are additionally concerned
with the issues of analysis, design, verification, testing, documentation, software
maintenance and project management.
A programmer writes a complete program, while a software engineer writes/defines
software components that will be combined with components may be written by
other software engineers, to build a system. The software component one writes may
be modified by others; it may be used by other to build different versions of the
system long after one has left the project. Programming is primarily a personal
activity, while software engineering is essentially a team activity.
10
WHAT IS SOFTWARE ENGINEERING ? Introduction to
Software Engineering
In early days, the users wrote the software. Users were typically scientists and engi-
neers who helped to build the hardware. Early programs were typically in machine
and assembly language and involved very little logical complexity. The ‘programmers’ NOTES
were electronics engineers, who built the computers and did programming as a side
activity. Thus, the engineers who wrote the programs were also ones who executed
the programs and fixed problems found during the execution. Computer based
systems at that time were essentially used for ‘number crunching’ applications,
which were scientific and there was little emphasis on user friendliness and sophis-
tication of interface. Under those circumstances, the need for a structured, person
independent method for creating and maintaining software was not felt.
As hardware became more and more powerful, and also cheaper, the profile of
computerized application also changed. Computer hardware became more general
purpose and the application specific needs were satisfied by software, which was
written in high level languages. The early successes with the usage of computers
increased the demand for more and more software to support more complex appli-
cations, in turn leading to an increased demand for programmers. Persons writing
software were no longer computer engineers who knew insides of the computer, nor
were they the persons who knew the problem to be solved. It was in late 1960’s. The
following effects were felt :

➤ Many software projects failed.


➤ Many software projects were delayed or over budgeted, over budget, provid-
ing unreliable software that was expensive to maintain.
➤ Many software projects produced software which did not satisfy the require-
ments of the user.
➤ Complexities of software projects increased as hardware capability increased.
➤ Larger software system is more difficult and expensive to maintain.
➤ Demand of new software increased faster than ability to generate new soft-
ware.
All the above attributes are related to what was called a ‘Software Crisis’. So, the term
‘Software Engineering’ was first introduced at a conference in late 1960’s to discuss
the software crisis. Suggestions were given at the conference that software develop-
ment might be able to be treated as an engineering problem and it should concern
with the theories, methods and tools which are needed to develop software for
computers.
Once the need for software engineering was identified and software engineering was
recognized as a discipline, the late 1970’s saw the widespread evolution of software
engineering principles. The 1980’s saw the automation of software engineering and
growth of CASE (Computer Aided Software Engineering).
The 1990’s have seen increased emphasis on the ‘management’ aspects of projects
and the use of standard quality and ‘process’ models like ISO 9001 and the Software
Engineering Institute’s Software Capability Maturity Model (SEI - CMM). These
models help organizations put their software development and management pro-
cesses in place.
The baseline definition of software engineering was put forward by Fritz Bauer in 11
1969 as, ‘The establishment and use of sound engineering principles in order to
Software obtain, economically, software that is reliable and works efficiently on real machines’.
Engineering According to Boehm, software engineering involves, ‘the practical application of sci-
entific knowledge to the design and construction of computer programs and the asso-
ciated documentation required for developing, operating and maintaining them’. IEEE,
NOTES in its standard 610.12-1990, defines software engineering as:
‘The application of a systematic, disciplined, quantifiable approach to the develop-
ment, operation and maintenance of software; that is, the application of engineering
to software.’
By combining all the above definition we can define software engineering as, ‘Soft-
ware Engineering is the technological and managerial discipline concerned with sys-
tematic production and maintenance of software products that are developed and
modified on time and within cost estimates.,
Software engineering as a discipline provides us with structured technical means of
developing and maintaining software. It provides methods to perform the tasks that
the making of any software requires, such as analyzing the requirements, designing
the system to meet these requirements, constructing the programs, maintaining the
system etc. Software engineering tools are used to support the tasks by automating
the tasks or parts of the tasks.

GOALS OF SOFTWARE ENGINEERING


The primary goals of software engineering are:

➤ To improve the quality of the software products.


➤ To increase the productivity.
➤ To give job satisfaction to the software engineers.
The legacy software is comprised of various layers. It is as shown in following Fig 1.1.

Business Process

Application Software

Support Software

Hardware

Figure 1.1 : Legacy system layers


Ideally interfaces are maintained for each layer of the legacy system, so that if changes
are made in a layer, then the adjacent layers may not get affected. But in reality,
changes in one layer affect the adjacent layers because if one layer is changed then
new facilities get added. To take advantages of these new facilities the adjacent layers
may demand for change. Changes in software may cause the degradation in perfor-
mance of the system. This performance then can be improved by changing the
hardware and if the hardware is changed for rapid performance then the correspond-
ing software needs to be changed. Sometimes there is a drastic change in the system,
for example : the mainframe technology may be replaced by distributed system.
Then in such a case changes in each layer of the legacy system are necessary.
12
SOFTWARE PROCESSES Introduction to
Software process is defined as “a framework for the tasks that are required to produce Software Engineering
a high quality software product”. It defines the approach that is taken to develop a
software product. In other words, the process followed by a software engineer to
build, deliver, deploy and evolve a software product from the inception to the NOTES
delivery and final retirement to the system is called the software production process.
A software process involves a set of activities and associated results which produce a
software product. These activities are mostly carried out by software Engineers. There
are four fundamental process activities that are as follows -
1. Software Requirements Specification (SRS) : The functionality of the software
and constraints on its operations must be defined. An SRS document serves as
a contract between developer and the customer.
2. Software Development : The software that meets the customer’s requirements
must be produced.
3. Software Validation : The softwware must be validated to ensurew that it does
what the customer wants.
4. Software Evolution : The software must evolve to meet the changing customer
needs.
Processes are important because they impose consistency on a set of activities. They
guide our actions by allowing us to examine, understand, control and improve the
activities involved in the process. Production of any software product usually involves
the following stages:
(a) Requirement analysis and definition (b) Design
(c) Coding (d) Testing
(e) Maintenance
Each of the above stages is a process or collection of processes that can be described
as a set of activities and each activity involves resources, constraints and outputs. The
detailed discussion about each of the above stages has been included in appropriate
chapters.

SOFTWARE PROCESS MODELS


Each software process can be defined in a variety of ways using text, figures or
combinations of both. Software engineers have developed various formats for present-
ing the description of a software process known as the process models. The software
process models contain the key features of a process. Hence the process models can
be defined as an abstract presentation of a software process.

Need for Process Model


There are several reasons for developing process models.

➤ It provides a common understanding of the activities, resources and con-


straints involved in developing a software product.
➤ It helps the software engineer to identify inconsistencies, redundancies and
omissions in the development process. This makes the process more effective
and focused.
13
Software ➤ The process model reflects the goals of software development, it can help in
Engineering evaluating the appropriateness of various activities in addressing the defined
goals.
There are various software models which are generic in nature as they do not present
NOTES a definitive description of the software process. Such models are used to explain
different approaches to software development. Four different types of generic models
are:

➤ The Waterfall model


➤ Evolutionary development
➤ Formal system development
➤ Reuse - based development

(1) The Waterfall Model (Linear Sequential Model)


This model is also known as Linear Sequential Model. It is one of the first models
that appeared in literature in late 1950s, but gained popularity during 1970s. The
model is named as Waterfall model since, its graphical representation resembles a
cascade of waterfalls.
The waterfall model shows that the output of one phase flows as input to the next
one. Each phase in turn, is structured as a set of sub activities. The principal phases
represented in this model are:
1. Requirements analysis and definition : During this phase, the requirements of
the customer are properly understood and documented. The objective of this
activity is to document all functions, performance, constraints and the interfac-
ing requirements for the software. The set of documents produced at this stage
is known as Software Requirements Specification (SRS) document.

Figure 1.2 : Waterfall model

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.

Advantages of Waterfall Model


Waterfall model has played a very important role in enhancing the understanding of
software development processes. Some of its advantages are as follows :
➤ The model underlines the need for discipline, planning and management in
the process of software development.
➤ It is oldest and most widely used model for software engineering.
➤ The simplicity of this model makes it easy to explain the development
process to a client who may not be familiar with software development.
➤ The visibility of progress in development of the product is considerably high
as each phase has a denned start and finish criteria.

Disadvantages of Waterfall Model


Though Waterfall model is widely used, it has certain limitations because the Wa-
terfall model is linear, rigid and monolithic. Some of these limitations are :
➤ The model assumes that the results of each phase are frozen before proceed-
ing to the next phase. In reality, the software requirements evolve throughout
the development life cycle. Complete freezing of requirements and design
specifications at early stage will not be proper as engineers and users may not
be fully aware of certain functions required for the application. For example,
if errors are made in requirements analysis phase, and not detected by re-
views, then these errors will be identified only after the system is delivered
to the user. To rectify these errors, all the stages should be repeated once
again. It will increase the time and cost. Thus the software process is not a
simple linear model but involves a sequence of iterations of the various
development activities.
➤ For large and complex systems, development time may be too long. The
application may be delivered when the user’s needs could have changed. This
will require immediate re-work once again. 15
Software ➤ A working version of the product will only be available at the later stage of
Engineering the development process, hence the customer has to be patient till the
product is delivered.
To overcome the disadvantages mentioned above, the waterfall model has been modified
NOTES
so that it can be applied properly to a software process. The modified waterfall model
is shown in the following figure :

Figure 1.3 : Modified Waterfall Model of Software Process

(2) Evolutionary Development


When specifications provided by the user are not very clear, the first initial implemen-
tation is viewed as a trial. The main purpose of this trial version is to assess the
feasibility of the product and to verify the requirements. It is exposed to user to get
detailed and refined requirements. The different activities of development are carried
out concurrently with rapid feedback during these activities.

Evolutionary development can be of two types:

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

Figure 1.4 : Evolutionary Model

Advantages of Evolutionary Development


An evolutionary development approach is more effective than Waterfall model ap-
proach. The advantages of this approach are;

➤ Requirements are not frozen in beginning. Thus during the development


process the user gets better understanding about requirements, functions and
constraints of system. These refined and new features can be added to the
system before the final delivery.

➤ This approach is useful for the systems where it is impossible to express


detailed specifications in the beginning. For example, Artificial Intelligence
System.

➤ This approach is useful to develop small and medium sized systems.


➤ This development is useful when staffing is unavailable for a complete imple-
mentation by the business deadline.

Disadvantages of Evolutionary Development


Besides the above advantages, this model has following drawbacks:

➤ Poorly structured system : In this type of development, adding of new features


continues up to the last stage, thus the software may lose its structure.

➤ Invisible process : More changes make it difficult to produce deliverables after


each stage. Thus, the process visibility is very poor.

➤ Need of skilled staff : This type of development can be carried out by highly
skilled and motivated software engineers.

(3) Formal System Development


This process model has certain similarities with the Water fall model but the devel-
opment process follows formal mathematical transformations.
The system representation emerging at the end of the process is a result of a system-
atic transformation of mathematical representation of system. The resulting system
representation is mathematically correct and more detailed in nature.
17
Software
Engineering

NOTES

Figure 1.5 : Formal System Development

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.

Advantages of Formal System Development


Following are some of the advantages of this model :
➤ The software requirements specification is transformed into detailed formal speci-
fication using mathematical notations that leads to a true implementation of
specifications.
➤ Transformation of specification into program is performed in a sequence of small
steps that can be controlled easily.
➤ The formal approach simplifies the production and integration of security fea-
tures required by the customers. Hence the approach is suitable for the devel-
opment of system having strict safety, security and reliability requirements.

Disadvantages of Formal System Development


Apart from the merits discussed above, this model also suffers from several draw-
backs. Some of which are :
➤ Identification of transformation and processing the correspondence of transforma-
tion are difficult tasks, hence require specialized expertise.
➤ The process does not offer any significant cost or quality advantages over the
other approaches.

(4) Reuse-oriented Development


This approach refers to the reuse of components of existing system to facilitate the
development of a new software product. The size of reusable components could vary
from just a single module to the architecture of the complete system. Reusability of
software component became possible due to the commonalities among the systems
designed for similar purposes. The software engineer can identify and evaluate the
reusable components to integrate with the new system. Hence, the software engineer
need not design the entire system as a new.
There are three kinds of reuse:
1. Application system reuse : In this approach the entire application system can be
reused without any alteration. It is a common practice to design a system which
can be adopted for various environments.
2. Component reuse : The proposed product may reuse only certain components of
18
an application. The size of these components may vary according to the require-
ments. The software engineer selects and evaluates such components for reusabil- Introduction to
ity. Software Engineering
3. Function reuse : The new product can reuse certain functions available with
standard libraries. It is an acceptable practice in software development to reuse
mathematical and graphical functions from the standard libraries. For Example, NOTES
avg, mod, sum etc.

Figure 1.6 : Reuse-oriented Development


The above figure 1.6 represents a generic process model for reuse development. The
steps involved in this model are as follows:
1. Requirement analysis : In this stage, the analysis of the system is carried out to
define the specification as followed in Waterfall model.
2. Component analysis : The selection of reusable components should match the
requirements specifications of the proposed system. Often the component caters
to only some of the functionality of the new system.
3. Requirements modification : If the component functionality is not in exact
match with the system specification, the requirements are modified so as to
integrate the available component with the new product. If modifications are not
possible, the component analysis is performed again.
4. System design with reuse : The system design process must consider the kind of
reuse in the proposed product and the design process is structured accordingly.
The developer may borrow the frame work of an existing system for reuse or
alternatively he may employ some reusable components in a new design frame-
work.
5. Development and integration : The newly developed components of the system
should be integrated with reuse components and COTS to realize a complete
system. This activity is an important part of the total development process.
6. Testing : At this stage, the whole product is subjected to testing for verification
and validation.
Advantages of Reuse-oriented Development
Some of the advantages of this model are :
➤ It enhances productivity as it reduces the coding, testing and documentation
time.
➤ The reusing of requirements and design results in saving time to a great
extent.
➤ In the long term, it improves system interoperability due to uniform inter- Check Your Progress
faces. 1. What are primary goals
➤ Rapid prototyping based on a library of reusable components is more effec- of software engineering?
tive. 2. Which two approaches
are used in process
➤ Reusing components increases performance and reliability as components are iteration?
optimized and proved before being placed in the repository.
19
Software Disadvantages of Re-use oriented Development
Engineering
Some of the disadvantages of reuse-oriented development model include the follow-
ing :
NOTES ➤ The reusability requires modifications in system requirements which affect
the real needs of the user.
➤ The proprietary and copyright issues may affect the evolution of the system
as reused components are the property of the parent organization.

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.

Figure 1.7 : Incremental Development


20
Advantages of Incremental Model Introduction to
Software Engineering
This development model offers following advantages:
➤ The first increment is available to the user within a short time. This incre-
ment meets most of the critical requirements of the user for immediate use. NOTES
Hence, he needs not wait for delivery of the entire system.
➤ Exposure of early increments to the user helps refining the requirements for
subsequent increments.
➤ Subsequent increments would address the shortcomings of the earlier incre-
ments. This minimizes the risk of overall project failure.
➤ The first increment incorporates the services and higher priority. The sub-
sequent increments are integrated with them. Thus the most important
system services undergo maximum testing by the user. This lowers the risk
of system failure in most important parts of the application.
Disadvantages of Incremental Model
Some of the disadvantages associated with this approach are:
➤ The size of increment being small, it may sometimes be difficult to incor-
porate a complete functionality in a particular increment.
➤ The common requirements of the system which apply to all increments are
not denned in detail until the stage of implementation.

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.

Figure 1.8 : Spiral Model 21


Software These task regions are defined as follows :
Engineering (1) Customer Communication : It includes the tasks which are required to establish
the effective communication between the developer and the customer. The main
focus is to determine objectives, alternatives of the project.
NOTES
(2) Planning : It is very important to plan about cost, time and the human man-
power.
(3) Risk Analysis : Risks are identified in this step. Management technical and the
budget risks are identified.
(4) Engineering : When we get an initial prototype called as an operational proto-
type. In next passes, we get other prototypes also.
(5) Construction and Release : This is the incremental step in which testing is done
first.
(6) Customer Evaluation : The customer feed back is taken based on the product so
developed. If he is not satisfied, then we again move through spiral.
Advantages of Spiral Model :
Some of the advantages of this model are :
➤ Risk Management is efficient.
➤ It is a realistic approach to the development of large-scale models.
➤ As the software evolves with the process, the developer and customer can
understand and react at each evolutionary level.
Disadvantages of Spiral Model
Some of the disadvantages are :
➤ It may be difficult to convince the customer that the Evolutionary approach
is controllable.
➤ The model demands a high level expertise to deal with the risk analysis and
control.
➤ The model is relatively new hence it may take another few years to establish
its efficiency.

OTHER IMPORTANT SOFTWARE MODELS


Apart from the software models discussed above, several other model have also been
developed. These models include :

Rapid Application Development (RAD) Model


The Rapid Application Development (RAD) model is type of incremental software
process model in which there is extremely short development cycle. This model is
similar to waterfall model which achieves the high speed development using compo-
nent based construction. To develop the fully functional system within short time
period using this model, it is necessary to understand the requirements fully and to
have a restricted project scope.
22
Introduction to
Software Engineering

NOTES

Figure 1.9 : Rapid Application development Model

Various phases of RAD model are as follows :

1) Business modeling - In business modeling, the information flow is modeled into


various business functions. These business functions collect following informa-
tion.

• Information that drives the business process.

• The type of information being generated.

• The generator of information.

• The information flow.

• The processor of information.

2) Data modeling - In this phase the information obtained in business model is


classified into data objects. The characteristics of data objects (attributes) are,
identified. The relationship among various data objects is defined.

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.

4) Application generation - For creating software various automation tools can be


used. RAD also makes use of reusable components or creates reusable compo-
nents to have rapid development of software.

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.

Certain classes of mathematical algorithms, subset of command driven systems and


other applications where results can be easily examined without real time interaction
NOTES
can be developed using prototyping paradigm.

When to choose it ?

➤ Software applications that are relatively easy to prototype almost always


involve Human-Machine Interaction (HMI) hence the prototyping model is
suggested.

➤ A general objective of software is defined but not detailed input, processing


or output requirements. Then in such a case prototyping model is useful.

➤ When the developer is unsure of the efficiency of an algorithm Or the


adaptability of an operating system then prototype serves as a better choice.

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.

➤ The first version may have some compromises.

➤ Sometimes developer may make implementation compromises to get proto-


type working quickly. Later on developer may become comfortable with
compromises and forget why they are inappropriate.

Figure 1.10 : Prototyping model

After computing the UFC, it is modified by additional complexity factor of the


complete system. These additional complexity factors are needed because we have to
consider various factors affecting the productivity of the system and such factors are
24 degree of distributed processing, amount of reuse, performance and so on.
SUMMARY Introduction to
• Software, consisting of programs, enables a computer to perform specific tasks, Software Engineering
as opposed to its physical components (hardware) which can only do the tasks
they are mechanically designed for.
NOTES
• 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.
• Software building blocks should always be developed and maintained properly,
that is they must be catalogued for easy reference, standardized for easy ap-
plication, and validated for easy integration.
• Application software consists of standalone programs that solve some specific
business application This software is used to control business functions in real
time.
• Software that monitors/analyzes/controls real-world events as they occur is
called real rime.
• Ubiquitous Computing includes software required for in computer network-
ing.
• Software engineering is the field of computer science that deals with the building
of software systems which are so large or so complex that they are built by a team
or teams of engineers.
• The term programmer is used to denote an individual who is concerned with
the details of implementing, packaging and modifying algorithms and data
structures written in a particular programming language. A software engineer
should have considerable skill and experience as a programmer in order to
understand the problem areas, goals and objectives of the software engineering.
• Software process is defined as “a framework for the tasks that are required to
produce a high quality software product”.
• Software engineers have developed various formats for presenting the descrip-
tion of a software process known as the process models.
• The waterfall model shows that the output of one phase flows as input to the
next one. Each phase in turn, is structured as a set of sub activities.
• The clean room process developed by IBM is one of the examples of the formal
development process.
• Reuse-oriented Development approach refers to the reuse of components of
existing system to facilitate the development of a new software product.
• The incremental model combines the advantages of Waterfall as well as Evo-
lutionary approaches.
• The system in this approach is released in parts providing the user with certain
functionality.
• The rapid application development model is type of incremental software
process model in which there is extremely short development cycle.
• Spiral Model possesses the iterative nature of prototyping model and con-
trolled 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.
25
• In prototyping model initially the requirement gathering is done.
Software ANSWERS TO "CHECK YOUR PROGRESS"
Engineering 1. The primary goals of software engineering are:
• To improve the quality of the software products.
NOTES • To increase the productivity.
• To give job satisfaction to the software engineers.
2. The two approaches used in process iteration are:
• Incremental development
• Spiral development
3. Some of the advantages of this model are :
• Risk Management is efficient.
• It is a realistic approach to the development of large-scale models.
• As the software evolves with the process, the developer and customer can
understand and react at each evolutionary level.
4. Production of any software product usually involves the following stages:
(a) Requirement analysis and definition (b) Design
(c) Coding
(d) Testing
(e) Maintenance.

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

You might also like