计算机类学生软件系统设计能力培养

时间:2022-06-04 04:17:00

计算机类学生软件系统设计能力培养

随着中国经济的迅猛发展,经济规模和经济领域不断扩大;信息化程度也在不断提高,政府对信息化建设的重视程度日益增强。目前,除了我国自身的信息化建设需要大量的软件人才以外,还有大量的软件外包在我国进行,现有的软件技术人才远远不能满足软件开发公司的需要。尽管在爆发世界金融危机的2008—2009年,中国企业对软件人才的需求也没有减少,每年需求在60万人左右。虽然每年有大量的高校计算机本科专业毕业生,但是,软件人才仍存在较大缺口。在软件人才供求关系上,出现了公司、企业招不到所需要的软件人才,而计算机本科专业毕业生却就业困难的局面。为此,我们对计算机本科专业学生软件系统设计能力的培养方法和途径进行研究,在计算机本科专业中培养一批适应社会需求的软件系统设计人才,具有现实和重要的意义。

1软件系统设计能力现状与分析

多年来,我们从本校计算机本科专业学生的毕业实习、毕业设计,就业应聘、用人单位的考核及反馈的意见来看,学生较好地掌握了计算机科学与技术专业的基本理论和专业知识,具备了计算机的基本操作、程序设计方法、数据库建立和网站建设等专业能力,有少数学生还具备了较强的软件系统设计能力。从学生的就业情况统计分析来看,我校计算机科学与技术专业学生约有10%左右的学生受聘于软件开发企业,从事软件系统的设计与开发工作。也说明我们现在培养的计算机本科专业的学生中,只有10-15%的学生软件系统设计与开发能力得到软件公司的认可,他们的软件系统设计能力比较强的,能够达到软件公司的要求。但是,大部分学生的软件系统设计能力相对较弱,不能满足社会的要求。我们通过对本校计算机本科专业的课程体系结构、教学过程的各个环节进行研究分析,认为学生的软件设计能力还存在如下几点不足:

(1)算法设计与分析能力不足。算法设计与分析是计算机本科专业学生编程的基础,是人类借助计算机解决实际问题的重要一步。但是,从教师的教学以及学生的学习,都没有得到很好的重视。主要体现在:教师在程序设计课程的讲授时,对算法分析与设计讲解得不够,只偏重于程序语句的解读,忽视算法设计过程的讲解和训练;而学生也只满足于课程简单算法的代码描述,不重视算法的分析与设计过程的练习,结果造成学生仅仅掌握了一些简单问题的编程,而对较复杂的实际问题的程序设计则缺乏独立的解决能力。

(2)学生读程与编程量少,训练不足。目前,学生阅读程序量很少,主动找相关程序来阅读理解的不多,大部分只是为了应对作业去查找一些相关的代码。任课教师对学生有阅读程序的要求,但真正对学生进行训练和严格要求的却不多,结果有部分学生看不懂常用算法的代码或复杂一些的程序。学生在校期间,编写的程序量少,大部分学生只满足于完成老师布置的编程作业,没有再多做练习,有些学生四年时间编写的代码总量都不到5000行。但是,按照最基本的要求,计算机专业学生的编程至少应达到20000行到50000行以上的程序量[2]。因此,学生的软件系统设计能力不足,这是一个主要的原因之一。

(3)软件综合设计能力不足,接触的案例少。软件系统设计是一个综合设计过程,要求学生掌握软件工程、数据库、面向对象程序设计等多方面技术和具有综合应用能力。但是,学生掌握的是分散的、各自独立的技术,综合多门技术的软件设计能力明显不足,有些会做系统的界面,却不会设计数据库;有些系统界面和数据库都建立了,却相互不能连接;有少数学生直到毕业还设计不出一个能够正常运行的简单系统。原因是重视了各门课程的教学,而忽视了能够提高学生软件综合设计能力的案例分析课程和综合设计实践课程的设置与教学。学生接触的软件系统案例少,没有得到较为完整和系统的训练。

(4)参与软件系统开发的机会少,缺乏应有的锻炼和实践经验。很多学生的软件系统设计水平仅停留在模仿教材的例子上,还谈不上设计出能够解决实际问题的系统。这与学生参与软件公司项目开发或教师项目开发的机会少有很大的关系。目前,学生到软件公司实习时间短,公司不愿意将开发项目这样重要的任务交给实习生来完成,学生没有机会直接参与公司的项目开发,有些能参与,也只能参与其中的一小部分;教师承担的开发项目能够接纳的学生数量有限,不能满足学生的实践需要。因此,学生缺乏软件系统设计的实践经验和应有的锻炼。

2培养学生软件系统设计能力的方法与途径

2.1读程与编程能力的培养

我们根据学生读程量少,掌握常用算法代码不多的情况,在编程基础课程的教学中,采用“读程目标管理”方法。要求任课教师在一门课程的教学中,必须为学生提供500个以上的程序作为阅读材料,并对学生的读程能力进行训练。要求学生必须阅读并理解500个以上的程序,学生通过阅读掌握一些常用的算法。课程结束时,教师对学生进行单独的读程理解考核,如:给出一个程序,要求学生在规定的时间内讲解出程序实现的功能或运行的结果。考核合格,给一定的学分,不合格,可以重考,直至合格为止。对于软件系统设计课程,教师为学生提供1~2个实用系统的原代码,作为案例让学生阅读理解;在此基础上,要求学生阅读不少于5系统的原代码,以掌握面向对象软件系统的基本架构、功能调用以及常用功能子程序的算法设计与实现。在扩大程序和系统原代码阅读量的同时,不断提高学生的编程能力。我们采用“编程目标管理、逐门课程分解”的方法,将编程总量按照开设的语言设计课程的重要程度逐门分解编程量。如:假设要求每个学生四年的编程总量为至少要达到20000行,最好能达到50000行以上。则根据开设的C、C++或C#、、SQLServer、案例分析与设计等程序设计系列课程,要求学生每门课程的编程量都在5000行以上,最好能达到10000行以上。此外,还通过组织学生参加系级的、校级的、省级甚至部级的程序设计大赛等形式,促进学生编程能力的提高。

2.2算法分析与设计能力的培养

在开设的专业基础课程中,C语言程序设计、数据结构等课程对于培养学生的算法设计能力至关重要。我们采用“对算法步骤描述再用标准语言编写代码实现,阅读程序然后归纳出算法的步骤”正反双向训练的方法,以提高学生的算法设计能力。教师在课堂教学中,必须严格按照程序设计的过程和方法进行讲解,对解决的问题首先要做好算法分析与设计,然后再用标准语言进行描述,并在学生的作业或编程练习中严格要求,使学生逐步养成编写代码之前,先作好算法的分析与设计,逐步培养学生解决实际问题的能力和方法。通过读程训练,反向要求学生描述程序实现的步骤,归纳出程序实现的功能。通过这样正反两方面对学生的算法分析与设计进行训练,学生的算法设计能力就会得到切实的提高,从而促进学生编程能力的提高。

2.3软件系统设计能力的培养

软件系统设计是指在面向对象程序设计语言基础上,根据软件工程的设计原则、设计模式以及模块化的设计方法,设计出一个比较完整的软件系统构架、前后台界面、各模块之间的调用关系以及各功能子模块的详细设计。我们通过以下三种途径,提高学生的软件系统设计能力。

(1)采用“案例教学与学生综合设计训练”相结合的方法,给学生开设《案例分析与设计》课程。通过实用的系统案例,对C/S和B/S系统的总体构架、前台、后台设计、各模块之间的调用、各功能子模块的详细设计进行逐项训练。在此基础上,要求学生参考系统案例进行软件系统的综合设计练习。根据实际的应用,设计出2-3个软件系统,并编程实现。

(2)采用“导师制和项目驱动”方法,通过软件系统开发实践活动,培养学生的软件综合设计能力。如:我们制订了“两个一”工程实施方案,实行本科学生导师制。导师让学生参与自己的项目研究与开发,或给出具有解决实际问题的项目,以项目方式驱动学生进行软件系统的设计并实现。学生在导师的指导下,在毕业实习前,利用课余时间设计出“1个”软件系统和“1个”网站,并以此作为衡量学生能否参与毕业实习的条件,以此促进学生软件系统设计能力的提高。

(3)采用“学生参与教师的项目开发和到软件公司实践”相结合的方法,增加学生的实践经历,提高学生的系统设计实践能力。我们鼓励有项目的老师吸收本科学生参与项目的设计与开发,使学生尽量接触到真正解决实际问题的项目开发过程中。另外,我们还与多个软件开发公司签订“学生实习实训示范基地”协议,建立长期稳定的学生社会实践基地。学生到软件公司实践基地分两次进行,第一次由公司进行项目设计与开发过程的培训,第二次是实习,学生根据公司的安排,参与到项目设计开发的各个开发小组,参与具体的项目开发工作。我们通过这样的方法和途径,不断提高学生参与软件系统开发的机会,使学生获得更多的锻炼和实践经验,提高学生的软件系统设计能力。

3实践与效果

为了提高计算机本科专业学生的软件系统设计能力,从2006年开始,我们在计算机科学与技术专业的多个年级按照上述方法和途径开展教学活动,对学生的读程、编程以及综合设计能力进行训练,取得了较好的成效,学生的读程和编程能力得到了进一步的提高。在提高学生的软件系统设计能力的实践活动中,我们从如下三个方面开展实践活动。第一,在学生中开展“两个一”工程活动,实行本科学生导师制。2006、2007、2008级的计算机本科专业学生共计210多人、教师80多人次参与“两个一”工程的活动,设计与开发出300多个初级的软件系统或网站。其中,有些学生设计开发的系统或网站具有较高的实用价值和实用性。第二,派出8批次共160多名学生到实习实训示范基地进行实训和实习,直接参与了软件开发公司的软件项目设计与开发。第三,组织部分学生参加省级、部级的计算机应用比赛、程序设计比赛,网页设计等比赛,其中,8人次获得部级的奖项,16人次获得省级奖项。通过几年的实践,学生的软件系统设计能力普遍提高,学生的毕业设计完成得比以前更好、更完善,设计的系统功能更强、界面更漂亮、更实用。学生的就业率在不断提高,能够应聘到软件开发公司工作的学生也在不断增多。我们提出提高学生的软件系统设计能力的方法与途径,通过多年的实施与实践,取得了较为理想的效果。

4结语

笔者对本校计算机科学与技术本科专业学生的软件系统设计能力进行研究与分析,根据学生存在软件系统设计能力不足的问题,提出了提高学生软件系统设计能力的一些方法与途径,并在教学中实施和落实,取得了较好的效果。我们将对它们作进一步的完善和凝炼,向更多的专业推广。