You are on page 1of 41

1

Lecture 3
Software Process Models
Chapter 2 & 3 in Software Engineering Book
2

Overview

 What are software process models?

 Why do we need software process models?

 Models:
 Waterfall models.

 Evolutionary models.

 CBSE models.

 Iterative models.
3

By the end of this chapter, you should be able


to..
 Describe various software process models.

 Identify advantages and disadvantages of each model.

 Evaluate the applicability of each model for different


software development contexts.
4

Software Process Model

A structured set of activities required to develop a software system.


5

Ad hoc Software Development

Developing software without planning for each phase, and


without specifying tasks, deliverables, or time constraints.

Reliesentirely on the skills and experience of the individuals


performing the work.

 The software process may change as work progresses.


Software Process Model
• A structured set of activities required to develop a
software system.
• Many different software processes but all involve:
– Specification – defining what the system should do;
– Design and implementation – defining the organization of the system and
implementing the system;
– Validation/testing – checking that it does what the customer wants;
– Evolution – changing the system in response to changing customer needs.
• A software process model is an abstract representation of a process. It
presents a description of a process from some particular perspective.

6
7

Activity: What could go wrong in a


software development project?
SaudiTech is a software company. It has a team of 25 programmers. Faisal has
recently established a dental clinic in Riyadh and asked SaudiTech to develop a
management system for his dental clinic.

Faisal’s request was to develop a system to electronically manage patient records


and perform administrative functions similar to ‘what is being used in other clinics’
but within a budget of 50k Saudi riyals and delivered within 3 months.

SaudiTech adopts an ad hoc approach to software development and has not worked
on large scale projects before. What problems do you anticipate in this project?
8

How can we overcome problems with ad


hoc software development?
 Problems: (include but not limited to)

 Difficult to distinguish between tasks  important tasks may be ignored.


 Inconsistent schedules, budgets, functionality and product quality.
 Delayed problem discovery  more costly to fix.

Solution? Software Process Model


“an abstract representation of a process. It presents a description of a process
from some particular perspective.”

Software Process Models provide guidelines to organize how software process


activities should be performed and in what order.
9

Software Process Models

 Waterfall model.

 Evolutionary models.

 Component-Based development model (CBSE).

 Iterative Models.
10

1. Waterfall Model

Requirements

Design

Code & Unit Test

Test &
Integration

Operations &
Maintenance
11

1. Waterfall Model

 Linear sequential model.

 Oldest model, since the 70s.

 Most widely used in software engineering.

 Documentation is produced at every stage.


12

2. Evolutionary Models


13

2. Evolutionary (Exploratory Model)

Concurrent
Activities

Initial
Specification Version
Outline
Description
Development

Validation Final
Version
14

2. Evolutionary (Prototyping Model)

1. Requirements gathering.
2. Design and build SW prototype.
3. Evaluate prototype with customer.
4. Refine requirements.
15

3. Component-Based Models CBSE

Requirement Requirement System


Component
s s design with
analysis
specification modification reuse

Development
System
and
validation
integration

 Systematic reuse: Integrated from existing components or COTS


(Commercial-Off-The-Shelf) systems.

 This approach is becoming increasingly used as component standards


have emerged.
3. Component-Based Models CBSE

Types of software components:

•Web services that are developed according to service standards and


which are available for remote invocation.
•Collections
of objects that are developed as a package to be integrated
with a component framework such as .NET or J2EE.
•Stand-alone software systems (COTS) that are configured for use in a
particular environment.

16
17

4. Iterative Models


18

4. Iterative (Incremental Model)


Define
Assign
outline Design system
requirements to
requirement architecture
increments
s

Develop
Validate Integrate Validate Final
system
increment increment system system
increment

System incomplete

 Development & delivery in increments.


 Increment  deliver part of the functionality.
 User requirements are prioritized  Requirements with highest priority are included in
early increments.
 Freezing requirements for each increment.
19

4. Iterative (Spiral Model)


20

4. Iterative (Spiral Model)

 Objective setting: Specific objectives for the phase are identified.

 Risk assessment and reduction: Risks are assessed and activities


put in place to reduce the key risks.

 Development and validation: A development model for the


system is chosen which can be any of the generic models.

 Planning: the project is reviewed and the next phase of the spiral
is planned.
21

4. Iterative (Spiral Model)

 Risk driven process model.


 Different risk patterns can lead to choosing different process models.

 What is risk?
Situations or possible events that may cause a project to fail to meet its
goal.
Example risks:
 Experienced staff leave the project.
 Hardware which is essential for the system will not be delivered on
schedule.
More about risks in Chapter 3 (22 in the book).
22

4. Iterative (Agile Model)

 Working software vs. Documentation.

 Customer collaboration vs. contract negotiation.

 Development team:
 Size.
 Location: distributed vs. co-located.
 Experience (skilled) and discipline (self-organizing).

 Methods:
 Individuals & interactions vs. Processes, phases & tools.
 Adaptations to changing circumstances.
 Measures of progress: working software, rapid delivery.
Characterized by quickness, lightness, and ease of
movement
Mentally quick or alert
Containing little excess or waste
Thrifty in management
Excellent; skillful (slang)
“I think Agile is both being able to respond quickly
(which means you have to know that you have to
respond quickly—not an easy thing to do) as well
as being able to anticipate when the rules or
principles are changing or, more importantly, can
be changed,” Bob Charette – Lean Development.
We are uncovering better ways of developing
software by doing it and helping others do it.
Through this work we have come to value:
Individualsand interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

That is, while there is value in the items on


the right, we value the items on the left more.
Agile software development processes are built
on the foundation of iterative development.
To that foundation they add a lighter, more
people-centric viewpoint than traditional
approaches.
Agile processes use feedback, rather than
planning, as their primary control mechanism.
The feedback is driven by regular tests and
releases of the evolving software.
 Philosophy
 Take known good practices and push them to
extremes
 For example
 “If code reviews are good, we’ll review code all the
time”
 “If testing is good, we’ll test all the time”
 “If design is good, we’ll make it part of everybody’s
daily business”
Four variables in software development :
Cost, Time, Quality, Scope
Four Values
Communication, Simplicity, Feedback, and Courage
Five Principles
Provide feedback, assume simplicity, make incremental
changes, embrace change, quality work
12 Practices
The Planning Game PairProgramming
Small Releases Collective Ownership

Metaphor Continuous Integration

Simple Design 40-hour Week

Testing On-site Customer

Refactoring Coding Standards


In Rugby, a scrum is a way to
restart the game after an
interruption, e.g. after a minor
foul.
“During a Scrum, the pack must
work as a unit, not as 8
individuals. Everybody has a role
to play. The important goal to
bear in mind is that when you
work well together as a unit, the
whole is much greater than the
sum of the parts.”
The On-Line Rugby Coaching Manual
Scrum is not an acronym
First used to describe hyper-productive development in
1987 by Ikujiro Nonaka and Hirotaka Takeuchi
Scrum is
a team-based approach
 to iteratively, incrementally develop systems and products
 when requirements are rapidly changing

Assumes complicated, unpredictable environment


Does not assume repeatable process
It produces a potentially shippable set of functionality at
the end of every iteration
Small teams (< 10 people)
A series of Sprints (1-4 weeks)

Visible, usable increments

Time-boxed
33

Evaluation of Models
34

Activity

 Select one slip from the envelope.

 In teams of 4 people, list the advantages, disadvantages,


and when to use a certain software process model.

 Share your list with the rest of the class.


35

1. Waterfall Model

 Problems: Inflexible partitioning of the project into distinct


stages makes it difficult to respond to changing customer
requirements.

 Applicability:
 Appropriate when requirements are well-understood.
 Changes will be fairly limited during the design process.
 Large interactive systems.

 Mostly used for large systems engineering projects.


36

2.(a) Exploratory Model

 Problems:
 Lack of process visibility;
 Systems are often poorly structured;

 Applicability:
 For small or medium-size interactive systems;
 For parts of large systems (e.g. the user interface);
 For short-lifetime systems.
37

2.(b) Prototyping Model

 Advantages:
 Users get a feel for the actual system.
 Developers get to build something immediately.
 Specifications can be developed incrementally.
 Disadvantages:
 Developers may make implementation compromises in order to
get a prototype working quickly.
 The process in not visible (few documents that reflect every version
of the system).
 Systems poorly structured.
38

3. CBSE

 Advantages:
 Reduce amount of software to be developed.
 Reduce costs and risks.
 Faster delivery.

 Disadvantages:
 Requirements compromises’, system does not meet real needs of
users.
 Control over system evolution is lost.
39

4.(a) Incremental Model

 Advantages:
 Customer value can be delivered with each increment so system
functionality is available earlier.
 Early increments act as a prototype to help elicit requirements for later
increments.
 Lower risk of overall project failure.
 The highest priority system services tend to receive the most testing.
 Disadvantages:
 Increments should be relatively small (20,000 lines of code).
 Can be difficult to map the customer’s requirements onto increments of the
right size.
 Hard to identify common functions.
40

4.(b) Spiral Model

 Advantages:
 Risks are explicitly assessed and resolved throughout the process.
 Software engineers can start working on the project earlier rather
than wading through a lengthy early design process.
 Disadvantages:
 Requires highly skilled people in risk analysis and planning.
 Requires more time, and is more expensive.
 Estimates of budget and time are harder to judge at the beginning of
the project since the requirements evolve through the process.
41

Which software process model is best?

 Depends on the project circumstances and requirements.


 Combinations of models are used sometimes to get the benefits
of more than one model.
 Criteria for evaluating models:
 Risk management.
 Quality / cost control.
 Visibility of progress.
 Early system functionality.
 Customer involvement and feedback.

You might also like