第一部分软件工程原理 1
1软件与软件工程 1
1.1软件工程概述 1
1.1.1软件与软件的特点 1
目 录 1
1.1.2软件工程 2
1.1.3软件工程的基本目标 4
1.1.4软件工程的原则 5
1.2.1软件生命期的概念 7
1.2软件生命周期 7
1.2.2软件过程模型 9
1.3软件工程面临的问题 15
2计算机系统及可行性研究 18
2.1基于计算机的系统与计算机系统工程 18
2.1.1 基于计算机的系统 18
2.1.2计算机系统工程 20
2.2.1 可行性研究及其任务 23
2.2可行性研究 23
2.2.2可行性研究报告 27
2.3系统分析与系统模型 27
2.3.1 常用的分析方法 28
2.3.2系统结构模型 30
2.3.3系统规格说明 31
3软件需求工程 34
3.1软件需求分析 34
3.1.1需求分析概述 34
3.1.2软件需求的层次 35
3.1.3需求工程 36
3.1.4需求分析原则 37
3.1.5需求分析的任务 38
3.1.6需求开发过程 39
3.2软件需求建模 43
3.2.1软件建模 43
3.2.2数据模型 44
3.2.3功能模型 45
3.2.4行为模型 47
3.2.5数据字典 49
3.2.6面向对象模型 49
3.3软件需求规格与评审 50
3.3.1软件需求规格概述 50
3.3.2需求规格说明的内容 50
3.3.3软件需求规格的评审 51
3.4需求管理 53
3.4.1 需求管理概述 53
3.4.2 需求变更 55
3.4.3需求跟踪 59
3.4.4需求变更的代价和风险 60
3.5软件需求分析与需求管理工具 60
3.5.1软件需求分析工具 60
3.5.2需求管理工具 62
4.1软件设计的概述 63
4.1.1软件设计的概念 63
4软件设计工程 63
4.1.2软件设计原则 64
4.1.3软件设计原理 65
4.1.4软件设计过程和模型 66
4.2软件体系结构 68
4.2.1软件体系结构概念 68
4.2.2体系结构的重要性 69
4.2.3 系统分解 69
4.2.4分布式系统体系结构 71
4.2.5模块分解 72
4.2.6功能独立性 72
4.3数据设计 76
4.3.1数据设计 76
4.3.2数据设计的原则 76
4.3.3文件设计与数据库设计 77
4.4用户界面设计 78
4.4.1 用户界面设计问题 78
4.4.3界面设计的基本原则 80
4.4.2用户界面设计过程 80
4.5过程设计 82
4.5.1过程设计概述 82
4.5.2过程设计常用的描述工具 83
4.6软件重用技术 87
4.6.1软件重用的概念 87
4.6.2软件重用的成分 88
4.6.3应用系统与应用系统族 89
4.6.4构件系统 89
4.6.5领域工程与应用系统工程 90
4.6.6基于重用技术的软件开发过程模型 90
4.6.7可重用构件技术 91
4.6.8软件重用的效益 92
4.7软件设计模式 93
4.7.1 基本概念 93
4.7.2设计模式的成分 93
4.7.3设计模式的描述 94
4.7.4软件设计模式应用 95
4.7.5软件设计模式的分类 96
5软件测试工程 105
5.1软件测试概述 105
5.1.1软件测试的定义 105
5.1.2软件测试的目的 106
5.1.3软件测试的原则 106
5.1.4软件测试流程 107
5.2.2软件测试方法 109
5.2.1软件测试对象 109
5.2软件测试方法与技术 109
5.2.3 白盒测试法 111
5.2.4黑盒测试法 117
5.3软件测试策略 120
5.3.1单元测试 121
5.3.2集成测试 123
5.3.3确认测试 126
5.3.4 系统测试 127
5.3.5面向对象的测试 128
5.4调试与排错 129
5.4.1调试的目的 129
5.4.2调试的方法与技术 130
5.5软件测试工具 131
5.5.1静态分析工具 131
5.5.2动态测试工具 132
5.5.3测试数据自动生成工具 133
5.5.4模块测试台 133
5.5.5集成化测试工具 134
6软件维护工程 135
6.1软件维护概述 135
6.1.1软件维护的概念 135
6.1.2软件维护分类 136
6.2软件维护过程 137
6.2.1 与软件维护工作量有关的因素 137
6.2.3软件维护组织 138
6.2.2维护工作量 138
6.2.4软件维护报告 139
6.2.5软件维护流程 139
6.2.6软件维护记录 139
6.2.7软件维护评价 140
6.3.2重新验证程序 141
6.3.3软件维护面临的问题 141
6.3.1软件维护的副作用 141
6.3软件维护的副作用与面临的问题 141
6.4软件可维护性 142
6.4.1软件的可维护性度量 142
6.4.2提高软件的可维护性的途径 143
6.5软件再工程 145
6.5.1软件再工程活动 146
6.5.2体系结构进化 149
6.5.3软件再工程的重构技术 149
6.5.4软件再工程的风险 150
7.1.1概述 152
7.1面向数据流的开发方法 152
第二部分软件工程方法 152
7传统的开发方法 152
7.1.2结构化分析 153
7.1.3结构化设计 166
7.2面向数据结构的开发方法 177
7.2.1 Jackson方法的三种基本结构 177
7.2.2 Jackson方法的设计步骤 179
7.2.3 Jackson方法应用实例 179
8.1快速原型方法与定义 183
8快速原型的开发方法 183
8.2原型开发的分类 184
8.3快速原型开发的过程 185
8.4基于快速原型的进化式开发 187
8.5快速原型开发的技术 188
8.5.1 用户界面自动生成工具 188
8.5.2面向数据库应用的开发工具 190
8.5.3采用四代语言 192
8.5.4 可重用工具 193
9.1面向对象方法学的基本概念 194
9.1.1 对象 194
9面向对象的开发方法 194
9.1.2消息和方法 196
9.1.3 类 197
9.1.4继承性 198
9.1.5封装性 199
9.1.6 多态性 199
9.2.1对象模型 200
9.2面向对象模型 200
9.2.2动态模型 203
9.2.3功能模型 205
9.3面向对象的分析 206
9.3.1 分析的基本过程 206
9.3.2标识对象和类 209
9.3.3标识结构 212
9.3.4标识主题 217
9.3.5 定义属性 220
9.3.6 定义服务 222
9.4面向对象设计 226
9.4.1 面向对象设计的模型 226
9.4.2面向对象设计的方法 227
9.5标准建模语言 229
9.5.1 什么是UML 229
9.5.2 UML发展史 229
9.5.3 UML的组成 230
9.5.5 UML的静态模型 231
9.5.4 UML的建模步骤 231
9.5.6 UML的动态模型 239
9.5.7 UML的实现模型 245
10基于Web技术的开发方法 247
10.1 客户机/服务器系统 247
10.1.1 传统的客户机/服务器结构 247
10.1.2三层客户机/服务器结构 248
10.1.3 浏览器/服务器结构 249
10.2组件模型技术概述 250
10.3 J2EE技术 252
10.3.1 J2EE简介 252
10.3.2 J2EE的核心技术 253
10.4EJB技术 255
10.4.1EJB简介 255
10.4.2EJB的体系结构 256
10.4.3EJB组件的开发 259
10.5.1 企业级应用体系结构主要概念 262
10.5企业级的Web信息系统的开发 262
10.5.2开发软件体系结构的方法 267
10.5.3 J2EE标准的多层应用体系结构 268
10.5.4 Servlet 269
10.5.5JSP 272
10.5.6会话Bean 275
10.5.7 实体Bean 280
10.5.8消息驱动Bean 288
10.5.9组装和部署 290
11.1.1软件质量的定义 296
11.1软件质量概述 296
第三部分软件工程管理 296
11软件质量管理 296
11.1.2软件质量的度量和评价 297
11.1.3软件质量保证 297
11.2质量度量模型 298
11.2.1 McCall质量度量模型 298
11.2.2 ISO的软件质量评价模型 300
11.3.1软件复杂性的基本概念 301
11.3.2软件复杂性的度量方法 301
11.3软件复杂性 301
11.4软件可靠性 303
11.4.1软件可靠性定义 303
11.4.2软件可靠性指标 303
11.4.3软件可靠性模型 304
11.5软件评审 305
11.5.1设计质量的评审内容 306
11.5.2程序质量的评审内容 306
11.6.1容错软件定义 308
11.6软件容错技术 308
11.6.2容错的一般方法 309
11.6.3容错软件的设计过程 310
12软件项目管理 311
12.1项目管理基础 311
12.1.1项目及其特征 311
12.1.2项目管理及其要素 312
12.1.3项目管理体系 314
12.2软件项目管理 316
12.2.1软件项目的特殊性 316
12.2.2软件项目成功的关键因素 317
12.2.3软件项目管理 318
12.3软件项目计划与进度安排 321
12.3.1软件项目计划的任务 321
12.3.2软件项目估算 323
12.3.3软件项目进度 330
13.1.1软件配置管理术语 339
13.1软件配置管理的基础知识 339
13软件配置管理 339
13.1.2软件配置管理的定义 348
13.1.3软件配置管理的模式 353
13.1.4软件配置管理的功能领域 354
13.1.5软件配置管理的作用 354
13.1.6软件配置管理的重要性 355
13.1.7基于软件配置管理的开发团队成员 356
13.2软件配置管理过程 357
13.2.1 配置标识 357
13.2.2版本管理 359
13.2.3 变更控制 360
13.2.4配置审核 361
13.2.5配置状态记录 362
13.3基线更改控制流程 364
13.4软件配置管理系统 367
13.4.1软件配置管理系统的概念 367
13.4.2软件配置管理系统的功能 369
13.5软件配置管理工具 371
13.5.1软件配置管理工具的发展 371
13.5.2软件配置管理工具如何体现其系统概念 372
13.5.3软件配置管理工具的主要功能 373
13.5.4软件配置管理工具及其提供商评估 375
13.5.5 商用的软件配置管理工具 376
13.5.6软件配置管理工具的简单应用 378
14.2软件系统安全性分析项目 381
14.1软件系统的安全性工作 381
14软件安全管理 381
14.3软件安全性设计准则 384
14.3.1安全设计 384
14.3.2程序运行 385
14.3.3软件安全关键单元 386
14.3.4接口设计 386
14.3.5测试 387
参考文献 388