敏捷开发在校企互联网项目实践过程中的探索与实践

2022-05-29 22:30李娜任志宏张萍
电脑知识与技术 2022年12期
关键词:微信小程序

李娜 任志宏 张萍

摘要:引入真实的校企项目是促进人才培养的重要手段之一,项目成功的实践过程对于项目成员的成长体验尤为重要。该文选取校企项目之一的微信小程序作为敏捷开发试点,在项目的指导和交付过程中引入了Scrum敏捷开发方法,即在项目的启动阶段、执行阶段、结束阶段融合Scrum方法进行环境搭建、角色分配、产品Backlog划分、进度跟踪和控制、项目评审等核心环节,取得了预期良好的效果。在该校企项目的敏捷交付实践过程中,Scrum框架的应用有助于控制项目进度和提高项目交付质量,从而得到用户的良好反馈;同时也有效提升西安欧亚学院软件工程专业学生的实践开发能力和工程素养。

關键词:敏捷开发方法;Scrum框架;微信小程序;工程素养

中图分类号:TP393        文献标识码:A

文章编号:1009-3044(2022)12-0048-03

开放科学(资源服务)标识码(OSID):

基于“新工科”提出的问技术发展改内容,更新工程人才知识体系。将产业和技术的最新发展、行业对人才培养的最新要求引入教学过程,更新教学内容和课程体系,建成满足行业发展需要的课程和教材资源,打通“最后一学里”。推动教师将研究成果及时转化为教学内容,向学生介绍学科研究新进展、实践发展新经验,积极探索综合性课程、问题导向课程、交叉学科研讨课程,提高课程兴趣度、学业挑战度。西安欧亚学院软件工程专业自2018起搭建了一个产学研型项目孵化基地,从2018年起每年会引入一些真实校企项目,研发团队核心成员由来自多年企业工作背景的教师指导参与孵化基地项目开发的学生实践完成。

前面几年校企项目采用的是传统的瀑布模式进行开发,按照由需求分析、概要设计、详细设计、编码、测试和交付等阶段,瀑布开发重文档、轻交流,学生的文档功底比较薄弱,进而忽视文档、不看文档、导致后期产品交付严重超期、用户不满意最终产品的设计等软件危机的产生。基于以上经验,根据软件需求不是很明确、用户交付日期紧急等特点的校企项目,尝试引入近年来软件企业里盛行的敏捷开发方法,结合产业和技术的最新发展、适应行业对人才培养的最新要求。

1 敏捷开发方法

2011年2月11日到13日,17位软件开发领域的领军人物聚集在美国犹他州的滑雪胜地(Snowbird)雪场。经过两天的讨论,“敏捷”(Agile)这个词被全体聚会者所接受,用以概括一套全新的软件开发价值观。这套价值观通过一份简明扼要的《敏捷宣言》传递给世界,宣告了敏捷开发运动的开始。

敏捷开发是以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发,主要方法有极限编程(XP)、水晶方法(Crystall)、动态系统开发方法(DSDM)、精益开发(Lean)、Scrum等,相对于传统的瀑布式开发方法来说,敏捷开发过程具有透明性、每个迭代过程都有客户沟通检查、强调适应性而非预测性以及强调以人为导向而非过程导向[1]。敏捷开发方法具有快速交付、降低风险、适应变化、质量更好、持续改善、满意度高等开发优势。

2 Scrum框架

Scrum是目前全球最受欢迎的敏捷框架,Scrum联盟和敏捷联盟创始人之一Mike Cohn对Scrum的定义:Scrum是一个让我们关注于在最短时间里交付高质量商业价值的敏捷框架.所以Scrum不是方法或者流程,而是一个框架。框架则提供更灵活的平台,根据环境的不同,它可以采用不同的方法和技术[2]。

Scrum是一个用户开发和维持复制产品的框架,是一个增量的、迭代的开发过程。在这个框架中,整个开发过程由若干个短的迭代周期组成,一个短的迭代周期称为一个Sprint,每个Sprint的建议长度是2到4周(互联网产品研发可以使用1周的Sprint),可根据项目的复杂度决定。在Scrum中,使用产品Backlog来管理产品的需求,产品Backlog是一个按照商业价值排序的需求列表,列表条目的体现形式通常为用户故事。

Scrum团队总是先开发对客户具有较高价值的需求。在Sprint中,Scrum团队从产品Backlog中挑选出最高优先级的需求进行开发。挑选的需求在Sprint计划会议上经过讨论、分析和估算得到相应的任务列表,称为Sprint backlog。在每个迭代结束时,Scrum团队将递交潜在可交付的产品增量。Scrum起源于软件开发项目,但它适用于任何复杂的或是创新性的项目。

3 敏捷方法在校企合作项目实践中面临的挑战

欧美大部分IT企业已经采用敏捷开发,北美已经有55%的企业采用敏捷开发,像微软、谷歌、英特尔等世界名企已经广泛展开。而国内近几年受外企和软件外包的带动,中国IT公司也逐渐开始采用敏捷开发模式,但是由于敏捷开发对IT人才综合能力要求较高,很多企业心有余而力不足。学生在校只注重编程类知识的学习、所学的专业知识都是独立的,缺乏真实项目的实践,对自己所学的专业知识没有一个宏观上的认识,做真实项目时缺乏一定的沟通力和协调力。故IT界的转变推动大学课程的变革,学校培养人才的模式也要紧跟行业的变化,一方面教师提升自己紧跟时代步伐,保持行业知识技术的同步更新;另一方面,学生需要学到现阶段行业先进技术和工作方法,在以后的就业中能够更快、更好地适应企业的需求,做好强有力的支撑。

4 敏捷开发在校企合作项目中的引入与落地

为了更好地打通“最后一公里”,西安欧亚学院软件工程专业也创办了软件孵化基地,为了能把业界先进的Scrum开发模式引入校企项目的交付中,笔者以自己曾经在企业有过多年敏捷项目开发经验、2年企业Scrum Master背景出发,根据现有校企项目的特点,决定以西安欧亚学院创业孵化平台的项目作为敏捷开发的试点项目。在项目正式开发之前对Scrum框架进行适当剪裁,选取适合项目的工具和方法,将Scrum框架逐渐落地。本文主要从企业级敏捷开发环境的构建、项目分组(角色分工)、价值驱动交付(产品的Backlog实现价值驱动)、迭代执行、项目评审等方面进行探索和总结。

4.1 企业级敏捷开发环境的构建

“工欲善其事,必先利其器”,为了让学生在校企项目的迭代开发中最大限度地体验到接近企业级的敏捷开发流程,我们前期搭建了企业级的敏捷开发环境。从基于团队开发的代码版本管理工具SVN使用、主流项目管理工具Jira的选用(可进行迭代需求管理、Scrum团队成员任务分配、项目进度监控、缺陷管理等)、到开发代码每天的自动化持续集成工具Jekins的部署使用,Jekins 可实现开发人员代码的自动编译和自动化部署的过程,在华为、汇丰银行等软件系统研发部门大厂的自动化持续集成都采用Jekins工具,该工具可提高开发人员的编码效率、可进行按需定时构建、实时化构建等非常灵活的代码构建过程,并且还能第一时间发现最新提交代码的质量,便于代码问题及时、快速地定位。学生通过代码开发过程中对环境、工具的学习和使用,提前掌握了目前企业级软件开发的主流工具链,开拓了学生的视野、激活了专业知识体系、提高了学习兴趣。

4.2 角色分配

Scrum团队由三种角色组成:产品负责人(Product Owner, 简称PO)、Scrum Master(简称SM)和Scrum开发团队。企业中,通常由系统架构师担任产品架构师担任负责人,由资深员工担任Scrum Master,由研发成员组成Scrum开发团队。一个理想的Scrum 团队建议在5~9人左右,推崇小团队和高效[3]。

本试点项目由1位多年ERP企业背景实战的教师和1位用户代表充当产品负责人PO,1位拥有多年企业敏捷开发背景的老师充当敏捷教练引导学生进行敏捷实践,13位学生组成3个Scrum团队,每个团队选出一个能力强的学生担任Scrum Master负责组内的工作任务安排、进度监控,每个组内的同学分别由大三、大二、大一不同年级结构的学生组成,实现程序员技术结构上的高级、中级、初级不同角色的划分,在整个项目开发中以端到端交付为目标、团队内以老带新,团队成员协作完成,有效培养了学生的领导力、团队协作力、团队沟通力、冲突解决能力等。激发学生的项目工匠精神,引导学生从真实职场角色定位来做出决策,团队成员不仅有Scrum Master, 也有Group Leader、Developer、Tester,尊重学生的兴趣选择,为学生日后就业能更快适应岗位需求、更专业、更优秀地工作打好基础。

4.3 价值驱动交付

基于敏捷开发的特点,选取需求不是很明确、用户需求变更频繁的项目作为敏捷开发的首选。《敏捷开发的艺术》强调:避免选择低价值的项目作为“学习机会”,因为这样做很难使客户参与并取得组织层面的成功。即使项目本身是成功的,组织上仍然可能认为项目是失败的[4]。文中以服务高校的产、教、资、政融合的一个关于创业孵化平台的项目为试点项目,该项目计划从2021年4月份需求调研开始到2021年10月底V1.0结束,通过面对面沟通引导用户列出自己产品的真实需求、按照商业价值交付的优先级协助用户梳理出本产品的功能列表(Product Backlog),在根据需求的优先级制定出每个迭代的冲刺列表(Sprint Backlog),整个过程由敏捷教练老师带领学生跳出以往仅仅关注编码的层面,真实体验企业级用户需求获取、需求定义的全过程,如图1所示是对需求从产品Product Backlog到迭代冲刺Sprint Backlog的梳理过程。以3周为一个迭代周期,每次迭代交付时必须经过产品评审、测试等闭环过程,验证已交付的迭代产品特性是可用的。该敏捷实践过程如图2所示。

4.4 迭代执行

基于敏捷开发的透明性的特点,从Sprint Planning 开始,让每个小组开始领任务,到带领学生做迭代任务量的估算,正式开发过程中采用白板的形式,开发人员将自己的任务写在便贴纸上粘贴在白板上,每天协调一个固定的时间进行10~15分钟的每日站会(Stand-up meeting),对项目的最新开发状态进行可视化动态收集,以及开发团队内遇见的Block issue,敏捷教练协调Scrum master帮助组内成员去解决,组内成员解决不了可以协调外部资源来解决,比如需求澄清问题,开发过程中遇见不清楚的需求还是需要跟PO人员进行面对面的沟通交流,进行需求的再次确认。

敏捷开发整个迭代过程的执行非常重视成员之间的沟通交流,从而激发了学生在项目开发过程中的主动性,培养学生项目执行过程中的计划能力、沟通能力、问题表达力和问题解决能力。通过迭代过程的执行,培养学生工程化的思维方式,面对问题如何从降低风险发生的角度去思考解决,从而播散下项目风险管控的思想种子,在他们在以后的IT从业中生根发芽。

最后每个迭代交付前给用户做产品Demo,收集用户的反馈,快速响应变化,确保交付客户的产品是可用的产品。每次迭代的回顾会议,引导学生们总结好的开发经验分享、需要感恩的人和事、思考后期迭代开发中需要提升的地方。让学生善于总结、善于思考,不仅收获技术上的成长,也要收获乐观积极向上的心态。经过两轮的迭代交付,团队成员对迭代开发的流程已经掌握,知道每个时间点应该关注什么样的具体事情,为日后的敏捷开发积淀了宝贵的实战经验。

4.5 项目评审

敏捷开发流程的全过程都无时无刻不贯穿着评审环节,试点项目主要从下面几个维度对项目进行评审:

第一,从每个迭代的Sprint Planning开始,加入需求评审,由开发人员进行需求反串讲,邀请PO和整个敏捷开发团队成员参加,检查开发人员对需求的理解是否正确。遵循了敏捷宣言中个体和交互胜过流程和工具,客户合作胜过合同谈判的原则。该过程锻炼了学生对项目需求的把控和理解,真实体验到需求评审环节对于项目成功的重要性。

第二,测试人员每个Sprint之初要设计一个测试分析,确保相关任务的开发人员参与并评审过程,开发人员与测试人员对需求分析用例设计的正确性、完整性达成一致,避免后期开发人员造成代码分支或者条件判定的遗漏、功能的缺失等,降低代码层面的低级错误。测试驱动开发的理念有效提升代码开发的质量,该过程极大地让学生从测试角色的角度去检测自己代码设计的覆盖率。

第三,每个Sprint 收尾阶段,团队会做一个Retrospective meeting(回顾会议),团队成员头脑风暴总结出该迭代时期做得好的方面,然后发现做得不好的方面,最后提出团队在下一个Sprint阶段将如何改善。鼓励团队成员在敏捷开发过程中关注内部的持续改进,经验分享。该阶段的过程体验启发了学生在日后的工作岗位上如何成为一个善于思考、善于总结、迭代成长的IT职业人。

5 结束语

本文介绍了敏捷开发在西安欧亚学院微信小程序合作项目中的实践探索,从企业敏捷开发环境的构建、到项目分组、价值驱动交付、迭代执行、项目评审等过程中,学生使自己的专业知识在实际项目中融会贯通,激发了专业课学习的动机,与传统瀑布开发模式相比,敏捷开发过程更注重的是人与人的沟通交流、交付价值驱动、小步快跑的节奏,不仅激发了学生的硬核编码能力,还培养了学生的团队协作能力、沟通能力、冲突解决能力等核心软实力。尽管项目一期交付可以成功地满足用户的需求,但是还需要在后续新特性的迭代开发中提高对于敏捷框架中基于价值交付实践的提升,同时整个实践项目基于角色体验让学生提前感受企业氛围,进而提高学生的职业技能和职业素养,更加容易适应社会需求。

参考文献:

[1] 张敬周,钱乐秋,朱三元.Agile方法研究综述[J].计算机应用与软件,2002,19(6):1-9,54.

[2] Goldstein I. Scrum捷徑:敏捷策略、工具与技巧[M].北京:清华大学出版社,2019.

[3] 叶俊文.融合Scrum敏捷开发的标准研制项目管理模式探索[J].中国标准化,2019(5):38-43,53.

[4] Cohn M.用户故事与敏捷方法[M].北京:清华大学出版社,2010.

【通联编辑:代影】

猜你喜欢
微信小程序
基于微信小程序的停车位租赁平台设计与实现
微信小程序在高校英语教学中的应用
微信小程序对大学生使用APP意愿的影响
基于微信小程序的点餐系统
基于Webpy+Apache HTTP Server 微信小程序架构搭建研究
基于CNKI的微信小程序研究文献计量分析
当图书馆遇上微信小程序