当前位置:主页 > 课后答案 > 软件工程习题答案
软件工程(第2版)

《软件工程(第2版)》课后习题答案

  • 更新:2021-05-07
  • 大小:248 KB
  • 类别:软件工程
  • 作者:张海藩
  • 出版:人民邮电出版社
  • 格式:PDF

  • 资源介绍
  • 相关推荐

《软件工程(第2版)》是《软件工程》的第二版。《软件工程(第2版)》由五篇共16章构成,第一篇讲述软件工程与软件过程;第二篇讲述结构化分析、设计与实现;第三篇讲述面向对象的概念、模型、分析、设计与实现;第四篇讲述软件项目的计划、组织和控制,并介绍了一些相关的国际标准;第五篇讲述形式化方法、统一建模语言UML和软件重用。

目录

  • 第一篇软件工程与软件过程1
  • 第1章软件工程1
  • 1.1软件危机1
  • 1.1.1计算机系统的发展历程1
  • 1.1.2软件危机的含义2
  • 1.1.3产生软件危机的原因3
  • 1.1.4消除软件危机的途径5
  • 1.2软件工程6
  • 1.2.1什么是软件工程6
  • 1.2.2软件工程的基本原理6
  • 1.2.3软件工程方法学8
  • 1.3小结10
  • 习题11
  • 第2章软件过程13
  • 2.1软件生命周期的基本任务13
  • 2.2瀑布模型16
  • 2.3快速原型模型18
  • 2.4增量模型19
  • 2.5螺旋模型20
  • 2.6喷泉模型22
  • 2.7小结23
  • 习题24
  • 第二篇传统方法学25
  • 第3章结构化分析25
  • 3.1概述25
  • 3.2与用户通信的技术26
  • 3.2.1访谈26
  • 3.2.2简易的应用规格说明技术27
  • 3.2.3软件原型28
  • 3.3分析建模与规格说明29
  • 3.3.1分析建模29
  • 3.3.2软件需求规格说明29
  • 3.4实体-关系图31
  • 3.4.1数据对象31
  • 3.4.2属性31
  • 3.4.3关系32
  • 3.4.4实体-关系图的符号32
  • 3.5数据流图33
  • 3.5.1数据流图符号33
  • 3.5.2例子34
  • 3.5.3命名37
  • 3.6状态转换图37
  • 3.6.1状态38
  • 3.6.2事件38
  • 3.6.3符号38
  • 3.6.4例子39
  • 3.7数据字典40
  • 3.8结构化分析实例41
  • 3.8.1问题陈述42
  • 3.8.2问题定义42
  • 3.8.3可行性研究43
  • 3.8.4需求分析48
  • 3.9小结53
  • 习题55
  • 第4章结构化设计56
  • 4.1结构化设计与结构化分析的关系56
  • 4.2软件设计的概念和原理57
  • 4.2.1模块化57
  • 4.2.2抽象59
  • 4.2.3逐步求精59
  • 4.2.4信息隐藏60
  • 4.3模块独立61
  • 4.3.1耦合61
  • 4.3.2内聚62
  • 4.4启发规则63
  • 4.4.1改进软件结构提高模块独立性63
  • 4.4.2模块规模应该适中64
  • 4.4.3深度、宽度、扇出和扇入都应适当64
  • 4.4.4模块的作用域应该在控制域之内64
  • 4.4.5力争降低模块接口的复杂程度65
  • 4.4.6设计单入口单出口的模块65
  • 4.4.7模块功能应该可以预测65
  • 4.5表示软件结构的图形工具65
  • 4.5.1层次图和HIPO图65
  • 4.5.2结构图67
  • 4.6面向数据流的设计方法68
  • 4.6.1概念68
  • 4.6.2变换分析69
  • 4.6.3事务分析75
  • 4.6.4设计优化76
  • 4.7人机界面设计77
  • 4.7.1人机界面设计问题77
  • 4.7.2人机界面设计过程78
  • 4.7.3界面设计指南79
  • 4.8过程设计81
  • 4.9过程设计的工具83
  • 4.9.1程序流程图83
  • 4.9.2盒图(N-S图)84
  • 4.9.3PAD图84
  • 4.9.4判定表86
  • 4.9.5判定树87
  • 4.9.6过程设计语言(PDL)87
  • 4.10面向数据结构的设计方法88
  • 4.10.1Jackson图88
  • 4.10.2改进的Jackson图89
  • 4.10.3Jackson方法89
  • 4.11小结94
  • 习题95
  • 第5章结构化实现98
  • 5.1编码98
  • 5.1.1选择程序设计语言98
  • 5.1.2编码风格100
  • 5.2软件测试基础102
  • 5.2.1测试目标102
  • 5.2.2黑盒测试和白盒测试103
  • 5.2.3测试准则103
  • 5.2.4流图103
  • 5.3逻辑覆盖106
  • 5.4控制结构测试108
  • 5.4.1基本路径测试108
  • 5.4.2条件测试111
  • 5.4.3数据流测试113
  • 5.4.4循环测试114
  • 5.5黑盒测试技术115
  • 5.5.1等价划分116
  • 5.5.2边界值分析118
  • 5.5.3错误推测119
  • 5.6测试策略120
  • 5.6.1测试步骤120
  • 5.6.2单元测试121
  • 5.6.3集成测试123
  • 5.6.4确认测试126
  • 5.7调试127
  • 5.7.1调试过程127
  • 5.7.2调试途径128
  • 5.8软件可靠性130
  • 5.8.1基本概念130
  • 5.8.2估算平均无故障时间的方法131
  • 5.9小结132
  • 习题133
  • 第三篇面向对象方法学139
  • 第6章面向对象方法学导论139
  • 6.1面向对象程序设计实例139
  • 6.1.1用对象分解取代功能分解141
  • 6.1.2设计类等级143
  • 6.1.3定义属性和服务144
  • 6.1.4用C++语言实现147
  • 6.2面向对象方法学概述147
  • 6.2.1面向对象方法学的要点149
  • 6.2.2面向对象的软件过程150
  • 6.3面向对象方法学的主要优点153
  • 6.4面向对象的概念153
  • 6.4.1对象156
  • 6.4.2其他概念159
  • 6.5面向对象建模160
  • 6.6对象模型160
  • 6.6.1表示类的符号161
  • 6.6.2表示关系的符号164
  • 6.7动态模型165
  • 6.8功能模型165
  • 6.9三种模型之间的关系166
  • 6.10小结166
  • 习题166
  • 第7章面向对象分析168
  • 7.1分析过程168
  • 7.1.1概述168
  • 7.1.2三个子模型与五个层次169
  • 7.2需求陈述170
  • 7.2.1书写要点170
  • 7.2.2例子171
  • 7.3建立对象模型172
  • 7.3.1确定类与对象172
  • 7.3.2确定关联174
  • 7.3.3划分主题177
  • 7.3.4确定属性177
  • 7.3.5识别继承关系178
  • 7.3.6反复修改179
  • 7.4建立动态模型182
  • 7.4.1编写脚本182
  • 7.4.2设想用户界面183
  • 7.4.3画事件跟踪图184
  • 7.4.4画状态图184
  • 7.4.5审查动态模型186
  • 7.5建立功能模型187
  • 7.5.1画出基本系统模型图187
  • 7.5.2画出功能级数据流图187
  • 7.5.3描述处理框功能188
  • 7.6定义服务189
  • 7.6.1常规行为189
  • 7.6.2从事件导出的操作189
  • 7.6.3与数据流图中处理框对应的操作189
  • 7.6.4利用继承减少冗余操作189
  • 7.7面向对象分析实例190
  • 7.7.1需求陈述190
  • 7.7.2建立对象模型190
  • 7.7.3建立动态模型191
  • 7.7.4建立功能模型193
  • 7.7.5进一步完善194
  • 7.8小结194
  • 习题195
  • 第8章面向对象设计197
  • 8.1面向对象设计的准则197
  • 8.1.1模块化198
  • 8.1.2抽象198
  • 8.1.3信息隐藏198
  • 8.1.4弱耦合198
  • 8.1.5强内聚199
  • 8.1.6可重用199
  • 8.2启发规则199
  • 8.2.1设计结果应该清晰易懂200
  • 8.2.2一般-特殊结构的深度应适当200
  • 8.2.3设计简单的类200
  • 8.2.4使用简单的协议201
  • 8.2.5使用简单的服务201
  • 8.2.6把设计变动减至最小201
  • 8.3系统分解201
  • 8.3.1子系统之间的两种交互方式202
  • 8.3.2组织系统的两种方案202
  • 8.3.3设计系统的拓扑结构203
  • 8.4设计问题域子系统203
  • 8.4.1调整需求204
  • 8.4.2重用已有的类204
  • 8.4.3把问题域类组合在一起204
  • 8.4.4增添一般化类以建立协议204
  • 8.4.5ATM系统之例204
  • 8.5设计人-机交互子系统205
  • 8.5.1设计人-机交互界面的准则205
  • 8.5.2设计人-机交互子系统的策略206
  • 8.6设计任务管理子系统207
  • 8.6.1分析并发性208
  • 8.6.2设计任务管理子系统208
  • 8.7设计数据管理子系统209
  • 8.7.1选择数据存储管理模式209
  • 8.7.2设计数据管理子系统210
  • 8.7.3例子212
  • 8.8设计类中的服务212
  • 8.8.1确定类中应有的服务212
  • 8.8.2设计实现服务的方法213
  • 8.9设计关联214
  • 8.9.1关联的遍历214
  • 8.9.2实现单向关联214
  • 8.9.3实现双向关联215
  • 8.9.4关联对象的实现方法215
  • 8.10设计优化215
  • 8.10.1确定优先级215
  • 8.10.2提高效率的几项技术216
  • 8.10.3调整继承关系217
  • 8.11面向对象分析与设计实例218
  • 8.11.1面向对象分析219
  • 8.11.2面向对象设计221
  • 8.12小结225
  • 习题226
  • 第9章面向对象实现227
  • 9.1程序设计语言227
  • 9.1.1面向对象语言的优点227
  • 9.1.2面向对象语言的技术特点228
  • 9.1.3选择面向对象语言231
  • 9.2程序设计风格232
  • 9.2.1提高可重用性232
  • 9.2.2提高可扩充性234
  • 9.2.3提高健壮性234
  • 9.3测试策略235
  • 9.3.1面向对象的单元测试235
  • 9.3.2面向对象的集成测试235
  • 9.3.3面向对象的确认测试236
  • 9.4设计测试用例236
  • 9.4.1测试类的方法236
  • 9.4.2集成测试方法238
  • 9.5小结240
  • 习题240
  • 第四篇软件项目管理242
  • 第10章计划242
  • 10.1度量软件规模242
  • 10.1.1代码行技术243
  • 10.1.2功能点技术245
  • 10.2工作量估算245
  • 10.2.1静态单变量模型245
  • 10.2.2动态多变量模型245
  • 10.2.3COCOMO2模型246
  • 10.3进度计划248
  • 10.3.1基本原则249
  • 10.3.2估算软件开发时间250
  • 10.3.3Gantt图251
  • 10.3.4工程网络252
  • 10.3.5估算进度253
  • 10.3.6关键路径254
  • 10.3.7机动时间255
  • 10.4小结256
  • 习题257
  • 第11章组织259
  • 11.1民主制程序员组259
  • 11.2主程序员组260
  • 11.3现代程序员组262
  • 11.4软件项目组263
  • 11.4.1三种组织方式264
  • 11.4.2四种组织范型265
  • 11.5小结266
  • 习题266
  • 第12章控制267
  • 12.1风险管理267
  • 12.1.1软件风险分类267
  • 12.1.2风险识别268
  • 12.1.3风险预测272
  • 12.1.4处理风险的策略274
  • 12.2质量保证275
  • 12.2.1软件质量275
  • 12.2.2软件质量保证措施276
  • 12.3配置管理279
  • 12.3.1软件配置279
  • 12.3.2软件配置管理过程281
  • 12.4小结286
  • 习题286
  • 第13章国际标准288
  • 13.1IEEE1058.1软件项目管理计划标准288
  • 13.1.1软件项目管理计划的组成288
  • 13.1.2IEEE软件项目管理计划288
  • 13.2ISO9000质量标准289
  • 13.2.1基本思想291
  • 13.2.2ISO9000-3标准291
  • 13.3ISO/IEC12207软件生命周期过程标准292
  • 13.3.1概述294
  • 13.3.2软件生命周期过程294
  • 13.4ISO/IECTR15504软件过程评估标准295
  • 13.4.1概述298
  • 13.4.2标准的结构299
  • 13.5能力成熟度模型299
  • 13.5.1能力成熟度模型的结构300
  • 13.5.2能力成熟度等级301
  • 13.5.3关键过程域302
  • 13.5.4应用CMM303
  • 13.6小结304
  • 习题305
  • 第五篇高级课题306
  • 第14章形式化方法306
  • 14.1概述306
  • 14.1.1非形式化方法的缺点306
  • 14.1.214.1.2软件开发过程中的数学307
  • 14.1.3应用形式化方法的准则307
  • 14.2有穷状态机308
  • 14.2.1基本概念308
  • 14.2.2电梯问题309
  • 14.2.3评论312
  • 14.3Petri网312
  • 14.3.1基本概念312
  • 14.3.2应用实例314
  • 14.4Z语言315
  • 14.4.1简介315
  • 14.4.2评论317
  • 14.5小结318
  • 习题318
  • 第15章统一建模语言UML320
  • 15.1概述320
  • 15.1.1UML的产生和发展320
  • 15.1.2UML的结构321
  • 15.1.3UML的图322
  • 15.1.4UML的应用领域323
  • 15.2静态建模机制324
  • 15.2.1用例图324
  • 15.2.2类图和对象图327
  • 15.3动态建模机制336
  • 15.3.1消息336
  • 15.3.2状态图336
  • 15.3.3顺序图337
  • 15.3.4协作图339
  • 15.3.5活动图340
  • 15.4描述物理架构的机制341
  • 15.4.1逻辑架构和物理架构341
  • 15.4.2构件图341
  • 15.4.3配置图342
  • 15.5使用和扩展UML343
  • 15.5.1使用UML的准则343
  • 15.5.2扩展UML的机制344
  • 15.6小结345
  • 习题345
  • 第16章软件重用346
  • 16.1可重用的软件成分346
  • 16.2软件重用过程347
  • 16.2.1构件组装模型347
  • 16.2.2类构件348
  • 16.2.3重用过程模型349
  • 16.3领域工程350
  • 16.3.1分析过程350
  • 16.3.2领域特征351
  • 16.3.3结构建模和结构点352
  • 16.4开发可重用的构件352
  • 16.4.1为了重用的分析与设计352
  • 16.4.2基于构件的开发353
  • 16.5分类和检索构件354
  • 16.5.1描述可重用的构件355
  • 16.5.2重用环境357
  • 16.6软件重用的效益357
  • 16.7小结358
  • 习题359
  • 参考文献360

资源下载

资源下载地址1:https://pan.baidu.com/s/1LBPkp_cViaQkYPSMOfd_kw

网友留言