Professional Documents
Culture Documents
Software Engineering: Presented by Sasmita Rani Behera
Software Engineering: Presented by Sasmita Rani Behera
Introduction
Presented By
Sasmita Rani Behera
1
What is Software Engineering?
• Engineering approach to develop software.
• Systematic collection of past experience:
– techniques,
– methodologies,
– guidelines.
• Heavy use of past experience:
– Past experience is systematically arranged.
• Theoretical basis and quantitative techniques provided.
• Many are just thumb rules.
• Trade-off between alternatives
2
Definition of Software Engineering
3
Technology Development Pattern
Engineering
Technology
Esoteric Past
Experience
Craft
Systematic Use of Past
Experience and Scientific Basis
Unorganized Use of
Past Experience
Art
Time
4
Why Study Software Engineering?
• To acquire skills to develop large
programs.
– Exponential growth in complexity and
difficulty level with size.
– The ad hoc approach breaks down when
size of software increases: --- “One thorn
of experience is worth a whole wilderness of
warning.”
5
Why Study Software Engineering?
1960 Year
2020
7
Software Crisis
• Software products:
– fail to meet user requirements.
– frequently crash.
– expensive.
– difficult to alter, debug, and enhance.
– often delivered late.
8
Factors contributing to the software crisis
• Larger problems,
• Lack of adequate training in software
engineering,
• Increasing skill shortage,
• Increasing of low productivity.
9
Programs versus Software Products
• Usually small in size • Large
• Author himself is sole • Large number of users
user
• Single developer • Team of developers
• Lacks proper user • Well-designed interface
interface
• Lacks proper • Well documented &
documentation user-manual prepared
• Ad hoc development. • Systematic development
10
Emergence of Software Engineering
11
Initial briefing by
Initial coding
customer
Works Satisfactory
Test
Failure
Modify Code
Development
Complete
12
2. High-Level Language Programming (Early 60s)
13
3. Control Flow-Based Design (late 60s)
• Size and complexity of programs increased further:
– exploratory programming style proved to be insufficient.
• Programmers found:
– very difficult to write cost-effective and correct programs.
• Programmers found:
– very difficult to understand and maintain programs written by others .
14
Control Flow-Based Design (late 60s)
• A program's control structure indicates:
– the sequence in which the program's instructions are
executed.
• To help design programs having good control
structure:
– flow charting technique was developed.
• Using flow charting technique:
– one can represent and design a program's control
structure.
– Usually one understands a program:
• by mentally simulating the program's execution sequence.
15
Control Flow-Based Design (Late 60s)
2 4
3 5
1
7 6
2 3
8 9
4
10
(b)
(a)
24
Data Flow Model of a Car Assembly Unit
25
6. Object-Oriented Design (80s)
• Object-oriented technique:
– natural objects (such as employees,
pay-roll-register, etc.) occurring in a
problem are first identified.
• Relationships among objects:
– such as composition, reference, and
inheritance are determined.
26
Object-Oriented Design (CONT.)
27
Evolution of Design Techniques
Embedded
Software Design
Object-oriented
style
Data flow-
oriented style
Data structure-
oriented style
Control flow-
oriented style
Exploratory
style
Year
29
Differences between the exploratory style
and modern software development practices
• In exploratory style,
– errors are detected only during testing,
– coding is synonymous with program development.
– very little attention was being given to producing
good quality and consistent documents.
• Now,
– focus is on detecting as many errors as possible
in each phase of development.
– coding is considered only a small part of program
development effort.
– visibility of good quality, consistent and standard
documents.
30
Computer Systems Engineering
• Computer systems engineering:
– encompasses software engineering.
Feasibility
Study
Requirements
Analysis and Hardware
Specification
Development
Hardware Integration
Maintenance
Software and Testing
Partitioning Software
Development
Project Management
32
Summary
33