全栈式智慧教育系统设计与实现
2023-02-18李仁港李志豪吴春红蒋小菲
李仁港,李志豪,王 凯,吴春红,蒋小菲
(1.贵州大学 大数据与信息工程学院;2.贵州大学 人民武装学院,贵州 贵阳 550000)
0 引言
在疫情防控常态化条件下,智慧教育的发展得到了大力推动。如今,学习者可以在互联网和大数据等技术赋能情况下完成学习计划,教师也可以使用智慧教育系统更好地分析学生的学习情况,从而制定教学计划。越来越多的研究者利用互联网、大数据等技术改进、完善已有的教学模式,以提高学习者的学习效率[1]。智慧教育平台收集学习者的相关信息,并根据用户兴趣点[2]以及关联主义学习理论[3]将这些信息向智慧层面转化,使得学习者能够快速、直接、准确匹配自己所需的教育资源。
David 等[4]为解决公司研究中心的信息过载问题、提高研究效率,开发了基于协同过滤的推荐系统;Santos[5]侧重于从硬件设施方面为智慧教育赋能,解决了交互建模问题,能让学习者在习得一项技能的过程中获得更好的学习体验;Shoikova 等[6]提出将教育与互联网技术相结合,构造一个智能化的学习平台,将所有学习资源数字化,学习者可利用智能设备连接无线网络,访问平台上的数字教学资源。美国也推出了Udacity、Coursera、edX 三大MOOC平台[7]。
国内针对智慧教育的研究虽然起步较晚,但在社会各界对智慧教育的重视、大众创新的不断推动下取得了许多成果。金江军[8]认为教育信息化发展到一定程度,就会形成多模块混合、自由组合、可操作的智慧教育系统;陈明阳等[9]对混合式学习平台进行研究,探索如何以学习者为主体、教师为主导,从而满足不同学习者的个性化发展需求;张红军等[10]在研究智慧课堂的基础上,对智慧学习环境进行设计,用于指导具体教学;郭雪梅[11]、林燕霞等[12]从社会认同理论角度出发,利用主题文本挖掘技术提取出用户感兴趣的主题,对用户进行分类,依据群体特征分析用户行为,从而挖掘用户兴趣并提供相应的个性化服务[11-12];马超[13]提出一种基于主题模型的社交网络用户画像模型,将用户全部社交信息和相对稀疏的用户基础属性整合到用户画像模型中,提高了用户画像模型的准确性与多样性;祝智庭等[14]、甘小莉[15]提出一种基于流程再造视角的“一站式”高校教育平台,从不同视角研究平台建设的有效路径与核心内容;张晓庆等[16]利用学生信息中心收集学生的图书借阅等信息,根据学生的兴趣爱好对其进行先导课程推荐,构建第一版的“教学一站式平台”,但该教学平台的功能还有许多需要完善的地方。
智慧教育信息平台的实现是一项整体性工程,具有一定的系统性。从不同视角出发对平台进行设计优化,使之能够达到最优效果,对于解决传统教育平台中的难点、痛点问题有着重要的理论意义。目前针对“一站式”教学平台的研究大多处于理论研究阶段,因此本文从系统应用设计和系统开发两个方向进行研究与讨论,基于KANO 理论、关联主义学习理论和精准教学理论等提出全栈式智慧教育平台的功能设计,并基于微服务分布式架构设计思想进行全栈式智慧教育平台的软件开发。
1 系统设计及系统应用
1.1 全栈式系统介绍
“全栈式”一般多用于软件领域,原意为运用多种开发技能,具有全局思维的软件系统。相当于构建了“全栈式”系统,无需再使用其他软件。
系统功能上具有“全栈式应用场景”,其中包含:①覆盖课程学习过程课前、课中、课后的完整应用场景;②学习者与教师或管理者使用不同的前端系统进行交互,管理者系统具有高度的可拓展性、可操作性,可随时根据教学需求调整课程定位;③基于学生学习兴趣构造学习画像子系统,可随时掌握学生对课程的学习兴趣,并可基于学习画像进行千人千面课程推荐系统的拓展。
系统在设计上具有“全栈分布式架构”:①系统整体采用微服务分布式思想进行架构设计,将整个系统分为多个子系统,具有良好的可拓展性、迭代性和稳定性;②基于微服务分布式架构设计思想进行全栈式解决方案相关技术研究,包括前端技术、后端技术、前后端交互技术、数据处理技术、数据库技术、环境配置及系统部署技术等,通过Ajax、Nacos 进行技术解耦,从而实现系统解耦,让每个子系统都可以独自迭代、部署而不影响其他子系统。
1.2 系统架构设计
(1)本文采用Ajax 作为前后端数据交互技术,在设计过程中对前后端进行解耦设计。Ajax(Asynchronous Javascript and XML)在前后端分离的开发模式下起到了关键作用。在分别针对不同使用者进行开发时,需要考虑不同使用者的前端界面以及后端服务接口设计。使用Ajax 技术可很好地令前后端数据进行交互,从而设计一个前端层次分明、后端功能完善的智慧教育平台。
(2)系统的每一个前后端模块都可独立部署,前端应用可独立运行在自己的服务器上,从而降低前后端之间的耦合性,使得前后端的技术栈独立。分离之前,技术选型受到一定限制,如模板引擎开发效率低、兼容性差等。分离之后,只要保证API 是一致的,前后端之间就会互不影响。对于复杂项目而言,拆分不仅可降低维护成本,而且大大提高了开发效率。在前后端分离的基础上,采用SpringCloud 微服务分布式设计思想进一步对后端应用进行解耦设计,同时后端将视图层(View)从系统架构中拆分出去,在使系统变得更简洁的同时,也实现了对后端系统的解耦。系统架构如图1所示。
1.3 系统需求分析及功能设计
(1)在进行功能设计之前需要对真实的应用场景进行分析,遵循科学、合理、规范的需求分析步骤不仅可以使需求分析工作更高效,而且提高了系统的稳定性。本文采用KANO 模型法对系统进行需求分析,如图2所示。
根据不同的质量特性与顾客满意度之间的关系,狩野教授将产品服务的质量特性分为5 类,分别为:A:必备型质量(Must-be Quality);B:意愿型质量(Performance Quality);C:魅力型质量(Attractive Quality);D:无差异型质量(Indifferent Quality);E:逆向型质量(Reverse Quality)[17]。
(2)智慧教育平台的应用场景设计是极其重要的一步,系统功能设计如图3所示。
根据掌握学习理论、KANO 理论和精准教学理论,该平台应用设计方案应包含以下内容:①教师通用权限分配方案;②课程分类管理方案;③课程资源管理方案;④课程资源访问权限方案;⑤讲师管理方案;⑥学生画像设计方案;⑦可视化分析方案。
Fig.1 System architecture图1 系统架构
Fig.2 KANO model图2 KANO模型
2 系统开发
2.1 系统开发平台搭建
(1)该系统是基于前后端分离、分布式架构开发的,在进行具体的系统开发前需要对开发环境进行配置。具体配置如下:①安装IDEA;②安装Java1.8 JDK 或以上版本;③安装node.js;④搭建SpringCloud 架构;⑤使用脚手架Vue Cli搭建前端框架Vue。
(2)配置云服务器及数据库相关信息如下:①腾讯云服务器(2核 4GB 3Mbps);②MySQL 8.0;③Redis 5.0。
(3)安装并使用Nignx 完成前端项目的部署。
(4)安装并使用Nacos 完成对Springboot 项目的管理及配置。
2.2 系统功能开发与优化
(1)系统上传功能开发与优化。由于云服务器资源有限,而上传功能是属于高频率使用的功能,针对高校专业种类多样、文件数量繁多、系统使用人数上限高的特点设计一套稳定的上传逻辑尤为重要。特别是上传大文件时容易因为各种网络原因导致上传失败,频繁的上传失败操作不仅会占用云服务器资源,而且会大大降低使用效率。该系统对上传功能进行了优化设计,系统会自动识别上传文件的特征,并且根据Md5 码为文件增加唯一标识符之后,将大文件进行分片打包上传至云服务器。上传过程中若因网络或其他原因导致上传失败,已上传至云服务器的文件会自动保留。当使用者重新上传相同文件时,系统会从数据库中查找File 表并查询该文件的唯一标识符,并且继续上次的上传操作。对上传功能进行优化后,可大幅提高系统的使用效率和上传功能的稳定性。上传功能的设计逻辑如图4所示。
(2)系统用户创建及权限分配功能开发。为实现“高自由度”的用户创建与权限分配功能,以满足不同课程对于角色与权限的不同需求,本文首先设计3 个步骤来实现此功能,分别可以通过用户创建、权限分配和角色创建完成用户与角色的关联、角色与权限的关联,通过角色(role)id 作为索引值遍历查询对应用户与权限。通用用户创建与权限分配设计如图5所示。
2.3 数据库设计
本文中的系统功能较多,用户数据及课程信息量较大,本小节主要介绍系统中部分功能所设计的主表结构及相关作用。
(1)课程相关数据库设计。本文系统中对课程进行了两级分类设计,如表1 所示,管理员可以登录管理员系统新建或修改已有分类,并对课程进行分类管理。同时为保证分类id 不重复,本文采用UUID(Universally Unique Identifier)通用唯一识别码作为id,其他主表若无提及,均默认采用UUID 作为其主表id,同时将id设置为主表主键。
为设计合理的课程结构,本文中课程结构设计由3 张主表构成,其中包括课程章节主表、课程小节主表和课程信息主表,如表2-表4 所示,3 张主表构成了课程基本主体结构。同时为进一步完善课程相关功能,例如课程级别设置、课程观看权限设置、课程分类设置、课程相关资料下载、课程视频播放和学生管理等功能,使得课程更加精细化、合理化和人性化,本文还设计了课程分类主表、课程内容简介主表、已报名学生主表和课程文件主表,如表5-表7所示。
Fig.3 System functional design图3 系统功能设计
(2)用户相关数据库设计:本文对用户角色从4 个不同角度进行设计开发,其中包括a(学生)、b(教师)、c(课程管理者)、d(系统维护者)。在a角色中涉及用户注册、密码安全和短信管理等问题,在c、d 角色中涉及高权限用户创建新角色,并为新角色分配相关系统权限辅助管理系统和课程,从而实现“高自由度”的用户角色分配功能,满足每个课程或班级的不同需求,自由地创建相关角色并为其分配权限,以此提高班级管理效率。其中a、b 的角色主表如表8、表9所示。
为了完成c、d 中“高自由度”的角色创建及权限分配,本文以user 表、permissions 表和role 表为基础主表,如表10-表12 所示。同时通过role_user 表和role_ permissions表整合3 张基础主表的相关信息用于完成该功能,以实现“高自由度”的角色创建及权限分配,如表13、表14所示。
2.4 系统微服务架构设计
本文中智慧教育系统完成对上传功能的开发和优化,以及管理者通用权限功能、课程管理功能、分类功能和课程报名等相关功能的开发。每个功能的技术实现部署在不同的Springboot 应用中,每一个Springboot 应用都可作为一个微服务器进行独立迭代、部署,很大程度上降低了整个系统模块之间的耦合性。由于微服务分布式架构的设计模式,系统中所有微服务均需要重新设计系统异常处理和数据库的读写操作,使得代码量成倍增长,因此本文设计了Server 模块作为公共服务模块,将Server 模块设计为jar 包在每个微服务器中的pom.xml 进行配置,从而大大减少了代码量,提高了代码的复用性。系统采用Nacos 作为注册中心和配置中心,对所有Springboot 应用进行统一管理。系统微服务设计如图6所示。
3 学生画像系统设计
3.1 画像系统架构
画像模块架构如图7 所示,教师通过Teacher 端登入智慧教育系统后可进入学生画像模块分析学生学习情况。画像模块基于Spark[18-19]进行开发,该模块会结合学生成绩进行数据分析。第一次分析采用ALS 算法,第二次分析采用LR 算法。该系统对算法中的权重、隐式特征进行了优化,使得分析预测结果更加准确。
3.2 算法设计流程及数据测试
在本系统中集成java Spark 框架ALS 算法作为矩阵分解算法对系统进行设计开发,并且ALS 在处理隐式特征问题时可简化计算过程。
ALS 算法是一个使用交替最小二乘法求解的系统过滤算法[20],由于Spark millib 中的ALS 算法具有天然分布式的属性,因此可很好地扩展到各类分布式计算场景。ALS 的核心假设思想为矩阵是近似低秩的,一个mn 阶的矩阵R 可用两个小矩阵X 和Y 的乘积来近似,如式(1)所示。为了找到低维矩阵X 和Y,可采用式(2)对其作交替最小二乘法优化,最大程度地逼近矩分矩阵R。
Fig.4 Optimization of upload functions图4 上传功能优化
式中,aij表示第i个用户对第j个物品的期望值,ui表示用户i 的隐式特征向量,cj表示物品j 的隐式特征向量,表示用户i 对物品j 的预测值。至此,为防止出现过拟合情况,使得L(U,C)具有更好的普适性,加入正则化参数,最终L(U,C)的表达式如式(3)所示。由于ui和cj耦合度高,不容易求解,故分别固定U 和C 对目标函数求极值,如此交替逼近直到到达预先设置的迭代次数上限。测试流程如图8所示。
Fig.5 Generic user creation and permission assignment design图5 通用用户创建与权限分配设计
Table 1 Course classification master table表1 课程分类(category)主表
Table 2 Course chapter master table表2 课程章节(chapter)主表
Table 3 Course subsection master table表3 课程小节(section)主表
Table 4 Course master table表4 课程(course)主表
Table 5 Large categories of courses master table表5 课程大分类(course_category)主表
步骤1:获取原始数据集“dataExcel.xlsx”,同时在maven 中引入com.alibaba.easyexcel 准备读取原始数据,并将数据处理为符合Als算法的标准矩阵。
步骤2:获取处理后的标准矩阵“handleData.xlsx”,并将其转换为csv文件“handleData.csv”。
Table 6 Enrolled students master table表6 已报名学生(student_course)主表
Table 7 Course files master table表7 课程文件(file)主表
Table 8 Student master table表8 学生(student)主表
Table 9 Teacher master table表9 教师(teacher)主表
Table 10 User master table表10 用户(user)主表
Table 11 Permissions master table表11 权限(permissions)主表
Table 12 Role master table表12 角色(role)主表
Table 13 Role users association master table表13 角色用户关联(role_user)主表
Table 14 Role permissions are association master table表14 角色权限关联(role_ permissions)主表
Fig.6 System microservices design图6 系统微服务设计
Fig.7 Portrait module architecture图7 画像模块架构
步骤3:在maven 中引入org.apache.spark,初始化spark运行环境,准备导入“handleData.csv”,对数据进行Als 召回训练。
步骤4:在AlsRecallTrain 模块中建立Als 模型,配置Als 中的相关参数:迭代次数setMaxIter 为20,相关矩阵数setRank 为5,正则化系数setRegParam 为0.01。创建Rating类,将其定义为训练后的数据类型,其中包括id、courseId、piont。
步骤5:将“handleData.csv”导入模型中进行训练,将数据集分别划分为90%的训练集与10%的预测集,同时得到该模型rmse均方根误差。
步骤6:从预测集中随机抽取15 个学生作离线的召回结果预测,利用训练好的模型对每个学生进行3 门课程推荐,并按照预测值大小对课程进行排序,预测结果如表15所示。
Fig.8 Test flow discipline图8 测试流程
Table 15 Prediction results表15 预测结果
其中,id 表示随机抽取的学生id,Recommend 表示推荐的课程id,point 表示预测值,point 越大代表该学生对该课程感兴趣的可能性越高。课程id(201-207)的含义分别对应为:计算机网络、数据结构、数据挖掘与分析、高等数学、数字信号处理、无线网络传感器、英语。
3.3 章节小结
画像系统的设计与实现是整个“全栈式”系统的重要组成部分,使用画像系统可更好地帮助管理者或教学工作者掌握学生的学习情况及学习兴趣,从而提高教学效率,因材施教。从技术架构角度而言,画像系统的设计、开发符合“全栈分布式架构”的整体技术架构理念。画像系统作为一个独立的Springboot 应用,在保证独立部署、运行的同时,可很好地融入智慧教育系统中,从而大大提高了整个系统的安全性、稳定性与可迭代性。
4 系统实现
该系统分别针对学生、教师及管理人员设计了不同的前端界面及操作逻辑。学生、教师和管理人员可通过相应系统完成日常的教学交互。
4.1 智慧教育系统:学生端
学生通过对应端口可完成日常操作,以下展示部分功能及界面。
(1)教育平台(学生端)主界面如图9所示。
Fig.9 Student-side main interface图9 学生端主界面
(2)登录、注册及忘记密码(学生端)界面如图10所示。
Fig.10 Login,registration and forgot password interface图10 登录、注册及忘记密码界面
(3)查询全部课程界面如图11所示。
Fig.11 Course query interface图11 查询课程界面
(4)课程详情界面如图12 所示。教师可在教师端口设置课程播放权限,当学生登录后点击“立即报名”才可获得课程播放权限,并自动加入到课程所对应的班级中。
Fig.12 Course registration and video viewing interface图12 报名课程及观看视频界面
4.2 智慧教育系统:教师及管理员端
教师及管理员可登录相应的管理系统进行日常的课程安排及班级管理,以下展示部分功能及界面。
(1)用户角色管理界面:可通过该界面完成注册,并将用户与对应角色进行绑定,使用户获得相应权限。
(2)课程管理界面:教师与管理人员可通过该界面进行课程创建以及视频、文件上传等操作,如图13所示。
Fig.13 Course management interface图13 课程管理界面
5 结语
本文基于云服务器、SpringCloud、Springboot、Java、Vue、Nginx、Nacos、Spark、MySQL 等相关技术设计了一个“全栈式智慧教育系统”,并基本实现了该系统的功能。在疫情防控常态化背景下,学生和教师可通过该系统完成日常的教学活动,有效提高了学生的学习效率。其中,学生画像系统实现了小规模数据分析并达到了预期效果。最后,由于该系统基于微服务分布式架构设计思想进行开发的特点,使得该系统不仅具有较高的稳定性,而且有很好的扩展性与可迭代性。在今后实际使用过程中,该系统可通过不断迭代、部署和整合Springboot 应用来实现更多的“全栈式应用场景”,在分布式架构设计下提供更多的“全栈式技术解决方案”。