《软件工程 Java语言实现》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:(美)(S.R.沙切斯)Stephen R.Schach著;袁兆山等译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:1999
  • ISBN:711107355X
  • 页数:395 页
图书介绍:本书介绍经典的和面向对象的软件工程,强调理论、抽象和设计相结合,重视对软件工程学有指导作用的重要概念。本书分两部分,共14章及8个附录。第一部分包括第1~6章,向读者介绍软件工程的概念,给出了本书的框架。顺序讨论了软件工程的范围,软件过程及其问题、软件生命周期模型、逐步求精、CASE工具、测试原理,详细解释了类和对象,并且说明为什么面向对象的范型比结构化范型更成功。本书的第二部分包括第7~14章,详细介绍软件过程的各个阶段,如需求、规格说明、计划、设计、实现与集成、维护、最终退役。还包括用于开发和维护软件的工具和技术,并对各阶段中有关的CASE工具、度量和测试技术加以说明。各章末都附有大量的练习。本书内容广泛新颖,深浅适宜,是大学计算机科学系高年级学生和研究生的较优秀的教科书,也是对从事软件开发的管理者、系统分析员、程序员具有指导作用和实用价值的著作。

第一部分 软件过程 2

第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.9 退役 24

2.8 维护阶段 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.1 边做边改模型 31

第3章 软件生命周期模型 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.6 配置控制 58

4.5.2 变体版本 58

4.6.1 产品维护期间的配置控制 60

4.6.2 基线版本 60

4.6.3 产品开发期间的配置控制 61

4.7 构造工具 61

4.8 CASE技术提高了生产力 62

4.8 软件度量 62

本章回顾 63

进一步阅读 63

问题 64

5.1 质量问题 66

第5章 测试原理 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.4 需要测试些什么 71

5.3 基于执行的测试 71

5.2.5 审查的尺度 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.4 特征耦合 93

6.3.3 控制耦合 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.10 重用 110

6.9 对象的内聚性和耦合 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

第二部分 软件过程的各个阶段 122

第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.1 电梯问题:Z 156

8.8 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.6 MSG实例研究:面向对象的分析 176

9.5 面向对象分析阶段中的CASE工具 176

本章回顾 178

进一步阅读 178

问题 178

第10章 计划阶段 181

10.1 项目开发周期和开发成本估计 181

10.1.1 产品规模的度量 182

10.1.2 成本估计技术 185

10.1.3 中级CDCOMO 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

进一步阅读 198

10.11 MSG实例研究:计划阶段 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.10 面向行为的设计、面向数据的设计和面向对象的设计之比较 221

11.9 详细设计 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.1 编程语言的选择 230

第12章 实现阶段 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.1 可移植的系统软件 254

12.12.2 可移植的应用软件 254

12.12 获得可移植性的技术 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.16.1 结构化测试:语句、分支、路径覆盖 260

12.15.2 功能测试 260

12.16 玻璃盒模块测试技术 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.25 MSG实例研究:黑盒测试事例 270

12.24 实现阶段的CASE工具 270

本章回顾 272

进一步阅读 272

问题 273

第13章 实现和集成阶段 275

13.1 实现和集成 275

13.1.1 自顶向下的实现和集成方法 276

13.1.2 自底而上的实现和集成方法 277

13.1.4 面向对象产品的实现和集成方法 278

13.1.3 三明治式实现和集成方法 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.11 集成环境 282

13.10 工具箱环境 282

13.9 面向结构的环境 282

13.8 基于编程语言的环境 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

本章回顾 287

13.16 MSG实例研究:实现和集成阶段 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.4 反复维护的问题 294

14.4.3 确保可维护性 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

第三部分 附录 307

附录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