辽宁工业大学电子与信息工程学院 陈鑫 伊华伟 佟玉军
针对软件工程专业毕业生基础知识不扎实、技能掌握不牢的现象,提出一种以“系统开发案例分析”为汇点,相关课程融合建设的方法。通过对该门课程的介绍,分析了该课程在课程体系中的汇点作用;通过对其先行课程的知识点提取,构建知识网络,并在课程案例中予以运用。实践表明,该课程可以向上承接主要专业课程,向下开启学生毕业前夕的主要任务,具有很好的开设价值。
随着《中国制造2025》、《关于积极推进“互联网+”行动的指导意见》、《促进大数据发展行动纲要》等政策的出台,我国的软件产业即将面临又一次的腾飞,相应的,对软件行业的人才需求量及其技术水平必将持续上升[1]。与之形成对比的是,各大高校软件相关专业的毕业生在走出校门之际,普遍存在基础知识不够扎实、基本技能掌握不牢的现象,从而无法迅速达到用人单位的要求。
针对上述现象,高校的教学人员提出了多项举措进行改革,从教学方法、教学手段、教学内容等方面进行思考,旨在提高教学质量[2-5]。然而,大部分的教学改革都是孤立地从一门课程入手,缺少其与先行课、后继课之间的联系,致使学生对知识的理解及后续应用不够深刻、缺少延续,无法做到融会贯通。因此,考虑专业内部相关课程之间的联合建设,并设立一门起到承上启下作用的“汇点”课程,是十分必要的。
“系统开发案例分析”是可设置为大专院校软件工程相关专业开设的一门专业方向课,建议于大四上学期(第7 学期)开设,共40 学时,其中理论授课24 学时,上机实验16 学时。授课内容建议分为三个部分,具体如下:
(1)算法设计与实现。任何一个信息系统的本质都是对数据的加工过程,将初始的输入数据经过一系列处理转换为有意义的信息;而每一次处理,即可视为一个算法。本环节主要培养学生分析问题、设计数据结构、进而实现编程的能力,关注学生的编程基本功,所讲授的案例可以选择计算机科学领域的一些经典问题,如最短旅行商(TSP)问题[6]等。该部分预计使用理论授课8学时,上机实验6 学时。
(2)C/S 结构信息系统的分析与设计。作为软件行业的从业人员,相当大一部分的工作内容是管理信息系统的开发,将客户的需求转换成最终能在计算机上运行的系统。因此,本环节将以C/S 结构的产品库存管理系统为案例,重点介绍需求分析、模块划分以及数据库设计的过程。本环节理论授课10 学时,上机实验6 学时。
(3)B/S 结构信息系统的分析与设计。本环节中的内容与上一部分类似,区别在于使用的案例为商品在线销售系统。因为使用了与上一案例所不同的架构模式,所以本环节主要关注的是软件的体系结构、设计模式等内容。所占用的学时数较前两个环节略有减少,即理论授课6 学时,上机实验4 学时。
课程的总体介绍如表1 所示。
表1 “系统开发案例分析”课程总体介绍Tab.1 "System Development Case Analysis" course introduction
通过“系统开发案例分析”的课程内容及其关注重点,可以大致地看出该门课程在软件工程专业课程体系中所起到的承上启下的作用,本节将结合辽宁工业大学软件工程专业的培养计划[7]加以明确分析。
辽宁工业大学软件工程专业的学制为4 年制,根据其教学计划,学生需要修满171 学分,其中前三年需要完成138.5 学分。在前三学年中,与“系统开发案例分析”有关的主干课程包括:
(1)算法与程序设计:面向刚入学的学生,即第1学期的学生,培养其基本的计算机思维能力和基础的编程能力;
(2)高级程序设计应用:在第2 学期开设,培养学生的面向对象思维和面向对象语言编程能力;
(3)数据结构:可以认为是计算机、软件工程相关专业的最主要的课程之一,培养学生对链表、树、图等主流数据结构的理解、使用,同时强化学生的编程能力。该课程将在第3 学期开设;
(4)数据库原理与应用:面向软件工程专业第4 学期的学生,主要介绍数据库系统原理,完成从现实世界的概念模型到程序世界的逻辑模型的转化,保证学生能够通过SQL 语言对关系型数据库系统进行操作;
(5)软件工程:有了上述课程的基础,本专业在第5学期开设“软件工程”课程。该课程可以说是软件工程专业的另一门重要课程,主要介绍软件开发的原理、过程及标准,让学生对于软件开发有一个全面而深刻的理解;
(6)软件体系结构:针对软件设计方案进行强化,介绍主流的设计模式、架构模式,通过对该门课程的学习,学生可以“轻化”软件设计方案,提高设计的灵活性和软件的可维护性。本课程将在第6 学期为学生开设。
本科生学习的最后一个学期,需要完成从学校到社会的过渡,在这个阶段,学生(此处专指毕业后选择就业的学生)主要面临两项任务:
(1)完成毕业设计论文。该过程往往要求学生针对某一具体的题目,进行全面的分析、设计,将之实现并进行测试,进而撰写论文,可以说是对本科阶段所学知识作以系统总结及灵活应用的过程。然而,这个过程中会发现学生存在知识点掌握不牢、运用不当、论文组织不合理、写作不够流畅等问题。比如,描述系统数据模型的ER 图,应该作为开发者对于现实概念的理解,放入到系统分析的部分,然而很多学生在使用ER 图时,将之错误地放入到系统设计的章节中;
(2)寻找合适的实习单位和就业单位。该过程需要进行多次的笔试、面试,在这些环节中,学生经常出现知识点遗忘、实践经验欠缺,甚至表达不清晰的情况。例如,数据结构中的知识点,是历来软件企业在笔试过程中所重点考察的内容,然而大部分高校相关专业的“数据结构”课程,基本都在第3 学期甚至更早的时间开设,待笔试考察时,学生的印象已经不够深刻了。
“系统开发案例分析”这门课程的设置,恰恰能够解决毕业生所面临的问题。一方面,其通过若干个案例的理论教学,将之前所学内容汇总,从而使得学生对整个知识脉络融会贯通,有了良好的掌握;另一方面,在实验环节让学生分组实践,完成指定案例的实现,并通过答辩过程加以检验,可提升学生的开发经验,并锻炼其表达能力。
基于上述分析,可以构建软件工程专业的“课程树”(也可以称之为该专业学生所面临的“任务树”),如图1所示。从中可以明显地看出“系统开发案例分析”这门课程的“汇点”作用——其向上承接了前三个学年的主要专业课程,向下开启了学生毕业前夕所面临的毕业设计、就业等任务,起到了很好地从理论向实践的过渡作用。
图1 软件工程专业“课程树”Fig.1 Software engineering "Course Tree"
为了保证学生对知识体系具备全面的理解,相关课程需要通过将某些线索联系到一起,形成知识网络。本节将介绍以知识点作为线索、以“系统开发案例分析”课程作为“汇点”的课程融合建设方法。
每一门课程中都有其主要的知识点,是该门课程的精髓所在。在融合建设过程中,不可能将所有课程的全部知识点都加以考虑,但是,可以提取最具代表性的部分,以这些主要知识点为代表,加深学生课程的印象,激发学生去主动回顾以往课程。
将提取出的知识点加以融合,在“系统开发案例分析”这门课程的相关案例中灵活运用,从而形成知识网络的构建,如图2 所示。
图2 以“系统开发案例分析”为汇点的知识网构建Fig.2 Knowledge network construction with "System Development Case Analysis" as the convergence point
求解最短旅行商问题的最基础算法,就是对图2 中所有路径进行穷举尝试,从而找到最优解,这可以看作是对树进行搜索的过程。而树中每一个节点,可以看作旅行商的一种状态,记录其当前已经走过的路径、花费的代价等,是一个类定义的过程。将上述方案通过C++或Java 等高级语言实现,就完成了这一问题的最初级求解方案。当然,在此基础上,还可以给学生介绍分支定界法[8]等经典算法,以加速求解过程。
进行管理信息系统的分析与设计,首先需要从技术、经济等方面分析其可行性,在得到肯定答案的基础上对系统进行需求分析,进而考虑其结构设计、数据库设计等方案;其次是在进行分析、设计的同时,还需要考虑其测试时所注意的问题、使用的用例等[9]。这些知识点将在产品库存管理系统、商品在线销售系统这两个案例的学习过程中予以总结。
以知识点连线,进而推广成知识面——“系统开发案例分析”这门课程作为软件工程专业系列课程的“收口”,把相关课程很好地融合在一起,起到了良好的总结作用。在大四上学期开设这门课程,既可以帮助学生全面地掌握本专业的课程体系,又可以为接下来的毕业设计、就业等环节奠定基础,具有很强的现实意义。