Sustainable software development : an agile perspective - Tate, Kevin (Upper Saddle River, NJ : Addison-Wesley, 2006)
Acknowledgments -- About the Author -- Foreword -- Introduction -- Sustainable Software Development -- Sustainable Development -- Chemical Manufacturing and Sustainable Development -- Continual Improvement: The Accelerator Button -- The Genius of the AND versus the Tyranny of the OR -- Summary -- Unsustainable Software Development and its Causes -- Technical Debt and the Flywheel -- The Perils of Jumping in Place -- The Causes of Unsustainable Development -- Project Stresses -- User Requirements -- External Dependencies -- Competition -- Disruptive Technologies -- Disruptive Business Models -- Cost Management -- Project Controls -- Collaboration -- Methodology -- Expertise -- Decision Making -- Leadership -- Culture -- Simplicity and Reliability -- Summary -- The Principles of Sustainable Software Development -- Why Principles Are More Important Than Practices -- Applying the Principles of Sustainable Development -- Continual Refinement of the Product and Project Practices -- A Working Product at All Times -- A Continual Emphasis on Design -- Valuing Defect Prevention over Defect Detection -- Culture, by Descriptive Words and Phrases -- Disciplined -- Responsible -- Leadership -- Visionary and Tactical -- Shared Sense of Urgency -- Highly Collaborative -- Complementary Talents and Skills -- Continually Improving and Learning -- Change Tolerant -- Risk-Aware -- Fun -- Summary -- Working Product -- No "Broken Windows" -- Be Uncompromising about Defects -- How to Avoid a Defect Backlog -- Put More Effort into Defect Prevention Than Bugfixing -- Being Pragmatic about Defects -- "Barely Sufficient" Documentation -- Continuous Integration -- Nightly Builds -- Pay Attention to Build Times -- Prototyping -- Throwaway Prototypes -- "Tracer Bullets" -- Don't Neglect Performance -- Zero Tolerance for Memory and Resource Leaks -- Coding Standards and Guidelines -- Adopt Standards (Concentrate on Your Value-Add) -- Internationalize from Day One -- Isolate Platform Dependencies -- Summary -- Defect Prevention -- The Role of Quality Assurance -- Ruthless Testing -- Unit Tests: Test-Driven Development -- Integration Tests -- System Tests -- Record and Playback -- Visual Validation Testing -- Performance Testing -- Resource-Usage Testing -- Regression Testing -- Usability Testing -- User Verification Testing -- Resources Required for Ruthless Testing -- Use Available Tools -- Compiler -- Source Code Analyzer -- Test Coverage Analysis -- Execution Profiler -- Event Logging -- Source Code Documentation -- Memory and Resource Leak Detection -- Configuration Management -- Pair Programming and Code Reviews -- Lightweight Root-Cause Analysis -- Summary -- Emphasis on Design -- Design Vision -- Guiding Principles -- A Hypothetical Example of Guiding Principles -- A Real-World Example of Guiding Principles -- Simple Design -- Refactoring -- Design Patterns -- Frequent Rapid Design Meetings -- Commitment to Rearchitecture -- Design for Reuse -- Summary -- Continual Refinement -- Iterative Development -- Collaboration and Iterative Development -- Velocity -- Iteration 0 -- Release Planning -- Daily Standup Meetings -- Retrospectives -- Coaching and Team Development -- Coaching -- Understanding the Business -- Professional Development -- Make Key Metrics Visible -- Summary -- Culture Change and Sustainable Development -- Making Change Happen -- Change Factors and Enablers -- Change Factors -- Change Enablers -- Start with What You Can Control and Influence -- Avoid Transition Plans -- Turning Unsustainable into Sustainable Development -- Where to Begin -- Sustainable Development for New Projects -- Some Other Ideas -- Identify Key Architecture Battles -- Get Your Defects Under Control -- Collaboration with Users -- Training -- Group Refactoring Exercises -- The Work Environment -- Change Examples -- The Introduction of a Controversial Practice -- Introducing Agile Development Into a Mature Software Organization -- Summary -- Practice Summary -- Extreme Programming and Sustainable Software Development -- The Four Values of XP -- XP's Twelve Practices -- The Strengths of XP -- XP is Extreme -- Technical Excellence -- Collaboration -- Customer Collaboration -- The Weaknesses of XP -- XP Targets Software Developers, and Nobody Else -- Project Management -- Scalability -- Pair Programming -- The 40-Hour Week -- The On-Site Customer -- Self-Organization and Leadership -- Simple Design -- Common Misconceptions of Extreme Programming -- "No Design" -- "No Discipline" -- Other Agile Development Methods -- Summary -- Sustainable Software Development and the CMM -- The Capability Maturity Model (CMM) -- Agile Development and the CMM -- Summary -- Recommended Reading -- Sustainable Software Development, Unsustainable Software Development -- The Principles of Sustainable Development -- Working Product -- Defect Prevention -- Test-Driven Development -- Automated Testing (General) -- Usability Testing -- Other -- Emphasis on Design -- Design Patterns -- Design Patterns, Agile Development, and Simple Design -- Refactoring -- Other -- Continual Refinement -- Making Culture Change Happen.
Includes bibliographical references (p. 201-218) and index.
1
Keywords: Agile software development