图书介绍
软件工程 修订版 第4版pdf电子书版本下载
- (美)莎丽·劳伦斯·弗里格(Shari Lawrence Pfleeger),(加)乔安妮·M.阿特利 著
- 出版社: 北京:人民邮电出版社
- ISBN:9787115498076
- 出版时间:2019
- 标注页数:551页
- 文件大小:129MB
- 文件页数:567页
- 主题词:软件工程-高等学校-教材
PDF下载
下载说明
软件工程 修订版 第4版PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如 BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第1章 软件工程概述 1
1.1什么是软件工程 1
1.1.1问题求解 2
1.1.2软件工程师的角色是什么 3
1.2软件工程取得了哪些进展 4
1.3什么是好的软件 6
1.3.1产品的质量 7
1.3.2过程的质量 8
1.3.3商业环境背景下的质量 8
1.4软件工程涉及的人员 10
1.5系统的方法 11
1.5.1系统的要素 11
1.5.2相互联系的系统 13
1.6工程的方法 14
1.6.1盖房子 15
1.6.2构建系统 16
1.7开发团队的成员 17
1.8软件工程发生了多大的变化 19
1.8.1变化的本质 19
1.8.2软件工程的W asserman规范 20
1.9信息系统的例子 25
1.10实时系统的例子 26
1.11本章对单个开发人员的意义 27
1.12本章对开发团队的意义 28
1.13本章对研究人员的意义 28
1.14学期项目 28
1.15 主要参考文献 29
1.16练习 30
第2章 过程和生命周期的建模 32
2.1过程的含义 32
2.2软件过程模型 34
2.2.1瀑布模型 34
2.2.2 V模型 37
2.2.3原型化模型 37
2.2.4可操作规格说明 38
2.2.5可转换模型 38
2.2.6阶段化开发:增量和迭代 39
2.2.7螺旋模型 40
2.2.8敏捷方法 41
2.3过程建模工具和技术 44
2.3.1静态建模:Lai表示法 45
2.3.2动态建模:系统动力学 47
2.4实际的过程建模 49
2.4.1 Marvel的案例研究 49
2.4.2过程建模工具和技术应该具有的特性 51
2.5信息系统的例子 51
2.6实时系统的例子 53
2.7本章对单个开发人员的意义 54
2.8本章对开发团队的意义 54
2.9本章对研究人员的意义 54
2.10学期项目 54
2.11主要参考文献 56
2.12练习 57
第3章 计划和管理项目 58
3.1跟踪项目进展 58
3.1.1工作分解和活动图 60
3.1.2估算完成时间 61
3.1.3跟踪进展的工具 65
3.2项目人员 67
3.2.1人员角色和特性 67
3.2.2工作风格 70
3.2.3项目组织 71
3.3工作量估算 73
3.3.1专家判断 75
3.3.2算法方法 77
3.3.3机器学习方法 81
3.3.4找出适合具体情形的模型 83
3.4风险管理 84
3.4.1什么是风险 84
3.4.2风险管理活动 85
3.5项目计划 87
3.6过程模型和项目管理 88
3.6.1注册管理 88
3.6.2责任建模 90
3.6.3紧密结合里程碑 92
3.7信息系统的例子 94
3.8实时系统的例子 95
3.9本章对单个开发人员的意义 96
3.10本章对开发团队的意义 96
3.11本章对研究人员的意义 96
3.12学期项目 96
3.13主要参考文献 97
3.14练习 97
第4章 获取需求 100
4.1需求过程 101
4.2需求引发 102
4.3需求的类型 105
4.3.1解决冲突 107
4.3.2两种需求文档 108
4.4需求的特性 109
4.5建模表示法 110
4.5.1实体-联系图 111
4.5.2例子:UML类图 112
4.5.3事件踪迹 114
4.5.4例子:消息时序图 114
4.5.5状态机 115
4.5.6例子:UML状态图 116
4.5.7例子:Petri网 119
4.5.8 数据流图 121
4.5.9例子:用例 122
4.5.10函数和关系 123
4.5.11例子:判定表 124
4.5.12例子:Parnas表 124
4.5.13逻辑 125
4.5.14例子:对象约束语言(OCL) 126
4.5.15例子:Z 127
4.5.16代数规格说明 129
4.5.17例子:SDL数据 130
4.6需求和规格说明语言 132
4.6.1统一建模语言(UML) 132
4.6.2规格说明和描述语言(SDL) 133
4.6.3软件成本降低(SCR) 133
4.6.4需求表示法的其他特征 134
4.7原型化需求 134
4.8需求文档 135
4.8.1需求定义 136
4.8.2需求规格说明 137
4.8.3过程管理和需求的可跟踪性 138
4.9确认和验证 138
4.9.1需求确认 139
4.9.2验证 141
4.10测量需求 142
4.11选择规格说明技术 143
4.12信息系统的例子 145
4.13实时系统的例子 147
4.14本章对单个开发人员的意义 149
4.15本章对开发团队的意义 149
4.16本章对研究人员的意义 149
4.17学期项目 150
4.17.1前提和假设 150
4.17.2功能的高层描述 150
4.17.3功能需求 150
4.17.4数据约束 151
4.17.5设计和接口约束 152
4.17.6质量需求 152
4.18主要参考文献 152
4.19练习 153
第5章 设计体系结构 156
5.1设计过程 156
5.1.1设计是一种创造性过程 157
5.1.2设计过程模型 160
5.2体系结构建模 161
5.3分解和视图 162
5.4体系结构风格和策略 165
5.4.1管道和过滤器 165
5.4.2客户-服务器 166
5.4.3对等网络 167
5.4.4发布-订阅 168
5.4.5信息库 168
5.4.6分层 169
5.4.7组合体系结构风格 170
5.5满足质量属性 171
5.5.1可修改性 171
5.5.2性能 173
5.5.3安全性 174
5.5.4可靠性 175
5.5.5健壮性 177
5.5.6易使用性 178
5.5.7商业目标 178
5.6协作设计 179
5.7体系结构的评估和改进 180
5.7.1测量设计质量 181
5.7.2故障树分析 181
5.7.3安全性分析 183
5.7.4权衡分析 184
5.7.5成本效益分析 188
5.7.6原型化 190
5.8文档化软件体系结构 191
5.8.1视图间的映射 193
5.8.2文档化设计合理性 193
5.9体系结构设计评审 193
5.9.1确认 194
5.9.2验证 194
5.10软件产品线 195
5.10.1战略范围 197
5.10.2产品线体系结构的优势 197
5.10.3产品线的演化 198
5.11信息系统的例子 198
5.12实时系统的例子 200
5.13本章对单个开发人员的意义 201
5.14本章对开发团队的意义 201
5.15本章对研究人员的意义 202
5.16学期项目 202
5.17主要参考文献 203
5.18练习 203
第6章 设计模块 205
6.1设计方法 205
6.2设计原则 207
6.2.1模块化 207
6.2.2接口 212
6.2.3信息隐藏 213
6.2.4增量式开发 214
6.2.5抽象 215
6.2.6通用性 216
6.3面向对象的设计 218
6.3.1术语 218
6.3.2继承与对象组合 221
6.3.3可替换性 222
6.3.4德米特法则 223
6.3.5依赖倒置 224
6.4在UML中体现面向对象设计 225
6.4.1过程中的UML 225
6.4.2 UML类图 227
6.4.3其他UML图 232
6.5面向对象设计模式 240
6.5.1模板方法模式 241
6.5.2工厂方法模式 241
6.5.3策略模式 242
6.5.4装饰者模式 242
6.5.5观察者模式 244
6.5.6组合模式 244
6.5.7访问者模式 245
6.6设计中其他方面的考虑 247
6.6.1数据管理 247
6.6.2异常处理 247
6.6.3用户界面设计 249
6.6.4框架 250
6.7面向对象度量 250
6.7.1面向对象系统规模的度量 251
6.7.2面向对象系统设计质量的度量 252
6.7.3在何处进行面向对象测量 258
6.8设计文档 259
6.9信息系统的例子 261
6.10实时系统的例子 262
6.11本章对单个开发人员的意义 263
6.12本章对开发团队的意义 263
6.13本章对研究人员的意义 263
6.14学期项目 263
6.15 主要参考文献 264
6.16练习 264
第7章 编写程序 267
7.1编程标准和过程 267
7.1.1对单个开发人员的标准 268
7.1.2对其他开发人员的标准 268
7.1.3设计和实现的匹配 269
7.2编程的指导原则 269
7.2.1控制结构 269
7.2.2算法 270
7.2.3数据结构 271
7.2.4通用性指导原则 273
7.3文档 276
7.3.1内部文档 276
7.3.2外部文档 279
7.4编程过程 280
7.4.1将编程作为问题求解 280
7.4.2极限编程 281
7.4.3结对编程 281
7.4.4编程向何处去 282
7.5信息系统的例子 282
7.6实时系统的例子 283
7.7本章对单个开发人员的意义 284
7.8本章对开发团队的意义 284
7.9本章对研究人员的意义 284
7.10学期项目 285
7.11主要参考文献 285
7.12练习 285
第8章 测试程序 287
8.1软件故障和失效 287
8.1.1故障的类型 288
8.1.2正交缺陷分类 289
8.2测试的相关问题 291
8.2.1测试的组织 291
8.2.2对测试的态度 292
8.2.3谁执行测试 293
8.2.4测试对象的视图 293
8.3单元测试 295
8.3.1检查代码 295
8.3.2证明代码正确性 297
8.3.3测试程序构件 301
8.3.4技术比较 304
8.4集成测试 305
8.4.1自底向上集成 305
8.4.2自顶向下集成 306
8.4.3一次性集成 308
8.4.4三明治集成 308
8.4.5集成策略的比较 309
8.5测试面向对象系统 311
8.5.1代码测试 311
8.5.2面向对象测试和传统测试之间的区别 311
8.6测试计划 313
8.6.1计划的目的 313
8.6.2计划的内容 313
8.7自动测试工具 314
8.7.1代码分析工具 314
8.7.2测试执行工具 315
8.7.3测试用例生成器 316
8.8什么时候停止测试 316
8.8.1故障播种 317
8.8.2软件中的可信度 318
8.8.3其他的停止测试的标准 319
8.8.4识别易出故障的代码 319
8.9信息系统的例子 320
8.10实时系统的例子 321
8.11本章对单个开发人员的意义 321
8.12本章对开发团队的意义 322
8.13本章对研究人员的意义 322
8.14学期项目 322
8.15 主要参考文献 322
8.16练习 323
第9章 测试系统 325
9.1系统测试的原则 325
9.1.1软件故障根源 325
9.1.2系统测试过程 327
9.1.3配置管理 329
9.1.4 测试小组 333
9.2功能测试 334
9.2.1目的与职责 334
9.2.2因果图 335
9.3性能测试 338
9.3.1目的和职责 338
9.3.2性能测试的类型 338
9.4可靠性、可用性以及可维护性 339
9.4.1定义 339
9.4.2失效数据 340
9.4.3测量可靠性、可用性和可维护性 341
9.4.4可靠性稳定性和可靠性增长 342
9.4.5可靠性预测 343
9.4.6操作环境的重要性 345
9.5验收测试 346
9.5.1目的和职责 346
9.5.2验收测试的种类 346
9.5.3验收测试的结果 347
9.6安装测试 348
9.7自动化系统测试 348
9.8测试文档 349
9.8.1测试计划 349
9.8.2测试规格说明和评估 351
9.8.3测试描述 353
9.8.4测试分析报告 355
9.8.5问题报告表 355
9.9测试安全攸关的系统 357
9.9.1设计多样性 358
9.9.2软件安全性案例 359
9.9.3净室方法 361
9.10信息系统的例子 364
9.11实时系统的例子 366
9.12本章对单个开发人员的意义 367
9.13本章对开发团队的意义 367
9.14本章对研究人员的意义 367
9.15 学期项目 367
9.16主要参考文献 368
9.17练习 368
第10章 交付系统 372
10.1培训 372
10.1.1培训的种类 373
10.1.2培训助手 374
10.1.3培训的指导原则 375
10.2文档 375
10.2.1文档的种类 375
10.2.2用户帮助和疑难解答 379
10.3信息系统的例子 380
10.4实时系统的例子 381
10.5本章对单个开发人员的意义 381
10.6本章对开发团队的意义 381
10.7本章对研究人员的意义 382
10.8学期项目 382
10.9主要参考文献 382
10.10练习 382
第11章 维护系统 384
11.1变化的系统 384
11.1.1系统的类型 384
11.1.2在系统生命周期过程中发生的变化 387
11.1.3系统生命周期跨度 388
11.2维护的本质 389
11.3维护问题 392
11.3.1人员问题 392
11.3.2技术问题 393
11.3.3必要的妥协 394
11.3.4维护成本 395
11.4测量维护特性 397
11.4.1可维护性的外部视图 398
11.4.2影响可维护性的内部属性 398
11.4.3其他的产品测量 400
11.5维护技术和工具 401
11.5.1配置管理 401
11.5.2影响分析 403
11.5.3自动化维护工具 406
11.6软件再生 407
11.6.1文档重构 408
11.6.2重组 409
11.6.3逆向工程 410
11.6.4再工程 410
11.6.5软件再生的前景 411
11.7信息系统的例子 412
11.8实时系统的例子 412
11.9本章对单个开发人员的意义 413
11.10本章对开发团队的意义 413
11.11本章对研究人员的意义 414
11.12学期项目 414
11.13主要参考文献 414
11.14练习 414
第12章 评估产品、过程和资源 416
12.1评估的方法 416
12.1.1特征分析 416
12.1.2调查 417
12.1.3案例研究 417
12.1.4正式试验 418
12.1.5准备评估 418
12.2选择评估技术 419
12.2.1关键选择因素 420
12.2.2相信什么 420
12.3评价与预测 423
12.3.1确认预测系统 423
12.3.2确认测量 425
12.3.3对确认的紧迫需求 425
12.4评估产品 426
12.4.1产品质量模型 426
12.4.2建立基线和设定目标 430
12.4.3软件可复用性 431
12.5评估过程 437
12.5.1事后分析 437
12.5.2过程成熟度模型 441
12.6评估资源 448
12.6.1人员成熟度模型 448
12.6.2投资回报 450
12.7信息系统的例子 451
12.8实时系统的例子 452
12.9本章对单个开发人员的意义 452
12.10本章对开发团队的意义 452
12.11本章对研究人员的意义 453
12.12学期项目 453
12.13主要参考文献 453
12.14练习 454
第13章 改进预测、产品、过程和资源 455
13.1改进预测 455
13.1.1预测的精确性 455
13.1.2处理偏误:u曲线 456
13.1.3处理噪声:prequential似然度 458
13.1.4重新校准预测 459
13.2改进产品 462
13.2.1审查 462
13.2.2复用 464
13.3改进过程 465
13.3.1过程和能力成熟度 465
13.3.2维护 467
13.3.3净室方法 468
13.4改进资源 470
13.4.1工作环境 470
13.4.2成本和进度的权衡 471
13.5总体改进指导原则 472
13.6 信息系统的例子 473
13.7实时系统的例子 473
13.8本章对单个开发人员的意义 473
13.9本章对开发团队的意义 474
13.10本章对研究人员的意义 474
13.11学期项目 474
13.12主要参考文献 475
13.13练习 475
第14章 软件工程的未来 476
14.1已经取得的进展 476
14.1.1 Wasserman的获得成熟度的措施 476
14.1.2当前要做的工作 478
14.2技术转移 478
14.2.1现在我们怎样做出技术转移的决策 479
14.2.2在技术决策中使用证据 479
14.2.3支持技术决策的证据 480
14.2.4对证据的进一步讨论 481
14.2.5技术转移的新模型 483
14.2.6改进技术转移的下一步 483
14.3软件工程中的决策 484
14.3.1大量的决策 484
14.3.2群体决策 486
14.3.3我们实际上如何决策 486
14.3.4群体实际上如何决策 488
14.3.5一个适度的观察研究 489
14.3.6获得的经验教训 492
14.4软件工程的职业化:执照发放、认证和伦理 492
14.4.1将重点放在人员上 493
14.4.2软件工程教育 493
14.4.3软件工程知识体系 495
14.4.4给软件工程师颁发执照 496
14.4.5认证 500
14.4.6伦理守则 502
14.4.7职业发展 503
14.4.8研究和实践的进一步发展 504
14.5学期项目 505
14.6主要参考文献 505
14.7练习 505
参考文献注解 507
索引 536