Download as pdf or txt
Download as pdf or txt
You are on page 1of 26

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

You might also like