一、引言
软件工程自1968年提出以来,在过去50多年中,已发展成为用于指导软件生产工程化,覆盖软件开发方法学、软件工具与环境、软件工程管理等内容的一门综合性较强的学科。《软件工程》课程更是软件工程、网络工程和计算机科学与技术及相关专业教学计划中一门重要的专业必修课,该课程实践性很强,涉及的学科较多,综合性较强。通过《软件工程》课程的学习,学生能够了解软件开发过程和熟悉过程管理相关技术,为学生在毕业设计和今后从事类似软件开发和应用的工作奠定一定的基础。
二、《软件工程》实验教学的重要作用
《软件工程》课程教学最重要的是让学生理解“工程”的概念,围绕软件工程三要素,以软件生存周期的若干阶段为主线,掌握软件开发工程的若干模型,使用的开发方法和相应的工具,但仅仅掌握计算机技术是远远不够的,还应该将管理和工程的思想融合进去。因此,《软件工程》课程是以理论和实验相结合的教学方式,通过理论课程学习软件开发技术,全面了解软件系统的实际开发过程。但理论教学枯燥、乏味、知识点抽象,学生们没有经历过软件开发过程,所以只是理论讲解没有一定的说服力,学生也不知道这些理论知识应该如何和在软件开发中得以应用,学生通过理论的学习远远不能真正了解软件的开发周期,深刻理解每个开发阶段的真正意义,所以《软件工程》课程的实验教学就非常重要。实验教学是对理论的实际应用的过程,理论是基础,实验是应用。通过实验教学,学生在理论学习中学到的知识点能够得到更好的理解和掌握,对理论学习起到了一个很好的推动作用。在一定的实验教学安排下,学生根据教师所给出的实验项目自由选择,将所学的软件开发过程、方法和工具,以及浅显的管理学知识应用到整个项目开发中,从而更好地理解了软件工程的理念,熟悉和掌握了软件工程相关技术,同时也提高了学生的实践动手能力。实验课程与理论教学是相辅相成的。它们彼此之间相互影响、相互支持、相互促进。
三、《软件工程》实验教学存在的问题
针对学院相关专业,根据《软件工程》课程的特点和培养计划的制定等条件,课程安排理论学时较多,约占总学时的78%,实验学时很少,约占12%,并且实验课的内容是为学生提供现成的系统,要求学生利用CASE工具,按照老师提供的系统进行建模,编写软件开发各阶段的文档。由于学生没有参与过系统的开发,要熟悉别人开发的系统有一定的困难,导致学生对此不感兴趣。教师不可能每个开发阶段安排相应的实验,因此在实验课程有限的时间内,要编写相对完整的软件开发各阶段相关文档也是不可能完成的,这样学生不能够真正地理解教学内容,学生的实践能力也没有真正地得到锻炼。随着软件行业的快速发展,软件技术和内容不断扩充,不断更新,《软件工程》教学面临着计算机学科发展规范所提出的更高的质量要求,同时也面临着大众化高等教育背景所带来的客观问题,如何开展软件工程的实验教学,如何保证软件工程实验环节的良好效果一直是个问题。因此《软件工程》课程的实验教学环节的创新与设计至关重要,直接影响到此门课的授课效果和学习效果。
四、《软件工程》实验教学改革与实践
基于《软件工程》课程应用型的特点和传统《软件工程》实验教学中存在的若干问题,我们必须积极探索《软件工程》实验课程的教学改革,通过改革和创新使《软件工程》实验教学真正发挥其重要的作用,确实提高学生的实际开发能力,使学生尽早地投入到开发角色中去。因为实验课程是由学生、教师和实验室共同参与完成的,学生主要完成相应的实验内容目,实验内容设定的优劣直接影响到实验教学质量和效果;教师是学生完成实验的直接指导者,教师实践水平的高低也直接影响到学生的实践能力;实验室提供实验教学的环境支持,合理和最大限度地利用实验室的资源也是对提高实验教学质量的一种帮助。所以我们主要从实验内容设计、教师实践水平和开放性实验室这三个方面对《软件工程》实验教学做了改革与创新的尝试。
1.实验内容设计。我们抛弃了传统的实验内容,不给学生提供已经完成的系统,而是使用了新的实验教学模式,让学生以小组为单位,采用面向结构的软件开发方法和面向对象的软件开发方法相结合完成对系统的开发。系统题目采取教师命题的方式,教师提供3个系统题目供学生自由选择,如图书管理系统等。题目来源均结合本学校实际情况,就地取材,有利于学生的调查研究,因此具备一定的应用价值和进一步扩充完善的能力,而且难易度适中,功能约占毕业设计题目要求的50%,具有可操作性、可验证性和可实现性。学生选好题目后,教师统计每个系统对应的学生人数,并将学生分成若干个项目组,每组5~6人,仿照软件公司进行职责分配,每个项目组有一名学生担任项目经理,负责本组学生的工作分配和项目的检查工作:可将组员设定为系统分析员、系统设计员、程序员和测试人员。随着课程进展,按照软件生存周期的各个阶段(问题定义、可行性研究、需求分析、概要设计、详细设计、软件测试)布置任务,每组学生分工合作,项目经理负责组织和管理每个组员,每个组员负责项目中的一个任务,每个组员均独立完成任务,组员之间合作共同完成该组所负责项目。教师的主要任务是组织和管理所有项目组,同时进行答疑和检查,答疑在每次实验时或课后进行,检查在每次实验结束时或课后进行。这样的实验模式,培养了学生的团队合作精神和独立分析解决问题的能力。
2.提高教师实践水平。《软件工程》这样一门综合性的学科,更需要教师有很强的实践水平。但往往教师的理论知识很丰富,却缺乏一定的实践经验。如果教师的实践经验不足,那么在实践教学中会使理论和实际脱节,从而影响教学质量。为了能够培养出更适应社会需要的应用型人才,必须首先从教师的专业素质抓起。学院会定期组织相关教师到北京或大连的软件公司进行培训,培训内容主要是参与开发公司的实际项目。通过在软件公司的经历,教师积累了实践经验,也使其掌握的理论知识更好地运用于实践中,在实践教学中能够更加专业地指导学生,并将在软件公司遇到的实际问题和学到的宝贵经验与学生分享,增加了学生的实际经验,为学生将来更好地就业打下了良好的基础。
3.开放性实验
室的建设。《软件工程》课程实验学时很少,要想在有限的时间内完成实验教学内容是不可能的,更多的是需要学生在课后完成的实验内容。但由于学生课后的时间比较自由,不利于组织和管理,为了保证实验内容的连续性,应集中安排学生上机实验。根据学院实验室具备的条件,我们特向学院要求为《软件工程》课程安排固定的时间开放实验室,以便于学生集中进行实验,方便学生对项目的开发和讨论,对资料的查阅等。同时要求实验室教师尽可能地参与其中,帮助学生及时解决困难。
五、《软件工程》实验教学改革效果
《软件工程》实验教学改革已在学院软件工程和网络工程两个专业的学生中进行了实施,教学效果有了明显改善。一方面,学生综合运用所学理论知识解决实际问题的能力得到了提升,学生的实践能力、独立分析问题和解决问题的能力也得以提高,其团队合作精神得到了加强,因此,加强了学生“工程”化的思想,提高了其就业等方面的竞争力,使其更加适合在现代软件企业中发展。另一方面,通过《软件工程》实验课的锻炼,学生为大四学期的毕业设计环节奠定了基础,学生撰写毕业论文的质量有了明显提高。
客观地说,作为经验较少的大三学生,要在一学期的时间里开发出各方面都达到真正实用要求的系统是比较困难的。实验教学的意义不是让学生花大量时间做出多完整、多完美的软件,更重要的意义是让学生经历软件开发的完整的过程,体验各阶段方法和工具的应用,同时学生的专业技术能力、管理能力、沟通能力等多方面的能力都得到了锻炼,为学生将来进入社会成为一个全面发展的综合型人才奠定了较好的基础。
六、结语
从《软件工程》实验教学改革的效果看,我们取得了一定的成绩,同时也得到了学院老师和学生的肯定和好评。《软件工程》实验作为综合性的实验,如果条件允许的话,可建立校企合作,与产学研结合,将《软件工程》实验或部分实验安排在企业中,让学生真正地深入企业,了解软件产品的生产过程,并在实际操作中进一步加深对课堂知识的理解。
参考文献:
[1]沈文轩.软件工程基础与实用教程[M].北京:清华大学出版社,2012.
[2]张海藩.软件工程导论[M].第5版.北京:清华大学出版社,2008.
[3]史济民,等.软件工程——原理方法与应用[M].第3版.北京:高等教育出版社,2009.
[4]马燕,张根耀,王文发.软件工程实验教学模式改革与实践研究[J].教育与职业,2006.
[5]丛飚,陈卓然.《软件工程》实验课程改革与实践[J].教学园地,2011.
[6]蔡勇,杨海中.软件工程实验教学体系的探讨[J].实验室研究与探索,2008.
作者简介:张美娜(1981-),女,讲师,主要研究领域:软件工程,自然语言理解;迟呈英(1963-),女,教授,主要研究方向:数据库技术,自然语言理解。