软件工程Java语言实现

作者
丛书名
出版社
原 Mcgraw-Hill
ISBN
简要
简介
内容简介书籍计算机书籍 本书介绍经典的和面向对象的软件工程,强调理论、抽象和设计相结合,重视对软件工程学有指导作用的重要概念。本书分两部分,共14章及8个附录。第一部分包括第1~6章,向读者介绍软件工程的概念,给出了本书的框架。顺序讨论了软件工程的范围,软件过程及其问题、软件生命周期模型、逐步求精、CASE工具、测试原理,详细解释了类和对象,并且说明为什么面向对象的范型比结构化范型更成功。本书的第二部分包括第7~14章,详细介绍软件过程的各个阶段,如需求、规格说明、计划、设计、实现与集成、维护、最终退役。还包括用于开发和维护软件的工具和技术,并对各阶段中有关的CASE工具、度量和测试技术加以说明。各章末都附有大量的练习。 本书内容广泛新颖,深浅适宜,是大学计算机科学系高年级学生和研究生的较优秀的教科书,也是对从事软件开发的管理者、系统分析员、程序员具有指导作用和实用价值的著作。
目录
目 录
译者序
前言
第3版Classical and Object-Oriented
Software Engineering序言
第一部分 软件过程
第1章 软件工程的范围 2
1.1 历史方面 3
1.2 经济方面 5
1.3 维护方面 5
1.4 规格说明和设计方面 8
1.5 群体编程方面 9
1.6 面向对象的范型 10
1.7 常用术语 13
本章回顾 15
进一步阅读 15
问题 16
第2章 软件过程及问题 17
2.1 客户、开发人员和用户 18
2.2 需求阶段 19
2.3 规格说明阶段 20
2.4 计划阶段 21
2.5 设计阶段 22
2.6 实现阶段 23
2.7 集成阶段 23
2.8 维护阶段 24
2.9 退役 24
2.10 软件产品中的问题:本质问题和非
本质问题 25
2.10.1 复杂性 26
2.10.2 一致性 27
2.10.3 可变性 27
2.10.4 不可见性 28
2.10.5 没有银弹吗 28
本章回顾 29
进一步阅读 29
问题 30
第3章 软件生命周期模型 31
3.1 边做边改模型 31
3.2 瀑布模型 32
3.3 快速原型模型 34
3.4 增量模型 36
3.5 螺旋模型 39
3.6 各种生命周期模型的比较 42
3.7 能力成熟度模型 43
3.8 ISO 9000 45
本章回顾 46
进一步阅读 46
问题 47
第4章 逐步求精、CASE和
其他商用工具 48
4.1 逐步求精 48
4.2 成本效益分析 52
4.3 计算机辅助软件工程CASE 53
4.4 CASE的范围 54
4.5 软件版本 57
4.5.1 修订版本 57
4.5.2 变体版本 58
4.6 配置控制 58
4.6.1 产品维护期间的配置控制 60
4.6.2 基线版本 60
4.6.3 产品开发期间的配置控制 61
4.7 构造工具 61
4.8 CASE技术提高了生产力 62
4.9 软件度量 62
本章回顾 63
进一步阅读 63
问题 64
第5章 测试原理 66
5.1 质量问题 66
5.1.1 软件质量保证 67
5.1.2 管理的独立性 67
5.2 基于非执行的测试 68
5.2.1 走查 68
5.2.2 走查的管理 68
5.2.3 审查 69
5.2.4 审查和走查的比较 70
5.2.5 审查的尺度 71
5.3 基于执行的测试 71
5.4 需要测试些什么 71
5.4.1 实用性 72
5.4.2 可靠性 72
5.4.3 健壮性 73
5.4.4 性能 73
5.4.5 正确性 73
5.5 测试与正确性证明的比较 74
5.5.1 正确性证明的举例 75
5.5.2 正确性证明的事例研究 77
5.5.3 正确性证明和软件工程 78
5.6 由谁来执行基于执行的测试 80
5.7 何时结束测试 81
本章回顾 81
进一步阅读 82
问题 82
第6章 对象 84
6.1 什么是模块 84
6.2 内聚性 87
6.2.1 偶然内聚性 87
6.2.2 逻辑内聚性 88
6.2.3 暂时内聚性 89
6.2.4 过程内聚性 89
6.2.5 通信内聚性 89
6.2.6 信息内聚性 89
6.2.7 功能内聚性 90
6.2.8 内聚性举例 90
6.3 耦合 91
6.3.1 内容耦合 91
6.3.2 共用耦合 92
6.3.3 控制耦合 93
6.3.4 特征耦合 93
6.3.5 数据耦合 94
6.3.6 耦合举例 95
6.4 数据封装 96
6.4.1 数据封装和产品开发 98
6.4.2 数据封装和产品维护 99
6.5 抽象数据类型 103
6.6 信息隐藏 104
6.7 对象的概念 106
6.8 多态性和动态联编 108
6.9 对象的内聚性和耦合 110
6.10 重用 110
6.11 重用实例研究 112
6.11.1 Raytheon 的导弹系统部 112
6.11.2 东芝软件工厂 113
6.11.3 NASA软件 113
6.11.4 GTE Data Services 114
6.11.5 HP公司 114
6.12 重用和维护 115
6.13 对象和生产率 116
本章回顾 117
进一步阅读 117
问题 118
第二部分 软件过程的各个阶段
第7章 需求阶段 122
7.1 需求分析技术 122
7.2 快速原型 123
7.3 人的因素 124
7.4 作为一种规格说明技术的快速原型 125
7.5 快速原型的重用 127
7.6 快速原型的其他用途 128
7.7 快速原型的管理意义 129
7.8 有关快速原型的经验 130
7.9 联合式应用设计 131
7.10 需求分析技术的比较 131
7.11 需求阶段的测试 131
7.12 需求阶段的CASE工具 132
7.13 需求阶段的度量 132
7.14 MSG实例研究:需求阶段 133
7.15 MSG实例研究:快速原型 134
本章回顾 135
进一步阅读 135
问题 135
第8章 规格说明阶段 137
8.1 规格说明文档 137
8.2 非形式化规格说明 138
8.3 结构化系统分析 139
8.4 其他的半形式化技术 145
8.5 实体关系模型 145
8.6 有穷状态机 147
8.7 Petri网 152
8.8 Z 156
8.8.1 电梯问题:Z 156
8.8.2 对Z的分析 158
8.9 其他的形式化技术 159
8.10 规格说明技术的比较 160
8.11 规格说明阶段的测试 160
8.12 规格说明阶段的CASE工具 160
8.13 规格说明阶段的度量 161
8.14 MSG实例研究:结构化系统分析 161
本章回顾 163
进一步阅读 163
问题 163
第9章 面向对象的分析阶段 166
9.1 面向对象范型与结构化范型的比较 166
9.2 面向对象的分析 167
9.3 电梯问题:面向对象的分析 168
9.3.1 类模型 168
9.3.2 动态建模 170
9.3.3 功能建模 172
9.4 面向对象的生命周期模型 174
9.5 面向对象分析阶段中的CASE工具 176
9.6 MSG实例研究:面向对象的分析 176
本章回顾 178
进一步阅读 178
问题 178
第10章 计划阶段 181
10.1 项目开发周期和开发成本估计 181
10.1.1 产品规模的度量 182
10.1.2 成本估计技术 185
10.1.3 中级COCOMO 186
10.1.4 跟踪开发周期和成本估计 188
10.2 软件项目管理计划的组成部分 189
10.3 软件项目管理计划的结构 190
10.4 IEEE软件项目管理计划 190
10.5 测试计划 193
10.6 面向对象项目的规划 194
10.7 培训需求 195
10.8 文档标准 195
10.9 计划阶段的CASE工具 195
10.10 计划阶段的测试 197
10.11 MSG实例研究:计划阶段 198
本章回顾 198
进一步阅读 198
问题 199
第11章 设计阶段 201
11.1 设计和抽象 201
11.2 面向行为的设计 202
11.3 数据流分析 202
11.3.1 数据流分析的例子 203
11.3.2 扩展 206
11.4 事务分析 207
11.5 面向数据的设计 208
11.6 Jackson系统开发 208
11.6.1 JSD概述 209
11.6.2 为什么要在本章介绍Jackson系统
开发 210
11.6.3 电梯问题:Jackson系统开发 210
11.6.4 JSD分析 216
11.7 Jackson、Warnier和Orr的技术 217
11.8 面向对象的设计 218
11.9 详细设计 221
11.10 面向行为的设计、面向数据的设计
和面向对象的设计之比较 221
11.11 与实时系统有关的困难 222
11.12 实时系统设计技术 223
11.13 设计阶段的测试 223
11.14 设计阶段的CASE工具 224
11.15 设计阶段的度量 224
11.16 MSG实例研究:面向对象的设计 225
本章回顾 228
进一步阅读 228
问题 228
第12章 实现阶段 230
12.1 编程语言的选择 230
12.2 第四代语言 232
12.3 结构化程序设计 234
12.3.1 结构化程序设计的历史 234
12.3.2 为什么goto语句是有害的 235
12.4 良好的编程习惯 237
12.5 编码标准 240
12.6 程序员组的组织 241
12.7 民主制程序员组方法 242
12.8 典型的主席制程序员组方法 243
12.8.1 New York Times项目 244
12.8.2 典型的主席制程序员组方法的
不切实际性 245
12.9 超越主席制程序员组和民主制
程序员组的方法 245
12.10 可移植性 247
12.10.1 硬件的不兼容性 248
12.10.2 操作系统的不兼容性 249
12.10.3 数值软件的不兼容性 249
12.10.4 编译器的不兼容性 250
12.11 为什么要支持可移植性 253
12.12 获得可移植性的技术 254
12.12.1 可移植的系统软件 254
12.12.2 可移植的应用软件 254
12.12.3 可移植的数据 255
12.13 模块重用 256
12.14 模块测试事例的选择 256
12.14.1 规格说明测试与代码测试的
比较 256
12.14.2 规格说明测试的可行性 257
12.14.3 代码测试的可行性 257
12.15 黑盒模块测试技术 258
12.15.1 等价测试和边界值分析 259
12.15.2 功能测试 260
12.16 玻璃盒模块测试技术 260
12.16.1 结构化测试:语句、分支、
路径覆盖 260
12.16.2 复杂性度量 262
12.17 代码走查和审查 263
12.18 模块测试技术的比较 263
12.19 Cleanroom 264
12.20 测试对象 264
12.21 模块测试的管理方面 266
12.22 测试分布式软件 268
12.23 实时软件的测试 269
12.24 实现阶段的CASE工具 270
12.25 MSG实例研究:黑盒测试事例 270
本章回顾 272
进一步阅读 272
问题 273
第13章 实现和集成阶段 275
13.1 实现和集成 275
13.1.1 自顶向下的实现和集成方法 276
13.1.2 自底而上的实现和集成方法 277
13.1.3 三明治式实现和集成方法 278
13.1.4 面向对象产品的实现和集成方法 278
13.1.5 实现和集成阶段的管理问题 279
13.2 实现和集成阶段的测试 279
13.3 用户图形界面的集成阶段测试 279
13.4 产品测试 280
13.5 验收测试 280
13.6 实现和集成阶段的CASE工具 281
13.7 整个软件过程的CASE工具 281
13.8 基于编程语言的环境 282
13.9 面向结构的环境 282
13.10 工具箱环境 282
13.11 集成环境 282
13.11.1 过程集成 283
13.11.2 工具集成 283
13.11.3 其他形式的集成 285
13.12 商业应用的开发环境 285
13.13 公用工具的基础结构 286
13.14 各类环境的比较 286
13.15 实现和集成阶段的度量 286
13.16 MSG实例研究:实现和集成阶段 287
本章回顾 287
进一步阅读 288
问题 288
第14章 维护阶段 290
14.1 为什么维护是必须的 290
14.2 维护人员需要什么 291
14.3 维护实例研究 292
14.4 维护管理 293
14.4.1 错误报告 293
14.4.2 授权产品更改 293
14.4.3 确保可维护性 294
14.4.4 反复维护的问题 294
14.5 面向对象的软件维护 295
14.6 开发技能与维护技能之比较 297
14.7 逆向工程 297
14.8 维护阶段的测试 298
14.9 维护阶段的CASE工具 298
14.10 维护阶段的度量 299
本章回顾 299
进一步阅读 299
问题 300
结束语—JAVA: 软件工程的实例研究 301
第三部分 附 录
附录A 艺术商人 Osbert Oglesby 307
附录B 软件工程资源 309
附录C MSG 实例研究:快速原型模型 311
附录D MSG 实例研究:结构化系统
分析 322
附录E MSG 实例研究:软件项目管理
计划 325
附录F MSG 实例研究:设计 329
附录G MSG 实例研究:黑箱测试用例 337
附录H MSG 实例研究:源代码 339
参考文献索引 376

推荐

车牌查询
桂ICP备20004708号-3