图书介绍
软件工程 修订版 第4版PDF|Epub|txt|kindle电子书版本网盘下载
![软件工程 修订版 第4版](https://www.shukui.net/cover/23/31309598.jpg)
- (美)莎丽·劳伦斯·弗里格(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例子:Z127
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过程中的UML225
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