Software Engineering
Fundamentals
CSC-2073
Lecture No. 03
Dr. Muhammad Adeel
Department of Computer Science
National Textile University
dr.muhammad.adeel.ntu@hotmail.com
Last Lecture Review
What is Software?
What is Engineering?
Software Engineering
Difference between Computer Science and
Software Engineering
Software Crisis
Well-Engineered Software
Scope of a S/W Life-Cycle Model
2 Software Engineering - CSC2073
Agenda – What will you Learn Today?
Life Cycles and Process The Waterfall Model
Models
3 Software Engineering - CSC2073
Life Cycles and Process Models
4 Software Engineering - CSC2073
Embracing Change
In software projects one thing that is constant:
5 Software Engineering - CSC2073
Software Process
“A software process is a set of related activities
that leads to the production of a software
product.”
6 Software Engineering - CSC2073
Software Process
Software
Process
Plan- Agile-
Driven Driven
7 Software Engineering - CSC2073
S/W Process - Fundamentals Activities
Software Specification
– The functionality of the software and constraints on its
operation must be defined
Software Design & Implementation
– The software to meet the specification must be
produced
Software Validation
– The software must be validated to ensure that it does
what the customer wants
Software Evolution
– The software must evolve to meet changing customer
8 needs Software Engineering - CSC2073
Software Process Models
A software process model is a simplified
representation of a software process
Each process model represents a process
from a particular perspective
Provides only partial information about that
process
9 Software Engineering - CSC2073
The Waterfall Model
10 Software Engineering - CSC2073
The Waterfall Model
The first published model of the software
development process (Royce, 1970)
Because of the cascade from one phase to
another, this model is known as the ‘Waterfall
Model’
Plan and schedule all of the process activities
before starting work on them
11 Software Engineering - CSC2073
The Waterfall Model
Requirements Finish each phase
before continue to next
System Design
Why is the waterfall model
Program Design so criticized?
Which are the problems?
Implementation Can it be useful sometimes?
Integration
Testing
System Testing
Milestone and
deliverable at Acceptance
each step. (Artifacts Test
such as Design
document, Requirement Maintenance
Specification. etc.)
12 Software Engineering - CSC2073
The Waterfall Model – Pros & Cons
Simple, manageable and easy to Software requirements change, hard
understand to sign-off on a SRS
Fits to common project management Early commitment. Changes at the
practices (milestones, deliverables end, large impact
etc.) Feedback is needed to understand a
Focus on requirements and design at phase. For example implementation
beginning, save money and time at is needed to understand some
the end design
Can be suitable for short projects Difficult to estimate time and cost for
(some weeks) the phases
Can be suitable for "stable" projects, Handling risks are not part of the
where requirements do not change model. Pushes the risks forward
Focus on documents, saves Software "is not" developed in such
knowledge which can be reused by a way. It evolves when problems are
other people more understood
Widely used e.g. US Dept of Defense
Can be suitable for fixed-price
contracts
13 Software Engineering - CSC2073
Can We Improve the Model?
Requirements Iteration back to previous phase
System Design
Program Design
Implementation
Integration
Testing
System Testing
Danger! e.g. a performance
problem can result in a Acceptance
major requirements change. Test
Very expensive rollback...
Maintenance
14 Software Engineering - CSC2073
Do It Twice?
Second round,
Requirements
Do it right The Original paper is
actually misunderstood!
System Design
(Royace, 1970) includes:
Iteration of phases
Program Design
"Do it twice" prototype
First round,
a prototype Implementation
Integration
Testing
Requirements
Requirements
System Testing
System
System Design
Design
Program
Program Design
Design
Implementation
Implementation
Acceptance
Integration
Test
Integration
Testing
Testing
Input to the
System
System Testing
Testing
Acceptance
Acceptance Test
Test
phases in the Maintenance
Maintenance
Maintenance
second round
15 Software Engineering - CSC2073
Recap
Software Process
– S/W Process - Fundamentals Activities
– Software Process Models
The Waterfall Model
– The Waterfall Model - Pros
– The Waterfall Model - Cons
– Can We Improve the Model?
– Do It Twice?
16 Software Engineering - CSC2073
Questions
17 Software Engineering - CSC2073