摘要:针对当前软件工程实践教学中存在的 “毕业生在学校学到的知识与企业真实需求存在差距” 问题,提出了基于自力更生的软件工程实践教学方法。该教学方法主要从“以学生为中心”“坚持创新能力培养”和“坚持校企合作的发展方向”三个方面来解决该问题。其应用可以促进学生在掌握基础理论知识的同时,结合目前最先进的方法、工具和过程,将软件工程能力提升到更高的水平,同时通过校企合作,服务于社会。
关键词:软件工程;实践教学;校企合作;创新能力;工作室
中图分类号:G642 文献标识码:A
文章编号:1009-3044(2022)01-0148-02
2020年华为董事长任正非密集地走访了包括上海交通大学、复旦大学、东南大学、南京大学、北大等在内的多所高校,引发社会广泛关注。2021年清华大学110周年校庆,习近平总书记提到“党和国家事业的发展对高等教育的需要,对科学知识和优秀人才的需要,比以往任何时候都更为迫切”。这些都透露出了当下社会对高校培养真正需要的人才的急切期待。在当下科技大爆发的时代,教学内容一不小心就落后了,学生获得的知识与能力不能满足社会需要的现象会比以往更为突出。针对这个问题,高校纷纷启动了教学改革。
上海海洋大学实施了以学生为中心的软件工程实践教学的改革[1],充分发挥了学生的主观能动性;国防科技大学采用了基于开源和群智的软件工程实践教学方法[2],强化利用外部开源的力量提升实践教学水平。福州大学采取了引入企业助教,采用真实、有价值项目驱动软件工程实践的方法[3]。曲阜师范大学在软件工程实践教学中引入了创新能力培养[4],改革老机制,迎接新工科时代。吉首大学与中软国际进行了深度校企合作,建立了软件服务外包学院[5],提升学校培养企业所需人才的能力。
无论是通过自身的教学改革加快发展,还是选择校企合作,都说明高校在积极面对当下存在的问题。但在各种校企合作办学中,也出现了一些不如人意的现象:在校企合作中,学生只是走过场或成为企业廉价劳动力。更有甚者,企业借校企合作的关系进行营销宣传将学生发展成培训班客户赚取学费。
那么该如何坚守高校教学的初心,为社会培养优秀的学生?为了解答这个问题,不妨思考下校企合作如何双赢,因为只有双赢的关系才会健康而持久。华为之所以选择式地拜访了一些高校,不难发现所拜访的高校普遍都在华为的成长过程中,向华为公司贡献了大量的优秀人才。所以一个高校要想与企业实现良性合作,自力更生做好自身教学是一条好的道路。
如何进行自力更生?结合自己在企业的经历和这几年的软件工程实践教学经历,总结出一套能保持持续发展的软件工程实践教学方法:一个中心,两个坚持。即以学生为中心,坚持创新能力培养,坚持校企合作的发展方向。
1 以学生为中心
年轻人充满活力,思维活跃,充分调动学生的主观能动性,促进学生自主学习、发扬团队协作精神对学生成长和软件实践教学的跨越式发展都至关重要。
以学生为中心的实践课程框架如图1所示。指导教师指定团队人数的合理区间,由学生根据项目管理、需求分析、软件设计、编码、测试、工具配置管理各岗位需要,自由网罗合适的人选组建团队,由每位学生的兴趣方向确定其在团队的核心职责。采用项目组的方式,锤炼了学生的团队意识、培养学生敬业精神。
团队成立后,由各团队自主确定具备实际应用价值的项目。指导教师只需适当关注题目合理性和可完成性。激发学生主观能动性,充分挖掘团队中每个成员的智慧。
项目的完成需要各团队根据自己项目的特点,选用合适的开发工具环境。需要去开源社区吸取养分,避免出现在枪炮时代你却还浑然不知,拿着长矛和大刀在拼命战斗。当今各种新技术层出不穷,各种商机稍纵即逝,软件开发方法也在不断针对性变革,比如持续集成CI(Continuous Integration)、持續交付CD(Continuous Delivery)、持续部署CD(Continuous Deploy)到开发与运维DevOps(Development and Operations)的出现。
如图2所示,在持续集成CI中,开发人员将会频繁地提交代码到主干版本库。这些新提交的代码在最终合并到主干版本库前,需要经过编译、代码静态检查、单元测试的自动化检验,快速确认变更的代码是可以跟库上代码集成在一起的。在持续交付CD中,得到一个可随时部署到生产环境的版本库。在持续部署CD中,实现了自动将应用部署到生产环境。DevOps则把维护也拉进来了,实现了运维的持续监控,促进研发、维护、质量保障QA(Quality Assurance)之间的充分沟通。在DevOps中,开发专注于业务应用的生命周期管理,运维专注于自动化环境资源的维护,QA专注于自动化业务运行环境的供给和质量跟踪保障。
在实际实施中,比如可选用版本管理工具Git管理代码库,选用集成工具Jenkins将版本管理工具、编译工具、静态检查工具、测试工具、打包工具、部署工具、运维监控工具等全部集成在一起,实现软件工程的自动化,提升软件过程的效率和质量。
在整个项目的实践过程中,教师只需响应各团队的困难求助,适度指导各团队的项目实践活动。最后各团队都需要参加项目的集中答辩,教师对各团队的实践过程和实践成果做出客观综合的评价,特别是超出常规的改进应该额外加分,并作为教学遗产保留下来,用于改进下届学生的实践教学。
2 坚持创新能力培养
软件工程即采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术与当前能得到的最好的技术方法结合起来,以经济的方法开发出高质量的软件并有效地维护它[6]。在用于评价软件机构的软件过程能力成熟度的模型CMM(Capability Maturity Model)的定义中,CMM优化级(又称为5级)指一个企业具备持续不断的改进其软件过程的能力[6]。从上述软件工程的定义和软件企业的CMM级别认证要求来看,都说明了软件工程不仅不是固定不变的,而且特别强调了持续改进的观点。在软件工程实践课程的教学中,我们必须让学生理解这点,在实践教学的各个环节融入创新的思想。
如何实施创新能力的培养呢?在软件工程的项目实践中,通过各个任务阶段的回顾会议,引导学生思考可以改进的地方,思考不舒服的地方,坚决打破学生墨守成规的心理。在软件工程实践的全过程,团队要始终坚持自我批判的态度,坚持持续改进,探寻更优秀的实践方法、过程与工具。
例如在项目的测试中发现数组越界或指针未释放,说明我们之前的人工代码走读会议存在漏洞,这时就可以通过分别加入上述检查项到检查一览表用来提醒下次或下届学生的人工代码走读活动,优化我们的人工代码走读活动。即便没有发现如何问题,在开发过程中,也应该坚持持续关注开源社区,以开放的心态去再次审查当前的实践活动,把当前了解到的最新最好的方法、工具和过程引入项目,而且还要站在巨人的肩膀上继续持续不断的实施改进。
总之,让持续创新的精神贯穿于课程实践的整个过程中,让课程实践的水平在一届届学生的努力下持续推升。相信有了这样的持续创新基因,课程实践教学一定不会落伍,教学能力也会得到不断积累和推升,最终实现在校企合作中贡献的是智慧而不是廉价劳动力。
3 坚持校企合作的发展方向
校企合作的框架如下图3所示,实践教学为学校的创业工作室提供优秀的人才支持;创业工作室负责具备实际应用价值的自拟项目的开发、参与企业真实项目的开发和参加校企间技术交流。创业工作室在项目开发或技术交流中,把发现的问题或获取到的信息及时反馈到教学上来,促进教学内容和方式的不断完善与进步。通过创业工作室这个载体,学生将课堂上学到的软件工程知识应用到真实的项目实践中,做到了学以致用。在真实项目的实践中,学生了解到了社会的真实需求,开阔了视野,收获了成就感,进而产生更强大的学习动力。
4 结束语
十年树木,百年树人。“以学生为中心、坚持创新能力培养”的自力更生是根本,不能动摇。经过持续自力更生获得的软件工程实践能力是校企合作中校方的价值所在,校企合作可以为我们的自力更生创造更好的环境。随着独立自主发展得越来越好,会有更多更好的机会进行校企合作,促进双方高质量的发展。
參考文献:
[1] 葛艳,邹一波,袁红春.“以学生为中心”的软件工程实践教学培养方案设计与实施[J].实验技术与管理,2020,37(8):162-166.
[2] 毛新军.基于开源和群智的软件工程实践教学方法[J].软件导刊,2020,19(1):1-6,286.
[3] 张栋,苏晓强.开放模式的软件工程实践教学探索[J].计算机教育,2016(7):149-153.
[4] 齐苏敏,公冶小燕.面向新工科的软件工程实践教学体系研究[J].软件导刊,2020,19(12):113-116.
[5] 徐洪智,覃遵跃.校企合作共建软件工程专业实践教学体系[J].实验室研究与探索,2013,32(6):128-130,160.
[6] 张海藩,牟永敏.软件工程导论[M].6版.北京:清华大学出版社,2013:5-7,331-334.
【通联编辑:王力】
收稿日期:2021-05-06
作者简介:董建华(1978—),男,湖北孝感人,助教,硕士,研究方向为软件工程。
3559500338237