《软件工程》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:李代平编著
  • 出 版 社:北京:冶金工业出版社
  • 出版年份:2002
  • ISBN:7502430865
  • 页数:402 页
图书介绍:高等院校计算机经典教材。

第1章 绪论 1

1.1 软件概述 1

1.1.1 软件的特点 1

1.1.2 软件的发展 2

1.1.3 软件危机 2

1.2 软件工程 4

1.2.1 软件工程与方法学 5

1.2.2 软件工程的基本原理 6

1.2.3 软件工程的目标 7

1.2.4 软件工程的内容 8

1.2.5 软件工程面临的问题 8

小结 8

练习题 9

第2章 软件工程的基本理论 10

2.1 软件工程过程 10

2.2 软件生存周期 10

2.2.1 软件分析时期 11

2.2.2 软件设计时期 12

2.2.3 编码与测试时期 13

2.2.4 运行与维护时期 14

2.3 软件生存周期模型 14

2.3.1 软件生存周期模型的概念 14

2.3.2 瀑布模型 15

2.3.3 原型模型 17

2.3.4 增量模型 17

2.3.5 螺旋模型 19

2.3.6 喷泉模型 20

2.3.7 基于知识的模型 21

2.3.8 变换模型 22

2.4 软件开发方法 22

2.4.1 结构化方法 22

2.4.2 Jackson方法 23

2.4.3 维也纳开发方法 23

2.4.4 面向对象的开发方法 24

2.4.5 其他开发方法 24

2.5 软件工具与开发 24

2.5.1 软件工具箱 25

2.5.2 软件开发环境 25

2.5.3 计算机辅助软件工程 25

小结 25

练习题 26

第3章 可行性研究 27

3.1 可行性研究任务与步骤 27

3.1.1 研究任务 27

3.1.2 研究步骤 29

3.2 系统分析 30

3.2.1 系统分析员 31

3.2.2 系统分析员任务 32

3.2.3 面临的问题域 32

3.2.4 通信技术 33

3.3 分析原理 34

3.3.1 信息域 35

3.3.2 建立模型 36

3.3.3 分解 36

3.4 结构化分析 37

3.4.1 自顶向下逐层分解 38

3.4.2 结构化分析步骤 39

3.5 系统流程图 40

3.6 数据流图 41

3.6.1 基本图形符号 42

3.6.2 画数据流图 43

3.6.3 结构化分析方法的应用 46

3.7 数据字典 50

3.7.1 内容及格式 50

3.7.2 数据字典的实现 52

3.8 成本-效益分析 53

3.9 可行性研究的文档 55

3.10 项目开发计划 56

小结 56

练习题 57

第4章 软件需求分析与概念模型 58

4.1 需求分析 58

4.1.1 需求分析的特点 58

4.1.2 需求分析的原则 59

4.1.3 需求分析的任务 59

4.1.4 需求分析的方法 60

4.2 IDEF方法 63

4.2.1 IDEFO的表示 63

4.2.2 IDEFO方法的特点 64

4.2.3 建立功能模型方法 64

4.3 概念模型与规范化 66

4.3.1 数据依赖 66

4.3.2 关系模式的操作异常 67

4.3.3 范式 67

4.3.4 EAR方法 72

小结 75

练习题 75

第5章 总体设计 76

5.1 软件设计的重要性 76

5.2 设计过程 77

5.2.1 软件设计的发展 77

5.2.2 设计活动间的关系 77

5.2.3 设计与软件质量 78

5.3 软件总体设计 78

5.4 设计基本原理 80

5.4.1 抽象 80

5.4.2 细化 81

5.4.3 模块化 81

5.4.4 软件体系结构 83

5.4.5 程序结构 84

5.4.6 数据结构 85

5.4.7 软件过程 86

5.5 体系结构设计 87

5.5.1 软件结构图 87

5.5.2 模块的大小 89

5.5.3 扇出和扇入与深度和宽度 89

5.5.4 模块的藕合 90

5.5.5 模块的内聚 92

5.5.6 模块设计的一般准则 94

5.5.7 模块的作用域与控制域 95

5.6 结构化设计 97

5.6.1 数据流的类型 97

5.6.2 过程步骤 98

5.6.3 变换分析设计 99

5.6.4 事务分析设计 101

5.6.5 混合流设计 102

5.6.6 结构化设计方法应用示例 103

5.6.7 设计的后期处理 104

5.7 IDEFO图的设计方法 105

5.8 软件结构优化 105

5.8.1 软件结构设计优化准则 105

5.8.2 软件结构的HIPO图 107

小结 108

练习题 109

第6章 软件细节设计 110

6.1 细节设计的任务与方法 110

6.1.1 细节设计的基本任务 110

6.1.2 细节设计方法 111

6.2 设计表示法 112

6.2.1 结构化语言 112

6.2.2 判定表 113

6.2.3 判定树 114

6.3 结构化程序设计 114

6.3.1 结点 114

6.3.2 三种基本控制结构 115

6.3.3 正规程序 116

6.3.4 基本程序 117

6.3.5 结构化程序 118

6.4 结构化定理 118

6.4.1 程序函数 119

6.4.2 基本定理 119

6.4.3 非结构化转换为结构化 121

6.4.4 过程设计语言 123

6.5 图形工具 126

6.5.1 PAD图 126

6.5.2 盒图 127

6.6 面向数据结构的设计 128

6.6.1 Jackson图 129

6.6.2 纲要逻辑 130

6.6.3 Jackson方法 131

6.6.4 JSP应用 132

6.6.5 JSD方法 135

小结 140

练习题 140

第7章 面向对象方法学 141

7.1 传统方法学的缺点 141

7.1.1 问题的表现 141

7.1.2 问题的原因 142

7.2 面向对象的基本概念 144

7.2.1 对象(Object) 144

7.2.2 类(Class) 145

7.2.3 继承(Inheritance) 146

7.2.4 封装(Encapsulation) 147

7.2.5 消息(Message) 147

7.2.6 结构与连接 148

7.2.7 多态性 149

7.2.8 其他概念 150

7.3 对象模型 151

7.3.1 表示方法 151

7.3.2 表示结构 152

7.3.3 例子 154

7.4 动态模型 154

7.4.1 术语 154

7.4.2 表示方法 155

7.4.3 例子 155

7.5 功能模型 156

7.5.1 表示方法 156

7.5.2 与其他两种模型的关系 156

小结 157

练习题 157

第8章 面向对象分析 158

8.1 分析的基本过程 158

8.1.1 过程简述 158

8.1.2 基本模型 159

8.1.3 主要活动 160

8.2 对象的发现和标识 162

8.2.1 动机 162

8.2.2 方法 163

8.2.3 三视图模型(3VM) 163

8.2.4 语言信息分析 164

8.3 发现对象方法 166

8.3.1 系统责任 166

8.3.2 问题域研究方法 167

8.3.3 确定系统边界 168

8.3.4 发现对象 169

8.3.5 审查和筛选 171

8.3.6 建立类图的对象层 172

8.4 定义属性 174

8.4.1 对象的属性和服务 174

8.4.2 表示方法 175

8.4.3 定义属性 175

8.5 定义服务 177

8.5.1 状态转换图 177

8.5.2 行为分类 179

8.5.3 发现服务方法 180

8.6 定义结构 181

8.6.1 一般-特殊结构 182

8.6.2 发现一般-特殊结构 183

8.6.3 结构的简化 185

8.6.4 多继承与多态性 186

8.6.5 整体-部分结构 191

8.6.6 整体-部分结构表示法 192

8.6.7 发现整体-部分结构方法 193

8.7 实例连接 195

8.7.1 实例连接概念 196

8.7.2 实例连接表示法 197

8.7.3 建立实例连接方法 198

8.8 消息连接 200

8.8.1 消息的概念 200

8.8.2 表示方法 202

8.8.3 建立消息连接方法 204

8.9 建立功能模型 205

8.9.1 画基本系统模型图 205

8.9.2 画功能级数据流图 205

8.9.3 描述处理框功能 206

小结 206

练习题 206

第9章 面向对象设计 207

9.1 设计的准则 207

9.1.1 转向面向对象的设计 207

9.1.2 抽象 208

9.1.3 信息隐藏 208

9.1.4 模块化 208

9.1.5 类的设计准则 208

9.1.6 面向对象的设计基本原理 208

9.1.7 软件复用 209

9.1.8 面向对象设计的步骤 209

9.2 启发式规则 209

9.2.1 简单 209

9.2.2 设计变动尽可能小 210

9.2.3 设计结果的可懂性 210

9.3 系统分解 210

9.3.1 子系统之间的两种交互方式 211

9.3.2 组织系统的两种方案 211

9.3.3 设计系统的拓扑结构 212

9.4 设计问题域子系统 212

9.5 设计任务子系统 216

9.6 设计数据管理子系统 217

9.6.1 数据管理方法 217

9.6.2 设计数据管理子系统 218

9.7 面向对象程序设计 219

9.7.1 面向对象程序的特点 219

9.7.2 OOPL概观 219

9.7.3 OOPL的特征 220

9.8 软件重用 221

9.8.1 软件重用概述 221

9.8.2 软件重用的效果 222

9.8.3 软件重用技术 223

9.9 统一建模语言UML 224

9.9.1 UML的概念模型 225

9.9.2 UML的软件分析与开发步骤 227

小结 228

练习题 228

第10章 形式化方法 230

10.1 形式化方法的基础知识 230

10.1.1 形式化方法概念 231

10.1.2 数学知识 231

10.1.3 应用数学符号描述形式规约 242

10.1.4 形式化规约语言 244

10.2 有限状态机(FSM) 246

10.3 Petri网的基本原理 247

10.3.1 静态结构 247

10.3.2 动态特征 248

10.3.3 转移启动规则 249

10.3.4 行为特性 251

10.3.5 行为特性分析方法 254

10.3.6 结构特性分析方法 260

10.3.7 Petri网到程序结构的转换 263

10.4 净室方法学 266

10.4.1 净室方法 266

10.4.2 净室过程模型 267

10.4.3 功能规约 268

10.4.4 黑盒规约 269

10.4.5 状态盒规约 270

10.5 客户/服务器模式 270

10.5.1 系统的结构 270

10.5.2 中间件和对象请求代理体系结构 271

10.5.3 分析建模问题 272

10.5.4 对C/S系统的设计 272

小结 274

练习题 275

第11章 用户界面设计 276

11.1 界面软件设计概述 276

11.1.1 可使用性 276

11.1.2 灵活性 277

11.1.3 复杂性和可靠性 277

11.1.4 用户界面设计存在的问题 277

11.2 设计人-机交互子系统 278

11.2.1 准则 278

11.2.2 策略 278

11.2.3 设计的形式 279

11.2.4 交互工具 281

11.3 图形用户界面设计 281

11.3.1 菜单的选择 281

11.3.2 对话框 283

11.3.3 窗口 284

11.4 多媒体用户界面设计 284

11.4.1 多媒体用户界面的设计特点 285

11.4.2 虚拟现实 285

11.4.3 多通道人机交互技术 286

11.4.4 多媒体用户界面细节设计 286

11.5 用户界面模型 287

11.6 用户界面的描述方法与技术 288

11.7 用CASE工具支持界面设计 288

11.8 新一代界面的主要特征 289

小结 290

练习题 290

第12章 软件质量 291

12.1 软件质量概述 291

12.1.1 软件质量的定义 291

12.1.2 软件质量特性 291

12.1.3 软件质量特性之间的竞争 294

12.2 软件质量的度量和评价 296

12.2.1 软件质量的度量 296

12.2.2 软件质量度量的分类 297

12.2.3 软件质量评价 297

12.3 软件质量保证 300

12.3.1 软件质量保证的概述 300

12.3.2 软件质量保证原则 300

12.3.3 软件质量保证计划 301

12.3.4 软件质量保证的措施 301

12.3.5 软件质量管理小组 301

12.4 技术评审与审查 302

12.4.1 评审过程 302

12.4.2 选择参加评审的成员 303

12.4.3 评审的管理和组织 303

12.4.4 评审的方法 303

12.4.5 走查和审查 304

12.4.6 开发过程的评审 304

12.4.7 对评审的综合评价 305

12.5 软件的可靠性 306

小结 306

练习题 307

第13章 软件实现 308

13.1 程序设计语言的特性及选择 308

13.1.1 程序设计语言特性 308

13.1.2 程序设计语言的选择 309

13.2 程序设计风格 312

13.3 程序设计效率 314

13.3.1 代码效率 314

13.3.2 内存效率 314

13.3.3 I/O效率 315

13.4 冗余编程 315

13.5 软件容错技术 316

13.5.1 容错软件 316

13.5.2 容错的一般方法 317

13.5.3 容错软件的设计过程 320

13.5.4 软件的容错系统结构 320

小结 323

练习题 324

第14章 软件测试 325

14.1 软件测试概述 325

14.1.1 软件测试的目的 325

14.1.2 软件测试的原则 325

14.2 测试方法 326

14.2.1 静态测试 326

14.2.2 动态测试 326

14.3 测试用例的设计 327

14.3.1 白盒技术 327

14.3.2 黑盒技术 332

14.4 测试过程 336

14.4.1 软件测试过程中的信息 336

14.4.2 软件测试的步骤与各开发阶段的关系 336

14.4.3 单元测试 337

14.4.4 集成测试 338

14.4.5 确认测试 341

14.5 调试 342

14.5.1 调试的目的 342

14.5.2 调试技术 342

小结 343

练习题 344

第15章 软件维护 345

15.1 软件维护概述 345

15.1.1 软件维护的定义 345

15.1.2 影响维护工作的因素 346

15.1.3 维护成本 346

15.2 软件可维护性 346

15.2.1 软件可维护性的定义 347

15.2.2 可维护性的度量 347

15.3 软件维护的特点 349

15.3.1 非结构化维护和结构化维护 349

15.3.2 维护的困难性 350

15.3.3 软件维护的费用 350

15.4 软件维护的实施 351

15.4.1 维护的组织 351

15.4.2 维护的流程 352

15.4.3 维护技术 353

15.4.4 维护的副作用 353

15.5 维护“老化代码” 354

15.6 逆向工程和再工程 355

15.6.1 预防性维护 355

15.6.2 逆向工程的元素 356

15.6.3 再工程中的重构技术 357

小结 360

练习题 360

第16章 软件项目管理与计划 361

16.1 软件项目管理概述 361

16.1.1 软件管理的对象 361

16.1.2 软件开发中的资源 362

16.1.3 分解技术 363

16.2 项目管理过程 363

16.3 软件开发成本估算 364

16.3.1 软件开发成本估算方法 365

16.3.2 软件开发成本估算的经验模型 366

16.4 风险分析 367

16.4.1 风险识别 368

16.4.2 风险估算 368

16.4.3 风险评价 369

16.4.4 风险驾驭和监控 370

16.5 进度安排 372

16.5.1 软件开发小组人数与软件生产率 372

16.5.2 任务的确定与并行性 372

16.5.3 制定开发进度计划 373

16.5.4 进度安排的图形方法 374

16.5.5 项目的追踪和控制 375

16.6 软件项目的组织 375

16.6.1 软件项目管理的特点 375

16.6.2 软件项目组织的建立 376

16.6.3 人员配备 379

小结 380

练习题 381

附录 软件产品的主要文件 382

A.1 任务书 383

A.2 可行性研究报告 384

A.3 软件需求报告 388

A.4 数据要求说明书 391

A.5 概要设计说明书 392

A.6 数据库设计说明书 394

A.7 细节设计说明书 395

A.8 测试计划 396

A.9 编码与单元测试评审报告 397

A.10 用户手册 398

A.11 项目开发总结报告 400

A.12 鉴定会纪要 402