周秋平, 范庆春
(合肥师范学院 计算机科学与技术系,安徽 合肥230061)
随着我国软件产业的快速发展,市场对软件人才的需求日益增加。长期以来,由于培养目标单一、培养过程与企业需求脱节,高校软件类人才培养不论在数量上还是在质量上都不能满足产业高速发展的需要,无法为产业的发展壮大提供强有力的人才支撑,由此产生了软件需求快速增长与软件人才极度缺乏之间的矛盾。
针对这些矛盾,近几年我系围绕着如何培养计算机应用型本科人才进行了大量的改革实践,本文结合这些实践就应用型软件工程人才的培养模式进行探讨。
当前,很多地方院校的软件工程专业培养方案,都是在国内示范性软件系软件工程专业培养方案或者对原有计算机科学与技术专业的培养计划的基础上进行修改,培养计划的偏差最终将导致人才培养无法实现专业细化,达不到企业对软件工程人才培养目标的要求。
地方院校的软件工程专业的实践教学并没有按照软件开发流程进行实践教学安排,更谈不上如何根据软件工程自身的生命周期和软件工程管理的需要进行实践教学的安排。很多地方院校特别是“二本”院校的软件工程专业只有4、5年的历史,由于教师大多缺乏实际项目经验,或其实际的经验已经落后于当前企业的先进开发模式和方法,因此通常是片面强调理论教学。而理论教材相对于不断涌现的新技术、新方法、新工具,如面向对象技术、面向服务方法、Rose工具等又更新迟缓。另一方面,学生由于缺少实际项目的开发 经 验,不能 很 好 地 理 解所学理论知识,不知道应将自己所学用在哪里,甚至会认为这些理论枯燥乏味进而失去主动钻研的兴趣。导致学生学习完这门课程后仍然难以独立面对一项完整的软件项目开发。在进行软件开发时会出现许多问题,如文档不规范、建模方法使用混乱、不会采用CASE工具、软件项目估算与度量没有方法、较少进行软件测试等。这样的毕业生是无法满足社会的应用需求的。
根据专业定位和人才培养目标确定人才培养体系中理科、工科和工程教育课程的比例,软件工程专业人才培养方案需整合计算机科学与技术传统课程知识体系,删减与软件工程知识领域相关度较小的课程,适当缩减科学教育的比例、增加工程教育比例。在强调计算机传统核心课程基础之上,整合硬件课程,增添软件工程专业的核心课程,尤其应突出设计、测试、研发、过程和管理等产业需求的软件开发技术和工程性课程,课程设置强调实用、复合,以达到学以致用的目的。
应用型软件类人才培养要求几乎覆盖了软件工程领域的知识体系的所有部分,该统一软件工程知识体系是所有相关课程的纲。理论上重点讲述需求分析、总体设计、详细设计、编码、测试和维护各阶段的方法和技术。实验方面重点掌握各种工具如Rational Rose、Power designer等的应用。在教学过程中要对学生灌输软件质量的重要性,使其了解CMM、软件测试等内容。培养应用型人才,只设置这一门课程是远远不够的,该门课程还要与其他课程,例如“面向对象软件开发方法”、“面向对象程序设计语言”、“软件项目管理”、“软件测试”等课程进行有机结合,才能培养出知识全面、职业素质高的应用型软件人才。
教师梯队建设是“软件工程”课程教学的灵魂。要做好软件工程课程的教学,培养应用型软件人才,最主要的是打造一个高质量的教师梯队。对于“软件工程”课程的教师梯队的教师来说,不仅要有丰富的教学经验,还要有先进的实际经验。在教学中,教师不仅要讲授知识,还要讲授管理项目的开发过程,并且要对学生进行项目开发、从业规划、职业道德等方面的指导。鉴于软件工程技术更新速度快等特点,引进软件企业的实际项目,让教师结合实际项目进行软件开发综合训练。软件开发实训严格按照软件工程开发流程进行,通过软件开发课题研究,培养教师的实际软件项目能力。
同时,要坚持对教师进行长期新技术培训,使教学保持先进性。长期培训也不可能保证教师掌握所有的新技术,因此需要探索一种与掌握先进技术的企业进行良性互动的办法,采取“请进来、送出去”的模式。聘请企业中掌握先进技术的高级讲师来为学生讲课,以便任何时候都可以最好地满足教学的需要。同时把教师定期送到企业去参加企业实际项目的开发,使其摸清市场的需求,及时调整教学内容。
有了优秀的教学队伍和先进完整的教学内容,还需要通过采用有利于激发学生学习兴趣的新颖的教学模式,使学生掌握教学内容,并且在学习中提高分析问题、解决问题的能力。“软件工程”课程主要内容涉及指导软件开发的原理、方法、工具。软件工程的理论和方法是从众多软件开发实践中总结出来的,但本科生往往缺乏软件开发实际经验,很难理解教师单纯讲授的理论知识。在“软件工程”课程教学中引入案例辅助教学能有效地提高教学质量。针对课程中的每个重要知识点都应配备若干相关小实例。同时在整个课程教学中设置1~2个贯穿始终的综合案例。综合案例尽量选取学生容易理解的通用项目,如学生管理系统、宾馆管理系统、网上人才招聘系统等,而不选用专业性强的项目,如财务管理系统等。综合案例为一个较为实际的软件系统开发过程,包括问题定义、可行性研究、需求分析、总体设计、详细设计、编码、测试等阶段,还包含各阶段中涉及的任务、技术、方法及工具。
知识点对应的小实例,由教师在上课时使用,辅助学生深刻理解所学知识点。大的案例通过软件开发过程贯穿课程始终。在进行需求分析之前,教师把综合案例布置给学生,要求学生按3~5人一组组成一个个小的开发团队,充分发挥团队协作精神,共同完成各阶段任务。每个阶段前,教师提出该阶段要求、要完成的任务和使用到的工具,小组成员通过查阅文献、研究分析完成该阶段任务。小组提交阶段成果后,由教师进行点评,同时给出该阶段的参考文档,学生则对照参考文档找出本小组遗漏和不足之处并进行改进。
在这样的过程中,以学生为主体,教师起引导和辅助作用,大大激发了学生的主动学习研究兴趣。既锻炼了学生分析问题和解决问题的能力,又使其牢牢地掌握了该课程的内容。
案例教学虽然收到了良好的效果,但毕竟只是在教学环境中完成的,与企业应用还存在一定的距离。要想达到与企业应用无缝对接,还要及时进行企业实训。企业实训是把学生放在真实的企业项目开发环境中,使其严格按照企业的开发流程和管理流程去完成实际软件项目的过程。目前,很多高校已经对企业实训进行了一些有益的探索,也创建了一些实训基地。如何更好地利用实训基地,收到最佳的实训效果呢?笔者认为,这些基地的建设必须要根据学生的实际需求,保证在不同阶段都能发挥最大的作用。另外,强化实践环节不仅仅是加大了企业实训就万事大吉了,实际上只有校内实践环节达到了一定的水平,企业实训才能够取得更好的效果。正是有了案例教学打下的坚实基础,学生才能很快适应企业实训环境,并且在完成实训任务的过程中进一步提高自身专业技术水平和职业素质。
我们聘请企业授课教师、高水平企业技术骨干作为学校课程指导小组顾问,并定期聘请国内外有丰富实践经验的企业家、技术骨干为学生开设相关专业课程,最大限度地拉近了理论与实践的距离,拉近了学生与企业之间的距离。我们还定期举办专场讲座或技术报告会,请一些著名IT公司的高级技术、管理专家给学生作专题讲座,让学生及时了解最新的业界动态,跟踪1T领域的最新研究成果,从而保证了学生既能掌握软件工程领域坚实的基础理论和宽广的专业知识,又能掌握解决工程问题的最先进技术方法和实用的技术手段,让他们有较强的知识、能力和素质去适应多变的社会需求。每位软件工程学生除了配备双向选择的校内指导教师以外,还配备由实习单位推荐的一位具有丰富工程经验的企业人员作为校外企业指导教师。企业导师着重对实习和毕业设计的各个环节进行具体指导和严格把关,校内导师则是对学生进行设计思想的理论指导和毕业论文的指导。同时,系还设专人对学生实习过程进行跟踪、指导与控制,在双导师之间积极促成沟通,共同完成对软件工程学生的指导。
地方院校制定相应的教学计划进行人才培养,配合实践平台使学生积累一定的工作经验,将有助于紧随市场动向,降低高校人才培养的风险,降低企业的人才培训成本,缩短毕业生的职业选择范围和适应周期,在全球金融危机的背景下,这无论是对学校、个人还是对企业而言,都是一种灵活的、经济的、高效的选择。
随着我国软件业规模的不断扩大,软件人才的需求量越来越大,地方性院校软件工程专业正在成为培养软件工程人才的主力军。如何探索出一条切实可行的专业建设和人才培养之路是值得我们研究的问题。地方院校应该结合自身特点、转变观念,多方探索,才能培养出适应信息社会快速发展和市场需求的高素质实用型和创新型软件人才。
[1]周秋平,范庆春.软件工程课程教学改革研究[J].合肥师范学院学报,2008(6):65~68.
[2]刘晓明,刘显德.基于应用型人才培养的“软件工程”课程教学方法研究[J].中国电力教育,2011(8):81,83.
[3]方元,陈利燕等.地方高校软件工程专业应用型人才培养模式[J].黄冈师范系学报,2010(12):81,82.
[4]干红华,等.工程型国际化软件人才培养模式的探索与实践[J].计算机教育,2008,(13):30,34.
[5]张广泉,杨季文.面向校企合作的软件工程人才培养模式探讨与实践[J].计算机教育,2008(21):29,32.
[6]刘晓明,刘显德.基于应用型人才培养的“软件工程”课程教学方法研究[J].课程教材,总第195期:81~83.