面向工程化教育的软件工程课程建设探讨
2018-01-17白学明
摘 要:本文借鉴国内外高校先进的工程教育教学模式,分析了软件工程课程建设的定位,并根据面向工程化教育认证目标进行了课程内容改革和实践教学体系建设,对教学资源进行了研究和创新,对质量保证和持续改进机制进行了介绍。坚持以学生为中心,基于结果导向,突出了地方本科院校的应用型教学特色。
关键词:软件工程;工程化教育;课程建设
中图分类号:TP301 文献标识码:A
Abstract:Based on the advanced teaching mode for engineering education in domestic and foreign universities,this paper analyzes the orientation of course construction for software engineering.According to the certification target of engineering education,the course content reform and the practice teaching system construction are carried out,the teaching resources are studied and innovated,and the quality assurance and continuous improvement mechanism are introduced.The application-oriented teaching characteristics of local universities are highlighted by insisting on student-centered and outcome-based education.
Keywords:software engineering;engineering education;course construction
1 引言(Introduction)
针对20世纪60年代“软件危机”的爆发,1968年在德国Garmisch由NATO(北大西洋公约组织)召开的学术会议上,当Feitz Bauer首先提出了“软件工程”概念后,软件工程作为一门学科迅速发展起来。它以提高软件质量,降低开发成本为目的,将系统化、规范化、度量化的工程学方法应用于软件的开发、运行和维护的过程中,使软件成为信息时代最大产业之一[1]。特别是近年来,软件产业已经成为世界各国在新一轮国际竞争中最热的焦点和战略制高点。
从根本上讲,软件产业的竞争就是人才的竞争,软件企业最需要的是真正能够很好实践软件工程的专门人才。因此,针对软件工程这类注重能力培养的工科应用型专业,要解决人才需求的难题,培养出具有较强实践能力的人才,更是需要“以本为本”,紧跟时代,面向社会,坚守课堂教学改革的主战场,引入“做中学”“CDIO”等工程教育理念,深化产教融合,推进软件工程本科专业人才的培养。
工程教育在我国的快速发展,是社会对高等教育质量高度关注的必然结果,也是我国大力推进工业化進程,培养大量高素质、创新型科技人才的必然选择[2]。在大力推进工程教育认证工作的大背景下,从事计算机专业教学的学者们纷纷就基于工程教育的计算机专业人才培养模式进行了研究与探讨。其中,有代表性的论著有:张宁详细地分析了当前国家通过工程教育专业认证对计算机专业教育所期望达到的目标,系统地介绍了其大学计算机专业通过工程教育认证相关改革举措,并根据工程教育认证目标对计算机专业教育的发展提出了一些建议[3]。同时,李玲玲、夏欣和刘静等也分别讨论了在工程教育认证背景下,如何制定面向特定应用领域和普通地方高校的计算机专业人才的培养目标和制度等问题[4,5]。
本文依据《工程教育认证标准》《计算机类专业教学质量国家标准》,参照教指委发布的相关专业规范,通过系统规划、协同研究、分步实施,研究面向工程化教育的软件工程课程的重构与优化。从理论层面瞄准复杂工程问题,以解决软件工程专业的复杂工程问题为主线,按照“典型问题—所需能力—知识单元—课程体系—课程(群)”的思路,以OBE为导向,从操作层面针对课程内容和资源进行优化,从实践层面采取多种教育教学方式,开展课程的改革探索。
2 课程开设情况(Course settings)
泰山学院软件工程专业于2003年经教育部批准设立,2004年开始招生,是山东省继山东大学之后第二所开设该专业的高校。目前本专业主要分为普通软件工程和软件服务外包两个培养方向,2014年秋季新增春季高考招生方向。经过十余年的探索与建设,本专业取得了丰硕的成果,2006年至2014年《数据结构》《数据库系统概论》《软件工程》《操作系统》《编译原理》《计算机网络技术》等六门软件工程专业主干课程被评为山东省高等学校精品课程,2007年“软件工程学科”被确定为泰山学院唯一重点实验室培养对象,2010年软件工程专业被确定为“山东省高等学校特色专业”,2011年被确定为“山东省企校合作培养人才先进单位”、软件工程教学团队为泰山学院优秀教学团队,2013年被确定为“教育部‘本科教学工程地方高校第一批本科专业综合改革试点”项目和“山东省高等学校省级卓越工程师教育培养计划试点专业”。这为本专业下一步建设和发展、探索应用型人才培养的改革实践奠定了坚实基础。目前本专业正在积极筹备申报国家工程教育专业认证。在这样的背景下,本文探索了软件工程课程教学内容改革和实践教学体系构建等问题,以便更好地提高课程建设质量,满足工程教育专业认证的要求[6]。
3 教学内容(Course content)
自软件工程专业成立以来,软件工程课程体系也在伴随着专业的发展与时俱进。目前软件工程课程开设在第五学期,其中理论课程学时32学时,配套实践学时16学时。
软件工程是从工程学的角度出发,研究开发大型软件生产过程的工序化、标准化,并对整个流程如何实行科学化、数量化的管理和控制。主要研究几种常用软件开发模型的阶段划分、各阶段的目标、任务、方法、质量控制与管理等问题。就所研究的问题而言,从需求分析、软件设计到系统实现,从软件测试到软件维护,从过程管理到质量控制等,都离不开数据结构和数据库知识的支持。反过来,掌握了软件工程知识,对开发设计操作系统、应用数据库系统、编译系统等都有很强的指导意义。
课程坚持“以学生为本,以社会、企业人才需求为导向,以学生将来可持续发展为落脚点,以提高教学质量为生命线”的基本理念,针对软件工程课程的内容特点,我们认真分析了以往课程教学存在的问题,深入研究了教育部高等学校计算机科学与技术教学指导委员会出版的《高等学校计算机科学与技术专业发展战略研究报告暨专业规范》相关内容,大胆改革课程体系和教学内容,积极探索理论和实践教学模式,建立科学的内容体系,在先进性、系统性和实践性上下功夫。既考虑课程的基础理论性,又突显实践性、技术性实践教学特征,更兼顾教学内容的基础性和前瞻性,同时又体现实用性和创新性,教学过程切忌空洞的理论灌输,必须坚持理论与实践并重的教学原则,将软件工程的理论、方法和实践结合起来,采取循序渐进的案例式教学,通过项目驱动教学模式激发学生的学习积极性和主动性。把被动的教学方式变为主动探索的教学方式,构筑教学互动平台,增强学生的动手能力和实践经验。
课程强调基本概念及以概念贯穿软件工程知识体系,在“知其然,知其所以然”的引导式教学中激发学生的学习兴趣和热情。兴趣是最好的老师,在软件工程教学中,通过生动地剖析基本概念,并以基本概念贯穿软件工程知识体系的方式组织教学内容,让学生深入理解基本概念背后的深刻内涵和所起的作用,并让学生系统地掌握各知识点之间的逻辑关系,在“知其然,知其所以然”引导式教学中鼓励学生主动地分析问题、提出问题和解决问题,激发学生的主动学习兴趣和热情。
软件工程课程的体系设计遵循教育教学规律和学生成长成才规律和专业人才培养的要求,充分考虑软件企业对人才培养规格的要求,构造了“理论教学、实践教学、企业实训”的“3+1”人才培养模式,将课程体系划分为:基础部分(结构化软件工程)、提高部分(面向对象系统分析与设计)、拓展部分(软件体系结构)三大环节。
4 实践教学体系建设(Practice teaching system
construction)
软件工程教学实践是关键。我们重新构建了软件工程实验教学体系,面向工程化教学特点,引入项目驱动模式,以习促学,实验教学与课堂教学同步进行。
基于项目驱动的软件工程教学强调以学生为教学主体,在教学中必须对学生进行有效的组织。考虑学生已有知识和能力在求解问题时的局限,采用以小组为单位的学习组织结构是一种理想的选择。小组学习方式也为学生搭建了团队工作的平台,对学生的团队沟通训练非常有帮助。
教学辅助资源的准备是保证良好教学效果的关键。基于项目驱动的软件工程教学需要准备的教学资源包括:课程实例、需要求解的问题集、软件项目、软件开发教学平台、学生自主学习工具、教学参考资料等。
在课程教学中,相应的上课学生规模需要控制在一定范围内,否则影响教学效果。“软件工程”课堂规模控制在60—80人,要求学生组成项目小组(一般由3—6人组成),每组选出一个负责人,并在教师的指导下,由各小组负责人组织小组成员一起完成具体的软件工程实验课题,并要求进行课堂实验报告和按照相应的软件工程规范书写详细的课程实验总结报告,其中包括:项目开发计划、软件需求说明书、概要设计说明书、详细设计说明书、测试分析报告和项目开发总结报告等六部分。通过学生组成小组进行软件开发,让他们在实践中理解软件过程的意义和作用,培养他们软件项目管理的意识和能力[7]。
软件工程课程教学需要信息技术手段的支持,包括多媒体教学设备,计算机和网络实验环境,学生一人一机,教师和学生的机器联网,教学效果明显改善。充分利用先进的交互式网络多媒体教学手段,加强学生对软件工程知识的理解和掌握,通过扩展的知识,培养学生的创新能力。课上讲授的重要知识点制作了PPT和相应的动画,利用多媒体动态展示知识点,帮助学生理解软件工程知识。必要时辅以板书,并跟学生交互讨论。网络教学平台是课堂教学的延伸,是第二课堂。有多媒体演示讲稿、重要部分的视频、经典的习题、有详细到知识点的课程导航等丰富的教学资源。扩展的网络教学,及时解决学生的困惑,帮助学生加深对课堂教学内容的理解,扩展相关知识,提高学习兴趣和主动性。有利于素质教育和创新能力的培养,在实际教学应用中显著提高了教学质量和教学效率。
注重持续改进,建立学生的课程成绩评定标准,基本原则是评价软件工程方法的采用(怎么做的),而不是最终的软件产品(做的什么),主要的评价指标是团队参与能力、软件开发过程的应用能力、综合利用所学知识的能力等,分阶段采用多种评价体系进行综合考核。
项目驱动式教学是一种逆向教学方法,即从问题出发学习知识,而不是学了知识再去解决问题,提高了学生学习的目的性和学习的兴趣。在课程作业方面,突破传统教学法的单一作业形式,增加了课堂报告、小论文、课堂讨论发言、技术文档编写、软件设计、小组组织和管理计划、技术评审等多种形式的课程作业,以及网上学习知识自测系统的使用。
在课程考试方面,同样进行了分项考核,学生的课程成绩是一个综合的评价,而不是一次的書面考试决定。为了调动学生学习的积极性,避免学生在学习中不求甚解,死记硬背应付考试的现象,我们对考试形式作了调整,将理论学习、实践过程和参与过程全部纳入考核范围。课程成绩由平时成绩(30%)和期末考试成绩(70%)两大部分组成;平时成绩又包括项目参与、工作态度,出勤情况,个人工作质和量,团结协作精神等。考试形式的改革,目的是激发学生自主学习实践的积极性,培养学生分析问题、解决问题的能力,全面锻炼学生的团队协作、谈判沟通、适应发展等能力,达到培养现代软件工程师素养和能力专业目标。
在此基础上,本课程进一步整体规划与实施验证性实验、设计性实验、实训和实习,展开培养过程。通过同步安排在专业课程中的验证性实验巩固和加深学生对于特定理论知识点的理解程度;通过设计性实验循序渐进地对学生构思、设计、实施和操作的能力加以强化;通过与企业共同设计实施的实训课程培养学生的综合能力;为培养学生的工程创新思维和创新能力,工程能力训练体系中还引入了面向问题的教学模式、案例驱动的教学模式、开放性实验模式和学生创新小组模式等创新型实践教学方法,通过为期半年的全时制实习使学生体验业界氛围和一线开发人员的工作环境,并进一步锻炼其工程能力。
5 资源建设(Resource construction)
我们始终认为软件工程课程教学不是空洞地传授教条,而要要求学生按照软件工程的基本原理,结合项目的具体情况进行实践。教学中力图将教师的实践经验传授给学生;通过实践融会、渗透理论概念和思想。依据此理念,对教材、实习环境、扩展性资料等方面做出认真审慎的选择,取得了良好的效果。
5.1 教材使用与建设
软件工程教材的选用遵循课程群教材选用原则,课程教材优先选用国外先进的、获得国家级、省部级或公认水平较高的较新教材,并鼓励教师自编补充教材、实验指导和习题集等资料。针对不同专业对该课程的不同要求,要求教学的核心内容进行优化、协调统一,但是教材灵活选择,强调自编资料在教学中的作用。近几年来,电子商务专业选择了外文的《软件工程—实践者的研究方法》为教材,计算机科学与技术专业选择了《Software Engineering Theory and Practice》为教材,而软件工程专业使用了《实用软件工程》为教材,为保证通过该课程的学习,使学生具备工程意识、掌握工程方法、遵循工程标准,同时又编写了《软件工程实验指导》《软件工程案例分析》和《软件工程标准汇编》等资料。
5.2 学生自主学习的扩充性资料
(1)为了拓宽学生知识面,培养国际化复合型人才,为学生提供了以下案例:图书馆自动化系统分析、ATM系统(建立对象模型)、PDA网上销售系统、汽车配件公司业务管理信息系统。
(2)计算机辅助教学系统。
(3)ISO/IEEE软件工程国际标准和《GB/T11457:软件工程术语》《GB/T15532:计算机软件单元测试》《GB/T 8567-2006计算机软件文档编制规范》等国家标准。
(4)软件工程试题库。
(5)国内外学者最新的学术专著、论文等。
5.3 网络教学环境
提供一个综合性的软件工程网站,专门提供大量有价值的资源。在多年来教学实践和改革的基础上开发出具有仿真性、交互性和实践性的网络课程,内容丰富、深度合适,系统地丰富和补充课堂教学内容,保持网络课程内容的新颖性,紧跟时代发展,具体包括:教学大纲:主要包括课程简介、教学内容、作业与实验、考试要求、教材等内容;教学计划介绍软件工程课程整体教学的内容的选取,时间进度、学时的安排,介绍每个章节的学习目标、知识点、重点、难点、要求。让学生对软件工程课程有一个完整的了解;课堂教学:包括全部教学内容的电子教案及课件,内容丰富,便于学生网上在线学习;课堂录像:课程录像包括典型课程教学的完整录像。
5.4 进一步的资料建设
软件工程课程是概论性质的课程,讲述的内容涵盖面广,但是在课堂上的讲授深度不够,各章节内容都需要学生在课下学习补充,所以在专业资料室中,要补充完善该课程体系下的相关书籍,包括面向对象系统分析与设计、设计模式、体系结构、软件项目管理、软件测试等内容。同时,完善现有的自编资料,在课程建设期间正式出版并推广使用。
6 质量保障(Quality assurance)
针对地方本科院校师资力量相对不足的实际情况,与企业进行深度融合。并通过企业文化的融入,培养学生的职业素养和专业学习兴趣,实现教书育人和实践育才的同步。通过“企业进学校,学校进企业”的双进措施,将企业项目引入课堂教学、企业工程师进行项目实训、企业高级工程师兼任专业教师,学生到企业实习培训提高实践动手能力,教师深入企业一线锻炼,积累实践经验,提高工程教学能力。
建构基于多元主体参与的评估体系,共建课程质量评价体系,落实持续改进机制,共建共享校企资源池。学生是工程教育质量保障和持续改进的受益者和关系人,面向工程化教育就要“以学生为中心”,对学生实施个性化培养,培养创新创业素养。
7 结论(Conclusion)
教学质量是学校立足之本,生存之道,而影响教学质量最关键的因素就是课程建设。近几年通过教学模式的研究,以及校企共建的经验总结,形成了保障学生动手能力优势的教学模式与实践教学体系,形成“课堂、课题、企业”三种层次的课程建设体系,以学生为主体的开放式教学,以团队为主体的体现目标、场景、角色等内容要素的项目化教学形式,明确了教学目标,提高了学生的兴趣度。继续坚持本科生教育的主体地位,深化工程化教育理念,完善课程体系是我们未来努力的方向。
参考文献(References)
[1] CD Kloos,BI Ma,C Alario-Hoyos.From Software Engineering to Courseware Engineering[C].Global Engineering Education Conference,2016:1122-1128.
[2] 赵海升,李兵,聂建胤.面向科研领域的软件工程项目管理探究[J].软件导刊,2016,15(1):135-137.
[3] 张宁.从工程教育专业认证目标探讨计算机专业教学改革方向[J].时代教育,2011,1:51.
[4] 李玲玲,赵学民.工程教育专业认证背景下的计算机专业人才培养模式探索[J].郑州航空工业管理学院学报,2013(6):181-184.
[5] 劉静,郭银章,阎临霞.基于工程教育认证体系的计算机专业人才培养方案[J].计算机教育,2011(13):63-66.
[6] 陈永,胡晓辉.基于工程教育认证的《软件工程》课程教学质量建设研究[J].软件导刊,2016,15(9):183-185.
[7] 陈雯柏,曹荣敏,吴细宝.面向专业认证的工程训练模式与创新体系构建[J].计算机教育,2014(10):47-49.
作者简介:
白学明(1981-),男,硕士,讲师.研究领域:软件工程.