ptg www.it-ebooks.info Praise for Managing Software Debt “If you work in technology, you’re probably familiar with terms like ‘technical debt.’ The meta- phor seems easy, but using it to influence change can be remarkably hard. To do that, you’re going to want to present options to decision makers, backed up by evidence. I’ve been impressed watching Chris Sterling research and refine his work in just this area for several years, and I’m pleased to see him release it as a book. If you want to go beyond clichés to talk about how to deal with the problem of software debt, this is the seminal work in the field—and it’s also the book for you.” —Matthew Heusser, Software Process Naturalist “Inertia: It’s what restricts change and leads to a cost of making a change or starting a change after a period of no investment or maintenance. This book explains in great detail what the dif- ferent types of debt are that lead to inertia and, ultimately, to a cost to the business in manag- ing software maintenance and development. The richness of explanation in this book of how to manage the virtual debt that every business incurs is unmatched. Every business-focused CIO, enterprise architect, software architect, or project manager should have a copy.” —Colin Renouf, Enterprise Architect “Software debt is an important concept and Sterling does a sterling job of explaining what it is, why it is bad, and how to avoid it. A healthy dose of theory sprinkled with lots of pragmatic examples.” —Roger Sessions, CTO, ObjectWatch (objectwatch.com) “Chris Sterling’s experience in Agile architecture and his focus on software debt make this book a must-read for architects and engineers on Agile teams.” —Jan Bosch, VP Engineering Process, Intuit “This book offers highlights and shortcomings of managing inherited software code and the debts that come with quality software. The author offers a unique perspective on dealing with software development issues. A must-read for all software developers.” —Leyna Cotran, Institute for Software Research, University of California, Irvine “The vital importance of rapid feedback to the software process is a fundamental premise of modern software methods. When such feedback is quantified in the form of software debt, the software process becomes most effective. Chris Sterling’s book holds the details you need to know in order to quantify the debt and pay it back. Moreover, it will teach you how to avoid debt in the first place.” —Israel Gat, The Agile Executive (theagileexecutive.com and on Twitter at @agile_exec) “This book represents a wonderful opportunity for a larger community to take advantage of Chris’s many years of experience and his innovative approaches to Agile architecture and con- tinuous quality. . . . His book distills many of his principles and techniques into practical guidelines, and he manages to convey very powerful ideas in accessible prose, despite the inher- ent complexity of architecture and technical debt. . . . Chris’s book will help architects, leaders, and teams see their way to better systems and better organizational performance.” —Evan Campbell, Founder of Chinook Software Consulting www.it-ebooks.info This page intentionally left blank www.it-ebooks.info M ANAGING S OFTWARE D EBT www.it-ebooks.info A gile software development centers on four values, which are identified in the Agile Alliance’s Manifesto: 1. Individuals and interactions over processes and tools 2. Working software over comprehensive documentation 3. Customer collaboration over contract negotiation 4. Responding to change over following a plan The development of Agile software requires innovation and responsiveness, based on generating and sharing knowledge within a development team and with the customer. Agile software developers draw on the strengths of customers, users, and developers to find just enough process to balance quality and agility. The books in The Agile Software Development Series focus on sharing the experienc- es of such Agile developers. Individual books address individual techniques (such as Use Cases), group techniques (such as collaborative decision making), and proven solutions to different problems from a variety of organizational cultures. The result is a core of Agile best practices that will enrich your experiences and improve your work. Visit informit.com/agileseries for a complete list of available publications. The Agile Software Development Series Alistair Cockburn and Jim Highsmith, Series Editors www.it-ebooks.info M ANAGING S OFTWARE D EBT B UILDING FOR I NEVITABLE C HANGE Chris Sterling With contributions from Brent Barton Upper Saddle River, NJ • Boston • Indianapolis • San Francisco New York • Toronto • Montreal • London • Munich • Paris • Madrid Capetown • Sydney • Tokyo • Singapore • Mexico City www.it-ebooks.info Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this book, and the publisher was aware of a trademark claim, the designations have been printed with initial capital letters or in all capitals. The author and publisher have taken care in the preparation of this book, but make no expressed or implied warranty of any kind and assume no responsibility for errors or omis- sions. No liability is assumed for incidental or consequential damages in connection with or arising out of the use of the information or programs contained herein. Cover photograph reused with the permission of Earl A. Everett. The quotation on page 227 is excerpted from Beck, EXTREME PROGRAMMING EXPLAINED: EMBRACING CHANGE, © 2000 by Kent Beck. Reproduced by permission of Pearson Education, Inc. The publisher offers excellent discounts on this book when ordered in quantity for bulk purchases or special sales, which may include electronic versions and/or custom covers and content particular to your business, training goals, marketing focus, and branding interests. For more information, please contact: U.S. Corporate and Government Sales (800) 382-3419 corpsales@pearsontechgroup.com For sales outside the United States please contact: International Sales international@pearson.com Visit us on the Web: informit.com/aw Library of Congress Cataloging-in-Publication Data Sterling, Chris, 1973– Managing software debt : building for inevitable change / Chris Sterling ; with contributions from Brent Barton. p. cm. Includes bibliographical references and index. ISBN-13: 978-0-321-55413-0 (hardcover : alk. paper) ISBN-10: 0-321-55413-2 (hardcover : alk. paper) 1. Computer software—Quality control. 2. Agile software development. 3. Software reengineering. I. Barton, Brent. II. Title. QA76.76.Q35S75 2011 005.1'4—dc22 2010037879 Copyright © 2011 Pearson Education, Inc. All rights reserved. Printed in the United States of America. This publication is protected by copyright, and permission must be obtained from the publisher prior to any prohibited repro- duction, storage in a retrieval system, or transmission in any form or by any means, electronic, mechanical, photocopying, recording, or likewise. For information regarding permissions, write to: Pearson Education, Inc. Rights and Contracts Department 501 Boylston Street, Suite 900 Boston, MA 02116 Fax: (617) 671-3447 ISBN-13: 978-0-321-55413-0 ISBN-10: 0-321-55413-2 Te x t p r i n t e d i n t h e Un i t e d S t a t e s o n r e c y c l e d p a p e r a t C o u r i e r i n We s t f o r d , M a s s a c h u s e t t s . First printing, December 2010 www.it-ebooks.info Thank you to my children, Ashon, Diya, and Aman, who put up with their daddy writing so much, and especially thank you to my beautiful wife, Shivani, who enabled me to write this book. www.it-ebooks.info This page intentionally left blank www.it-ebooks.info ix CONTENTS Foreword xv Introduction xxi Acknowledgments xxxi About the Author xxxiii Chapter 1 Managing Software Debt 1 Where Does Software Debt Come From? 1 Software Debt Creeps In 3 Software Asset Depreciation 5 Like-to-Like Migration 6 Limited Expertise Available 8 Expensive Release Stabilization Phases 8 Increased Cost of Regression Testing 11 Business Expectations Do Not Lessen as Software Ages 12 Summary 14 Chapter 2 Technical Debt 15 Origins of Terminology 16 Other Viewpoints on Technical Debt 16 Definition of Technical Debt 18 Patterns of Technical Debt 19 Schedule Pressure 19 Duplication 20 Get It “Right” the First Time 21 Acknowledging Technical Debt 22 Pay Off Technical Debt Immediately 23 Strategically Placed Runtime Exceptions 25 Add Technical Debt to the Product Backlog 28 Summary 30 www.it-ebooks.info [...]... Chapter 1, “Managing Software Debt,” is a primer on the types of software debt that can impede software changes with age The topic of software debt is prevalent throughout the book as the main focus for attaining more architectural agility Five areas of software debt are described in the chapter: technical, quality, configuration management, design, and platform experience These five areas of software. .. how the software functions Changeability: Software components can be changed to meet new business needs Testability: Repeatable and specific tests of the software can be created, and there is potential for some to be automated Adaptability: Software component functionality can be changed quickly www.it-ebooks.info xxiv I NTRODUCTION Installability: Installation and reinstallation are easy Conformance:... 1 MANAGING SOFTWARE DEBT Technical debt Quality debt Where Does Software Debt Come From? Configuration management debt Design debt Software Debt Creeps In Platform experience debt Managing Software Debt Like-to-Like Migration Software Asset Depreciation Limited Expertise Available Expensive Release Stabilization Phases Increased Cost of Regression Testing Business Expectations Do Not Lessen as Software. .. “Manifesto of Agile Software Development” values describe its biases by contrasting two attributes of software development Either extreme is bad For example, “responding to change is valued over “following a plan.” Both are important, but the bias is toward the ability to respond to changes as they come Another example is valuing “working software over comprehensive documentation.” It is OK to document an... the software Evolutionary Design Rather than supporting the design of significant portions of the software architecture before the software is built, Agile methods identify and support practices, processes, and tools to enable evolutionary design This is not synonymous with undisciplined or “cowboy” coding of software Agile methods are highly disciplined One principle behind the “Manifesto for Agile Software. .. Conformance: The software conforms to industry and operational standards Replaceability: The software is replaceable in the future Taking into consideration external integrations, software quality attributes, and the internal design of components and their interactions is a lot of work Agile teams look for clarity about what aspects of these areas they should focus more of their effort on For external... Agile team looks for ways to consolidate its efforts into practical focus areas that are manageable from iteration to iteration as the application and its design evolve In a phase-gate approach, all of the design effort that occurs before construction begins is sometimes referred to as “big design up front” (BDUF) The reason for specifying business requirements and technical design before construction... able to make any more changes Any modifications that the business wants must go through a costly change control process to detail the changes and estimate the impact on the current design, construction, and testing efforts Generally, these problems with BDUF are symptoms of feedback cycles that are too long in duration The time needed to analyze, specify, and design software before constructing it allows... TARGET AUDIENCE This book is for everyone who is involved in delivering and maintaining software for users Senior software leadership can find better ways to support and manage delivery of value to stakeholders Software management can find ways to organize and support the work of development teams Teams can find out more about how they can build integrity into the full software development life cycle... Collaboratively Release Management Version Management Building from Scratch Automated Promotion Rollback Execution Push-Button Release Branching Strategies Single Source Repository Collapsing Branches Spike Branches Choosing a Branching Strategy Documenting Software Incremental Documentation Push Documentation to Later Iterations of the Release Generating Documentation Automated Test Scripts Summary 107 . Web: informit.com/aw Library of Congress Cataloging-in-Publication Data Sterling, Chris, 1973– Managing software debt : building for inevitable change. development issues. A must-read for all software developers.” —Leyna Cotran, Institute for Software Research, University of California, Irvine “The vital importance