软件工程

软件工程
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
2009-07
版次: 1
ISBN: 9787302198123
定价: 29.50
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 334页
字数: 506千字
正文语种: 简体中文
159人买过
  •   为了满足“软件工程”课程学时较少的高等学校对一本适用教材的迫切需求,作者对先后荣获了全国普通高等学校工科电子类专业优秀教材一等奖和全国优秀畅销书奖,并被评为北京高等教育精品教材的《软件工程导论》作了精心改编,保留了原书中较重要、较新颖的内容,删除或简化了一些较陈旧或较次要的内容,写出了《软件工程》。
      本书全面系统地讲述了软件工程的概念、原理和典型的方法学,并介绍了软件项目的管理技术。本书正文共13章,第1章是概述,第2章至第8章顺序讲述软件生命周期各阶段的任务、过程、结构化方法和工具,第9章至第12章分别讲述面向对象方法学引论、面向对象分析、面向对象设计和面向对象实现,第13章介绍软件项目管理。正文后面有两个附录,分别讲述了用面向对象方法和结构化方法开发两个软件的过程,对读者深入理解软件工程学很有帮助,也是上机实习的好材料。
      本书可作为高等院校“软件工程”课程的教材或教学参考书,也可供有一定实际经验的软件工作人员和需要开发应用软件的广大计算机用户阅读参考。 第1章软件工程学概述1
    1.1软件危机1
    1.1.1软件危机的介绍1
    1.1.2产生软件危机的原因2
    1.1.3消除软件危机的途径4
    1.2软件工程4
    1.2.1软件工程的介绍4
    1.2.2软件工程的基本原理5
    1.2.3软件工程方法学5
    1.3软件生命周期8
    1.4软件过程11
    1.4.1瀑布模型11
    1.4.2快速原型模型13
    1.4.3增量模型15
    1.4.4螺旋模型16
    1.4.5喷泉模型18
    1.4.6Rational统一过程19
    1.4.7敏捷过程与极限编程22
    1.4.8微软过程26
    1.5小结28
    习题129

    第2章可行性研究31
    2.1可行性研究的任务31
    2.2可行性研究过程32
    2.3数据流图34
    2.3.1符号342.3.2例子35
    2.3.3命名38
    2.3.4用途39
    2.4数据字典40
    2.4.1数据字典的内容40
    2.4.2定义数据的方法41
    2.4.3数据字典的用途42
    2.4.4数据字典的实现42
    2.5成本/效益分析43
    2.5.1成本估计43
    2.5.2成本/效益分析的方法44
    2.6小结46
    习题247

    软件工程目录第3章需求分析49
    3.1需求分析的任务50
    3.1.1确定对系统的综合要求50
    3.1.2分析系统的数据要求51
    3.1.3导出系统的逻辑模型52
    3.1.4修正系统开发计划52
    3.2与用户沟通获取需求的方法52
    3.2.1访谈52
    3.2.2面向数据流自顶向下求精53
    3.2.3简易的应用规格说明技术54
    3.2.4快速建立软件原型55
    3.3分析建模与规格说明56
    3.3.1分析建模56
    3.3.2软件需求规格说明56
    3.4实体-联系图56
    3.4.1数据对象57
    3.4.2属性57
    3.4.3联系57
    3.4.4实体-联系图的符号58
    3.5数据规范化58
    3.6状态转换图59
    3.6.1状态59
    3.6.2事件59
    3.6.3符号60
    3.6.4例子60
    3.7其他图形工具61
    3.7.1层次方框图62
    3.7.2Warnier图62
    3.7.3IPO图63
    3.8验证软件需求64
    3.8.1从哪些方面验证软件需求的正确性64
    3.8.2验证软件需求的方法64
    3.8.3用于需求分析的软件工具65
    3.9小结66
    习题367

    第4章形式化说明技术69
    4.1概述69
    4.1.1非形式化方法的缺点69
    4.1.2形式化方法的优点70
    4.1.3应用形式化方法的准则70
    4.2有穷状态机71
    4.2.1概念71
    4.2.2例子73
    4.2.3评价76
    4.3Petri网76
    4.3.1概念76
    4.3.2例子78
    4.4Z语言79
    4.4.1简介79
    4.4.2评价82
    4.5小结82
    习题483

    第5章总体设计85
    5.1设计过程85
    5.2设计原理87
    5.2.1模块化87
    5.2.2抽象89
    5.2.3逐步求精89
    5.2.4信息隐藏和局部化90
    5.2.5模块独立91
    5.3启发规则93
    5.4描绘软件结构的图形工具95
    5.4.1层次图和HIPO图95
    5.4.2结构图96
    5.5小结97
    习题598

    第6章详细设计101
    6.1结构程序设计101
    6.2人机界面设计103
    6.2.1设计问题103
    6.2.2设计过程105
    6.2.3人机界面设计指南106
    6.3过程设计的工具108
    6.3.1程序流程图108
    6.3.2盒图108
    6.3.3PAD图109
    6.3.4判定表110
    6.3.5判定树111
    6.3.6过程设计语言112
    6.4程序复杂程度的定量度量113
    6.4.1McCabe方法113
    6.4.2Halstead方法116
    6.5小结116
    习题6117

    第7章实现121
    7.1编码122
    7.1.1选择程序设计语言122
    7.1.2编码风格122
    7.2软件测试基础123
    7.2.1软件测试的目标123
    7.2.2软件测试准则124
    7.2.3测试方法124
    7.2.4测试步骤125
    7.2.5测试阶段的信息流126
    7.3单元测试126
    7.3.1测试重点127
    7.3.2代码审查128
    7.3.3计算机测试128
    7.4集成测试130
    7.4.1自顶向下集成130
    7.4.2自底向上集成132
    7.4.3不同集成测试策略的比较132
    7.4.4回归测试133
    7.5确认测试133
    7.5.1确认测试的范围134
    7.5.2软件配置复查134
    7.5.3Alpha和Beta测试134
    7.6白盒测试技术135
    7.6.1逻辑覆盖135
    7.6.2控制结构测试138
    7.7黑盒测试技术144
    7.7.1等价划分145
    7.7.2边界值分析148
    7.7.3错误推测148
    7.8调试149
    7.8.1调试过程149
    7.8.2调试途径151
    7.9软件可靠性152
    7.9.1基本概念152
    7.9.2估算平均无故障时间的方法153
    7.10小结155
    习题7156

    第8章维护161
    8.1软件维护的定义161
    8.2软件维护的特点162
    8.2.1结构化维护与非结构化维护差别巨大162
    8.2.2维护的代价高昂162
    8.2.3维护的问题很多163
    8.3软件维护过程164
    8.4软件的可维护性166
    8.4.1决定软件可维护性的因素166
    8.4.2文档167
    8.4.3可维护性复审168
    8.5预防性维护169
    8.6软件再工程过程170
    8.7小结172
    习题8173

    第9章面向对象方法学引论175
    9.1面向对象方法学概述175
    9.1.1面向对象方法学的要点175
    9.1.2面向对象方法学的优点177
    9.2面向对象的概念181
    9.2.1对象181
    9.2.2其他概念183
    9.3面向对象建模187
    9.4对象模型188
    9.4.1类图的基本符号189
    9.4.2表示关系的符号190
    9.5动态模型195
    9.6功能模型196
    9.6.1用例图196
    9.6.2用例建模199
    9.73种模型之间的关系200
    9.8小结201
    习题9201

    第10章面向对象分析203
    10.1面向对象分析的基本过程203
    10.1.1概述203
    10.1.23个子模型与5个层次204
    10.2需求陈述205
    10.2.1书写要点205
    10.2.2例子206
    10.3建立对象模型207
    10.3.1确定类与对象208
    10.3.2确定关联210
    10.3.3划分主题213
    10.3.4确定属性213
    10.3.5识别继承关系216
    10.3.6反复修改216
    10.4建立动态模型219
    10.4.1编写脚本219
    10.4.2设想用户界面220
    10.4.3画事件跟踪图221
    10.4.4画状态图222
    10.4.5审查动态模型223
    10.5建立功能模型225
    10.5.1画出基本系统模型图225
    10.5.2画出功能级数据流图226
    10.5.3描述处理框功能226
    10.6定义服务227
    10.7小结228
    习题10228

    第11章面向对象设计231
    11.1面向对象设计的准则231
    11.2启发规则233
    11.3软件重用235
    11.3.1概述235
    11.3.2类构件237
    11.3.3软件重用的效益238
    11.4系统分解239
    11.5设计问题域子系统242
    11.6设计人机交互子系统245
    11.7设计任务管理子系统247
    11.8设计数据管理子系统249
    11.8.1数据存储管理模式选择249
    11.8.2数据管理子系统设计250
    11.8.3例子252
    11.9设计类中的服务252
    11.9.1确定类中应有的服务252
    11.9.2设计实现服务的方法253
    11.10设计关联254
    11.11设计优化255
    11.11.1确定优先级255
    11.11.2提高效率的几项技术256
    11.11.3调整继承关系257
    11.12小结259
    习题11260

    第12章面向对象实现261
    12.1程序设计语言261
    12.1.1面向对象语言的优点261
    12.1.2面向对象语言的技术特点262
    12.1.3选择面向对象语言266
    12.2程序设计风格266
    12.2.1提高可重用性267
    12.2.2提高可扩充性269
    12.2.3提高健壮性269
    12.3测试策略270
    12.3.1面向对象的单元测试270
    12.3.2面向对象的集成测试271
    12.3.3面向对象的确认测试271
    12.4设计测试用例271
    12.4.1测试类的方法272
    12.4.2集成测试方法273
    12.5小结275
    习题12276

    第13章软件项目管理277
    13.1估算软件规模277
    13.1.1代码行技术277
    13.1.2功能点技术278
    13.2工作量估算280
    13.2.1静态单变量模型280
    13.2.2动态多变量模型280
    13.2.3COCOMO2模型281
    13.3进度计划284
    13.3.1估算开发时间284
    13.3.2Gantt图286
    13.3.3工程网络287
    13.3.4估算工程进度288
    13.3.5关键路径290
    13.3.6机动时间290
    13.4人员组织292
    13.4.1民主制程序员组292
    13.4.2主程序员组293
    13.4.3现代程序员组294
    13.5质量保证296
    13.5.1软件质量296
    13.5.2软件质量保证措施298
    13.6软件配置管理300
    13.6.1软件配置301
    13.6.2软件配置管理过程301
    13.7能力成熟度模型303
    13.8小结306
    习题13307

    附录AC++类库管理系统的分析与设计309
    A.1面向对象分析309
    A.1.1需求309
    A.1.2建立对象模型310
    A.2面向对象设计311
    A.2.1设计类库结构311
    A.2.2设计问题域子系统312
    A.2.3设计人机交互子系统313
    A.2.4设计其他类316

    附录B一个汉字行编辑程序的设计317
    B.1设计规格说明317
    B.1.1外部编辑命令317
    B.1.2编辑命令318
    B.1.3输出信息319
    B.2概要设计320
    B.2.1正文文件320
    B.2.2两个工作模式321
    B.2.3数据元素322
    B.2.4过程323
    B.3概要设计结果323
    B.4详细设计326
    B.4.1数据元素326
    B.4.2控制数据元素328
    B.4.3编辑过程328
    B.4.4输入模式的过程329
    B.4.5编辑模式的过程330
    B.4.6编辑程序的详细结构333

    参考文献335

    第1章软件工程学概述1
    1.1软件危机1
    1.1.1软件危机的介绍1
    1.1.2产生软件危机的原因3
    1.1.3消除软件危机的途径4
    1.2软件工程5
    1.2.1软件工程的介绍5
    1.2.2软件工程的基本原理7
    1.2.3软件工程方法学9
    1.3软件生命周期11
    1.4软件过程14
    1.4.1瀑布模型15
    1.4.2快速原型模型16
    1.4.3增量模型17
    1.4.4螺旋模型19
    1.4.5喷泉模型21
    1.4.6Rational统一过程22
    1.4.7敏捷过程与极限编程25
    1.4.8微软过程29
    1.5小结31
    习题132

    第2章可行性研究35
    2.1可行性研究的任务35
    2.2可行性研究过程36
    2.3系统流程图382.3.1符号38
    2.3.2例子38
    2.3.3分层40
    2.4数据流图40
    软件工程目录2.4.1符号40
    2.4.2例子42
    2.4.3命名44
    2.4.4用途45
    2.5数据字典47
    2.5.1数据字典的内容47
    2.5.2定义数据的方法47
    2.5.3数据字典的用途48
    2.5.4数据字典的实现49
    2.6成本/效益分析49
    2.6.1成本估计50
    2.6.2成本/效益分析的方法51
    2.7小结53
    习题253

    第3章需求分析55
    3.1需求分析的任务56
    3.1.1确定对系统的综合要求56
    3.1.2分析系统的数据要求57
    3.1.3导出系统的逻辑模型58
    3.1.4修正系统开发计划58
    3.2与用户沟通获取需求的方法58
    3.2.1访谈58
    3.2.2面向数据流自顶向下求精59
    3.2.3简易的应用规格说明技术59
    3.2.4快速建立软件原型61
    3.3分析建模与规格说明62
    3.3.1分析建模62
    3.3.2软件需求规格说明62
    3.4实体-联系图62
    3.4.1数据对象63
    3.4.2属性63
    3.4.3联系63
    3.4.4实体-联系图的符号64
    3.5数据规范化64
    3.6状态转换图65
    3.6.1状态65
    3.6.2事件65
    3.6.3符号66
    3.6.4例子66
    3.7其他图形工具67
    3.7.1层次方框图68
    3.7.2Warnier图68
    3.7.3IPO图69
    3.8验证软件需求70
    3.8.1从哪些方面验证软件需求的正确性70
    3.8.2验证软件需求的方法70
    3.8.3用于需求分析的软件工具71
    3.9小结72
    习题373

    第4章形式化说明技术75
    4.1概述75
    4.1.1非形式化方法的缺点75
    4.1.2形式化方法的优点76
    4.1.3应用形式化方法的准则76
    4.2有穷状态机77
    4.2.1概念77
    4.2.2例子79
    4.2.3评价82
    4.3Petri网82
    4.3.1概念82
    4.3.2例子84
    4.4Z语言85
    4.4.1简介85
    4.4.2评价88
    4.5小结88
    习题489

    第5章总体设计91
    5.1设计过程91
    5.2设计原理94
    5.2.1模块化94
    5.2.2抽象95
    5.2.3逐步求精95
    5.2.4信息隐藏和局部化96
    5.2.5模块独立97
    5.3启发规则99
    5.4描绘软件结构的图形工具102
    5.4.1层次图和HIPO图102
    5.4.2结构图103
    5.5面向数据流的设计方法104
    5.5.1概念104
    5.5.2变换分析105
    5.5.3事务分析111
    5.5.4设计优化112
    5.6小结113
    习题5114

    第6章详细设计117
    6.1结构程序设计117
    6.2人机界面设计119
    6.2.1设计问题119
    6.2.2设计过程121
    6.2.3人机界面设计指南122
    6.3过程设计的工具124
    6.3.1程序流程图124
    6.3.2盒图125
    6.3.3PAD图126
    6.3.4判定表127
    6.3.5判定树128
    6.3.6过程设计语言128
    6.4面向数据结构的设计方法129
    6.4.1Jackson图130
    6.4.2改进的Jackson图131
    6.4.3Jackson方法132
    6.5程序复杂程度的定量度量136
    6.5.1McCabe方法137
    6.5.2Halstead方法139
    6.6小结140
    习题6140

    第7章实现145
    7.1编码146
    7.1.1选择程序设计语言146
    7.1.2编码风格147
    7.2软件测试基础149
    7.2.1软件测试的目标150
    7.2.2软件测试准则150
    7.2.3测试方法151
    7.2.4测试步骤151
    7.2.5测试阶段的信息流152
    7.3单元测试153
    7.3.1测试重点153
    7.3.2代码审查154
    7.3.3计算机测试155
    7.4集成测试156
    7.4.1自顶向下集成157
    7.4.2自底向上集成158
    7.4.3不同集成测试策略的比较159
    7.4.4回归测试160
    7.5确认测试160
    7.5.1确认测试的范围160
    7.5.2软件配置复查161
    7.5.3Alpha和Beta测试161
    7.6白盒测试技术162
    7.6.1逻辑覆盖162
    7.6.2控制结构测试165
    7.7黑盒测试技术171
    7.7.1等价划分172
    7.7.2边界值分析175
    7.7.3错误推测175
    7.8调试176
    7.8.1调试过程176
    7.8.2调试途径178
    7.9软件可靠性179
    7.9.1基本概念179
    7.9.2估算平均无故障时间的方法180
    7.10小结182
    习题7183

    第8章维护189
    8.1软件维护的定义189
    8.2软件维护的特点190
    8.2.1结构化维护与非结构化维护差别巨大190
    8.2.2维护的代价高昂190
    8.2.3维护的问题很多191
    8.3软件维护过程192
    8.4软件的可维护性194
    8.4.1决定软件可维护性的因素194
    8.4.2文档195
    8.4.3可维护性复审196
    8.5预防性维护197
    8.6软件再工程过程198
    8.7小结200
    习题8201

    第9章面向对象方法学引论203
    9.1面向对象方法学概述203
    9.1.1面向对象方法学的要点203
    9.1.2面向对象方法学的优点205
    9.2面向对象的概念209
    9.2.1对象209
    9.2.2其他概念211
    9.3面向对象建模215
    9.4对象模型216
    9.4.1类图的基本符号217
    9.4.2表示关系的符号218
    9.5动态模型223
    9.6功能模型224
    9.6.1用例图224
    9.6.2用例建模227
    9.73种模型之间的关系228
    9.8小结229
    习题9229

    第10章面向对象分析231
    10.1面向对象分析的基本过程231
    10.1.1概述231
    10.1.23个子模型与5个层次232
    10.2需求陈述233
    10.2.1书写要点233
    10.2.2例子234
    10.3建立对象模型235
    10.3.1确定类与对象236
    10.3.2确定关联238
    10.3.3划分主题241
    10.3.4确定属性241
    10.3.5识别继承关系244
    10.3.6反复修改244
    10.4建立动态模型247
    10.4.1编写脚本247
    10.4.2设想用户界面248
    10.4.3画事件跟踪图249
    10.4.4画状态图250
    10.4.5审查动态模型251
    10.5建立功能模型253
    10.5.1画出基本系统模型图253
    10.5.2画出功能级数据流图254
    10.5.3描述处理框功能254
    10.6定义服务255
    10.7小结256
    习题10256

    第11章面向对象设计259
    11.1面向对象设计的准则259
    11.2启发规则261
    11.3软件重用263
    11.3.1概述263
    11.3.2类构件265
    11.3.3软件重用的效益266
    11.4系统分解267
    11.5设计问题域子系统270
    11.6设计人机交互子系统273
    11.7设计任务管理子系统275
    11.8设计数据管理子系统277
    11.8.1选择数据存储管理模式277
    11.8.2设计数据管理子系统278
    11.8.3例子280
    11.9设计类中的服务280
    11.9.1确定类中应有的服务280
    11.9.2设计实现服务的方法281
    11.10设计关联282
    11.11设计优化283
    11.11.1确定优先级283
    11.11.2提高效率的几项技术284
    11.11.3调整继承关系285
    11.12小结287
    习题11288

    第12章面向对象实现289
    12.1程序设计语言289
    12.1.1面向对象语言的优点289
    12.1.2面向对象语言的技术特点290
    12.1.3选择面向对象语言294
    12.2程序设计风格294
    12.2.1提高可重用性295
    12.2.2提高可扩充性297
    12.2.3提高健壮性297
    12.3测试策略298
    12.3.1面向对象的单元测试298
    12.3.2面向对象的集成测试299
    12.3.3面向对象的确认测试299
    12.4设计测试用例299
    12.4.1测试类的方法300
    12.4.2集成测试方法301
    12.5小结303
    习题12304

    第13章软件项目管理305
    13.1估算软件规模305
    13.1.1代码行技术305
    13.1.2功能点技术306
    13.2工作量估算308
    13.2.1静态单变量模型308
    13.2.2动态多变量模型308
    13.2.3COCOMO2模型309
    13.3进度计划312
    13.3.1估算开发时间312
    13.3.2Gantt图314
    13.3.3工程网络315
    13.3.4估算工程进度316
    13.3.5关键路径318
    13.3.6机动时间318
    13.4人员组织320
    13.4.1民主制程序员组320
    13.4.2主程序员组321
    13.4.3现代程序员组322
    13.5质量保证324
    13.5.1软件质量324
    13.5.2软件质量保证措施326
    13.6软件配置管理328
    13.6.1软件配置329
    13.6.2软件配置管理过程329
    13.7能力成熟度模型331
    13.8小结334
    习题13335

    附录AC++类库管理系统的分析与设计337
    A.1面向对象分析337
    A.1.1需求337
    A.1.2建立对象模型338
    A.2面向对象设计339
    A.2.1设计类库结构339
    A.2.2设计问题域子系统340
    A.2.3设计人机交互子系统341
    A.2.4设计其他类344

    附录B一个汉字行编辑程序的设计347
    B.1设计规格说明347
    B.1.1外部编辑命令347
    B.1.2编辑命令348
    B.1.3输出信息349
    B.2概要设计350
    B.2.1正文文件350
    B.2.2两个工作模式351
    B.2.3数据元素352
    B.2.4过程353
    B.3概要设计结果353
    B.4详细设计356
    B.4.1数据元素356
    B.4.2控制数据元素357
    B.4.3编辑过程357
    B.4.4输入模式的过程359
    B.4.5编辑模式的过程360
    B.5详细设计结果364
    B.5.1编辑程序的详细结构364
    B.5.2类PASCAL伪码365
    B.5.3实现编辑程序的算法367

    参考文献395
  • 内容简介:
      为了满足“软件工程”课程学时较少的高等学校对一本适用教材的迫切需求,作者对先后荣获了全国普通高等学校工科电子类专业优秀教材一等奖和全国优秀畅销书奖,并被评为北京高等教育精品教材的《软件工程导论》作了精心改编,保留了原书中较重要、较新颖的内容,删除或简化了一些较陈旧或较次要的内容,写出了《软件工程》。
      本书全面系统地讲述了软件工程的概念、原理和典型的方法学,并介绍了软件项目的管理技术。本书正文共13章,第1章是概述,第2章至第8章顺序讲述软件生命周期各阶段的任务、过程、结构化方法和工具,第9章至第12章分别讲述面向对象方法学引论、面向对象分析、面向对象设计和面向对象实现,第13章介绍软件项目管理。正文后面有两个附录,分别讲述了用面向对象方法和结构化方法开发两个软件的过程,对读者深入理解软件工程学很有帮助,也是上机实习的好材料。
      本书可作为高等院校“软件工程”课程的教材或教学参考书,也可供有一定实际经验的软件工作人员和需要开发应用软件的广大计算机用户阅读参考。
  • 目录:
    第1章软件工程学概述1
    1.1软件危机1
    1.1.1软件危机的介绍1
    1.1.2产生软件危机的原因2
    1.1.3消除软件危机的途径4
    1.2软件工程4
    1.2.1软件工程的介绍4
    1.2.2软件工程的基本原理5
    1.2.3软件工程方法学5
    1.3软件生命周期8
    1.4软件过程11
    1.4.1瀑布模型11
    1.4.2快速原型模型13
    1.4.3增量模型15
    1.4.4螺旋模型16
    1.4.5喷泉模型18
    1.4.6Rational统一过程19
    1.4.7敏捷过程与极限编程22
    1.4.8微软过程26
    1.5小结28
    习题129

    第2章可行性研究31
    2.1可行性研究的任务31
    2.2可行性研究过程32
    2.3数据流图34
    2.3.1符号342.3.2例子35
    2.3.3命名38
    2.3.4用途39
    2.4数据字典40
    2.4.1数据字典的内容40
    2.4.2定义数据的方法41
    2.4.3数据字典的用途42
    2.4.4数据字典的实现42
    2.5成本/效益分析43
    2.5.1成本估计43
    2.5.2成本/效益分析的方法44
    2.6小结46
    习题247

    软件工程目录第3章需求分析49
    3.1需求分析的任务50
    3.1.1确定对系统的综合要求50
    3.1.2分析系统的数据要求51
    3.1.3导出系统的逻辑模型52
    3.1.4修正系统开发计划52
    3.2与用户沟通获取需求的方法52
    3.2.1访谈52
    3.2.2面向数据流自顶向下求精53
    3.2.3简易的应用规格说明技术54
    3.2.4快速建立软件原型55
    3.3分析建模与规格说明56
    3.3.1分析建模56
    3.3.2软件需求规格说明56
    3.4实体-联系图56
    3.4.1数据对象57
    3.4.2属性57
    3.4.3联系57
    3.4.4实体-联系图的符号58
    3.5数据规范化58
    3.6状态转换图59
    3.6.1状态59
    3.6.2事件59
    3.6.3符号60
    3.6.4例子60
    3.7其他图形工具61
    3.7.1层次方框图62
    3.7.2Warnier图62
    3.7.3IPO图63
    3.8验证软件需求64
    3.8.1从哪些方面验证软件需求的正确性64
    3.8.2验证软件需求的方法64
    3.8.3用于需求分析的软件工具65
    3.9小结66
    习题367

    第4章形式化说明技术69
    4.1概述69
    4.1.1非形式化方法的缺点69
    4.1.2形式化方法的优点70
    4.1.3应用形式化方法的准则70
    4.2有穷状态机71
    4.2.1概念71
    4.2.2例子73
    4.2.3评价76
    4.3Petri网76
    4.3.1概念76
    4.3.2例子78
    4.4Z语言79
    4.4.1简介79
    4.4.2评价82
    4.5小结82
    习题483

    第5章总体设计85
    5.1设计过程85
    5.2设计原理87
    5.2.1模块化87
    5.2.2抽象89
    5.2.3逐步求精89
    5.2.4信息隐藏和局部化90
    5.2.5模块独立91
    5.3启发规则93
    5.4描绘软件结构的图形工具95
    5.4.1层次图和HIPO图95
    5.4.2结构图96
    5.5小结97
    习题598

    第6章详细设计101
    6.1结构程序设计101
    6.2人机界面设计103
    6.2.1设计问题103
    6.2.2设计过程105
    6.2.3人机界面设计指南106
    6.3过程设计的工具108
    6.3.1程序流程图108
    6.3.2盒图108
    6.3.3PAD图109
    6.3.4判定表110
    6.3.5判定树111
    6.3.6过程设计语言112
    6.4程序复杂程度的定量度量113
    6.4.1McCabe方法113
    6.4.2Halstead方法116
    6.5小结116
    习题6117

    第7章实现121
    7.1编码122
    7.1.1选择程序设计语言122
    7.1.2编码风格122
    7.2软件测试基础123
    7.2.1软件测试的目标123
    7.2.2软件测试准则124
    7.2.3测试方法124
    7.2.4测试步骤125
    7.2.5测试阶段的信息流126
    7.3单元测试126
    7.3.1测试重点127
    7.3.2代码审查128
    7.3.3计算机测试128
    7.4集成测试130
    7.4.1自顶向下集成130
    7.4.2自底向上集成132
    7.4.3不同集成测试策略的比较132
    7.4.4回归测试133
    7.5确认测试133
    7.5.1确认测试的范围134
    7.5.2软件配置复查134
    7.5.3Alpha和Beta测试134
    7.6白盒测试技术135
    7.6.1逻辑覆盖135
    7.6.2控制结构测试138
    7.7黑盒测试技术144
    7.7.1等价划分145
    7.7.2边界值分析148
    7.7.3错误推测148
    7.8调试149
    7.8.1调试过程149
    7.8.2调试途径151
    7.9软件可靠性152
    7.9.1基本概念152
    7.9.2估算平均无故障时间的方法153
    7.10小结155
    习题7156

    第8章维护161
    8.1软件维护的定义161
    8.2软件维护的特点162
    8.2.1结构化维护与非结构化维护差别巨大162
    8.2.2维护的代价高昂162
    8.2.3维护的问题很多163
    8.3软件维护过程164
    8.4软件的可维护性166
    8.4.1决定软件可维护性的因素166
    8.4.2文档167
    8.4.3可维护性复审168
    8.5预防性维护169
    8.6软件再工程过程170
    8.7小结172
    习题8173

    第9章面向对象方法学引论175
    9.1面向对象方法学概述175
    9.1.1面向对象方法学的要点175
    9.1.2面向对象方法学的优点177
    9.2面向对象的概念181
    9.2.1对象181
    9.2.2其他概念183
    9.3面向对象建模187
    9.4对象模型188
    9.4.1类图的基本符号189
    9.4.2表示关系的符号190
    9.5动态模型195
    9.6功能模型196
    9.6.1用例图196
    9.6.2用例建模199
    9.73种模型之间的关系200
    9.8小结201
    习题9201

    第10章面向对象分析203
    10.1面向对象分析的基本过程203
    10.1.1概述203
    10.1.23个子模型与5个层次204
    10.2需求陈述205
    10.2.1书写要点205
    10.2.2例子206
    10.3建立对象模型207
    10.3.1确定类与对象208
    10.3.2确定关联210
    10.3.3划分主题213
    10.3.4确定属性213
    10.3.5识别继承关系216
    10.3.6反复修改216
    10.4建立动态模型219
    10.4.1编写脚本219
    10.4.2设想用户界面220
    10.4.3画事件跟踪图221
    10.4.4画状态图222
    10.4.5审查动态模型223
    10.5建立功能模型225
    10.5.1画出基本系统模型图225
    10.5.2画出功能级数据流图226
    10.5.3描述处理框功能226
    10.6定义服务227
    10.7小结228
    习题10228

    第11章面向对象设计231
    11.1面向对象设计的准则231
    11.2启发规则233
    11.3软件重用235
    11.3.1概述235
    11.3.2类构件237
    11.3.3软件重用的效益238
    11.4系统分解239
    11.5设计问题域子系统242
    11.6设计人机交互子系统245
    11.7设计任务管理子系统247
    11.8设计数据管理子系统249
    11.8.1数据存储管理模式选择249
    11.8.2数据管理子系统设计250
    11.8.3例子252
    11.9设计类中的服务252
    11.9.1确定类中应有的服务252
    11.9.2设计实现服务的方法253
    11.10设计关联254
    11.11设计优化255
    11.11.1确定优先级255
    11.11.2提高效率的几项技术256
    11.11.3调整继承关系257
    11.12小结259
    习题11260

    第12章面向对象实现261
    12.1程序设计语言261
    12.1.1面向对象语言的优点261
    12.1.2面向对象语言的技术特点262
    12.1.3选择面向对象语言266
    12.2程序设计风格266
    12.2.1提高可重用性267
    12.2.2提高可扩充性269
    12.2.3提高健壮性269
    12.3测试策略270
    12.3.1面向对象的单元测试270
    12.3.2面向对象的集成测试271
    12.3.3面向对象的确认测试271
    12.4设计测试用例271
    12.4.1测试类的方法272
    12.4.2集成测试方法273
    12.5小结275
    习题12276

    第13章软件项目管理277
    13.1估算软件规模277
    13.1.1代码行技术277
    13.1.2功能点技术278
    13.2工作量估算280
    13.2.1静态单变量模型280
    13.2.2动态多变量模型280
    13.2.3COCOMO2模型281
    13.3进度计划284
    13.3.1估算开发时间284
    13.3.2Gantt图286
    13.3.3工程网络287
    13.3.4估算工程进度288
    13.3.5关键路径290
    13.3.6机动时间290
    13.4人员组织292
    13.4.1民主制程序员组292
    13.4.2主程序员组293
    13.4.3现代程序员组294
    13.5质量保证296
    13.5.1软件质量296
    13.5.2软件质量保证措施298
    13.6软件配置管理300
    13.6.1软件配置301
    13.6.2软件配置管理过程301
    13.7能力成熟度模型303
    13.8小结306
    习题13307

    附录AC++类库管理系统的分析与设计309
    A.1面向对象分析309
    A.1.1需求309
    A.1.2建立对象模型310
    A.2面向对象设计311
    A.2.1设计类库结构311
    A.2.2设计问题域子系统312
    A.2.3设计人机交互子系统313
    A.2.4设计其他类316

    附录B一个汉字行编辑程序的设计317
    B.1设计规格说明317
    B.1.1外部编辑命令317
    B.1.2编辑命令318
    B.1.3输出信息319
    B.2概要设计320
    B.2.1正文文件320
    B.2.2两个工作模式321
    B.2.3数据元素322
    B.2.4过程323
    B.3概要设计结果323
    B.4详细设计326
    B.4.1数据元素326
    B.4.2控制数据元素328
    B.4.3编辑过程328
    B.4.4输入模式的过程329
    B.4.5编辑模式的过程330
    B.4.6编辑程序的详细结构333

    参考文献335

    第1章软件工程学概述1
    1.1软件危机1
    1.1.1软件危机的介绍1
    1.1.2产生软件危机的原因3
    1.1.3消除软件危机的途径4
    1.2软件工程5
    1.2.1软件工程的介绍5
    1.2.2软件工程的基本原理7
    1.2.3软件工程方法学9
    1.3软件生命周期11
    1.4软件过程14
    1.4.1瀑布模型15
    1.4.2快速原型模型16
    1.4.3增量模型17
    1.4.4螺旋模型19
    1.4.5喷泉模型21
    1.4.6Rational统一过程22
    1.4.7敏捷过程与极限编程25
    1.4.8微软过程29
    1.5小结31
    习题132

    第2章可行性研究35
    2.1可行性研究的任务35
    2.2可行性研究过程36
    2.3系统流程图382.3.1符号38
    2.3.2例子38
    2.3.3分层40
    2.4数据流图40
    软件工程目录2.4.1符号40
    2.4.2例子42
    2.4.3命名44
    2.4.4用途45
    2.5数据字典47
    2.5.1数据字典的内容47
    2.5.2定义数据的方法47
    2.5.3数据字典的用途48
    2.5.4数据字典的实现49
    2.6成本/效益分析49
    2.6.1成本估计50
    2.6.2成本/效益分析的方法51
    2.7小结53
    习题253

    第3章需求分析55
    3.1需求分析的任务56
    3.1.1确定对系统的综合要求56
    3.1.2分析系统的数据要求57
    3.1.3导出系统的逻辑模型58
    3.1.4修正系统开发计划58
    3.2与用户沟通获取需求的方法58
    3.2.1访谈58
    3.2.2面向数据流自顶向下求精59
    3.2.3简易的应用规格说明技术59
    3.2.4快速建立软件原型61
    3.3分析建模与规格说明62
    3.3.1分析建模62
    3.3.2软件需求规格说明62
    3.4实体-联系图62
    3.4.1数据对象63
    3.4.2属性63
    3.4.3联系63
    3.4.4实体-联系图的符号64
    3.5数据规范化64
    3.6状态转换图65
    3.6.1状态65
    3.6.2事件65
    3.6.3符号66
    3.6.4例子66
    3.7其他图形工具67
    3.7.1层次方框图68
    3.7.2Warnier图68
    3.7.3IPO图69
    3.8验证软件需求70
    3.8.1从哪些方面验证软件需求的正确性70
    3.8.2验证软件需求的方法70
    3.8.3用于需求分析的软件工具71
    3.9小结72
    习题373

    第4章形式化说明技术75
    4.1概述75
    4.1.1非形式化方法的缺点75
    4.1.2形式化方法的优点76
    4.1.3应用形式化方法的准则76
    4.2有穷状态机77
    4.2.1概念77
    4.2.2例子79
    4.2.3评价82
    4.3Petri网82
    4.3.1概念82
    4.3.2例子84
    4.4Z语言85
    4.4.1简介85
    4.4.2评价88
    4.5小结88
    习题489

    第5章总体设计91
    5.1设计过程91
    5.2设计原理94
    5.2.1模块化94
    5.2.2抽象95
    5.2.3逐步求精95
    5.2.4信息隐藏和局部化96
    5.2.5模块独立97
    5.3启发规则99
    5.4描绘软件结构的图形工具102
    5.4.1层次图和HIPO图102
    5.4.2结构图103
    5.5面向数据流的设计方法104
    5.5.1概念104
    5.5.2变换分析105
    5.5.3事务分析111
    5.5.4设计优化112
    5.6小结113
    习题5114

    第6章详细设计117
    6.1结构程序设计117
    6.2人机界面设计119
    6.2.1设计问题119
    6.2.2设计过程121
    6.2.3人机界面设计指南122
    6.3过程设计的工具124
    6.3.1程序流程图124
    6.3.2盒图125
    6.3.3PAD图126
    6.3.4判定表127
    6.3.5判定树128
    6.3.6过程设计语言128
    6.4面向数据结构的设计方法129
    6.4.1Jackson图130
    6.4.2改进的Jackson图131
    6.4.3Jackson方法132
    6.5程序复杂程度的定量度量136
    6.5.1McCabe方法137
    6.5.2Halstead方法139
    6.6小结140
    习题6140

    第7章实现145
    7.1编码146
    7.1.1选择程序设计语言146
    7.1.2编码风格147
    7.2软件测试基础149
    7.2.1软件测试的目标150
    7.2.2软件测试准则150
    7.2.3测试方法151
    7.2.4测试步骤151
    7.2.5测试阶段的信息流152
    7.3单元测试153
    7.3.1测试重点153
    7.3.2代码审查154
    7.3.3计算机测试155
    7.4集成测试156
    7.4.1自顶向下集成157
    7.4.2自底向上集成158
    7.4.3不同集成测试策略的比较159
    7.4.4回归测试160
    7.5确认测试160
    7.5.1确认测试的范围160
    7.5.2软件配置复查161
    7.5.3Alpha和Beta测试161
    7.6白盒测试技术162
    7.6.1逻辑覆盖162
    7.6.2控制结构测试165
    7.7黑盒测试技术171
    7.7.1等价划分172
    7.7.2边界值分析175
    7.7.3错误推测175
    7.8调试176
    7.8.1调试过程176
    7.8.2调试途径178
    7.9软件可靠性179
    7.9.1基本概念179
    7.9.2估算平均无故障时间的方法180
    7.10小结182
    习题7183

    第8章维护189
    8.1软件维护的定义189
    8.2软件维护的特点190
    8.2.1结构化维护与非结构化维护差别巨大190
    8.2.2维护的代价高昂190
    8.2.3维护的问题很多191
    8.3软件维护过程192
    8.4软件的可维护性194
    8.4.1决定软件可维护性的因素194
    8.4.2文档195
    8.4.3可维护性复审196
    8.5预防性维护197
    8.6软件再工程过程198
    8.7小结200
    习题8201

    第9章面向对象方法学引论203
    9.1面向对象方法学概述203
    9.1.1面向对象方法学的要点203
    9.1.2面向对象方法学的优点205
    9.2面向对象的概念209
    9.2.1对象209
    9.2.2其他概念211
    9.3面向对象建模215
    9.4对象模型216
    9.4.1类图的基本符号217
    9.4.2表示关系的符号218
    9.5动态模型223
    9.6功能模型224
    9.6.1用例图224
    9.6.2用例建模227
    9.73种模型之间的关系228
    9.8小结229
    习题9229

    第10章面向对象分析231
    10.1面向对象分析的基本过程231
    10.1.1概述231
    10.1.23个子模型与5个层次232
    10.2需求陈述233
    10.2.1书写要点233
    10.2.2例子234
    10.3建立对象模型235
    10.3.1确定类与对象236
    10.3.2确定关联238
    10.3.3划分主题241
    10.3.4确定属性241
    10.3.5识别继承关系244
    10.3.6反复修改244
    10.4建立动态模型247
    10.4.1编写脚本247
    10.4.2设想用户界面248
    10.4.3画事件跟踪图249
    10.4.4画状态图250
    10.4.5审查动态模型251
    10.5建立功能模型253
    10.5.1画出基本系统模型图253
    10.5.2画出功能级数据流图254
    10.5.3描述处理框功能254
    10.6定义服务255
    10.7小结256
    习题10256

    第11章面向对象设计259
    11.1面向对象设计的准则259
    11.2启发规则261
    11.3软件重用263
    11.3.1概述263
    11.3.2类构件265
    11.3.3软件重用的效益266
    11.4系统分解267
    11.5设计问题域子系统270
    11.6设计人机交互子系统273
    11.7设计任务管理子系统275
    11.8设计数据管理子系统277
    11.8.1选择数据存储管理模式277
    11.8.2设计数据管理子系统278
    11.8.3例子280
    11.9设计类中的服务280
    11.9.1确定类中应有的服务280
    11.9.2设计实现服务的方法281
    11.10设计关联282
    11.11设计优化283
    11.11.1确定优先级283
    11.11.2提高效率的几项技术284
    11.11.3调整继承关系285
    11.12小结287
    习题11288

    第12章面向对象实现289
    12.1程序设计语言289
    12.1.1面向对象语言的优点289
    12.1.2面向对象语言的技术特点290
    12.1.3选择面向对象语言294
    12.2程序设计风格294
    12.2.1提高可重用性295
    12.2.2提高可扩充性297
    12.2.3提高健壮性297
    12.3测试策略298
    12.3.1面向对象的单元测试298
    12.3.2面向对象的集成测试299
    12.3.3面向对象的确认测试299
    12.4设计测试用例299
    12.4.1测试类的方法300
    12.4.2集成测试方法301
    12.5小结303
    习题12304

    第13章软件项目管理305
    13.1估算软件规模305
    13.1.1代码行技术305
    13.1.2功能点技术306
    13.2工作量估算308
    13.2.1静态单变量模型308
    13.2.2动态多变量模型308
    13.2.3COCOMO2模型309
    13.3进度计划312
    13.3.1估算开发时间312
    13.3.2Gantt图314
    13.3.3工程网络315
    13.3.4估算工程进度316
    13.3.5关键路径318
    13.3.6机动时间318
    13.4人员组织320
    13.4.1民主制程序员组320
    13.4.2主程序员组321
    13.4.3现代程序员组322
    13.5质量保证324
    13.5.1软件质量324
    13.5.2软件质量保证措施326
    13.6软件配置管理328
    13.6.1软件配置329
    13.6.2软件配置管理过程329
    13.7能力成熟度模型331
    13.8小结334
    习题13335

    附录AC++类库管理系统的分析与设计337
    A.1面向对象分析337
    A.1.1需求337
    A.1.2建立对象模型338
    A.2面向对象设计339
    A.2.1设计类库结构339
    A.2.2设计问题域子系统340
    A.2.3设计人机交互子系统341
    A.2.4设计其他类344

    附录B一个汉字行编辑程序的设计347
    B.1设计规格说明347
    B.1.1外部编辑命令347
    B.1.2编辑命令348
    B.1.3输出信息349
    B.2概要设计350
    B.2.1正文文件350
    B.2.2两个工作模式351
    B.2.3数据元素352
    B.2.4过程353
    B.3概要设计结果353
    B.4详细设计356
    B.4.1数据元素356
    B.4.2控制数据元素357
    B.4.3编辑过程357
    B.4.4输入模式的过程359
    B.4.5编辑模式的过程360
    B.5详细设计结果364
    B.5.1编辑程序的详细结构364
    B.5.2类PASCAL伪码365
    B.5.3实现编辑程序的算法367

    参考文献395
查看详情
12
相关图书 / 更多
软件工程
软件工程:经典、现代和前沿
孙艳春 主编, 黄罡,邓水光 编著
软件工程
软件利润流 英文限量版
(美)杰森·坦纳(Jason Tanner)
软件工程
软件逆向分析技术及应用
鲁宏伟 陈凯 邓贤君 许雷永
软件工程
软件性能测试实战教程(LoadRunner与JMeter)
周百顺 主编;张伟
软件工程
软件工程专业英语(第2版)
宋晓涛 谢红薇 郭晓红
软件工程
软件工程--理论与实践
毛新军 董威
软件工程
软件需求分析(微课版)
李美蓉 何中海
软件工程
软件自动化测试入门攻略
杨定佳
软件工程
软件工程(第4版 英文版)
(美) 莎丽·劳伦斯·弗里格(Shari Lawrence Pfleeger)
软件工程
软件性能测试、分析与调优实践之路(第2版)
张永清
软件工程
软件灵活性设计:如何避免陷入编程困境 [美]克里斯·汉森
(美)克里斯·汉森 (美)杰拉尔德·杰伊·萨斯曼
软件工程
软件开发珠玑:穿越50年软件往事的60条戒律
(美)Karl Wiegers(卡尔·魏格斯)