Case Study
Presentation - September 29, 1997
Software Development for Dummies
Just Follow These Four Simple Steps!
-
Come up with a Great Idea
-
Design T-Shirts, Coffee Mugs, and Web Page
-
Start taking orders for the software
-
Produce the Software
Why (and What) is Systematic Software Development?
(Also known as software engineering...)
-
Doesn’t depend on genius or good luck
-
“We could make a barn door fly!”
-
Planned and orderly (in theory!)
-
More reliable and replicable
-
Takes advantages of “Best Practices”
-
Reliability is critical - airplane, cancer treatment
-
High costs - time and money
-
Team-oriented
-
Phased approach - task decomposition
-
Coordination and communication formalized
Phases of Software Development (1)
-
Vanilla Version
-
Figure out if you’re going to do it
-
Figure out what you’re going to do
-
Figure out how you’re going to do it
-
Do it!
-
Check if it was done right
-
Fix it if it isn’t right, then check again
-
Help people use it
-
Make it better
Phases of Software Development (2)
-
Cool Jargon and Graphics
-
Requirements Analysis
-
Conceptual Analysis and Preliminary Design
-
Design -- User Interface, System, Detailed
-
Implementation
-
Maintenance
-
Coordination
-
Planning
-
Budgeting
-
Documenting
-
Meeting and Reporting
-
Support
Several Types of Software
-
Diverse Purposes, Resources, and Approaches*
-
Mission Critical
-
Shrink-Wrapped
-
Customer Spec’d
-
Just get the #$@!!*&#@!*!! job done!
-
Other
-
Homebrew, research, GNU & GNU-like
Conclusions
-
Main Points to Take Home
-
There’s more to software production than writing software
-
Software production is complicated and costly
-
Software production is a team process
-
Communication, cooperation, and coordination are critical
-
It pays to be systematic
-
(but everybody does it differently..)
Conducting the Feasibility Study
-
Answers the Question, “Should we do it?”
-
Viewed from several perspectives
-
Accomplished through several means
-
Demonstrated by written evidence -- The Feasibility Study
Perspectives
-
Economic Feasibility
-
Compare development costs versus expected returns
-
Technical Feasibility
-
Study functions, performance, and constraints, then
decide
-
Legal Feasibility
-
Infringement, violation, liability?
-
Alternatives
-
How else could it be done?
The Feasibility Study
-
First in a Long Chain of Documents
-
Contents (from Pressman)
-
Introduction
-
Management Survey and Recommendations
-
Alternatives
-
System Description
-
Cost-Benefit Analysis
-
Evaluation of Technical Risk
-
Legal Ramifications
-
Other Project Specific Topics
Software Development Teams
-
Working Within and Without
Some Relevant “C”Words
What is..
-
Communication?
-
Collaboration?
-
Coordination?
-
Cooperation?
-
Community?
The “C”Words: My Definitions
Your actual meaning may vary...
-
Communication
-
Meaningful exchange of information
-
Collaboration
-
Working together -- usually as peers -- on some task
-
Coordination
-
Cooperation
-
Willing and mutual support
-
Community
-
A group of people linked together with common bonds
“Types”of People
Inexact, dangerous, yet useful labels
-
Extrovert vs. Introvert (MB)
-
Sensation vs. Intuitive (MB)
-
Risk Tasking vs. Risk Averse
-
Linear vs. Gestalt
-
Low vs. High Stimuli Threshholds
-
“Night person” vs. “Day person”
-
Low vs. High authority recognition
-
Planning vs. Spontaneous
-
Low vs. High ambiguity toleration
Dealing outside the Team
-
Who are the Players?
-
Within the Organization
-
Management
-
Marketing
-
Others
-
Outside the Organization
-
Customer
-
The community
-
The Press
-
Others
Team Exercise
-
Working through a scenario...
-
Divide into teams
-
Get scenario
-
Discuss situation
-
Identify options
-
Make decisions
-
Report back to class
Coordination - General Ideas
-
“Working Together Harmoniously”
-
Operating under constraints
-
Working with multiple players
-
Facing unknowns and ambiguity
-
Project complexity increases coordination demands
-
Coordination is both formal and adhoc
Elements of Coordination
-
Deployment of Resources over Time
-
Meetings
-
Schedule
-
Description of Tasks
-
Description of Deliverables
-
Roles and Responsibilities
-
Budget
How Can We Estimate?
-
Collect Historical Data
-
Project Name
-
Description of major functions (loc, complexity [1-10], effort
in person- months, development time, number of people)
-
Project Cost
-
Totals for Major Functions
-
Documentation (number of pages)
-
Total Staff
-
Tools used
-
Maintenance Record to date
Scheduling Methods
-
Reveal Important Data
-
Critical Path
-
Establish most likely duration
-
Calculate boundary times
-
Earliest time to begin
-
Latest time to begin
-
Earliest finish
-
Latest finish
-
Total float
Requirements
-
What’s it supposed to do??
-
Definition: “Anything that drives the design”
-
Used for understanding, communicating, and testing
-
Tells what but not how
-
A consensus document
-
What and how should it do its representing?
-
What process should be used?
Requirements
Some common deficiencies
- Vagueness
- Contradictions
- Omissions
- Guidelines or constraints confused with functional
req’ts
- Unclear or badly written
- Insufficient user involvement or market research
- Not testable
- Not traceable back to customer’s needs
|