张忠林
文章编号:1672-5913(2009)02-0053-03
摘要:本文介绍了我院针对软件工程传统教学模式的弊端,以项目为驱动,结合案例教学、团队合作等教学方法,使学生能够系统地掌握软件开发的过程、方法和工具,从而具备计算机软件系统开发和维护的能力,为学生将来的工作打下坚实的基础。
关键词:软件工程;教学改革;项目驱动教学模式;教学方法
中图分类号:G64
文献标识码:A
1引言
软件工程发展非常快,与其形成鲜明对比的是,近几年来软件工程人才的培养却陷入了停滞不前的状态,致使软件工程这门学科的发展与软件工程人才的培养严重脱节。导致这种状况的原因可归结为:(1)高校的教学模式单调;(2)教学内容落后。目前大多数学校采用的教学方式重理论、轻实践,以教师讲授为主,学生只是知识的被动接受者[1],学生接受起来比较困难。导致学生学习软件工程时难以深入体会和把握软件工程知识的精髓和本质,更不知道如何运用软件工程的技术和方法来开发、维护软件。
2课程特点
软件工程的定义:将系统的、规范的、可度量的工程化方法应用于软件开发、运行和维护的全过程及上述方法的研究[2]。从定义可以看出软件工程是一门集方法性、思想性、标准性和规范性于一身的学科,包含大量在长期的工程实践中总结、提炼出来的原则和经验,以及规模庞大、操作复杂的实践要求。软件工程研究的范围很广、涉及的领域很多,内容十分丰富,很关键的一点是软件工程还很年轻,尚未形成成熟的教学模式,教材也少有提供较为成熟的设计、训练和实践内容。软件工程的这些特点导致了软件工程的教学面临着诸多困难。
3教学改革方案
对软件工程教学模式进行改革的目的是为了让学生能够积极主动地参与到软件工程课堂学习,激发学生学习的热情和兴趣,进一步提高课堂教学效果,提高学生的实践能力,以期培养高素质的软件工程专业人才。以上分析了软件工程课程的特点,并列举了教学中存在的一些问题,高校应结合自身的现实情况,以社会需求为动力,积极创新,探索适合自己的软件工程教学方式。本文立足于培养优秀的软件工程人才,针对软件工程传统教学模式的弊端,对该门课程的教学改革进行了研究,认为课堂教学模式在打牢基础、提高实践能力的方针指导下,以项目为驱动,结合案例教学、团队合作等教学方法,根据社会需求大胆尝试改革软件工程教学模式。让学生系统地学习软件开发过程、方法和工具,理解软件开发的原理,掌握软件开发的技术,从而具备软件开发和维护的能力,为学生以后的工作打下良好的基础。
3.1教学方针
(1) 打牢基础
软件工程是总结于实践的抽象理论,是对软件开发的总结和指导,涉及到计算机技术、工程学、管理学等多领域的知识[3]。这就要求我们在做好软件工程这门课程教学的同时,还要加强计算机科学与软件基础理论等其他计算机专业课程的教学。而且,数学是所有理工科的基础,对软件工程也同样不例外,没有好的数学基础,就不可能学好软件工程。所以,必须重视数学基础教学,另外,培养学生对问题空间分析和建模的能力,以及运用算法求解问题的能力也同样重要。
(2) 提高实践能力
提出本方针是因为:(1)软件工程课程不涉及具体软件项目,学生在学习过程中很难将抽象的理论与实际软件项目联系起来;(2)教师在实际授课过程中采用传统的单一的课堂讲授方式,忽视对学生实践能力的培养;(3)学生在毕业以后无法快速地适应自己的工作。这有违高校的办学宗旨。
要更好地贯彻本方针需要:(1)在教学过程中以具体的项目为驱动,培养学生将所学理论知识应用于实践的能力,体验项目开发的规范与原则,积累宝贵的项目开发经验;(2)通过案例教学让学生对实际的项目开发有最初的印象,提高学生的学习兴趣(目前大型的软件公司都有自己一套成熟的软件工程理论,他们之间有共性但又有不同,在课堂上挑选典型成功的案例让同学们揣摩学习,找出失败的案例给同学们以警示[3]);(3)通过团队合作教学方法培养学生的团队意识。
3.2以项目为驱动的教学模式
以项目为驱动的教学模式,目的在于提高学生在今后工作中需要的计算机专业技术技能,让学生在项目实现过程中体会团队合作的意义,培养与其他学生交流、合作的能力,获得项目开发的经验,同时不断提高学生的创新能力。重点培养学生将所学理论知识应用于实践的能力,体验项目开发的规范与原则,积累宝贵的项目开发经验,培养学生的团队意识。
如果情况允许,鼓励学生参与到教师的实际项目中,这样不仅可以让学生尽早接触软件工程的实际问题,了解软件开发的全过程,提高实践能力,增强对软件工程技术、方法和原理的理解,使学生切实感受到该课程的重要性,而且有利于培养学生从事该专业工作所必需的职业道德和行为规范。本文中将以宠物商店电子商务网站为例,介绍教学改革的具体实现
3.3教学改革方法
(1) 案例教学
考虑到软件工程课程特点和教学中存在问题,课堂教学时采用了案例教学,改变教师主导、学生被动接受的教学方式为学生为主导、而教师辅助学生学习的教学方式。授课过程中以案例为背景,以教材为基础。首先,以具体的相关联的案例为引,诱导学生自主学习、独立思考、相互讨论、自由表达观点、对案例提出质疑、从案例中分析应该理解和掌握哪一些理论知识等;最后,由教师对学生思考和质疑探究中无法解决或难以理解的问题给予指导和建议。这种方法可以实现启发式教学,能够极大地提高学生的学习兴趣,实现教与学的相互促进、相互增长,而且它更是实现了理论联系实际。案例教学法在软件工程教学中的应用将在更大程度上激发学生的学习兴趣和参与的积极性。同时,案例教学也有利于学生掌握理论知识,并运用知识解决软件开发中的实际问题。
(2) 团队合作法教学
每个学期挑选一个较为大型的项目,模拟实际工作中的角色给同学们分工,要求学生按照软件开发真实流程做出这个项目,每个项目最后演示他们的成果,其他小组作为裁判给出评价。该方法虽然操作复杂但效果极为显著,实践证明,这是让学生学会合作的最好的方法。在实际操作中还可以接受真实的软件开发项目,让学生在实际工作中体会团队合作的意义。
以上方法总的出发点是夯实理论基础、提高学生兴趣、增强社会实践、给学生相互合作、相互信任的机会,当然这些方法还需要在实践中不断磨合和优化。
3.4实现过程
以项目为驱动教学模式有两条主线组成,一是上课,既是教师教课的过程,在此教师为学生传授软件工程的相关理论知识;二为项目实现过程,通过实现具体项目来提高学生的动手能力。两条主线同时进行,即重视实践能力,又不放松对理论知识的把握。以宠物商店电子商务网站为例,下面具体介绍本教学方案的具体实施流程。
3.4.1准备
(1) 将班级按“项目小组”形式进行分组,每组不得超过6人;
(2) 每个项目小组成员按照真实项目开发过程进行分工;
(3) 项目中的每项任务要落实到人且规定该任务的起止日期和时间;
(4) 由老师为每个小组准备不同的项目(项目必须根据企业实践产生)。
3.4.2授课
课程根据软件生命周期划分为六个阶段,分别为可行性研究与计划制定阶段、需求分析阶段、软件设计阶段、实现阶段、测试阶段、运行和维护。课程的一个阶段也是教学过程中的一个阶段,每个阶段结束给学生一定的时间来实现PetStore系统中相关内容。讲课过程中教师以一个具体的程序案例引入,由学生自己理解这个程序,发现其中优点与不足。对于这段代码每个人的理解肯定不同,采用辩论方式,让学生交流自己的不同观点,以期从讨论中发现自己不足和别人的优点,同时也能活跃课堂气氛。这一步最关键的是怎样让每个学生积极地参与到讨论中来,建议采用先小组讨论再集体讨论的方法,由教师在旁边指导。讨论结束后,由教师总结本次讨论和讲解相关概念。学生在课后也写出总结,以便学生充分理解和掌握课堂讨论内容。
3.4.3项目实现
(1) 可行性研究与计划制定阶段:小组成员模拟现实中软件开发场景,确定PetStore系统的开发目标和总的要求,给出它的功能、性能、可靠性以及接口等方面的可能方案,制定完成开发任务的实施计划。
(2) 需求分析阶段。小组成员深入了解和分析需求,根据自己的经验和需求用Word或相关的工具再做出一份文档系统的功能需求文档,清楚列出系统大致的大功能模块,大功能模块有哪些小功能模块,并且还列出相关的界面和界面功能。例如PetStore可以分为用户、宠物商店和维护库存数据库三大模块,每个大功能模块又可分为若干小模块。宠物商店需要用户登录界面、管理员登录界面、客户选择宠物界面等。
(3) 软件设计阶段:项目小组在反复理解PetStore系统需求的基础上,给出软件的结构、模块的划分、功能的分配以及处理流程,并编写设计说明书。在系统比较复杂的情况下,设计阶段可分解成概要设计阶段和详细设计阶段。
(4) 实现阶段:小组成员根据实际说明书中所列出的功能一个一个地编写,把软件设计转换成计算机可以接受的程序代码,既完成源程序的编码。同时,编写用户手册、操作手册等面向用户的文档,编写单元测试计划。
(5) 测试阶段:小组成员为PetStore系统设计测试用例,检验软件的各个组成部分。并编写测试分析报告。由小组成员模拟现实客户来使用系统,并一个一个的确认每个功能。
(6) 运行和维护阶段:将已交付的软件投入运行,并在运行中不断地维护,对发现的问题进行修改,并不断为系统添加功能来完善系统。
此教学模式具体实施过程中应结合校园网络。现在高校的校园网络已经普及,校园网成了学生与学生、学生与教师之间交流和学习的一个平台,为学生的学习带来了极大的方便。通过在校园网上开通软件工程论坛、FTP站点等,为学生提供一些与教学计划相关的文件和资料,最主要的是提供一些国内外优秀的软件工程文献的电子版本。学生还可通过软件工程相关论坛跟其他学生或者老师及时交流一段时间的学习收获、对某一个问题的体会、请教自己不懂的问题等。与校园网络的结合使软件工程的教学变得更加灵活。
此外,教材是教学内容的载体,现今软件工程的发展日新月异,而教材却存在一定的滞后性。这就要求我们在教学过程中需要参考国外已经比较成熟的教材以及软件工程最新成果以弥补教材的不足[4]。不过这种补充终究不是长远之计,应当将教材的建设纳入软件工程教学改革的研究范畴,在国内外文献、资料以及软件工程最新成果的基础上编制适合自身的教学用书。而且,要善于借助各种形式拓展教学内容,使学生在现有条件下能够掌握比较先进实用的知识。在软件工程的课程讲解过程中实时地穿插关于软件工程最新研究成果的专题讲座。同时,根据具体条件考虑与业界公司联合,安排学生与企业员工进行交流,邀请企业技术专家参加讲座,组织学生到相关企业实习参观等。通过以上方法和途径,使软件工程课程内容跟紧学科的最新发展,更贴近社会需求。软件工程课程不仅涉及软件开发的理论和技术,而且涉及项目管理,因此软件工程教学承担了培养既懂工程化管理又懂技术的复合型人才的任务。因此我们必须制定相应的教学策略,讲授软件工程的原理、方法、过程的同时,应该重视技术管理的相关知识的传授,包括项目管理、质量管理、配置管理、过程管理等方面[4]。
4结论
目前软件工程领域中各种技术快速发展,而软件工程传统教学模式却存在严重滞后的弊端。所以,通过积极改革现有的教学体系,完善和丰富教学模式、紧跟软件工程的发展步伐,以项目为驱动,结合案例教学,加强学生实践能力的培养。这样经过一系列学习,使学生能够系统地掌握软件开发的过程、方法,培养计算机软件系统开发和维护的能力,为学生将来的就业和工作打下坚实的基础,使其成为社会需要的高素质软件工程人才。
参考文献
[1] 温春友,敖广武. 对软件工程课程自底向上教学模式的探索[J]. 辽宁高职学报,2008,3(3):27-28.
[2] 齐治昌,谭庆平,宁洪. 软件工程(第二版)[M]. 北京:高等教育出版社,2006.
[3] 李红梅,卢苇,张红延. 软件人才培养模式的探索与实践[J]. 计算机教育,2008,(8):114-115.
[4] 张舒,陈昱. 软件工程课程教学改革研究[J]. 福建电脑,2008,(6):196-200.
Software engineering Teaching Reform based on project-driven
ZHANG Zhong-lin
(School of Electronic and Information Engineering, Lanzhou jiaotong University, Lanzhou 730070, China)
Abstract: For the drawbacks of traditional teaching model of software engineering, this paper, based on project-driven, is combination of CASES teaching, TEAM teaching methods, and so on. Through the study, students can grasp the Systematic knowledge about process, methods and tools of software engineering. Thus, students have the ability of computer software development and maintenance of the system. And it lay a solid foundation for students to work in the future.
Key wards: Software Engineering, Teaching Reform, Teaching Mode based on Project-driven, Teaching Methods