基本信息
- 作者: (英)伊恩·萨默维尔(Ian Sommerville)
- 译者: 彭鑫 赵文耘
- 丛书名: 计算机科学丛书
- 出版社:机械工业出版社
- ISBN:9787111589105
- 上架时间:2018-1-30
- 出版日期:2018 年2月
- 开本:16开
- 版次:10-1
- 所属分类:计算机 > 软件工程及软件方法学 > 软件方法/软件工程
教材

内容简介
作译者
目录
出版者的话
译者序
前言
第一部分 软件工程导论
第1章 概述 2
1.1 专业化软件开发 3
1.1.1 软件工程 5
1.1.2 软件工程的多样性 6
1.1.3 互联网软件工程 8
1.2 软件工程职业道德 9
1.3 案例研究 11
1.3.1 胰岛素泵控制系统 12
1.3.2 心理健康治疗病人信息系统 13
1.3.3 野外气象站 14
1.3.4 学校数字化学习环境 15
要点 16
阅读推荐 17
网站 17
练习 17
译者序
作为一本经典的软件工程教材,本书的内容非常全面。其中,第一部分覆盖了基本的软件开发生命周期,可以作为本科软件工程课程教学的基本内容。第二部分针对高可信软件系统对于可依赖性和信息安全的高要求,介绍了相应的软件工程方法和技术,体现了软件工程对于大规模复杂软件系统的质量保障作用。第三和第四部分则分别针对软件工程中的一些高级技术问题和开发管理问题进行了介绍。后三个部分的内容为面向高年级本科生和研究生的高级软件工程课程以及软件开发管理、软件可靠性工程等其他更深入的软件工程专业课程提供了教学内容。
难能可贵的是,本书每一次改版都能根据软件工程方法、技术及产业实践的最新发展更新并调整相关内容。本版在第9版的基础上,更新了关于敏捷软件工程的相关内容,增加了RESTful服务、系统之系统等反映软件开发技术和复杂系统发展趋势的新内容,重新组织了与高可信软件系统密切相关的多个章节,同时将面向方面的软件工程以及过程改进等不太重要的章节移到了网站上。
本书系统反映了工程化软件开发所具有的严谨性和规范性,但同时并不教条。例如,虽然系统性地介绍了UML建模方法,但在谈到UML在软件设计过程中的作用时,作者指出非正式的表示法在软件设计过程中可能更有用。因此,我们在学习本书所介绍的软件工程方法和规范的同时,也不要忘了与软件开发实践相结合,在做中学,在实践中领会。
本书主要由彭鑫、赵文耘翻译。参与本书翻译工作的还有复旦大学计算机科学技术学院研究生刘汶湅、周翔、姜清涛、陈驰、黄凯峰等。此外,机械工业出版社华章公司的朱劼、迟振春两位编辑还认真审校了译稿,在此一并表示感谢。
由于时间仓促以及译者自身知识和水平有限,译稿中难免存在错误和遗漏,在此向广大读者表示歉意,敬请批评指正!
前言
人类现在正面临着一系列迫切的挑战——气候变化和极端天气、自然资源的减少、需要为更多的人口提供食物和住房、国际恐怖主义的威胁,以及为老年人提供令人满意的生活。我们需要新技术来帮助我们应对这些挑战,可以肯定的是软件将在这些技术中扮演核心角色。因此,软件工程对于我们在这个星球上的未来极其重要。我们必须继续培养软件工程师并推动软件工程学科的持续发展,从而满足开发更多的软件系统以及创造我们所需要的越来越复杂的未来系统的需要。
当然,软件项目还存在很多问题。系统仍然有时会延迟交付并且成本超支。我们正在创造越来越复杂的软件系统之系统(software systems of systems),在这条道路上遇到各种困难也是不足为奇的。然而,我们不应该让这些问题掩盖软件工程领域已经取得的巨大成就,以及所形成的各种令人印象深刻的软件工程方法和技术。
本书的不同版本已经有超过30年的历史,而这一版同样遵循了本书第1版中所建立的基本原则:
1.按照工业界实践介绍软件工程,不对任何特定的方法(例如敏捷开发、形式化方法)持倾向性态度。在现实中,工业界往往将各种技术(例如敏捷以及基于计划的开发)混合在一起使用,这一点也在本书中有所反映。
2.根据我所知道的以及所理解的知识介绍软件工程。很多人建议我增加并详细介绍其他相关话题,例如开源软件开发、UML的使用以及移动软件工程等,但是我对这些领域的了解并不多,我个人的工作主要是在系统可靠性和系统工程方面,这一点在我为本书所选择的高级专题中有所反映。
我认为现代软件工程的关键问题是管理复杂性,将敏捷和其他方法结合起来,并确保我们的系统安全以及有韧性。这些问题是我在这一版中修改和新增内容的主要因素。
对第9版的修改
这一版相比第9版的更新和新增内容汇总如下:
全面更新了关于敏捷软件工程的章节,增加了关于Scrum的新内容。此外还根据需要对其他章节进行了更新,以反映敏捷方法在软件工程中日益增长的应用。
增加了关于韧性工程、系统工程、系统之系统的新章节。
对于涉及可靠性、安全、信息安全的3章进行了彻底的重新组织。
在第18章“面向服务的软件工程”中增加了关于RESTful服务的新内容。
更新和修改了关于配置管理的章节,增加了关于分布式版本控制系统的新内容。
将关于面向方面的软件工程以及过程改进的章节移到了本书的配套网站上。
在网站上新增了补充材料,包括一系列支持视频。我在视频中对于一些关键话题进行了解释,并且推荐了相关的YouTube视频。
这一版保留了此前版本中的四部分结构,但我对其中每个部分都进行了大量的修改。
1.在第一部分软件工程导论中,我彻底重写了第3章(敏捷方法)并对其进行了更新,以反映Scrum方法在实践中日益增长的使用。第1章增加了一个关于数字化学习环境的案例研究,这个案例在其他几个章节中也会用到。第9章更加详细地介绍了遗留系统。这一部分的其他章节也都进行了少量的修改和更新。
2.第二部分介绍系统可依赖性。这一部分进行了修改和重新组织,不再按照面向活动的方式进行组织,而是将安全、信息安全、可靠性分散在多个章节中。这使得相关内容(例如信息安全)可以更加方便地作为独立的专题在更加综合性的课程中使用。我增加了关于韧性工程的一章,其中涉及网络安全、组织韧性以及韧性系统设计。
3.第三部分增加了关于系统工程、系统之系统的新章节,并对与面向服务的系统工程相关的内容进行了全面修改,以反映RESTful服务的使用日益增长的趋势。与面向方面的软件工程相关的章节移到了本书的配套网站上。