Software Engineering: DR - Khubaib Amjad Alam, Tahir Farooq
Software Engineering: DR - Khubaib Amjad Alam, Tahir Farooq
Software Specification:
The functionality of the software and constraints on its operation
must be defined
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 needs
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
Process Model
8
The Waterfall Model
▪ The first published model of the
software development process (Royce,
1970)
Communication
Project initiation
Requirements
gathering
Planning
Estimating
Scheduling
Tracking Modeling
Analysis
Design Construction
Code
Test Deployment
Delivery
Support
Feedback
11
Waterfall model problems
System Testing
Milestone and
Acceptance
deliverable at Test
each step. (Artifacts
Maintenance
such as Design
document, Requirement
Specification. etc.)
The Waterfall Model - Pros
▪ Simple, manageable and easy to understand
▪ Fits to common project management practices (milestones,
deliverables etc.)
Planning
Estimating
Scheduling
Tracking Modeling
Analysis
Design Construction
Code
Test
Deployment
Delivery
Support
Feedback
18
Spiral Model (Diagram)
Planning
Communication
Start Modeling
Start
Deployment Construction
19
Cost
Progress
Spiral Model (Description)
21
▪Operates as a risk-driven model…a go/no-go decision
occurs after each complete spiral in order to react to risk
determinations
▪Requires considerable expertise in risk assessment
▪Serves as a realistic model for large-scale software
development
Prototyping Model(Diagram)
Quick
Planning
Communication
Start Modeling
Quick
Deployment, Design
Delivery,
and
Feedback
Construction
Of Prototype
23
Prototyping Model (Description)
24
Prototyping Model(Potential Problems)
▪ The customer sees a "working version" of the software, wants to stop all
development and then buy the prototype after a "few fixes" are made
▪ Developers often make implementation compromises to get the software
running quickly (e.g., language choice, user interface, operating system choice,
inefficient algorithms)
▪ Lesson learned
▪ Define the rules up front on the final disposition of the prototype before it is built
▪ In most circumstances, plan to discard the prototype and engineer the actual production software with a
goal toward quality
25
Prototyping Model
▪ A customer defines a set of general objectives
for software but does not identify detailed
input, processing, or output requirements
Revise Customer
Prototype Review
System Delivered
Requirements System
Prototyping Model (Pros)
▪ Suitable for large systems for
which there is no manual
process to define the
requirements
Implementation
of Units (classes,
procedures, Unit Testing
functions)
V Model (Pros)
▪ It defines tangible phases of the process, and proposes a
logical sequence in which these phases should be
approached
▪ It also defines logical relationships between the phases
▪ It demands that testing documentation is written as soon
as possible
▪ It gives equal weight to development and testing
▪ It provides a simple and easy to follow map of the
software development process
V Model (Cons)
▪ It is too simple to accurately reflect the software development process
▪ It is inflexible; it has no ability to respond to change
▪ It produces inefficient testing methodologies
Incremental Development Iterative Development
Phased Development
▪ Design a system so it can be delivered in pieces, letting users
have some functionality while the rest is under development
Phased Development
Incremental Iterative
Development Development
Incremental Development
How? By delivering
several releases?
Incremental Model (Diagram)
Increment #1
Communication
Planning
Modeling
Increment #2 Construction
Deployment
Communication
Planning
Modeling
Construction
Increment #3 Deployment
Communication
Planning
Modeling
Construction
Deploy………
41
Incremental Model (Description)
▪ Delivers a full system in the first release, then changes the functionality
of each subsystem with each new release
Iterative Development
When should the releases take When should the releases take
place? place?
Time-boxing - The time period is Prioritized functionality - Do the
fixed for each iteration. most important parts first.
Iterative vs. Incremental Development
Incremental Development
Add a new "part" at each increment
Iterative Development
Improve a "working system" at each iteration
Iterative Development - Pros
▪ Misunderstandings and inconsistency are made clear early (e.g. between
requirement, design, and implementation)
▪ Encourage to use feedback -> elicit the real requirements
▪ Forced to focus on the most critical issues
▪ Continuous testing offers project assessment
▪ Workload is spread out over time (especially test)
▪ The team can get "lesson learned" and continuously improve the process
▪ Stakeholders gets concrete evidence of progress
Iterative Development - Cons
▪ Problem with current business contracts, especially fixed-price contracts