软件工程(英文版·第9版)
作者 : (英)Ian Sommerville 著 圣安德鲁斯大学
丛书名 : 经典原版书库
出版日期 : 2011-06-01
ISBN : 978-7-111-34825-2
定价 : 99.00元
教辅资源下载
扩展信息
语种 : 英文
页数 : 789
开本 : 16
原书名 : Software Engineering, Ninth Edition
原出版社: Pearson Education Asia
属性分类: 教材
包含CD :
绝版 :
图书简介

本书是系统介绍软件工程理论的经典教材,自1982年初版以来,随着软件工程学科的发展不断更新,影响了一代又一代软件工程人才,对学科本身也产生了积极影响。全书共四个部分,完整讨论了软件工程各个阶段的内容。其中,第一部分是对软件工程的一般性介绍,包括软件工程过程和敏捷开发以及面向对象的设计和设计模式的使用;第二部分介绍可依赖性和信息安全性问题;第三部分介绍高级软件工程;第四部分介绍软件管理,重点介绍技术管理问题。

图书特色

本书是系统介绍软件工程理论的经典教材,自1982年初版以来,随着软件工程学科的发展不断更新,影响了一代又一代软件工程人才,对学科本身也产生了积极影响。全书共四个部分,完整讨论了软件工程各个阶段的内容,是软件工程和系统工程专业本科生和研究生的优秀教材,也是软件工程师必备的参考书籍。
Ian Sommerville 英国著名软件工程专家,曾任教于兰卡斯特大学,现为圣安德鲁斯大学软件工程教授。他是IEEE CS组织编撰“软件工程知识体系”(SWEBOK)的专家委员会成员之一。他在软件工程的教学和科研方面有20多年的经验,其研究领域包括计算机系统工程、需求工程、系统可靠性以及软件进化。
作者简介
本书特点
涵盖了对所有开发过程都很基础的重要主题,包括软件工程理论与实践的最新进展。
将第8版中的八篇内容重构为四个部分,使教师讲授软件工程课程更加容易。
每一章都有30%~40%的更新,增加了敏捷软件开发和嵌入式系统等新章,补充了模型驱动工程、开源开发、测试驱动开发、可依赖系统体系结构、静态分析和模型检查、COTS复用、服务作为软件以及敏捷规划等新内容。
着重讨论了开发可靠的分布式系统的相关主题以及敏捷方法和软件复用。
反映敏捷方法先进性的同时,不忘强调传统的计划驱动软件工程的作用,阐述了两者结合构建优秀软件系统的重要性。
以一个新的病人记录系统案例研究贯穿始终,系统、完整地讲解软件工程的各个方面。
设计为“印刷/Web”相结合的方式,核心信息采用印刷版本,教辅材料及先前版本中的一些章节放在Web上,为读者提供丰富翔实的信息。

图书前言

As I was writing the final chapters in this book in the summer of 2009, I realizedthatsoftware engineering was 40 years old. The name ‘software engineering’ wasproposed in 1969 at a NATO conference to discuss software development problems—large software systems were late, did not deliver the functionality needed by theirusers, cost more than expected, and were unreliable. I did not attend that conferencebut, a year later, I wrote my first program and started my professional life in software.
  Progress in software engineering has been remarkable over my professional life-time. Our societies could not function without large, professional software systems.For building business systems, there is an alphabet soup of technologies—J2EE,.NET, SaaS, SAP, BPEL4WS, SOAP, CBSE, etc.—that support the development anddeployment of large enterprise applications. National utilities and infrastructure—energy, communications, and transport—all rely on complex and mostly reliablecomputer systems. Software has allowed us to explore space and to create the WorldWide Web, the most significant information system in the history of mankind.Humanity is now faced with a new set of challenges—climate change and extremeweather, declining natural resources, an increasing world population to be fed andhoused, international terrorism, and the need to help elderly people lead satisfyingand fulfilled lives. We need new technologies to help us address these problems and,for sure, software will play a central role in these technologies.
  Software engineering is, therefore, a critically important technology for the futureof mankind. We must continue to educate software engineers and develop the disci-pline so that we can create more complex software systems. Of course, there are stillproblems with software projects. Software is still sometimes late and costs morethan expected. However, we should not let these problems conceal the real successesin software engineering and the impressive software engineering methods and tech-nologies that have been developed.
  Software engineering is now such a huge area that it is impossible to cover thewhole subject in one book. My focus, therefore, is on key topics that are fundamental to all development processes and topics concerned with the development of reliable,distributed systems. There is an increased emphasis on agile methods and softwarereuse. I strongly believe that agile methods have their place but so too does ‘tradi-tional’ plan-driven software engineering. We need to combine the best of theseapproaches to build better software systems.
  Books inevitably reflect the opinions and prejudices of their authors. Some read-ers will inevitably disagree with my opinions and with my choice of material. Suchdisagreement is a healthy reflection of the diversity of the discipline and is essentialfor its evolution. Nevertheless, I hope that all software engineers and software engi-neering students can find something of interest here.
Integration with the Web
  There is an incredible amount of information on software engineering available on theWeb and some people have questioned if textbooks like this one are still needed.However, the quality of available information is very patchy, information is sometimespresented badly and it can be hard to find the information that you need. Consequently,I believe that textbooks still have an important role to play in learning. They serve as aroadmap to the subject and allow information on method and techniques to be organizedand presented in a coherent and readable way. They also provide a starting point fordeeper exploration of the research literature and material available on the Web.
  I strongly believe that textbooks have a future but only if they are integrated withand add value to material on the Web. This book has therefore been designed as ahybrid print/web text in which core information in the printed edition is linked tosupplementary material on the Web. Almost all chapters include specially written‘web sections’ that add to the information in that chapter. There are also four ‘webchapters’ on topics that I have not covered in the print version of the book.
  The website that is associated with the book is:
http://www.SoftwareEngineering-9.com
  The book’s web has four principal components:
  1.Web sectionsThese are extra sections that add to the content presented in eachchapter. These web sections are linked from breakout boxes in each chapter.
  2.Web chaptersThere are four web chapters covering formal methods, interactiondesign, documentation, and application architectures. I may add other chapterson new topics during the lifetime of the book.
  3.Material for instructorsThe material in this section is intended to support peo-ple who are teaching software engineering. See the “Support Materials” sectionin this Preface.
  4.Case studiesThese provide additional information about the case studies usedin the book (insulin pump, mental health-care system, wilderness weather system) as well as information about further case studies, such as the failure of theAriane 5 launcher.
  As well as these sections, there are also links to other sites with useful material onsoftware engineering, further reading, blogs, newsletters, etc.
  I welcome your constructive comments and suggestions about the book and thewebsite. You can contact me at ian@SoftwareEngineering-9.com. Please include[SE9] in the subject of your message. Otherwise, my spam filters will probablyreject your mail and you will not receive a reply. I do not have time to help studentswith their homework, so please don’t ask.
Readership
  The book is primarily aimed at university and college students taking introductoryand advanced courses in software and systems engineering. Software engineers inthe industry may find the book useful as general reading and as a means of updatingtheir knowledge on topics such as software reuse, architectural design, dependabilityand security, and process improvement. I assume that readers have completed anintroductory programming course and are familiar with programming terminology.
Changes from previous editions
  This edition has retained the fundamental material on software engineering that wascovered in previous editions but I have revised and updated all chapters and haveincluded new material on many different topics. The most important changes are:
1.The move from a print-only book to a hybrid print/web book with the web mate-rial tightly integrated with the sections in the book. This has allowed me to reducethe number of chapters in the book and to focus on core material in each chapter.
2.Complete restructuring to make it easier to use the book in teaching softwareengineering. The book now has four rather than eight parts and each part may beused on its own or in combination with other parts as the basis of a softwareengineering course. The four parts are an introduction to software engineering,dependability and security, advanced software engineering, and software engi-neering management.
3.Several topics from previous editions are presented more concisely in a singlechapter, with extra material moved onto the Web.
4.Additional web chapters, based on chapters from previous editions that I havenot included here, are available on the Web.
5.I have updated and revised the content in all chapters. I estimate that between30% and 40% of the text has been completely rewritten.
6.I have added new chapters on agile software development and embedded systems.
7.As well as these new chapters, there is new material on model-driven engineer-ing, open source development, test-driven development, Reason’s Swiss Cheesemodel, dependable systems architectures, static analysis and model checking,COTS reuse, software as a service, and agile planning.
8.A new case study on a patient record system for patients who are undergoingtreatment for mental health problems has been used in several chapters.
Using the book for teaching
  I have designed the book so that it can be used in three different types of softwareengineering courses:
1.General introductory courses in software engineeringThe first part of the bookhas been designed explicitly to support a one-semester course in introductorysoftware engineering.
2.Introductory or intermediate courses on specific software engineering topicsYoucan create a range of more advanced courses using the chapters in Parts 2–4. Forexample, I have taught a course in critical systems engineering using the chaptersin Part 2 plus chapters on quality management and configuration management.
3.More advanced courses in specific software engineering topicsIn this case, thechapters in the book form a foundation for the course. These are then supple-mented with further reading that explores the topic in more detail. For example,a course on software reuse could be based around Chapters 16, 17, 18, and 19.
  More information about using the book for teaching, including a comparison withprevious editions, is available on the book’s website.
Support materials
  A wide range of support material is available to help people using the book for teach-ing software engineering courses. This includes:
PowerPoint presentations for all of the chapters in the book.
Figures in PowerPoint.
An instructor’s guide that gives advice on how to use the book in different coursesand explains the relationship between the chapters in this edition and previouseditions.
Further information on the book’s case studies.
Additional case studies that may be used in software engineering courses.
Additional PowerPoint presentations on systems engineering.
Four web chapters covering formal methods, interaction design, applicationarchitectures, and documentation.
  All of this material is available free to readers of the book from the book’s web-site or from the Pearson support site below. Additional material for instructors isavailable on a restricted basis to accredited instructors only:
Model answers to selected end-of-chapter exercises.
Quiz questions and answers for each chapter.
  All support material, including restricted material, is available from:
http://www.pearsonhighered.com/sommerville/
  Instructors using the book for teaching may obtain a password to access restrictedmaterial by registering at the Pearson website, by contacting their local Pearson rep-resentative, or by requesting a password by e-mail from computing@aw.com.Passwords are not available from the author.
Acknowledgments
  A large number of people have contributed over the years to the evolution of thisbook and I’d like to thank everyone (reviewers, students, and book users) who havecommented on previous editions and made constructive suggestions for change.
  I’d particularly like to thank my family (Anne, Ali, and Jane) for their help andsupport while the book was being written. A big thank-you especially to my daugh-ter, Jane, who discovered a talent for proofreading and editing. She was tremen-dously helpful in reading the entire book and did a great job spotting and fixing alarge number of typos and grammatical errors.

Ian Sommerville
October 2009

上架指导

计算机\软件工程

封底文字

本书是系统介绍软件工程理论的经典教材,自1982年初版以来,随着软件工程学科的发展不断更新,影响了一代又一代软件工程人才,对学科本身也产生了积极影响。全书共四个部分,完整讨论了软件工程各个阶段的内容,是软件工程和系统工程专业本科和研究生的优秀教材,也是软件工程师必备的参考书籍。
本书特点
● 涵盖了对所有开发过程都很基础的重要主题,包括软件工程理论与实践的最新进展。
● 将第8版中的八篇内容重构为四个部分,使教师讲授软件工程课程更加容易。
● 每一章都有30%~40%的更新,增加了敏捷软件开发和嵌入式系统等新章,补充了模型驱动工程、开源开发、测试驱动开发、可依赖系统体系结构、静态分析和模型检查、COTS复用、服务作为软件以及敏捷规划等新内容。
● 着重讨论了开发可靠的分布式系统的相关主题以及敏捷方法和软件复用。
● 反映敏捷方法先进性的同时,不忘强调传统的计划驱动软件工程的作用,阐述了两者结合构建优秀软件系统的重要性。
● 以一个新的病人记录系统案例研究贯穿始终,系统、完整地讲解软件工程的各个方面。
● 设计为“印刷/Web”相结合的方式,核心信息采用印刷版本,教辅材料及先前版本中的一些章节放在Web上,为读者提供丰富翔实的信息。

作者简介

(英)Ian Sommerville 著 圣安德鲁斯大学:Ian Sommerville 英国著名软件工程专家,曾任教于兰卡斯特大学,现为圣安德鲁斯大学软件工程学教授。他在软件工程的教学和科研方面有20多年的经验。他是IEEE CS组织编撰“软件工程知识体系”(SWEBOK)的专家委员会成员之一。他的研究领域包括计算机系统工程、需求工程、系统可靠性以及软件进化。 加作者照片加中文版小封面 ISBN 978-7-111-33498-9 定价:75.00元

图书目录

Preface v
Part 1 Introduction to Software Engineering 1
Chapter 1 Introduction 3
1.1 Professional software development 5
1.2 Software engineering ethics 14
1.3 Case studies 17
Chapter 2 Software processes 27
2.1 Software process models 29
2.2 Process activities 36
2.3 Coping with change 43
2.4 The rational unified process 50
Chapter 3 Agile software development 56
3.1 Agile methods 58
3.2 Plan-driven and agile development 62
3.3 Extreme programming 64
3.4 Agile project management 72
3.5 Scaling agile methods 74
Chapter 4 Requirements engineering 82
4.1 Functional and non-functional requirements 84
4.2 The software requirements document 91
4.3 Requirements specification 94
4.4 Requirements engineering processes 99
4.5 Requirements elicitation and analysis 100
4.6 Requirements validation 110
4.7 Requirements management 111
Chapter 5 System modeling 118
5.1 Context models 121
5.2 Interaction models 124
5.3 Structural models 129
5.4 Behavioral models 133
5.5 Model-driven engineering 138
Chapter 6 Architectural design 147
6.1 Architectural design decisions 151
6.2 Architectural views 153
6.3 Architectural patterns 155
6.4 Application architectures 164
Chapter 7 Design and implementation 176
7.1 Object-oriented design using the UML 178
7.2 Design patterns 189
7.3 Implementation issues 193
7.4 Open source development 198
Chapter 8 Software testing 205
8.1 Development testing 210
8.2 Test-driven development 221
8.3 Release testing 224
8.4 User testing 228
Chapter 9 Software evolution 234
9.1 Evolution processes 237
9.2 Program evolution dynamics 240
9.3 Software maintenance 242
9.4 Legacy system management 252
Part 2 Dependability and Security 261
Chapter 10 Sociotechnical systems 263
10.1 Complex systems 266
10.2 Systems engineering 273
10.3 System procurement 275
10.4 System development 278
10.5 System operation 281
Chapter 11 Dependability and security 289
11.1 Dependability properties 291
11.2 Availability and reliability 295
11.3 Safety 299
11.4 Security 302
Chapter 12 Dependability and security specification 309
12.1 Risk-driven requirements specification 311
12.2 Safety specification 313
12.3 Reliability specification 320
12.4 Security specification 329
12.5 Formal specification 333
Chapter 13 Dependability engineering 341
13.1 Redundancy and diversity 343
13.2 Dependable processes 345
13.3 Dependable system architectures 348
13.4 Dependable programming 355
Chapter 14 Security engineering 366
14.1 Security risk management 369
14.2 Design for security 375
14.3 System survivability 386
Chapter 15 Dependability and security assurance 393
15.1 Static analysis 395
15.2 Reliability testing 401
15.3 Security testing 404
15.4 Process assurance 406
15.5 Safety and dependability cases 410
Part 3 Advanced Software Engineering 423
Chapter 16 Software reuse 425
16.1 The reuse landscape 428
16.2 Application frameworks 431
16.3 Software product lines 434
16.4 COTS product reuse 440
Chapter 17 Component-based software engineering 452
17.1 Components and component models 455
17.2 CBSE processes 461
17.3 Component composition 468
Chapter 18 Distributed software engineering 479
18.1 Distributed systems issues 481
18.2 Client–server computing 488
18.3 Architectural patterns for distributed systems 490
18.4 Software as a service 501
Chapter 19 Service-oriented architecture 508
19.1 Services as reusable components 514
19.2 Service engineering 518
19.3 Software development with services 527
Chapter 20 Embedded software 537
20.1 Embedded systems design 540
20.2 Architectural patterns 547
20.3 Timing analysis 554
20.4 Real-time operating systems 558
Chapter 21 Aspect-oriented software engineering 565
21.1 The separation of concerns 567
21.2 Aspects, join points and pointcuts 571
21.3 Software engineering with aspects 576
Part 4 Software Management 591
Chapter 22 Project management 593
22.1 Risk management 595
22.2 Managing people 602
22.3 Teamwork 607
Chapter 23 Project planning 618
23.1 Software pricing 621
23.2 Plan-driven development 623
23.3 Project scheduling 626
23.4 Agile planning 631
23.5 Estimation techniques 633
Chapter 24 Quality management 651
24.1 Software quality 655
24.2 Software standards 657
24.3 Reviews and inspections 663
24.4 Software measurement and metrics 668
Chapter 25 Configuration management 681
25.1 Change management 685
25.2 Version management 690
25.3 System building 693
25.4 Release management 699
Chapter 26 Process improvement 705
26.1 The process improvement process 708
26.2 Process measurement 711
26.3 Process analysis 715
26.4 Process change 718
26.5 The CMMI process improvement framework 721
Glossary 733
Subject Index 749
Author Index 767

教学资源推荐
作者: (美)Stephen R.Schach 范德比尔特大学 著
作者: [美]保罗·阿曼(Paul Ammann);杰夫·奥法特(Jeff Offutt) 著
参考读物推荐
作者: Sami Zahran
作者: Edward Kit
作者: [美]Kim Caputo
作者: Michael Kircher, Prashant Jain