基于模块化的引导式程序设计的实验方案设计与实现

2016-01-15 10:03顾国民叶阳侯向辉陈琦王小号张旭东
教育教学论坛 2016年4期
关键词:软件工程程序设计模块化

顾国民 叶阳 侯向辉 陈琦 王小号 张旭东

摘要:本文通过模拟软件公司的软件研发的组织管理方式,构建阶梯性的研发团队,并以模块化的方式分解软件项目来设计一种适合高校计算机本科学生的实验教育模式,降低开发难度,激发学生的兴趣,在实践中及时消化理论知识。教学方案在实践指导过程中取得了有效的成果。

关键词:软件工程;模块化;程序设计;实验

中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2016)04-0262-02

一、前言

对于计算机专业的学生来说,具备良好的编程能力是重要的基本功,通过编程锻炼学生的动手能力,通过编程培养学生的专业逻辑思维能力。

当前学校的培养方案更重视通过课堂的理论授课把计算机的基本理论知识系统的教给学生,而满足学生在卷面考试中取得较好的成绩的欲望。实验教学只是作为一种补充,其重要性被低估,学生从实验课程中更多的是获得一种初步的感性认识。这种方式远远没有达到社会对我们大学生的要求,造成了学校培养和社会需求的脱节。

为了弥补二者之间造成的鸿沟,出现了社会上的软件开发培训公司,虽然培训费用昂贵,但还是受到了学生的追捧。它们承担了部分本该由高校完成的培养学生的责任。这种显现值得我们高校的专业教师反思。

总的来说,高校计算机专业应该在讲授基础理论知识的同时,进一步加强实验教学,从而帮助学生更好的完成从理论到实际的转化,更能适应社会的选择。

二、当前程序设计实验现状分析

为了帮助学生提高程序设计的水平,高校设计多个层次的程序设计实验教学,帮助学生成长。

按照教学大纲,每个程序设计课程都安排了一定的实验课,这些课程在及时巩固课程所学的理论知识方面起到了积极的作用。课堂的实验课主要是把实验书上的练习题在计算机上实现,通过简单的算法实现完成一个题目。但是也因为只是作业,而大学的学生并没有中学的升学压力,从心理上来说学生对待“作业”会打一定的折扣。

一年级的学习之后安排大型实验,让学生几个人组成一个小组完成一个简单的较为实用的项目。一般来说这类项目没有实际的应用价值,如“图书管理系统”等,因为大型实验并没有实际的需求,不能引起学生足够的重视,往往有一种“交差就好”的心理,而且是教师一对多的教学结构,很难做到在做项目的过程中对每个人进行悉心的指导,又会让学生错过一个良好进步的机会。同时,学校也鼓励有兴趣的学生参加程序设计的竞赛培训。当前较为流行的有ACM竞赛,虽然其形式较为简单和看似枯燥,就是编程的题海战,却因为题目本身具有挑战性和良好的积分机制,反而激发起部分学生的积极性,很好的培养了学生的逻辑思维能力和编程能力。但是类似的竞赛培训也存在一定的片面性:其培养的是学生单打独斗的能力,而现在社会对程序开发的需求往往是团队合作,现在任何一个实用的软件项目是靠一两个人完成的,而此类的竞赛却会给人一种“算法就是一切”的假象。

从以上的程序设计实验的现状,我们试着分析理想中需要的程序设计的实验应该具有怎样的特点:(1)能让学生在实验过程中体会到成就感。(2)以团队的形式去完成一个应用项目,体会合作的乐趣。(3)真正了解和体会一个项目的真实过程,更加注重细节。

三、模块化程序设计实验教学方案设计

借鉴公司软件项目开发的过程和经验,为了满足对不同层次的学生的程序设计能力的培养,模块化程序设计的实验教学的方案需要考虑设计一个实验项目管理平台,在此基础上形成一种师生之间的互助机制,并设计实验教学用的应用项目,营造实际项目研发的环境。

(一)项目开发管理平台建設

项目管理平台的功能主要是进行项目研发过程中的管理以及对学生成绩的评估和统计。

引入软件工程项目管理的一些成熟工具软件搭建真实项目开发环境。利用SVN工具进行项目源码的管理。SVN是Subversion的简称,是一个开放源代码的版本控制系统,是时下比较流行的开发版本控制工具。

为每个参与的学生开设独立的帐号,在开发过程中将自己的代码提交到服务端,实现版本的控制,同时教师也可以通过该工具下载最新的代码检查学生的开发成果。

利用Trac进行文档的管理,Trac是一个为软件开发项目需要而集成了Wiki和问题跟踪管理系统的应用平台,Trac以简单的方式建立了一个软件项目管理的Web应用,以帮助开发人员更好地写出高质量的软件。

(二)项目基础培训

基础的程序设计实验一般只是在较简单的实验环境下进行的,学生对如何参与实际的软件研发项目存在一定的向往却不知从何下手。需要指导学生了解团队合作研发项目过程中必须要掌握的知识,包括项目工程的概念、动态链接库的概念和开发、利用SVN进行代码的管理等知识。对于基础培训最初由教师完成,对于项目进行过程中新加入的学生的培训由熟练的学生负责,发挥层级团队的传帮带作用。

(三)项目设计

对于实验项目的设计,注重模块化。从项目的选型上选择具有清晰模块需求的项目。从设计的角度将系统设计成为模块松耦合的组织方式。目标是将一个完整的项目分解成相对独立的模块,每个模块配合相对较完整的接口说明书,基础较好的学生能够独立完成一个模块的开发,而集成的学生则负责对每个模块的验收和最终搭建成为一个系统。

(四)层级团队建设

公司的项目研发团队一定是由不同层次的软件研发人员组成,如架构师、模块设计师、基础软件研发、测试等。如果学校的实验中对于建立如此完整的团队结构有一定的难度,可以以此为目标,由教师在项目提出阶段先行完成架构师、模块设计师的任务。学生最初可以做好模块的软件研发及测试工作,但对于有能力的学生可以在职位上得到晋升。该实验的项目设计需要跨越多个年级,让不同能力的学生在一起参与一个项目,形成学生之间的互助合作的机制。

在项目的开展中,逐步有意识的去培养高年级有能力的学生向上发展,形成梯队,承担起带领信任的重要任务。

在整个项目开展的过程中,指导教师的重要任务是建立团队和直接指导有较高层次的学生,也就是高层次的学生能够更多的得到教师的亲自指导,这也是学生积极向上发展的动力之一。

(五)项目的开展

指导教师根据不同的项目情况以项目经理或者用户的角色参与项目,指导学生进行项目需求文档、概要设计等的撰写,控制项目进度和质量,等等。或者扮演用户与学生代表的项目经理进行沟通、提需求并验收项目等,积极参与到项目中去。

(六)管理及考核机制

通过制度上的保障,让教师提出建立程序设计实验项目的申请,进行项目开发的模块化设计,提出项目达到的目标,在程序设计教研组通过审核之后,由实验指导教师具体负责实验的指导。

目前有些学院为了培养学生的能力设立了“创新分”的机制,要求学生在大学阶段完成一定的创新分,用于基本要求及能力考核的重要指标。可以将本实验平台的学生成绩与创新分进行对接,同时将学生在这个实验平台中获得的创新分也与教师的年终考核进行挂钩,让学生与教师的成绩都得到认可。

四、结语

本文提出的以模块化的引导式的程序设计的实验方案,在学校构建一种类似公司项目研发的实验指导体系。用类真实的软件研发环境来刺激学生,发挥学生的主动性。

在近两年的教学过程中,学生基于该实验方案进行设计开发,师生普遍反映对学生研发能力的提高有很大的帮助,毕业后能更容易得到社会的认可。

参考文献:

[1]全成斌,郑宁汉,杨士强,等.计算机一体化实验教学改革与探索[J].中国大学教学,2014,(6).

[2]彭志强.基于云计算的计算机与软件实验资源管理[J].数字技术与应用,2014,(7).

[3]许德武.项目分解法在计算机实验和理论教学中的应用[J].实验室研究与探索,2013,32(1).

[4]翟艳红.开放式计算机实验实训教学分析[J].科技创新导报,2014,(22).

[5]杨晋平.新局势下提升计算机实验教学效率的方法之刍议[J].课程教育研究(新教师教学),2014,(36).

[6]赵爱玲,崔朝军.构建计算机实验教学平台的探索与实践[J].中国高校科技,2012,(5).

[7]逯晖.开放式计算机实验实训教学浅谈[J].重慶科技学院学报:社会科学版,2012,(14).

Abstract:College Student computer development capabilities is not meeting the current social need,The main reason is the lack of development projects of the students in school learning theory during exercise in the process of learning theory. This paper,design an experimental educational model for college student. By simulating the software developing management of company,and decomposing software project into modules,to reduce the difficulty of developing,and rouse students' interest. The teaching programs achieve effective results in the process of experiment.

Key words:software engineer;software module;experiment

猜你喜欢
软件工程程序设计模块化
模块化自主水下机器人开发与应用
基于Visual Studio Code的C语言程序设计实践教学探索
模块化住宅
从细节入手,谈PLC程序设计技巧
ACP100模块化小型堆研发进展
模块化VS大型工厂
高职高专院校C语言程序设计教学改革探索
依托工作室的软件工程实践教学研究
关于如何创新和完善计算机软件工程管理的探讨
PLC梯形图程序设计技巧及应用