计算机类教材 > 软件工程

软件工程导论

书号:9787113296834 套系名称:普通高等教育“十四五”规划教材

作者:熊焕亮 吴沧海 赵应丁 出版日期:2022-11-01

定价:39.80 页码 / 开本:0 /16

策划编辑:曹莉群 责任编辑:贾星

适用专业:计算机类 适用层次:高等教育

最新印刷时间:2025-01-10

资源下载
教学课件 教学素材(暂无)
习题答案 教学案例(暂无)
教学设计(暂无) 教学视频(暂无)
内容简介 前言 目录 作者介绍 图书特色
  • 本书主要介绍软件工程的概念、原理和典型的方法学以及软件项目管理技术,旨在培养读者的软件工程思想及软件开发能力。本书理论与实践相结合,内容翔实,可操作性强,并融入课程思政内容。全书分为 11章。第 1章是软件工程学概述;第 2~ 6章阐述软件生命周期各个阶段的任务、过程、结构化方法和相关工具;第 7~ 10章讲述面向对象方法学引论,面向对象分析、设计和实现,第 11章介绍软件项目管理的相关知识。
    本书适合作为高等院校计算机科学与技术、软件工程及相关专业“软件工程”课程的教材,也可供有一定实际经验的软件工作人员和从事应用软件开发工作的广大计算机用户阅读和参考。
    
  • 20世纪 60年代,为了解决当时出现的软件危机,人们提出了软件工程的概念,并将其定义为“为了经济地获得可靠的和能在实际机器上高效运行的软件,而建立和使用的健全的工程规则”。经过 60多年的发展,人们对软件工程逐渐有了更全面、更科学的认识,软件工程已经成为一门包括理论、方法、过程等内容的独立学科,并出现了相应的软件工程支撑工具。
    然而,即使在 21世纪的今天,软件危机的种种表现依然没有彻底地得到解决,实践中很多项目依然挣扎在无法完成或无法按照规定的时间、成本完成预期质量的泥潭中,面临着失败的风险。究其原因,依然是软件工程的思想和方法并未深入到计算机科学技术,特别是软件开发领域中,并用于指导人们的开发行为。
    为了振兴中国的计算机和软件产业,培养具备软件工程思想和技术,并具有相应开发经验的人才,国家近年来一直十分重视软件工程相关课程的建设和人才培养。除了开设专门的软件工程专业,也倡导在计算机科学技术相关专业开设软件工程课程,使得软件工程思想和技术在中国的 IT人才中得到普及。
    习近平总书记在全国高校思想政治工作会议上明确指出,要坚持把立德树人作为中心环节,把思想政治工作贯穿教育教学全过程,实现全程育人、全方位育人,努力开创我国高等教育事业发展新局面。这就要求高校在专业课教学中融入思政教育,使高校的课程在传授专业知识的同时,发挥思想政治教育的作用。因此,本书适当融入了课程思政元素,充分发挥教材“立德树人”的作用。
    本书在内容编排上,既考虑到了内容的系统性和完整性,又重点突出。对于软件开发过程中起重要作用的各种图形工具都作为独立的小节集中介绍,便于读者掌握。
    本书共 11章,内容涵盖结构化软件工程方法学与面向对象软件工程方法学。具体涉及软件与软件工程、软件过程、可行性研究与项目开发计划、结构化分析、结构化设计、面向对象方法与 UML、面向对象分析、软件体系结构与设计模式、面向对象设计、软件实现、软件测试、软件维护与软件工程管理。
    本书由江西农业大学熊焕亮、吴沧海、赵应丁主编,江西农业大学李佳航、易文龙、 钱文彬任副主编,衡阳师范学院焦铬、哈尔滨学院潘莹参与编写,具体分工如下:第1、2章由吴沧海编写,第 3~5章由熊焕亮编写,第 6章由赵应丁编写,第 7章由钱文彬编写,第 8章由李佳航编写,第 9章由焦铬编写,第 10章由潘莹编写,第 11章由易文龙编写。江西农业大学贾晶老师参与了文稿的校对,研究生王健强和陈灵丹协助完成教材图形的绘制。本书在编写的过程中,得到了江西农业大学软件学院领导的大力支持,软件学院教工第一支部各位党员同志以及软件开发教研室的老师对本书提出了有益的建议,谨在此表示感谢。
    由于软件工程是一门新兴学科,软件工程的教学方法本身还在探索之中,加之编者的水平和能力有限,本书难免有疏漏及不足之处。恳请各位同仁和广大读者给予批评指正,也希望各位能将实践过程中的经验和心得与我们交流。
    编?者
    2022年 1月
    
  • 第 1 章 软件工程学概述 1                                                                                        
    
    1.1 软件及软件危机 1                                                                                
    
    1.1.1 软件 1
    
    1.1.2 软件危机简介 1
    
    1.1.3 产生软件危机的原因 2
    
    1.1.4 解决软件危机的途径 3
    
    1.1.5 软件危机实例 3
    
    1.2 软件工程 3
    
    1.2.1 软件工程的概念 3
    
    1.2.2 软件工程基本原理 4
    
    1.2.3 软件工程方法学 5
    
    1.3 软件生命周期 9
    
    1.4 软件过程模型 10
    
    1.4.1 瀑布模型 11
    
    1.4.2 快速原型模型 12
    
    1.4.3 增量模型 13
    
    1.4.4 螺旋模型 13
    
    1.4.5 喷泉模型 14
    
    1.5 中国软件的发展机遇 15
    
    本章小结 16
    
    习题 16
    
    第2章 可行性研究18                                                                                             
    
    2.1 可行性研究的目标及内涵 18
    
    2.1.1 可行性研究的目标任务 18
    
    2.1.2 进一步认识可行性研究 19
    
    2.2 可行性研究的过程 19
    
    2.3 可行性研究的图表工具 20
    
    2.3.1 系统流程图 20
    
    2.3.2 数据流图 22
    
    2.3.3 数据字典 24
    
    2.4 成本 / 效益分析 26
    
    2.4.1 成本估计 26
    
    2.4.2 成本 / 效益分析的方法 27
    
    2.5 可行性研究案例——机票预订系统 28
    
    本章小结  31
    
    习题 31
    
    第 3 章 需求分析34                                                                                                 
    
    3.1 需求分析的任务和步骤 34
    
    3.1.1 需求分析的任务 34
    
    3.1.2 需求分析的步骤 36
    
    3.2 获取用户需求的方法 36
    
    3.2.1 从用户处获取真实需求 36
    
    3.2.2 基于自顶向下细化数据流的需求获取 37
    
    3.2.3 面向团队的需求收集法 38
    
    3.2.4 快速原型需求收集方法 39
    
    3.3 需求分析建模的图形工具 39
    
    3.3.1 需求的模型表达 39
    
    3.3.2 建模图形工具 40
    
    3.4 需求分析结果与验证 43
    
    3.4.1 验证软件需求的正确性 43
    
    3.4.2 验证软件需求的方法 44
    
    3.4.3 用于需求分析的软件工具 44
    
    3.5 需求分析案例——图书馆管理系统 45
    
    本章小结 53
    
    习题 53
    
    第 4 章 概要设计56                                                                                                  
    
    4.1 设计过程 56
    
    4.2 设计原理 58
    
    4.2.1 模块化 58
    
    4.2.2 抽象 59
    
    4.2.3 逐步求精 60
    
    4.2.4 信息隐蔽和局部化 60
    
    4.2.5 模块独立 60
    
    4.2.6 软件概要设计原理的方法论 65
    
    4.3 启发式规则 66
    
    4.4 图形工具 68
    
    4.4.1 层次图和 HIPO 图 68
    
    4.4.2 结构图 69
    
    4.5 面向数据流的设计方法 70
    
    4.5.1 信息流的类型和概念 70
    
    4.5.2 变换分析 72
    
    4.5.3 事务分析 74
    
    4.5.4 设计优化 74
    
    本章小结 75
    
    习题 76
    
    第 5 章 详细设计与实现82                                                                                       
    
    5.1 结构化程序设计 82
    
    5.1.1 结构化程序 83
    
    5.1.2 结构化定理 85
    
    5.1.3 非结构化程序到结构化程序的转换 86
    
    5.2 人机界面设计 88
    
    5.2.1 人机界面设计中人的因素 88
    
    5.2.2 人机界面的风格 89
    
    5.2.3 人机界面的设计 90
    
    5.2.4 人机界面设计的启示 91
    
    5.3 详细设计过程工具 91
    
    5.3.1 程序流程图 91
    
    5.3.2 盒图(N-S 图) 92
    
    5.3.3 PAD 93
    
    5.3.4 过程设计语言 93
    
    5.4 面向数据结构的设计方法 94
    
    5.4.1 Jackson 图 94
    
    5.4.2 改进的 Jackson 图 95
    
    5.4.3 Jackson 方法 95
    
    5.5 程序复杂度的定量度量 98
    
    5.5.1 McCabe 度量法 98
    
    5.5.2 Halstead 方法 101
    
    5.6 系统的编码与测试 102
    
    5.6.1 编码 102
    
    5.6.2 软件测试 103
    
    5.7 白盒测试与黑盒测试 106
    
    5.7.1 白盒测试 106
    
    5.7.2 黑盒测试 109
    
    5.8 软件可靠性概念及分析 112
    
    5.9 详细设计实例 113
    
    本章小结 125
    
    习题 126
    
    第 6 章 软件维护129                                                                                               
    
    6.1 软件维护的概念和特点 129
    
    6.1.1 软件维护的概念 129
    
    6.1.2 软件维护的特点 129
    
    6.1.3 软件维护的思考 131
    
    6.2 软件维护的过程 131
    
    6.3 软件维护的类型 133
    
    6.4 软件的可维护性 133
    
    6.4.1 决定软件可维护性的因素 134
    
    6.4.2 文档 134
    
    6.4.3 可维护性复审 135
    
    6.4.4 影响维护工作量的因素 136
    
    本章小结 136
    
    习题 137
    
    第 7 章 面向对象方法学引论138                                                                               
    
    7.1 面向对象方法概述 138
    
    7.1.1 面向对象方法学的要点 138
    
    7.1.2 面向对象方法的优点 139
    
    7.1.3 面向对象软件工程的内容 140
    
    7.1.4 面向对象方法与人类认识客观世界的方法 141
    
    7.2 面向对象的概念和建模 142
    
    7.2.1 面向对象的基本概念 142
    
    7.2.2 面向对象的建模 144
    
    本章小结 144
    
    习题 145
    
    第 8 章 面向对象分析146                                                                                         
    
    8.1 分析的基本过程 146
    
    8.1.1 问题分析的目标模型 146
    
    8.1.2 面向对象分析的主要概念及表示法 147
    
    8.1.3 面向对象分析的主要原则 149
    
    8.1.4 面向对象分析过程 150
    
    8.2 对象模型的构建 151
    
    8.2.1 确定类与对象 151
    
    8.2.2 确定关联 153
    
    8.2.3 划分主题 156
    
    8.2.4 确定属性 156
    
    8.2.5 识别继承关系 156
    
    8.2.6 反复修改 157
    
    8.3 动态模型的构建 158
    
    8.3.1 编写脚本 159
    
    8.3.2 设想用户界面 159
    
    8.3.3 绘制事件跟踪图 159
    
    8.3.4 绘制状态图 160
    
    8.3.5 审查动态模型 161
    
    8.4 功能模型的构建 162
    
    8.4.1 确定输入和输出值 162
    
    8.4.2 绘制功能级数据流图 162
    
    8.5 服务的定义 163
    
    8.6 面向对象系统分析案例 164
    
    8.6.1 建立对象模型 165
    
    8.6.2 建立动态模型 167
    
    8.6.3 建立功能模型 169
    
    本章小结 170
    
    习题 170
    
    第 9 章 面向对象设计 171                                                                                       
    
    9.1 面向对象设计准则 171
    
    9.2 面向对象设计的启发规则 173
    
    9.3 系统的分解 174
    
    9.4 人机交互子系统的设计 174
    
    9.5 问题域子系统的设计 176
    
    9.6 任务管理子系统的设计 177
    
    9.7 数据管理子系统的设计 178
    
    9.8 设计类中的服务 178
    
    9.8.1 设计类中应有的服务 178
    
    9.8.2 设计实现服务的方法 179
    
    9.9 设计关联 179
    
    9.10 设计优化 179
    
    本章小结  180
    
    习题 180
    
    第 10 章 面向对象实现181                                                                                      
    
    10.1 面向对象的程序设计语言 181
    
    10.1.1 面向对象语言的优点 181
    
    10.1.2 面向对象语言的技术特点 182
    
    10.1.3 选择面向对象语言 184
    
    10.2 提高程序设计质量 185
    
    10.2.1 提高可重用性 185
    
    10.2.2 提高可扩充性 187
    
    10.2.3 提高健壮性 188
    
    10.3 面向对象的软件测试方法和策略 188
    
    10.3.1 面向对象的单元测试—类测试 188
    
    10.3.2 面向对象的集成测试 189
    
    10.3.3 面向对象的系统测试 190
    
    本章小结 191
    
    习题 191
    
    第 11 章 软件项目管理192                                                                                      
    
    11.1 软件规模的估算 193
    
    11.1.1 面向规模的度量 193
    
    11.1.2 面向功能的度量 193
    
    11.2 工作量的估算 196
    
    11.2.1 软件开发成本估计方法 196
    
    11.2.2 成本估算模型 196
    
    11.3 项目进度计划和把控 198
    
    11.3.1 进度安排的方法 198
    
    11.3.2 制订开发进度计划 200
    
    11.3.3 项目计划与大学生涯规划 200
    
    11.4 人员安排和组织 200
    
    11.4.1 软件项目组织原则 200
    
    11.4.2 组织结构的模式 200
    
    11.4.3 程序设计小组的组织形式 201
    
    11.5 能力成熟度模型 202
    
    11.5.1 能力成熟度模型概述 202
    
    11.5.2 能力成熟度模型的 5 个等级划分 203
    
    11.5.3 关键过程域 204
    
    11.5.4 软件评估过程 205
    
    本章小结 205
    
    习题 206
    
    参考文献208 
    
  • 熊焕亮,男,1977年6月出生,副教授,硕士生导师,同济大学计算机软件与理论专业博士毕业。现任教于江西农业大学软件学院,作为课题负责人近5年来共主持和参与多项国家基金、省自然基金等项目研究;发表论文20余篇,其中SCI、EI检索10余篇;参编《离散数学》、《计算机专业英语》教材等。贾晶,男,1982年1月出生,讲师,英国邓迪大学硕士研究生毕业。现任教于江西农业大学软件学院,一直给软件工程专业本科生教授《软件工程》课程,有着丰富的教学经验,作为课题负责人近5年来共主持和参与多项省自然基金等项目研究;发表论文10余篇,其中SCI检索2篇。?
    
  • 本书适当融入了课程思政元素,充分发挥教材“立德树人”的作用。
    本书在内容编排上,既考虑到了内容的系统性和完整性,又重点突出。对于软件开发过程中起重要作用的各种图形工具都作为独立的小节集中介绍,便于读者掌握。