基本信息出版社:清华大学出版社
页码:590 页
出版日期:2010年01月
ISBN:9787302208921
条形码:9787302208921
版本:第1版
装帧:平装
开本:16
正文语种:中文
丛书名:世界著名计算机教材精选
外文书名:Software Engineering 3:Domains,Requirements,and Software Design
内容简介 《软件工程卷1~3》是冯诺依曼奖章获得者、世界著名的计算机科学家Dines Bjorner教授的最新著作。这套丛书为读者理解软件和软件开发过程提供了一个“全新的视角”。这三卷书首次系统地论述了如何用形式方法来指导领域工程、需求工程和软件设计,即软件工程的三个相互关联并重叠的组成部分,或称之为软件工程的“三部曲”。在软件开发的各个阶段,如果都能够采用这种形式化的开发模式,将能够在极人程度上保证软件开发的正确性和有效性。这套丛书可以被视为软件工程史上里程碑式的著作。作者通过长达30年的程序设计方法沦的研究与实践,加上长达25年不断完善的课程讲义汇编成这一套前后连贯、内容一致以及相对完整的软件工程著作。这套丛书的一个显著特点就是在这三卷书中,所有的原理、技术和工具都是通过大量的案例分析末进行阐述,并覆盖了所有主要的软件开发时期、阶段和步骤;同时,这些原理、技术和工具是能够应用在大型工和商业软件的开发项目中去的。
这套从书不但可以作为高校计算机专业学生、教师以及研究人员的教材和必备参考书,而且在工业和计算机产业界也具有极大的实用价值。
《软件工程卷3:领域、需求与软件设计》介绍了整体软件开发的基本原理和技巧:从领域描述,经过需求分析,直到软件设计。本卷倡导一种全新的软件工程开发模式:在需求被形式化之前,人们必须理解应用领域,因此本卷首先介绍领域描述的原现和技术,然后介绍从领域模型导出需求规则的原理和技术,最后介绍细化需求到软件设计的原理和技术:体系结构和组件设计。
编辑推荐 《软件工程卷3:领域、需求与软件设计》:世界著名计算机教材精选。
目录
原著作者为中文版所作的序
译者序
前言
概述
卷3的简要指南
致谢
I 开篇
1 三部曲范式
1.1 软件工程的描绘
1.1.1 “旧的”描绘
1.1.2 我们的观点:什么是软件工程
1.2 软件工程三部曲
1.2.1 领域与论域
1.2.2 领域工程
1.2.3 需求工程
1.2.4 软件
1.2.5 软件设计
1.2.6 讨论
1.3 开发的时期、阶段与步骤
1.3.1 软件开发的时期
1.3.2 开发的阶段与步骤
1.3.3 领域开发
1.3.4 需求开发
1.3.5 计算系统设计
1.3.6 寸论:时期、阶段与步骤
1.4 部曲过程模型——首次考虑
1.4.1 过程模型的概念
1.4.2 三部曲过程模型
1.5 第1章的结论
1.5.1 概要
1.5.2 稍后将会介绍什么
1.6 文献评注
1.7 练习
1.7.1 一系列的软件开发
1.7.2 前言的注解
1.7.3 练习
2 文档
2.1 文档编制就是全部
2.2 文档部分的种类
2.2.1 概述
2.2.2 什么是描述
2.3 可交付物
2.4 信息文档部分
2.4.1 姓名、位置和日期
2.4.2 合作者
2.4.3 当前情况、需要、想法和概念
2.4.4 范围、区间、纲要
2.4.5 假设和依赖
2.4.6 隐含/派生目标
2.4.7 标准
2.4.8 合同和设计概要
2.4.9 日志
2.4.10 信息文档编制的讨论
2.5 描述文档部分
2.5.1 粗略描述
2.5.2 术语
2.5.3 叙述
2.5.4 形式叙述
2.5.5 描述性文档编制讨论
2.6 分析文档部分
2.6.1 概念形成
2.6.2 确认
2.6.3 验证、模型检查、测试
2.6.4 理论形成
2.6.5 分析文档编制的讨论
2.7 讨论
2.7.1 概述
2.7.2 章节总结
2.8 练习
2.8.1 序言
2.8.2 练习
Ⅱ概念框架
3 方法和方法论
3.1 方法
3.2 方法学
3.3 方法构成
3.3.1. 原则
3.3.2 分析
3.3.3 构造(或合成)
3.3.4 技术
3.3.5 工具
3.4 发原则、技术和工具
3.4.1 一些元原则
3.4.2 一些原则、技术和工具
3.5 讨论
3.6 练习
4 模型和建模
4.1 介绍性、场景设定论述
4.1.1 模型和“可能世界
4.1.2 规约的模型
4.1.3 建模
4.1.4 论域
4.2 模型属性
4.2.1 类比、分析、形象模型
4.2.2 描述和规定模型
4.2.3 外延和内涵模型
4.3 模型的角色
4.4 建模原则
4.5 讨论
4.6 练习
Ⅲ描述:理论和实践
5 现象和概念
5.1 前言
5.2 现象和概念
5.2.1 物理上显然的现象
5.2.2 思维构想的概念
5.2.3 现象和概念的类别
5.2.4 具体和抽象概念
5.2.5 描述的类别
5.2.6 什么是描述
5.3 实体
5.3.1 原子实体
5.3.2 复合实体
5.3.3 子实体
5.3.4 值、部分整体关系、属性
5.3.5 实体的部分整体关系
5.3.6 部分整体关系和属性
5.3.7 面向模型的部分整体关系
5.3.8 面向模型的属性——题外话
5.3.9 实体性质
5.3.10 现实的示例和我们的类型系统
5.3.11 类型系统
5.3.12 类型约束
5.3.13 总结:原则、技术和工具
5.4 函数
5.4.1 函数基调
5.4.2 函数定义
5.4.3 算法
5.5 事件和行为
5.5.1 状态、动作、事件和行为
5.5.2 同步和通信
5.5.3 进程
5.5.4 迹
5.5.5 进程定义语言
5.6 建模现象和概念的选择
5.6.1 定性特性
5.6.2 定量特性
5.6.3 原则、技术和工具
5.7 讨论
……
6 关于下定义和关于定义
6.1 定义的语用
6.2 各种各样的哲学定义
6.3 预备性讨论
6.4 形式定义的句法
6.5 形式定义的语义
6.6 讨论
6.7 练习
7 Jatkson的描述原则
7.1 现象、事实和个体
7.2 指示
7.3 显式定义
7.4 可驳斥断言
7.5 讨论:描述原则
7.6 文献评注
7.7 练习
Ⅳ 领域工程
8 领域工程概述
8.1 前言
8.2 回顾:为什么有领域工程
8.3 部分和章节的概述
8.4 领域参与者及其观点
8.5 领域获取和确认
8.6 领域分析和概念形成
8.7 领域刻面
8.8 领域开发的辅助阶段
8.9 领域模型文档
8.10 这一部分的其他结构
8.11 文献评注
8.12 练习
9 领域参与者
9.1 前言
9.2 参与者
9.3 参与者观点
9.4 讨论:参与者及其观点
9.5 练习
10 领域属性
10.1 前言
10.2 连续、离散和混沌
10.3 静态和动态
10.4 可触知性和不可触知性
10.5 一、二、……维
10.6 讨论
10.7 文献评注
10.8 练习
11 领域刻面
11.1 前言
11.2 领域易化器:企业过程
11.3 领域内在
11.4 领域支持技术
11.5 领域管理和组织
11.6 领域规则和规定
11.7 领域脚本
11.8 领域的人类行为
11.9 其他的领域刻面
11.10 领域模型复合
11.11 练习
12 领域获取
12.1 前言
12.2 获取过程
12.3 讨论
12.4 练习
13 领域分析和概念形成
13.1 前言
13.2 概念形成
13.3 一致性、冲突和完备性
13.4 从分析到合成
13.5 讨论
13.6 文献评注
13.7 练习
14 领域验证和确认
14.1 前言
14.2 领域验证
14.3 领域确认
14.4 讨论
14.5 练习
15 领域理论
15.1 前言
15.2 什么是领域理论
15.3 领域理论的陈述示例
15.4 可能的领域理论
15.5 我们如何建立一个理论
15.6 领域理论的目的
15.7 总结性原则、技术和工具
15.8 文献评注
15.9 练习
16 领域工程过程模型
16.1 前言
16.2 领域开发回顾
16.3 领域文档回顾
16.4 讨论
V 需求工程
17 需求工程综述
17.1 前言
17.2 为什么需要需求,为了什么
17.3 开始需求开发
17.4 关于领域、需求和机器
17.5 概述:需求工程的阶段
17.6 需求文档
17.7 本部分剩下内容的结构
17.8 文献评注
17.9 练习
18 需求参与者
18.1 前言
18.2 常规应用的参与者
18.3 COTS软件开发商的参与者
18.4 讨论
18.5 练习
19 需求刻面
19.1 前言
19.2 粗略描述和术语表
19.3 企业过程再工程需求
19.4 领域需求
19.5 接口需求
19.6 机器需求
19.7 需求模型复合
19.8 讨论:需求刻面
19.9 文献评注
19.10 练习
20 需求获取
20.1 需求获取和领域模型
20.2 基于领域模型的需求获取
20.3 概念概述
20.4 获取过程
20.5 讨论
20.6 练习
21 需求分析和概念形成
21.1 前言
21.2 概念形成
21.3 一致性、冲突和完备性
21.4 从分析到合成
21.5 讨论
21.6 文献评注
21.7 练习
22 需求的验证和确认
22.1 前言
22.2 需求验证
22.3 需求确认
22.4 讨论
22.5 文献评注
22.6 练习
23 需求的可满足性和可行性
23.1 前言
23.2 满足性研究
23.3 技术可行性研究
23.4 经济可行性研究
23.5 顺从于隐含/派生目标
23.6 讨论
23.7 练习
24 需求工程过程模型
24.1 前言
24.2 需求开发的回顾
24.3 回顾需求文档
24.4 重复的内容列表
24.5 讨论
Ⅵ 计算系统设计
25 硬件/软件协同设计
25.1 前言——关于体系结构
25.2 硬件构件和模块
25.3 软件构件和模块
25.4 硬件/软件协同设计
25.5 体系结构的逐步改进
25.6 讨论
26 软件体系结构设计
26.1 前言
26.2 初始的领域需求体系结构
26.3 初始机器需求体系结构
26.4 一些机器需求的分析
26.5 设计决策的优先
26.6 相应的设计
26.7 讨论
26.8 文献评注
26.9 练习
27 构件设计的范例分析
27.1 概述性前言
27.2 示例概述
27.3 方法论概述
27.4 步骤0:文件和页
27.5 步骤1:编目、磁盘和存储器
27.6 步骤2:磁盘
27.7 步骤3:高速缓存
27.8 步骤4:存储崩溃
27.9 步骤5:扁平化存储和磁盘
27.10 步骤6:磁盘空间管理
27.11 讨论
27.12 文献评注
27.13 练习
28 特定领域的体系结构
28.1 前言
28.2 翻译器体系结构
28.3 信息储存库体系结构
28.4 客户端朋艮务器体系结构
28.5 32件体系结构
28.6 反应系统体系结构
28.7 连接框架
28.8 讨论
28.9 练习
29 其他:编码及其全部
29.1 从形式规约到程序设计
29.2 程序设计之美
29.3 程序设计实践
29.4 构建信任的软件开发
29.5 验证、模型检查和测试
29.6 讨论
29.7 练习
30 计算系统设计过程模型
30.1 前言
30.2 软件设计的回顾
30.3 软件设计文档回顾
30.4 讨论
Ⅶ 结束语
31 三部曲开发过程模型
31.1 时期过程模型
31.2 时期文档编制目录
31.3 结论
32 尾章
32.1 非形式和形式软件工程
32.2 形式方法的神话和戒律
32.3 FAQ(Frequently Asked Questions):常见问题
32.4 研究和工具开发
32.5 应用领域
32.6 结束语
Ⅶ 附录
ARSL入门
A.1 类型
A.2 RSL谓词演算
A.3 具体RSL类型
A.4 γ演算和函数
A.5 其他的应用式表达式
A.6 命令式结构
A.7 进程结构
A.8 简单RSL规约
B 术语表
参考文献
……
序言 概述
本卷是有关软件工程的工程原则与技术的三卷教材中的第3卷。通过这三卷书我们宣称我们展示了形式技术(也被称之为形式方法)是如何可以在大规模开发项目中得以最大限度地使用。我们进一步提出:我们现在可以有理由宣称不再有任何借口不在开发的所有时期、阶段与步骤中使用形式技术。通常给出这样的借口是由于缺少在超大规模软件开发中使用形式技术的全面指南。这里就是十分详细地告诉你如何来做其中绝大多数事情的一套丛书!
当然,不是所有开发刻面现今都被详细说明到我们本希望可使用形式技术的层次。但是抑制使用现有的形式技术——在我们或许不是那么谦逊的看法来看——完全是犯罪!正如这几卷以及许多现有的优秀的专著所揭示的那样:不使用这些技术的傲慢可以简单地归结为犯罪性的忽略。
一些所谓的软件工程实践者“坚持”缺乏管理指南。对于他们,我要说:一旦你已经理解这几卷的原则与技术,并且如果你另外具有一些管理经验和判断力,那么其余的自然就得到了。你和我可以“填写”这些管理原则与技术。
卷1的附录B包含一个详尽的术语表,并且卷2的附录A包含一个我们命名规范的概览。
卷3的简要指南
本卷有多种学习方法。任何从图2中标号为1的输入节点(即章)到标号为32的输出节点的路径都可以形成一个课程。让我们简要地阐述图2如下:
软件工程的基础课程:最小的课程包括第1、2、5、8、11、16、17、19、24~26、30~32章,
即图2的所有左边列章节。
领域工程:集中讨论领域工程的课程另外包括第9、10与第12~15章。
需求工程:集中讨论需求工程的课程除了基础课程之外还包括第18与第20~23章。
软件设计:集中讨论软件设计的课程除了基础课程之外还包括第27~29章。
任一上面概述的四种课程可以以两种方式的任一一种给出:
非形式的:以这种方式学习本卷的读者可以略过形式化部分而只关注非形式的材料。换言之,学习本卷基本上且实际上可以不先学习卷1或卷1与卷2。
形式的:以这种方式学习本卷的读者需要学习所有非形式及形式的材料——因此学习本卷的
一个先决条件是至少先学习了卷1。
Dines Bjorner
丹麦技术大学,2005-2006
文摘 插图:

学习本章的前提:你愿意思考,且能够、至少希望抽象地思考。
目标:介绍“发现”需要概念化的现象的基本原则和技术,特别是,介绍那些使用实体(信息、数据)、函数(和关系)、事件(异步和同步)以及行为来概念化的现象,介绍对这样的现象及其深层概念的描述的基本原则和技术。
效果:必要性地启迪读者,但是还不足以令读者能够成为高效专业的软件工程师。讨论方式:从系统的到严格的。
5.1前言
在本章中,我们将探讨描述概念的刻面的初步集合:标识的问题,也即,能够标识或描写所关注的(i.1)现象和(i.2)概念;也即(i.1)物理上显然的事物,和(i.2)思维构造。 我们要尝试应对一些抽象概念。它们对能够了解什么,能够描述什么有所影响。由于这些抽象概念接近哲学,特别是如认识论和本体论这样的哲学学科。由此,我们不能像通常在数学或自然科学领域中那样带有确定性地探讨这些概念,而是要必须准备好一定程度的不确定性!
5.2现象和概念
在本章中,我们将经过严谨的一课。我们不希望建立一个崭新的现象理论。我们当然不希望考虑如面向对象、概念模式或任何其他的这样的概念。我们仅希望达到数学所能支持我们的非常简单程度。通过其我们指:类型和值、函数、事件和行为。并无其他!
但首先我们讨论现象和概念的概念。
我们认为专业的软件工程师清晰地理解这两个概念(即元概念)以及他们不感到迷惑是非常重要的。
5.2.1物理上显然的现象
在世界上,有物理上显然的现象。我们能够感知它们:触、看、听、感、闻、尝。或者我们能够测量它们:在机械上,在电气/电子上,在化学上,等等。由此我们能够用一种方式或另一种方式指向它们且指定它们。