Software Requirement Patterns
Stephen Withall
PUBLISHED BY Microsoft Press A Division of Microsoft Corporation
One Microsoft Way Redmond, Washington 98052-6399
Copyright 2007 by Stephen Withall
9780735623989
All rights reserved. No part of the contents of this book may be reproduced or transmitted in any form or by any means without the written permission of the publisher.
Library of Congress Control Number: 2007926327
Printed and bound in the United States of America.
1 2 3 4 5 6 7 8 9 QWT 2 1 0 9 8 7
Distributed in Canada by H.B. Fenn and Company Ltd.
A CIP catalogue record for this book is available from the British Library.
Microsoft Press books are available through booksellers and distributors worldwide. For further information about international editions, contact your local Microsoft Corporation office or contact Microsoft Press International directly at fax (425) 936-7329. Visit our Web site at .
Microsoft, Microsoft Press, Excel, Internet Explorer, Outlook, and Windows are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries. Other product and company names mentioned herein may be the trademarks of their respective owners.
The example companies, organizations, products, domain names, e-mail addresses, logos, people, places, and events depicted herein are fictitious. No association with any real company, organization, product, domain name, e-mail address, logo, person, place, or event is intended or should be inferred.
This book expresses the author's views and opinions. The information contained in this book is provided without any express, statutory, or implied warranties. Neither the authors, Microsoft Corporation, nor its resellers, or distributors will be held liable for any damages caused or alleged to be caused either directly or indirectly by this book.
Acquisitions Editor: Ben Ryan
Developmental Editor: Devon Musgrave Project Editor: Maria Gargiulo Illustrations: Stephen Withall Editorial Production: ICC Macmillan Inc.
Body Part No. X13-72719
About the Author
Stephen Withall has been working as a software professional since 1979, in a range of roles from programmer to chief technical officer. Along the way, he has accumulated many years experiencing both the satisfactions and the frustrations of business analysis, systems analysis, and specifying requirements. He has worked in diverse environments in companies big and small, in 17 countries across four continents. The first half of his career found him roaming the world of banking and finance, and the second half (so far) in diverse kinds of e-commerce. He actively maintains his hands-on software development skills.
Stephen holds a BSc in Mathematical Sciences from Bristol University, U.K. He lives in Sydney, Australia, and he enjoys going to places where few others are. You can reach him at http://www.withallyourequire.com.
Foreword
Requirements development is hard! Requirements analysts often are not adequately trained or experienced, so they do the best they can without necessarily knowing how to write high-quality requirements. Analysts struggle with questions such as "Where do I start?," "How do I know when I'm done?," "How detailed should my requirements be?," "Have I missed any requirements?," and "Have I overlooked any critical information in the requirements I've written?" Unfortunately, there's no formulaic approach to the communication-intensive challenge of understanding and specifying requirements.
Stephen Withall's Software Requirement Patterns can help any analyst write better requirements. These patterns provide a way to embody comprehensive and structured knowledge about different types of requirements. Requirements development is a journey of exploration, not just a simple collection or transcription process. The patterns Steve presents can help analysts ask the right questions to properly understand and specify requirements of many types in an appropriate level of detail. From the perspective of "know your audience," the patterns include guidance to assist the developers and testers who must take the requirements to the next development stages. People learn from examples, and they work more efficiently with the help of templates rather than blank pages. To this end, Steve's requirement patterns provide both templates and examples.
These requirements patterns are applicable to a wide variety of projects and products. You can apply the concepts in the book to develop new requirement patterns specific to your own industry, application domain, or product line. Too many projects begin specifying requirements from scratch, but the requirement patterns let organizations effectively reuse requirements knowledge captured on previous projects.
This book communicates a wealth of wisdom and insight for writing stellar requirements. Through the patterns, Steve points out the value of using a consistent style when writing requirements, which can enhance every analyst's capabilities. Even if you don't apply the patterns rigorously, the book contains hundreds of practical tips for specifying better requirements. Use the book as a reference: read the relevant patterns, try them, and absorb the ideas and advice Steve presents. Internalizing those patterns that fit your situation will make them a routine aspect of how you explore, analyze, document, and use software requirements.
Requirement patterns just might represent the next generation of software requirements thinking. Stephen Withall's Software Requirement Patterns will likely remain the definitive treatise on requirement patterns for years to come.
Karl Wiegers
April 2007
Preface
The Purpose of This Book
There is nothing new under the sun. It has all been done before.
-Sherlock Holmes: A Study in Scarlet,
Arthur Conan Doyle
The purpose of this book is to help you decide and define what a new software system needs to do and to suggest what extra features to add to make it a good system-or even an excellent one. It saves you effort and enables you to be more precise, by providing detailed guidance on how to specify individual requirements. Requirement patterns are encapsulated expertise, conveniently prepackaged for reuse. The book contains 37 requirement patterns, each of which describes an approach to tackling a particular type of situation that crops up repeatedly in all kinds of systems, but focusing on commercial business software. Only a fraction of any system is specific to its business area; the bulk occurs over and over again no matter what your system is for. These patterns cover more than half of all requirements in some systems-a lot more if we add the extra requirements the patterns suggest.
If you're wary of the word "requirement" here, don't be; it doesn't mean you have to be embroiled in paperwork. This book is suitable for use by business analysts using a traditional analysis approach and by software architects and engineers who use agile methods. You can use requirement patterns to help you identify and define what a system needs to do even if you don't write formal requirements as a result.
The requirements for a software system specify the problem it needs to solve-its purpose and goals. If they're omitted or done badly-which is, unfortunately, all too frequently the case-a system is unlikely to be a perfect fit, no matter how well it's implemented. A disturbing proportion of computer systems are judged to be inadequate; many are not even delivered; more are late or over budget. Studies consistently show that the single biggest cause is poorly defined requirements: not properly nailing down a system's purpose and what it must do. Even a modest contribution to improving requirements offers the prospect of saving businesses part of a huge sum of wasted investment.