前言
软件工程是应用计算机科学技术、数学、管理学的原理,运用工程科学的理论、方法和技术,研究和指导软件开发和演化的一门交叉学科。随着科技的发展,软件工程已成为计算机科学、软件工程及其相关专业的一门重要的必修课。其教学目的在于使学生掌握软件工程的基本概念和原则,培养学生使用工程化的方法高效地开发高质量软件的能力,以及进行项目管理的能力。
本书分6部分:软件工程概述、可行性研究与项目开发计划、结构化分析与设计、面向对象分析与设计、软件实现与测试、软件维护与软件工程管理。
本书共13章,内容涉及软件与软件工程、软件过程、敏捷软件开发、可行性研究与项目开发计划、结构化分析、结构化设计、面向对象方法与UML、面向对象分析、软件体系结构与设计模式、面向对象设计、软件实现、软件测试和软件维护与软件工程管理。
扫码查看
本书的内容结构和知识体系已整理为思维导图,读者可扫描上方二维码查看。
本书的理论知识的教学安排建议如表01所示。
表01教学安排
章节内容学时数
第1章软件与软件工程1~2
第2章软件过程2
第3章敏捷软件开发2~4
第4章项目立项、可行性研究与项目开发计划2
第5章结构化分析2~4
第6章结构化设计2~4
第7章面向对象方法与UML4~6
第8章面向对象分析4~6
第9章软件体系结构与设计模式1~2
第10章面向对象设计4~6
第11章软件实现2
第12章软件测试4~6
第13章软件维护与软件工程管理2
建议先修课程: 计算机导论、面向对象程序设计、数据结构和数据库原理等。
建议理论教学时数: 32~48学时。
建议实验(实践)教学时数: 16~32学时。
教师可以按照自己对软件工程的理解适当地删除一些章节,也可以根据教学目标,灵活地调整章节的顺序,增减各章的学时数。
本书的作者为吕云翔、曾洪立。感谢蒋博文团队、石远翔团队、张中基等对本书的大力支持,感谢所有为此书做出贡献的同仁们。
本书配套的视频二维码位置如表02所示。
表02视频二维码位置
序号视频内容标题视频二维码位置所在页码
1模块设计启发规则6.1.2软件设计的原则101
2模块分割方法6.1.2软件设计的原则101
3结构化软件设计的任务6.4结构化设计概述110
4用C++理解类与对象7.1.1面向对象的基本概念139
5用C++理解继承与组合7.1.1面向对象的基本概念139
6用C++理解虚函数与多态7.1.1面向对象的基本概念139
7使用UML的准则7.2.2UML的特点143
8在统一软件开发过程中使用UML7.2.3UML的应用范围144
9用例的特征7.3.1用例图146
10绘制机票预订系统的用例图7.3.1用例图146
11绘制机票预订系统的类图7.3.2类图与对象图148
12绘制机票预订系统的顺序图7.4.1顺序图153
13绘制机票预订系统的协作图7.4.2协作图155
14绘制机票预订系统的状态图7.4.3状态图156
15绘制机票预订系统的活动图7.4.4活动图157
16绘制机票预订系统的构件图7.5.1构件图159
17绘制机票预订系统的部署图7.5.2部署图159
18面向对象实现之提高可重用性11.3面向对象实现253
19面向对象实现之提高可扩充性11.3面向对象实现253
20面向对象实现之提高健壮性11.3面向对象实现253
21手工测试与自动化测试12.2软件测试的分类273
22黑盒测试的优缺点12.5.7黑盒测试方法的选择285
23白盒测试的优缺点12.6.6白盒测试方法的选择291
24导致维护困难的一些因素13.1软件维护325
25维护工作流程13.1.2软件维护的过程326
26维护的代价及其主要因素13.1.4软件的可维护性329
27Project的安装与使用附录B363
28Visio的使用附录B363
29GitHub的安装和使用附录B363
30Enterprise Architect的安装与使用附录B363
31Rational Rose的安装与使用附录B363
32Visual Studio Code的安装与使用附录B363
续表
序号视频内容标题视频二维码位置所在页码
33Webstorm的安装与使用附录B363
34PyCharm的安装与使用附录B363
35Junit的安装与使用附录B363
36unittest的安装与使用附录B363
37Pytest的安装与使用附录B363
38使用Python对求两个整数的最大公约数进行编程,并用unittest进行单元测试(有文档)附录B363
39使用Java对求两个整数的最大公约数进行编程,并用Junit进行单元测试(有文档)附录B363
40使用Junit对HelloWorld进行单元测试(有文档)附录B363
41使用unittest对“俄罗斯方块游戏排行榜”进行单元测试(有文档)附录B363
42使用Java对象HttpURLConnection发送GET请求获取页面源文件(有文档)附录B363
43移动App的非功能性测试(有文档)附录B363
44使用unittest框架对sort函数进行单元测试(有文档)附录B363
45使用Pytest框架对Calculator函数进行单元测试(有文档)附录B363
46构建Postman+Newman+Jenkins接口测试框架(有文档)附录B363
47使用unittest框架对线性查找函数进行单元测试(有文档)附录B363
48使用Pytest框架对冒泡排序函数进行单元测试(有文档)附录B363
49使用Postman对getWeather接口进行关联测试(有文档)附录B363
50使用Python+Selenium+unittest完成对登录页面的自动化测试(有文档)附录B363
51使用Jmeter录制一个网页的操作脚本(有文档)附录B363
52SoapUI接口测试工具的使用(有文档)附录B363
由于软件工程还在发展之中,软件工程的教学方法本身还在探索之中,加之编者水平和能力有限,本书难免有疏漏之处。恳请各位同仁和广大读者给予批评指正,也希望各位能将实践过程中积累的经验和心得与我们交流。
编者2022年4月