软件工程(原书第9版)
作者 : (英)Ian Sommerville 著
译者 : 程成 等译
丛书名 : 计算机科学丛书
出版日期 : 2011-04-14
ISBN : 978-7-111-33498-9
定价 : 75.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 480
开本 : 16
原书名 : Software Engineering, Ninth Edition
原出版社: Pearson Education Asia
属性分类: 教材
包含CD :
绝版 :
图书简介

本书主要内容包括软件工程概述、软件过程、敏捷软件开发、需求工程、系统建模、体系结构设计、 软件测试、 可依赖性和信息安全性、高级软件工程、软件管理等,是系统介绍软件工程理论的经典教材。

图书特色

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

前:
Ian Sommerville
英国著名软件工程专家,曾任教于兰卡斯特大学,现为圣安德鲁斯大学软件工程学教授。他在软件工程的教学和科研方面有20多年的经验。他是IEEE CS组织编撰“软件工程知识体系”(SWEBOK)的专家委员会成员之一。他的研究领域包括计算机系统工程、需求工程、系统可靠性以及软件进货。

后:
在计算机科学的同一领域往往都有比肩齐声的佳作,软件工程类综述性的巨著也有两本:第一本就是Roger Pressman所著的《软件工程:实践者的研究方法》,另一本就是Ian Sommerville所著的本书。 这两本名著都有多年历史(初版可追溯到20世纪80年代早期),对于软件工程学科的形成和发展起到了重要作用,尤其是在教育界和学术界影响极大。相比Pressman的书,Sommerville的这本教材将全部内容划分为四个部分,每个部分可以单独使用或者是结合其他部分作为软件工程课程的基本内容,更加适合不同类型软件工程课程的教学需求,叙述也更趋清晰和简明。
——摘自业界专业人士的推荐

这本软件工程的经典教材不仅展现了软件工程的广阔视野,还着重阐述了在开发大型系统中一些广泛采用的技术,并辅以大量的例子和图解。作者将所有的话题控制在适度的篇幅,用简练到位的文字把最重要的内容呈现给读者,并提供进一步阅读资料,供有兴趣的读者深入学习,使得本书更符合国内软件工程课程的教学需求。书中没有学院派布道式的说教,作者认为并不存在解决软件工程问题的灵丹妙药,而是强调读者需要学习和掌握更广泛的技术和工具以解决软件工程问题。从内容选材上,本书不落俗套,大胆舍弃了传统的软件工程内容和一些繁琐的软件工程理论,代之以简洁实用的软件工程新知识、新方法,增加了教材的实用性和可读性;从专题安排上,本书避虚就实,没有对软件工程技术泛泛而谈,而是针对那些大型系统开发技术进行分析,避免对个别产品中的技术进行过多阐述。
——刘艺,《计算机英语》作者

图书前言

2009年夏,当我写本书最后一章的时候,软件工程正好有40年的历史了。“软件工程”这个名字是在1969年的NATO大会上讨论软件开发问题时提出来的。所讨论的开发问题是,大型软件系统总是延期,不能交付用户期待的功能,成本超出预期,软件不可靠。本人并没有参加那次会议,但是一年之后,我写了我的第一个程序并开始了我的软件职业生涯。
  在我的整个职业生涯中软件工程的进展是不同凡响的。我们的社会如果没有大型专业软件系统就根本不能运转。对于构建业务系统,这里有一串技术习语,J2EE、.NET、 SaaS、SAP、BPEL4WS、SOAP、CBSE等,它们支持大型企业应用的开发和部署。国家公用事业和基础设施(能源、通信以及运输)都依赖于复杂而可靠的计算机系统。软件让我们能够探索空间,创建万维网这个人类历史上最为强大的信息系统。人类正面临着新的挑战——气候变化和极端天气,自然资源的减少,需要为更多的人口提供食物和住房,国际恐怖主义的威胁,还有需要为老年人提供更加满意的生活。我们需要新技术来帮助我们解决这些问题。而且可以肯定,软件将在这些技术中扮演核心角色。
  因此,软件工程是人类未来十分重要的技术。我们必须不断地教育软件工程师和发展这门学科,使我们能构造出更加复杂的软件系统。当然,现在我们的软件项目还有很多问题,软件仍然在延期,成本超过预算。但是,我们不应该让这些问题遮挡住视线,应该看到在软件工程上取得的真正的成功,应该看到我们已经研究出了了不起的软件工程方法和技术。
  软件工程现在是一个非常大的领域,任何一本书都不可能覆盖它的所有主题。因此,我的重点放在对所有开发过程都很基础的重要主题上,以及放在关于开发可靠的分布式系统的一些主题上。对敏捷方法和软件复用给予了更多的关注。 我坚信敏捷方法会有它们的位置,但是“传统”的计划驱动软件工程也肯定不会消失。我们需要将这些方法中的最好的东西结合起来以构建更好的软件系统。
  任何一本书都不可避免地反映作者的观点和倾向。肯定会有某些读者不赞成我的观点和我所选择的材料。这种不同意见是学科多样性的一种健康反映,对学科的演化也是很有好处的。尽管如此,我还是希望所有的软件工程师和学习软件工程的学生能从本书中发现自己感兴趣的东西。
与Web 的整合
  在Web上关于软件工程有非常大量的信息可用,因此很多人会问是否有必要写这样一本教科书。然而,网络上的可用信息是很不完整的,质量也是参差不齐的,有的信息呈现的形式很差,很难找到你想要的内容。  所以,我相信教科书在学习上仍然有不可替代的作用。它们会像路标一样指引你奔向主题,可以将方法和技术的内容很好地组织在一起方便你阅读。它们也会为你提供一个深入探索研究文献和网上可用信息的起点。
  我坚信,只有当教科书与网络上的材料结合在一起并能为众多可用信息增加价值的时候,它们才是有前途的。本书因而设计成混合的“印刷/Web”这样的文本形式。核心信息用印刷版本,教辅材料放在Web上。几乎所有的章都包含特别的“Web小节”,成为该章内容的补充。另外还有4个“Web章”,这4章内容没有在本书印刷版中出现。
与本书相关的Web站点是:
    http://wwwSoftwareEngineering9com
  本书的网站有4个主要部分:
  1. Web 小节(Web sections)一些额外的小节,是为每一章所添加的部分内容。这些Web小节是通过每章当中用方框括起的内容指引的。
  2. Web 章(Web chapters)这4个Web章覆盖了形式化方法、交互设计、文档化以及应用体系结构。今后,我会在本书的升级版本中添加其他新的主题到“Web章”中。
  3. 教师材料此部分的材料是为那些讲授软件工程课程的教师准备的。参见前言后面的“支持材料”。
  4. 案例研究提供关于本书中使用的案例研究的附加信息(胰岛素泵、心理健康护理系统、野外气象站系统),也包括另外更深入的案例信息,如阿丽亚娜5号火箭发射失败。
  除此之外,本书还有到其他网站的链接,包括关于软件工程、进一步阅读、博客以及通讯简报等有价值材料的网站。
  我很欢迎读者提出关于本书及其网站的建设性意见和建议。读者可以通过ian@SoftwareEngineering9com 与我联系。请在主题中注明[SE9]字样,否则,我的邮件过滤器会拒绝你的邮件因而得不到我的回信。我本人没有时间帮助学生解答他们的课后作业,所以请不要问类似问题。
读者对象
  本书主要面向各大学和学院正在学习软件和系统工程的初高级课程的学生。工业界的软件工程师也会发现它是一本很好的读物,能帮助他们更新在软件复用、体系结构设计、可依赖性和信息安全性以及过程改善等方面的知识。我假设读者都完成了初级的编程课程学习并了解编程方面的术语。
对先前版本的变更
  这一版保留了上一版中的软件工程的基本材料,但是我还是修改和更新了所有章的内容,并增加了很多有关其他主题的新材料。其中最重大的改变有:
  1. 从单纯的印刷版转变到混合的“印刷/Web”版,将Web材料与印刷材料紧密结合在一起。这就允许我减少本书章的数量,且能更加专注于每一章的核心内容。
  2. 结构变化很大使得教师讲授软件工程课程会更加容易。本书现在有4个部分而不是8个部分,每个部分可以单独使用或者是结合其他部分作为软件工程课程的基本内容。这4个部分分别是软件工程导论、可依赖性和信息安全性、高级软件工程和软件管理。
  3. 将来自先前版本的多个主题压缩到一章中阐述,并与其他材料一起放在Web上。
  4. 额外的Web章,那些出现在先前版本中而没有包含在本书中的各章,现在都放在Web上了。
  5. 更新和修改了每一章。我估计有30%~40%的内容都经过全面彻底的重写。
  6. 增加了关于敏捷软件开发和嵌入式系统的一些章。
  7. 除了这些新的章节外,在以下方面也增添了新的内容:模型驱动工程、开源开发、测试驱动开发、  Reason的瑞士乳酪模型、可依赖系统体系结构、静态分析和模型检测、COTS复用、作为服务的软件以及敏捷规划。
  8. 关于病人记录系统的新案例研究,是在很多章中都会用到的关于接受心理健康问题治疗的病人的信息系统。
用作教学
  针对3种不同类型的软件工程课程,我对本书进行了如下设计:
  1. 软件工程一般性介绍课程本书第一部分就是设计来明确支持一个学期的介绍软件工程基本内容的课程。
  2. 特别软件工程主题的介绍课程或过渡课程通过使用第二~四部分的内容,可以创建一系列更高级课程。例如,我采用第二部分的各章加上关于质量管理和配置管理的两章讲授要求极高的系统工程课程。
  3. 关于特别软件工程主题的更高级的课程在此情况下,本书的各章可以构成课程的基础,然后辅之以更多的阅读以便进一步探索某个主题。例如,关于软件复用的课程就可以基于第16~19章的内容。
支持材料
  本书带有大量支持材料帮助教师采用此书作为软件工程教材授课。这些材料包括:
  ● 本书所有章的幻灯片。
  ● 幻灯片中的图和表。
  ● 教师指导,包括一些关于如何在不同的课程中利用本书的建议,并解释了在此版和先前版本中各个章之间的关系。
  ● 关于书中案例研究的进一步资料。
  ● 会在软件工程课程中用到的其他案例研究。
  ● 有关系统工程的其他幻灯片。
  ● 4个Web章,涵盖了形式化方法、交互设计、应用体系结构以及文档化。
  ● 部分章后练习的答案。
  所有上述材料都是免费提供给本书读者的,可以从本书的网站wwwhzbookcom下载。
致谢
  在过去的几年时间里有很多人对本书的改进做出了贡献,我想在此感谢所有的人(审阅人、学生、读者),他们对本书先前版本给出了很多评论,对本书的更新给出了建设性的意见。
  特别要感谢我的家人(Anne、Ali和Jane),没有她们的帮助和支持,我是不可能完成本书的写作的。尤其是我的女儿Jane,我要特别谢谢她。她利用自己校对和编辑方面的天赋,在通读全书的过程中给了我巨大的帮助,帮助我发现和校正了大量的拼写错误和语法错误。

Ian Sommerville
2009年10月

上架指导

计算机\软件工程

封底文字

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

译者简介

程成 等译:暂无简介

译者序

又一轮榈庭落叶,兰畦浮香,银蟾新满,我们再次拿出了本书的中文译稿。此时的心情轻松愉悦。往日的辛劳没有让我们感到任何痛苦,近800页原著的每一页犹如一杯杯醇香咖啡,令人回味悠长。自从本书第6版中文译著由我们翻译出版以来,一直得到众多读者的帮助和厚爱,所以对这次第9版的翻译我们更加珍惜,倍加努力。如果要问我们的感想,那就是通过此书对社会尽一点绵薄之力,让同胞一同分享该书的快乐了。
  本书是一部阐述软件工程理论和技术的著作,几乎涵盖了软件工程的所有方面,同时,就像本书作者所声明的那样,由于作者对需求分析和实时系统的特殊偏好,使得本书极具特点。本书的第一个特点是,通篇阐述主要以要求极高的一类系统为实例,使得本书的理论和方法阐述非常容易理解。同时,译者认为,由于要求极高的一类系统具有一般软件系统的几乎所有特性,而且具备一般软件不必要的很多特征,因此,掌握本书精髓,对于一般软件系统的研究和开发无疑会深得要领且更加得心应手。本书的第二个特点是形式化描述内容较多,这一方面与要求极高的一类系统设计有关,另一方面也多少反映出一些欧洲学者的研究之风。作者将形式化描述结合具体应用实例阐述得深入浅出,是我们学习和掌握该方法的极好教材。本书的第三个特点就是关于软件进化理论和方法的系统介绍。译者也读过其他的一些著作,但比较起来在软件进化理论和方法的阐述上本书当属最透彻的一本了。有过软件进化相关工程经历的人经常会有困惑之处,本书在这方面的高屋建瓴般的阐述无疑将对同行们起到答疑解惑的作用。本书的第四个特点是,通过对本书第8版的改造,从多个角度集中介绍了在快速软件开发等方面的技术,以反映当前软件领域的最新动向。以上这些只是我们的一点粗浅认识,相信读过本书之后,读者会有更多更深的领悟。不过本书内容之系统翔实,阐述之精辟透彻,引文和材料之丰富,确实让我们叹为观止。
  本书主要由程成翻译。参与本书翻译和审校等相关工作的还有北京理工大学计算机学院的研究生蔡雪琴、董雪梅、姜儒、刘晓峰、周小飞、马鹏飞、高彦明、邵霞、刘佳,在此对他们的工作热情和认真态度以及对本书翻译的大力帮助表示感谢。
  鉴于译者自身的知识局限及时间仓促,译稿中难免有错误和遗漏之处,谨向原书作者表示歉意,并欢迎广大读者批评指正。

程成
北京理工大学

图书目录

出版者的话
译者序
前言
第一部分软件工程导论
第1章概述
11专业化软件开发
111软件工程
112软件工程的多样性
113软件工程和Web
12软件工程人员的职业道德
13案例研究
131胰岛素泵控制系统
132用于心理健康治疗的患者信息系统
133野外气象站
要点
进一步阅读材料
练习
参考书目
第2章软件过程
21软件过程模型
211瀑布模型
212增量式开发
213面向复用的软件工程
22过程活动
221软件描述
222软件设计和实现
223软件有效性验证
224软件进化
23应对变更
231原型构造
232增量式交付
233Boehm的螺旋模型
24Rational统一过程
要点
进一步阅读材料
练习
参考书目
第3章敏捷软件开发
31敏捷方法
32计划驱动开发和敏捷开发
33极限编程
331极限编程中的测试
332结对编程
34敏捷项目管理
35可扩展的敏捷方法
要点
进一步阅读材料
练习
参考书目
第4章需求工程
41功能需求和非功能需求
411功能需求
412非功能需求
42软件需求文档
43需求描述
431自然语言描述
432结构化描述
44需求工程过程
45需求导出和分析
451需求发现
452采访
453脚本 
454用例
455深入实际
46需求有效性验证
47需求管理
471需求管理规划
472需求变更管理
要点
进一步阅读材料
练习
参考书目
第5章系统建模
51上下文模型
52交互模型
521用例建模
522时序图
53结构模型
531类图
532泛化
533聚合
54行为模型
541数据驱动的建模
542事件驱动模型
55模型驱动工程
551模型驱动体系结构
552可执行UML
要点
进一步阅读材料
练习
参考书目
第6章体系结构设计
61体系结构设计决策
62体系结构视图
63体系结构模式
631分层体系结构
632容器体系结构
633客户机-服务器体系结构
634管道和过滤器体系结构
64应用体系结构
641事务处理系统
642信息系统
643语言处理系统
要点
进一步阅读材料
练习
参考书目
第7章设计与实现
71利用UML进行面向对象设计
711系统上下文与交互
712体系结构的设计
713对象类识别
714设计模型
715接口描述
72设计模式
73实现问题
731复用
732配置管理
733宿主机-目标机开发
74开源开发
要点
进一步阅读材料
练习
参考书目
第8章软件测试
81开发测试
811单元测试
812选择单元测试案例
813组件测试
814系统测试
82测试驱动开发
83发布测试
831基于需求的测试
832情景测试
833性能测试
84用户测试
要点
进一步阅读材料
练习
参考书目
第9章软件进化
91进化过程
92程序进化的动态特性
93软件维护
931维护预测
932软件再工程
933通过重构进行预防性维护
94遗留系统管理
要点
进一步阅读材料
练习
参考书目
第二部分可依赖性和信息安全性
第10章社会技术系统
101复杂系统
1011系统总体特性
1012系统非确定性
1013成功标准
102系统工程
103系统采购
104系统开发
105系统运行
1051人为错误
1052系统进化
要点
进一步阅读材料
练习
参考书目
第11章可依赖性与信息安全性
111可依赖性特征
112可用性和可靠性
113安全性
114信息安全性
要点
进一步阅读材料
练习
参考书目
第12章可依赖性与信息安全性描述
121风险驱动的需求描述
122安全性描述
1221危险识别
1222危险评估
1223危险分析
1224风险降低
123可靠性描述
1231可靠性度量
1232非功能性的可靠性需求
1233功能可靠性描述
124信息安全性描述
125形式化描述
要点
进一步阅读材料
练习
参考书目
第13章可依赖性工程
131冗余性和多样性
132可依赖的过程
133可依赖的系统体系结构
1331保护性系统
1332自监控系统体系结构
1333N-版本编程
1334软件多样性
134可依赖的编程
要点
进一步阅读材料
练习
参考书目
第14章信息安全工程
141信息安全风险管理
1411生存期风险评估
1412运行风险评估
142面向信息安全的设计
1421体系结构设计
1422设计准则
1423部署设计
143系统生存能力
要点
进一步阅读材料
练习
参考书目
第15章可依赖性与信息安全保证
151静态分析 
1511检验和形式化方法
1512模型检测
1513自动静态分析
152可靠性测试
153信息安全性测试
154过程保证
155安全性和可依赖性案例
1551结构化论证
1552结构化的安全性论证
要点
进一步阅读材料
练习
参考书目
第三部分高级软件工程
第16章软件复用
161复用概览
162应用框架
163软件产品线
164COTS产品的复用
1641COTS解决方案系统
1642COTS集成系统
要点
进一步阅读材料
练习
参考书目
第17章基于组件的软件工程
171组件和组件模型
172CBSE过程
1721面向复用的CBSE
1722基于复用的CBSE
173组件合成
要点
进一步阅读材料
练习
参考书目
第18章分布式软件工程
181分布式系统的问题
1811交互模型
1812中间件
182客户机-服务器计算
183分布式系统的体系结构模式
1831主从体系结构
1832两层客户机-服务器结构
1833多层客户机-服务器结构
1834分布式组件体系结构
1835对等体系结构
184软件作为服务
要点
进一步阅读材料
练习
参考书目
第19章面向服务的体系结构
191服务作为可复用的组件
192服务工程
1921可选服务的识别
1922服务接口设计
1923服务实现和部署
1924遗留系统服务
193使用服务的软件开发
1931工作流设计和实现
1932服务测试
要点
进一步阅读材料
练习
参考书目
第20章嵌入式软件
201嵌入式系统设计
2011实时系统建模
2012实时编程
202体系结构模式
2021观察和反应
2022环境控制
2023处理管道
203时序分析
204实时操作系统
要点
进一步阅读材料
练习
参考书目
第21章面向方面的软件工程
211关注点分离
212方面、连接点和切入点
213采用方面的软件工程
2131面向关注点的需求工程
2132面向方面的设计和编程
2133检验和有效性验证
要点
进一步阅读材料
练习
参考书目
第四部分软 件 管 理
第22章项目管理
221风险管理
2211风险识别
2212风险分析
2213风险规划
2214风险监控
222人员管理
223团队协作
2231成员挑选
2232小组的结构
2233小组的沟通
要点
进一步阅读材料 
练习
参考书目
第23章项目规划
231软件报价
232计划驱动的开发
2321项目计划
2322规划过程
233项目进度安排
234敏捷规划
235估算技术
2351算法成本建模
2352COCOMO Ⅱ模型
2353项目的工期和人员配备
要点
进一步阅读材料
练习
参考书目
第24章质量管理
241软件质量
242软件标准
243复查与审查
2431复查过程
2432程序审查
244软件度量和量度
2441产品量度
2442软件组件分析
2443度量歧义
要点
进一步阅读材料
练习
参考书目
第25章配置管理
251变更管理
252版本管理
253系统构建
254发布版本管理
要点
进一步阅读材料
练习
参考书目
第26章过程改善
261过程改善过程
262过程度量
263过程分析
264过程变更
265CMMI过程改善框架
2651分阶段的CMMI模型
2652连续CMMI模型
要点
进一步阅读材料
练习
参考书目
术语表

教学资源推荐
作者: 毋国庆
作者: 韩万江 姜立新 编著 宋茂强 审
作者: (美)Jim Gray, Andreas Reute
作者: 聂长海 陆超逸 高维忠 郑志强 编著
参考读物推荐
作者: Ashok Iyengar, Vinod Jessani, Michele Chilanti
作者: (澳)Larry L.Constantine 著
作者: Scott W. Ambler, Larry L. Constantine
作者: (以)Daniel Galin