许家珆主编的《软件工程——方法与实践(第2版)》为电子科技大学“软件工程”课程(教育部优秀“软件工程网络课程”、教育部-微软精品课程、四川省精品课程)的配套教材,是作者20多年从事“软件工程”课程教学和软件开发的实践经验的总结。
全书共12章,在系统介绍软件工程的基本内容、开发及管理技术的基础上,重点介绍面向对象的方法及UML统一建模语言,以及CMM软件成熟度模型、ERP企业资源规划等先进管理技术。内容涵盖了ACM/IEEE联合工作组制定的软件工程教育知识体系,保证了内容的科学性和先进性。其中,第12章软件工程课程设计是一个综合性的设计型实验,旨在培养学生的实践能力及创新能力,并提供了4个采用UML面向对象建模的软件开发实例。
许家珆主编的《软件工程——方法与实践(第2版)》是在吸取了国内外有关教材的精华,并结合作者多年从事软件工程教学及软件开发的实践经验、体会的基础上编写的。内容注重科学性、先进性,强调实践性。在介绍软件工程基础知识的基础上,重点介绍面向对象的分析、设计、测试及UML统一建模语言,以及CMM软件成熟度模型、ERP企业资源规划等先进管理技术。提供了丰富的软件开发实例和素材,以及“软件工程课程网站”。
《软件工程——方法与实践(第2版)》可作为高等院校计算机及信息类专业本科生及研究生的“软件工程”课程的教材,也可作为广大工程技术人员和科研人员的参考书。
第1章 软件工程概述1
1.1 软件工程的产生和发展1
1.1.1 软件工程的发展过程1
1.1.2 软件危机2
1.1.3 软件工程的定义及基本原则3
1.1.4 软件工程研究的内容3
1.2 软件与软件过程4
1.2.1 软件的概念和特点5
1.2.2 软件工程过程6
1.3 软件过程模型6
1.4 软件开发方法10
1.4.1 结构化开发方法10
1.4.2 原型化开发方法10
1.4.3 面向对象的开发方法11
1.5 软件工具与软件开发环境13
小结14
习题一15
第2章 软件需求工程17
2.1 软件需求的基本概念17
2.1.1 软件需求的任务17
2.1.2 功能需求与非功能需求18
2.2 需求工程过程20
2.3 软件需求获取技术23
2.4 需求分析与建模25
2.4.1 结构化分析(SA)方法26
2.4.2 面向对象的分析方法31
2.5 软件需求案例分析35
2.5.1 案例1——医院病房监护系统35
2.5.2 案例2——网上拍卖系统37
小结39
习题二39
第3章 软件设计42
3.1 软件设计概述42
3.2 软件体系结构设计44
3.2.1 仓库模型44
3.2.2 分布式结构45
3.2.3 其他体系结构52
3.3 模块分解52
3.3.1 模块分解的目的53
3.3.2 模块间的关系53
3.3.3 模块的独立性54
3.3.4 信息隐蔽56
3.4 详细设计描述工具57
3.5 面向对象的设计58
3.6 用户界面设计60
3.6.1 用户界面设计的特性与设计任务60
3.6.2 用户界面设计的基本原则61
3.6.3 用户界面的基本类型62
3.6.4 信息输入/输出界面63
3.6.5 MVC模式67
小结69
习题三69
第4章 面向对象方法与UML建模语言71
4.1 面向对象方法概述71
4.1.1 面向对象方法的特点71
4.1.2 几种典型的面向对象方法72
4.2 UML概述78
4.2.1 UML的基本概念79
4.2.2 UML的图形表示81
4.3 建立用例模型83
4.3.1 需求分析与用例建模84
4.3.2 确定执行者85
4.3.3 确定用例86
4.3.4 建立用例之间的关系88
4.3.5 用例建模实例89
4.4 建立静态模型92
4.4.1 类图92
4.4.2 包图101
4.5 建立动态模型102
4.5.1 消息102
4.5.2 状态图103
4.5.3 顺序图106
4.5.4 合作图108
4.5.5 活动图110
4.6 建立实现模型112
4.6.1 组件图112
4.6.2 部署图113
4.7 RUP统一过程及其应用115
4.7.1 UML与RUP统一过程115
4.7.2 RUP的二维开发模型117
4.7.3 RUP的迭代开发模式119
小结120
习题四120
第5章 软件实现124
5.1 程序设计语言的选择124
5.2 结构化程序设计127
5.3 面向对象程序设计128
5.4 程序设计风格132
5.5 算法与程序效率135
5.6 软件代码审查137
小结138
习题五138
第6章 软件复用和组件技术140
6.1 软件复用概述140
6.2 软件复用的实施与过程143
6.3 可复用组件与组件工程144
6.4 领域工程分析和基于组件的开发146
6.5 基于组件的软件开发特点148
6.6 软件组件技术的技术规范150
6.6.1 CORBA150
6.6.2 COM151
6.6.3 EJB153
6.6.4 Web服务155
小结157
习题六157
第7章 软件测试158
7.1 软件测试概述158
7.1.1 软件测试的基本概念158
7.1.2 软件测试的特点和基本原则159
7.1.3 软件测试过程162
7.1.4 静态分析与动态测试164
7.2 白盒法测试166
7.3 黑盒法测试170
7.4 软件测试的策略174
7.4.1 单元测试174
7.4.2 集成测试176
7.4.3 确认测试179
7.4.4 系统测试179
7.4.5 测试和测试180
7.4.6 综合测试策略181
7.5 软件调试181
7.5.1 软件调试过程182
7.5.2 软件调试策略182
7.6 面向对象的测试184
7.6.1 面向对象测试的特点185
7.6.2 面向对象测试类型185
7.6.3 分析模型测试187
7.6.4 面向对象的测试用例191
7.7 自动测试192
7.7.1 自动化测试概述192
7.7.2 实施自动化测试的前提条件193
7.7.3 自动化测试过程195
7.7.4 自动化测试的原则197
小结197
习题七198
第8章 软件维护200
8.1 软件维护的基本概念200
8.2 软件维护的过程203
8.3 软件维护技术205
8.4 软件可维护性206
8.4.1 软件可维护性的定义206
8.4.2 提高可维护性的方法207
8.5 逆向工程和再工程211
小结213
习题八213
第9章 软件工具与集成化环境215
9.1 软件工具215
9.1.1 软件开发工具215
9.1.2 软件维护工具218
9.1.3 软件管理与支持工具219
9.2 集成化CASE环境220
9.2.1 概述220
9.2.2 集成化的CASE开发环境的体系结构222
9.3 软件开发工具——Rational Rose227
9.3.1 Rose工具简介227
9.3.2 业务用例图228
9.3.3 用例图229
9.3.4 类图231
9.3.5 协作图与时序图232
9.3.6 活动图234
9.3.7 状态图234
9.3.8 组件图和部署图235
小结237
习题九237
第10章 软件项目管理238
10.1 软件项目管理概述238
10.2 软件项目可行性研究240
10.3 软件项目成本估算技术242
10.3.1 影响成本估算的因素242
10.3.2 成本估算模型244
10.3.3 成本/效益分析247
10.4 软件项目组织与人员管理248
10.4.1 软件开发进度计划248
10.4.2 人员配备与组织250
10.4.3 软件开发小组与软件生产率250
10.5 项目风险管理251
10.5.1 软件项目风险管理概述251
10.5.2 软件项目风险管理过程252
10.5.3 风险管理的理论和模型254
10.6 软件质量保证256
10.7 企业资源规划257
10.7.1 资源管理发展过程257
10.7.2 ERP系统的管理思想258
10.7.3 应用ERP与企业的关系259
10.7.4 ERP应用成功的标志261
10.7.5 SAP ERP简介261
小结263
习题十263
第11章 软件能力成熟度模型265
11.1 CMM概述265
11.2 CMM的内部结构268
11.3 CMM的应用270
11.4 CMM的实施与评估272
11.4.1 软件过程评估的必要性272
11.4.2 软件过程评估参考模型274
11.4.3 CMM评估的执行步骤275
11.4.4 软件企业如何实施CMM278
11.4.5 CMM与ISO 9000标准280
11.5 软件能力成熟度模型集成281
小结284
习题十一284
第12章 软件工程课程设计286
12.1 课程设计的目的和要求286
12.2 课程设计步骤及安排286
12.3 案例分析288
12.3.1 案例一:ATM系统288
12.3.2 案例二:网上拍卖系统294
12.3.3 案例三:会议管理系统300
12.3.4 案例四:仓库信息管理系统310
参考文献319