GlobAlEdiTioN
Software Engineering
TENTH EdiTioN
ian Sommerville
Software engineering
tenth edition
Ian Sommerville
Boston Columbus Indianapolis New York San Francisco HobokenAmsterdam Cape Town Dubai London Madrid Milan Munich Paris Montreal Toronto Delhi Mexico City So Paulo Sydney Hong Kong Seoul Singapore Taipei Tokyo
Editorial Director: Marcia HortonEditor in Chief: Michael Hirsch
Acquisitions Editor: Matt GoldsteinEditorial Assistant: Chelsea Bell
Assistant Acquisitions Editor, Global
Edition: Murchana Borthakur
Associate Project Editor, Global
Edition: Binita Roy
Managing Editor: Jeff Holcomb
Senior Production Project
Manager: Marilyn Lloyd
Director of Marketing: Margaret WaplesMarketing Coordinator: Kathryn FerrantiSenior Manufacturing Buyer: Carol MelvilleSenior Manufacturing Controller, Production,
Global Edition: Trudy Kimber
Text Designer: Susan Raymond
Cover Art Designer: Lumina DatamaticsCover Image: Andrey Bayda/ShutterstockInterior Chapter Opener: graficart.net/AlamyFull-Service Project Management: Rashmi
Tickyani, Aptara, Inc.
Composition and Illustrations: Aptara, Inc.
Pearson Education Limited Edinburgh Gate
Harlow
Essex CM20 2JE
England
and Associated Companies throughout the world
Visit us on the World Wide Web at: www.pearsonglobaleditions.com
Pearson Education Limited 2016
The rights of Ian Sommerville to be identified as the author of this work have been asserted by him in accordance with the Copyright, Designs and Patents Act 1988.
Authorized adaptation from the United States edition, entitled Software Engineering, 10th edition, ISBN 978-0-13-394303-0, by Ian Sommerville, published by Pearson Education 2016.All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, ortransmitted in any form or by any means, electronic, mechanical, photocopying, recording or otherwise, without either the prior written permission of the publisher or a license permitting restricted copying in the United Kingdom issued by the Copyright Licensing Agency Ltd, Saffron House, 610 Kirby Street, London EC1N 8TS.
All trademarks used herein are the property of their respective owners. The use of any trademark in this text does not vest in the author or publisher any trademark ownership rights in such trademarks, nor does the use of such trademarks imply any affiliation with or endorsement of this book by such owners.
ISBN 10: 1-292-09613-6ISBN 13: 978-1-292-09613-1
British Library Cataloguing-in-Publication Data
A catalogue record for this book is available from the British Library
10 9 8 7 6 5 4 3 2 1
Typeset in 9 New Aster LT Std by Aptara, Inc.Printed and bound by Courier Westford in the United States of America.
Preface
Progress in software engineering over the last 50 years has been astonishing. Oursocieties could not function without large professional software systems. Nationalutilities and infrastructureenergy, communications and transportall rely oncomplex and mostly reliable computer systems. Software has allowed us to explorespace and to create the World Wide Webthe most significant information systemin the history of mankind. Smartphones and tablets are ubiquitous and an entire appsindustry developing software for these devices has emerged in the past few years.
Humanity is now facing a demanding set of challengesclimate change andextreme weather, declining natural resources, an increasing world population to be fedand housed, international terrorism, and the need to help elderly people lead satisfyingand fulfilled lives. We need new technologies to help us address these challenges and,for sure, software will have a central role in these technologies. Software engineeringis, therefore, critically important for our future on this planet. We have to continue toeducate software engineers and develop the discipline so that we meet the demand formore software and create the increasingly complex future systems that we need.
Of course, there are still problems with software projects. Systems are still sometimes delivered late and cost more than expected. We are creating increasingly complex software systems of systems and we should not be surprised that we encounter difficulties along the way. However, we should not let these problems conceal the real successes in software engineering and the impressive software engineeringmethods and technologies that have been developed.
This book, in different editions, has now been around for over 30 years and this edition is based around the essential principles that were established in the first edition:
1.I write about software engineering as it is practiced in industry, without taking an evangelical position on particular approaches such as agile development or formal methods. In reality, industry mixes techniques such as agile and planbased development and this is reflected in the book.
2.I write about what I know and understand. I have had many suggestions foradditional topics that might be covered in more detail such as open sourcedevelopment, the use of the UML and mobile software engineering. But I dont really know enough about these areas. My own work has been in system dependability and in systems engineering and this is reflected in my selection ofadvanced topics for the book.
I believe that the key issues for modern software engineering are managing complexity, integrating agility with other methods and ensuring that our systems aresecure and resilient. These issues have been the driver for the changes and additions in this new edition of my book.
Changes from the 9th edition In summary, the major updates and additions in this book from the 9th edition are:
Ihaveextensivelyupdatedthechapteronagilesoftwareengineering,withnewmaterial on Scrum. I have updated other chapters as required to reflect the increasing use of agile methods of software engineering.
Ihaveaddednewchaptersonresilienceengineering,systemsengineering,andsystems of systems.
Ihavecompletelyreorganizedthreechapterscoveringreliability,safety,andsecurity.
IhaveaddednewmaterialonRESTfulservicestothechaptercoveringserviceoriented software engineering.
Ihaverevisedandupdatedthechapteronconfigurationmanagementwithnewmaterial on distributed version control systems.
Ihavemovedchaptersonaspect-orientedsoftwareengineeringandprocessimprovement from the print version of the book to the web site.
Newsupplementarymaterialhasbeenaddedtothewebsite,includingasetofsupporting videos. I have explained key topics on video and recommended related YouTube videos.
The 4-part structure of the book, introduced in earlier editions, has been retained but I have made significant changes in each part of the book.
1.In Part 1, Introduction to software engineering, I have completely rewrittenChapter 3 (agile methods) and updated this to reflect the increasing use of Scrum.A new case study on a digital learning environment has been added to Chapter 1and is used in a number of chapters. Legacy systems are covered in more detailin Chapter 9. Minor changes and updates have been made to all other chapters.