范庆春
(合肥师范学院 计算机学院,安徽 合肥 230601)
由IEEE Computer Society 制定的软件工程知识体系SWEBOK,全名是Guide to the Software Engineering Body of Knowledge,定义了软件工程学科的内涵,自2004年发布至今,有效地推动了软件工程专业教育的发展。SWEBOK 第3 版①IEEE Computer Society,SWEBOK V3,http://www.computer.org/web/swebok/v3-guide,2014.(后统称为SWEBOK V3)延迟到2014年2月份终于正式发布,该版本扩充了近十年来的软件工程研究与实践的最新成果。对于广大应用型本科院校来说,软件人才的培养责无旁贷,而目前面临的最大问题是软件人才的需求和供给不匹配,软件专业培养的学生,实践应用能力和企业的人才需求相脱节。一方面是软件公司招聘不到合适的学生来工作,另一方面是高校培养的人才和企业的需求有差距②韩中元,雷国华,李军:《应用型本科软件工程人才培养模式的探索与实践》,《计算机教育》2010年第10 期,第26-29 页。。合肥师范学院软件工程专业严格遵循建设地方应用型高水平大学要求,立足安徽,面向基层,根据当前对口企业的实际需求,参考SWEBOK V3 的知识体系来改革现有的人才培养方案,在专业核心课程、实践教学、校企合作等多方面作出卓有成效的改革与探索。
相较于第2 版的软件工程知识体系,SWEBOK V3 增加到了15 个知识域,共有102 个知识点,并且对第2 版的10 个知识域上也做出了很大的调整③马培军,李东:《软件工程知识体SWEBOK 的新进展——SWEBOK V3》,《计算机教育》2013年第1期,第66-68 页。。SWEBOK V3 的内容体系④同①。如表1 所示。
表1 SWEBOK V3 的内容体系
?
在SWEBOK V3 中,软件设计新增了用户界面设计的内容;把软件工具的内容从原先的“软件工程工具和方法”分散到其他各知识域中,并将该知识域重命名为“软件工程模型和方法”,使其更关注软件模型类型、模型分析和建模等内容,同时也体现出了掌握这些软件工具的重要性;在软件构造中突出了构造技术知识点,把包括中间件、测试驱动编程等16 种构造技术罗列出来。
新增的软件工程职业实践知识域,包括职业化、团体动力和心理、沟通技术三个部分。涉及的内容有评审、认证和许可,道德守则、职业操守和软件工程标准的性质和作用,软件对经济的影响,雇佣合同、法律问题、文档、权衡分析等。团队动力和心理则包括小组或团队工作动态,个体认知,如何和利益相关者交流,处理复杂问题、不确定性及有二义性的问题,处理多元文化环境的问题。沟通技巧则包括阅读、理解和总结,写作、表达技巧等内容。
SWEBOK V3 中提出了软件工程教育基础的四个知识域,包括软件工程经济学、计算基础、数学基础和工程基础。软件从业者要在这四个知识域上打好扎实的基础后再系统学习软件工程实践的知识域,才是比较完整的。SWEBOK V3 比第2 版的SWEBOK 更加全面,更加突出了软件工程职业实践和软件工程教育基础。
SWEBOK V3 的知识域有15 个,共102 个知识点,涉及到软件工程的方方面面,如何参考SWEBOK V3 来设计软件工程专业课程体系和课程内容,尤其是在应用型本科院校中的软件工程专业,如何参考SWEBOK V3 进行专业课程体系的改革,就是一个很有实际意义的课题了。
SWEBOK V3 中,软件工程的知识架构是一个有机整体,软件工程专业在许多高校中是从计算机科学与技术专业演变过来的,往往是在计算机科学与技术专业的课程基础上,再加上若干门软件工程课程,但这显然是不科学的。虽然软件工程专业与计算机科学与技术专业有许多相通之处,但是也存在着很多不同的地方。软件工程教育基础部分的工程经济学知识域和工程基础知识域强调了软件要作为一个系统工程来实施,需要学习软件工程经济学、风险和不确定性、经济学分析方法、建模和仿真等知识,这启示着软件工程专业需要着重培养学生的工程思维方式,应从大学一年级就开始对软件工程专业的学生进行工程思维、科学素养的训练。
软件工程专业要以严谨的课程体系来培养学生。在课程切分上可以改变过去以科研方向来切分课程的模式,应以项目规模的大小来切分课程,以岗位需求来对课程进行重新规划,要根据岗位来确定专业能力,专业能力要对应到具体的知识点模块上,形成岗位-能力-知识点模块三级体系,而不同知识点的组合即是专业方向。应用型本科院校的软件工程专业主要培养的是未来的软件工程师,所以必须要培养学生坚实的工程思维方式,以工程的原则、方法、手段来完成软件的开发和维护。要把工程思维融入到软件工程专业的课程体系中,大学本科四年中必须要贯彻工程训练。软件专业的课程讲授切忌照本宣科,不是教材来确定授课内容,而是由知识点模块来确定授课内容,相关的课程可以形成课程群,合理安排好课程内容。
统观SWEBOK V3,其核心在于工程实践,实践教育在软件工程专业的教学中举足轻重①范庆春,周秋平,王凡:《软件工程课程实践教学研究》,《合肥师范学院学报》2012年第6 期,第64-67 页。,不只是辅助理论教学,而是要在教学中与理论教育有同等的地位,甚至在某种程度上超过了理论教育,要切实提高实践教育地位,合理规划实践教学内容,完善实践教学评价体系②王智钢,田祥宏,张燕等:《应用型本科软件工程专业实践能力培养研究》,《计算机教育》2014年第10期,第94-96 页。。部分实践性强的课程可以直接安排到实验室去授课,要切实做到学中做、做中学。
软件工程专业要构建具有满足实践教学需要的完备实践教学体系,主要包括实验课程、课程设计、实习、毕业设计,四年的本科学习中总体代码工作量不少于上万行。实践部分的课时要有一定的保证,不能少于总课时的25%,在实验课程中要有一定数量的综合性、设计性实验。课程设计环节要安排2~3 个有一定规模的系统的设计与开发。实习环节应建立相对稳定的实习基地,使学生认识和参与生产实践。毕业设计的选题应结合工程实际,有明确的应用背景,有适当的工作量和难度;培养学生的工程意识、协作精神以及综合应用所学知识解决实际问题的能力;对毕业设计的指导和考核应邀请企业或行业专家参与。
SWEBOK V3 中的软件工程实践部分的知识域新增的软件工程职业实践包含了职业化、团体动力和心理和沟通技巧等三个部分,而这三部分的内容恰是以前在大学本科教育中没有引起足够重视的部分,这些实践能力的培养仅仅在学校的环境中是很难得到完全锻炼的。这就需要校企合作。
校企合作建设主要包括两个方面:一是邀请企业工程师到学校来授课,引进企业的真实的开发案例进行案例驱动式教学,或者开设专题讲座形式,对企业的人才需求、企业文化等作介绍;二是积极开拓校外实习基地,通过选拔一批优秀的学生进驻企业进行实习,可以采取校企联合培养的模式,从而实现高校与企业的双赢。
SWEBOK V3 中软件工程知识更偏重企业实践。为了更好地培养学生,必须要建立一支既能上好课又具有企业项目开发能力的师资队伍,软件工程专业的教师既要讲授软件开发和维护的知识,还要讲授软件工程管理、配置管理等方面的知识,而这样的要求与当前软件工程专业教师的结构不匹配。当前,大部分教师是从学校硕士或博士毕业后直接走上教师岗位的,项目开发经验比较缺乏,对于SWEBOK V3 中的工程实践方面的知识教授经验不足。
面对这样的问题,解决办法有两点:一是聘请企业资深工程师来当专业教师;二是专业教师中,尤其是年轻教师,分批次地前往一些企业单位、培训机构进行学习培训,学成归来后指导学生进行相关项目的开发,提高教学水平。专业教师要始终和先进的软件技术保持同步,要不断地学习软件工程的新技术、新方法,不能落伍。
设立学生实践创新创业项目基金,支持学生科技兴趣小组和创新团队开展实践创新活动。鼓励学生参与导师科研课题的研究,并给予奖励学分。积极组织学生参加各级学科竞赛和创新实践项目,充分发挥学生的特长。这些实践活动可以有效地培养学生的沟通能力和创新能力,促进学生“个性化”发展和创新能力提高。
鉴于以上应用型本科院校软件工程专业对SWEBOK V3 的解读,建议应用型本科院校软件工程专业的专业培养方案中要融入以下几点因素:1.在专业基础课程中的数学和大学物理的教学中,要引入软件工程的基础教育基础知识,结合软件工程的知识来教授数学和物理;2.软件工程职业实践知识要贯穿到整个专业课程的教学中,软件工程专业课程的老师应该都具备企业工程背景,要潜移默化地对学生进行熏陶;3.专业课程的设置要循序渐进,如前期开设了Java 程序设计,后期可以开设Web 程序设计做为后续;4.软件工程的专业培养方案要引入专业新知识、新技术,可以作为讲座的形式开设;5.软件工程的专业课程要引入行业规定,要结合具体的业务领域形成有自己特色的专业方向。下表2 是建议性的专业课程体系,仅供参考。
表2 建议性的软件工程专业课程体系
本文通过阐述SWEBOK V3 的内容体系,分析该版本的SWEBOK 内容和第二版的差异和创新点,结合应用型本科院校软件工程专业的特点,对应用型本科院校软件工程专业建设在工程思维的培养、实践教学体系、校企合作、师资队伍建设和创新、创业实践活动等方面作出有益探索。