内容简介
《软件工程(原书第10版)》是系统介绍软件工程理论的经典教材,共包含四个部分:第1部分(第1~9章)是对软件工程的一般性介绍,介绍了软件工程的一些重要概念(如软件过程和敏捷方法),描述了基本的软件开发活动(从需求规格说明一直到系统演化);第二部分(第10~14章)关注软件系统可依赖性和信息安全等重要话题;第三部分(第15~21章)介绍更高级的软件工程话题;第四部分(第22~25章)关注技术管理问题。
《软件工程(原书第10版)》适合作为软件和系统工程专业本科生或研究生教材,同时也是软件工程师难得的参考书。
作者简介
伊恩·萨默维尔(Ian Sommerville),英国著名软件工程专家,曾任圣安德鲁斯大学软件工程系教授。2014年退休。他在软件工程的教学和科研方面有40多年的经验。研究领域包括需求工程、大规模复杂系统和系统可靠性等。他撰写的软件工程教材畅销全球。销量超过75万册。
内页插图
目录
出版者的话
译者序
前言
第一部分 软件工程导论
第1章 概述
1.1 专业化软件开发
1.1.1 软件工程
1.1.2 软件工程的多样性
1.1.3 互联网软件工程
1.2 软件工程职业道德
1.3 案例研究
1.3.1 胰岛素泵控制系统
1.3.2 心理健康治疗病人信息系统
1.3.3 野外气象站
1.3.4 学校数字化学习环境
要点
阅读推荐
网站
练习
参考文献
第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.4 过程改进
要点
阅读推荐
网站
练习
参考文献
第3章 敏捷软件开发
3.1 敏捷方法
3.2 敏捷开发技术
3.2.1 用户故事
3.2.2 重构
3.2.3 测试先行的开发
3.2.4 结对编程
3.3 敏捷项目管理
3.4 敏捷方法的伸缩
3.4.1 敏捷方法的实践问题
3.4.2 敏捷和计划驱动的方法
3.4.3 面向大型系统的敏捷方法
3.4.4 面向整个组织的敏捷方法
要点
阅读推荐
网站
练习
参考文献
第4章 需求工程
4.1 功能性需求和非功能性需求
4.1.1 功能性需求
4.1.2 非功能性需求
4.2 需求工程过程
4.3 需求抽取
4.3.1 需求抽取技术
……
第5章 系统建模
第6章 体系结构设计
第7章 设计和实现
第8章 软件测试
第9章 软件演化
第二部分 系统可依赖性和信息安全
第10章 可依赖系统
第11章 可靠性工程
第12章 安全工程
第13章 信息安全工程
第14章 韧性工程
第三部分 高级软件工程
第15章 软件复用
第16章 基于构件的软件工具
第17章 分布式软件工程
第18章 面向服务的软件工程
第19章 系统工程
第20章 系统之系统
第21章 实时软件工程
第四部分 软件管理
第22章 项目管理
第23章 项目计划
第24章 质量管理
第25章 配置管理
术语表
前言/序言
软件工程在过去50年之中取得了令人瞩目的进展。我们的社会已经无法在缺少大型专业化软件系统的情况下正常运转了。国家的公用事业和基础设施(如能源、通信、交通)全都依赖于复杂且可靠的计算机系统。软件使得我们可以探索空间,创造万维网这一人类历史上最重要的信息系统。智能手机和平板电脑无处不在,而为这些设备开发软件的整个“应用开发产业”已经在过去几年中悄然形成。
人类现在正面临着一系列迫切的挑战——气候变化和极端天气、自然资源的减少、需要为更多的人口提供食物和住房、国际恐怖主义的威胁,以及为老年人提供令人满意的生活。我们需要新技术来帮助我们应对这些挑战,可以肯定的是软件将在这些技术中扮演核心角色。因此,软件工程对于我们在这个星球上的未来极其重要。我们必须继续培养软件工程师并推动软件工程学科的持续发展,从而满足开发更多的软件系统以及创造我们所需要的越来越复杂的未来系统的需要。
当然,软件项目还存在很多问题。系统仍然有时会延迟交付并且成本超支。我们正在创造越来越复杂的软件系统之系统(software systems of systems),在这条道路上遇到各种困难也是不足为奇的。然而,我们不应该让这些问题掩盖软件工程领域已经取得的巨大成就,以及所形成的各种令人印象深刻的软件工程方法和技术。
本书的不同版本已经有超过30年的历史,而这一版同样遵循了本书第1版中所建立的基本原则:
1.按照工业界实践介绍软件工程,不对任何特定的方法(例如敏捷开发、形式化方法)持倾向性态度。在现实中,工业界往往将各种技术(例如敏捷以及基于计划的开发)混合在一起使用,这一点也在本书中有所反映。
2.根据我所知道的以及所理解的知识介绍软件工程。很多人建议我增加并详细介绍其他相关话题,例如开源软件开发、UML的使用以及移动软件工程等,但是我对这些领域的了解并不多,我个人的工作主要是在系统可靠性和系统工程方面,这一点在我为本书所选择的高级专题中有所反映。
我认为现代软件工程的关键问题是管理复杂性,将敏捷和其他方法结合起来,并确保我们的系统安全以及有韧性。这些问题是我在这一版中修改和新增内容的主要因素。
软件工程(原书第10版) 下载 mobi epub pdf txt 电子书 格式