摘要:本文根据国外软件工程本科教学的现状,指出我国软件工程本科教育改革的必要性,同时提出了软件工程教育改革的措施。
关键词:软件工程;本科教学;教育模式
中图分类号:G642 文献标识码:A
随着计算机在各行各业的广泛普及,计算机软件人才的需求不断扩大。尽管每年都有大量的软件方面的本科毕业生涌入社会,但真正掌握软件技能、方法的人才却是极度短缺。其主要原因是软件工程概念如何在实际项目中应用并没有在软件工程本科教学过程中体现出来。这也是当前高校软件工程教学亟待改革的一个重要方面。
1国外软件工程本科教学
国外对软件工程本科教学的研究是多方面的。有一些学校开展实验室式教学,且整个教学过程是以面向对象方法出发,使学生所获得的经验迎合了社会的需求。通常,一个学生所具有的软件开发项目经验是来自于在实际的软件开发过程中的角色参与。为了使学生毕业后立刻带入到公司的开发人员队伍中,学生不仅仅要学会软件研发的生命周期、软件工程方法、还要参与到软件项目组中进行实际的训练。现以华盛顿州的乔治敦大学计算机科学学院为例,来看看国外的软件工程本科教学的改革是如何进行的。
1.1软件工程本科教学改革概况
乔治敦大学的计算机科学学院将软件工程本科教学分为两个学期进行。第一学期的软件工程教学内容是软件设计基础,这一阶段的软件工程教学被称为软件工程I(software engineering I)。第二学期的软件工程教学内容通过实际或虚拟项目让学生以项目组的方式参与其开发过程,在该过程中理解并应用软件工程概念。这一阶段的软件工程教学被称为软件工程II(software engineering II)。
1.2软件工程教学的第一阶段
在软件工程的第一教学阶段中,其主要讲授的课程内容是贴近软件设计的。在课程的开始主要介绍了软件工程的发展历史及简介,然后讲解面向对象设计、需求分析、用例图(use case)、对象模型技术、Rational统一过程、UML技术、面向对象设计模式等一系列内容。在此期间,教师将下一阶段学生所要完成的项目内容介绍给学生,以便于学生有针对性的学习课程内容。
从其教学内容可以看出,国外的软件工程教学内容是紧跟社会需求的,是以面向对象的设计与实现为其主要教学内容,而不是以面向过程的设计方法为主。此外如UML技术,Rational统一过程等教学内容都是学生在实践过程中要用到的内容,可见教学是充分为需求服务的。
1.3软件工程教学的第二阶段
该阶段的教学主要是让学生通过实际的发过程获取真实的经验。这一阶段的课程安排在16个教学周内完成,每个教学周安排4学时该课程。前四周的教学内容是当前软件体系结构的介绍及对软件设计方法的回顾,这部分教学内容是对软件工程第一阶段学习内容的复习。接下来要将学生划分为分析小组、软件设计小组、软件开发小组及数据库小组。每一个小组都有一名组长,以负责该小组工作的安排,并要以甘特图的方式向教师汇报小组的工作进度。小组中的每个成员也要有固定的角色,以完成相应的工作任务。教师在此期间主要扮演用户,以便于及时向学生提供需求,让学生建立正确的问题定义及需求分析,以便于进一步的分析与设计。
在基于关键路径的软件开发生命周期过程中,每个小组的行为都会影响到项目的开发进度,影响到里程碑的建立,因此要求学生一定要在规定的人员及时间内完成阶段性任务,要让学生意识到关键路径上每项任务的重要性。由于按软件工程理论来设计软件时,各个阶段所需人员不同,而且每个角色的工作任务量在研发过程中也会发生变化。例如项目的需求确定后,即进入设计阶段,需求分析角色的工作量立刻减少。为了使各角色的工作量平衡,对每个角色在其主要工作分阶段从事其它辅助工作,以使学生在整个的软件设计过程中一直处于工作状态,使学生了解各个阶段的关联及前一阶段研究成果对后一阶段工作的重要性。
2我国软件工程教育
在我国,高校计算机本科教育的目标定位于培养综合型、应用型人才,为社会提供训练有素的专业工程师。软件工程是计算机本科教育中惟一涉及工程化管理和技术的专业必修课。但许多院校对该课程的教学是重理论而轻实践的。学生因缺乏切身的体验而感到理论抽象,难以理解,且动手能力差,不知道如何将软件工程技术应用于实际项目中,这与国外的软件工程教学形成了鲜明的对比,也说明了我国软件工程救生衣的问题所在。
那么如果提高学生的实践能力呢?为此,有部分学校展开了实例化教学,小组式教学或是1:1教学模式的研究。其最终目的就是希望学生能真正理解并运用软件工程的方法、技能,使学生动手实践能力加强。这些教学方法的研讨是非常有必要的。但与此同时,我们应清楚的意识到中国软件工程课程教育理论课与实践课比例失调的现状。实践课相对过少,要提高学生的应用能力,必须要对软件工程的课程体制进行改革。我们可以结合国外软件工程教育模式,结合中国学生特点,探索出具有中国特色的软件工程教育模式。
笔者认为软件公司与学校联合进行软件工程教育是提高学生实践能力的较好方法。学校可以与国内的一些软件公司建立良好的合作关系,公司可将学生签约后的实训课程提前到学生学习软件工程课程时进行。在具体实施时可从公司对人才的要求、学生的实际能力与就业意向双方面考虑,尽可能使公司培训出的优秀学生愿意到公司工作,公司也愿意接收其培训的对象。这过程中需要一定的合同约定以约束双方的权利与责任。在培训过程中,学生可实际参与到一些项目的设计与实现过程,将软件工程理论应用到实践操作过程中,做到学有所有。
此外,软件工程课程的改革还要从任课教师这一方面着手。现在有很多软件工程教师是“理论上的巨人,实践中的矮子”。这些教师缺少实际项目的研发经历,所以在授课过程中造成理论脱离实践的现象。为了使教师在授课过程中,讲授的理论有实践经验的支撑,应让任课教师参与到实际项目的研发过程中,组织教师深入公司学习,或是请资深人事到学校给教师培训,使教师的实践能力过硬。国外的软件这一点上做得就非常好。担任软件工程课程的教师往往都是大型软件项目的管理者或是技术员,他们有着丰富的经验,而这些经验使课堂教学具有感染力与说明力。
3结束语
中国的软件工程教育与国外的软件工程教育相比,还有一定的差距,这使高校培养出来的软件人才还要经过一段集中的公司实训锻炼,才能真正进入工作角色,担任起软件设计工作。因此,可以考虑公司与学校联合教育,使公司的培训提前进入学校,使学生的学习内容更贴近于实际的社会需求,以便于创造出中国式的两阶段软件工程教育模式。
参考文献
[1] 张效祥. 计算机科学技术百科全书[M]. 北京:清华大学出版社,1998.
[2] 张海藩. 软件工程[M]. 北京:人民邮电出版社,2005.
[3] 骆斌等. 软件工程专业的课程体系设计[J]. 中国大学教学,2005,(1).
[4] 沈备军, 顾春华. 软件工程教学模式的研究和实践[J]. 计算机教育,2005,(1).
[5] 杨青, 刘洪星. 软件工程学科的特征及其课程体系设计原则[J]. 武汉理工大学学报,2005,(2).