CS121: Software Development

CS121: Software Development
Today
•
•
•
•
•
Importance of software development
Software methodologies
Overview of course
First assignment
Administrative issues
“Software Development”
We need
softwar
e to ….
Customer
Developer
…later in the millennium…
Here
it is …
Customer
Developer
Key Processes
•
•
•
•
Requirements
Design
Implementation
Testing
“Software Development”
We need
softwar
e to ….
Customer
…later in the millennium…
Customer
Developer
It
broke!
Customer
Developer
Here
it is …
Developer
Key Processes
•
•
•
•
•
Requirement
Design
Implementation
Testing
Maintenance
Key Processes
•
•
•
•
•
Requirement
Design
Implementation (focus of CS70)
Testing
Maintenance
Why study software development?
• Society has become increasingly
dependent on software systems.
– How many software systems do you
interact with every day?
Why study software development?
• Society has become increasingly
dependent on software systems.
• Failures in software systems can be
costly and dangerous.
Expedia Maps:
I need to go to the airport (1999)
10 mi.
Output reported in The Risks Digest
Oct. 1, 1999
Excerpts from Expedia Maps directions:
From: Laurel, Maryland
To: Baltimore-Washington International Airport, Maryland
Driving Distance: 5865.1 miles
Time: 9 day(s) 3 hour(s) 22 minute(s)
Time (hour:minute) Instruction
0:00
Depart Laurel, Maryland
1:01
Entering Delaware
1:17
Entering New Jersey
3:24
Entering New York
3:51
Entering Connecticut
5:51
Entering Massachusetts
7:29
Entering New Hampshire
7:44
Entering Maine
12:20
Entering New Brunswick
20:20
Take the North Sydney-Argentia Ferry
34:32
Entering Newfoundland
36:35
Turn left onto Local road(s) (4543.1 mi)
219:22 Arrive Baltimore-Washington International Airport, Maryland
Why study software development?
• Society has become increasingly
dependent on software systems.
• Failures in software systems can be
costly and dangerous
Therac-25
• Linear accelerators create high- energy beams
that can destroy tumors with minimal impact on
the surrounding healthy tissue
• Therac 25 was the first linear accelerator with
dosage controlled solely by software (as opposed
to hardware)
1983: Pre-release Safety Analysis
• Programming errors have been reduced by extensive testing
on a hardware simulator and under field conditions on
teletherapy units. Any residual software errors are
not included in the analysis.
• Program software does not degrade due to wear, fatigue, or
reproduction process.
• Computer execution errors are caused by faulty hardware
components and by "soft" (random) errors induced by alpha
particles and electromagnetic noise.
and then …
• 1983: First Therac 25 installed
• 1985-1987: Six massive-overdose accidents due
to “software error” are reported. Overdoses
caused severe burns and death.
• 1987: Recalled for extensive design changes,
including hardware to safeguard against software
errors in dosage.
Why study software development?
• Society has become increasingly
dependent on software systems.
• Failures in software systems can be
costly and dangerous
• Software design/development is
HARD!
FAA
• 1981: FAA announced plans to modernize airtraffic control.
• 1985: IBM awarded contract. System estimate to
have 1.5 million lines of code, cost $2.5 billion,
and be deployed by 1991.
• 1987: Revised cost $4.3 billion, deployment
slipped to 1995.
• 1994: FAA decided that the project would never
be completed, and cancelled it. Net loss $1.5
billion
Stats on software projects
J. Johnson, “Creating Chaos,” American Programmer, July 1995
• 31.1% are canceled before they are
finished
• 52.7% overrun their cost estimates
by at least 189%
• 33.3% overrun their time estimates
by 100%-200%
• 94% of all projects do a “restart”
Is there hope?
Software engineering:
tools, techniques, and principles to
promote software quality
software engineering is an evolving field
Historical Perspective
1950s
this is how to do it
Code and fix
Historical Perspective
1950s
Historical Perspective
1950s
1970s
that was soooooo wrong,
but now we know,
this is how to do it
waterfall
Essential Processes of Software
Development
• Requirements
• Design
• Implementation
• Testing
Software Life Cycle Model
How to organize the key processes of
software development
Waterfall Model
with feedback
Requirements
Design
Implementation
Test
Historical Perspective
1950s
1970s
What is wrong with waterfall?
• Initial requirements are speculative
Requirements
Frederick P. Brooks Jr. in “No Silver Bullet”:
“The hardest single part of building a software system
is deciding precisely what to build.”
Requirements
Frederick P. Brooks Jr. in “No Silver Bullet”:
“No other part of of the work so cripples the resulting
system if done wrong. No other part is more difficult to
rectify later.”
1992 Iowa State study of safety-critical
errors in software systems for Voyager
and Galileo:
The majority of safety-critical software
errors were not caused in the design or
implementation process. They were due to
errors in the requirements specification.
The systems as specified were flawed.
Requirements
• Customer’s don’t usually know what
they want/need
• Even if they do know what they
want/need, they are likely to change
their minds
Creeping Req's as % of Orig
during project life
% increase in requirements
Growth in requirements
60
50
40
30
20
10
0
10
100
1000
10000
100000
Project Size in Function Points
Source: Applied Software Measurement, Capers Jones, 1997. Based on 6,700 systems.
What is wrong waterfall?
• Initial requirements are speculative
• Initial designs are speculative
Design
Design Methods: Seeds of Human
Futures (Jones, 1970)
“The fundamental problem is that
designers are obliged to use current
information to predict a future state
that will not come about unless their
predictions are correct.”
What is wrong waterfall?
• Initial requirements are speculative
• Initial designs are speculative
• Speculative decisions compound
SLOC/Person Month
SLOC/Person Month
Complexity vs. Productivity
4500
4000
3500
3000
2500
2000
1500
1000
500
0
1
10
100
1000
Project Size in KSLOC
Source: Measures For Excellence, Putnam, 1992.
Based on 1,600 systems.
What is wrong waterfall?
• Initial requirements are speculative
• Initial designs are speculative
• Speculative decisions compound
• As a result we build the wrong thing
that doesn’t work any
Historical Perspective
1950s
1970s
1990s
Don’t bite off more
than you can chew.
Iterative Models
In each iteration:
• Identify the objectives of the iteration
• Design a solution to achieve the
objectives
• Implement the solution
• Test the implementation
Each iteration is a mini-waterfall
process.
Boehm Spiral Model
•Iterations: .5 – 2 years
•Risk analysis
•Prototype-based
Boehm (1988) was first to clearly articulate
the advantages of iterative development.
Agile principles
• Working software, delivered regularly, is the
primary measure of progress
• High standards of excellence; test regularly and
re-factor/redesign when necessary
• Customer involvement is critical
• Simplicity; just-in-time design/development
• Adaptability; embrace change
• Small, cross-functional, self-organizing teams of
professionals
Scrum Model
A small group is responsible for picking
up the ball and moving it toward the
goal.
RUP Life Cycle
Phases
Processes
Inception Elaboration
Construction
Transition
Business Modeling
Requirements
Analysis & Design
Implementation
Test
Deployment
Supporting Workflows
Configuration Mgmt
Management
Environment
…
Iterations
Preliminary Iter. Iter. Iter. Iter. Iter.
Iteration(s) #1
#2
#n
#n+1 #n+2
Iter. Iter.
#m #m+1
Iterations within phases
Extreme Programming
Do agile methods work?
31%
16%
53%
1994
Succeeded
18%
29%
Succeeded
Challenged
Challenged
Failed
Failed
53%
2004
Standish CHAOS survey
Software projects
come in all shapes and size
some are easy, many hard
Harder
• Large
• Open-ended, poorly
understood
• Cutting edge
technology
• Inexperienced
personnel
• Stringent
requirements
Easier
• Small
• Well defined
• Ready-to-use tools,
packages
• Experienced personnel
• Flexible requirements
Objectives of CS121
• Understand the problems
• Understand the various solutions to
the problems
• Practice applying the solutions to a
particular problem
Project
You will work in teams to design and
develop an educational computer game
for social science teachers at Hillside
Middle School, Kalamazoo, MI
Why games?
• Games involve a range of problems that rarely
show up in a single software project
–
–
–
–
–
User interface design
Computer graphics and sound
Simulation and modeling
Real-time
AI, networking, etc.
• You already have domain expertise
• Games are great projects for your portfolio
• Scope of the game project can be “easy” to adjust
Why educational games?
• Customer involvement
• Understanding an “other” user
• Useful product
Overview of Project
• Phase 1: Develop game concept
• Phase 2: Design game/software
• Phase 3: Evaluate, refine, add content
But not waterfall. Each phase will have
involve several iterations/deliverables.
Phase 1
•
•
•
•
•
•
•
•
Competitive analysis
High concept
Management plan for phase 1
Customer elicitation
Technology assessment
Game Design Document (preliminary)
Prototype
Proposal
Assignments due next time
• Competitive analysis
• High Concept
• Initial management Plan (incl. trac set
up)
Details on the phase 1 project page
Readings (Keller)
Reading for next time
• McConnel: requirements, software
quality
• Wiegers: Requirement Traps
• Ambler: Big Requirements Up Front
• Trac Guide: wiki, ticket
• Keller: Goal breakdown
Daily quizzes
• Based on reading
– McConnell
– other articles linked to web page
Grading
•
•
•
•
•
Project
Midterm exam
Final exam
Daily quizzes
Class participation
65%
10%
10%
10%
5%
Today
• Complete intro questionnaires
• Make sure you have subscribed to the
class mail list
• See me if you need accounts for:
– Charlie
– Knuth
Tomorrow
I’ll email (and post) team assignments
Assignments
• Typically due on Monday
• Exceptions:
– next week
Next week
• Wed – you will meet with the customer
• 1 team will do an “elicitation” in class (the
guinea pigs are guaranteed the full 10 point
credit for the actual elicitation –
volunteers?)
• the rest will do it after class Wed. or
Thurs. morning – post all available times on
your wiki
Sample questions from today
• What are the key processes to software
development?
• What is a software life cycle model?
• What is the waterfall model? What are its
problems?
• How do iterative and agile models differ from the
waterfall model?
• How do iterative and agile models differ from
each other?
• What is the Boehm Spiral model and why is it
important?
• Name two different agile process methods