软件工程(第3版)
[美]Shari Lawrence Pfleeger [加]Joanne M.Atlee
7115158291
添加新评论 / 2007-05-01
/ 16开 / 465页 / 0字
¥59.00
(3家书店)
"软件工程(第3版)"的详细介绍……
本书是软件工程领域的经典著作,国际上众多名校均采用本书作为教材。本书分为3个部分。第一部分旨在引起读者学习软件工程的兴趣,解释为什么软件工程知识对实践者和研究者是同样重要的,然后在论证过程模型的同时,也强调了敏捷方法的必要性,最后讨论项目计划的相关概念,以及它与软件开发过程的相关性。第二部分论述开发和维护的主要步骤:引发、建模和检查需求,设计问题的解决方案,编写和测试代码,以及将软件交付给客户。第三部分主要讲述软件评估和改进,着眼于如何评价过程和产品的质量,以及如何采取措施改进。.
本书适合作为计算机相关专业软件工程课程的本科教材,也适用于介绍软件工程的概念与实践的研究生课程,期望进一步学习该领域相关知识的专业人员也可以阅读本书。
本书是软件工程领域公认的经典名著,也是业界最常引用的主要文献之一,被国内外众多名校广泛采用。与其他软件工程著作不同的是,本书注重从实践出发选择和安排素材,同时又保持了理论的全面与深度。诸如复用。风险管理和质量工程.测度和度量等理论性比较强的主题,没有专设章节,而是融合在受其影响的各种软件工程活动中讲述。..
新版继承了本书的一贯优点特色:理论阐述循序渐进,善于揭示各知识点之间的内在联系,并通过大量实例和工程实践深化和丰富理论知识;选材与时俱进,反映了最新的业界动态,尤其是建模和敏捷方法方面的重要进展。两个贯穿全书的研究案例——一个信息系统和一个实时系统,以及书中的学期项目,引导读者很好地将概念有机地应用到实际项目中去。...
哪里可以买到"软件工程(第3版)"?
从 3 家优秀的网上书店中选购"软件工程(第3版)"
※ 如果您是第一次来到好图书选购图书,请点此查看“购书指南”。
※ 发现价格错误了?书店有售而好图书却没有显示?立刻点此给好图书改错。
※ 图书价格仅供参考,实际售价及是否有库存以各网站实际标示为准。
※ 若售价差别过大,可能因不同规格或者版本引起,请自行甄别。
"软件工程(第3版)"的图书目录……
第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相互联系的系统12
1.6工程的方法14
1.6.1盖房子15
1.6.2构建一个系统16
1.7开发团队的成员17
1.8软件工程发生了多大的变化18
1.8.1变化的本质19
1.8.2软件工程的Wasserman规范20
1.9信息系统的例子24
1.10实时系统的例子25
1.11本章对单个开发人员的意义27
1.12本章对开发团队的意义27
1.13本章对研究人员的意义27
1.14学期项目28
1.15主要参考文献29
1.16练习29
第2章过程和生命周期的建模31
2.1过程的含义31
2.2软件过程模型33
2.2.1瀑布模型33
2.2.2V模型35
2.2.3原型化模型36
2.2.4可操作规格说明37
2.2.5可转换模型37
2.2.6阶段化开发:增量和迭代38
2.2.7螺旋模型39
2.2.8敏捷方法40
2.3过程建模工具和技术43
2.3.1静态建模:Lai表示法43
2.3.2动态建模:系统动力学45
2.4实际的过程建模48
2.4.1Marvel的案例研究48
2.4.2过程建模工具和技术应该具有的特性50
2.5信息系统的例子50
2.6实时系统的例子52
2.7本章对单个开发人员的意义53
2.8本章对开发团队的意义53
2.9本章对研究人员的意义53
2.10学期项目53
2.11主要参考文献55
2.12练习56
第3章计划和管理项目57
3.1跟踪项目进展57
3.1.1工作分解和活动图58
3.1.2估算完成时间60
3.1.3跟踪进展的工具64
3.2项目人员66
3.2.1人员角色和特性66
3.2.2工作风格69
3.2.3项目组织70
3.3工作量估算72
3.3.1专家判断74
3.3.2算法方法75
3.3.3机器学习方法80
3.3.4找出适合具体情形的模型81
3.4风险管理82
3.4.1什么是风险82
3.4.2风险管理活动83
3.5项目计划85
3.6过程模型和项目管理87
3.6.1注册管理87
3.6.2责任建模88
3.6.3紧密结合里程碑91
3.7信息系统的例子92
3.8实时系统的例子93
3.9本章对单个开发人员的意义94
3.10本章对开发团队的意义94
3.11本章对研究人员的意义95
3.12学期项目95
3.13主要参考文献95
3.14练习96
第4章获取需求98
4.1需求过程99
4.2需求引发100
4.3需求的类型103
4.3.1解决冲突105
4.3.2两种需求文档105
4.4需求的特性107
4.5建模表示法107
4.5.1实体—联系图108
4.5.2例子:UML类图109
4.5.3事件踪迹111
4.5.4例子:消息时序图112
4.5.5状态机113
4.5.6例子:UML状态图114
4.5.7例子:Petri网116
4.5.8数据流图118
4.5.9例子:用例119
4.5.10函数和关系120
4.5.11例子:判定表121
4.5.12例子:Parnas表122
4.5.13逻辑122
4.5.14例子:对象约束语言(OCL)124
4.5.15例子:Z125
4.5.16代数规格说明126
4.5.17例子:SDL数据127
4.6需求和规格说明语言129
4.6.1统一建模语言(UML)129
4.6.2规格说明和描述语言(SDL)130
4.6.3软件成本降低(SCR)131
4.6.4需求表示法的其他特征131
4.7原型化需求131
4.8需求文档133
4.8.1需求定义133
4.8.2需求规格说明书134
4.8.3过程管理和需求的可跟踪性135
4.9确认和验证136
4.9.1需求确认136
4.9.2验证138
4.10测量需求139
4.11选择规格说明技术140
4.12信息系统的例子143
4.13实时系统的例子145
4.13.1本章对单个开发人员的意义146
4.13.2本章对开发团队的意义146
4.13.3本章对研究人员的意义147
4.14学期项目147
4.14.1前提和假设147
4.14.2功能的高层描述147
4.14.3功能需求148
4.14.4数据约束148
4.14.5设计和接口约束149
4.14.6质量需求149
4.15主要参考文献149
4.16练习150
第5章设计系统153
5.1什么是设计153
5.2分解和模块化155
5.3体系结构风格和策略157
5.3.1管道和过滤器158
5.3.2面向对象的设计158
5.3.3隐含调用158
5.3.4分层159
5.3.5信息库160
5.3.6解释器160
5.3.7过程控制161
5.3.8其他风格162
5.4创建设计中的问题163
5.4.1模块化和抽象层次163
5.4.2协作的设计164
5.4.3设计用户界面166
5.4.4并发性168
5.4.5设计模式和复用169
5.5好设计的特性170
5.5.1构件独立性170
5.5.2异常标识和处理175
5.5.3防错和容错技术176
5.6改进设计技术178
5.6.1降低复杂性178
5.6.2按合同设计180
5.6.3原型化设计181
5.6.4故障树分析182
5.7设计的评估和确认184
5.7.1数学的确认184
5.7.2测量设计质量184
5.7.3比较设计185
5.7.4设计评审188
5.8文档化设计191
5.9信息系统的例子192
5.10实时系统的例子193
5.11本章对单个开发人员的意义194
5.12本章对开发团队的意义194
5.13本章对研究人员的意义195
5.14学期项目195
5.15主要参考文献195
5.16练习196
第6章细述对象197
6.1什么是OO198
6.2OO开发过程200
6.2.1OO需求201
6.2.2OO设计201
6.2.3OO编码和测试201
6.3用例202
6.4OO的表示:一个使用UML的例子205
6.5OO系统设计207
6.6OO程序设计218
6.6.1设计助手220
6.6.2用户界面设计220
6.6.3数据管理设计222
6.6.4任务管理设计222
6.7OO测度224
6.7.1OO规模测量225
6.7.2OO设计的测量226
6.7.3在何处进行OO测度230
6.8信息系统的例子231
6.9实时系统的例子232
6.10本章对单个开发人员的意义232
6.11本章对开发团队的意义233
6.12本章对研究人员的意义233
6.13学期项目233
6.14主要参考文献233
6.15练习234
第7章编写程序235
7.1编程标准和过程235
7.1.1对单个开发人员的标准236
7.1.2对其他开发人员的标准236
7.1.3设计和实现的匹配237
7.2编程的指导原则237
7.2.1控制结构237
7.2.2算法238
7.2.3数据结构239
7.2.4通用性指导原则241
7.3文档244
7.3.1内部文档244
7.3.2外部文档247
7.4编程过程247
7.4.1将编程作为问题求解247
7.4.2极限编程248
7.4.3结对编程249
7.4.4编程向何处去249
7.5信息系统的例子250
7.6实时系统的例子251
7.7本章对单个开发人员的意义252
7.8本章对开发团队的意义252
7.9本章对研究人员的意义252
7.10学期项目252
7.11主要参考文献253
7.12练习..253
第8章测试程序254
8.1软件故障和失效254
8.1.1故障的类型255
8.1.2正交缺陷分类256
8.2测试的相关问题258
8.2.1测试的组织258
8.2.2对测试的态度259
8.2.3谁执行测试259
8.2.4测试对象的视图260
8.3单元测试261
8.3.1检查代码262
8.3.2证明代码正确性264
8.3.3测试程序构件267
8.3.4技术比较270
8.4集成测试271
8.4.1自底向上集成271
8.4.2自顶向下集成272
8.4.3一次性集成274
8.4.4三明治集成274
8.4.5集成策略的比较275
8.5测试面向对象系统277
8.5.1代码测试277
8.5.2面向对象测试和传统测试之间的区别277
8.6测试计划279
8.6.1计划的目的279
8.6.2计划的内容279
8.7自动测试工具280
8.7.1代码分析工具280
8.7.2测试执行工具281
8.7.3测试用例生成器282
8.8什么时候停止测试282
8.8.1故障播种283
8.8.2软件中的可信度284
8.8.3其他的停止测试的标准284
8.8.4识别易出故障的代码285
8.9信息系统的例子286
8.10实时系统的例子286
8.11本章对单个开发人员的意义287
8.12本章对开发团队的意义287
8.13本章对研究人员的意义288
8.14学期项目288
8.15主要参考文献288
8.16练习289
第9章测试系统291
9.1系统测试的原则291
9.1.1软件故障根源291
9.1.2系统测试过程293
9.1.3配置管理295
9.1.4测试小组299
9.2功能测试300
9.2.1目的与职责300
9.2.2因果图301
9.3性能测试304
9.3.1目的和职责304
9.3.2性能测试的类型304
9.4可靠性.可用性以及可维护性305
9.4.1定义305
9.4.2失效数据306
9.4.3测量可靠性.可用性和可维护性307
9.4.4可靠性稳定性和可靠性增长308
9.4.5可靠性预测309
9.4.6操作环境的重要性311
9.5验收测试312
9.5.1目的和职责312
9.5.2验收测试的种类312
9.5.3验收测试的结果313
9.6安装测试314
9.7自动化系统测试314
9.8测试文档315
9.8.1测试计划315
9.8.2测试规格说明和评估317
9.8.3测试描述318
9.8.4测试分析报告320
9.8.5问题报告表321
9.9测试安全攸关的系统322
9.9.1设计多样性324
9.9.2软件安全性案例325
9.9.3净室方法327
9.10信息系统的例子330
9.11实时系统的例子331
9.12本章对单个开发人员的意义332
9.13本章对开发团队的意义332
9.14本章对研究人员的意义332
9.15学期项目333
9.16主要参考文献333
9.17练习333
第10章交付系统337
10.1培训337
10.1.1培训的种类338
10.1.2培训助手339
10.1.3培训的指导原则340
10.2文档340
10.2.1文档的种类340
10.2.2用户帮助和疑难解答344
10.3信息系统的例子345
10.4实时系统的例子345
10.5本章对单个开发人员的意义346
10.6本章对开发团队的意义346
10.7本章对研究人员的意义346
10.8学期项目346
10.9主要参考文献347
10.10练习347
第11章维护系统348
11.1变化的系统348
11.1.1系统的类型348
11.1.2在系统生命周期过程中发生的变化351
11.1.3系统生命周期跨度351
11.2维护的本质353
11.3维护问题356
11.3.1人员的问题356
11.3.2技术问题357
11.3.3必要的妥协358
11.3.4维护成本358
11.4测量维护特性361
11.4.1可维护性的外部视图361
11.4.2影响可维护性的内部属性362
11.4.3其他的产品测量364
11.5维护技术和工具365
11.5.1配置管理365
11.5.2影响分析366
11.5.3自动化维护工具369
11.6软件再生370
11.6.1文档重构372
11.6.2重组372
11.6.3逆向工程373
11.6.4再工程374
11.6.5软件再生的前景375
11.7信息系统的例子375
11.8实时系统的例子376
11.9本章对单个开发人员的意义376
11.10本章对开发团队的意义377
11.11本章对研究人员的意义377
11.12学期项目377
11.13主要参考文献377
11.14练习377
第12章评估产品.过程和资源379
12.1评估的方法379
12.1.1特征分析379
12.1.2调查380
12.1.3案例研究380
12.1.4正式试验381
12.1.5准备评估381
12.2选择评估技术382
12.2.1关键选择因素382
12.2.2相信什么383
12.3评价与预测385
12.3.1确认预测系统386
12.3.2确认测量387
12.3.3对确认的紧迫需求388
12.4评估产品388
12.4.1产品质量模型389
12.4.2建立基线和设定目标392
12.4.3软件可复用性393
12.5评估过程399
12.5.1事后分析400
12.5.2过程成熟度模型403
12.6评估资源410
12.6.1人员成熟度模型411
12.6.2投资回报412
12.7信息系统的例子414
12.8实时系统的例子414
12.9本章对单个开发人员的意义414
12.10本章对开发团队的意义415
12.11本章对研究人员的意义415
12.12学期项目415
12.13主要参考文献415
12.14练习416
第13章改进预测.产品.过程和资源417
13.1改进预测417
13.1.1预测的精确性417
13.1.2处理偏误:u曲线418
13.1.3处理噪声:prequential似然度420
13.1.4重新校准预测421
13.2改进产品423
13.2.1审查424
13.2.2复用426
13.3改进过程426
13.3.1过程和能力成熟度427
13.3.2维护429
13.3.3净室方法430
13.4改进资源431
13.4.1工作环境432
13.4.2成本和进度间的权衡433
13.5总体改进指导原则433
13.6信息系统的例子434
13.7实时系统的例子434
13.8本章对单个开发人员的意义435
13.9本章对开发团队的意义435
13.10本章对研究人员的意义435
13.11学期项目436
13.12主要参考文献436
13.13练习436
第14章软件工程的未来437
14.1已经取得的进展437
14.1.1Wasserman的获得成熟度的措施437
14.1.2当前要做的工作439
14.2技术转移439
14.2.1现在我们怎样做出技术转移的决策440
14.2.2在技术决策中使用证据440
14.2.3支持技术决策的证据441
14.2.4对证据的进一步讨论441
14.2.5技术转移的新模型443
14.2.6改进技术转移的下一步444
14.3软件工程中的决策444
14.3.1大量的决策445
14.3.2群体决策446
14.3.3我们实际上如何决策447
14.3.4群体实际上如何决策449
14.3.5一个适度的观察研究450
14.3.6获得的经验教训452
14.4软件工程的职业化:执照发放.认证和伦理453
14.4.1将重点放在人员上453
14.4.2软件工程教育454
14.4.3软件工程知识体系455
14.4.4给软件工程师颁发执照457
14.4.5认证460
14.4.6伦理守则462
14.4.7职业发展463
14.4.8研究和实践的进一步发展464
14.5学期项目465
14.6主要参考文献465
14.7练习465
参考文献注解(图灵网站下载)
索引(图灵网站下载)...
"软件工程(第3版)"的书摘……
用建模和设计跨越研究与实践之间的鸿沟
自从1968年“软件工程”这一术语在NATO会议上首次使用以来,软件工程已经走过了很长的一段路.如今,软件本身已经以各种形式融入我们的生活,这种局面即使在十年前,也很少有人预料到.因此,坚实的软件工程理论和实践基础,对于理解如何开发优质软件,以及评估软件在日常生活中所遭遇的风险和存在的机遇是不可或缺的.本书体现了当前软件工程领域两个阵营(即实践者和研究者)之间的相互融合.其中实践者主要关注构造完成某些功能的高质量产品,而研究者则努力寻找各种方法改进产品质量以及提高开发人员生产效率.EdsgarDykstra不断提醒我们:严密认真的研究与实践将检验我们对软件工程的理解,并帮助我们改进思维方式.方法,进而最终改进我们的产品.我们正是本着这种精神对本书进行了增订,为这种不断的探究和改进的过程构造一个基础框架..
要构建这样的框架,在研究与实践之间架设桥梁,关键是建模和设计的理念.软件工程师决不能像程序员那样只遵从设计说明,就如同厨师长决不能像厨师那样只遵从菜单一样.构造优秀的软件是一门艺术,这体现在如何抽象出问题的本质要素,对它建模,并使用这些抽象设计出解决方案.经常能听到优秀开发人员谈论“优雅的”解决方案,这是在说解决方案抓住了问题的核心,因此软件不仅能够解决眼前的问题,而且当问题随着时间演化时,软件也能够很容易地进行修改.正因为这样,本版包含广泛的素材,讨论如何对问题进行抽象和建模,以及如何使用模型设计合适的解决方案.这样,学生就能够学会融合研究与实践.艺术与科学,构造坚实的软件.
科学总是以事实为基础的.本书是为本科生软件工程课程而设计的,注重软件工程研究与实践的实用层面,使学生能够直接将所学知识应用于要解决的现实问题.书中所举的例子针对的是经验有限的学生,但是,这些例子清楚地阐明大型软件开发项目是如何从需求到概念,进而成为现实的过程.例子所描述的许多情形,读者未来都可能经历:大型项目与小型项目.“敏捷”方法与结构化方法.面向对象与过程的方法.实时与事务处理.开发与维护场景.
本书也适用于介绍软件工程的概念与实践的研究生课程,还适合于那些期望进一步学习该领域相关知识的专业人员.尤其是第12章至第14章给出了一些引人思考的资料,旨在引起研究生对当前研究主题的兴趣.
主要特色
本书区别于其他书的主要特色是:
·其他软件工程图书将测度和建模作为单独的问题考虑,本书则将测度和建模与更全面的软件工程论述结合起来.也就是,把测度和建模当作软件工程策略不可分割的部分,而不作为一个单独的分支.这样,学生能够学会如何抽象与建模,以及如何在日常开发活动中进行定量评估和改进.学生可以利用他们的模型理解所要解决的问题的要素,以及可供选择的其他解决方案,可以利用测度对个人.小组和项目的进度进行评估.
·类似地,诸如复用.风险管理和质量工程之类的概念都揉合到相应的软件工程活动中,而不是作为单独的问题来讲述.
·当前这一版本强调对敏捷方法(包括极限编程)的使用.它论述了给予开发人员更多自主权所带来的利益和遭遇的风险,并将敏捷方法与传统的软件开发方法进行比较.
·每章都将相应的概念应用于两个贯穿全书的例子中:一个例子是信息系统,另一个是实时系统.两个例子都基于实际的项目.信息系统的例子描述了一个大型英国电视公司确定广告时间价格的软件.实时系统的例子是阿丽亚娜5型火箭的控制软件,我们将考查该软件见诸报端的一些问题,并探讨如何利用软件工程技术找出其中的问题并加以解决.学生能够随着这两个有代表性的项目的进展,领会本书所描述的各种实践方法如何融入到构造系统的技术之中.
·在每章的结尾,结论都用3种形式表述:这一章的内容对开发团队的意义,对单个开发人员的意义,以及对研究者的意义.学生可以很容易地复习每章的要点,并了解每一章与研究以及实践的相关性.
·本书有配套网页,可从PretenceHall的公司网http
"软件工程(第3版)"的作者简介……
ShariLawrencePfleeger,世界范围内享有盛誉的软件工程学者,在软件开发领域有着数十年的丰富经验,主要从事软件工程和信息技术的教学.咨询和研究,是软件质量保证.度量和软件工程实践研究方面的世界级权威.现任美国著名的智库兰德公司的高级研究员.她曾经执教于马里兰大学和伦敦城市大学.并担任IEEESoftware和IEEETransactionsonSoftwareEngineering等业界权威期刊副主编多年.除本书外,她与人合作撰写的SecurityinComputing也是广泛采用的主流教材..
JoanneM.Atlee,世界知名的软件工程学者,在软件需求和软件工程教育方面做出了杰出贡献.她是IEEE计算机学会和ACM联合发起的软件工程课程项目指导委员会的成员.也是国际信息处理联合会(IFIP)软件需求工程工作组成员.她是滑铁卢大学副教授,创立了该校的软件工程学位项目并任项目主任....