摘 要:指出了软件工程课程教学的内容、教学原则及教学方法,进而实现理论教学与实践教学的有机衔接,教师与学生的紧密合作以及学生毕业与工作的平稳过渡。多年教学实践证明了该教学模式的可行性和有效性。
关键字:软件工程、教学方法、教学原则、教学效果
1 引言 经过几十年的发展,软件产业取得了巨大的成就,软件应用已经渗透到各个领域。但严峻的就业形势与软件人才特别是软件中高级人才的匮乏形成了鲜明对比。2010年1月22日人力资源社会保障部召开的新闻发布会,称2009年我国高校毕业生就业率为87%,失业率排在前10位的专业涉及计算机科学与技术。受金融危机影响,裁员的声音越来越高,但中国软件人才供需错位的状况并没有得到缓解。软件开发和管理人才紧缺的状况非常严重。数据显示,目前软件开发行业人才需要量已经超过30万,并且仍在以每年20%的速度增加,其中初级软件开发工程师的需求量就高达20万人,软件服务外包、3G研发的人才缺口很大。中国软件协会秘书长胡昆山表示,现阶段我国软件开发基础人才不足,已成为制约我国软件产业发展的瓶颈。我国500多所院校开设了计算机专业,培养方式各具特色,但如何培养出优秀的软件开发人员或管理人员,是教学中值得思考的问题。
本文指出了软件工程课程教学实践中涉及的一些普遍问题,结合该教学团队的经验、切身体会及教学效果,分析了当前软件工程课程教学过程及方式的不足,给出了软件工程课程教学的原则及方法,提出了适用于当前环境的软件工程教学的新思路新方式。现有教学效果从一定程度上证实了该教学模式的可行性和有效性。 2 教学内容体系及目标 ACMCC2001草案把软件工程学分为七大核心专题:软件过程和软件生命周期模型、需求分析、软件设计、测试和评估、软件进化、软件项目管理、软件工具和环境。软件工程教学内容的选择要注重基础性、成熟性、先进性和系统性,使学生得到全面、系统、规范的软件工程实践训练,培养学生创造性的软件设计能力和综合分析、解决问题的能力。如杨芙清院士所说:“软件工程教育本科阶段重点是培养软件工程学科的基础知识、基本的实践能力”。重点掌握软件的需求分析、软件的概要和详细设计及软件的测试与维护等内容。通过本课程的学习,能用软件工程的原则、开发方法与技术实现一般规模项目的开发与管理。
社会对软件人才具有专业化、层次化和国际化等要求,软件人才的培养向着高端化、实用化和复杂化的方向发展。为了适应现代软件开发要求,应使学生具备科学的世界观,掌握科学方法,具有扎实的理论基础,熟悉使用软件开发及管理工具,参与项目,接受良好的工程训练,拥有良好的职业素质。 3 教学实践原则及方法 软件工程课程是一门综合性和实践性较强的课程。现有的教学模式多样,对于软件工程课程的教学,多以课堂讲授为主,教学内容多注重理论而轻实践,教学内容抽象枯燥。对于缺乏实际项目软件开发经验的学生来说,学习难度较大,教学无太多实用价值,进而影响了教学质量和效果。切实加强软件工程教学的创新与改革至关重要。
软件工程的教学涉及理论教学和实践教学,教学目标的定位,要立足于学生、学校及社会的条件与环境。教学质量与效果好坏取决于教学体制、教学过程及教学方法等。软件工程涉及的理论和方法,是从众多的软件开发实践中总结出来的。要改变那种抽象枯燥的教学,教学过程应理论联系实际,循序渐进,要注重因材施教;要反映时代的要求,要注重新知识的引入;教学方法恰当,注重生动形象(比如用图形动画展示、用比喻类比等方法刻画,用经典事件故事等来感染),调动学生的兴趣,使课程更具活力,气氛轻松愉快。 3.1 培养目标定位 软件开发过程及管理涉及数学、经济学、心理学、工程学、管理学、美学等方面的知识。要培养学生在沟通、交际、管理等方面的综合能力和职业道德素质。在学习软件开发的过程中,要明确培养的目标,通过本课程的学习具备相应的能力和素质,从而能胜任软件开发过程中所担任的角色,如项目经理、质量监控人员、测试人员、系统分析员、系统设计师、程序员、维护人员、咨询人员等。实现准确的定位,最终成为社会需要的认可的综合素质较高的软件人才。 3.2 理论教学 知识、能力和素质是相辅相成的,知识是素质形成和提高的基础,是能力的载体,能力是知识和素质的外在体现。要培养出具有高素质、综合能力强的软件人才,必须加强知识特别是理论知识的学习。该课程理论学习中,要以案例为导向,即时引入新知识新技术,重视双语教学的作用,挖掘学生的能动性。
(1)经典案例导向的理论教学
案例教学法是哈佛大学在1910年就开始推行的一种教学方法,已在教学中得到广泛的应用。现有的软件工程教材中涉及的案例,存在如案例不连贯、项目规模及题材类型的选定不合理等问题。选择案例时,要选择学生熟悉的、规模中等、对领域知识性要求较低的现实系统。如图书管理系统,课程注册系统、教学评价系统、学籍管理系统、资产管理系统等贴近学生生活的领域。选择特定的案例,自始至终贯穿于教学,才能体现全面性和整体性。教学中要站在不同立场上(软件开发人员角色)讲授相关的内容(知识、工具、方法及管理等)。
在教学过程中根据学生的实际掌握情况,要有针对性,对重点内容要作深入的剖析,注重启发式教学。案例教学方法可以提高学生的学习兴趣和课堂教学质量。通过对案例的学习,学生可以很自然的过渡到相似系统的开发工作中去,将理论知识及时付诸于实践,达到了学以致用的目的。
(2)注重新知识的引入,紧跟软件行业发展步伐
当前软件产业及技术发展很快,要注重新知识(技术、标准、工具、管理模式等)的引入(现有的教材更新慢且这些内容不是该课程核心部分)。要跟上技术发展的步伐,了解国内外规范化的软件开发方法,熟悉新工具的应用,实现与软件开发企业有机对接,与人才需求市场接轨。新知识以专题化形式展示,注重介绍流行的且成熟的技术、工具及相关的国际标准,拓展学生的视野、明晰软件开发和发展的方向。如在讲授面向对象分析与设计思想时,补充UML技术及相应工具Rose、Visio等;在讲软件项目管理时,引入CMM模型,项目及配置管理工具PROJECT和VSS等;介绍CORBA体系、Web服务、软件的重用、软件构件技术、agent技术、网格技术、分布式处理技术、普适计算、框技术、云计算等技术。大规模复杂系统的开发涉及的问题相继出现,带来了对原有软件工程原则、假设、方法学及管理的挑战。
(3)双语教学
双语教学是指教学过程中使用两种语言作为媒介,主要目标是培养和提高学生运用外语的能力。许多教学工作者提倡双语教学,但通过实践及毕业生反馈,双语教学有利有弊。(1)现有的开发工具和开发资料许多以外文的方式呈现,随着国际化进程加速,要求软件企业及成员快速融入进去,实现自然沟通。通过双语教学,可以加强了外语语言能力的发展,避免了外语教学与专业教学的脱节,实现学与用的无缝对接。(2)双语教学需要学生和老师都具备较强的英语听、说、读、写能力,中国大学生虽从初中甚至是小学就开始开设了外语,但要实现有效便捷的沟通娴熟的应用还很困难。采用外语教学难度比母语更大,而软件工程比较抽象,理论性强,理论授课学时都在40学时左右,在有限的学时段采用双语教学,对一般普通院校的学生及老师来说还有一定的困难。