Log In
Or create an account ->
Imperial Library
Home
About
News
Upload
Forum
Help
Login/SignUp
Index
The Art of Lean Software Development
SPECIAL OFFER: Upgrade this ebook with O’Reilly
Preface
Who Should Read This Book?
Conventions Used in This Book
Using Code Examples
Safari® Books Online
Comments and Questions
Acknowledgments
1. Why Lean?
The Problem with Software Development
The CHAOS Study
The Waterfall Method
A historical accident
The Agile Success Story
The Agile Manifesto
Agile Methodologies
The Lean Success Story
A Whirlwind History of Lean
Just-In-Time
Autonomation (Jidoka)
Waste (Muda)
Lean Principles
2. Applying Lean to Software Development
Lean Software Development
Eliminate Waste
Defects → defects
Overproduction → extra features
Transportation → handoffs
Waiting → delays
Inventory → partially completed work
Motion → task switching
(Over) processing → unneeded processes
Build Quality in
Create Knowledge
Defer Commitment
Deliver Fast
Respect People
Optimize the Whole
Lean Versus Agile
Getting Started
The Good News
3. Practice 0: Source Code Management and Scripted Builds
About Zero Practices
Source Code Management
Benefits
Centralized SCM
Command line versus GUI tool
Distributed SCM
If You Don’t Know Where to Start
Scripted Builds
Discipline in an Integrated Environment
Share
Coordinate
Summary
4. Practice 1: Automated Testing
Why Test?
What Is Automated Testing?
The Test Harness and Test Suites
Running Automated Tests
Kinds of Tests
Unit Tests
Mocks and Stubs
Integration Tests
Behavior Tests
Executable Specifications
Nonfunctional Testing
User Interface Testing
Approaches to Testing
Using Setup and Teardown
Testing with Databases
Test-Driven Development
Red, Green, Refactor
Legacy Code
Behavior-Driven Development
Summary
5. Practice 2: Continuous Integration
End-to-End Automated Builds
Building from Scratch
End-to-End Builds
Reporting Results
Dedicated Build Servers
Dedicated Build Servers Isolate Build Activities
Dedicated Build Servers Provide a Well-Known Build Environment Configuration
Dedicated Build Servers Require Extra Hardware
Continuous Integration Software
CI Servers Detect Changes in the SCM Repository
CI Servers Invoke Build Scripts
CI Servers Report Build Results
CI Servers Can Schedule Builds
Implementing Continuous Integration
Developers and the CI Process
Continuous Integration Builds Quality in
Aid Debugging by Limiting the Scope of Errors
Provide Immediate Feedback for Changes
Minimize Integration Effort
Minimize Propagation of Defects
Create a Safety Net for Developers
Ensure the Latest and Greatest Software Is Always Available
Provide a Snapshot of the Current State of the Project
Resistance to Implementing CI
CI Requires Extra Hardware
CI Requires New Software
CI Adds Maintenance Tasks
CI for Legacy Code Is Expensive
Summary
6. Practice 3: Less Code
Leaning out the Codebase
Eliminate Unnecessary Code
Employ Good Coding Practices
Justify All New Code
Developing Less Code
Prioritize Requirements
Develop in Short Iterations
Develop Only for the Current Iteration
Avoid Unnecessary Complexity
Reuse Existing Software
Use Coding Standards and Best Practices
Use Design Patterns
Refactor Code and Design
Resistance to “Less Code”
Summary
7. Practice 4: Short Iterations
Short Iterations Generate Customer Value
Increase Feedback Opportunities
Make Course Corrections
Developing with Short Iterations
Work to Prioritized Requirements
Set an Iteration Length and Stick to It
End Each Iteration with a Demo
Deliver the Iteration’s Product to the Customer
The Fallacy of Iterative Development
Big Tasks in Little Pieces
Summary
8. Practice 5: Customer Participation
Customer Participation Is a Two-Way Street
Involve the Customer Throughout the Development Process
Keep the Customer Informed
Act on Customer Feedback
Paving the Street
Designate a Product Owner
Engage the Customer in Writing Requirements and Acceptance Tests
Provide Project Status
Provide Access to the Product
Create a Feedback Path
Find CRACK Customer Representatives
An All-Too-Common Problem
Summary
9. What Next?
Lean Thinking and the Analysis Practices
Kaizen
Kaizen Workshops
Value Stream Maps
Other Lean Techniques
Root Cause Analysis (Five Whys)
Kanban
Make It Visible
Other Complementary Approaches
Theory of Constraints
Six Sigma
Capability Maturity Model Integration
Where to Go from Here
A. Resources
Chapter 1: Why Lean?
Chapter 2: Applying Lean to Software Development
Chapter 3: Practice 0: Source Code Management and Scripted Builds
Chapter 4: Practice 1: Automated Testing
Chapter 5: Practice 2: Continuous Integration
Chapter 6: Practice 3: Less Code
Chapter 7: Practice 4: Short Iterations
Chapter 8: Practice 5: Customer Participation
Chapter 9: What Next?
Other
Index
About the Authors
Colophon
SPECIAL OFFER: Upgrade this ebook with O’Reilly
← Prev
Back
Next →
← Prev
Back
Next →