Agile Software Construction

Size: px
Start display at page:

Download "Agile Software Construction"

Transcription

1 Agile Software Construction

2 John Hunt Agile Software Construction

3 John Hunt, BSc, PhD, MBCS, CEng, MEng Experis Ltd. Chippenham Wiltshire UK British Library Cataloguing in Publication Data A catalogue record for this book is available from the British Library Library of Congress Control Number: ISBN-10: ISBN-13: Printed on acid-free paper C Springer-Verlag London Limited 2006 Apart from any fair dealing for the purposes of research or private study, or criticism or review, as permitted under the Copyright, Designs and Patents Act 1988, this publication may only be reproduced, stored or transmitted, in any form or by any means, with the prior permission in writing of the publishers, or in the case of reprographic reproduction in accordance with the terms of licences issued by the Copyright Licensing Agency. Enquiries concerning reproduction outside those terms should be sent to the publishers. The use of registered names, trademarks, etc. in this publication does not imply, even in the absence of a specific statement, that such names are exempt from the relevant laws and regulations and therefore free for general use. The publisher makes no representation, express or implied, with regard to the accuracy of the information contained in this book and cannot accept any legal responsibility or liability for any errors or omissions that may be made. Printed in the United States of America (TB/MV) Springer Science+Business Media springeronline.com

4 Contents 1 Introduction WhyThisBook? ABitofHistory What Is Agile Software Development? Why Be Agile? WhatThisBookIsAbout? Implementation Languages TheStructureoftheBook WheretoGetMoreInformation? Where to Go Online? Agile Methods and the Agile Manifesto Introduction What Is Agile? The Agile Manifesto WhatAreAgileMethods? Agile Modelling XP: extreme Programming The XP Project Lifecycle User Stories Architectural Spike Release Planning Iterations Acceptance Testing Release Why Is XP Controversial? DSDM SCRUM Feature-Driven Development Summary Agile Modelling Introduction Modelling Misconceptions v

5 vi Contents 3.3 Agile Modelling Agile Models Add Value Agile Models Fulfil Their Purpose Agile Models Are Understandable Accuracy and Consistency Agile Models Are Sufficiently Detailed Agile Models Are as Simple as Possible WhatSortofModels? ToolMisconceptions Updating Agile Models... Summary How to Become an Agile Modeller Introduction Agile Modelling Practices The Core Practices The Supplementary Practices Interactions Between Practices Adopt the Core Agile Modelling Practices Iterative and Incremental Modelling Working as a Team Promoting Simplicity Validating the Models Consider the Supplementary Practices Improving Productivity Design Patterns Controlling Documentation Motivations for Modelling Maximise You Modelling Potential Know Your Tools Refactoring Test-First Design Model in Increments Think Small Agile Models Are Good Enough Agile Modelling Sessions AgileModels Agile Documentation Summary Extreme Programming (XP) Introduction CoreXPValues Communication Simplicity Feedback Courage... 73

6 Contents vii 5.3 UserStories The Twelve XP Practises The Planning Game Small Releases Simple Design Testing Refactoring Pair Programming Collective Ownership Continuous Integration On-Site Customer Coding Standards Hour Week System Metaphor What Is So Extreme About Extreme Programming? Review Putting XP into Practise Introduction Planning XP Projects Playing the Planning Game The Goal of the Game The Strategy The Game Pieces ThePlayers The Moves/Playing the Game Planning Your XP Project Test First Coding How to Write Tests First? What to Test? Confidence in the Test Suite Making Pair Programming Work Refactoring The Very Idea When to Refactor? How to Refactor? When Not to Refactor? Keeping on Track Small Releases Simple Design Continuous Integration Making Collective Ownership Happen Getting an On-Site Customer Stand-Up Meetings Summary

7 viii Contents 7 Agile Modelling and XP Introduction TheFit Common Practises Modelling Specific Practises Model with a Purpose Multiple Models Know Your Models XP Objections to Agile Modelling Agile Modelling and Planning XP Projects Initial Project Planning Iteration/Release Planning XP Implementation Phase Refactoring Test-First Coding Simple Design Pair Programming FocusonXP Agile Modelling and XP Reviewed Introduction Review of XP/AM Practices The Planning Game Small Releases Simple Design Testing Refactoring Pair Programming Collective Ownership Continuous Integration On-Site Customer Coding Standards hour Week System Metaphor OtherFactors Scalability Post Project Review Environment Daily Meeting Architecture Why Have an Architecture Characteristics of a Good Architecture So What is an Architecture? Architecture Can Make XP Work XP on Large Projects WhereXPWorksBest Summary

8 Contents ix 9 Feature-Driven Development Introduction Incremental Software Development Regaining Control: The Motivation behind FDD Feature-Centric Development Timeboxing Iterations Being Adaptive but Managed Planning an Iterative Project Iterations, Timeboxes and Releases Planning an Iteration An Aside on Planning within an FDD Project Estimating the Cost of a Feature ArchitectureCentric Why Architecture Centric? Architecture Defined Why Have an Architecture? Architecture Myths Plan Incremental Build of Software FDDandXP Summary Planning a Sample FDD Project Introduction Initiating the Project The Overall Project Plan Planning the First Iteration Selecting Features for Iteration Feature to Task Mapping Ordering Tasks for Iteration The Gantt Chart for Iteration Post Delivery Summary Agile Methods with RUP and PRINCE Introduction Agile Modelling and RUP Overview of the Unified Process Lifecycle Phases Phases, Iterations and Disciplines Modelling and the Unified Process Agile Modelling and Documentation FDD and RUP Agile Methods and Prince Summary Introducing Agile Methods into Your Organisation Introduction Selling Agile Methods

9 x Contents 12.3 Identifying a Suitable First Project Promoting an Agile Culture Building an Agile Team Adopting Agile Processes One at a Time Managing Existing Processes Working with Distributed Teams Get Some Experience Tools to Help with Agile Development Introduction What Tools Do You Need? Eclipse: An Agile IDE Lightweight Modelling within Eclipse Building Applications with ANT Version Control with CVS So What Is It All About? Code Central Station Testing with JUnit JUnit within Eclipse Adding JUnit to an Eclipse Project UsingtheEclipseJUnitWizard Online References Obstacles to Agile Software Development Introduction Management Intransigence The Failed Project Syndrome Developer Resistance Customer Opposition Contractual Difficulties Familiarity with Agility References Index