软件工程(原书第6版)
作者 : Ian Sommerville
译者 : 程成 陈霞 等
丛书名 : 计算机科学丛书
出版日期 : 2003-02-24
ISBN : 7-111-11118-4
定价 : 49.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 486
开本 : 16开
原书名 : Software Engineering
原出版社: Addison-Wesley
属性分类: 教材
包含CD :
绝版 :
图书简介

本书是英国著名软件工程学家Ian Sommerville系统介绍软件工程理论的力作,以要求极高的一类系统为实例,精辟透彻地阐述了软件工程的内涵。作者在第2篇中详细阐述了软件系统需求的内容、过程和描述方法,尤其是对形式化描述有详细的介绍和分析;在第3篇中针对主要类型系统的设计问题和重要的设计方法展开介绍,主要介绍了分布式系统设计、实时系统设计和用户界面设计,同时从体系结构、面向对象以及复用等视角对设计过程进行了精辟阐述;在第4篇和第5篇中,主要以实时系统为对象,介绍了系统的一系列重要特性及其度量方法,以及生命周期中包含的软件工程过程(如验证和测试等)内容和方法,内容翔实而透彻。在第7篇中作者对遗留系统处理和软件进化理论给出了高屋建瓴的分析,对软件改造的实践者来说无疑是一盏指路明灯;除此之外,作者还在第1篇和第6篇中对软件工程过程的诸多管理方面(如人员管理、项目管理、过程管理、成本估计和质量管理等重要方面)有极为详细的介绍和分析。
  本书是软件工程学界的经典,被众多世界知名大学所采用,既有理论高度又有具体操作方法,对于软件工程的管理者和参与者来说都是不能不看的好教材。
  该书英文原版设有专门的网站 ( http://www.software-engin.com/),提供了对该书相关资料的链接,以帮助那些将该书用于教学和自修的人们。主要包括教师参考手册、幻灯片、书中程序实例源代码以及CASE和形式化描述的额外材料。

图书特色

作者简介:  
   Ian Sommerville英国著名软件工程专家,兰卡斯特大学软件工程学教授。Iam Sommerville教授在软件工程的教学和科研方面有20多年经验。目前他的研究兴趣包括计算机系统工程、需求工程、系统可靠性以及软件进化。

图书前言

软件系统现在已经变得无处不在。事实上,几乎所有的电气设备都内含某种软件,软件已被广泛用于制造业、学校和大学、保健、财政和政府部门,还有许多人使用不同类型的娱乐和教育软件。而所有这些软件系统的描述、开发、管理和进化构成了软件工程的基本内容。
  即使是最简单的软件系统也有其固有的复杂性,因此,必须在软件开发中使用工程原则。软件工程是这样一个工程学科,即软件工程师用计算机科学中的方法和理论,在考虑成本效益的情况下,将其用于解决软件开发中的复杂问题,这些复杂问题的存在意味着许多软件开发项目的进行并不总是成功的。然而,绝大多数的现代软件能为用户提供好的服务,我们不应该让某些失败遮挡了过去30年中软件工程师们的巨大成功。
  软件工程在为国防、政府和工业部门开发大型的、定制的软件系统中得到了发展。我们现在所开发的软件较以前具有更广的范围,从专门游戏设备上的游戏软件、个人计算机上运行的软件和基于Web的网络系统再到大规模的分布式系统。虽然有些技术是从定制系统开发中发展出来的,例如:面向对象的开发方法,但这些技术也同样是普遍适用的,新的软件工程技术正渗透到各种不同类型的软件开发过程当中。在这本书中不可能概括所有技术,因此,本书只针对那些大型系统开发技术进行分析,而不对个别产品中的技术进行过多阐述。
  虽然本书是对软件工程的介绍,但由于作者对软件需求工程和要求极高的一类系统具有浓厚的兴趣,因此,本书对这两个方面有较大的侧重。在21世纪,我们面对的挑战是在确保软件能满足用户需要的同时不会对用户及其周围环境造成伤害。作者认为这些对于软件工程来说是至关重要的。
  本书是要将软件工程全方位地展现给读者,而不是介绍某种特别的方法或具体的工具。作者不赞同对学院派的布道式的形式化方法的过分热衷,也不赞同对兜售的任何声称能解决软件开发问题的工具或方法的迷信。事实上,并不存在解决软件工程问题的灵丹妙药,我们需要的是广泛的技术和工具以解决软件工程问题。
  每本书都不可避免地反映作者的个人观点甚至是偏见。可能有些读者与我观点相左,对我书中选择的材料不满意。存在不同意见是非常正常的,对软件工程的发展也是有益的。尽管如此,我还是期待所有的软件工程师和软件工程的学生能从本书中找到自己感兴趣的东西。对第5版的修改像许多软件系统一样,本书自1982年第1版问世以来进行了多次的修改和完善。对第5版的一个修改目标是要减少本书的字数,这对我来说是一件非常困难的选择,我必须在压缩字数的同时保留书中那些重要的内容,同时还要添加一些重要的新素材。结果是第6版较第5版的字数缩减了10%。其中主要的改动如下:
  由前一版的8大部分改为7大部分,包含软件工程介绍、描述、设计、要求极高的系统开发、校验和有效注验证、管理和软件进化。
  增加了有关软件过程、分布式系统体系结构、可靠性和遗留系统等几章。形式化描述部分缩减成一章,同时将CASE的有关材料进行了适当缩减并分散在不同的章节中介绍。
  功能设计的介绍放在遗留系统那一章。校验和有效性验证合并成一章。对所有的章节都进行了修改,对部分章节进行了全面的改写。对复用的研究集中在基于复用的开发、基于模式信息的开发以及基于组件的开发;面向对象的设计已经不仅仅局限为过程的焦点;有关需求的那部分章节分成需求和需求工程过程两大部分。成本估计已更新为COCOMO 2。
  概览篇包括4章。原先分散在第5版中的介绍材料全在这一篇介绍。第1章完全改写成有关软件工程的常见问题。
  有关要求极高的系统的内容被重新组织和整理以便对可靠性、安全性和可用性进行集中的阐述。将保密性作为要求极高的一类系统的一个属性进行了相应的阐述。
  书中的程序用Java书写,对象模型全部用UML来描述。Ada和C++的程序实例已经被删除,但仍可以从作者的网站上得到。
  每章中有关进一步阅读部分进行了适当的改动,然而,在某些情况下,作者在20世纪80年代写的一系列文章现在看来仍然是相关主题的最佳介绍。
  读者对象
  本书适合作为在校本科生和研究生的教科书及软件工程师的参考书,也可以作为通用软件工程课程或高级程序设计、软件描述、软件设计或软件管理课程的教科书。软件从业者同样可以将其作为一般阅读材料来充实自己在某一方面的知识,如:需求工程学、体系结构设计、可靠的系统开发和过程改善等专题。不管用于哪些方面,本书都针对软件工程师必须掌握的不同应用类型给出了相应的实例。
  本书的读者应当熟悉程序设计、现代计算机系统知识和基本数据结构,如堆栈、列表和队列等基本知识。
  用本书作为教材
  有三种主要类型的软件工程课程可以用本书作为教材:
  1.对软件工程的一般性介绍对在此之前没有任何软件工程经验的学生,可以从第1篇开始,对后续章节可以大胆取舍,以合适为原则。这将会给所有学生一个总体介绍,同时给那些有浓厚兴趣的学生进一步阅读创造了条件。
  2.对软件工程的某些专题的介绍可以作为软件需求描述、软件设计、软件工程管理、可靠的系统开发和软件进化专题的教材。书中每个专题部分都可以根据需要作为该专题的一般性教材。另外还介绍了一些附加的阅读材料。
  3.对软件工程一些专题的进一步阅读对软件工程的各种专题,本书中的相应部分是其进一步学习的基础,其他一些进一步的阅读资料将会更详细地探讨。每章都给出进一步的阅读的书目,另外,在作者的网站上还可以看到另外一些附加的阅读书目。
  本书内容全面,可作为多种相关专题课程的教材。在兰卡斯特,我们用这本书作为软件工程概论、系统描述、系统设计、要求极高的系统分析以及软件管理等课程的补充教材。通过阅读本书,学生们可以获得对这个学科的全面认识。他们喜欢这样覆盖面广的书,因为一书在手,就不用再花钱另购其他书了。
  本书覆盖了ACM/IEEE 2001文档中规划的有关计算机科学中软件工程方面的全部内容,同时也与2000年或2001年出版的IEEE/ACM软件工程知识体系纲要规定的内容相一致。
  相关Web站点
  作者的网址是http://www.software-engin.com,在这里可以查到本书作为教材所需用到的相关材料。下面这些补充材料可以通过直接下载得到:
  教师指南,包括教学提示、学期和课程安排、案例研究和实例分析以及练习的答案,并以Adobe PDF格式提供。
  为每章安排了一组幻灯片,以Adobe PDF格式和微软的PowerPoint格式提供,教师可以根据自己的偏好进行任意取舍。
  用Java语言编写的程序实例代码,包括编译所需的其他代码。
  一些先前版本中有关代数描述、Z方法、面向功能的设计,第5版中的Ada和C++例子也可以得到。
  这个站点还能链接到有关系统工程的文章和幻灯片上,也能链接到其他的软件工程的主页上,以进一步查询其他的书目。
  我总是非常高兴接受对本书的反馈意见,读者可以用电子邮件(地址:ian@software-en-gin.com)与我联系。然而,我很遗憾地说我没有时间来答复每个人在课后作业中的问题。
  Ian Sommerville
  2000年2月于Lanecaster


作者简介

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

译者简介

程成 陈霞 等:暂无简介

图书目录

第1篇概览

第1章 概述

1.l 软件工程中的常见问题
1.1.l 什么是软件
1.1.2 什么是软件工程
1.l.3 软件工程和计算机科学有何区别
1.l.4 软件工程和系统工程有何区别
1.1.5 什么是软件过程
1.1.6 什么是软件过程模型
1.1.7 什么是软件工程的成本
1.1.8 什么是软件工程方法
1.1.9 什么是 CASE
1.1.10 什么是优良软件的属性
1.1.11 软件工程所面临的主要问题是什么
1.2 职业和道德上的责任
要点
进一步的阅读资料
练习

第2章 基于计算机的系统工程

2.l 系统总体特性
2.2 系统及其环境
2.3 系统建模
2.4 系统工程过程
2.4.l 系统需求定义
2.4.2 系统设计
2.4.3 子系统开发
2.4.4 系统整合
2.4.5 系统安装
2.4.6 系统操作
2.4.7 系统进化
2.4.8 系统退役
2.5 系统获得
要点
进一步阅读资料
练习

第3章 软件过程

3.l 软件过程模型
3.1.l "瀑布"模型
3. l.2 进化式开发
3.1.3 形式化系统开发
3.1.4 面向复用的开发
3.2 过程反复
3.2.l 增量式开发
3.2.2 螺旋式开发
3.3 软件描述
3.4 软件设计和实现
3.4.l 设计方法
3.4.2 程序设计和调试
3.5 软件有效性验证
3.6 软件进化
3.7 自动化的过程支持
要点
进一步的阅读资料
练习

第4章 项目管理

4.l 管理活动
4.2 项目规划
4.2.l 项目计划
4.2.2 项目里程碑和可交付的文档
4.3 项目进度
4.4 风险管理
4.4.l 风险识别
4.4. 2 风险分析
4.4.3 风险规划
4.4.4 风险监控
要点
进一步的阅读资料
练习

第2篇需求

第5章 软件需求

5.l 功能需求和非功能需求
5.1.l 功能需求
5.l.2 非功能需求
5.1.3 领域需求
5.2 用户需求
5.3 系统需求
5.3.l 结构化语言描述
5.3.2 使用PDL的需求描述
5.3.3 接口描述
5.4 软件需求文档
要点
进一步的阅读资料
练习

第6章 需求工程过程

6.l 可行性研究
6.2 需求导出和分析
6.2.l 面向视点的导出
6.2.2 场景
6.2.3 深入实际
6.3 需求有效性验证
6.4 需求管理
6.4.l 持久的和易变的需求
6.4.2 需求管理规划
6.4.3 需求变更管理
要点
进一步的阅读资料
练习

第7章 系统模型

7.l 上下文模型
7.2 行为模型
7.2.l 数据流模型
7.2.2 状态机模型
7.3 数据模型
7.4 对象模型
7.4.l 继承模型
7.4.2 对象聚合
7.4.3 对象行为建模
7.5 CASE工作平台
要点
进一步的阅读资料
练习

第8章 软件原型系统开发

8.l 软件过程中的原型开发
8.1.l 进化式原型开发
8.1.2 抛弃式原型开发
8.2 快速原型技术
8.2.l 使用动态高级语言的开发
8.2.2 数据库程序设计
8.2.3 组件和应用集成
8.3 用户界面原型开发
要点
进一步的阅读资料
练习

第9章 形式化描述

9.l 软件过程中的形式化描述
9.2 接口描述
9.3 行为描述
要点
进一步的阅读资料
练习

第3篇设计

第10章 体系结构的设计

10.1 系统构成
10.1.l 容器模型
10.1.2 客户机/服务器模型
10.l.3 抽象机模型
10.2 控制模型
10.2.l 集中式控制
10.2.2 事件驱动系统
10.3 模块化分解
10.3.l 对象模型
10.3.2 数据流模型
10.4 领域相关的体系结构
10.4.l 类模型
10.4.2 参考体系结构
要点
进一步的阅读资料
练习

第11章 分布式系统体系结构

11.l 多处理器体系结构
11.2 客户机/服务器体系结构
11.3 分布式对象体系结构
11.4 CORBA
要点
进一步的阅读资料
练习

第12章 面向对象的设计

12.l 对象和对象类
12.2 面向对象设计过程
12.2.l 系统上下文和使用模型
12.2.2 体系结构的设计
12.2.3 对象识别
12.2.4 设计模型
12.2.5 对象接口描述
12.3 设计进化
要点
进一步的阅读资料
练习

第13章 实时软件的设计

13.l 系统设计
13.1.l 实时系统建模
13.1.2 实时程序设计
13.2 实时执行者
13.3 监控系统
13.4 数据采集系统
要点
进一步的阅读资料
练习

第14章 使用复用的设计

14.l 以组件为基础的开发
14.1.l 应用框架
14.1.2 商业现成产品的复用
14.1.3 面向复用的组件开发
14.2 应用系列
14.3 设计模式
要点
进一步的阅读资料
练习

第15章 用户界面设计

15.l 用户界面设计原则
15.2 用户交互
15.3 信息表示
15.4 用户支持
15.4.l 错误消息
15.4.2 帮助系统的设计
15.4.3 用户文档
15.5 界面评价
要点
进一步的阅读资料
练习

第4篇要求极高的系统

第16章 可依赖性

16.l 要求极高的系统
16.2 可用性和可靠性
16.3 安全性
16.4 保密性
要点
进一步的阅读资料
练习

第17章 要求极高的系统的描述

17.l 软件可靠性描述
17.1.l 可靠性度量
17.1.2 非功能性的可靠性需求
17.2 安全性描述
17.2.l 危险和风险分析
17.2.2 缺陷树分析
17.2.3 风险评估
17.2.4 降低风险
17.3 保密性描述
要点
进一步的阅读资料
练习

第18章 要求极高的系统的开发

18.l 缺陷最小化
18.1.l 错误避免
18.1.2 信息隐藏
18.1.3 可靠的软件过程
18.2 容错
18.2.1 异常处理
18.2.2 缺陷检测
18.2.3 损害评估
18.2.4 缺陷恢复
18.3 容错体系结构
18.4 安全系统设计
要点
进一步的阅读资料
练习

第5篇检验和有效性验证方法

第19章 检验和有效性验证

19.l 检验和有效性验证规划
19.2 软件检查
19.3 自动静态分析
19.4 净室软件开发方法
要点
进一步的阅读资料
练习

第20章 软件测试

20.l 缺陷测试
20.1.l 黑盒测试
20.1.2 等价划分
20.1.3 结构化测试
20.1.4 路径测试
20.2 集成测试
20.2.l 自顶向下的和自底向上的测试
20.2.2 接口测试
20.2.3 强度测试
20.3 面向对象的测试
20.3.l 对象类测试
20.3.2 对象集成
20.4 测试工作平台
要点
进一步的阅读资料
练习

第21章 要求极高的系统的验证

21.l 形式化方法和要求极高的系统
21.2 可靠性验证
21.2.l 操作简档
21.2.2 可靠性预测
21.3 安全性保证
21.3.l 检验和有效性验证
21.3. 2 安全性论证
21.3.3 过程保证
21.3.4 运行时安全检查
21.4 保密性评估
要点
进一步的阅读资料
练习

第6篇管理

第22章 人员管理

22.l 思维的局限性
22.1.l 记忆结构
22.1.2 问题的解决
22.1.3 工作动力
22.2 小组协作
22.2.l 小组的构成
22.2.2 小组的凝聚力
22.2.3 小组的沟通
22.2.4 小组的结构
22.3 选择和留住职员
22.4 人员能力成熟度模型
要点
进一步的阅读资料
练习

第23章 软件成本估算

23.l 生产率
23.2 估算技术
23.3 算法成本建模
23.3.1 COCOMO模型
23.3.2 在项目规划中的算法成本模型
23. 4 项目的工期和人员配备要点
进一步的阅读资料
练习

第24章 质量管理

24.l 质量保证和质量标准
24.1.l 文档编写标准
24.1.2 过程和产品质量
24.2 质量规划
24.3 质量控制
24.4 软件测量和度量
24.4.l 测量过程
24.4.2 产品度量
24.4.3 测量的分析
要点
进一步的阅读资料
练习

第25章 过程改善

25.l 过程和产品质量
25.2 过程分析和建模
25.3 过程度量
25.4 SEI的过程能力成熟度模型
25.5 过程分类
要点
进一步的阅读资料
练习

第7篇软件进化

第26章 遗留系统

26.l 遗留系统的结构
26.2 遗留系统设计
26.3 遗留系统评估
26.3.l 业务价值评估
26.3.2 系统质量评估
要点
进一步的阅读资料
练习

第27章 软件变更

27.l 程序进化的动态特性
27.2 软件维护
27.2.l 维护过程
27.2.2 维护预测
27.3 体系结构的进化
要点
进一步的阅读资料
练习

第28章 软件再工程

28.l 源代码转换
28.2 反向工程
28.3 程序结构改善
28.4 程序模块化
28.5 数据再工程
要点
进一步的阅读资料
练习

第29章 配置管理

29.l 配置管理规划
29.1.1 配置项识别
29.1.2 配置数据库
29.2 变更管理
29.3 版本和发布管理
29.3.l 版本标识
29.3.2 发布管理
29.4 系统构建
29.5 用于配置管理的CASE工具
29.5.l 变更管理支持
29.5.2 版本管理支持
29.5.3 系统构建支持要点
进一步的阅读资料
练习
参考文献
索引
译后记


教学资源推荐
作者: (美)Larry L.Constantine,Lucy A.D.Lockwood
作者: 薛均晓
作者: (美)Jeffrey L. Whitten;Lonnie D. Bentley 著
参考读物推荐
作者: James Rumbaugh, Ivar Jacobson, Grady Booch
作者: Jim Arlow Ila Neustadt
作者: Scott W. Ambler, Larry L. Constantine
作者: Joshua Barnes