软件工程(英文版.第9版)(系统介绍软件工程理论的经典教材)
基本信息
- 作者: (英)Ian Sommerville
- 丛书名: 经典原版书库
- 出版社:机械工业出版社
- ISBN:9787111348252
- 上架时间:2011-6-22
- 出版日期:2011 年6月
- 开本:16开
- 页码:773
- 版次:9-1
- 所属分类:
计算机 > 软件工程及软件方法学 > 软件方法/软件工程
推荐阅读
内容简介回到顶部↑
书籍
计算机书籍
《软件工程(英文版.第9版)》是系统介绍软件工程理论的经典教材,自1982年初版以来,随着软件工程学科的发展不断更新,影响了一代又一代软件工程人才,对学科本身也产生了积极影响。全书共四个部分,完整讨论了软件工程各个阶段的内容,是软件工程和系统工程专业本科生和研究生的优秀教材,也是软件工程师必备的参考书籍。
本书特点
·涵盖了对所有开发过程都很基础的重要主题,包括软件工程理论与实践的最新进展。
·将第8版中的八篇内容重构为四个部分,使教师讲授软件工程课程更加容易。
·每一章都有30%~40%的更新,增加了敏捷软件开发和嵌入式系统等新章,补充了模型驱动工程、开源开发、测试驱动开发、可依赖系统体系结构、静态分析和模型检查、cots复用、服务作为软件以及敏捷规划等新内容。
·着重讨论了开发可靠的分布式系统的相关主题以及敏捷方法和软件复用。
·反映敏捷方法先进性的同时,不忘强调传统的计划驱动软件工程的作用,阐述了两者结合构建优秀软件系统的重要性。
·以一个新的病人记录系统案例研究贯穿始终,系统、完整地讲解软件工程的各个方面。
·设计为“印刷/web”相结合的方式,核心信息采用印刷版本,教辅材料及先前版本中的一些章节放在web上,为读者提供丰富翔实的信息。
计算机书籍
《软件工程(英文版.第9版)》是系统介绍软件工程理论的经典教材,自1982年初版以来,随着软件工程学科的发展不断更新,影响了一代又一代软件工程人才,对学科本身也产生了积极影响。全书共四个部分,完整讨论了软件工程各个阶段的内容,是软件工程和系统工程专业本科生和研究生的优秀教材,也是软件工程师必备的参考书籍。
本书特点
·涵盖了对所有开发过程都很基础的重要主题,包括软件工程理论与实践的最新进展。
·将第8版中的八篇内容重构为四个部分,使教师讲授软件工程课程更加容易。
·每一章都有30%~40%的更新,增加了敏捷软件开发和嵌入式系统等新章,补充了模型驱动工程、开源开发、测试驱动开发、可依赖系统体系结构、静态分析和模型检查、cots复用、服务作为软件以及敏捷规划等新内容。
·着重讨论了开发可靠的分布式系统的相关主题以及敏捷方法和软件复用。
·反映敏捷方法先进性的同时,不忘强调传统的计划驱动软件工程的作用,阐述了两者结合构建优秀软件系统的重要性。
·以一个新的病人记录系统案例研究贯穿始终,系统、完整地讲解软件工程的各个方面。
·设计为“印刷/web”相结合的方式,核心信息采用印刷版本,教辅材料及先前版本中的一些章节放在web上,为读者提供丰富翔实的信息。
作译者回到顶部↑
目录回到顶部↑
《软件工程(英文版.第9版)》
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
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
前言回到顶部↑
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
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
【插图】







点击看大图


加载中...

