lean software development | igor ramos | 11-17-2008

15
© 2008, Igor Ramos Lean Software Development Igor Ramos November 17, 2008

Upload: igor-ramos

Post on 16-Jul-2015

575 views

Category:

Software


0 download

TRANSCRIPT

© 2008, Igor Ramos

Lean Software Development

Igor Ramos

November 17, 2008

Agenda

� Classical software development model

� Forms of waste

– Defects and its Financial Impact

– Importance of requirements and software reviews

� Agile methods + Lean thinking

– TAKT time analogy

– Kaizen

� Roadmap

� Q&A

Waterfall model - Value Stream Map

� Phases of development proceeds in strict order

� Pros: managerial control, departmentalization

� Cons: does not allow for much revision, difficult to go back and change something that was not well-thought out

Types of Waste

Task Switching Transportation

Partially Done Work Inventory

Extra FeaturesOverproduction

Extra Processes Extra Processing

MotionMotion

DefectsDefects

WaitingWaiting

Software DevelopmentManufacturing

Cost of a Defect

Goal: Fix it early!

[2]

Figure by S. Ambler, text by B. Boehm

Are Requirements that important?

� “About 80% of rework comes from 20% of

defects.”

– Major sources avoidable rework: requirements

[2]

[2]

Importance of Reviews

� “Peer reviews catch 60% of the defects”[2]

– Make it an habit, on good and bad times!

– Should not be just a “final step”, or “upon emergency”, else:

[11]

Agile Software Development

� Lean thinking is all about eliminated non value added steps in processes.

� Agile are methods to achieve that. It promotes: – frequent inspection (reviews)– Adaptation

� Leadership philosophy that encourages team work, self-organization and accountability;

� Business approach that aligns development with customer needs and company goals.

� A set of engineering best practices that allow for rapid delivery of high-quality software;

Impact of Agile on cost

Agile

Traditional

Length of Feedback Cycle

Cost

Worst case

scenario!

Agile Value Stream Map

� Shorter feedback cycleHow to segment tasks?

Think lean…

The Weakest Link

� From experience:

– "A chain is as strong as its weakest link“

– Identify high-stake constrains

– Overlooked items

� Lean thinking:

– “Any link stronger than what is needed, is waste”

– Identify over engineered items

– Underutilized resources

TAKT Time Analogy

0

0.2

0.4

0.6

0.8

1

1.2

1.4

1.6

Requirement 1 Requirement 2 Requirement 3 Requirement 4 Requirement 5

Idle resources

i.e.: unused memory

Idle resources

i.e.: Idle Machinery

Software DevelopmentManufacturing

Don’t meet requirementsCan’t meet demand

Customer ExpectationsProduct Performance

Customer DemandProduction Rate

� The challenge is discipline:

– Perform a thorough engineering analysis on each requirement!

Reducing Waste the Kaizen way

0

0.2

0.4

0.6

0.8

1

1.2

1.4

1.6

Requirement 1 Requirement 2 Requirement 3 Requirement 4 Requirement 5

Demand/Resources

Target

1st segment

2nd segment

Remove “requirements defects”

• Upgrade constrainReduce unused resources

• Downgrade

kaizen kaizen

Roadmap

� Management commitment

– Up to 50% higher programming cost, however lower maintenance and operation costs[2]

� Project Leader � Value-Stream Manager

– Must know about costumer needs and

– Technical details of requirements

� Everyone: Teamwork is the key!

Questions?

� References:

1. Mary Poppendieck and Thomas David Poppendieck, Lean Software Development: An Agile Toolkit, Addison-Wesley, 2003

2. Barry Boehm and Victor R. Basili, "Software Defect Reduction Top 10 List," IEEE Computer, January 2001, 135-17, link

3. Cost of change in traditional processes, by Scott W. Ambler

4. Wikipedia, "Lean Software Development," , link

5. Takeuchi, Hirotaka; Nonaka, Ikujiro (January-February 1986). "The New New Product Development Game" (PDF). Harvard Business Review. Retrieved on 2008-09-26.

6. Clean room Software Engineering, link

7. SearchSoftwareQuality.com, link

Further reading: