Table of Contents
Acknowledgements About the Authors Preface
? CHAPTER 1 - Introduction
? 1.1 The Touchstones: Lean and Agile 1.2 Lean Architecture and Agile Feature Development 1.3 Agile Production 1.4 The Book in a Very Small Nutshell 1.5 Lean and Agile: Contrasting and Complementary 1.6 Lost Practices 1.7 What this Book is Not About 1.8 Agile, Lean — Oh, Yeah, and Scrum and Methodologies and Such 1.9 History and Such
? CHAPTER 2 - Agile Production in a Nutshell
? 2.1 Engage the Stakeholders 2.2 Define the Problem 2.3 Focusing on What the System Is: The Foundations of Form 2.4 Focusing on What the System Does: The System Lifeblood 2.5 Design and Code 2.6 Countdown: 3, 2, 1 ...
? CHAPTER 3 - Stakeholder Engagement
? 3.1 The Value Stream 3.2 The Key Stakeholders 3.3 Process Elements of Stakeholder Engagement 3.4 The Network of Stakeholders: Trimming Wasted Time 3.5 No Quick Fixes, but Some Hope
? CHAPTER 4 - Problem Definition
? 4.1 What’s Agile about Problem Definitions?
4.2 What’s Lean about Problem Definitions? 4.3 Good and Bad Problem Definitions 4.4 Problems and Solutions 4.5 The Process Around Problem Definitions 4.6 Problem Definitions, Goals, Charters, Visions, and Objectives 4.7 Documentation?
? CHAPTER 5 - What the System Is, Part 1: Lean Architecture
? 5.1 Some Surprises about Architecture 5.2 The First Design Step: Partitioning 5.3 The Second Design Step: Selecting a Design Style 5.4 Documentation? 5.5 History and Such
? CHAPTER 6 - What the System Is, Part 2: Coding It Up
? 6.1 The Third Step: The Rough Framing of the Code 6.2 Relationships in Architecture 6.3 Not Your Old Professor’s OO 6.4 How much Architecture? 6.5 Documentation? 6.6 History and Such
? CHAPTER 7 - What the System Does: System Functionality
? 7.1 What the System Does 7.2 Who is Going to Use Our Software? 7.3 What do the Users Want to Use Our Software for? 7.4 Why Does the User Want to Use Our Software? 7.5 Consolidation of What the System Does 7.6 Recap 7.7 “It Depends”: When Use Cases are a Bad Fit 7.8 Usability Testing 7.9 Documentation? 7.10 History and Such
CHAPTER 8 - Coding It Up: Basic Assembly
? 8.1 The Big Picture: Model-View-Controller-User 8.2 The Form and Architecture of Atomic Event Systems 8.3 Updating the Domain Logic: Method Elaboration, Factoring, and Re-factoring 8.4 Documentation? 8.5 Why All These Artifacts? 8.6 History and Such
? CHAPTER 9 - Coding it Up:The DCI Architecture
? 9.1 Sometimes, Smart Objects Just Aren’t Enough 9.2 DCI in a Nutshell 9.3 Overview of DCI 9.4 DCI by Example 9.5 Updating the Domain Logic 9.6 Context Objects in the User Mental Model: Solution to an Age-Old Problem 9.7 Why All These Artifacts? 9.8 Beyond C++: DCI in Other Languages 9.9 Documentation? 9.10 History and Such
? CHAPTER 10 - Epilog
? APPENDIX A - Scala Implementation of the DCI Account Example APPENDIX B - Account Example in Python APPENDIX C - Account Example in C# APPENDIX D - Account Example in Ruby APPENDIX E - Qi4j APPENDIX F - Account Example in Squeak Bibliography Index
This edition first published 2010 ? 2010 James Coplien and Gertrud Bjørnvig
John Wiley & Sons Ltd, The Atrium, Southern Gate, Chichester, West Sussex, PO19 8SQ, UnitedKingdom
For details of our global editorial offices, for customer services and for information abouthow to apply for permission to reuse the copyright material in this book please see our websiteat www.wiley.com.
The right of the author to be identified as the author of this work has been asserted inaccordance with the Copyright, Designs and Patents Act 1988.
Reprinted with corrections December 2010
All rights reserved. No part of this publication may be reproduced, stored in a retrievalsystem, or transmitted, in any form or by any means, electronic, mechanical, photocopying,recording or otherwise, except as permitted by the UK Copyright, Designs and Patents Act 1988,without the prior permission of the publisher.
Wiley also publishes its books in a variety of electronic formats. Some content that appears inprint may not be available in electronic books.
Designations used by companies to distinguish their products are often claimed as trademarks.All brand names and product names used in this book are trade names, service marks, trademarksor registered trademarks of their respective owners. The publisher is not associated with anyproduct or vendor mentioned in this book. This publication is designed to provide accurate andauthoritative information in regard to the subject matter covered. It is sold on theunderstanding that the publisher is not engaged in rendering professional services. Ifprofessional advice or other expert assistance is required, the services of a competentprofessional should be sought.
Quotes from The Clock of the Long Now: Time and Responsibility — The Ideas Behind the
Computer are Copyright ? 2000 Stewart Brand. World’s Slowest
? A catalogue record for this book is available from the British Library.
? ISBN 978-0-470-68420-7
? Typeset in 11/13 Palatino by Laserwords Private Limited, Chennai, India.
To Trygve Mikkjel Heyerdahl Reenskaug, also a grandfather
Some of the people who helped bring this book to market include the following:
Editorial and Production
VP Consumer and Technology Publishing Director: Michelle Leete
Associate Director - Book Content Management: Martin Tribe Associate Publisher: Chris Webb
Executive Commissioning Editor: Birgit Gruber Assistant Editor: Colleen Goldring
Publishing Assistant: Ellie Scott
Project Editor: Juliet Booker
Content Editor: Nicole Burnett Copy Editor: Richard Walshe
Senior Marketing Manager: Louise Breinholt Marketing Executive: Kate Batchelor
Compositor: Laserwords Private Limited, Chennai, India Proof Reader: Alex Grey Indexer: Annette Musker
About the Authors
Gertrud Bjørnvig is an agile requirements expert with over 20 years’ experience in systemdevelopment. She is a co-founder of the Danish Agile User Group and is a partner in ScrumTraining Institute.
Jim Coplien is a software industry pioneer in object-oriented design, architecture patterns,and agile software development. He has authored several books on software design and agilesoftware development, and is a partner in the Scrum Training Institute.