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

  • 购买积分:11 如何计算积分?
  • 作  者:孙家广主编;刘强编著
  • 出 版 社:北京:高等教育出版社
  • 出版年份:2005
  • ISBN:704016308X
  • 页数:271 页
图书介绍:软件工程是为了解决开发成本效益和软件质量的问题而产生的,并成为一门迅速发展的新兴学科,新概念、新技术、新方法不断涌现。特别是20世纪90年代以来,软件工程在技术方法、工具和管理等诸多方面取得了跨越式的发展,传统的结构化方法逐渐被新兴的面向对象方法和组件化开发所代替,大量的成功实践总结出体系结构、设计模式和软件组件等。因此,本书结合当前软件工程的理论和实践,以面向对象方法为核心,介绍软件工程的基本原理、概念和技术方法。本书共11章,第1章概括介绍软件工程的历史发展和基本原理,讨论IEEE和ACM最新提出的软件工程知识体系和软件工程职业道德规范;第2章讨论软件过程的基本思想和活动,介绍软件过程模型和软件过程能力成熟度模型;第3章讨论软件工程的管理技术;第4章到第11章以面向对象方法为核心,全面、深入、系统地介绍软件生命周期各个阶段的任务、过程、方法和工具。为了使读者在实际的软件开发过程中能够应用软件工程的技术和方法,本书强调结合丰富的实例进行讲解,并以IEEE发布的系列软件工程标准贯穿其中,充分体现了系统性、先进性和实用性。希望本书对读者从事软件工程实践有所帮助,并为以后深入研究这门学科奠

第1章 概述 1

1.1 软件 1

1.1.1 软件的特性 2

1.1.2 软件的发展 4

1.1.3 软件危机 5

1.2 软件工程 7

1.2.1 软件工程的概念 7

1.2.2 软件工程的三要素 7

1.2.3 软件质量的特性 8

1.2.4 软件工程方法 9

1.2.5 计算机辅助软件工程CASE 10

1.2.6 当前面临的主要挑战 12

1.3.1 SWEBOK项目介绍 14

1.3 软件工程知识体系(SWEBOK) 14

1.3.2 SWEBOK的组成 15

1.3.3 软件工程与其他相关学科的关系 19

1.4 软件工程职业道德规范 20

1.4.1 IEEE/ACM职业道德准则 20

1.4.2 软件工程人员的职业道德建设 21

习题 21

第2章 软件过程 23

2.1 软件过程的概念 23

2.1.1 任务思维与过程思维 23

2.1.2 软件过程的定义 24

2.1.3 软件过程的基本活动 25

2.1.4 软件过程的制品 26

2.2 软件过程模型 27

2.2.1 瀑布模型 27

2.2.2 快速原型模型 28

2.2.3 增量模型 29

2.2.4 螺旋模型 30

2.2.5 形式化方法模型 31

2.2.6 基于组件的开发模型 31

2.3 案例:微软公司的软件开发过程 32

2.3.1 微软公司的开发管理原则 32

2.3.2 微软公司的软件过程模型 33

2.3.3 递进式的软件开发策略 34

习题 35

第3章 软件项目管理 36

3.1 软件项目管理概述 36

3.1.1 软件项目的特征 36

3.1.2 软件项目管理的“4P” 37

3.1.3 软件项目管理活动 38

3.2 人员组织与管理 40

3.2.1 软件项目组织 40

3.2.2 案例:微软公司的软件开发组织 42

3.2.3 软件团队的建设 44

3.3 项目沟通管理 45

3.3.1 项目沟通复杂性 45

3.3.2 项目沟通方式 46

3.3.3 项目沟通活动 48

3.4 软件项目规划 50

3.4.1 软件规模估算 50

3.4.2 软件成本估算 54

3.4.3 软件项目计划 56

3.5 软件风险管理 57

3.5.1 风险识别 58

3.5.2 风险分析 62

3.5.3 风险规划 63

3.5.4 风险监控 64

3.6 软件配置管理 65

3.6.1 基本概念 65

3.6.2 配置管理活动 66

3.6.3 配置管理工具 69

习题 69

第4章 需求工程 71

4.1 软件需求 71

4.1.1 业务需求 72

4.1.2 用户需求 74

4.1.3 功能需求和非功能需求 74

4.1.4 系统需求 76

4.2 需求工程过程 76

4.2.2 需求分析 77

4.2.1 需求获取 77

4.2.3 需求规格说明 78

4.2.4 需求验证 81

4.2.5 需求管理 84

4.3 需求获取技术 87

4.3.1 面谈 87

4.3.2 需求专题讨论会 89

4.3.3 观察用户工作流程 90

4.3.4 原型化方法 91

4.3.5 基于用例的方法 91

4.4 案例:小型图书资料管理系统 92

4.4.1 确定参与者 92

4.4.2 确定场景 93

4.4.4 编写用例描述 94

4.4.3 确定用例 94

习题 96

第5章 软件工程中的形式化方法 98

5.1 形式化方法基本概念 99

5.1.1 形式规约(Formal Specification) 99

5.1.2 形式证明与验证(Formal Verification and Validation) 100

5.1.3 程序求精(Program Refinement) 101

5.2 时态逻辑 101

5.2.1 一阶线性时态逻辑 102

5.2.2 计算树逻辑 106

5.3 模型检验 110

5.4 Z语言 111

5.4.1 概述 111

5.4.2 Z语言表示 112

5.4.3 Z语言实例 115

5.5 Petri网 126

5.5.1 基本定义 126

5.5.2 Petri网规格实例——信号灯 130

习题 130

第6章 面向对象基础 133

6.1 面向对象方法概述 133

6.1.1 面向对象技术的发展历史 133

6.1.2 面向对象的软件工程方法 134

6.2 面向对象基本概念 135

6.2.1 对象 135

6.2.2 类 136

6.2.3 封装 136

6.2.5 消息 137

6.2.6 关联 137

6.2.4 继承 137

6.2.7 聚合 138

6.2.8 多态性 138

6.3 软件建模概念 138

6.3.1 系统、模型和视图 139

6.3.2 软件建模的重要性 139

6.4 统一建模语言UML 140

6.4.1 UML的发展历史 141

6.4.2 UML的概念模型 142

6.4.3 UML建模示例 146

6.4.4 UML应用 147

6.5 常用的UML图 148

6.5.1 用例图 148

6.5.2 类图 151

6.5.3 顺序图 153

6.5.4 状态图 154

习题 155

第7章 面向对象分析 157

7.1 分析的概念 157

7.1.1 分析类 157

7.1.2 分析活动 159

7.2 识别分析类 159

7.2.1 识别边界类 159

7.2.2 识别控制类 160

7.2.3 识别实体类 161

7.3 定义交互行为 164

7.4 建立分析类图 166

7.4.1 定义关系和属性 166

7.4.2 应用分析模式 167

7.5 评审分析模型 168

习题 169

第8章 面向对象设计 171

8.1 设计的概念 171

8.1.1 设计活动 171

8.1.2 设计原则 172

8.2 软件体系结构 174

8.2.1 仓库体系结构 175

8.2.2 分层体系结构 176

8.2.3 MVC体系结构 176

8.2.4 客户机/服务器体系结构 177

8.2.5 管道和过滤体系结构 178

8.2.6 案例:MiniLibraray系统体系结构 178

8.3 系统设计 180

8.3.1 识别设计元素 180

8.3.2 数据存储策略 181

8.3.3 部署子系统 182

8.3.4 系统设计评审 182

8.4 详细设计 183

8.4.1 方法建模 183

8.4.2 属性建模 184

8.4.3 状态建模 185

8.4.4 关系建模 185

8.4.5 详细设计评审 186

8.5 应用设计模式 186

8.5.1 Abstract Factory模式 187

8.5.2 Adaptor模式 187

8.5.3 Bridge模式 188

8.5.4 Facade模式 188

8.6.1 用户界面设计原则 189

8.6 用户界面设计 189

8.6.2 Web界面的设计 190

8.6.3 用户支持 190

8.7 设计文档 191

习题 193

第9章 软件实现 196

9.1 程序设计语言 196

9.2 软件编码规范 198

9.2.1 文件命名与组织 198

9.2.2 代码的版式 200

9.3 软件编码案例分析 206

9.3.1 程序注释问题 206

9.3.2 变量命名问题 209

9.3.3 内存异常问题 210

9.3.4 异常处理问题 214

9.3.5 性能问题 215

9.4 软件代码审查 217

习题 218

第10章 软件测试 221

10.1 验证与确认 221

10.1.1 软件的错误 221

10.1.2 验证与确认 222

10.1.3 V V的活动 223

10.2 软件测试基础 224

10.2.1 什么是软件测试 224

10.2.2 软件测试的基本原则 224

10.2.3 软件测试与软件开发各阶段的关系 226

10.2.4 测试文档 227

10.2.5 软件测试信息流 228

10.2.6 软件测试人员 229

10.3 软件测试策略 231

10.3.1 单元测试 231

10.3.2 集成测试 234

10.3.3 确认测试 236

10.3.4 系统测试 237

10.3.5 软件调试 238

10.4 软件测试方法 240

10.4.1 静态测试与动态测试 240

10.4.2 黑盒测试与白盒测试 241

10.4.3 黑盒测试方法 242

10.4.4 白盒测试方法 244

10.4.5 程序的静态测试 247

10.5 面向对象软件测试 247

10.5.1 面向对象测试类型 248

10.5.2 面向对象测试示例 249

10.5.3 GUI测试示例 253

10.6 软件测试工具 254

10.6.1 Junit 255

10.6.2 LoadRunner 258

习题 259

第11章 软件演化 261

11.1 软件演化的特性 261

11.2 软件维护 262

11.2.1 软件维护的概念 262

11.2.2 软件维护的特点 263

11.2.3 软件维护的过程 264

11.3 软件再工程 266

习题 268

参考文献 269