对“软件工程”教学改革的探究
2009-06-20王丽芳
王丽芳
文章编号:1672-5913(2009)10-0026-02
摘要:本文结合实际教学的体会,对“软件工程”教学过程中存在的教材内容更新慢、教学实践薄弱、学生缺乏知识积累等问题进行了分析,提出了从更新教学内容、加强教学实践、调整课程设置、激发学生学习兴趣等方面进行改进的建议。
关键词:软件工程;教学实践;教学改革
中图分类号:G642
文献标识码:A
1引言
“软件工程”是计算机专业的一门必修课,在计算机专业占据很重的分量。但基于软件工程自身的抽象性与应用性都很强的特点,在教与学的双向过程中存在不少问题,致使教学效果差强人意。如何提高“软件工程”的教学水平和质量,是很多国内外学者广泛探讨的话题。本文从“软件工程”教学中存在的问题出发,在教学内容的更新、教学方法与手段改进、加强实践环节、激发学生的学习兴趣等方面提出了一些具体的建议。
2 “软件工程”在教学中存在的问题
(1) 教材内容更新慢
“软件工程”作为一门迅速发展的新兴学科,新的技术、方法和工具不断涌现,而教材内容的更新却远远跟不上这种发展,这是一个不争的事实。如何保持教材内容的先进性与发展性是当前“软件工程”课程亟待解决的问题。
(2) 流行技术与学生知识积累之间存在矛盾
现代软件工程内容丰富,基于UML的面向对象建模技术、以新型技术支持的软件度量方法、测试方法、Rational Rose工具、RSA等开发工具。在软件管理方面,CMM、配件配置管理以及软件过程管理等。这都是些实用性很强的知识,但学生接受起来比较困难。并且在实际教学过程当中,有足够的课时全部讲到。怎样寻求一种行之有效的方法来解决学生的知识积累与目前计算机技术发展之间的矛盾一直是困扰教、学双方的难题。
(3) 教学实践环节存在难度
在教学中,如果只是单纯的进行枯燥模糊的课堂教学,而学生没有亲身开发体验,学生仅凭课堂和书本得来的知识理解软件工程很难,以至于学完之后觉得用处不大。要让学生相信和理解软件工程对软件开发的重要性,就是在学习期间完成一个中型左右的软件开发。但这种方法又相对复杂耗时,加上这门课一般在大三下学期以后开设,时间上来不及,并不适合初次接触软件工程的学生的教学实践。
(4) 教师的项目开发经验不足
讲好这门课对授课教师来说有一定的难度。它要求教师具备一定的软件开发经验,了解软件项目的管理和工程背景,这样才能在讲授时灵活地将理论和实践相结合,学生才能直观地感觉到该门课程的重要性。但是,很多院校的教师由于时间和环境的限制,自身从事软件项目开发经验不足,从而在教学中很难做到游刃有余,这就对教师提出了更高的要求。
3 “软件工程”教学改革的建议
3.1更新教学内容
“软件工程”教学改革的首要任务是对课程内容设置的改革。软件工程技术在高速发展,讲授的内容同样应该与时俱进,不要拘泥于教材的限制,主张在“软件工程”课堂教学内容和实践环节中强调面向对象方法,适当压缩结构化开发方法的教学时间,以此留出时间来介绍包括面向对象方法在内的一些新技术和方法,使学生尽快熟悉和掌握集成化CASE环境、软件重用及Java与网络环境下的软件开发技术等。对那些既无实用价值也无发展前景的传统技术尽量少讲。同时要保持教学内容对先进技术的跟进,介绍一些目前已经推出或较成熟的新方法,如基于组件的方法、面向Agent方法、敏捷软件方法、净室软件方法等,以便开拓学生的视野和培养学生的创新意识与软件开发能力。
3.2 “软件工程”与项目相结合,加强实践环节
对于“软件工程”的教学,实践环节显得尤为重要。在教学中,尽量利用一切可利用的条件来加强实践环节的实施。首先,软件工程教学应加强学生的分析与设计能力。在讲解软件工程理论知识的同时,教师适当地找一个实际的小项目,要求每个学生从项目的可行性分析、需求分析、总体设计、详细设计、数据库设计等方面进行分析与设计,并作为一次作业打印上交。通过作业,加强学生对所学理论的掌握,并初步具有对真实系统的分析与设计能力;其次,将案例教学引用到软件工程的课堂教学中。案例教学以史为鉴,吸取他人成功的经验或失败的教训,让学生置身于模拟的真实环境中,扮演不同的角色,身临其境,从一个真正“工程师”的角度考虑问题,学习如何应用知识解决问题。从而培养了学生独立思考和解决问题的能力。最后,要强化课程设计和毕业设计,并且要努力做到请进来,走出去。课程设计时将学生分成若干个小组,每组一个题目,小组成员按照软件项目开发各阶段进行分工合作,这样来锻炼他们的团队协作精神和相互沟通能力;毕业设计时应结合教师课题或市场需要设置实用性的题目,要求一人一题并按工程化的方法进行实现,这样可充分锻炼学生工程设计和实施的能力。请进来可邀请有实际经验的资深软件工程师、专家或邀请本校毕业并从事软件开发的学生回来以切身体验作讲座;走出去是鼓励学生到社会上的软件公司实习、兼职,这样可使学生切实感受到该课程的重要性,尽早接触软件工程的实际问题,了解软件开发的全过程,提高实践能力,增强对软件工程技术、方法和原理的理解。
3.3调整课程设置,重视学生知识的积累
解决流行技术与学生的知识积累之间的矛盾,可从调整课程设置入手, 要理清课程的背景及后延。“背景”即本课程的前驱课程,在该课程开设之前必须要学习的几门基础课,没有这些课软件工程的教学也就形同虚设。“软件工程”的前驱课程有:面向过程的编程语言、初步的面向对象技术、略见规模的程序开发、UML建模语言等,通过对这些课程的学习,让学生发现开发程序中潜在的一些问题,学生自己带着问题找到了学习的切入点,再引入本门课程学习,效果就大不一样。“软件工程”开设一般设在大三下学期、大四上学期这个时间段,在学生了解了软件工程的思路之后,开设一定的后继课程也是必要的,比如,软件设计模式、软件项目管理、系统分析设计教程等交叉学科,这样可以更好地扩充学生知识积累的程度,为学生毕业后从事实际的软件开发工作,做很好的知识铺垫。
3.4端正学生的学习态度,激发学生的学习兴趣
经多次与学生交谈发现,学生很容易进入了一个怪圈:学了不少专业课,就是不知道它到底有什么用,专业课之间有什么关联,为什么开设这门课,一头雾水。导致了一种学习的畸形状态,觉得学的东西没有用,自己也不知道该学什么才有用。毕业的时候,发现最无用的不是课,而是自己。所以,授课教师以及辅导员在学生的学习中要积极和他们交流,让学生尽快地找到对本专业的兴趣点,以点为面,展开大学的知识构建。学生一旦知道了自己想做什么,什么是自己的兴趣,学习起来就有目的性,就会收到较好的学习效果。同时要引导学生发现问题,提高学生自学的能力。教师不可能是个百宝箱,什么都通,什么都会,这就要求学生能够像软件工程所倡导的理念一样,阶段性、渐近式地自我学习、自我培养。这样,既提高了学生的学习能力,又把软件工程真正地落到了实处。
3.5创造条件,提高教师的业务水平
在整个教学过程中,教师扮演很重要的角色。教师的素质对于教育这项工程至关重要。学校应在人力物力财力允许的情况下,多给教师外出充电的机会,接触新型的技术与理念。特别对于计算机这个日新月异的专业,经常地选派教师到大公司去实践是很好的学习方式。教师把充电掌握的新技术、新理念及时带到课堂,能进一步体现课堂知识的实用性和先进性。
4实施效果
以上的诸多建议已在我校的计算机本科专业教学中进行了一系列的教学实践,在教学过程中,自编教材,收集了二十多个完整的工程案例并将学生分成了若干个开发小组,与教师一起分别参与了软件项目《教务管理系统》、《图书管理系统》《学籍管理系统》等的开发;实验期间,分批组织学生到软件企业实习,了解企业的实际操作与人才需求。从2005年至今开展了15个班级600多名学生的软件工程教学,学生的满意率达到了91%。具体调查数据见下表1,调查对象为从2006年开始的计算机专业大四的学生。
从调查的数据来看,教学改革在刚实施阶段,满意度较后期要低,随着改革的进展,各方面措施的逐步改进,教学效果逐年提高。但部分学生对实习满意度不高,主要是教师与企业协调方面存在一些问题,需在以后的工作中进一步加强。
5结论
通过近三年多的努力,采用自编教材的形式,使本课程在内容上紧跟时代的最新技术;课堂教学与工程案例相结合,提高了学生的学习兴趣;通过参与实际项目的开发,产学结合,使学生的编程能力、分析解决问题的能力、知识的综合运用能力,团队合作沟通能力得到了很大的提高。已毕业的学生受到了用人单位的一致好评,普遍认为学生的综合素质高、工程能力强,所具备的知识结构基本适合业界需求。
参考文献:
[1]Roger S. Software Engineering: A practitioners Approach[M]. 5th ed. 梅宏,译. 北京:机械工业出版社,2002.
[2]A project of the IEEE Computer Society Professional Practices Committee. Guide to the Software Engineering Body of Knowledge[EB/OL]. http://www. computer. org/certification/Swebok 2008.pdf.
[3]IEEE Computer Society. SWEBOK[S]. Angela Burgess,2007.
[4] 沈备军,李超.反思和抽象在“软件工程中人的因素”课程学习中的应用[J]. 计算机教育,2006(1):52-56.
Research on Teaching Reformation of Software Engineering
WANG Li-fang
(Institute of Electronic and Computer Science Technology, North University of CHINA, Taiyuan 030051, China)
Abstract:Based on many years teaching practice and experience of the author, this paper analyses the existing problems in teaching such as out-of-day updating textbooks, weak teaching practices, students lack knowledge accumulation and gives some ideas about teaching reformation on software engineering: renewing teaching contents, strengthening teaching practices, adjusting curriculum arrangements, stimulating students interests in learning, etc.
Key words: software engineering; teaching practice; teaching reform