Modern Practices in
Software Development
Ramtin Khosravi
Agenda
The Basic Waterfall Process
Improvements to Waterfall Process
Waterfall in Practice
Economic Perspective
The Iterative Process
Top 10 Principles of Modern Process
The Basic Waterfall
There are two essential activities:
Analysis
Coding
The Basic Waterfall
System Req. There are several
Software Req.
overhead steps
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
Protracted integration and late design
breakage
Late risk resolution
Requirements-driven decomposition
Adversarial stakeholder relationships
Focus on documents and review
meetings
Typical Project Profile
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
Risk Risk Focused Risk
Exploration Elaboration Resolution
Low
Project Life Cycle
Functional Decomposition
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
Apparent Result Real Result
Big briefing to a diverse Small % of audience understands
audience Few risk exposure
A design that appears to No tangible evidence of compliance
be compliant Compliance with ambiguous reqs. ?
Coverage of requirements Few (tens) are design drivers
(typically hundreds) Dilution of focus on critical drivers
Design is innocent until The design is always guilty
proven guilty Design flaws are exposed later
Software Cost Evolution
Conventional Transition Modern Practices
Economy of scale
Diseconomy of scale
Project Cost
Software
ROI
Functionality, scale, and complexity
Era: 1960s 1970s 1980s 1990s 2000s and on
Off-the-shelf Off-the-shelf
Environments/Tools: Custom
Separate Integrated
30% Component-Based 70% Component-Based
Size: 100% Custom
70% Custom 30% Custom
Process Ad hoc Repeatable Managed / Measured
Iterative Process
Planning Design
and and
Prototyping Engineering
Usage Implementation
and and
Evaluation Production
Resource Allocations
Activity Waterfall Iterative
Management 5% 10%
Requirements 5% 10%
Design 10% 15%
Code and Unit Testing 30% 25%
Integration and Test 40% 25%
Deployment 5% 5%
Environment 5% 10%
Total 100% 100%
Top 10 Principles
1. Focus the process on the architecture first
2. Attack risks early with an iterative life cycle
3. Emphasize component-based development
4. Change management of all artifacts
5. Simplify change freedom with round-trip engineering
6. Use rigorous, model-based design notation
7. Instrument the process for objective quality control
8. Emphasize demonstration-based assessment
9. Plan releases with evolving levels of detail
10. Establish a scalable, configurable process
Architecture-First
80-20 rule for software:
80% of the engineering deals with 20% of the requirements.
80% of the cost is consumed by 20% of the components.
80% of the errors are caused by 20% of the components.
80% of scrap and rework is caused by 20% of the errors.
80% of the resources are used by 20% of the components.
80% of the engineering is accomplished in 20% of the tools.
80% of the progress is made by 20% of the people
Architecture is the 20% of the stuff that really counts
Iterative Life-Cycle
Engineering Stage Production Stage
Inception Elaboration Construction Transition
Idea Architecture Beta Releases Products
Component-based
Development
Hardware Software
Gates Instructions
Chips Statements
Cards Components
Racks Subsystems
System Application
Change Management
Change Request Management
Measurement
Configuration Management
Round-trip Engineering
Activity Environment Tools
Management Workflow automation, Metric Automation
Requirements Requirements Management
Design Visual Modeling
Implementation Editor-Compiler-Debugger
Assessment Test Automation, Change Req. Mgmt.
Deployment Change Req. Mgmt.
Environment Change Mgmt., Document automation
Process Integrated process support
Model-based Notation
Blueprints for the software design
Helps manage complexity
Promotes unambiguous communication
Objective Quality Control
Requirements Visual
Management Modeling
Project
Scheduling and Artifacts
Cost Management
Programming
Environment
Automated
Testing
Assessment
Include testing activities across the full
life cycle.
Common processes, methods,
notations
Integrate and exercise scenarios early
and continuously.
Interface and structural
Requirements
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
Lower Technical Complexity