Professional Documents
Culture Documents
Modern Practices in Software Development
Modern Practices in Software Development
Software Development
Ramtin Khosravi
Agenda
Analysis
Coding
The Basic Waterfall
Analysis
Design
Coding
Testing
Operations
Improvements to
Waterfall
Design program before analysis and
coding begin
Maintain current and complete
documentation
Do the job twice, if possible
Plan, control, and monitor testing
Involve the customer
In Practice
Integration begins
Development Progress
(% Coded)
Late design
breakage
original
target
date
The #1 Symptom
Activity Cost
Management 5%
Requirements 5%
Design 10%
Code and Unit Testing 30%
Integration and Test 40%
Deployment 5%
Environment 5%
Total 100%
Risk Profile
Requirements Design Coding Integration Testing
High
Controlled Risk
Project Risk Exposure
Management
Fa Fb Fc Fa Fb Fc
Ra
Rb
Rc
R1 Fi Fj Fk Fi Fj Fk
R2 Ri
.
. Rj
.
Rk
Rn
Fx Fy Fz Fx Fy Fz
Rx
Ry
Rz
Adversarial Stakeholder
Relationships
Typical scenario for contractual software
efforts:
Draft Contract-Deliverable Document
Customer Comments (15-30 days)
Final Version of Contract (15-30 days)
Problems:
Paper exchange review process overhead
Mutual distrust
Formal Design Reviews
Economy of scale
Diseconomy of scale
Project Cost
Software
ROI
Off-the-shelf Off-the-shelf
Environments/Tools: Custom
Separate Integrated
30% Component-Based 70% Component-Based
Size: 100% Custom
70% Custom 30% Custom
Planning Design
and and
Prototyping Engineering
Usage Implementation
and and
Evaluation Production
Resource Allocations
Measurement
Configuration Management
Round-trip Engineering
Project
Scheduling and Artifacts
Cost Management
Programming
Environment
Automated
Testing
Assessment
Design
Implementation
Inception
Management
Deployment
Requirements
Engineering Stage
Design
Implementation
Management
Elaboration
Deployment
Requirements
Design
Implementation
Management
Deployment
Construction
Requirements
Production Stage
Design
Evolving Level of Details
Implementation
Transition
Management
Deployment
Configurable Process
Higher Technical Complexity
Embedded
Automotive
Application
National
Air Traffic
Commercial
Control System
Compiler
Lower Higher
Management Management
Complexity Complexity
Web
Application Enterprise
Information
System
Business
Spreadsheet