APP下载

基于MVC 设计思想的Java 实验案例优化

2020-04-03卢慧雅

计算机教育 2020年3期
关键词:模块化编码模块

卢慧雅,王 磊

(北京信息科技大学 信息管理学院,北京 100192)

0 引 言

理工类院校的面向对象程序设计课程普遍选取Java 作为授课语言,Java 具有语法严谨、与平台无关、安全性和健壮性良好等特点,同时也是JavaWeb 开发的前导课程。传统的实验教学模式是在理论授课结束后,安排一定学时的综合实验,试图达到理解和巩固知识模块、提高设计与编码的能力。然而,部分实验存在过程单一、内容枯燥乏味、综合拓展不足的问题,造成学生兴趣下降,教师的教学效果和学生的动手能力都不尽如人意。

1 实验存在的问题

以信管专业面向对象程序设计课程的综合实验为例,通常教师下发实验任务后不再手把手指导,学生依据需求规格说明自行设计、编码、调试、发布。学生反映知识点庞杂、晦涩,设计理念不清晰,不知从何着手,普遍感到逻辑思维难度大,基本都是以“做完”实验为目的,而不是追求“做好”实验。实验答辩审核时,教师限于时间和精力,也是快速检查学生的系统功能和界面是否符合要求,很少关注编码细节。学生的设计思路五花八门,代码质量参差不齐,很难达到实验设定目标。传统的实验步骤如下:首先对系统需求进行功能梳理,没有模块化设计,少数类文件承担全部功能;接着完成臃肿的源程序编码,对系统功能进行抽样检查;最后发布可能有隐患的系统。

出现上述问题的主要原因在于:虽然某些章节结束后会有对应的实验课时,但不是综合实验,知识点串结较少,仅需少量源文件就能完成功能要求,系统设计随意、粗糙。最后在综合实验环节,学生还没有训练好软件工程化的思想,不懂得模块的概念和重要性,自然没有能力进行分层设计,软件质量差强人意。

2 实验案例优化

2.1 实验内容的优化

实验初期,教师不刻意教授模块化设计思想,让学生通过自主探索或者依据经验进行系统设计和开发,当大部分同学出现思维混乱、编码乱套的时候,教师适当介入,引导学生思考问题出现的原因,查阅资料并讨论可行的解决方案。

教师此时引入一种基于MVC 思想[1]的设计方案,让学生初步认知概念和模式。MVC 是model,view,controller 的简称,强调以业务功能为核心,将系统在逻辑上分为视图表现层、业务控制层和实体模型层,各层彼此独立又相互协作。不同层各司其职,有利于通过工程化、工具化管理程序代码,可维护性好、复用性高、部署快速,具有较低的生命周期成本。

优化后的实验步骤在梳理系统功能后,进行模块划分和组件设计,对模块实施迭代编码,接着开展单元测试,测试通过才能持续集成,直至系统功能检查无误,然后发布稳定的系统。

实验内容强化模块化思想,结合案例驱动[2]或者项目导向[3]的教学模式,引导学生理解设计模式,训练学生一步步迭代完成实验。

2.2 实验方式的优化

实验方式由原先的线下编码、线下提交、教师人工审核升级为线下编码、线上提交、平台自动审核。考虑信管专业特点,选取信息处理类的典型实验案例,经过裁剪、整合后部署到学院的实训教育平台[4]上。系统经过科学的模块化设计,每个模块再被拆分为若干子任务,子任务有顺序要求,挂接在里程碑节点上。按照软件工程化的要求,依次进行迭代开发,学生不能任意选择某个节点,必须严格按照开发流程进行。教师从繁琐的辅导和答疑中解脱出来,随时在后台查看实验进展情况,有针对性地提醒和讲解,能够专注于实验案例的业务规则定制,提高教学效率。实验进度如图1 所示。

图1 实验进度

3 实验案例实施

3.1 实验目标和要求

课题组选择模拟文本界面的“团队开发人员调度软件”作为综合实验案例,系统以实现员工显示及团队人员调度为目标,以数组作为存储数据的载体,完成数组的创建、显示、查询、增加、删除等操作,考查多个知识点的掌握情况:多态、对象的关联、异常的发生与处理[5]等。学生在实验过程中理解面向接口的编程方法,学习模块化设计。实验过程采取单人单组、独立开发的方式,要求实现以下功能。

(1)软件采用单级菜单方式工作。当软件运行时,在主界面根据指定的数据显示公司所有成员列表。

(2)根据菜单提示,基于现有的公司成员,组建一个开发团队。组建过程包括将成员插入团队中,或从团队中删除某成员,还可以列出团队中现有成员。

(3)开发团队成员包括架构师、设计师和程序员,既有总人数限制,也有人员类型数量限制,如果操作不符合预设规则,将触发和抛出自定义异常。

(4)菜单某项操作成功后,按回车键将重新显示主界面。

3.2 实验步骤

教师依托实训教育平台,详细讲解模块化分层的概念和设计方案,指导学生完成实验步骤的调整,即将系统划分为list 视图模块(对应表现层V)、manage 管理模块(对应控制层C)和domain 实体模块(对应模型层M),如图2 所示。

图2 系统模块分层结构

其中list 视图模块为主控模块,由界面显示类负责显示菜单和退出系统,通过调用服务模块提供的方法完成人机交互功能;manage 管理模块为实体对象的管理层,响应视图模块发送的请求,由公司员工管理类维护公司员工、团队人员管理类维护团队成员,同时处理由异常类传递的各种失败信息;domain 实体模块包含员工类及使用的设备信息,起到基础数据支撑作用。这里体现了分而治之的MVC 设计思想,组织结构清晰、系统功能明确,使学生基于问题驱动加深认识和理解模块化的软件工程思想。

每个模块再依据子任务,设计不同数量的组件类即单元文件。学生在“学练问”的过程中脑海已有比较清晰的认识,所以组件类的创建就不感觉难度了。指导学生继续完成实验步骤的调整,即每一个单元文件迭代编码结束后都使用模拟数据进行测试,检查功能是否正确和健壮,既要选择合理的模拟数据验证功能是否完整,还要使用非法的模拟数据检验异常的捕获和处理情况。学生在不同场景中深刻理解异常的发生原因,能够掌握异常的捕获和处理方法,同时也能渗透单元测试[6]的概念和方法,体会软件质量的重要性。

节点分配的任务经过编码和测试后,进行线上提交,实训教育平台预置的评价规则对源文件自动审核,若不符合规范将拒绝提交操作,直至学生的修改符合要求为止。经过若干任务的迭代,系统搭建比较完整了,实验进入验收和总结阶段。

3.3 实验特色

MVC 设计思想在高年级的Java Web 课程才会详细讲解,尝试将知识点进行适度前移,并与实验融合,以问题为导向激发学生对模块分层的兴趣,理解“良好的设计是成功的一半”“MVC设计思想是系统的核心”[7]。

实验依托实训教育平台,将系统功能划分为若干模块,使用分层迭代的软件开发思路,模块结构符合MVC 设计思想,为学生以后进行Java Web 的学习打下扎实基础,起到水平提升和能力拔高的作用。

教师在实验过程中循序渐进地引导学生发现问题,培养学生主动思考的习惯,能够有效提升Java 实验教学的质量和效果,使学生真正具备解决复杂问题的工程能力。

4 结 语

该实验案例已应用在信管专业不同年级的实验教学中,实验学时可自适应裁剪和扩充。考虑低年级学生的理解程度与知识储备,可以选取前4 学时作为章节实验,只完成公司员工的列表功能,即将静态字符串数组中的数据逐项构建为具有继承结构的员工对象,加载到动态对象数组中,由公司员工管理类负责把对象信息打印在屏幕上。团队人员管理类和异常类不参加系统工作,也没有人机交互功能,但MVC 设计思想依然能够嵌入实验目标和内容里;还可以将完整项目放入高年级的专业实训中,合计16 学时作为综合实验,要求实现全部业务逻辑,即系统提供数组的维护操作,从而完成团队的人员调度。团队人员管理类和异常类参加系统工作,人机交互功能丰富,MVC 设计思想更加深入。

教学实践表明,大部分学生普遍感到实验的形式有趣、内容新颖,对理论知识的掌握以及对动手能力的提高帮助很大,同时能够进一步消化理解抽象的模块化编程理念,熟悉软件项目的工程化规范。

教学模式与信息技术与时俱进,可以继续探讨如果实训教育平台使用大数据的方式,采集和存储多维教学信息,辅以人工智能进行决策分析,个性化的教学效果和反馈会更加突出,以便尽早实现专业知识与技能素养的双向思维贯通。

猜你喜欢

模块化编码模块
28通道收发处理模块设计
重卡内饰模块化技术
“选修3—3”模块的复习备考
生活中的编码
模块化策略在建筑设计中的应用研究
长链非编码RNA APTR、HEIH、FAS-ASA1、FAM83H-AS1、DICER1-AS1、PR-lncRNA在肺癌中的表达
模块化住宅
马勒推出新型模块化混动系统
Genome and healthcare
必修模块相关知识过关训练