浅析当前大学计算机软件工程课程改革
2009-09-30明勇
明 勇
摘要:《软件工程》是计算机科学与技术专业软件方向核心课程之一,是指导计算机软件开发和维护的一门综合性课程,是计算机专业学生必须掌握的技能之一,因此,提高软件工程课程的教学质量对学生的今后的学习和工作都具有极其重要的意义。该文结合教学实践,对大学计算机软件工程课程改革进行了探讨。
关键词:软件工程;大学教育;实践
中图分类号:G642文献标识码:A文章编号:1009-3044(2009)34-9751-02
Analysis of the Current Curriculum Reform of Computer Software Engineering
MING Yong
Abstract: "Software Engineering" is the software of Computer Science and Technology, one of the direction of the core curriculum, is to guide computer software development and maintenance of a comprehensive curriculum, is a computer science students must master one of the skills, therefore, improve the software engineering courses teaching quality of the students for future study and work of great importance. In this paper, teaching practice, on the University's computer software engineering curriculum reform were discussed.
Key words: software engineering; university education; Practice
软件工程是一门学科同时也是一门科学,软件工程课程上所学习的知识将影响学生以后的职业生涯。“软件蓝领”,就是指那些至少掌握一门开发语言或开发工具,主要担负编程、录入、测试等大量的基础性技术工作,包括客户服务、程序开发、商业策划、媒体编程等,所从事的任务与软件工程中的需求分析、系统分析、概要设计无关,但对软件工程化开发的过程和规范有一定认识的编程人员。他们掌握的计算机理论知识可能不很充足,但对一般的编程任务都能较快、较好地解决,且具有良好的开发潜能。他们对于进行新产品、新技术的探索工作,可能还不胜任,但足以胜任一般开发任务。在一个大型软件开发项目中,需要通过他们将软件的设想转化成现实的产品。简言之,“软件蓝领”就是能够根据流程图进行编码,在IT高技术平台上熟练从事大量重复性操作的的职业软件工程师。
1 软件工程概念简介
1983年,IEEE(Institute of Electrical& Electronic Engi-neers,电气与电子工程师协会)给出了定义:软件工程是研究和应用如何以系统化的、规范的、可度量的方法去开发、运行和维护软件,即把工程化应用到软件上。简而言之,软件工程就是将软件开发作为一个工程项目来进行管理,将软件开发过程细化为若干合理的子项目,对软件开发过程进行科学的管理,从而生产出高质量的软件产品。软件生存期是指软件从孕育到停止使用的全过程。软件生存期包括6个阶段工作,即制定计划、需求分析、设计、程序编制、测试及运行维护。软件工程是软件由“手工作坊”发展成为软件开发的“工程化”管理的必要手段,是软件危机得以解决的必要途径。“工欲善其事,必先利其器”,软件工程是软件公司“利其器”的必要手段,所以在大学阶段计算机专业开设软件工程相关课程是很必要的。
2 软件工程课程特点
2.1 抽象性强
软件工程的方法、原理和技术是位于所有具体项目之上的,并没有涉及某个项目的具体信息,也就是说,它们是抽象的。软件工程的理论与学生的认知水平差距较大,往往要在学生经过几个项目的失败后,才能理解软件工程的原理,所以针对于在校学生来说,软件工程是抽象的,是计算机课程中的“政治”课。
软件工程是计算机科学与技术及相关专业的一门十分重要的专业课程,其技术、方法和原理等十分复杂,不易掌握。
现今随着软件项目的复杂化和软件公司部门分工的明确化,要求软件项目的管理者、开发人员和测试人员以及质量保证人员都必须掌握软件工程的技术、原理和方法。软件工程课程的教学效果就直接决定了学生毕业后从事软件实际项目的管理和开发的能力。
2.2 对大型项目的总结
软件工程是对多年的大型软件开发实践的总结和抽象,将其中好的开发方法和技术进行抽象,并对一些经过实践证明错误的方法进行了归纳,提醒后人避免错误的发生。软件工程着眼于大型复杂软件项目开发的指导,对于小型的软件项目来说,指导意义不容易体现。
2.3 软件工程的效果体现在软件开发的全过程中
软件生命周期包括问题定义、可行性研究、需求分析、设计、编码、测试、运行和维护多个阶段。某个阶段的成果对于工程的影响往往不在这个阶段本身反映出来。要想将软件工程的原理、技术和方法应用于实践,必须全面的学习,各个阶段联系性比较紧密。
3 软件工程课程教学中存在的问题
3.1 课程抽象,难于学习
由于软件工程课程的理论原理比较抽象,不易掌握,从而导致学生在教与学的过程中极易产生枯燥、乏味的感觉和学不会、不想学的思想,教师会觉得该课程教起来相当困难,要想达到较好的教学效果和培养学生较强的实践能力的教学目标十分困难。由于软件工程课程不涉及具体软件项目,不怎么涉及软件算法,学生在学习过程中很难将抽象的理论与实际软件项目联系起来,被动接受抽象理论的结果是学生学习该课程的兴趣会逐渐消失,产生枯燥、乏味的感觉和学不会、不想学的思想。
3.2 大学教育时间短,课程安排冲突
由于两年制的大学教育来说,不能像本科教学那样安排合理的时间来进行计算机相关知识的学习,在课程安排上软件工程课程要和其他的程序设计类课程一起开设,这样在讲授软件工程课程的时候就没有办法和其他课程相互印证,学生记忆不深刻。
3.3 理论和实践相脱离
软件工程这门学科的特点决定这门课程理论多于实践,传统的软件工程课程在教学中虽然设置有实践环节,但受到时间以及教学环境的限制,很多无法真正完成个完整的项目,一般只是停留在文档编写的程度。学生由于缺乏实践的验证,无法体会课堂上所学的理论知识有何实际意义及实用价值。同时缺乏实践经验使得学生动于解决问题的能力比较差。针对于这一特点,我们在教学安排上进行了改革。就我们学院为例,我们将计算机专业必须要学习的,在实践中立刻就要用到的课程进行了排课,八周为一个周期,对学生进行考核。教师采用坐班制,使学生随时有问题,随时能够找到教师进行解决,同时实验室全天开发,给学生一个良好的实验环境,在每次寒暑假之前都组织学生进行课程实训,将软件工程的理论融入到具体的项目开发中去,在项目结束后要求学生结合软件工程所学理论给出项目的《软件需求规格说明书》、《详细设计书明书》、《用户手册》等多种软件文档,并就所做项目写出心得体会,总结经验,为下次实训做准备。在反复的课程实训中体会软件工程的原理、技术和方法,使学生对软件工程抽象的概念理解的更深入。
3.4 考核方式滞后
传统的软件工程课程的考核方式,一般都是笔试加平时成绩的方式,这种考核方式对于学生来说只要在学期末,对软件工程的原理概念进行记忆就能取得好成绩,而死记硬背的东西很容易忘记,不利于学生吸收。
4 改革软件工程课程教学的措施
4.1 提高课堂趣味性
采取任务驱动的学习方法,传统的教学方法是先按教材进行讲解,把教材上的内容一条一条的逐一介绍,学生听起来空洞、枯燥、无味,离生活、学习相距甚远。本来是学生最喜欢的东西,却让学生越来越感到乏味。若是以学生为中心,在整个教学过程中由教师起组织者、指导者、帮助者和促进者的作用,利用情境、协作、会话等学习环境充分发挥学生的主动性、积极性和创新精神,最终达到使学生有效地实现对当前所学知识的意义建构的目的。“任务驱动”就是将所要学习的新知识隐含在一个或几个任务之中,学生通过对所提的任务进行分析、讨论,明确它大体涉及到教材上的哪些知识,并找出哪些是旧知识,哪些是新知识,在老师的指导、帮助下找出解决问题的方法,最后通过任务的完成而实现对所学知识的意义建构。任务驱动的教学方式,是在问题解决中学习,教师针对所要学习的内容设计出具有思考价值的、有意义的问题,首先让学生去思考、去尝试解决,在此过程中,教师提供一定的支持和引导,组织学生讨论、合作,但这都不应妨碍学生的独立思考,而应配合、促进他们的探索过程。
4.2 理论教学与实践相结合
“软件工程”这门课程,非常强调理论与实践相结合。软件工程实际上就是一门研究如何将完善的科学与工程原理,先进高效的管理技术以及完整、规范的设计方法应用于经济地开发既可靠,又能在实际计算机上有效运行的软件的一门工程学科。可见要很好的掌握软件工程中介绍的分析、设计、维护及管理等方法,就必须理论教学与实际应用相结合。目前,我们的教学安排上主要采取的是课堂讲授的方式,没有安排实验教学环节,从而影响了学生对理论知识的有效理解。所以在教学过程中,应安排相应的实验环节,以便使学生能够将理论知识与实际应用相结合。
4.3 教学的重点应放在面向对象方法学上
软件往往不能真正满足用户需要等,而人们在实践中逐渐创造出的软件工程的一种新途径—面向对象方法学,则提高了软件系统的稳定性、可修改性和可重用性,它一经出现,就日益受到人们的重视,近些年来已经进入实用阶段,应用得越来越广泛,必将给软件产业带来新的飞跃。而我们在以前的教学过程中对这一部分的介绍则比较表浅,对学生只要求了解,在课时安排上也相应较少。这使得学生毕业进入工作岗位,真正从事软件开发工作后,面对用面向对象方法学来控制整个软件开发过程时,就感到措手不及,从而认为“软件工程”这门课程学不至用,经过反馈,就影响到在校生对“软件工程”这门课的重视程度。
4.4 构建科学合理的考核方式
在“软件工程”课程的教学中,应在开始阶段即给学生布置具体的软件开发任务,随着课程的深入,在教师的指导下,让学生学会用所学的知识解决具体问题,这样在做中学,更能促进学生对知识的掌握,考核方式上,我们学院也进行了改革,考试成绩有笔试+平时成绩+阶段课堂考试+课后作业的方式进行,降低笔试成绩,使学生从大量记忆中脱离出来,注重学生的平时表现,使学生逐步吸收,达到一个较好的效果。
5 结束语
软件工程教学的目的是要培养学生学会采用工程学的概念、原理、技术和方法来开发、维护与管理软件。在整个软件开发的过程中,将会涉及到各种其他学科的知识,学习软件工程,它必须与其他学科相结合才能产生有价值的成果。必须具有良好的程序设计风格,才能使开发出来的软件程序结构清晰,可维护性强。对数据库、计算机语言、管理学等学科都有较高的要求,可见,在软件工程的学习中,必须注意与其他多种学科结合,综合起来学习。
参考文献:
[1] 张海藩.软件工程导论[M].第三版.北京:清华大学出版社,2001.
[2] 孙涌,田茵,等.现代软件工程[M].北京:希望电子出版社,2002.
[3] 陆惠恩.软件工程基础[M].北京:人民邮电出版社,2007.