What is Software Engineering?
Principles of S.E.
Scope and Necessity of S.E.
Software Process Models
Software Development Life Cycle
Various Process Model
• ART- esoteric use of past experience
• CRAFT- Unorganized use of past experience
• ENGINEERING- systematic use of past
experience and formation of scientific basis
What is Software Engineering?
Software + Engineering
Software : Collection of modules
Engineering : Branch of science and technology
concerned with the design, building, and use of engines,
machines, and structures.
Software Engineering is an engineering approach for
Software Engineering provides tools and techniques
which can be used to design and develop a software in a
systematic and cost effective manner.
What is Software Engineering? [Contd..]
• A time came few years back, that the cost of software became
so high in comparison to hardware products.
• Organizations had to invest large potion of their budget to
purchase the required software to automate the work.
• To tackle such a scenario, Software Engineering was the
• Then a scenario came that with hardware product started
providing software by default without any cost.
Program vs. Software Product
• Programs are developed by individuals for personal use.
• Limited functionality and size
• Lack of good UI and proper documentation
• Software products have multiple user, have good UI, proper
user manuals and documentation.
• Systematically designed, implemented and well tested.
• Developed by a group of Engineers.
Why Software Engineering
• To reduce development time
• To reduce development cost
• To reduce development complexity-
By decomposing the problem, and being well
Software Engineering Principles
Principle of Abstraction
Considers only those aspects of the problem that are
relevant for certain purpose and suppress other aspects that
are not relevant.
Principle of Decomposition
A complex problem is divided into several smaller
problems and then the smaller problems are solved one by
Scope and Necessity of Software Eng..
Without using software engineering principles it would be
difficult to develop large programs.
Ex. A program of size 1,000 lines of code has some
complexity. But a program with 10,000 LOC is not just 10
times more difficult to develop, but may as well turn out to
be 100 times more difficult unless software engineering
principles are used.
Software Engineering helps to reduce the programming
Software Life Cycle and Model
• A series of identifiable stages that a software product undergoes during
its lifetime is known as software life cycle.
• A descriptive and diagrammatic representation of software life cycle is
known as software life cycle model.
• Model represents all activities required to make a software product.
• Software life cycle is often referred to as Software process model
• Life cycle is used to develop a software in systematic and disciplined
Software Process Models
A Software Process Model is a standardised format for
the development of a software project.
“A set of activities that leads to the production of a software
product is known as Software Process.”
Software Development Life Cycle (SDLC)
1. Feasibility Study
To determine whether it would be financially and technically
feasible to develop the product.
2. Requirement Analysis and Specification
To understand the exact requirements of the customer and to
document them properly.
Requirements gathering and analysis
(“Software Requirement Specification is developed”)
To transform the requirements specified in the SRS
document into a structure that is suitable for
implementation in some programming language.
To transform the logics developed into code by using
syntax of particular programming language.
To verify and validate the software that it works as
To modify a software product after delivery to correct faults
and to improve performance.
Classical Waterfall Model
Iterative Waterfall Model
Rapid Application Development
Spiral Model 16
Various Software Process Models
1- Classical Waterfall Model
The waterfall model is the classic process model
– it is widely known, understood and used.
In some respect, waterfall is the ”common sense”
Limitation of Classical Model
The classical waterfall model is an idealistic.
It assumes that no development error is ever committed
by the engineers during any of the life cycle phases.
In practical environment engineers do commit mistakes.
2- Iterative Waterfall Model
Defects usually get detected much later in the
For example, a design defect might go unnoticed till the
coding or testing phase.
Iterative Waterfall Model [Contd..]
Once a defect is detected:
We need to go back to the phase where it was
Redo some of the work done during that and all
Therefore, we need feedback paths in the classical
3- Prototyping Model
A prototype is a toy implementation of the system.
A prototype usually exhibits limited functional
capabilities, low reliability, and inefficient performance
compared to the actual software.
A prototype is usually built using several shortcuts.
Reasons for DevelopingAPrototype
To illustrate the input data formats, messages, reports,
and the interactive dialogues to the customer.
Examine technical issues associated with product
It is impossible to ``get it right'' the first time, we must
plan to throw away the first product, if we want to
develop a good product.
Advantages of Prototyping
Provides better understanding of the customer’s needs
how the screens might look like
how the user interface would behave
how the system would produce outputs
Prototype building needs Additional Cost.
4- Evolutionary Model
Also called as Successive Version or Incremental Model.
System is broken down into several modules which can
be incrementally implemented and delivered.
First develop the core modules of the system.
Initial product skeleton is refined into increasing levels
of capability, by adding new functionalities in successive
Advantages of Evolutionary Model
Users get a chance to experiment with a partially
developed system much before the full working version is
Helps finding exact user requirements, much before
fully working system is developed.
Core modules get tested thoroughly reduces chances of
errors in final product.
Difficult to subdivide problems into functional units
which can be incrementally implemented and delivered.
Only useful for very large problems, where it is easier to
find modules for incremental implementation.
Disadvantages of Evolutionary Model
Lack of extensive pre-planning.
Allows software to be written much faster, and makes it
easier to change requirements.
Used when time to develop software is very less and
product is required to be developed at earliest.
5- RapidApplication Development
1. Requirement Planning
Combines elements of the system planning and systems
It ends when the team agrees on the key issues and
obtains management authorization to continue.
2. User Design
Users interact with systems analysts and develop models
User Design is a continuous interactive process that
allows users to understand and modify the system. 34
RapidApplication Development [Contd..]
Tasks are programming and application development like
coding, unit-integration and system testing.
Tasks include testing, changeover to the new system, and
New system is built, delivered, and placed in operation
RapidApplication Development [Contd..]
Proposed by Boehm in 1988.
Each loop of the spiral represents a phase of the software
the innermost loop might be concerned with system
the next loop with system requirements definition,
the next one with system design, and so on.
Each loop in the spiral is split into four sectors
6- Spiral Model
1. Identify objectives of the phase, examine the risks
associated with these objective.
Risk is any adverse circumstance that might hamper
successful completion of a software project.
2. Find alternate solutions possible
Spiral Model [I- Quadrant]
For each identified project risk, a detailed analysis is
Steps are taken to reduce the risk.
For example, if there is a risk that the requirements are
inappropriate, a prototype system may be developed.
Spiral Model [II- Quadrant]
Develop and validate the next level of the product.
Review the results achieved so far with the customer
and plan the next iteration around the spiral.
With each iteration around the spiral progressively more
complete version of the software gets built.
Spiral Model [III &IV - Quadrant]
Iterative waterfall model
most widely used model.
suitable only for well-understood problems.
Prototype model is suitable for projects which are not
well understood in terms of
Evolutionary model is suitable for large problems
can be decomposed into a set of modules that can be
incremental delivery of the system is acceptable to
suitable for development of technically challenging
software products that are subject to several kinds of
Model Comparison [Contd..]
1- External Characteristics- User Interest
• Correctness- degree to which system is free from faults in
system design, specification and implementation.
• Usability- Ease with which users can learn and use the system
• Reliability- ability of system to perform when required
• Integrity- prevention of unauthorized/improper use.
• Adaptability- usability in other application.
• Accuracy- degree of quantitative correctness.
• Robustness- functioning of system in presence of invalid
2- Internal Characteristics- Manager Interest
• Maintainability- ease of modifying software for changing or
adding capabilities or improving performance.
• Flexibility- extent of modifying system for other user or
• Portability- ease of modifying system for operating in different
• Reusability- re-use of existing code