1 Intro
1 Intro
1
Organization of this
Lecture:
What is Software Engineering?
Programs vs. Software Products
Evolution of Software Engineering
Notable Changes In Software
Development Practices
Introduction to Life Cycle Models
Summary
2
Introduction
3
Introduction
4
What is Software
Engineering?
Engineering approach to develop
software.
Building Construction Analogy.
Systematic collection of past
experience:
techniques,
methodologies,
guidelines.
Counting number of persons in a room v/s
the Census (i.e. population of a country )
5
Introduction
Similarly,
For developing a SOFTWARE,
Software Engineering principles
are used !!
6
What do we want in a system?
(What are the important attributes of
good software?)
Reliability
Efficiency
Maintainable/ Adaptable
Accessible / Usable (good interface design)
Cost Effectiveness
Safety
Robustness
Recoverability
Portability
Understandability
7
Reliability describes the ability of a
system to keep functioning correctly
under specific use over a given period.
(System should not fail in adverse
circumstances) e.g. health care system,
patient monitoring system, auto pilot
system.
8
The test for efficiency measures the
required time and consumption of
resources for the fulfillment of tasks.
Resources may include other software
products, the software and hardware
configuration of the system etc. e.g. ATM.
9
Usability is very important for interactive
software systems. Users will not accept a
system which is hard to use. So the
system should be easy to use.
10
Fault tolerance is the capability of the
software product to maintain a specified
level of performance, or to recover from
faults in cases of any software faults.
11
Why Study Software Engineering?
(1)
13
Why Study Software Engineering?
(2)
To acquire skills to be a
better software engineer
(analyst/designer/developer/
tester…) instead of a
programmer:
To achieve Higher Productivity
Produce Better Quality Programs...
15
Software Crisis
In early days, Software products:
Software projects:
Over budgets.
Over Schedules.
Large number of Cancellation.
Uncontrolled and unmanaged.
17
Software Crisis…
Research from Standish Group Data on 9236 development projects completed in 2004.
18
Software Crisis (cont.)
Hw cost
Sw cost
1960 Year
1999…
Relative Cost of Hardware and Software
19
Factors Contributing to the
Software Crisis
20
How was Software usually
Constructed …
The requirements The developers This is how the This is how the
specification was understood it in problem was programmers
defined like this that way designed coded it
before.
That is the program This is how the program is This, in fact, is what the
21
after debugging described by marketing dept. customer wanted … :-)
Software in the 21st Century…
22
22
What is Software
Engineering?
23
Software Engineering…
24
Software Engineering…
Broad definition:
The methods, processes, technologies and tools by which
software systems are developed and maintained.
Encompasses many areas:
– Planning and managing software projects
– Requirements Analysis and Specification
– System Modeling and Design
– System Implementation
– Testing and quality assurance
– Maintenance
25
The important approach to tackle the complexity of
given problem is decomposition. In this technique, a
complex problem is divided into several smaller
problems and then the smaller problems are solved one
by one.
26
The important principle of abstraction
implies that a problem can be simplified
by omitting irrelevant details. In other
words, the main purpose of abstraction is
to consider only those aspects of the
problem that are relevant for certain
purpose and suppress other aspects that
are not relevant at this time and for given
purpose.
28
Software Characteristics
29 29
Software…
30
software..
Software products may be:
GENERIC
developed to be sold to a range of different customers
e.g. PC software such as Excel or Word.
referred to as commercial off-the-shelf (COTS) software
or clickware supplied by a vendor
31
What are the important
attributes of good software?
The software should deliver the required functionality and
performance to the user and should be maintainable, dependable and
acceptable.
Maintainability:
Software must evolve to meet changing needs;
Dependability
Software must be reliable;
Efficiency
Software should not make wasteful use of system resources;
Acceptability
Software must accepted by the users for which it was designed.
This means it must be understandable, usable and compatible with
other systems.
32
Software Characteristics
Many Types..
System software, Real Time systems, Business
software, Scientific software, Embedded
software, PC based software, Web based
software, AI software etc.
Products
Generic or Packaged (COTS)
Custom Built
Sources
Open (shareware) easily shared,
Closed (Proprietary), have to be purchased
33 CISH-6050 - Software Engineering Management
33
Software
Software Myths
Myths
(Management
(Management Perspectives)
Perspectives)
As long as there are good standards and clear procedures
in my company, I shouldn’t be too concerned.
The environment is
only one of the several factors
that determine the quality
of the end software product!
Software
Software Myths
Myths
(Management
(Management Perspectives)
Perspectives)
When my schedule slips, what I have to do is to
start a fire-fighting operation: add more software
specialists, those with higher skills and longer
experience - they will bring the schedule back on
the rails!
Unfortunately,
software business does not
entertain schedule compaction
beyond a limit!
Software
Software Myths
Myths
(Customer
(Customer Perspectives)
Perspectives)
A general statement of objectives is
sufficient to get started with the
development of software. Missing/vague
requirements can easily be incorporated
even lately in the development process.
Software
Software Myths
Myths
(Developer
(Developer Perspectives)
Perspectives)
Once the software is demonstrated, the job is
done.
manuals
manuals
object
object plans
plans
codes
codes
data
data
test test
testresults
results
testsuites
suites prototypes
prototypes
Boehm’s
Boehm’s
Top
Top Ten
Ten
Industrial
Industrial Software
Software
Metrics
Metrics
Boehm’s
Boehm’s Top
Top Ten
Ten
Industrial
Industrial Software
Software Metrics
Metrics
20 20
relative effort to repair
15
10
5 5
1 2
0.5
0 0.15
Maintenance
Unit test
Acc. Test
Reqmts
Coding
Design
Small bug in the initial phase (requirements),
Becomes an error in later phases,
May become serious fault in testing phase,
And can be the major cause of system,
failure after implementation.
46
Boehm’s
Boehm’s Top
Top Ten
Ten
Industrial
Industrial Software
Software Metrics
Metrics
100 Hardware
Software
80
60
40
20
0
1960 1970 1980 1990
Boehm’s
Boehm’s Top
Top Ten
Ten
Industrial
Industrial Software
Software Metrics
Metrics
7 development effort is in
coding.
Distribution
Distribution of
of Effort
Effort
Across
Across Phases
Phases
10
25 5
45
Testing
15 40
Coding 20 30
15
Design 45
30
20
Analysis
Traditional Structured CASE environment
environment techniques
Reverse Engineering ??
57
Boehm’s
Boehm’s Top
Top Ten
Ten
Industrial
Industrial Software
Software Metrics
Metrics
Walkthroughs/reviews catch
9 around 65% of the errors.
Distribution
Distribution of
of Activities
Activities
in
in Defect
Defect Removal
Removal
walkthru
unit test
evaluation
10 5 10 integration
other
10
65
Software
Software Myths
Myths
(Developer
(Developer Perspectives)
Perspectives)
20% 80%
modules cost
Boehm’s
Boehm’s Top
Top Ten
Ten
Industrial
Industrial Software
Software Metrics
Metrics
20% 80%
modules errors
Boehm’s
Boehm’s Top
Top Ten
Ten
Industrial
Industrial Software
Software Metrics
Metrics
20% 80%
modules cost
to fix the
errors
Symptom of Software
Crisis
about US$250 billion spent per year in the
US on application development
of this, about US$140 billion wasted due to
the projects getting discarded or reworked;
this in turn because of not following best
practices and standards in the
development process i.e. S.E.
69
Programs versus Software
Products
70
Programs versus Software
Products
71
Programs versus Software
Products
Student Program Industrial Strength
SW not in critical use, Supports important
Reliability, robustness functions / business,
not so important, Reliability , robustness
Not much investment, are very important,
Don’t care about Heavy investment,
portability. Portability, scalability is
a key issue here,
72
Computer Systems
Engineering
Computer systems engineering:
encompasses software engineering.
73
Computer Systems
Engineering
74
Computer Systems
Engineering (CONT.)
75
Computer Systems
Engineering (CONT.)
Feasibility
Study
Requirements
Analysis and
Specification Hardware
Development
Hardware
Software
Partitioning
Software
Development Integration
and Testing
Project Management
76
Emergence of Software
Engineering
77
Early Computer
Programming (50s)
Every programmer developed
his/her own style of writing
programs:
according to his/her convenience
(called exploratory programming/
adhoc programming) which leads
to Adhoc development.
development
78
High-Level Language
Programming (Early 60s)
79
High-Level Language
Programming (Early 60s)
80
…. in late 60s…
Programmers found:
programs written by others were very
difficult to understand and maintain.
To cope up with this problem, experienced
programmers advised: ``Pay particular
attention to the design of the program's
control structure.'’
82
Control Flow-Based Design (late 60s)
83
Control Flow-Based Design (late
60s)
84
Control Flow-Based Design
(Late 60s)
87
Control-flow Based Design (Late
60s)
89
Control Flow-Based Design (Late
60s)
90
Control-flow Based Design (Late 60s)
Everyone accepted:
it is possible to solve any
programming problem without
using GO TO statements.
This formed the basis of
Structured Programming
methodology.
91
Structured Programming
92
Structured programs…
93
Structured programs …
95
Data Structure-Oriented
Design (Early 70s)
97
Data Structure-Oriented
Design (Early 70s)
98
Data Flow-Oriented Design (Late
70s)
103
Data Flow-Oriented Design (Late
70s)
Object-oriented technique:
a naturally appealing design
approach:
natural objects (such as
employees, pay-roll-register, etc.)
occurring in a problem are first
identified.
107
Object-Oriented Design (80s)
108
Object-Oriented Design (80s)
Object-Oriented Techniques
have gained wide acceptance:
Simplicity
Reuse possibilities
Lower development time and cost
More robust code
Easy maintenance
109
Evolution of Design
Techniques
Object-Oriented
Data flow-based
Data structure-
based
Control flow-
based
Ad hoc
110
Evolution of Other Software
Engineering Techniques
114
Differences Between the Exploratory Style and
Modern Software Development Practices..
In exploratory style,
errors are detected only during
testing,
Now,
focus is on detecting as many
errors as possible in each phase
of development.
115
Differences Between the Exploratory Style and
Modern Software Development Practices..
In exploratory style,
coding is synonymous with
program development.
Now,
coding is considered only a small
part of overall software
development effort.
116
Differences Between the Exploratory Style and
Modern Software Development Practices..
117
Differences Between the Exploratory Style and
Modern Software Development Practices..
121
Software Life Cycle
123
Some Root Causes for Failure
124
Life Cycle Model
A written description:
forms a common understanding of activities
among the software developers.
helps in identifying inconsistencies,
redundancies, and omissions in the
development process.
Helps in selecting a process model for
specific projects (according to application
domain).
128
Life Cycle Model (CONT.)
130
Life Cycle Model (CONT.)
131
Life Cycle Model (CONT.)
132
Life Cycle Model (CONT.)
134
Life Cycle Model (CONT.)
135
Life Cycle Model (CONT.)
136
Life Cycle Model (CONT.)
138
Life Cycle Model (CONT.)