《软件工程》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:张海藩编著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2002
  • ISBN:7115093784
  • 页数:338 页
图书介绍:本书吸取了国内外大量同类书刊的精华,并总结了编者多年来从事软件工程教学和研究的经验和体会,其特点是:讲解深入浅出,着重讲透基本的概念、原理、技术和方法;既注重系统性、科学性和先进性,又特别注重实用性;既有原理性论述,又有丰富、完整的实例与之配合,利于读者理解和掌握。本书由五篇共16章构成,第一篇讲述软件工程与软件过程;第二篇讲述结构化分析、设计与实现;第三篇讲述面向对象的概念、模型、分析、设计与实现;第四篇讲述软件项目的计划、组织和控制,并介绍了一些相关的国际标准;第五篇讲述形式化方法、统一建模语言UML和软件重用。本书内容新颖、实例丰富,可作为高等院校“软件工程”课程的教材或教学参考书,也可供软件工程师、软件项目管理者和应用软件的开发人员阅读参考。

第一篇 软件工程与软件过程 1

第1章 软件工程 1

1.1 软件危机 1

1.1.1 计算机系统的发展历程 1

1.1.2 软件危机的含义 2

1.1.3 产生软件危机的原因 3

1.1.4 消除软件危机的途径 5

1.2 软件工程 6

1.2.1 什么是软件工程 6

1.2.2 软件工程的基本原理 6

1.2.3 软件工程方法学 8

1.3 小结 10

习题 11

第2章 软件过程 13

2.1 软件生命周期的基本任务 13

2.2 瀑布模型 16

2.3 快速原型模型 18

2.4 增量模型 19

2.5 螺旋模型 20

2.6 喷泉模型 22

2.7 小结 23

习题 24

3.1 概述 25

第二篇 传统方法学 25

第3章 结构化分析 25

3.2 与用户通信的技术 26

3.2.1 访谈 26

3.2.2 简易的应用规格说明技术 27

3.2.3 软件原型 28

3.3 分析建模与规格说明 29

3.3.1 分析建模 29

3.3.2 软件需求规格说明 29

3.4.1 数据对象 31

3.4.2 属性 31

3.4 实体-关系图 31

3.4.3 关系 32

3.4.4 实体-关系图的符号 32

3.5 数据流图 33

3.5.1 数据流图符号 33

3.5.2 例子 34

3.5.3 命名 37

3.6 状态转换图 38

3.7 数据字典 39

3.8 小结 41

习题 42

4.1 结构化设计与结构化分析的关系 44

第4章 结构化设计 44

4.2.1 模块化 45

4.2 软件设计的概念和原理 45

4.2.2 抽象 47

4.2.3 逐步求精 47

4.2.4 信息隐藏 48

4.3 模块独立 49

4.3.1 耦合 49

4.3.2 内聚 50

4.4.1 改进软件结构提高模块独立性 51

4.4.2 模块规模应该适中 51

4.4 启发规则 51

4.4.3 深度、宽度、扇出和扇入都应适当 52

4.4.4 模块的作用域应该在控制域之内 52

4.4.5 力争降低模块接口的复杂程度 53

4.4.6 设计单入口单出口的模块 53

4.4.7 模块功能应该可以预测 53

4.5 表示软件结构的图形工具 53

4.5.1 层次图和HIPO图 53

4.5.2 结构图 55

4.6 面向数据流的设计方法 56

4.6.1 概念 56

4.6.2 变换分析 57

4.6.3 事务分析 63

4.6.4 设计优化 64

4.7 人机界面设计 65

4.7.1 人机界面设计问题 65

4.7.2 人机界面设计过程 66

4.7.3 界面设计指南 67

4.8 过程设计 69

4.9 过程设计的工具 71

4.9.1 程序流程图 71

4.9.2 盒图(N_S图) 72

4.9.3 PAD图 72

4.9.4 判定表 74

4.9.5 判定树 75

4.9.6 过程设计语言(PDL) 75

4.10 面向数据结构的设计方法 76

4.10.1 Jackson图 76

4.10.2 改进的Jackson图 77

4.10.3 Jackson方法 77

4.11 小结 82

习题 83

第5章 结构化实现 86

5.1 编码 87

5.1.1 选择程序设计语言 87

5.1.2 编码风格 88

5.2 软件测试基础 90

5.2.1 测试目标 90

5.2.2 黑盒测试和白盒测试 91

5.2.3 测试准则 91

5.2.4 流图 92

5.3 逻辑覆盖 94

5.4 控制结构测试 96

5.4.1 基本路径测试 96

5.4.2 条件测试 99

5.4.3 数据流测试 101

5.4.4 循环测试 102

5.5 黑盒测试技术 103

5.5.1 等价划分 104

5.5.2 边界值分析 106

5.5.3 错误推测 107

5.6 测试策略 108

5.6.1 测试步骤 108

5.6.2 单元测试 109

5.6.3 集成测试 111

5.6.4 确认测试 114

5.7 调试 115

5.7.2 调试途径 116

5.7.1 调试过程 116

5.8 软件可靠性 118

5.8.1 基本概念 118

5.8.2 估算平均无故障时间的方法 119

5.9 小结 121

习题 121

第三篇 面向对象方法学 127

第6章 面向对象的概念与模型 127

6.1 面向对象方法学概述 127

6.2 面向对象方法学的主要优点 129

6.3.1 对象 132

6.3 面向对象的概念 132

6.3.2 其他概念 134

6.4 面向对象建模 138

6.5 对象模型 139

6.5.1 表示类-&-对象的图形符号 139

6.5.2 表示结构的图形符号 140

6.5.3 对象模型之例 142

6.6 动态模型 143

6.6.1 概念 144

6.6.2 符号 144

6.7.1 表示方法 145

6.7.2 三种模型之间的关系 145

6.7 功能模型 145

6.8 小结 146

习题 146

第7章 面向对象分析 147

7.1 分析过程 147

7.1.1 概述 147

7.1.2 三个子模型与五个层次 148

7.2 需求陈述 149

7.2.1 书写要点 149

7.2.2 例子 150

7.3.1 确定类-&-对象 151

7.3 建立对象模型 151

7.3.2 确定关联 153

7.3.3 划分主题 156

7.3.4 确定属性 156

7.3.5 识别继承关系 159

7.3.6 反复修改 159

7.4 建立动态模型 161

7.4.1 编写脚本 162

7.4.2 设想用户界面 163

7.4.3 画事件跟踪图 163

7.4.4 画状态图 164

7.4.5 审查动态模型 166

7.5.3 描述处理框功能 167

7.5.2 画出功能级数据流图 167

7.5 建立功能模型 167

7.5.1 画出基本系统模型图 167

7.6 定义服务 168

7.6.1 常规行为 169

7.6.2 从事件导出的操作 169

7.6.3 与数据流图中处理框对应的操作 169

7.6.4 利用继承减少冗余操作 169

7.7 面向对象分析实例 169

7.7.1 需求陈述 169

7.7.2 建立对象模型 170

7.7.3 建立动态模型 171

7.7.5 进一步完善 173

7.7.4 建立功能模型 173

7.8 小结 175

习题 176

第8章 面向对象设计 177

8.1 面向对象设计的准则 177

8.1.1 模块化 178

8.1.2 抽象 178

8.1.3 信息隐藏 178

8.1.4 弱耦合 178

8.2 启发规则 179

8.1.6 可重用 179

8.1.5 强内聚 179

8.2.1 设计结果应该清晰易懂 180

8.2.2 一般-特殊结构的深度应适当 180

8.2.3 设计简单的类 180

8.2.4 使用简单的协议 181

8.2.5 使用简单的服务 181

8.2.6 把设计变动减至最小 181

8.3 系统分解 181

8.3.1 子系统之间的两种交互方式 182

8.3.2 组织系统的两种方案 182

8.4 设计问题域子系统 183

8.3.3 设计系统的拓扑结构 183

8.4.1 调整需求 184

8.4.2 重用已有的类 184

8.4.3 把问题域类组合在一起 184

8.4.4 增添一般化类以建立协议 184

8.4.5 ATM系统之例 184

8.5 设计人-机交互子系统 185

8.5.1 设计人-机交互界面的准则 185

8.5.2 设计人-机交互子系统的策略 186

8.6 设计任务管理子系统 187

8.6.2 设计任务管理子系统 188

8.6.1 分析并发性 188

8.7 设计数据管理子系统 189

8.7.1 选择数据存储管理模式 189

8.7.2 设计数据管理子系统 190

8.7.3 例子 192

8.8 设计类中的服务 192

8.8.1 确定类中应有的服务 192

8.8.2 设计实现服务的方法 193

8.9 设计关联 194

8.9.1 关联的遍历 194

8.9.2 实现单向关联 194

8.10.1 确定优先级 195

8.10.2 提高效率的几项技术 195

8.9.3 实现双向关联 195

8.10 设计优化 195

8.9.4 链属性的实现 195

8.10.3 调整继承关系 196

8.11 面向对象分析与设计实例 198

8.11.1 面向对象分析 199

8.11.2 面向对象设计 201

8.12 小结 205

习题 206

9.1.1 面向对象语言的优点 207

9.1 程序设计语言 207

第9章 面向对象实现 207

9.1.2 面向对象语言的技术特点 208

9.1.3 选择面向对象语言 211

9.2 程序设计风格 212

9.2.1 提高可重用性 212

9.2.2 提高可扩充性 214

9.2.3 提高健壮性 214

9.3 测试策略 215

9.3.1 面向对象的单元测试 215

9.3.2 面向对象的集成测试 215

9.4.1 测试类的方法 216

9.3.3面向对象的确认测试 216

9.4 设计测试用例 216

9.4.2 集成测试方法 217

9.5 小结 219

习题 220

第四篇 软件项目管理 221

第10章 计划 221

10.1 度量软件规模 221

10.1.1 代码行技术 221

10.1.2 功能点技术 222

10.2.2 动态多变量模型 224

10.2.1 静态单变量模型 224

10.2 工作量估算 224

10.2.3 COCOMO模型 225

10.3 进度计划 228

10.3.1 基本原则 229

10.3.2 Gantt图 229

10.3.3 工程网络 230

10.3.4 估算进度 232

10.3.5 关键路径 233

10.3.6 机动时间 233

10.4 小结 235

习题 236

11.1 民主制程序员组 237

第11章 组织 237

11.2 主程序员组 238

11.3 现代程序员组 240

11.4 软件项目组 241

11.4.1 三种组织方式 242

11.4.2 四种组织范型 243

11.5 小结 244

习题 244

第12章 控制 245

12.1 风险管理 245

12.1.1 软件风险分类 245

12.1.2 风险识别 246

12.1.3 风险预测 250

12.1.4 处理风险的策略 252

12.2 质量保证 253

12.2.1 软件质量 253

12.2.2 软件质量保证措施 254

12.3 配置管理 257

12.3.1 软件配置 257

12.3.2 软件配置管理过程 259

12.4 小结 264

习题 264

13.1.1 软件项目管理计划的组成 266

第13章 国际标准 266

13.1 IEEE 1058.1软件项目管理计划标准 266

13.1.2 IEEE软件项目管理计划 267

13.2 ISO9000质量标准 269

13.2.1 基本思想 269

13.2.2 ISO9000-3标准 270

13.3 ISO/IEC 12207软件生命周期过程标准 272

13.3.1 概述 272

13.3.2 软件生命周期过程 273

13.4 ISO/IEC TR 15504软件过程评估标准 276

13.4.2 标准的结构 277

13.4.1 概述 277

13.5 能力成熟度模型 278

13.5.1 能力成熟度模型的结构 279

13.5.2 能力成熟度等级 280

13.5.3 关键过程域 281

13.5.4 应用CMM 282

13.6 小结 282

习题 283

14.1 概述 285

14.1.1 非形式化方法的缺点 285

第14章 形式化方法 285

第五篇 高级课题 285

14.1.2 软件开发过程中的数学 286

14.1.3 应用形式化方法的准则 286

14.2 有穷状态机 287

14.2.1 基本概念 287

14.2.2 电梯问题 288

14.2.3 评论 291

14.3 Petri网 291

14.3.1 基本概念 291

14.3.2 应用实例 293

14.4 Z语言 294

14.4.1 简介 294

14.4.2 评论 296

14.5 小结 297

习题 297

第15章 统一建模语言UML 299

15.1 概述 299

15.1.1 UML的产生和发展 299

15.1.2 UML的结构 300

15.1.3 UML的图 301

15.1.4 UML的应用领域 302

15.2 静态建模机制 303

15.2.1 用例图 303

15.2.2 类图和对象图 306

15.3 动态建模机制 314

15.3.1 消息 314

15.3.2 状态图 314

15.3.3 顺序图 316

15.3.4 协作图 317

15.3.5 活动图 318

15.4 描述物理架构的机制 319

15.4.1 逻辑架构和物理架构 319

15.4.2 构件图 319

15.4.3 配置图 320

15.5.1 使用UML的准则 321

15.5 使用和扩展UML 321

15.5.2 扩展UML的机制 322

15.6 小结 323

习题 323

第16章 软件重用 324

16.1 可重用的软件成分 324

16.2 软件重用过程 325

16.2.1 构件组装模型 325

16.2.2 类构件 326

16.2.3 重用过程模型 327

16.3.1 分析过程 328

16.3 领域工程 328

16.3.2 领域特征 329

16.3.3 结构建模和结构点 330

16.4 开发可重用的构件 330

16.4.1 为了重用的分析与设计 330

16.4.2 基于构件的开发 331

16.5 分类和检索构件 332

16.5.1 描述可重用的构件 333

16.5.2 重用环境 335

16.6 软件重用的效益 335

16.7 小结 336

习题 337

参考文献 338