Engineering Approach To Develop Software
Engineering Approach To Develop Software
Engineering?
Engineering approach to
develop software.
Engineering Practice
Heavy use of past experience:
Past experience is systematically
arranged.
To acquire skills to be a
better programmer:
Higher Productivity
Better Quality Programs
Software Crisis
Software products:
Larger problems,
Lack of adequate training in
software engineering,
Increasing skill shortage,
Low productivity
improvements.
7
Large
Large number of
users
Team of developers
Well-designed
interface
Well documented &
user-manual
prepared
Systematic
development
Computer Systems
Engineering
Computer systems engineering:
encompasses software
engineering.
Computer Systems
Engineering
10
Computer Systems
Engineering
Often, hardware and software
are developed together:
(CONT.)
Computer Systems
Engineering
(CONT.)
Feasibility
Study
Requirements
Analysisand
Specification
Hardware
Software
Partitioning
Hardware
Development
Software
Development
Integration
andTesting
ProjectManagement
12
Emergence of Software
Engineering
Early Computer
Programming (50s)
Every programmer
developed his own style of
writing programs:
according to his intuition
(exploratory programming).
14
High-Level Language
Programming (Early 60s)
15
High-Level Language
Programming (Early 60s)
Software development
style was still exploratory.
Typical program sizes were
limited to a few thousands
of lines of source code.
16
Programmers found:
very difficult to write costeffective and correct programs.
17
Programmers found:
programs written by others very
difficult to understand and maintain.
18
(late 60s)
A program having a
messy flow chart
representation:
difficult to understand
and debug.
111
20
(Late
60s)
It was found:
21
(Late
60s)
(Late
60s)
(Late
60s)
(Late
60s)
25
(Late 60s)
Everyone accepted:
Structured Programming
27
Structured programs
Unstructured control
flows are avoided.
Consist of a neat set of
modules.
Use single-entry, single-exit
program constructs.
28
Structured programs
However, violations to
this feature are permitted:
due to practical
considerations such as:
premature loop exit to
support exception handling.
29
Structured programs
Structured Programming
Research experience shows:
programmers commit less
number of errors
31
Data Structure-Oriented
Design (Early 70s)
32
33
(Late
70s)
Data flow-oriented
techniques advocate:
(Late
Fit
Engine
DoorStore
Chassiswith
Engine
ChassisStore
Fit
Doors
Partly
Assembled
Car
Fit
Wheels
Assembled
Car
Paintand
Test
Car
WheelStore
37
Object-Oriented Design
(80s)
Object-oriented technique:
an intuitively appealing design
approach:
natural objects (such as
employees, pay-roll-register,
etc.) occurring in a problem
are first identified.
38
Object-Oriented Design
(80s)
39
Object-Oriented Design
(80s)
Object-Oriented Techniques
have gained wide
acceptance:
Simplicity
Reuse possibilities
Lower development time and
cost
More robust code
Easy maintenance
40
Evolution of Design
Techniques
ObjectOriented
Dataflowbased
Datastructure
based
Controlflow
based
Adhoc
41
42
No Specific methodology
44
45
46
(CONT.)
47
48
(CONT.)
(CONT.)
When a program is
developed by a single
programmer -- he has the freedom to decide
his exact steps.
51
(CONT.)
(CONT.)
(CONT.)
(CONT.)
55
(CONT.)
56
(CONT.)
57
(CONT.)
58
(CONT.)
proposed.
We will confine our attention to a few
important and commonly used models.
classical waterfall model
iterative waterfall,
evolutionary,
prototyping, and
spiral model
59
Summary
Software engineering is:
systematic collection of
decades of programming
experience
together with the innovations
made by researchers.
60
Summary
A fundamental necessity
while developing any large
software product:
adoption of a life cycle
model.
61