软件工程方法与实践
作者 : 窦万峰
出版日期 : 2009-05-14
ISBN : 7-111-26758-4
定价 : 32.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 288
开本 : 16开
原书名 :
原出版社:
属性分类: 教材
包含CD :
绝版 :
图书特色

图书前言

软件工程概念自1968年提出以来,经过了近四十年的发展,为软件行业从业人员从事软件开发和维护提供了理论指导和基本原则,促进了软件产品和软件行业的快速发展,也促进了软件工程自身的理论体系的完善和发展。
软件工程涉及软件分析、设计、实现和维护等软件生命全过程,包含了一系列原理、方法和实践,指导人们进行正确的软件开发。软件工程强调从工程化的原理出发,按照标准化规程和软件工程实践来开发和管理项目,并进行过程改进,促进软件企业向标准化和成熟化发展。
软件工程领域包括三个重要方面:软件开发、软件项目管理、过程改进。软件工程是一个理论与实践相结合的学科,更注重通过实践来理解理论和原理与方法。为此,本书结合作者多年从事软件工程教学和项目开发的经验,通过5个项目实例,从不同的角度和范型循序渐进介绍软件开发过程中所涉及的原理、方法与技术。
全书分为五个部分:
第一部分:软件工程概述。共4章内容,初步介绍软件工程的基本概念,涉及的主要内容,软件过程生命周期及其模型,以及本教材的案例与要求。
第二部分:软件分析。在这一部分共安排了3章内容,主要介绍软件分析与建模的原理和方法,包括结构化分析和面向对象分析的原理和方法。本部分分别介绍了分析的基本过程、非形式化的分析方法和获取需求的策略;介绍了结构化分析建模技术,包括面向数据流的分析技术和面向数据的分析技术;介绍了面向对象分析建模技术,包括用例建模、对象建模等,介绍如何用UML语言表示面向对象模型。本部分用案例进一步深化分析的思想和原理及过程。
第三部分:软件设计。在这一部分共安排4章内容,主要介绍软件设计原理和方法,包括结构化设计和面向对象设计技术。介绍设计的基本概念、原理和过程;介绍面向数据流的设计方法和面向数据结构的设计方法;介绍面向对象的设计方法,包括设计模型、精化设计、动态设计;介绍详细设计和界面设计等。本部分通过案例深入理解设计方法和过程。
第四部分:软件测试与维护。在这一部分安排两章内容,主要介绍软件测试原理与技术、维护策略与方法。介绍测试过程、测试基本技术、测试用例设计;介绍软件维护类型、可维护性和结构化维护过程。
第五部分:管理。在这一部分共安排3章内容,主要介绍软件项目管理概念与原理、软件成本估算、项目计划与管理。介绍软件项目管理的概念和指导原则、项目管理过程和任务、项目管理的范围等;介绍软件项目成本估算方法,包括项目度量、分解技术、经验模型;介绍项目计划安排、进度安排与监控、软件配置管理、风险管理等。
本书内容翔实,提供5个典型案例支持,便于读者学习和深入体会软件工程的原理和思想。不同的案例充分体现了不同的技术,因此有区别的案例介绍和分析层次会更加突出方法的实用性。本书第1~3章由宋效东编写,第4~9和11章由窦万峰编写,第10章由彭涛编写,第12章由洪奎编写,第13~14章由李芷编写,第15~16章由吴怀岗编写。
本书适合作为高等院校软件工程课程的教材,既适用于计算机专业的学生,也适用于其他非计算机专业从事软件开发与应用及管理的专业的学生。本书还可以作为软件开发人员的参考用书。
由于作者水平有限,难免有疏漏之处,恳切各位读者指正。尤其是针对提供的案例的详细程度和方案的多样性,请读者给予意见,以便以后改进和完善。

窦万峰
2009年2月

作者简介

窦万峰:暂无

图书目录

前言
教学建议
第一部分  软件工程与过程
第1章  概述 2
1.1  软件工程的基本概念 2
1.1.1  软件的角色和特性 2
1.1.2  软件演化 3
1.1.3  软件神化和危机 4
1.1.4  软件危机的解决途径 4
1.2  工程化思想 5
1.2.1  工程化所涉及的范围 5
1.2.2  工程化管理思想 5
1.3  软件工程两大范型 5
1.4  软件工程思想与基本原理 6
1.4.1  软件工程基本原理 7
1.4.2  软件工程思想 7
1.5  软件工程活动 9
1.5.1  软件开发活动 9
1.5.2  软件项目管理活动 9
1.5.3  软件过程改进活动 10
1.6  小结 10
习题 10
第2章  软件过程 11
2.1  软件过程概述 11
2.1.1  过程方法与工具 11
2.1.2  软件过程框架 12
2.1.3  软件过程模型 12
2.2  软件生命周期 12
2.3  能力成熟度模型集成 13
2.4  敏捷过程 16
2.4.1  什么是敏捷过程 17
2.4.2  极限编程 18
2.4.3  自适应软件开发 20
2.4.4  动态系统开发 21
2.4.5  特征驱动开发 21
2.5  软件工程实践 22
2.5.1  概念 22
2.5.2  沟通实践 23
2.5.3  计划实践 23
2.6  小结 24
习题 24
第3章  软件过程模型 25
3.1  瀑布模型 25
3.2  增量模型 26
3.2.1  增量构造模型 27
3.2.2  演化提交模型 27
3.3  螺旋模型 27
3.4  协同开发模型 28
3.5  面向对象过程模型 29
3.5.1  面向对象概念 29
3.5.2  统一过程模型 30
3.5.3  组件集成模型 33
3.6  面向方面的软件开发 34
3.7  小结 36
习题 36
第4章  案例研究 37
4.1  案例研究中涵盖的内容 37
4.2  案例1:出卷系统 37
4.3  案例2:短信系统 37
4.4  案例3:POS机系统 38
4.5  案例4:ATM机系统 38
4.6  案例5:图书馆系统 38
4.7  小结 38
习题 38
第二部分  软件需求分析与建模
第5章  软件需求分析过程 40
5.1  什么是软件需求 40
5.1.1  功能需求 40
5.1.2  非功能需求 40
5.1.3  领域需求 41
5.2  需求分析过程 43
5.2.1  初步沟通 43
5.2.2  导出需求 43
5.2.3  分析和精化 44
5.2.4  可行性研究 44
5.2.5  协商与沟通 44
5.2.6  规格说明 44
5.2.7  需求验证 46
5.2.8  需求变更管理 46
5.3  启动分析过程 46
5.3.1  确认利益相关者 46
5.3.2  识别视点 47
5.3.3  协同工作 47
5.3.4  首次提问 47
5.4  非形式化需求分析技术 47
5.4.1  会谈 47
5.4.2  调查表 49
5.4.3  场景分析 49
5.5  案例分析 49
5.5.1  出卷系统 49
5.5.2  POS机系统 50
5.5.3  图书馆系统 50
5.5.4  短信系统 51
5.5.5  ATM机系统 51
5.6  小结 51
习题 52
第6章  结构化分析建模 53
6.1  分析模型概述 53
6.1.1  分析模型元素 53
6.1.2  分析模式 54
6.1.3  目标与原理 54
6.2  结构化需求分析 54
6.2.1  结构化分析方法 55
6.2.2  结构化分析模型 55
6.3  面向数据的建模方法 56
6.3.1  实体 56
6.3.2  属性 56
6.3.3  关系 57
6.3.4  基数 57
6.3.5  案例分析 57
6.4  面向数据流的建模 58
6.4.1  数据流图 58
6.4.2  数据字典 60
6.4.3  状态转换图 61
6.4.4  加工逻辑的描述 61
6.5  案例分析 64
6.5.1  出卷系统 64
6.5.2  图书馆系统 66
6.5.3  POS机系统 68
6.5.4  短信系统 69
6.6  小结 71
习题 71
第7章  面向对象分析 73
7.1  面向对象建模 73
7.1.1  面向对象模型 73
7.1.2  统一建模语言(UML) 75
7.2  用例建模 76
7.2.1  编写用例 76
7.2.2  开发活动图 81
7.2.3  泳道图 82
7.3  建立领域模型 82
7.3.1  识别分析类 83
7.3.2  用例实现分析 84
7.3.3  关联与依赖 86
7.3.4  识别属性和操作 86
7.4  行为建模 87
7.4.1  系统顺序图 87
7.4.2  操作契约 88
7.4.3  顺序图与协作图 89
7.4.4  状态图 90
7.5  案例分析 90
7.5.1  POS机系统 91
7.5.2  ATM机系统 92
7.5.3  短信系统 96
7.6  小结 98
习题 98
第三部分  软件设计与建模
第8章  软件设计 100
8.1  软件设计概述 100
8.1.1  软件设计过程和设计质量 100
8.1.2  概要设计说明书 101
8.1.3  详细设计说明书 102
8.2  软件模块化设计 103
8.2.1  软件模块化 103
8.2.2  抽象 104
8.2.3  体系结构 104
8.2.4  信息隐蔽 104
8.2.5  模块独立性 105
8.2.6  逐步求精 106
8.2.7  重构 106
8.3  软件结构 106
8.3.1  软件结构图 106
8.3.2  模块化设计的优化 107
8.4  软件系统结构模型 108
8.4.1  系统构成模型 108
8.4.2  系统控制模型 110
8.5  体系结构模式 111
8.6  小结 111
习题 111
第9章  结构化设计方法 113
9.1  结构化设计方法概述 113
9.1.1  概要设计 113
9.1.2  详细设计 113
9.2  数据流类型 114
9.2.1  变换型数据流 114
9.2.2  事务型数据流 114
9.2.3  混合型数据流 114
9.3  数据流设计方法 115
9.3.1  数据流映射步骤 115
9.3.2  变换流设计 115
9.3.3  事务流设计 116
9.3.4  综合分层的数据流设计 117
9.4  面向数据的设计 118
9.4.1  Jackson图 118
9.4.2  JSD方法设计步骤 118
9.4.3  JSD举例分析 119
9.5  结构化程序设计方法 121
9.5.1  基本概念 121
9.5.2  结构化程序设计工具 122
9.6  案例分析 126
9.6.1  出卷系统 126
9.6.2  图书馆系统 129
9.7  小结 131
习题 131
第10章  面向对象设计 134
10.1  面向对象设计过程 134
10.1.1  系统模型描述 134
10.1.2  逻辑架构和包图 134
10.1.3  对象识别 135
10.1.4  设计模型 135
10.1.5  对象接口描述 137
10.2  构件级设计 137
10.2.1  构件类 137
10.2.2  构件级设计步骤 138
10.2.3  基于类的构件设计原则 139
10.3  设计模式 140
10.3.1  设计模式概述 140
10.3.2  基于职责的设计 140
10.4  面向对象详细设计 144
10.4.1  领域模型精化 144
10.4.2  逻辑架构精化 147
10.4.3  包设计 149
10.4.4  精化的交互图 150
10.4.5  精化的类图 152
10.4.6  持久性设计 154
10.4.7  部署图与构件图 156
10.5  案例分析 157
10.5.1  POS机系统 157
10.5.2  短信系统 158
10.5.3  ATM机系统 159
10.6  小结 163
习题 164
第11章  软件实现 165
11.1  编码语言 165
11.1.1  编码语言的分类 165
11.1.2  编码语言特性 165
11.1.3  面向对象语言的特点 166
11.1.4  编码语言的选择 167
11.2  编码风格 168
11.2.1  编码的基本原则 168
11.2.2  面向对象编码原则 169
11.3  人机界面设计 171
11.3.1  人机界面分析和设计 171
11.3.2  人机界面设计步骤 173
11.3.3  人机界面设计指南 174
11.4  案例分析 175
11.4.1  POS机系统 175
11.4.2  短信系统 177
11.4.3  出卷系统 191
11.5  小结 194
习题 194
第四部分  软件测试与维护
第12章  软件测试 196
12.1  软件测试的任务 196
12.1.1  验证与确认 196
12.1.2  软件测试的组织形式 197
12.1.3  软件测试的目的与原则 197
12.1.4  完成标准 199
12.2  软件测试过程模型 200
12.2.1  V模型 200
12.2.2  W模型 200
12.2.3  H模型 201
12.3  软件测试策略 201
12.3.1  单元测试 202
12.3.2  集成测试 204
12.3.3  确认测试 205
12.3.4  系统测试 205
12.4  测试用例设计 205
12.4.1  测试用例设计的目的 205
12.4.2  测试用例设计的方法和描述 206
12.4.3  测试用例设计的重要性和影响因素 206
12.4.4  编写测试用例时的注意事项 206
12.5  黑盒技术 207
12.5.1  等价类划分法 207
12.5.2  边界值分析法 208
12.5.3  错误推测法 209
12.5.4  因果图法 209
12.6  白盒技术 211
12.6.1  逻辑覆盖法 212
12.6.2  基本路径测试法 214
12.6.3  循环测试法 218
12.7  集成测试技术 219
12.7.1  集成策略 219
12.7.2  接口测试 221
12.8  自动测试工具 221
12.9  调试 222
12.9.1  调试过程 222
12.9.2  调试策略 223
12.10  案例分析 224
12.11  小结 229
习题 230
第13章  软件维护 231
13.1  软件维护概述 231
13.1.1  软件维护的任务 231
13.1.2  软件维护的特点 231
13.1.3  软件可维护性 232
13.2  软件维护类型 232
13.2.1  纠错性维护 232
13.2.2  完善性维护 233
13.2.3  适应性维护 233
13.2.4  预防性维护 233
13.3  软件维护技术与过程 233
13.3.1  面向维护的技术 234
13.3.2  维护支援技术 234
13.3.3  软件维护过程 234
13.4  非结构化维护和结构化维护 236
13.5  提高可维护性 236
13.6  面向对象的软件维护 238
13.7  小结 238
习题 238
第五部分  软件工程管理
第14章  软件项目管理 240
14.1  项目管理概述 240
14.2  软件项目管理范围 241
14.2.1  人员 241
14.2.2  项目和过程 242
14.2.3  软件度量 243
14.2.4  软件项目管理计划文档 244
14.3  软件团队组织范式 246
14.3.1  民主分权式 246
14.3.2  控制集权式 247
14.3.3  控制分权式 248
14.3.4  敏捷团队 248
14.4  项目组织原则 249
14.5  软件过程管理 249
14.5.1  软件过程度量 249
14.5.2  软件过程改进 250
14.5.3  项目度量 251
14.6  风险管理 251
14.6.1  风险识别 252
14.6.2  风险预测 252
14.6.3  风险管理 252
14.7  软件配置管理 253
14.7.1  SCM基本概念 253
14.7.2  SCM过程 254
14.7.3  SCM中心存储库 255
14.8  小结 256
习题 256
第15章  软件项目估算 257
15.1  概述 257
15.1.1  项目计划与范围 257
15.1.2  项目资源 257
15.2  软件规模度量 258
15.2.1  面向规模的度量 258
15.2.2  面向对象的度量 260
15.3  软件成本估算的分解技术 260
15.3.1  基于问题分解的估算 260
15.3.2  基于过程分解的估算 262
15.4  经验估算模型 263
15.4.1  专家类比推断 263
15.4.2  由底向上估算方法 263
15.4.3  构造性成本模型 264
15.5  成本估算管理 266
15.6  案例分析 266
15.6.1  短信系统 266
15.6.2  POS机系统 267
15.7  小结 268
习题 269
第16章  软件项目计划与管理 270
16.1  软件质量管理 270
16.1.1  质量概念 270
16.1.2  软件质量保证  271
16.1.3  软件质量度量 272
16.1.4  软件复审 275
16.1.5  软件质量认证标准 276
16.2  项目计划 278
16.2.1  项目进度安排 278
16.2.2  进度安排方法 279
16.2.3  项目进度的跟踪管理 281
16.3  软件项目管理工具 281
16.4  小结 286
习题 287
参考文献 288

教学资源推荐
作者: [澳]杰夫瑞·艾文(Jeffrey Aven) 著
作者: Stephen R.Schach
作者: 陈琼 主编 马千里 周育人 副主编 胡劲松 罗荣华 参编
作者: 刘振安 刘燕君 单继龙 编著
参考读物推荐
作者: (美)小特雷弗 A. 罗伯茨(Trevor A. Roberts, Jr.),乔希·阿特韦尔(Josh Atwell),埃格勒·西格勒(Egle Sigler),依弗·范·多恩(Yvo van Doorn)著
作者: (美)Scott Granneman 著