《软件工程》(第八版)是“十四五”职业教育国家规划教材、“十三五”职业教育国家规划教材、“十二五”职业教育国家规划教材、高职高专计算机教指委优秀教材,也是高等职业教育软件技术专业系列规划教材之一。
《软件工程》(第八版)是“十四五”职业教育国家规划教材、“十三五”职业教育国家规划教材、“十二五”职业教育国家规划教材、高职高专计算机教指委优秀教材,也是高等职业教育软件技术专业系列规划教材之一。
软件工程是一门理论性和实践性都很强的学科,是研究如何用工程化的概念、原理、技术和方法来指导计算机软件开发和维护的一门交叉性学科。随着软件应用范围和软件规模的日益扩大,软件工程已经成为软件开发人员必须掌握的技术之一。对于广大的计算机应用人员来说,学习软件工程,可以提高对信息系统的应用与管理水平,促进企事业单位开展信息化工作。本教材可作为高职高专计算机相关专业教材,也可供从事计算机软件开发及应用的广大科技人员做参考。
本教材讲述软件工程的基本概念、原理和方法。理论教学与实践教学相结合,使学生基本掌握结构化开发方法,熟悉面向对象的开发方法,学会软件工程文档的编写方法,了解软件工程管理等内容。
本教材按照典型的软件开发过程来组织内容,全书共分为11章。第1章是软件工程概述;第2~5章分别介绍软件项目计划、需求分析、概要设计、详细设计;第6~7章分别介绍面向对象概念和Rose建模技术以及面向对象的分析与设计;第8~10章分别介绍编码、软件测试与软件维护;第11章介绍软件项目管理。
本教材选材注意把握高职高专学生的专业知识背景与接受能力,以案例为主组织教材内容。在教材编写上,以结合实际、注重实用、通俗易懂、易于教学为基本目标,力求把抽象的理论知识直观化、具体化,把难以理解的复杂内容通俗化、可视化,力争让学生喜欢学,能学会,用得上。
本教材主要从以下两方面进行了修订:
(1)更好地融入了课程思政内容。为贯彻党的二十大精神进教材、进课堂、进头脑,在教材各章最前面均增加了“学习目标”,包括“知识目标”“能力目标”“素质目标”三个维度,在“素质目标”部分给出了课程思政教学具体要求和建议,同时从教材正文、案例素材、习题内容等多角度、多方位融入了课程思政内容,重视思想意识引领,注重社会主义核心价值观教育、爱国主义教育,注重科学精神、工匠精神培养。
(2)更新教材内容,适应新标准、新规范。修改陈旧过时的内容,将软件工程领域相关的新技术、新标准、新规范融入教材。更新了过时的习题和已经废止的标准,优化了多个插图和表格内容, 增加和更新了教材配套资源,使教材内容更加规范。
本教材的主要特点如下:
(1)应用性强。本教材以学生为中心,突出应用性。教材采用“项目导向、任务驱动”模式进行设计,将理论知识和实践操作内容合理融合,实现理实一体化教学。教材选用已有的、真实的软件系统“××图书管理系统”作为教学案例贯穿教材相应章节,教学案例贴近学生生活,难度适中,针对性强,学生可以结合真实的软件系统学习软件工程课程。通过体验式的软件项目开发实训模式,可以真正实现“学中做、做中学”的教学目标,提高了教材的应用性。
(2)实践性强。本教材注重“实战训练”教学,注重培养学生解决实际问题的能力,通过实践性的项目和案例分析,让学生通过模仿一个“样板系统”并运用所学知识开发一个“实战演练系统“以解决实际问题。这种带着任务学习,一边体验、观摩、剖析教学案例“样板系统”,一边分析、设计并开发“实战演练系统“的做法,增强了教材的项目化特色,提高了教材的实践性。
(3)资源丰富。本教材配套资源除了包括微课、教学大纲、授课计划、实验指导书、教学课件、试卷库、习题答案等,还包括“理论知识测试软件”和“软件项目案例库”。
“理论知识测试软件”使用Excel VBA开发,包括理论知识单选题、判断题和填空题等,学生可自主选择某章、某类题目进行自我测试,测试完毕由系统自动评判并给出结果。该软件的应用可做到教学过程的“多检查”“多督促”,实现“以测促学”。
“软件项目案例库”包括适于教学的、典型的C/S架构和B/S架构的软件项目源代码(如图书管理系统等),以及经过教学化处理的、较为规范的软件项目文档,这些案例可供教学剖析、学生模仿,是软件工程课程教学的得力助手。
在编写本教材的过程中,编者参考、引用和改编了国内外出版物中的相关资料以及网络资源,在此表示深深的谢意!相关著作权人看到本教材后,请与出版社联系,出版社将按照相关法律的规定支付稿酬。
由于编者水平有限,教材中可能有疏漏和不妥之处,恳请读者与专家批评指正。
编 者
2025年7月
第1章 软件工程概述 / 1
1.1 软件与软件危机 / 2
1.1.1 软件的定义及特点 / 2
1.1.2 软件的发展及分类 / 2
1.1.3 软件危机 / 4
1.2 软件工程 / 5
1.2.1 软件工程的定义和基本目标 / 5
1.2.2 软件工程的基本原理 / 5
1.2.3 软件工程的研究内容 / 6
1.3 软件生存周期 / 6
1.4 软件开发模型 / 7
1.5 软件开发方法 / 13
1.6 软件工具与软件开发环境 / 14
1.6.1 软件工具 / 14
1.6.2 软件开发环境 / 14
1.7 项目实践:“图书管理系统”项目简介 / 15
习 题 / 16
第2章 软件项目计划 / 19
2.1 问题定义 / 20
2.1.1 问题定义的内容 / 20
2.1.2 问题定义的方法 / 20
2.2 可行性研究 / 21
2.2.1 可行性研究的任务 / 21
2.2.2 可行性研究的步骤 / 22
2.2.3 系统流程图 / 23
2.2.4 经济可行性 / 24
2.2.5 可行性研究报告编制中应注意的问题及作用 / 25
2.3 项目开发计划 / 25
2.4 Visio绘图软件的使用 / 26
2.4.1 Visio简介 / 26
2.4.2 使用Visio绘制系统流程图 / 27
2.5 项目实践:“图书管理系统”项目计划 / 28
2.5.1 “图书管理系统”问题定义报告 / 28
2.5.2 “图书管理系统”可行性研究报告 / 29
2.5.3 “图书管理系统”项目开发计划 / 33
习 题 / 35
第3章 需求分析 / 37
3.1 需求分析的任务 / 38
3.2 需求获取的方法 / 38
3.2.1 需求获取的基本原则 / 38
3.2.2 需求获取的途径和方法 / 38
3.2.3 需求调研的步骤 / 39
3.3 需求分析的步骤 / 39
3.3.1 需求获取 / 40
3.3.2 分析建模 / 40
3.3.3 需求描述 / 41
3.3.4 需求验证 / 41
3.4 结构化需求分析方法 / 41
3.4.1 结构化分析方法概述 / 41
3.4.2 数据流图 / 43
3.4.3 数据词典 / 46
3.4.4 加工逻辑的描述 / 48
3.5 需求规格说明书的编写与评审 / 52
3.6 项目实践:“图书管理系统”需求分析 / 53
习 题 / 62
目 录
第4章 概要设计 / 65
4.1 软件设计概述 / 66
4.1.1 软件设计的概念与重要性 / 66
4.1.2 软件设计的任务 / 66
4.2 概要设计的任务与步骤 / 67
4.2.1 概要设计的任务 / 67
4.2.2 概要设计的步骤 / 67
4.3 概要设计的原则 / 68
4.4 模块独立性 / 70
4.4.1 耦合性 / 70
4.4.2 内聚性 / 72
4.4.3 软件结构优化准则 / 74
4.5 软件结构设计的图形工具 / 76
4.5.1 层次图 / 76
4.5.2 IPO图 / 77
4.5.3 结构图 / 78
4.6 结构化设计方法 / 78
4.7 概要设计文档的编写与评审 / 81
4.7.1 概要设计说明书的编写内容 / 81
4.7.2 概要设计文档的评审 / 81
4.8 项目实践:“图书管理系统”概要设计 / 81
习 题 / 91
第5章 详细设计 / 93
5.1 详细设计的任务与原则 / 94
5.1.1 详细设计的任务 / 94
5.1.2 详细设计的原则 / 94
5.2 详细设计的工具 / 95
5.3 用户界面设计 / 101
5.3.1 用户界面设计的重要性 / 101
5.3.2 用户界面设计应考虑的问题 / 102
5.3.3 用户界面设计的基本原则 / 102
5.3.4 用户界面设计指南 / 103
5.4 数据代码设计 / 105
5.5 详细设计文档的编写与评审 / 106
5.6 项目实践:“图书管理系统”详细设计 / 107
习 题 / 114
第6章 面向对象概念和Rose建模技术 / 117
6.1 面向对象方法概述 / 117
6.1.1 面向对象方法的特征 / 117
6.1.2 面向对象方法的基本概念 / 118
6.2 统一建模语言(UML) / 121
6.2.1 UML概述 / 121
6.2.2 UML的主要内容 / 122
6.2.3 静态建模 / 125
6.2.4 动态建模 / 133
6.3 Rational Rose建模简介 / 137
6.3.1 Rational Rose的安装 / 137
6.3.2 Rational Rose的启动 / 138
6.3.3 Rational Rose的配置 / 138
6.3.4 Rational Rose建模的基本过程 / 138
习 题 / 141
第7章 面向对象的分析与设计 / 143
7.1 面向对象分析 / 143
7.1.1 面向对象分析的目标和任务 / 143
7.1.2 面向对象分析的过程 / 144
7.1.3 面向对象分析的三种模型 / 145
7.1.4 对象模型的层次 / 145
7.2 建立对象模型 / 146
7.2.1 确定对象和类 / 146
7.2.2 确定结构 / 148
7.2.3 确定主题 / 148
7.2.4 确定服务和消息 / 148
7.3 建立动态模型 / 149
7.4 建立功能模型 / 151
7.5 面向对象设计 / 151
7.5.1 面向对象设计概述 / 151
7.5.2 面向对象设计的准则和启发式规则 / 153
7.6 系统设计 / 154
7.7 类与对象设计 / 158
7.8 项目实践:“图书管理系统”面向对象的分析与设计 / 159
7.8.1 面向对象的分析 / 159
7.8.2 面向对象的设计 / 166
习 题 / 169
第8章 编 码 / 171
8.1 编码的目的与要求 / 171
8.2 程序设计语言 / 172
8.2.1 程序设计语言的发展与分类 / 172
8.2.2 程序设计语言的选择 / 173
8.3 程序设计风格 / 174
8.3.1 源程序文档化 / 174
8.3.2 数据说明 / 177
8.3.3 语句构造 / 178
8.3.4 输入与输出 / 180
8.3.5 效 率 / 181
8.4 结构化程序设计 / 181
8.4.1 结构化程序设计的原则 / 181
8.4.2 自顶向下,逐步求精 / 182
8.5 面向对象的程序设计 / 183
8.6 项目实践:“图书管理系统Web子系统”程序开发 / 185
8.6.1 “图书管理系统Web子系统”简介 / 185
8.6.2 系统开发与运行环境搭建 / 187
8.6.3 面向对象的程序开发思路说明 / 191
习 题 / 201
第9章 软件测试 / 204
9.1 软件测试概述 / 205
9.1.1 软件测试的目标 / 205
9.1.2 软件测试的原则 / 205
9.1.3 软件测试的信息流 / 206
9.2 软件测试方法 / 207
9.2.1 静态测试 / 207
9.2.2 动态测试 / 208
9.3 测试用例的设计 / 208
9.3.1 黑盒技术 / 208
9.3.2 白盒技术 / 212
9.3.3 综合测试策略 / 214
9.3.4 测试实例分析 / 215
9.4 软件测试步骤 / 216
9.4.1 单元测试 / 217
9.4.2 集成测试 / 219
9.4.3 确认测试 / 221
9.4.4 系统测试 / 221
9.5 软件测试工具简介 / 222
9.6 调 试 / 223
9.6.1 调试目的和步骤 / 223
9.6.2 调试策略 / 223
9.6.3 调试原则 / 224
9.7 面向对象的软件测试简述 / 224
9.7.1 面向对象的测试模型 / 224
9.7.2 面向对象的测试策略 / 225
9.7.3 面向对象的软件测试用例设计 / 226
9.8 项目实践:“图书管理系统”软件测试 / 226
9.8.1 功能测试 / 227
9.8.2 界面测试 / 228
习 题 / 230
第10章 软件维护 / 233
10.1 软件维护的类型与策略 / 233
10.1.1 软件维护工作的必要性 / 233
10.1.2 软件维护的类型 / 234
10.1.3 软件维护的策略 / 235
10.2 软件维护的特点 / 236
10.3 软件维护的过程与组织 / 237
10.4 软件的可维护性 / 240
10.4.1 决定软件可维护性的因素 / 240
10.4.2 提高软件可维护性的方法 / 240
10.5 软件维护的副作用 / 242
10.6 软件逆向工程与再生工程 / 243
习 题 / 244
第11章 软件项目管理 / 246
11.1 软件项目管理概述 / 246
11.1.1 软件项目管理的职责 / 246
11.1.2 软件项目管理的过程 / 247
11.2 软件组织与人员管理 / 249
11.2.1 建立项目组织的原则 / 249
11.2.2 项目组织结构的形式 / 249
11.2.3 程序设计小组的形式 / 249
11.2.4 人员配备 / 250
11.3 软件开发成本估算 / 251
11.4 软件进度管理 / 252
11.4.1 进度安排中应考虑的问题 / 252
11.4.2 进度安排方法 / 253
11.5 软件质量保证 / 255
11.5.1软件质量管理 / 255
11.5.2 CMM模型 / 256
11.6 软件配置管理 / 257
11.7 软件工程标准与文档管理 / 258
11.7.1 软件工程标准 / 258
11.7.2 软件文档的编写 / 260
习 题 / 262
参考文献 / 264