KIIT Polytechnic
UNIT-1-INTRODUCTION TO SOFTWARE ENGINEERING
1.1 Program vrs Software product 1.4 Software Life Cycle Models
1.2 Emergence of Software 1.4.1 Classical Water fall model
Engineering. 1.4.2 Iterative Water fall model
1.4.3 Prototyping model
1.3 Computer Systems 1.4.4 Evolutionary model
Engineering 1.4.5 Spiral model
INTRODUCTION TO SOFTWARE:
Software is a set of instructions used to get inputs and process them to produce the desired output.
It also includes a set of documents, such as the software manual, Source Code, Executables, Design
Documents, Operations, and System Manuals and Installation and Implementation Manuals.
Software Engineering
A few important definitions given by several authors and institutions are as follows:
Definition:
Software Engineering is the application of a systematic, disciplined, scientific approach to the
development, operation and maintenance of software.
OR
Software Engineering is a discipline whose aim is the production of fault free software that
satisfies the user’s needs and that is delivered on time and within budget.
Goals of Software Engineering:
The primary goals of Software Engineering is
1. To improve the quality, reliability of software.
2. To increase productivity.
3. To increase the job satisfaction of software engineers, etc.
Software Engineering 1 Sunil Kumar Sahoo
KIIT Polytechnic
PROGRAMS VERSUS SOFTWARE PRODUCTS
Programs
A program is a combination of source code and object code.
A program is a subset of software and it becomes software only if
documentation and operating procedure manuals are prepared.
Program = Source Code + Object Code
Software Products
A software product consists not only of the program code but also
of all the associated documents, such as the requirements
specification documents, the design documents, the test
documents, and the operating procedures, user manuals and
operational manuals, etc.
Software = Program + Documentation + Operating Procedures
Software Engineering 2 Sunil Kumar Sahoo
KIIT Polytechnic
Programs versus Software Products
The various differences between a program product and a software product are given in Table.
S. Programs Software Products
No.
1. Programs are developed by individuals A software product is usually developed by a group of
for their personal use. engineers working as a team.
2 Usually small in size Usually large in size
3 Single user Large number of users
4 Single developer Team of developers
5 Lack proper documentation Good documentation support
6 Adhoc development Systematic development
7 Lack of user interface Good user interface
8 Have limited functionality Exhibit more functionality
SOFTWARE-DEVELOPMENT LIFE-CYCLE
– The software-development life-cycle is used to help the development of a large software product
in a systematic, well-defined, and cost-effective way.
– It goes through a series of phases from start to end. This process is called the Software-
Development Life-Cycle.
– The software development life-cycle consists of several phases.
– These are:
o Feasibility study
o Project analysis (Requirements analysis and specification)
o System design (Design)
o Coding
o Testing
o Implementation
o Maintenance
Software Development Life Cycle Models
– A software life cycle model (also called process model) is a descriptive and diagrammatic
representation of the software life cycle.
Need for a software life cycle Model:
– The development team must identify a suitable life cycle model to develop a project..
– Without using of a particular life cycle model the development of a software product may lead to
project failure.
Different software life cycle models:
– Various kinds of process models:
Classical Waterfall model
Iterative Waterfall model
Prototyping model
Incremental model
Spiral model
Software Engineering 3 Sunil Kumar Sahoo
KIIT Polytechnic
Classical waterfall model:
– The waterfall model is a very common and
traditional SDLC model or software process
model.
– The figure is given below.
– This model is known as the waterfall model,
because of the cascade from one phase to another
phase.
– As the figure shows, the phases are cascade in
nature, where the output of one phase is the input
to the next one. Each phase performs a set of
activities.
– All other life cycle models are essentiallyderived
from the classical waterfall model.
– Classical waterfall model has the following
phases.
Feasibility Study
Requirements Analysis and Specification
Design
Coding and Unit Testing
Integration and System Testing, and
Maintenance
Feasibility study:
The main aim of feasibility study is to determine whether the project is financially and technically
feasible or not, to develop the product.
– At first project managers or team leaders try to have a rough understanding of the project by visiting
the client side. They study or discuss different aspects of project like resources required, cost, time
for development etc.
– At the end of this phase, a report called a feasibility study is prepared by a group of software
engineers.
Requirements analysis and specification:
The aim of the requirements analysis and specification phase is to understand the exact
requirements of the customer and to document them properly. This phase consists of two distinct activities,
namely
Requirements gathering and analysis, and
Requirements specification.
– The goal of the requirements gathering activity is to collect all the related information from the
customer regarding the product to be developed.
– The final document is known as the software requirement specification (SRS) document.
Software Engineering 4 Sunil Kumar Sahoo
KIIT Polytechnic
Design:
The goal of the design phase is to transform the requirements specified in the SRS document into
a structure that is suitable for implementation by using some programming language.
– Two distinctly different approaches are available:
Architectural Design approach.
Detailed Design approach.
– Architectural Design:
– It involves:
Identifying the software components.
Decomposing the software components into modules.
Specifying the interconnection between the various components.
– Detailed Design:
– It is deals with all details for the implementation i.e. procedures to process the algorithms,
data structures to be used, etc.
– Output:
o Design Document
o Test Plan
Coding and unit testing:
– The purpose of the coding and unit testing phase (sometimes called the implementation phase) of
software development is to translate the software design into source code.
– The end of this phase, each unit module is tested against each unit test plan.
– Output of this phase is:
o Program code or source code
o Unit test report
Integration and System Testing:
– Integration of different modules is undertaken once they have been coded and unit tested.
– During the integration and system testing phase, the modules are integrated.
– System testing usually consists of three different kinds of testing activities:-
o α – testing: It is the system testing performed by the development team.
o β – Testing: It is the system testing performed by a friendly set of customers.
o Acceptance testing: It is the system testing performed by the customer himself after the
product delivery to determine whether to accept or reject the delivered product.
– Output:
o Final test report
o Total product
Maintenance:
– The product is ready and it is delivered to the client.
– Maintenance of a typical software product requires much more than the effort necessary to
develop the product itself.
– The relative effort of development of a typical software product to its maintenance effort is
roughly in the 40:60 ratio.
– Maintenance involves performing any one or more of the following three kinds of activities:
o corrective maintenance
o perfective maintenance
o adaptive maintenance
Software Engineering 5 Sunil Kumar Sahoo
KIIT Polytechnic
Advantages of Waterfall Model
– It is a linear model.
– Relatively easy to understand and manage.
– It is systematic and sequential.
– It is a simple one.
– It has proper documentation.
Disadvantages of waterfall model:
– It is difficult to define all requirements at the beginning of a project.
– This model is not suitable for accommodating any change.
– It does not suitable to large projects.
– It involves heavy documentation.
– We cannot go backward in the SDLC.
– There is no risk analysis.
What is maintenance? Different types of maintenance. Or short note on maintenance.
Maintenance:
– The product is ready and it is delivered to the client.
– Maintenance of a typical software product requires much more than the effort necessary to
develop the product itself.
– The relative effort of development of a typical software product to its maintenance effort is
roughly in the 40:60 ratio.
– Maintenance involves performing any one or more of the following three kinds of activities:
corrective maintenance
perfective maintenance
adaptive maintenance
o Correcting errors that were not discovered during the product development phase. This is
called corrective maintenance.
o Improving the implementation of the system, and enhancing the functionalities of the
system according to the customer’s requirements. This is called perfective maintenance.
o Porting the software to work in a new environment. For example, porting may be required
to get the software to work on a new computer platform or with a new operating system.
This is called adaptive maintenance.
Iterative Waterfall Model:
– Beside the weaknesses of the
waterfall model, Iterative
development is the heart of acyclic
software development process.
– It starts with feasibility study and
ends with deployment
(maintenance) with the cyclic
interactions in between phases. i.e. it
provide feedback paths from every
phase to its preceding phases.
– The feedback paths allow for
correction of the errors done during
a phase.
Software Engineering 6 Sunil Kumar Sahoo
KIIT Polytechnic
– The principle of detecting errors as close to its point of introduction as possible. This is known as
“Phase Containment of Errors”.
– To achieve this review is done after completion of each phase.
– The rest of the phases of development are same as classical water fall model. The model is
pictorially shown in fig.
Prototyping Model:
It sometimes happens that a customer defines a set of general objectives for software but does not identify
detailed requirements (like input, processing, or output).
Or in other cases, the developer may not be sure about the efficiency of an algorithm, operating system,
used etc. In these situations, a prototyping model may be used.
– A prototype is a toy implementation of the system.
– A prototype usually shows limited functional capabilities, low reliability, and inefficient
performance.
– It uses dummy functions.
– A prototype is the partial version of the actual system.
Where to use Prototype Model:
A prototype of the actual product is preferred in situations such as:
o User requirements are not complete.
o Technical issues are not clear.
The prototyping model of software is shown in fig:
The phases of this model are:
Requirement Gathering:
– In this model a prototyping starts with an initial
requirement and gathering phase.
– The functionalities required for the product are
gathered.
Quick Design:
– A quick design is carried out and a prototype is
build.
– A new plan is created from gathered
requirements for the prototype to be built.
Prototype creation:
– Based on the design issues the trial product is
created.
Customer Evaluation:
– The developed prototype is submitted to the
customer for evaluation.
– Based on the customer feedback we may go for
development or again go for the redesign as per
customer demand.
Prototype refinement:
– Based on the information.
The code for the prototype is usually thrown away, but the experience gained while developing the
prototype helps for actual development. The rest of the phases for development are similar to the waterfall
model.
Software Engineering 7 Sunil Kumar Sahoo
KIIT Polytechnic
Advantages of Prototyping Models:
– Suitable for large systems.
– Customer communication is available.
– Quality of software is good.
– It helps to identifying the requirements.
Limitations of Prototyping Model:
– It is very difficult to predict how the system will work after development.
– This model is time consuming.
Incremental Model or
Evolutionary Model:
This life cycle model is also referred to as
the successive versions model and
sometimes as the incremental model.
Fig: Evolutionary model (A,B,C are modules of the software model)
– In this lifecycle model the software is first broken down into several modules which can be
incrementally constructed and delivered.
– The development team first develops the core modules of the system.
– The development model is shown in fig.
– Each successive version of the product is fully functioning capable of performing more useful
work than the previous version.
– In this model the user gets a chance to experiment with particularly developed software much
before the complete version of the software is ready.
– This model is useful only for very large products.
Advantages:
o Problem understanding increases through successive refinements
o Performs cost benefit analysis before enhancing software with capabilities
o Does not involve high complexity rate
o Early feedback is generated
Disadvantages
o Requires planning at the management and technical level.
o Becomes invalid when there is time constraint in the project schedule.
Spiral Model
– The spiral model, originally proposed by Barry Boehm.
– Main objective is to analyze the risks involved in the software project.
– Combines the features of prototyping
model, evolutionary and iterative
waterfall model. Hence this model is also
called meta model.
– The diagrammatic representation of this
model appears like a spiral with many
loops. The exact number of loops in the
spiral is not fixed.
– Each loop of the spiral represents a phase
Software Engineering 8 Sunil Kumar Sahoo
KIIT Polytechnic
of the software process. For example, the
innermost loop might be feasibility study,
the next loop may be requirements
specification, and so on.
– Each phase in this model is split into four
sectors (or quadrants) as shown in [Link]
following activities are carried out during
each phase of a spiral model.
First quadrant (Objective Setting)
o During the first quadrant, it determines objectives, alternatives &constraints.
Second Quadrant (Risk Assessment and Reduction)
o A detailed analysis is carried out for each identified project risk.
o Steps are taken to reduce the risks.
Third Quadrant (Development and Validation)
o Develop and validate the next level of the product after resolving the identified risks.
Fourth Quadrant (Review and Planning)
o Review the results achieved so far with the customer and plan the next iteration around the spiral.
o Progressively more complete version of the software gets built with each iteration around the
spiral.
Advantages
– For large, complex and expensive projects.
– If the software associated with risk.
– Re-evaluation after each step
Disadvantages
– Assessment and resolution of project risks is not an easy task.
– Difficult to estimate budget and schedule in the beginning.
Software Engineering 9 Sunil Kumar Sahoo