ebook img

Engineering software products. An Introduction to Modern Software Engineering PDF

369 Pages·2020·8.534 MB·English
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Engineering software products. An Introduction to Modern Software Engineering

GLOBAL This is a special edition of an established title widely used by colleges and GLOBAL universities throughout the world. Pearson published this exclusive edition EDITION for the benefit of students outside the United States and Canada. If you EDITION purchased this book within the United States or Canada, you should be aware EEGG DDLL that it has been imported without the approval of the Publisher or Author. ITITOO IOIOBB AA NNLL At a time when software products have become a part of almost every aspect of our daily life — assisting with work, our commute, and staying fit, to give a few examples — the A need for courses on creating software increases by the day. Contrary to popular belief, n E software engineering depends on factors above and beyond coding skills. Engineering Inn t rg Software Products focuses on these activities, so important for producing dependable and o din u functional software. ce te ior n Key Features tin og M • Unique approach Written in an informal style, this book focuses on products and S oo not projects, unlike other texts on this subject. It covers topics such as personas def rt and scenarios, cloud computing, microservices, security, and DevOps, not present in nw Sa similar titles. ofr te w • Makes concepts relatable This book makes use of software systems that learners a P r er are likely to use constantly or are already familiar with. This makes it easier for students Eo Engineering Software Products to understand software engineering techniques. nd gu inc • Concise coverage Designed for a one-semester course, this book has concise eet rs coverage of topics like software products, agile software engineering, scenarios and in An Introduction to Modern g user stories, software architecture, cloud-based software, security and privacy, and code management. Software Engineering • New appendix Written specifically for this Global Edition, this appendix explains S the differences between project-based and product-based software engineering. o m m e Ian Sommerville r v ille CVR_SOMM6349_01_GE_CVR.indd 1 17/10/20 2:46 PM ENGINEERING SOFTWARE PRODUCTS An Introduction to Modern Software Engineering Global Edition Ian Sommerville Harlow, England • London • New York • Boston • San Francisco • Toronto • Sydney • Dubai • Singapore • Hong Kong Tokyo • Seoul • Taipei • New Delhi • Cape Town • São Paulo • Mexico City • Madrid • Amsterdam • Munich • Paris • Milan A01_SOME6349_01_GE_FM.indd 1 08/10/2020 21:27 Pearson Education Limited KAO Two KAO Park Hockham Way Harlow CM17 9SR United Kingdom and Associated Companies throughout the world Visit us on the World Wide Web at: www.pearsonglobaleditions.com © Pearson Education Limited, 2021 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 Engineering Software Products, 1st Edition, ISBN 978-0-13-521064-2 by Ian Sommerville, published by Pearson Education ©2020. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted 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, 6–10 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. For information regarding permissions, request forms, and the appropriate contacts within the Pearson Education Global Rights and Permissions department, please visit www.pearsoned.com/permissions. This eBook is a standalone product and may or may not include all assets that were part of the print version. It also does not provide access to other Pearson digital products like MyLab and Mastering. The publisher reserves the right to remove any material in this eBook at any time. British Library Cataloguing-in-Publication Data A catalogue record for this book is available from the British Library ISBN 10: 1-292-37634-1 ISBN 13: 978-1-292-37634-9 eBook ISBN 13: 978-1-292-37635-6 PREFACE Software products, such as stand-alone programs, web apps and services, and mobile apps, have transformed our everyday life and work. There are tens of thousands of software product companies, and hundreds of thousands of software engineers are employed worldwide in software product development. Contrary to what some people may think, engineering software products needs more than coding skills. So, I’ve written this book to introduce some of the software engineering activities that are important for the production of reliable and secure software products. Who is the book for? The book has been designed for students taking a first course in software engineering. People thinking about developing a product who don’t have much software engineer- ing experience may also find it useful. Why do we need a software engineering book that’s focused on software products? Most software engineering texts focus on project-based software engineering, where a client develops a specification and the software is developed by another company. However, the software engineering methods and techniques that have been developed for large-scale projects are not suited to software product development. A01_SOME6349_01_GE_FM.indd 3 08/10/2020 21:27 4 Preface Students often find it difficult to relate to large, custom software systems. I think that students find it easier to understand software engineering techniques when they are relevant to the type of software that they constantly use. Also, many product engi- neering techniques are more directly relevant to student projects than project-oriented techniques. Is this a new edition of your other software engineering textbook? No, this book takes a completely different approach and, apart from a c ouple of dia- grams, does not reuse any material from Software Engineering, 10th edition. What’s in the book? Ten chapters cover software products, agile software engineering, features, scenarios and user stories, software architecture, cloud-based software, microservices archi- tecture, security and privacy, reliable programming, testing, and DevOps and code management. I’ve designed the book so that it’s suitable for a one-semester software engineering course. How is this book different from other introductory texts on software engineering? As I said, the focus is on products rather than projects. I cover techniques that most other SE texts don’t cover, such as personas and scenarios, cloud computing, micro- services, security, and DevOps. As product innovation doesn’t come from university research, there are no citations or references to research and the book is written in an informal style. A01_SOME6349_01_GE_FM.indd 4 08/10/2020 21:27 Preface 5 What do I need to know to get value from the book? I assume that you have programming experience with a modern object-o riented programming language such as Java or Python and that you are familiar with good programming practice, such as the use of meaningful names. You should also under- stand basic computing concepts, such as objects, classes, and databases. The program examples in the book are written in Python, but they are understandable by anyone with programming experience. What extra material is available to help teachers and instructors? 1. An instructor’s manual with solutions to exercises and quiz questions for all chapters 2. Suggestions how you can use the book in a one-semester software engineering course 3. Presentations for teaching (Keynote, PowerPoint, and PDF) You can access this material along with additional material at: www.pearsonglobaleditions .com Where can I find out more? I’ve written a couple of blog posts that are relevant to the book. These provide more information about my thoughts on teaching software engineering and my motivation for writing the book. “Out with the UML (and other stuff too): reimagining introductory courses in software engineering” https://iansommerville.com/systems-software-and-technology/what- should-we-teach-in-software-engineering-courses/ “Engineering Software Products” https://iansommerville.com/systems-software-and-technology /engineering-software-products/ A01_SOME6349_01_GE_FM.indd 5 08/10/2020 21:27 6 Preface Acknowledgments I’d like to thank the reviewers who made helpful and supportive suggestions when they reviewed the initial proposal for this book: Paul Eggert—UCLA Los Angeles Jeffrey Miller—University of Southern California Harvey Siy—University of Nebraska Omaha Edmund S. Yu—Syracuse University Gregory Gay—University of South Carolina Josh Delinger—Towson University Rocky Slavin—University of Texas San Antonio Bingyang Wei—Midwestern State University Thanks also to Adam Barker from St. Andrews University for keeping me right on containers and to Rose Kernan who managed the production of the book. Thanks, as ever, to my family for their help and support while I was writing the book. Particular thanks to my daughter Jane, who did a great job of reading and commenting on the text. She was a brutal editor! Her suggested changes significantly improved the quality of my prose. Finally, special thanks to our newest family member, my beautiful grandson Cillian, who was born while I was writing this book. His bubbly personality and constant smiles were a very welcome distraction from the sometimes tedious job of book writing and editing. Ian Sommerville A01_SOME6349_01_GE_FM.indd 6 08/10/2020 21:27 CONTENTS Chapter 1 Software Products 11 1.1 The product vision 17 1.2 Software product management 21 1.3 Product prototyping 26 Key Points 27 Recommended Reading 28 Presentations, Videos, and Links 28 Exercises 29 Chapter 2 Agile Software Engineering 30 2.1 Agile methods 30 2.2 Extreme Programming 34 2.3 Scrum 37 Key Points 57 Recommended Reading 58 Presentations, Videos, and Links 58 Exercises 59 A01_SOME6349_01_GE_FM.indd 7 08/10/2020 21:27 8 Contents Chapter 3 Features, Scenarios, and Stories 60 3.1 Personas 64 3.2 Scenarios 69 3.3 User stories 76 3.4 Feature identification 80 Key Points 89 Recommended Reading 90 Presentations, Videos, and Links 90 Exercises 90 Chapter 4 Software Architecture 92 4.1 Why is architecture important? 94 4.2 Architectural design 98 4.3 System decomposition 102 4.4 Distribution architecture 113 4.5 Technology issues 119 Key Points 123 Recommended Reading 124 Presentations, Videos, and Links 124 Exercises 125 Chapter 5 Cloud-Based Software 126 5.1 Virtualization and containers 128 5.2 Everything as a service 134 5.3 Software as a service 137 5.4 Multi-tenant and multi-instance systems 142 5.5 Cloud software architecture 150 Key Points 157 Recommended Reading 158 A01_SOME6349_01_GE_FM.indd 8 08/10/2020 21:27 Contents 9 Presentations, Videos, and Links 159 Exercises 159 Chapter 6 Microservices Architecture 160 6.1 Microservices 164 6.2 Microservices architecture 167 6.3 RESTful services 183 6.4 Service deployment 189 Key Points 192 Recommended Reading 193 Presentations, Videos, and Links 194 Exercises 194 Chapter 7 Security and Privacy 195 7.1 Attacks and defenses 198 7.2 Authentication 205 7.3 Authorization 211 7.4 Encryption 213 7.5 Privacy 223 Key Points 227 Recommended Reading 228 Presentations, Videos, and Links 229 Exercises 229 Chapter 8 Reliable Programming 231 8.1 Fault avoidance 233 8.2 Input validation 252 8.3 Failure management 259 Key Points 266 A01_SOME6349_01_GE_FM.indd 9 08/10/2020 21:27

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.