计算机类教材 > 软件工程

软件工程导论

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

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

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

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

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

最新印刷时间:

资源下载
教学课件 教学素材(暂无)
习题答案(暂无) 教学案例(暂无)
教学设计(暂无) 教学视频(暂无)
内容简介 前言 目录 作者介绍 图书特色
  • 本书主要介绍软件工程的概念、原理和典型的方法学以及软件项目管理技术,旨在培养读者的软件工程思想及软件开发能力。本书理论与实践相结合,内容翔实,可操作性强,并融入课程思政内容。全书分为 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.3PAD93
    
    5.3.4过程设计语言93
    
    5.4面向数据结构的设计方法94
    
    5.4.1Jackson图94
    
    5.4.2改进的Jackson图95
    
    5.4.3Jackson方法95
    
    5.5程序复杂度的定量度量98
    
    5.5.1McCabe度量法98
    
    5.5.2Halstead方法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篇。
    
  • 本书适当融入了课程思政元素,充分发挥教材“立德树人”的作用。
    本书在内容编排上,既考虑到了内容的系统性和完整性,又重点突出。对于软件开发过程中起重要作用的各种图形工具都作为独立的小节集中介绍,便于读者掌握。