1.1软件 1
1.1.1软件与软件的组成 1
1软件工程概述 1
1.1.2软件的特点和分类 2
1.1.3软件的发展 4
1.1.4软件危机 5
1.2软件工程的概念 6
1.2.1软件工程的定义 6
1.2.2软件工程的目标和原则 7
1.3软件生命周期 8
1.3.1软件生命周期的概念 8
1.3.2目的和阶段 8
1.4.1瀑布模型 9
1.4软件开发模型 9
1.4.2原型模型 10
1.4.3螺旋模型 11
1.4.4基于4代技术的模型 13
1.5计算机辅助软件工程 14
1.5.1计算机辅助软件工程 14
1.5.2CASE工具 14
1.5.3集成化的CASE环境 16
1.6软件工程标准 17
1.6.1软件工程国际标准 17
1.6.2ISO9000系列标准基本思想 17
1.6.3ISO9000-3标准 18
1.6.4ISO9000标准与CMM 20
小结1 21
习题1 21
2可行性研究 22
2.1问题定义 22
2.1.1问题定义的内容 22
2.1.2问题定义的步骤 22
2.2可行性研究 23
2.2.1引言 23
2.2.2经济可行性 24
2.2.3技术可行性 26
2.2.4方案选择 27
2.3.1系统模型 28
2.3系统模型与模拟 28
2.3.2系统建模和模拟 32
2.4系统规格说明及评审 34
2.4.1系统规格说明 34
2.4.2系统规格说明评审 35
小结2 36
习题2 36
3需求分析基础 37
3.1需求分析的任务与原则 37
3.2需求分析的过程 38
3.3分析员和用户的责任 41
3.4软件需求分析方法 42
3.5原型化方法 44
3.5.1软件原型化方法概述 45
3.5.2快速原型开发模型 46
3.5.3软件开发过程 49
3.6需求规格说明与评审 51
3.6.1需求规格说明书的内容 51
3.6.2需求评审 53
小结3 54
习题3 54
4面向数据流的分析方法 56
4.1数据流图 56
4.1.1数据流图中的主要图形元素 56
4.1.2数据流图的画法 59
4.2数据字典 60
4.2.1数据流的描述 60
4.2.2加工的描述 64
4.3实体—关系图 67
4.3.1数据对象、属性与关系 67
4.3.2实体—关系图 68
4.4基于数据流的分析方法 69
4.4.1创建数据流模型 69
4.4.2过程规格说明 71
小结4 71
习题4 72
5软件设计基础 73
5.1软件设计过程 73
5.2软件设计基本概念 74
5.2.1模块化设计 74
5.2.2自顶向下逐层分解 78
5.2.3启发式规则 79
5.2.4软件总体结构设计 81
5.2.5数据结构设计 83
5.2.6软件过程设计 84
5.3过程设计技术和工具 85
5.3.1结构化程序设计 85
5.3.2图形表示法 85
5.3.3判定表 87
5.3.4过程设计语言 88
5.4Jackson程序设计方法 89
5.4.1Jackson方法 89
5.4.2设计实例 89
5.5设计规格说明与评审 93
小结5 95
习题5 96
6面向数据流的设计方法 97
6.1基本概念和设计过程 97
6.2变换分析 99
6.3事务分析 105
6.4模块优化设计准则 108
小结6 110
习题6 110
7面向对象的分析与设计 112
7.1面向对象的概念与思想 112
7.2面向对象的系统开发方法的原理 115
7.2.1面向对象建模 115
7.2.2面向对象开发方法的内容与过程 116
7.2.3面向对象开发方法各阶段的思路 117
7.3标准建模语言UML概述 118
7.4UML的静态建模机制 118
7.5UML的动态建模机制 127
7.6面向对象的分析方法 133
7.6.1标识类及对象 134
7.6.2标识对象的属性和关联关系 135
7.6.3建立动态模型 136
7.6.4建立功能模型 137
7.6.5定义对象的服务 137
7.7面向对象设计 138
7.7.1面向对象设计准则 138
7.7.2启发规则 140
7.7.3面向对象分析与设计实例 141
小结7 148
习题7 148
8软件编码与实现 150
8.1对源程序的质量要求 150
8.2程序设计语言 150
8.2.1程序设计语言的分类 151
8.2.2程序设计语言的特点 152
8.2.3选择语言进行编码 155
8.3程序设计风格 156
8.3.1结构化程序编码 156
8.3.2写程序的风格 157
8.4程序设计过程 160
8.5.1软件复用分类 161
8.5软件复用与构件技术 161
8.5.2实现复用的关键因素 163
8.5.3领域工程 163
8.5.4软件构件技术 166
8.5.5复用成熟度模型和复用效益 168
小结8 170
习题8 170
9软件测试 171
9.1基本概念 171
9.1.1软件测试的目标 171
9.1.2测试阶段的信息流程 171
9.1.4软件测试的步骤 172
9.1.3测试用例的设计 172
9.2软件测试技术 173
9.2.1逻辑覆盖 173
9.2.2等价类划分 177
9.2.3边界值分析 178
9.2.4错误推测法 178
9.2.5因果图 179
9.2.6选择测试技术的综合策略 180
9.3软件测试策略 181
9.3.1单元测试 181
9.3.2综合测试 182
9.3.3确认测试 184
9.3.5自动测试工具 185
9.3.6排错 185
9.3.4系统测试 185
小结9 187
习题9 187
10软件维护 190
10.1软件维护的定义及分类 190
10.2维护的特点 191
10.2.1结构化和非结构化维护 191
10.2.2软件维护的成本 192
10.3可维护性 192
10.3.1软件可维护性的定义及度量 192
10.3.2文档 193
10.4软件维护活动 194
10.3.3保证可维护性复审 194
10.4.1维护组织 195
10.4.2维护的报告与评估 195
10.4.3维护的事件流 195
10.4.4保存维护记录 197
10.4.5评价维护活动 197
小结10 198
习题10 198
11软件项目管理 199
11.1软件项目的特点和软件管理职能 199
11.1.1项目与项目管理 199
11.1.2软件项目的规模 201
11.1.3软件项目的特点 203
11.1.4软件项目管理的职能及存在的困难 203
11.2成本估算 204
11.2.2因素估算法 205
11.2.3WBS基础上的全面详细估算 205
11.2.1经验估算法 205
11.3进度计划 206
11.3.1成员能力评估 206
11.3.2案例简介 207
11.4人员管理 212
11.4.1组织计划编制 212
11.4.2人员募集 214
11.4.3项目团队建设 214
11.5质量保证 215
11.5.1软件质量设计 215
11.5.2软件质量管理 215
11.5.4软件质量保证过程 216
11.5.3软件质量评审 216
11.6项目计划 219
11.6.1项目计划内容 219
11.6.2制订WBS计划 220
11.6.3项目时间管理 221
11.7软件管理工具 223
11.8软件过程成熟度模型 226
11.8.1CMM的基本框架 226
11.8.2软件企业实施CMM的方法 230
11.8.3CMM不覆盖的问题 233
小结11 233
习题11 233
参考文献 234