1. 引言
2022年,我国数字经济的规模突破45.5万亿元,成为经济增长的新引擎。云计算作为数字社会的基础设施,在未来社会中占有重要的位置,IT行业也迫切需求各个层次的云计算人才。云计算是分布式计算的拓展和延伸,分布式计算相关的原理、算法和技术交织在一起,呈现出复杂多变的特征,因此,如何在有限的教学时间让学生理解掌握分布式计算相关的知识模块并具备系统开发能力是一个令人困惑的教学问题。此外,从一门专业课程层面来说,专创融合是指在专业知识和技能培养过程中融合创新创业元素[1]-[3],在专业学习过程中培养学生的创新能力和创业意识。引入创新思维元素,培养学生在分布式计算应用场景变化时能够选择合适的方案或设计新的方案,即在《分布式计算原理与应用》教学过程中,融入思维创新元素,这是培养学生创新能力的要求。为了解决教学中的这些问题,开发《分布式计算原理与应用》教学案例,把分布式计算有关知识模块有机联系在一起,形成一个相对完整的分布式计算系统教学案例,锻炼学生的分析思维能力、动手能力和创新创业能力。
2. 教学回顾与创新创业的需求
2.1. 《分布式计算原理与应用》教学现状
《分布式计算原理与应用》是我校软件工程专业本科学生第5学期的选修课,与此同时还开设了《微型计算机原理与接口技术》《算法设计与分析》《计算机网络》《操作系统》《软件体系结构与设计模式》《Linux编程技术》和《移动应用开发》等专业课程。在教学中,这个阶段的学生面对很多专业课程,只能初步掌握专业知识的内涵与外延,但是学生并不知道如何应用它们,特别是它们在分布式计算系统中如何相互作用以完成计算目标,按照传统讲授式教学方法,问卷调查和测试结果说明学生并不能很好地掌握。为了培养学生的分布式计算系统能力,在教学过程中引入合适的教学案例,将分布式计算系统的知识模块嵌入到教学案例中,学生借助教学案例可以得到一个生动形象的应用场景,把学生引入场景,由于学生在学习过程中熟悉这个场景,可以帮助学生更好地理解掌握这些嵌入的知识模块,进而把这些知识模块关联在一起,知道它们是如何相互作用,完成计算任务的,训练学生分布式计算系统开发能力。与此同时,在案例教学过程中,根据不同的场景,学生需要运用创新思维分析知识模块在系统中的作用及相互关系。
2.2. 专业培养方案的创新人才培养
专业课程引入创新创业教育元素是对高校专业教育的丰富和拓展,符合新时期社会发展和建设创新型国家对专业人才的综合素质要求,是高校实现全过程创新创业教育的关键环节之一。因此,我校《软件工程专业培养方案》的第2条培养目标明确了创新人才的培养:“具有良好技术水平和创新意识,能在软件项目研发中担任业务技术骨干的角色,高质量完成软件产品的分析、研究、设计、开发及运维等工作”,对毕业的要求是“能够针对复杂软件工程问题,制定合理的解决方案,设计、开发满足特定需求的软件产品,并能够在设计环节中体现创新意识,考虑社会、健康、安全、法律、文化以及环境等因素”。从《软件工程专业培养方案》的目标及毕业要求中可以看出,《分布式计算原理与应用》课程须要融入创新创业的思想、方法和技术以满足新时代的教学要求,从而更好地满足社会的需求。为了让学生具备开发分布式计算系统的能力,在《分布式计算原理与应用》教学过程中引入了教学案例,同时,它也有助于锻炼学生的观察力、记忆力和思维力,激发学生创新创业能力,教学效果具有启发性和实践性。
3. 教学案例设计与实践
我校软件工程专业是国家一流专业,2013年在本科教学中开设了《分布式计算原理与应用》,近7年来,每学年选修人数超过100人,总结多年授课情况,利用2022版教学大纲调整机会,在专创融合的驱动下,教学过程引入教学案例,并融入创新创业思维。课程设置在大学本科第5学期,此时学生已经完成专业基础课程、《软件工程》和《数据库原理与应用》的学习,并进行了软件项目开发的实践,已经具备了系统分析、设计、开发和测试等基本能力,这也为专创融合结合起来培养学生的系统能力提供了条件和支撑。
根据软件工程专业学生的实际情况,以学生认知特征为中心,我们选择2个具有代表性的专创融合案例,分别是“影剧院票务管理系统web服务器集群”和“微型分布式计算系统”。其中,“影剧院票务管理系统”是我校软件工程专业第4学期专业核心课程《软件工程》和《软件工程课程设计2》的教学案例,包括了软件项目的需求分析,软件设计、开发和测试,以及软件项目管理环节,综合运用了程序设计语言、数据结构、数据库和人机交互等多种专业知识,是一个企业级的项目式教学案例,通过这个教学案例,学生掌握了软件项目功能需求的开发。对“影剧院票务管理系统”的非功能方面,例如系统的性能和可用性,在第5学期学生学习到有关专业课程后,从专创融合的角度,我们开发了“影剧院票务管理系统web服务器集群”教学案例,嵌入《分布式计算原理与应用》的相关知识模块与创新思维,用于解决实际问题,培养学生开发系统的能力。
在“微型分布式计算系统”专创融合教学案例中,嵌入了“选举算法”和“集中式互斥访问临界资源”等分布式计算知识模块,简化关键算法与技术,同时结合创新思维。该案例可以帮助学生理解分布式计算的核心知识模块,学生也掌握了这些知识模块的相互作用及构建分布式计算系统,满足了学生对软件工程专业课程的期待,提高了学生的学习兴趣和主动性,培养了学生设计系统的能力。
3.1. 教学案例“服务器集群”的设计
启动在web服务器上部署的“影剧院票务管理系统”,当用户请求到达时,影剧院票务管理系统的业务层负责处理用户请求响应。在教学过程中,向学生说明一个优秀的应用系统有可能吸引到成千上万的用户,与小规模用户的系统相比较,如何才能保证系统在任何时间都提供服务,用户在某个时间段到达的数量超过了当前服务器处理能力,有哪些解决方案,解决了什么样的问题等。这样,就把学生的关注点从系统功能开发迁移到系统非功能方面了,再从正向思维作为切入点,提高系统性能很容易想到硬件设备更新。此外,从形象思维来说,工作者越多,处理相同工作量的任务,通常会更快,类似地,增加线程数量也可以有效处理更多的用户请求。当用户的请求有IO操作时,处理线程会等待,响应变慢,从发散思维的角度,可以想到数据提前缓存到内存,如果请求命中缓存中的数据,那么系统的响应速度也提高了。类似地,根据“影剧院票务管理系统”在实践中面临的问题和分析问题过程,提取其中的关键问题(如表1所示),结合专业方面,利用创新思维方法[4],通过设计的创新创业教学案例[5]-[7]探索问题的解决方案。
Table 1. Promotion of system performance and availability
表1. 提高系统的性能与可用性
序号 |
问题描述 |
解决方案 |
专创融合内容重点 |
1 |
系统处理用户请求速度慢。 |
更换处理器、增加内存空间 |
正向思维:新处理器和大存储空间让系统拥有更快的处理速度。 |
2 |
在不更换硬件设备的前提下,提高性能。 |
多线程技术 |
形象思维:更多线程处理大量用户请求,自然地,及时响应用户请求。 |
3 |
采用了多线程技术后,请求中有IO操作。 |
数据缓存技术 |
发散思维:在请求过程中遇到IO操作时,单纯增加线程,不提高性能,若请求的数据在内存,则读取缓存数据更快,提高响应性能。 |
4 |
受系统限制,不能无限扩大线程数量。 |
选择通讯方式 |
发散思维:多线程处理大量用户请求,分析用户与服务器线程的交互特点,大部分时间,信道没有数据。逆向思维:改进通讯方式,异步通讯的线程监听多个用户的请求,多个客户端通道复用服务器线程。 |
5 |
系统在任何时间提供服务,保证可用性。 |
复制多个系统副本 |
形象思维:以上解决方案是在单一系统内提高系统性能。但是并未提高系统的可用性。在电力供电系统中,往往多个电厂向一个城市供电,保障了不间断供电。正向思维:启发学生多个系统副本可以提高系统的可用性。 |
6 |
在多个系统副本间分配用户请求。 |
负载均衡调度 |
形象思维:根据每个副本服务器的工作能力分配用户的请求。 |
7 |
保持多个副本一致性。 |
一致性和共识协议 |
正向思维:多个副本要保持数据一致,即一个副本的数据发生变化,其它副本上的数据也要发生变化。 |
3.2. 教学案例“服务器集群”的实施
教学案例“影剧院票务管理系统web服务器集群”已经执行了6轮教学实践,近年来,为培养学生的系统创新能力,我们在教学过程中,当学生完成一个相关知识模块的学习后,就把知识模块引入教学案例的系统中,在系统中理解它们,并在教学过程中引入创新思维,润物细无声地完成了专创融合,获得了较好的效果。在讲解“影剧院票务管理系统”用户请求处理模块时,为提高观众购票体验,我们采用正向思维,直接能想到的方案是提升系统硬件性能,从而提高用户请求的处理速度。在教学过程中,不断抛出新问题,结合创新思维方法、创新性的技术和方法,逐渐得到相应问题的解决方案。例如,在课堂讨论中,我们提出在不更新硬件设备的情况下,如何提高系统性能?我们引入工作任务的派遣者和工作者概念,通过形象思维,系统中的线程可以进行角色分工:一个线程担任派遣者,负责将用户请求分配到其它工作者线程,工作者线程负责具体处理用户请求,通过增加工作者线程的数量提高系统的处理性能(如图1所示)。
Figure 1. Diagram of the dispatcher and workers in multi threads server
图1. 多线程服务器中的派遣者和工作者图
如果用户请求有输入输出操作,那么响应时间会延长,如何解决此问题呢?我们引导学生采用发散思维,把用户请求的数据提前放置在系统缓存中,若请求数据在缓存中,则不需要等待,显著地提高了响应速度。如果“影剧院票务管理系统”的在线用户越来越多,通过增加工作者线程已经超出了限制,成为不可能,继续让学生进行发散思维,可以发现一个事实,虽然很多用户与服务器线程建立了数据通讯通道,但是并不是时时刻刻在进行数据读写操作,很多线程是空闲的,学生已经很容易利用逆向思维想到可以一个服务器线程同时监听多个用户的通信信道,哪个信道有数据,就处理哪一个(如图2所示)。
Figure 2. Diagram of asynchronous communication thread, listening selector and client channel
图2. 异步通讯线程、监听选择器与客户端读写通道图
当用户请求在某个时间段集中到达,一台服务器主机的处理能力和容量达到现实条件的限制,这是必须解决的问题,同时,还希望系统提供的服务从不间断。学生很容易理解“多个发电厂向一个城市同时供电可以提供稳定可靠的电力供应”这一事实,引导学生运用形象思维和城市供电的解释说明,他们就容易接受复制服务器,得到多个副本服务器及合适部署它们(如图3(a)所示),能够承担海量用户高峰访问,并提高了服务的可用性,在教学过程中,演示一个副本服务器崩溃,其它服务器继续提供服务(如图3(b)所示),学生的知识概念无缝迁移,还引出了下一阶段的教学内容多副本一致性问题。
(a) (b)
Figure 3. Diagram of availability of “theater tickets management system web cluster server”
图3. “影剧院票务管理系统web服务器集群”提高服务可用性图
基于多个知识模块的“影剧院票务管理系统web服务器集群”属于综合性专创融合教学案例,它的教学内容分散在不同教学单元中,我们提供了一个完整教学流程的实施过程(如表2所示),我们用了8个学时完成这些教学内容。在教学案例的执行过程中,教师采用讲解、课堂互动、代码演示和基于案例的考核等形式,课堂呈现出良好氛围,学生的兴趣浓、参与度高。此外,教学案例的知识模块属于不同的教学环节,在执行实验环节,我们用半个小时回顾相关的知识模块及其在系统中的作用,唤醒学生对各个知识模块的认知,最后学生完成实验。
Table 2. Deployment of “theater ticks management system” teaching case
表2. “影剧院票务管理系统web服务器集群”教学案例实施过程
步骤 |
教学内容 |
知识模块 |
创新思维 |
教学方式及用时 |
1 |
问题导入:从观众在线购票的角度,说明用户体验的重要性,引出提高系统性能的问题。 |
计算机硬件提升,计算机组成原理 |
正向思维 |
课堂讨论(15分钟) |
2 |
多线程分工:监听者和工作者。 |
分布式线程设计原则 |
形象思维,突破思维定势 |
讨论,讲解,代码演示(1.5学时) |
3 |
分布式系统数据缓存,提高性能。 |
分布式数据缓存原理 |
发散思维,突破思维定势 |
讨论,讲解(1学时) |
4 |
增加线程数量受限,分析用户与线程通信信道,改变线程的角色和通讯方式。 |
分布式节点线程通讯原理 |
发散思维,突破思维定势,逆向思维 |
讨论,讲解,代码演示(1.5学时) |
5 |
在单机设备容量达到限制条件,系统如何再提高性能? |
负载均衡调度算法,复制多个副本服务器 |
形象思维,正向思维 |
讨论,讲解(1学时) |
6 |
多个副本服务器运行的问题。 |
多个副本一致性 |
正向思维 |
讲解(15分钟) |
7 |
准备资料,动手实验。 |
编码,修改配置,创建实验系统 |
理论、创新与实践的辩证关系 |
讲解、回顾以上多个知识模块,学生实验验证(2.5学时) |
3.3. 评价学生创新能力的探索
工科创新的重要标志是“集成创新”,即工程追求所采用的各类技术和资源的组织协调过程中的集成优化[8]。面向软件项目工程实施过程的各类问题,在设计和执行教学案例时,引入并运用创新思维方法、创新性的技术和方法,分析不同情境下系统面临的问题,将各类复杂知识模块集成在一起,以解决工程问题。最后,我们采用基于项目的开放式大作业评价学生创新能力,主要考察学生运用专业知识和创新思维方法提出的创造性问题解决方案在理论与实践上是否具有可行性,这样,鼓励学生不仅仅关注最终的结果,而且注重过程。我们在每学年的《分布式计算原理与应用》考核后,面向选课学生进行问卷调查,其中有2个问题是关于学生学习教学案例后是否能够运用创新方法面向问题提出提升性能的方法和建立一个分布式计算系统的框架,调查结果表明74.07%、29.63%、22.22%、14.81%的学生已经掌握了多线程、缓存、通讯方式和副本复制提升系统性能,94.44%的学生掌握构建分布式计算系统的框架。
4. 结语
根据我校软件工程专业培养方案的要求,将专业课程《分布式计算原理与应用》与创新创业思维方式相融合,并以教学案例的形式呈现。在教学过程中,引导学生发现实践中的问题,结合专业知识并运用创新思维提出合理的解决方案,培养学生设计开发系统能力的同时,也提高了他们创新思维的能力,拓展了他们对软件工程专业相关专业知识的理解,激发了学生的自学兴趣,为后续专业能力的发展做了铺垫。
从2022年开始,我们每年在软件工程专业的《分布式计算原理与应用》课堂上,采用这两个专创融合教学案例进行讲解、讨论、训练和考核,最后,还进行了问卷调查,结果表明专创融合的教学案例激发了学生的学习热情和钻研精神,积极参与各项教学活动,学生对分布式计算所涉及的各知识模块及相互作用关系,有了一个全面完整的理解。学生根据个人能力不断拓展专业领域,并结合专业特点提出创新设计思想。学生的表现也给教师一个正反馈,教师不断完善课程资料,讲课富有激情。2023、2024年度教学质量均被评为优秀。未来,研究创新能力评估方案,设计新的教学案例,并提升改进现有教学案例,融入新的分布式计算知识模块,使其能够应用于更广泛的分布式系统教学。
基金项目
西安邮电大学教改项目“《分布式计算原理与应用》专创融合示范课程建设”(JGZX202218)、“校企共建共授实践教学示范课《软件工程课程设计2》”和“基于华为智能基座的《鸿蒙移动应用开发》课程校企协同育人机制研究”(JGZYB202406)资助。