软件工程与计算 卷2 软件开发的技术基础PDF电子书下载
- 电子书积分:14 积分如何计算积分?
- 作 者:络斌主编
- 出 版 社:北京:机械工业出版社
- 出版年份:2012
- ISBN:9787111407508
- 页数:440 页
第一部分 软件工程概论 2
第1章 软件工程基础 2
1.1软件 2
1.1.1软件独立于硬件 2
1.1.2软件是一种工具 2
1.1.3软件的核心是程序 3
1.1.4软件开发远比编程要复杂 3
1.1.5应用软件基于现实又高于现实 4
1.2软件工程 4
1.2.1定义 4
1.2.2软件工程是一种工程活动 4
1.2.3软件工程的动机 5
1.2.4软件工程是科学性、实践性和工艺性并重的 6
1.2.5软件工程追求足够好,不是最好 8
1.2.6软件工程的产品是基于虚拟计算机的软件方案 8
1.2.7软件工程的最终目的 9
1.3软件工程概览 9
1.3.1软件工程知识域 9
1.3.2软件开发活动 11
1.3.3软件工程的角色分工 13
1.4习题 14
第2章 软件工程的发展 15
2.1软件工程的发展脉络 15
2.2 20世纪50年代的软件工程 17
2.3 20世纪60年代的软件工程 19
2.4 20世纪70年代的软件工程 22
2.5 20世纪80年代的软件工程 26
2.6 20世纪90年代的软件工程 31
2.7 21世纪00年代的软件工程 37
2.8习题 39
第二部分 项目启动 42
第3章 示例项目描述 42
3.1背景 42
3.2目标 42
3.3系统用户 42
3.4用户访谈要点 43
3.5项目实践过程 47
第4章 项目管理基础 48
4.1项目和项目管理 48
4.2团队组织与管理 49
4.2.1团队的特征 49
4.2.2团队结构 49
4.2.3团队建设 51
4.3软件质量保障 53
4.3.1软件质量 53
4.3.2质量保障 55
4.3.3评审 56
4.3.4质量度量 57
4.4软件配置管理 57
4.4.1配置管理动机 57
4.4.2配置项 58
4.4.3基线 58
4.4.4配置管理活动 59
4.4.5变更控制 60
4.5项目实践 62
4.6习题 62
第三部分 需求开发阶段 66
第5章 软件需求基础 66
5.1引言 66
5.2需求工程基础 67
5.2.1需求工程简介 67
5.2.2需求工程活动 67
5.2.3需求获取 68
5.2.4需求分析 69
5.2.5需求规格说明 70
5.2.6需求验证 70
5.2.7需求管理 71
5.3需求基础 71
5.3.1需求 71
5.3.2需求的层次性 71
5.3.3结合层次性的需求开发 73
5.3.4区分需求、问题域与规格说明 74
5.4需求分类 75
5.4.1需求谱系 75
5.4.2软件需求的分类 76
5.5项目实践 79
5.6习题 80
第6章 需求分析方法 82
6.1需求分析基础 82
6.1.1需求分析的原因 82
6.1.2需求分析模型 83
6.2结构化分析 84
6.2.1结构化分析方法 84
6.2.2数据流图 85
6.2.3实体关系图 90
6.3面向对象分析 92
6.3.1面向对象分析方法 92
6.3.2用例 93
6.3.3用例图 94
6.3.4用例描述 96
6.3.5概念类图(领域模型) 98
6.3.6交互图(顺序图) 104
6.3.7状态图 106
6.4使用需求分析方法细化和明确需求 108
6.4.1细化和明确需求内容 108
6.4.2建立系统级需求 109
6.5项目实践 112
6.6习题 113
第7章 需求文档化与验证 115
7.1文档化的原因 115
7.2需求文档基础 115
7.2.1需求文档的交流对象 115
7.2.2用例文档 116
7.2.3软件需求规格说明文档 116
7.3需求文档化要点 118
7.3.1技术文档写作要点 118
7.3.2需求书写要点 119
7.3.3软件需求规格说明文档书写要点 120
7.4评审软件需求规格说明文档 121
7.4.1需求验证与确认 121
7.4.2评审需求的注意事项 121
7.5以需求为基础开发系统测试用例 122
7.5.1开发测试用例套件 123
7.5.2开发测试用例 125
7.6度量需求 125
7.7将需求制品纳入配置管理 129
7.8项目实践 130
7.9习题 130
第四部分 软件设计 133
第8章 软件设计基础 133
8.1软件设计思想的发展 133
8.2软件设计的核心思想 134
8.3理解软件设计 135
8.3.1设计与软件设计 135
8.3.2工程设计与艺术设计 136
8.3.3理性主义和经验主义 137
8.3.4软件设计的演化性 137
8.3.5软件设计的决策性 138
8.3.6软件设计的约束满足和多样性 138
8.4软件设计的分层 139
8.5软件设计过程的主要活动 140
8.6软件设计的方法和模型 140
8.6.1软件设计的方法 140
8.6.2软件设计的模型 141
8.7软件设计描述 141
8.7.1设计视图和设计图 142
8.7.2设计视角和设计关注 143
8.7.3需求和涉众 144
8.7.4设计理由 144
8.7.5设计描述的模板 145
8.7.6软件设计文档书写要点 145
8.8项目实践 146
8.9习题 146
第9章 软件体系结构基础 148
9.1软件体系结构的发展 148
9.2理解软件体系结构 148
9.2.1定义 148
9.2.2区分软件体系结构的抽象与实现 149
9.2.3部件 150
9.2.4连接件 150
9.2.5配置 151
9.3体系结构风格初步 153
9.3.1主程序/子程序 153
9.3.2面向对象式 154
9.3.3分层 156
9.3.4 MVC 157
9.4项目实践 159
9.5习题 159
第10章 软件体系结构设计与构建 160
10.1体系结构设计过程 160
10.1.1分析关键需求和项目约束 160
10.1.2选择体系结构风格 162
10.1.3软件体系结构逻辑设计 162
10.1.4软件体系结构实现 165
10.1.5完善软件体系结构设计 170
10.1.6定义构件接口 172
10.2体系结构的原型构建 173
10.2.1包的创建 173
10.2.2重要文件的创建 174
10.2.3定义构件之间的接口 174
10.2.4关键需求的实现 175
10.3体系结构集成与测试 175
10.3.1集成的策略 175
10.3.2桩、驱动与集成测试用例 177
10.4软件体系结构设计文档描述 180
10.5体系结构评审 181
10.6项目实践 181
10.7习题 182
第11章 人机交互设计 183
11.1引言 183
11.2人机交互设计的目标 184
11.3人机交互设计的人类因素 185
11.3.1精神模型 185
11.3.2差异性 186
11.4人机交互设计的计算机因素 186
11.4.1可视化设计 186
11.4.2常见界面类型 187
11.5人机交互设计的交互性 188
11.5.1导航 188
11.5.2反馈 189
11.5.3一些人机交互设计原则 190
11.6人机交互设计过程 192
11.6.1基本过程 192
11.62示例 193
11.7项目实践 195
11.8习题 195
第12章 详细设计的基础 197
12.1详细设计概述 197
12.1.1详细设计出发点 197
12.1.2详细设计的上下文 198
12.2结构化设计 199
12.2.1结构化设计的思想 199
12.2.2结构化设计的过程 200
12.3面向对象设计 202
12.3.1面向对象设计的思想 202
12.3.2面向对象设计的过程 202
12.3.3通过职责建立静态模型 203
12.3.4通过协作建立动态模型 206
12.4为类间协作开发集成测试用例 210
12.5详细设计文档描述 212
12.6详细设计的评审 213
12.7项目实践 213
12.8习题 213
第13章 详细设计中的模块化与信息隐藏 215
13.1模块化与信息隐藏思想 215
13.1.1设计质量 215
13.1.2模块化与信息隐藏思想的动机 215
13.1.3模块化与信息隐藏思想的发展 216
13.2模块化 217
13.2.1分解与模块化 217
13.2.2结构化设计中的耦合 219
13.2.3结构化设计中的内聚 220
13.2.4回顾:MSCS系统设计中的模块化思想 221
13.3信息隐藏 222
13.3.1抽象与信息隐藏 222
13.3.2信息与隐藏 224
13.3.3模块说明 225
13.3.4回顾:MSCS系统设计中的信息思想 226
13.4习题 226
第14章 详细设计中面向对象方法下的模块化 228
14.1面向对象中的模块 228
14.1.1类 228
14.1.2类之间的联系 228
14.2访问耦合 229
14.2.1访问耦合的分析 229
14.2.2降低访问耦合的方法 230
14.3继承耦合 234
14.3.1继承耦合的分析 234
14.3.2降低继承耦合的方法 235
14.4内聚 237
14.4.1面向对象中的内聚 237
14.4.2提高内聚的方法 238
14.5耦合与内聚的度量 241
14.5.1耦合的度量 241
14.5.2内聚的度量 242
14.6项目实践 243
14.7习题 243
第15章 详细设计中面向对象方法下的信息隐藏 246
15.1封装类的职责 246
15.1.1类的职责 246
15.1.2封装——分离接口与实现 247
15.1.3封装实现细节 247
15.2为变更而设计 251
15.2.1封装变更/开闭原则 251
15.2.2多态 252
15.2.3依赖倒置原则 253
15.2.4总结 257
15.3项目实践 257
15.4习题 258
第16章 详细设计的设计模式 262
16.1设计模式基础 262
16.2可修改性及其基本实现机制 262
16.3策略模式 265
16.3.1典型问题 265
16.3.2设计分析 266
16.3.3解决方案 266
16.3.4模式实例 268
16.4抽象工厂模式 270
16.4.1典型问题 270
16.4.2设计分析 272
16.4.3解决方案 272
16.4.4模式实例 274
16.5单件模式 276
16.5.1典型问题 276
16.5.2设计分析 276
16.5.3解决方案 276
16.5.4模式实例 277
16.6迭代器模式 277
16.6.1典型问题 277
16.6.2设计分析 279
16.6.3解决方案 279
16.6.4模式实例 280
16.7项目实践 280
16.8习题 280
第五部分 软件构造、测试、交付与维护 282
第17章 软件构造 282
17.1概述 282
17.1.1软件构造的定义 282
17.1.2软件构造是设计的延续 283
17.2软件构造活动 283
17.2.1详细设计 283
17.2.2编程 284
17.2.3测试 284
17.2.4调试 285
17.2.5代码评审 286
17.2.6集成与构建 288
17.2.7构造管理 288
17.3软件构造实践方法 288
17.3.1重构 289
17.3.2测试驱动开发 291
17.3.3结对编程 295
17.4项目实践 295
17.5习题 296
第18章 代码设计 298
18.1设计易读的代码 298
18.1.1格式 298
18.1.2命名 302
18.1.3注释 302
18.2设计易维护的代码 304
18.2.1小型任务 305
18.2.2复杂决策 306
18.2.3数据使用 308
18.2.4明确依赖关系 308
18.3设计可靠的代码 308
18.3.1契约式设计 308
18.3.2防御式编程 310
18.4使用模型辅助设计复杂代码 310
18.4.1决策表 311
18.4.2伪代码 311
18.4.3程序流程图 313
18.5为代码开发单元测试用例 313
18.5.1为方法开发测试用例 313
18.5.2使用Mock Object测试类方法 313
18.5.3为类开发测试用例 315
18.6代码复杂度度量 316
18.7问题代码 317
18.8项目实践 318
18.9习题 319
第19章 软件测试 320
19.1引言 320
19.1.1验证与确认 320
19.1.2软件测试的目标 321
19.1.3测试用例 321
19.1.4桩与驱动 321
19.1.5缺陷、错误与失败 322
19.2测试层次 323
19.2.1测试层次的划分 323
19.2.2单元测试 323
19.2.3集成测试 324
19.2.4系统测试 325
19.3测试技术 325
19.3.1测试用例的选择 325
19.3.2随机测试 326
19.3.3基于规格的技术——黑盒测试方法 327
19.3.4基于代码的技术——白盒测试方法 329
19.3.5特定测试技术 331
19.4测试活动 331
19.5测试度量 334
19.6项目实践 334
19.7习题 335
第20章 软件交付 336
20.1安装与部署 336
20.1.1安装 336
20.1.2部署 337
20.2培训与文档支持 338
20.2.1培训 338
20.2.2文档支持 339
20.3项目评价 341
20.3.1项目评价的原因 341
20.3.2项目评价的内容 341
20.3.3项目评价的方法 341
20.3.4注意事项 343
20.4项目实践 343
20.5习题 344
第21章 软件维护与演化 345
21.1软件维护 345
21.1.1软件可修改性与软件维护 345
21.1.2软件维护的类型 345
21.1.3软件维护的高代价性 346
21.1.4开发可维护的软件 348
21.1.5软件维护过程与活动 349
21.2软件演化 350
21.2.1演化与维护 350
21.2.2软件演化定律 351
21.2.3软件演化生命周期模型与演化活动 352
21.3软件维护与演化的常见技术 354
21.3.1遗留软件 355
21.3.2逆向工程 355
21.3.3再工程 356
21.4项目实践 356
21.5习题 357
第六部分 软件过程模型与职业基础 360
第22章 软件开发过程模型 360
22.1软件开发的典型阶段 360
22.1.1软件需求工程 360
22.1.2软件设计 361
22.1.3软件构造 361
22.1.4软件测试 363
22.1.5软件交付 363
22.1.6软件维护 363
22.2软件生命周期模型 364
22.3软件过程模型 364
22.4构建-修复模型 366
22.5瀑布模型 367
22.6增量迭代模型 368
22.7演化模型 370
22.8原型模型 371
22.9螺旋模型 372
22.10 Rational统一过程 374
22.11敏捷过程 376
22.12习题 378
第23章 软件工程职业基础 379
23.1软件工程职业 379
23.1.1软件行业的发展 379
23.1.2软件工程职业的出现 380
23.1.3软件工程师职业素质 380
23.2软件工程职业概况 381
23.2.1知识体系 381
23.2.2教育体系 381
23.2.3职业道德规范 382
23.2.4认证体系 382
23.2.5行业协会 383
23.3软件工程的行业标准 383
23.4习题 384
附录A软件需求规格说明文档模板 385
附录B文档注释规范 391
附录C软件工程道德和职业实践规范(5.2版)的八项原则 395
附录D连锁商店管理系统(MSCS)相关文档 399
参考文献 428
- 《市政工程基础》杨岚编著 2009
- 《工程静力学》王科盛主编 2019
- 《中央财政支持提升专业服务产业发展能力项目水利工程专业课程建设成果 设施农业工程技术》赵英编 2018
- 《区块链DAPP开发入门、代码实现、场景应用》李万胜著 2019
- 《化学反应工程》许志美主编 2019
- 《绿色过程工程与清洁生产技术 张懿院士论文集精选 上》《绿色过程工程与清洁生产技术》编写组编 2019
- 《软件工程》齐治昌,谭庆平,宁洪编著 2019
- 《高含硫气藏开发腐蚀控制技术与实践》唐永帆,张强 2018
- 《化学工程与工艺专业实验指导》郭跃萍主编 2019
- 《天水师范学院60周年校庆文库 新工科视域下的工程基础与应用研究》《天水师范学院60周年校庆文库》编委会编 2019
- 《指向核心素养 北京十一学校名师教学设计 英语 七年级 上 配人教版》周志英总主编 2019
- 《北京生态环境保护》《北京环境保护丛书》编委会编著 2018
- 《高等教育双机械基础课程系列教材 高等学校教材 机械设计课程设计手册 第5版》吴宗泽,罗圣国,高志,李威 2018
- 《指向核心素养 北京十一学校名师教学设计 英语 九年级 上 配人教版》周志英总主编 2019
- 《高等院校旅游专业系列教材 旅游企业岗位培训系列教材 新编北京导游英语》杨昆,鄢莉,谭明华 2019
- 《中国十大出版家》王震,贺越明著 1991
- 《近代民营出版机构的英语函授教育 以“商务、中华、开明”函授学校为个案 1915年-1946年版》丁伟 2017
- 《新工业时代 世界级工业家张毓强和他的“新石头记”》秦朔 2019
- 《智能制造高技能人才培养规划丛书 ABB工业机器人虚拟仿真教程》(中国)工控帮教研组 2019
- 《AutoCAD机械设计实例精解 2019中文版》北京兆迪科技有限公司编著 2019