《软件工程 方法与实践》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:赵文耘,彭鑫,张刚,沈立炜著
  • 出 版 社:上海:复旦大学出版社
  • 出版年份:2014
  • ISBN:9787309110104
  • 页数:372 页
图书介绍:软件工程是计算机科学及软件工程等相关专业的研究生学位课或研究生专业课,该课程的目的是向研究生介绍有关软件工程的重要研究课题,及其基本概念、基本原理和基本方法,使研究生对这些课题有所了解,并为其在某些课题的深入研究打下基础。本书主要包括以下内容:软件工程概述;软件过程;软件需求工程;软件设计;软件构造技术;软件测试;软件维护与再工程;软件复用与构件技术;软件产品线;面向方面的软件工程。

第1章 软件工程概述 1

1.1 软件工程基本概念 1

1.2 软件开发的根本性困难 2

1.3 软件工程知识领域 3

1.4 各章内容简介 4

1.4.1 软件过程 4

1.4.2 需求工程 5

1.4.3 软件设计 6

1.4.4 软件构造 6

1.4.5 软件测试 7

1.4.6 软件维护 7

1.4.7 软件复用与构件技术 8

1.4.8 软件产品线 9

1.4.9 软件开发新技术 9

本章参考文献 10

第2章 软件过程 11

2.1 概述 11

2.1.1 基本概念 11

2.1.2 ISO/IEC 12207软件生存周期过程 12

2.1.3 软件过程模型 17

2.2 统一软件开发过程 20

2.2.1 迭代和增量的过程框架 21

2.2.2 用况驱动,以构架为中心 23

2.2.3 核心工作流 24

2.3 敏捷和精益方法 27

2.3.1 概述 27

2.3.2 敏捷方法的价值观和原则 28

2.3.3 精益思想 31

2.3.4 敏捷和精益实践简介 35

2.4 软件能力成熟度和过程改进 42

2.4.1 软件过程改进 42

2.4.2 能力成熟度模型集成 44

本章参考文献 46

第3章 软件需求工程 48

3.1 需求工程概述 48

3.1.1 软件需求 48

3.1.2 现状与挑战 49

3.1.3 需求制品 50

3.1.4 需求工程过程及活动 51

3.2 系统与上下文分析 52

3.2.1 软件密集型系统 52

3.2.2 从系统需求到软件需求 54

3.2.3 系统上下文 55

3.2.4 问题框架方法 56

3.3 需求制品 61

3.3.1 目标 61

3.3.2 场景 67

3.3.3 面向方案的需求 74

3.4 需求工程活动 78

3.4.1 需求获取 78

3.4.2 需求分析 80

3.4.3 文档化 81

3.4.4 需求确认 82

3.5 需求管理 83

3.5.1 需求追踪管理 83

3.5.2 需求优先级管理 85

3.5.3 需求变更管理 86

本章参考文献 87

第4章 软件设计 89

4.1 软件设计概述 89

4.1.1 软件设计的目标 89

4.1.2 软件设计的相关概念 90

4.1.3 软件设计的设计原则 91

4.1.4 软件设计的过程模型 93

4.2 模型和视图 95

4.2.1 模型 95

4.2.2 视图 95

4.2.3 UML建模语言 96

4.3 质量属性 99

4.3.1 质量属性和设计 99

4.3.2 ISO/IEC 25010 100

4.3.3 质量属性效用树 102

4.4 软件体系结构设计 104

4.4.1 软件体系结构的定义 104

4.4.2 软件体系结构视图 106

4.4.3 风格、模式和框架 111

4.4.4 软件体系结构模式 112

4.5 设计评审 119

4.5.1 设计评审目标 119

4.5.2 设计评审原则 120

4.5.3 体系结构评估方法 121

本章参考文献 126

第5章 软件构造 128

5.1 软件构造的概述 128

5.2 构造阶段的设计 129

5.2.1 抽象数据类型 130

5.2.2 类和接口 131

5.2.3 依赖 135

5.2.4 契约式设计 138

5.3 编码 141

5.3.1 语言 141

5.3.2 编程规范 144

5.3.3 错误处理 145

5.4 单元测试 147

5.4.1 基本概念 148

5.4.2 自动化单元测试框架 148

5.4.3 依赖和测试替身 150

5.4.4 测试先行 151

5.4.5 测试驱动开发 152

5.5 集成 153

5.5.1 “大爆炸”集成和增量集成 153

5.5.2 持续集成 153

5.6 软件构造工具 156

5.6.1 版本管理系统 156

5.6.2 编译和调试工具 157

5.6.3 集成开发环境 157

本章参考文献 158

第6章 软件测试 159

6.1 软件测试概述 159

6.1.1 软件测试的价值 159

6.1.2 软件测试的概念 160

6.1.3 典型的软件测试级别 161

6.1.4 软件测试的原则 161

6.2 软件测试过程 162

6.2.1 软件测试过程模型 162

6.2.2 软件测试标准 164

6.3 软件测试技术 164

6.3.1 黑盒测试 164

6.3.2 白盒测试 169

6.3.3 组合测试 175

6.3.4 变异测试 176

6.3.5 静态测试 177

6.4 软件测试类型 178

6.4.1 单元测试 178

6.4.2 集成测试 180

6.4.3 系统测试 183

6.4.4 验收测试 187

6.4.5 回归测试 188

6.5 软件测试工具 189

6.5.1 静态代码分析工具 189

6.5.2 系统测试工具 192

6.6 面向对象软件的测试 194

6.6.1 面向对象软件测试的难点 194

6.6.2 面向对象软件的测试方法 195

本章参考文献 198

第7章 软件维护 200

7.1 软件维护概述 200

7.1.1 软件维护类型 200

7.1.2 软件的可维护性 201

7.1.3 软件维护过程 201

7.1.4 软件再工程 202

7.1.5 软件维护技术 204

7.2 软件分析 204

7.2.1 静态分析 205

7.2.2 动态分析 210

7.2.3 开发历史分析 211

7.3 程序理解与变更影响分析 211

7.3.1 特征定位 212

7.3.2 软件制品追踪关系 212

7.3.3 变更影响分析 213

7.4 软件逆向工程 214

7.4.1 软件逆向工程概述 214

7.4.2 程序度量 216

7.4.3 模型逆向恢复 217

7.4.4 软件体系结构逆向恢复 218

7.4.5 软件可视化 223

7.5 软件重构 225

7.5.1 代码的坏味道 225

7.5.2 基本的软件重构类型 228

7.5.3 重构的原则 231

7.6 软件维护工具 232

7.6.1 缺陷跟踪管理工具 232

7.6.2 任务管理工具 233

7.6.3 特征定位工具 234

7.6.4 克隆分析工具 235

7.6.5 逆向分析工具 236

7.6.6 代码分析和度量工具 237

本章参考文献 239

第8章 软件复用与构件技术 241

8.1 软件复用基础 241

8.1.1 软件复用分类 241

8.1.2 软件复用的发展、现状与挑战 243

8.1.3 软件复用经济学 245

8.2 软件复用过程 247

8.2.1 软件复用的一般过程 248

8.2.2 复用过程标准IEEE 1517 249

8.2.3 软件复用成熟度模型 250

8.3 软件复用技术 251

8.3.1 生成式复用 251

8.3.2 组装式复用 256

8.3.3 面向对象技术中的软件复用 257

8.4 基于构件的软件开发 260

8.4.1 软件构件的定义 260

8.4.2 软件构件模型 261

8.4.3 构件组装技术 267

8.4.4 商用成品构件 274

8.4.5 构件管理 276

8.4.6 构件化对企业的影响 279

8.5 基于框架与中间件的复用 280

8.5.1 框架技术 280

8.5.2 中间件技术 285

本章参考文献 288

第9章 软件产品线 291

9.1 软件产品线基本思想和方法 291

9.1.1 从软件复用到软件产品线 291

9.1.2 软件产品线工程 292

9.1.3 软件产品线的特点和优势 293

9.1.4 软件产品线开发过程 294

9.2 软件产品线范围和可变性 296

9.2.1 产品线开发经济效益 296

9.2.2 产品线范围 297

9.2.3 软件产品线可变性 300

9.3 领域工程 305

9.3.1 领域需求工程 306

9.3.2 领域设计 313

9.3.3 领域实现 325

9.4 应用系统工程 330

9.4.1 应用系统需求工程 330

9.4.2 应用系统设计 333

9.4.3 应用系统实现 335

9.5 软件产品线管理 336

9.5.1 软件产品线管理中的特殊问题 336

9.5.2 软件产品线组织管理 337

9.5.3 软件产品线技术管理 338

本章参考文献 340

第10章 软件开发新技术 342

10.1 面向方面的编程 342

10.1.1 AOP概述 342

10.1.2 AOP与OOP的关系 345

10.1.3 AOP的实现框架与工具 346

10.1.4 AspectJ简介及其应用实例 347

10.1.5 Spring AOP简介及其应用实例 349

10.1.6 JBoss AOP简介及其应用实例 353

10.2 面向特征的编程 354

10.2.1 FOP概述 354

10.2.2 FOP语言模型 356

10.2.3 FeatureIDE 359

10.3 模型驱动的体系结构 362

10.3.1 MDA概述 362

10.3.2 MDA模型体系 364

10.3.3 基于MDA的软件开发过程 365

10.3.4 MDA应用实例 368

本章参考文献 371