Content
What is Software Engineering?
Principles of S.E.
Scope and Necessity of S.E.
Software Process Models
Software Development Life Cycle
Various Process Model
Model Comparison
2
Technology Development
• ART- esoteric use of past experience
• CRAFT- Unorganized use of past experience
• ENGINEERING- systematic use of past
experience and formation of scientific basis
3
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.
4
Software Engineering is an engineering approach for
software development.
OR
Software Engineering provides tools and techniques
which can be used to design and develop a software in a
systematic and cost effective manner.
5
What is Software Engineering? [Contd..]
Software Crisis
• 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
option.
• Then a scenario came that with hardware product started
providing software by default without any cost.
6
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.
7
Why Software Engineering
• To reduce development time
• To reduce development cost
• To reduce development complexity-
By decomposing the problem, and being well
planned.
8
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
one.
9
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
complexity. 10
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
manner
11
Software Process Models
A Software Process Model is a standardised format for
Planning
Organising, and
Running
the development of a software project.
“A set of activities that leads to the production of a software
product is known as Software Process.”
12
Software Development Life Cycle (SDLC)
Problem Identification
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
ƒRequirements specification
(“Software Requirement Specification is developed”)
13
SDLC [Contd..]
3. Design
To transform the requirements specified in the SRS
document into a structure that is suitable for
implementation in some programming language.
4. Coding
To transform the logics developed into code by using
syntax of particular programming language.
14
5. Testing
To verify and validate the software that it works as
expected.
6. Maintenance
To modify a software product after delivery to correct faults
and to improve performance.
15
SDLC [Contd..]
Classical Waterfall Model
Iterative Waterfall Model
Prototyping Model
Evolutionary 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”
approach.
17
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.
19
2- Iterative Waterfall Model
Defects usually get detected much later in the
life cycle:
For example, a design defect might go unnoticed till the
coding or testing phase.
20
Iterative Waterfall Model [Contd..]
Once a defect is detected:
We need to go back to the phase where it was
introduced.
Redo some of the work done during that and all
subsequent phases.
Therefore, we need feedback paths in the classical
waterfall model.
21
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.
23
Reasons for DevelopingAPrototype
To illustrate the input data formats, messages, reports,
and the interactive dialogues to the customer.
Examine technical issues associated with product
development.
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.
25
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.
26
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
versions.
27
Advantages of Evolutionary Model
Users get a chance to experiment with a partially
developed system much before the full working version is
released.
Helps finding exact user requirements, much before
fully working system is developed.
Core modules get tested thoroughly reduces chances of
errors in final product.
30
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.
31
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.
32
5- RapidApplication Development
1. Requirement Planning
Combines elements of the system planning and systems
analysis phases.
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
and prototypes.
User Design is a continuous interactive process that
allows users to understand and modify the system. 34
RapidApplication Development [Contd..]
3. Construction
Tasks are programming and application development like
coding, unit-integration and system testing.
4. Cutover
Tasks include testing, changeover to the new system, and
user training.
New system is built, delivered, and placed in operation
much sooner.
35
RapidApplication Development [Contd..]
Proposed by Boehm in 1988.
Each loop of the spiral represents a phase of the software
process:
the innermost loop might be concerned with system
feasibility,
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
(quadrants 36
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
38
Spiral Model [I- Quadrant]
For each identified project risk, a detailed analysis is
carried out.
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.
39
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.
40
Spiral Model [III &IV - Quadrant]
Model Comparison
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
user requirements
technical aspects
41
Evolutionary model is suitable for large problems
can be decomposed into a set of modules that can be
incrementally implemented,
incremental delivery of the system is acceptable to
the customer.
Spiral model
suitable for development of technically challenging
software products that are subject to several kinds of
risks.
42
Model Comparison [Contd..]
Software Characteristics
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
without failure.
• Integrity- prevention of unauthorized/improper use.
• Adaptability- usability in other application.
• Accuracy- degree of quantitative correctness.
• Robustness- functioning of system in presence of invalid
inputs.
43
S/w Characteristics
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
environment.
• Portability- ease of modifying system for operating in different
environment.
• Reusability- re-use of existing code
• Readability
44