Scrum敏捷方法在软件项目管理中的应用
2021-11-22何晶
何晶
(北京软件产品质量监测检验中心,北京 100193)
0 引言
软件项目管理应用方法最早出现于20世纪60年代,最早的瀑布法成为当时社会环境下所有软件公司的普遍开发方法,现代社会技术的发展改变了现有的硬件环境,也让软件项目的管理面临要求更高的局面。原有的开发方法存在明显缺陷,让阶段和阶段之间存在着一定程度的矛盾。再加上软件项目开发过程当中本身存在的变化和不确定因素,尤其是日益变更的用户需求和计算机硬件环境的改变,对此确定软件项目管理措施也具有明确的现实意义。
1 Scrum敏捷方法与软件项目管理
1.1 Scrum敏捷管理方法的具体特征
敏捷项目管理概念与敏捷软件开发之间存在的密切联系,而敏捷软件开发的深度发展,使得某些极端项目的管理理念变得更加精确的具体,所以在有效的方法被提出之后,该管理概念也成为项目管理方面的一种统一化称谓。“Scrum”在英文里所指代的是橄榄球运动的“争球”,所以该技术将软件开发比作一个橄榄球队伍,队伍有着相应的比赛目标,并且在开发过程当中利用相应的技术和方法进行自主规划,通过互相交流合作,借助弹性化的问题解决方式来处理团队遇到的各种问题,确保团队中的每个人员都能达到既定的目标。从20世纪90年代开始,很多企业就用此类方法进行复杂产品的开发,且用户在框架当中的地位和作用也将发生改变,能够用技术手段完成过程构建,并且在调整的过程当中确保项目的行进方向不偏移最终目标。总体而言Scrum能够以经验过程控制理论为依据,对软件产品开发过程的可预见性风险展开提前控制,具有高透明度和检验特征。如果在检验环节发现某个方面无法达到既定的标准,或是导致产品可能无法满足要求,那么团队内部就会以此为基础对过程展开调整。在一些复杂的动态环境当中,各项工作之间本身具有关联性,它作为一种轻量级的软件开发框架,能够定位最高优先级的需求,在现有设计流程总结基础上,不断适应团队变化让有效工作最大化,每个参与者都能对自己的工作进行总结,将工作状态发挥至最佳水准。
1.2 软件项目管理的特殊性
在人类社会的各个领域当中越来越多使用先进的计算机技术,而软件项目本身立足于软件和产品的开发过程,产品特性和软件项目管理之间呈现的正相关关系,与其他领域的项目管理有着明确的差异,因此软件产品的开发过程实际上可以被视为是符合逻辑的指令运作过程,以信号发送来控制机器或人员的互动。定位模糊需求就可以了解到软件项目管理的特殊性,用以规划人力资源或成本控制来达到用户的需求和希望,实现项目管理的最终目标。软件项目管理概念涵盖的产品开发所必要的知识和工具,为了让软件项目能够按照既定的成本和质量要求完成,我们会考虑到软件产品本身在功能方面的需求。具体而言,软件产品开发环节的技术与管理方式将直接关系到计算机通信技术发展水平的阶段性特征,在某些软件项目的运作环节,功能需求多样化且没有标准的软件过程时只能从软件开发的各个阶段中来推测有关情况。按照敏捷软件项目管理的理念而言,相比于传统软件开发过程,它更加强调用户的需求变化与项目成本风险控制,让敏捷管理方法更加适用于一些成本风险日益增加的软件开发项目,并且可以尽早规划有价值的产品而提出下一步的明确需求。这样一来,用户在开发过程当中就可以了解到设计环节的一些重难点问题,通过相应的步骤处理以减少复杂局面[1]。
2 基于Scrum敏捷方法的软件项目管理方案
2.1 管理团队构建
我们根据当前项目组织的具体要求可以了解到,如果要对项目组织结构进行调整,并维持整个生产环节的灵活性特点,Scrum敏捷方法无疑成为了项目团队重新构建时的主要载体,并以此为基础建立具有迭代特征的项目管理团队发挥自组织特性。无论是客户还是管理层等利益相关者,都可以共同确定产品的优化过程,了解团队当中的角色定位关系。
从角色来看产品负责人是项目的主要利益代表,它象征着整个产品线的利益,并且在确定管理方法和产品列表之后,就能确定不同产品的不同商业价值,从数据差异中了解产品任务的优先级。不能了解自己在整个任务列表中应该完成的目标任务,并且确定哪些任务目标的优先级最为突出,哪些任务目标可以暂时搁置。负责人会对产品列表的所有条目进行整合分析,从中确定商业价值的差异,并且负责人会有权接受或拒绝开发团队的软件增量。任何人想要改变软件条目的优先级,都需要先与产品负责人进行交流,这就说明产品负责人要承担具体的开发任务。
团队领导层则按照具体的价值观和既定规划,确保开发团队能够形成自组织和跨职能的高协调合作团队,让整个开发进程按照要求顺利推进,各个角色之间也能相互交流合作,需要注意的是,团队领导层不可兼任团队的产品负责人。
2.2 开发流程规划
在目前的软件行业当中,产品需要加速上市,才能在市场竞争中始终占据有利地位,传统的瀑布式开发方法让每个阶段在进入下一阶段前都需要完成当前的某些工作,但软件项目本身的需求会伴随着项目开发进程不断转变,这就需要在流程方面进行综合考评,让开发流程充分解决未来的各种问题。Scrum作为一个敏捷开发框架本身也是迭代的开发过程,使用产品任务列表确定软件产品的需求之后,可以在进行风险分析和设计的基础上完成测试和验证,最终调整计划确定产品的最终特点[2]。一个sprint就是一个迭代过程,具有时间周期特征,团队领导层会通过开发和评审的方式确定团队的未来发展目标。对于领导层和负责层来说,应该定期针对项目的可行性进行综合控制,或是与产品负责人展开沟通追加额外的任务列表条目。sprint提前结束时对应的就是任务列表的重新规划(任务列表条目既包含了已经完成的部分也包括未完成的部分),然后根据商业价值的评估结果,重新定位产品任务列表。不过是要注意的是提前终止必然会影响到团队的整体进程,在必要状态下需避免此类情况的出现。
2.3 Scrum工件管理
开发流程的实现过程需要设计产品任务列表,完成代办列表构建并且将产品业务列表中的具体信息再划分为小的独立任务分配给小组成员,按照既定的要求分类到相应的类别当中。产品任务列表本身是可以预知的所有任务,无论是功能性和非功能性的任务,还是产品负责人所负责的软件关键信息都需要考虑到软件项目的整体推进要求。所以如果软件项目处于开发阶段,且团队无法对任务进行准确预测时,基于任务时间的明确要求,就可以通过产品任务列表其发挥纲要性的作用,按照商业价值的差异定义产品功能和开发任务的先后顺序[3]。
2.4 计划会议机制
计划会议机制主要体现在项目初期阶段的工作目标创设,例如建立软件项目之后,会根据会议内容确定后一阶段的工作计划,一般来说计划会在问题解决方面会基于不同的问题展开考量。第一就是任务列表当中的哪些条目需要明确体现在产品的信息当中,二是如何确定具有最大商业价值的产品任务列表。整个团队在实现版本目标之后,也会按照会议的结果,确定版本目标涉及到的某些信息,将这些信息与产品负责人进行交流和反馈,以便于调整不合理的版本计划。必要时可推迟某些产品的发布日期。目前很多团队会在版本发布方面进行优化设计,其根本目的是为了保障产品的功能与规则符合既定要求,然后让版本目标在评审会议上会展开合理调整,但无论如何整体计划都不会偏离最终的大版本的目标。所以版本计划会议会为需要发布的产品或任务列表确定其商业信息和风险信息,在完成这项工作之前可能还需要行业专家的支持。产品开发环节的主要管理人员需要定位任务列表的明确要求,然后基于项目分析进度。此时他们也可以参与到项目构建的全过程当中及时调整问题并解决问题,作为团队协调者存在[4]。
2.5 项目管理辅助工具
为了配合项目开发,企业内部会采取项目管理工具来辅助整个软件项目管理过程,一方面用于规划和跟踪整体的工作进程,另一方面也可以便于团队之间进行沟通和共享。例如JIRA就是一种典型的任务管理工具,包括任务管理和缺陷管理方面的项目内容,具有强大的用户权限管理功能,且配置灵活,可以便于展开错误跟踪及扩展性和安全性都得到有效保证。另外通过相应的数据可以便于追踪和管理项目在推进过程中所耗费的时间。对于一些耗时较长的附加任务,也可以将其划分为多个子任务,在必要情况下调整工时然后提前预估项目的完成情况,推算最终目标是否能按时达到。
3 实施结果分析
3.1 生产力与任务水平提高
Scrum可以让团队根据自己的能力要求对任务列表进行综合评估,并通过自身在会议当中的讨论结果挑选自己熟悉的模块任务,这样一来就可以最大化节约达成任务目标所消耗的时间,即便要挑选自己不熟悉的任务,那么与其他成员进行交流互动之后也能了解不同任务涉及到的不同领域,对整个项目进行综合考察。通过敏捷方法的具体应用可以让有限的资源发挥良好的保障功能,实现生产利益提高和成本降低。
3.2 产品质量稳定
从产品质量的角度来看,团队能够不断产出高质量的工作让工作效率得到提升之后,就可以让以往的问题在系统内部进行解决,团队可以循序渐进产生高质量的结果输出,将缺陷遗留到下一个sprint当中。例如借助沟通与共享工具可以保障信息层面的交流沟通质量,并且将某些前瞻性的工作告知给相应的团队成员,每个团队成员也可以将自己的版本交换给其他成员[5]。
3.3 良好的响应时间和参与度
当产品的上市时间加快之后,团队整体的生产效率更加稳定,在保障开发功能的同时维持产品的发布特性,在满足客户基本工作需求的前提下,提升团队成员的整体参与度。例如团队工作成果在客户那里得到应用并发挥价值之后,团队内部的成员会具有成就感,在互相协作的过程当中建立更加融洽的工作氛围和工作关系。
4 结语
Scrum作为敏捷项目管理方法开发环节的重要实践项目,凭借着灵活的组织特点和高效的成员参与度,实现了扁平化管理和良好的互动反馈机制解决了传统软件开发过程当中的困境问题。总体而言,它作为一个极佳的敏捷项目开发管理方法,让过程项目管理变得更加有形,而可控软件的自我组织和自我管理工作方式,也能让所有成员积极配合并参与到全过程当中。在未来的工作实践环节,这些项目开发人员也需要在项目运行观念上进行调整,立足于项目实践工作进行优化和完善。