《软件工程教程》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:孙涌,陈建明,王辉编著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2010
  • ISBN:9787111300021
  • 页数:335 页
图书介绍:本教材总结多年作者软件工程教学和研究的经验与成果,在进行基本概念、方法、技术介绍的同时,充分注意以下几个方面的问题与关系:传统内容与现代较新发展的协调;结构化软件工程与面向对象软件工程的关系;尽量满足和兼顾不同层次、各种人员对于软件工程课程的需求。本书共十六章。其中一到九章以结构化软件工程为主,概括介绍了软件工程学的基本原理、概念和方法。与以往教材不同的是,在教材中,融合了当前一些新观念,适当加入对某些软件工程问题的最新观点和讨论,以便开阔学生的思路。第十、十一章集中和比较完整地介绍了面向对象的开发方法和UML,突出了Card和Yourdon面向对象的方法和思想,比较详细地阐述了利用UML进行软件开发的完整过程。同时还对对象与关系型数据库之间的映射问题进行了讨论。第十二章到第十五章讨论软件工程的管理技术、质量保证技术即软件工程环境。第十六章对软件工程的新技术进行了介绍。较有特色之处在于将小组、个体软件工程过程、设计模式、敏捷软件开发引入教材中。

第1章 软件工程概述 1

1.1 软件发展和软件危机 1

1.1.1 软件的定义和发展 1

1.1.2 软件危机过程 2

1.2 软件工程学的范畴 5

1.3 软件开发的生命周期 5

1.4 传统软件工程和面向对象软件工程 7

1.5 软件的特点 10

1.6 软件工程的基本目标 11

小结 12

习题 12

第2章 软件生命周期过程模型 13

2.1 过程及软件生命周期 13

2.2 软件过程模型 14

2.2.1 瀑布模型 15

2.2.2 具有原型化的瀑布模型 17

2.3 演化过程模型 18

2.3.1 原型化模型 18

2.3.2 螺旋模型 19

2.3.3 操作说明模型 20

2.4 增量过程模型 21

2.4.1 RAD模型 21

2.4.2 增量和迭代模型 22

2.5 其他类型的过程模型 23

2.5.1 喷泉模型 23

2.5.2 智能模型 24

2.5.3 V模型 25

2.5.4 变换模型 25

小结 26

习题 26

第3章 需求分析 27

3.1 需求分析的任务 27

.3.1.1 需求定义 27

3.1.2 需求的层次 28

3.1.3 需求的开发与管理 28

3.2 需求获取技术 30

3.2.1 需求分析人员的组成 30

3.2.2 需求的类型 30

3.2.3 获取需求的途径 31

3.3 需求规格说明书 36

3.3.1 需求说明的目的 36

3.3.2 需求说明的方法 36

3.4 需求描述技术 36

3.4.1 结构化技术 36

3.4.2 形式化技术 40

3.5 需求验证 48

小结 49

习题 49

第4章 概要设计 51

4.1 概要设计的概念 51

4.1.1 概要设计的目标和任务 51

4.1.2 概要设计的过程 53

4.1.3 概要设计的工具 53

4.2 模块独立性 55

4.2.1 模块化 55

4.2.2 模块的耦合性 56

4.2.3 模块的内聚性 60

4.3 结构化设计方法 63

4.3.1 概念 63

4.3.2 变换分析 66

4.3.3 事务分析 68

4.3.4 设计的后处理 69

4.4 数据设计 70

4.4.1 数据设计的原则 70

4.4.2 数据结构设计 71

4.4.3 文件设计 71

4.4.4 数据库设计 72

小结 73

习题 73

第5章 详细设计 74

5.1 详细设计的任务 74

5.2 详细设计的方法 75

5.2.1 设计表示法 75

5.2.2 结构化程序设计 77

5.2.3 面向数据结构的设计 80

5.2.4 详细设计文档与复审 85

小结 90

习题 91

第6章 编码与语言选择 92

6.1 编码的目的和任务 92

6.2 编码所使用的语言 93

6.2.1 程序设计语言范型 93

6.2.2 程序设计语言的发展 94

6.2.3 常用的编码语言 96

6.2.4 编码语言的选择 98

6.3 编码的风格 99

小结 103

习题 103

第7章 面向对象方法 104

7.1 面向对象的基本概念 104

7.1.1 对象 104

7.1.2 类与消息 105

7.1.3 类的基本特征 106

7.2 面向对象的开发方法 106

7.2.1 概述 107

7.2.2 面向对象方法的发展历程 107

7.2.3 常用的面向对象分析的方法 108

7.3 面向对象的设计 111

7.3.1 面向对象设计概述 111

7.3.2 底层设计——类的设计 118

7.3.3 OOD的Yourdon的方法 120

7.3.4 Booch的方法 125

7.3.5 系统的设计过程 126

小结 129

习题 129

第8章 统一建模语言 130

8.1 统一建模语言简介 130

8.1.1 发展历史 130

8.1.2 UML简介 131

8.1.3 UML视图简介 132

8.1.4 视图 132

8.1.5 UML类、构件、部署和协作图中的图标 133

8.1.6 扩展组件 134

8.1.7 各种视图间的关系 134

8.2 概念与视图 135

8.2.1 静态视图 135

8.2.2 用例图 136

8.2.3 交互视图 136

8.2.4 状态图 138

8.2.5 活动视图 139

8.2.6 物理视图 140

8.2.7 模型管理视图 142

8.3 UML与Java的对应关系 143

8.3.1 表示结构 143

8.3.2 表示关系 145

8.4 统一建模语言的综合应用 149

8.4.1 项目概述 149

8.4.2 静态分析和设计 150

8.4.3 持久对象设计 151

8.4.4 动态对象设计 152

8.4.5 通用接口设计 154

8.4.6 体系结构设计 157

小结 159

习题 160

第9章 统一软件过程 161

9.1 软件开发过程 161

9.2 迭代和递增 162

9.3 核心工作流 162

9.3.1 需求流 162

9.3.2 分析流 164

9.3.3 设计流 166

9.3.4 实现流 167

9.3.5 测试流 168

9.3.6 交付后维护 170

9.3.7 退役 170

9.4 统一过程的各阶段 171

9.4.1 开始阶段 171

9.4.2 细化阶段 173

9.4.3 构建阶段 173

9.4.4 转换阶段 174

9.5 二维生命周期模型 174

小结 174

习题 174

第10章 软件测试 176

10.1 软件测试概述 176

10.1.1 软件测试的目标 176

10.1.2 软件测试的原则 177

10.1.3 软件测试的方法 178

10.1.4 软件测试与软件开发各阶段的关系 178

10.1.5 测试信息流 179

10.1.6 错误分类 179

10.2 软件测试过程与策略 182

10.2.1 单元测试 182

10.2.2 集成测试 183

10.2.3 确认测试 186

10.2.4 平行运行 187

10.3 设计测试方案 187

10.3.1 逻辑覆盖 188

10.3.2 等价划分 191

10.3.3 边界值分析 194

10.3.4 错误推测 194

10.3.5 实用测试策略 195

10.4 纠错 198

10.5 对OOA和OOD模型的测试 200

10.5.1 扩大测试的视角 201

10.5.2 测试OOA和OOD模型 201

10.6 面向对象的测试策略 203

10.6.1 在OO语境中的单元测试 203

10.6.2 在OO语境中的集成测试 203

10.6.3 在OO语境中的有效性测试 204

10.7 OO软件的测试用例设计 204

10.7.1 OO概念的测试用例设计的含义 204

10.7.2 传统测试用例设计方法的可用性 204

10.7.3 基于故障的测试 205

10.7.4 OO编程对测试的影响 205

10.7.5 测试用例和类层次 206

10.7.6 基于场景的测试设计 206

10.7.7 测试表层结构和深层结构 207

10.8 其他专门环境要求的测试 208

10.8.1 GUI测试 208

10.8.2 测试文档和帮助设施 209

10.8.3 实时系统测试 210

小结 211

习题 211

第11章 软件维护 213

11.1 系统的变化 213

11.1.1 系统的类型 214

11.1.2 系统生命周期中的变化 215

11.1.3 系统的生命范围 216

11.2 软件维护的基本内容和特点 218

11.2.1 软件维护概述 218

11.2.2 软件维护的特点 219

11.2.3 维护中的问题 220

11.3 软件维护的实施 221

11.3.1 软件维护的过程 221

11.3.2 软件维护的技术 224

11.4 软件的可维护性 224

11.4.1 软件可维护性概述 225

11.4.2 软件可维护性度量 225

11.4.3 提高可维护性的方法 225

11.5 软件维护的副作用 226

11.5.1 代码副作用 226

11.5.2 数据副作用 227

11.5.3 文档副作用 227

11.6 软件再工程 227

11.6.1 软件再工程的过程 227

11.6.2 软件再工程的方法 228

小结 228

习题 229

第12章 软件质量及其管理 230

12.1 软件质量的概念及属性 230

12.1.1 软件质量概述 230

12.1.2 软件质量的属性 230

12.2 软件质量保证与控制 231

12.2.1 软件质量保证概述 232

12.2.2 软件质量保证计划 232

12.2.3 软件质量成本 234

12.2.4 软件质量控制 234

12.3 软件质量度量 235

12.3.1 软件质量度量概述 235

12.3.2 质量度量模型 235

12.3.3 三种度量模型的比较 236

12.3.4 软件质量评价 238

12.4 软件可靠性 238

12.4.1 基本概念 238

12.4.2 影响软件可靠性的因素 239

12.4.3 软件可靠性模型 240

12.4.4 软件可靠性工程 242

12.5 CMM:软件能力成熟度模型 242

12.5.1 CMM的发展 242

12.5.2 基本概念 243

12.5.3 SW-CMM的用途 243

12.5.4 CMM的五个等级 244

12.5.5 CMM的内部结构 246

12.5.6 采用CMM的意义 248

小结 249

习题 249

第13章 软件项目管理 250

13.1 项目管理的概念 250

13.1.1 项目管理过程 250

13.1.2 项目管理的范围 251

13.1.3 项目管理中的资源 251

13.2 可行性研究 252

13.2.1 可行性研究的任务和过程 252

13.2.2 技术可行性研究 253

13.2.3 经济可行性研究 254

13.2.4 运行可行性研究 256

13.3 软件项目估算 257

13.3.1 代码行技术 257

13.3.2 功能点技术 257

13.4 软件开发成本估算 260

13.4.1 软件开发成本估算方法 260

13.4.2 专家判定技术 260

13.4.3 软件开发成本估算的早期经验模型 261

13.5 进度安排 264

13.5.1 软件开发小组人数与软件生产率 264

13.5.2 任务的确定与并行性 264

13.5.3 制定开发进度计划 265

13.5.4 项目的追踪和控制 265

13.6 人员组织 266

13.6.1 民主制程序员组 266

13.6.2 主程序员组 267

13.6.3 现代程序员组 268

13.7 软件风险管理 269

13.7.1 风险识别 269

13.7.2 风险估计 271

13.7.3 风险评价 272

13.7.4 风险驾驭和监控 273

13.8 软件配置管理 274

13.8.1 软件配置 274

13.8.2 软件配置管理过程 275

小结 276

习题 276

第14章 CASE环境与工具 278

14.1 工程环境 278

14.1.1 软件开发环境的特点 278

14.1.2 理想环境的模型 280

14.1.3 CASE环境简介 280

14.2 CASE环境的组成与结构 281

14.2.1 CASE的组成构件 281

14.2.2 CASE的一般结构 283

14.3 CASE环境工具与实践 284

14.3.1 CASE软件工程实践 284

14.3.2 常用CASE工具介绍 285

14.4 逐步求精 287

小结 290

习题 290

第15章 软件工程新技术概述 292

15.1 敏捷软件开发过程 292

15.1.1 敏捷的概念 293

15.1.2 敏捷过程的含义 293

15.1.3 敏捷过程模型 295

15.2 设计模式 302

15.2.1 设计模式的基本概念 302

15.2.2 关系环与组合模式 303

15.2.3 工厂模式 306

15.2.4 观察者模式与拉推数据 315

15.3 Web工程简介 320

15.3.1 Web系统和应用特点 320

15.3.2 Web工程的层次 321

15.3.3 Web分析 322

15.3.4 Web设计 323

15.3.5 Web测试 324

15.3.6 Web的项目管理 328

小结 330

习题 330

参考文献 331