综合实践课程对本科生系统能力的培养

2018-01-27 05:58魏恒义鲍军鹏
计算机教育 2017年12期
关键词:视图选题建模

魏恒义,安 健,鲍军鹏

(西安交通大学电子与信息工程学院,陕西西安710049)

0 引言

ACM/IEEECS2013的重点是强调系统知识和系统能力的培养[1],系统能力包括系统分析能力、系统设计能力和系统验证能力3个方面[2]。针对信息系统设计专题实验综合实践课程包含内容广泛、教学实施困难的问题,提出一个四维教学模型用于培养学生的系统思维方法和软件开发能力。综合运用多种知识解决复杂系统级问题是系统能力的重要表现[3],能刺激学生的首创精神和热情[4],给学生一个“整体大于各部分的总和”的实际体验[5]。

1 综合实践课程的教学难点

信息系统设计专题实验的目标是培养本科生的软件系统开发能力。该实验是培养学生贯通程序设计、数据库和软件工程知识,以软件产品开发为导向的综合实践教学活动,也是工程教育的实施过程[6]。课程实施中很容易使学生陷入局部的软件编程中,无暇顾及涉及的方法和系统能力。教师在教学中也难以有的放矢地补充相关的知识和技能,帮助学生提高开发大型软件的系统能力。针对该问题,我们设计了一个四维教学模型,综合培养学生的系统思维和软件系统开发能力,帮助学生在实践中灵活运用知识和技能、在团队协作中突出重点。

2 四维教学模型的设计

2.1 理论和方法应用维度

该维度的目的是引导学生将基础理论和方法应用到实践项目中。课程在面向对象程序设计基础上补充面向对象的分析设计方法,构成软件开发能力的基础;在数据库理论上需补充建模理论和方法,将软件体系结构理论通过B/S结构、C/S结构、移动应用等技术具体落实。

2.2 工程规范与工具维度

好的工具可以让学生体验软件开发方法的内涵和应遵循的标准规范。该维度对需求分析、设计、实现和测试各个阶段采用的规范和工具进行实例教学,培养学生规范和准确表达软件各个开发阶段的模型,贯穿设计思想。课程采用需求描述模板对学生选题和分析进行起步导引,采用UML建模实例引导学生从用例图开始建立系统需求模型。完整的应用示例帮助学生了解问题与设计模型的映射关系;实体类与关系数据库模型实现方法的比较、数据库建模工具的示范可以解决信息持久存储问题。系统实现阶段以Web应用、移动应用的范例教学为主,让学生借鉴和模仿范例,提高编码效率。

2.3 应用领域与软件产品要求维度

产品化是软件的终极目标之一,该维度培养学生综合考虑软件功能需求、面向的领域、软件分布架构、软件配置、使用方式等产品特性。课程重点考虑如下两个问题:①软件分布结构和部署对软件产品的影响;②软件产品的功能和非功能需求。

软件分布结构和部署看起来是两个技术问题,但会影响软件系统的可用性和受欢迎程度。软件的分布结构和部署与采用的开发技术密切相关,开发小组可从产品市场化的角度选择软件结构和部署策略。在复杂的软件开发中学会取舍与平衡也是学生创新能力的体现。教师应引导学生在开发中不忘系统的可扩展性、可配置性、网络和通信协议、持久性、并发性等非功能需求,以适应市场需求。

2.4 实现技术与拓展维度

针对耗时最多的编码实现,教学中需要注意如下3个问题:①指定开发技术与学生自选技术对课程进度的影响:以指定技术为主线,教师可以通过精心准备的讲义、实例、视频和资料提高学生的效率。②编程框架与第三方软件的采用:课程对Web应用框架的演变进行详细讲授,帮助学生选择适合的Web应用服务器、数据库系统和编程框架。③数据的持久化存储问题:实体类图与关系数据库模型具有天然的不相容性。分析Java的持久性机制、持久性框架以及面向对象数据库等解决方案,使学生能够兼顾应用程序规模、复杂性、技术成熟度、学习成本与开销等因素,选择合适的数据存储方式。

3 四维框架的运用

理论教学中软件开发能力综合知识之间的相互关系和协同往往被忽略,导致大学生创新能力培养绩效不高[7],该四维教学模型是指导教师和学生提高系统及创新能力的导引。

3.1 理论和方法的综合运用

该维度主要从以下3个主要问题入手,将学生的理论知识与实践环节衔接。

1)面向对象分析与设计方法与软件系统建模技术的对接。

面对一个实际问题,如何将面向对象的分析与设计方法落实到建模技术的具体视图是首要解决的问题。深刻理解UML视图对RUP4+1方法的具体表示,可以为UML模型精准体现分析设计的思想打下基础。RUP4+1方法与UML视图的对应关系有:①二者都采用用例视图描述参与者对系统功能的期望,用逻辑视图描述系统功能的内部设计和协作,用配置视图描述软件到硬件的映射及分布特性、依赖的库和其他支持软件;②RUP4+1中的实现视图对应UML中的组件视图,描述软件实现模块及其依赖关系、代码的组织方式;③RUP4+1中的进程视图对应UML中的并发视图,描述系统的并发性及通讯,关注进程、线程、对象在运行时的交互问题。

2)面向对象模型与关系数据库模型的映射。

数据模型是信息系统设计中的重要部分,将数据库概念模型、逻辑模型和物理模型理论通过建模工具有效的实施,可引导学生完成数据存储和访问设计,加深对数据库理论的实践体验。

3)软件体系结构理论的落实。

教师应对B/S结构、C/S结构、移动应用等主流软件体系结构进行示范,指导软件架构设计,帮助学生综合平衡项目需求、团队技术基础、成员兴趣等因素,处理好宏大理想和32个有限课时的矛盾;要让学生深刻体会利用建模工具表达自己的软件分析和设计思想是重点,而不是工具本身如何操作。

3.2 工程规范与设计工具的选用

工具承载了丰富的软件开发思想和方法,课程对UML建模工具、关系数据库建模工具、面向对象编程工具的要求是:①对建模工具StarUML进行示范,提供MOOC短视频让学生了解有关细节;②通过数据库建模工具的示范,将概念数据模型、物理数据模型、正向工程、逆向工程、模型报告生成落到实处;③强调Eclipse加扩展插件的编程框架;④对关系数据库MySQL、Tomcat应用服务器等相关软件以实例示范为主,供学生快速学习模仿;⑤代码管理工具推荐采用GitHub管理小组协同编码。

3.3 应用领域与软件产品化的考虑

为了培养大学生的创新创业能力,在应用领域与软件产品维度上的教学要强调实践项目的产品化特性。关注点一是项目的选题领域与规模,二是从软件产品的角度考虑用户需求和市场的适应性。对有创新创业意愿的学生,教师要在选题、设计和实现中进行重点关注,同时结合相似的产品软件进行对比分析,以提高学生的市场意识。

3.4 技术运用和拓展方式的实现

面对新技术快速发展带来的挑战,任课教师必须不断地更新课程内容,学生需要对新技术学习投入时间成本。让学生针对具体项目需求选择合适的实现技术并能快速学习掌握是本维度的难点。

1)实现技术的模仿与运用。

选择合适的实现技术是软件工程的核心之一,教学中对C/S、B/S以及移动应用结构的应用实例进行示范并提供原型系统供学生模仿,此种方式适合没有额外时间投入的学生顺利完成课程。

2)实现技术的学习方式。

在课程中灵活运用如下几种教学方法,可以有效提高新技术的学习效率:①利用短课堂梳理理论主题。对面向对象方法、“RUP4+1”视图等理论进行课堂归纳可以快速将方法引入实践;对StarUML等工具,通过实例示范讲授快速引导学生模仿和细化。②“干中学”对实践课程尤为重要,可以解决技术细节学习。“干中学”的实施主要依靠小组内部沟通和师生互动环节。课程教学中设计了选题与项目可行性评估、需求模型、数据库模型、设计模型和作品讨论5个师生互动环节。③组织针对性的文字资料、MOOC短视频、应用示范源代码供学生进行细节学习和模仿,提供“为什么需要多个模型或视图描述系统”之类的问答资料以及“用户眼中的业务流程——活动图”之类的短视频示范。丰富的在线资料和帮助文档构成技术细节的学习条件。④团队精神培养通过在实践中以问题为驱动、以团队成员分工合作的方式,让学生体验感受团队攻关的价值与乐趣[8]。在5个师生互动环节中,各个团队可以相互观摩、协同学习。⑤体验学习的目的是软件开发经验的传递。一种形式是教师会提供一些高年级学生的作品作为示范资料;另一种形式是在5个师生互动环节中相互学习。

3)技术发展的适应性引导。

技术和工具的发展是必然的,指导教师在教学中的归类理解、探询本质、举一反三,可培养学生求新求变的兴趣,提高学生自学习、自适应的能力。

4 课程的推进与考核

教学中对纵向4个维度的主题内容进行归纳、示范和推进,在横向上进行交叉融合;对不同层次的学生和课时量,在保证主题内容完整的前提下,进行内容深度的裁减。

4.1 选题与课程主线导向

课程的选题分为教师指定和学生自选两大类。教师选题包含信息管理、物流、电子商务等10余个选题。教师选题的应用细节由学生根据领域知识细化。自选题目来源于大学生创新实验、参与的科研与社会实践以及学生自主创业项目。

程序设计基础、数据库理论和软件工程方法都会在课程中深入实践。在“选题与项目可行性评估”互动环节中,每个小组用5min的PPT讲解项目需求,与指导教师进行讨论,根据小组成员的基础和时间投入确定系统边界,在四维框架下坚持课程主线内容,适当扩展个人兴趣点并树立信心。

4.2 课程进度安排

培养框架的4个主题及其内容细节协同体现在需求分析、设计、实现和测试的各个阶段,表1是目前课程的进度与内容安排,每次课程一般为4h。

4.3 互动指导与考核

(1)课程采用“原理性与工程性相结合、分析式与综合式相互动”的教学方法[9]。课程设计的5个师生互动环节也是阶段验收和过程考核点。①选题与项目可行性评估是指导教师与各项目组互动的第一个环节,目标是落实项目小组,根据小组人力和技术基础评估选题规模和时间可行性,处理好需求与有限课时之间的矛盾。互动结果是项目组能写出项目需求描述。②需求模型讨论中,教师针对小组汇报结果与小组讨论,对系统边界、功能、数据基础等问题提出具体意见,完成第1次考核评分。③设计模型讨论重点考查学生能否合理采用UML描述系统的结构、流程和处理方法,指导教师提出修改意见,完成第2次考核评分。④数据库模型讨论考查学生将面向对象的实体类映射成关系模型的结果,对模型进行点评,提出建议,进行第3次考核。⑤作品演示中,项目小组每位成员汇报自己开发的功能,回答教师的提问。现场检查单是师生互动的凭据,学生填写自己汇报的内容,指导教师评估作品等级,并在现场检查单上记录学生的贡献度、代码理解和调试情况。

(2)考核评分是针对每一位学生的,主要依据是小组作品等级、个人设计实现报告和5个互动环节中小组成员的贡献。评分内容包括需求分析结果及讨论10%;模型设计(含数据库模型)结果及讨论15%;作品演示验收40%;设计实现报告25%;平时考核10%。

表1 课程的进度安排与内容

5 结语

实践教学是培养学生创新精神和实践能力的一个重要环节,其体验知识过程还伴随着探究性的学习活动[10]。多年的教学中,该教学框架扎实提升了学生软件开发的系统能力,对教师和学生也提出了新挑战。要让学生有兴趣投入这个繁杂、综合性和系统性强的课程,教师必须在知识的凝练、实验范例准备、资料的完整性准备、MOOC短视频的录制、互动交流等教学环节投入精力。实施中的主要困难是部分学生的前序课程基础薄弱,每年都有中途退课的学生。能坚持完成的学生都感受到课程系统性强、包含内容丰富,同时也对先修课程进行了夯实与运用。学生在报告中写到“这应该是大学以来做过最难的实验,也比较耗时间,前前后后投入了很长时间。听学长说这个实验很难,但当时还是选了,当然也收获不少,真的切身体验到学习的乐趣,感觉能做成一件事,还是很有成就感的”。

猜你喜欢
视图选题建模
基于FLUENT的下击暴流三维风场建模
联想等效,拓展建模——以“带电小球在等效场中做圆周运动”为例
求距求值方程建模
本刊诚征“独唱团”选题
谈诗词的选题
本刊诚征“独唱团”选题
本刊诚征“独唱团”选题
基于PSS/E的风电场建模与动态分析
视图
Y—20重型运输机多视图