《软件工程》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:齐治昌等编著
  • 出 版 社:北京:高等教育出版社
  • 出版年份:1997
  • ISBN:7040059444
  • 页数:360 页
图书介绍:内容提要软件工程第二版覆盖CC2001对软件工程课程的基本要求,内容包括:软件开发模型、软件项目管理、需求分析、软件设计、软件编码与测试、软件维护、配置管理、软件工程管理、软件工程工具和环境。本书结合目前软件工程教学的需要,特别介绍了统一建模语言(UML),并以此为基础讨论面向对象的需求分析与软件设计方法;介绍集成化CASE环境,Java与Internet环境下的软件开发技术;介绍支持软件过程改进的“软件能力成熟度模型”(CMM)。书中含有丰富的例题与习题,便于教学和自学。本书强调软件工程的理论与实践相结合、技术与管理相结合、方法与CASE工具相结合。教材思路清晰、语言简练,具有实用性和可操作性,可作为高等院校计算机专业或信息类相关专业高年级本科生或研究生教材,也可作为软件开发人员的参考书。

第一章 软件与软件工程 1

1.1 软件 1

1.1.1 软件与软件的组成 1

1.1.2 软件的特点 2

1.1.3 软件的分类 3

1.1.4 软件的发展 4

1.1.5 软件危机 5

1.2 软件工程的概念 7

1.2.1 软件工程的定义 7

1.2.2 软件工程的目标 7

1.2.3 软件工程的原则 9

1.3 软件生存周期 10

1.3.1 软件定义 10

1.3.2 软件开发 11

1.3.3 软件使用、维护和退役 13

1.4 软件开发模型 13

1.4.1 瀑布模型 14

1.4.2 原型模型 14

1.4.3 螺旋模型 15

1.4.4 基于四代技术的模型 16

1.4.5 变换模型 17

1.4.6 组合模型 17

1.5 CASE工具及环境 19

1.5.1 计算机辅助软件工程 19

1.5.2 CASE工具 19

1.5.3 集成化的CASE环境 20

小结 21

习题 21

第二章 软件项目管理 23

2.1 软件度量 23

2.1.1 度量、测量和估算 23

2.1.2 面向规模的度量 25

2.1.3 面向功能的度量 26

2.1.4 代码行度量与功能点度量的比较 28

2.2 软件项目估算 28

2.2.1 代码行、功能点和工作量估算 29

2.2.2 经验估算模型之一:CoCoMo模型 30

2.2.3 经验估算模型之二:Putnam模型 33

2.3 软件质量度量 34

2.3.1 软件质量定义及三层次度量模型 34

2.3.2 软件质量要素 35

2.3.3 软件质量要素评价准则 36

2.4 软件复杂性度量 39

2.4.1 软件复杂性及度量原则 39

2.4.2 控制结构的复杂性度量 40

2.4.3 文本复杂性度量 41

2.5 软件可靠性度量 42

2.5.1 软件可靠性的概念 42

2.5.2 软件修复和软件有效性 43

2.5.3 软件可靠性估算 44

2.6 软件开发过程的管理 46

2.6.1 风险分析 47

2.6.2 进度安排 50

2.6.3 软件开发标准 52

2.6.4 软件质量保证 54

2.6.5 软件开发人员的组织与分工 55

2.6.6 软件项目的开发过程管理 56

2.7 软件项目管理中的CASE工具 57

小结 57

习题 57

第三章 计算机系统工程 59

3.1 计算机系统工程 59

3.1.1 硬件和硬件工程 60

3.1.2 软件和软件工程 61

3.1.3 人机工程 63

3.1.4 数据库工程 63

3.2 可行性研究 64

3.2.1 引言 64

3.2.2 经济可行性 65

3.2.3 技术可行性 67

3.2.4 方案选择 67

3.3 系统模型与模拟 69

3.3.1 系统模型 69

3.3.2 系统建模和模拟 70

3.4 系统规格说明及评审 72

3.4.1 系统规格说明 72

3.4.2 系统规格说明评审 72

小结 73

习题 73

第四章 需求分析基础 74

4.1 分析的任务与原则 74

4.2 初步需求获取技术 75

4.2.1 访谈与会议 75

4.2.2 观察用户工作流程 75

4.2.3 用户和开发人员共同组成联合小组 76

4.2.4 实例分析 76

4.3 需求建模 77

4.4 问题抽象、问题分解与多视点分析 77

4.5 支持需求分析的快速原型技术 78

4.6 需求规格说明与评审 79

4.6.1 需求规格说明书的目标与内容 79

4.6.2 需求评审 81

小结 82

习题 82

第五章 面向数据流的分析方法 85

5.1 数据流图与数据字典 85

5.2 实体-关系图 87

5.2.1 数据对象、属性与关系 87

5.2.2 实体-关系图 88

5.3 数据流图的实时系统扩充* 89

5.3.1 Ward&Mellor扩充 90

5.3.2 Hatley&Pirhai扩充 91

5.4 基于数据流的分析方法 94

5.4.1 创建数据流模型 94

5.4.2 创建控制流模型* 96

5.4.3 过程规格说明 97

5.5 基于数据流图的需求分析CASE工具* 97

5.5.1 核心思想 98

5.5.2 语言机制 99

5.5.3 动态分析 104

5.5.4 基于CASE工具的需求分析 105

小结 105

习题 106

第六章 面向对象的需求分析 107

6.1 面向对象的概念与思想 107

6.2 面向对象的分析方法 108

6.2.1 识别对象 108

6.2.2 标识对象的属性 110

6.2.3 识别对象的行为 111

6.2.4 识别对象所属的类 115

6.2.5 定义主题词 117

6.2.6 多视点需求分析 118

6.3 面向对象的需求分析CASE工具 119

6.3.1 概述 119

6.3.2 对象及消息传递图 119

6.3.3 类结构图 121

6.3.4 对象状态转换图 122

6.3.5 主题词结构图 122

6.3.6 基于CASE工具的需求分析 122

小结 123

习题 123

第七章 面向数据的分析方法与形式化方法 125

7.1 面向数据结构的系统开发方法 125

7.1.1 Warnier图 125

7.1.2 DSSD方法 126

7.2 Jackson系统开发方法 128

7.2.1 标识实体与行为 128

7.2.2 生成实体结构图 128

7.2.3 创建软件系统模型 129

7.3 形式化方法* 131

7.3.1 主要思想 131

7.3.2 形式化规格说明语言简介 132

7.3.3 形式化需求描述 134

7.3.4 形式化方法的现状与发展趋势 138

小结 139

习题 139

第八章 软件设计基础 140

8.1 软件设计过程 140

8.2 软件设计基本概念 141

8.2.1 抽象与逐步求精 141

8.2.2 模块化与信息隐藏 143

8.2.3 软件总体结构设计 145

8.2.4 数据结构设计 147

8.2.5 软件过程设计 148

8.3 过程设计技术和工具 149

8.3.1 结构化程序设计 149

8.3.2 图形表示法 150

8.3.3 判定表 151

8.3.4 过程设计语言(PDL) 152

8.3.5 过程设计工具之比较 154

8.4 设计规格说明与评审 155

小结 157

习题 157

第九章 面向数据流的设计方法 159

9.1 基本概念和设计过程 159

9.2 变换分析 160

9.3 事务分析 166

9.4 启发式设计策略 169

9.5 设计优化原则 170

9.6 实时系统设计 171

9.6.1 实时系统性能要求 171

9.6.2 实时系统设计要素 171

9.6.3 实时系统设计方法 172

9.6.4 设计实例 173

小结 176

习题 177

第十章 面向对象的设计方法 179

10.1 面向对象设计的概念 179

10.1.1 对象、操作和消息 180

10.1.2 类、实例和继承 180

10.1.3 对象描述 181

10.2 面向对象的设计方法 181

10.2.1 主体部件(PDC)的设计 182

10.2.2 用户界面部件(HIC)的设计 185

10.2.3 任务管理部件(TMC)的设计 188

10.2.4 数据管理部件(DMC)的设计 189

10.3 基于对象的设计方法 190

10.3.1 设计步骤 190

10.3.2 详细设计 193

小结 193

习题 194

第十一章 面向数据的设计方法 195

11.1 面向数据设计 195

11.2 Jackson系统开发方法 196

11.2.1 JSD分析技术回顾 196

11.2.2 扩充功能性过程 196

11.2.3 施加时间约束 200

11.2.4 实现与JSP技术 201

11.2.5 产生过程表示 202

11.3 基于结构化数据的系统开发(DSSD)方法 203

11.3.1 DSSD设计步骤 204

11.3.2 推导输出数据的逻辑结构 204

11.3.3 推导处理过程的逻辑结构 205

11.3.4 复杂过程逻辑的描述 206

小结 208

习题 208

第十二章 人机界面设计 209

12.1 人的因素 209

12.1.1 人类感知基础 209

12.1.2 用户的技能 210

12.1.3 任务与用户的特殊要求 210

12.2 人机界面风格 210

12.3 人机界面设计过程 211

12.3.1 界面设计的有关模型 212

12.3.2 任务分析与建模 212

12.3.3 界面设计的一般问题 212

12.3.4 实现工具 213

12.4 人机界面实现的原则 214

12.4.1 一般可交互性 214

12.4.2 信息显示 214

12.4.3 数据输入 214

12.5 人机界面标准 215

12.6 支持界面设计的CASE工具 215

小结 219

习题 219

第十三章 程序设计语言和编码 220

13.1 程序设计语言 220

13.1.1 程序设计语言的特性 220

13.1.2 程序设计语言的基本机制 221

13.1.3 程序设计语言的演变和分类 222

13.1.4 程序设计语言的选择 224

13.2 程序设计过程 224

13.2.1 面向对象语言对OOD的支持 225

13.2.2 基于对象语言对OOD的支持 227

13.2.3 过程式语言对OOD的支持 229

13.3 编程标准 230

13.4 编程风格 231

13.5 程序设计支持环境(PSE) 233

小结 235

习题 235

第十四章 软件测试 236

14.1 基本概念 236

14.1.1 软件测试的目标 236

14.1.2 测试阶段的信息流程 236

14.1.3 测试用例和场景的设计 237

14.1.4 软件测试的步骤 238

14.2 软件测试技术 239

14.2.1 白盒测试 239

14.2.2 黑盒测试 246

14.3 软件测试策略 248

14.3.1 单元测试 248

14.3.2 综合测试 250

14.3.3 确认测试 253

14.3.4 系统测试 254

14.3.5 排错 255

14.4 基于CASE工具的软件测试和排错 256

14.4.1 自动测试工具 256

14.4.2 调试器 257

小结 258

习题 258

第十五章 软件维护 261

15.1 软件维护的分类 261

15.2 维护过程 261

15.2.1 结构化与非结构化的维护 262

15.2.2 维护的成本 263

15.2.3 可能存在的问题 263

15.3 可维护性 264

15.3.1 影响可维护性的因素 264

15.3.2 若干量化的测度 264

15.3.3 保证可维护性的复审 264

15.4 维护活动 265

15.4.1 维护组织 265

15.4.2 维护的报告与评估 266

15.4.3 维护活动的事件流 266

15.4.4 保存维护记录 267

15.4.5 评价维护活动 268

15.5 维护的副作用 268

15.6 逆向工程与重构工程 269

15.6.1 恢复信息的级别 270

15.6.2 恢复信息的方法 270

小结 271

习题 271

第十六章 软件配置管理 272

16.1 软件配置管理 272

16.1.1 基线技术 272

16.1.2 软件配置项 273

16.2 软件配置管理任务 274

16.2.1 标识配置对象 274

16.2.2 版本控制 275

16.2.3 系统建立 276

16.2.4 修改控制 276

16.2.5 配置审计 277

16.2.6 配置状况报告 278

16.3 软件配置管理标准 278

16.4 配置管理的CASE工具 278

小结 280

习题 280

第十七章 软件重用技术 281

17.1 软件重用 281

17.1.1 软件重用的概念 281

17.1.2 软件重用的过程与意义 282

17.1.3 重用项目的管理 282

17.2 软部件库的构造 283

17.2.1 域分析 283

17.2.2 软部件的开发 285

17.2.3 软部件库的组织 287

17.3 软部件的重用 289

17.3.1 检索与提取软部件 289

17.3.2 理解与评价软部件 290

17.3.3 修改软部件 291

17.3.4 软部件的合成 291

17.4 面向对象的软件重用技术 292

17.4.1 类库的构造 292

17.4.2 类库的检索 293

17.4.3 面向对象的合成 293

17.5 软件重用项目的管理 296

17.5.1 组织机构 296

17.5.2 软件重用的考核指标 297

17.5.3 创造重用氛围 297

17.6 支持软件重用的CASE工具 298

17.6.1 软件重用对CASE工具的需求 298

17.6.2 类库的组织与检索工具 299

小结 300

习题 301

第十八章 快速原型技术 302

18.1 瀑布模型的缺陷 302

18.2 快速原型方法 304

18.2.1 原型及其作用 304

18.2.2 快速原型的构造过程 305

18.3 基于快速原型的进化式软件开发 306

18.3.1 螺旋模型 306

18.3.2 螺旋模型的评价 308

18.4 快速原型的技术支持 309

18.4.1 用户界面自动生成工具 309

18.4.2 面向数据库应用的开发工具 312

18.4.3 四代语言 315

18.4.4 可重用工具 316

18.4.5 程序设计环境 316

小结 318

习题 318

第十九章 集成化CASE环境 319

19.1 概述 319

19.2 CASE工具的集成形式 320

19.2.1 信息交换 320

19.2.2 公共界面 320

19.2.3 公共信息管理与信息共享 320

19.2.4 高度集成 321

19.3 集成化CASE环境的总体结构 322

19.3.1 界面集成 322

19.3.2 工具集成 322

19.3.3 信息集成 323

19.3.4 软件工程信息库 324

19.4 可移植的通用工具环境PCTE 326

19.4.1 基本机制 326

19.4.2 用户接口 327

19.4.3 分布式机制 327

小结 328

习题 328

第二十章 新型软件开发技术* 329

20.1 Internet与Java简介 329

20.1.1 Internet简介 329

20.1.2 Java的发展历史 330

20.1.3 Java的特征 331

20.1.4 Java的语法机制 332

20.1.5 Java的意义 337

20.2 Java与Internet环境下的软件开发 337

20.2.1 基于Java的软件开发过程 338

20.2.2 Java与多媒体主页的制作 338

20.2.3 Java与交互式主页的制作 343

20.2.4 Java与图形界面 344

20.2.5 Java与网络程序设计 346

20.3 对象链接与嵌入(OLE)技术 348

20.3.1 OLE简介 348

20.3.2 构件对象模型 348

20.3.3 结构化存储与复合文件 349

20.3.4 数据对象传送 350

20.3.5 复合文档 351

20.3.6 OLE自动化 352

20.3.7 OLE控件 352

20.4 CORBA与分布计算技术 353

20.4.1 分布计算环境 353

20.4.2 分布计算技术 353

20.4.3 CORBA概述 354

20.4.4 Internet环境下的分布式软件开发 355

小结 356

习题 357

参考文献 358