You are on page 1of 17

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

You might also like