基于SCRUM的大型软件开发模型的研究

时间:2022-10-23 09:50:51

基于SCRUM的大型软件开发模型的研究

摘要: 该文首先介绍了传统的软件开发模型及其缺点,接着引入了敏捷开发的基本思想和SCRUM的敏捷开发方法,然后基于多年的大型软件开发经验和项目管理经验,提出基于SCRUM的大型软件开发模型,吸取传统开发模型中的优点,给出详细的软件开发流程。

关键词: 敏捷开发;SCRUM;软件开发模型

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2013)13-3043-04

1 传统软件开发模型

传统的软件开发模型有瀑布模型,V模型,增量模型,迭代模型,螺旋模型,快速原型模型等。其中瀑布模型是最早出现的软件开发模型,1970年Royce提出,直到80年代早期,它一直是唯一被广泛使用的软件开发模型。瀑布模型的核心思想是将软件的生命周期分成可行性分析与计划、需求分析、软件设计、编码、测试及运营维护等六个阶段,每个阶段按照线性方式进行,当前阶段接受上一阶段的工作结果,实施完成所需的工作内容。当前阶段的结果需要验证,验证通过后,该结果作为下一阶段的输入,否则返回修改。此模型有很多变体,例如V模型等,但其典型性是只有当当前阶段的文档获得认可才可以进入下一个阶段。例如,在开发初期制定详细的计划,在计划中最终产品己被仔细研究,并且拟定规模说明,将一切详细资料都记录在案,通过验证后需求分析才算结束,然后进入下一阶段,也就是设计阶段。传统开发模型的主要缺点有:

1) 其突出缺点是适应不了一直变化的客户需求。现实中的项目在进行时,客户会不停的修改需求或者增加需求,导致项目开发滞留在需求分析阶段,无法有效地进入下一阶段,最终导致产品被延期。

2) 传统开发模型的线性过程过于理想化,早期的错误可能要等到开发后期才发现,例如设计阶段发现需求的错误,测试阶段发现需求或者设计的错误等,特别是开发后期才发现需求的错误,会带来非常严重的后果。

3) 客户在产品计划阶段提出需求后,直到产品Alpha/Beta测试才能见到产品,发现与预期的相差甚远,提出大量的改进需求,最终导致产品不成功或者被延期。

4) 传统开发模型的可行性分析与计划阶段要求明确需求,从而制定产品的计划与进度表,同时明确产品的成本及预算。但对于需求经常变化的项目,该阶段的成果没有任何意义,最终导致项目进度、成本等不可控。

2 SCRUM敏捷开发方法

敏捷开发是一种开发方法学,可以应对客户快速变更的需求。它强调以人为核心,采用迭代的方式,循序渐进地开发软件。敏捷开发方法强调以人为本,专注于交付对客户有价值的软件。在高度协作的开发环境中,综合使用迭代式和增量式开发方法,使用反馈来进行思考、反省与总结,不断地实现自我完善,从而达到软件的完美交付。

Scrum是被广泛使用的敏捷开发方法之一。Scrum是在十多年前由Ken chwaber 和Jeff Sutherland博士共同提出的,现在此方式已被众多大中小型企业使用,其中包括摩托罗拉、谷歌、雅虎、微软、华为、思科、SAP、GE等。Scrum是一个敏捷开发框架,是一个增量的、迭代的开发过程。在这个框架中,整个开发周期被分成若干个小的迭代周期,每个小的迭代周期称为一个Sprint,一般最多以30天为一个周期。在Scrum中,使用产品Backlog来管理产品或项目的需求,Backlog定义产品的所有任务,包括功能性和非功能性的任务。在定义Sprint时,Scrum开发团队从产品Backlog中挑选最有价值的需求进行开发。Sprint中挑选的需求经过Sprint计划会议上的分析、讨论和估算得到一个Sprint的任务列表,我们称它为Sprint Backlog。在每个迭代结束时,Scrum团队将产生可交付的产品增量。

Scrum定义的主要角色有:

1)产品负责人(Product Owner):该角色负责产品的远景规划,平衡利益相关者(stakeholder)的利益,确定不同的产品需求和优先级等。它是开发团队与客户或最终用户之间的联络点。

2)利益相关者/客户(Stakeholder):该角色与产品之间有直接或间接的利益关系,通常是客户或最终用户代表。他们负责收集产品需求,审查项目成果等。

3)Scrum负责人(Scrum Master):该角色负责指导开发团队进行Scrum开发与实践。它也是开发团队与产品拥有者之间交流的联络点。

4)团队成员(Team Member):即项目开发人员。

Scrum定义的标准流程如下:

1) 根据客户需求,定义产品功能列表Backlog以及每个功能的优先级。

2)召开Sprint计划会议,确立下一个Sprint的目标,划分并确定这个Sprint内需要完成的任务,标注任务的优先级并分配给每个成员。

3) 进入Sprint开发周期,在这个周期内,每天需要召开Scrum会议。

4) Sprint周期结束时,召开Sprint成果评审会议,将成果演示给产品负责人或者利益相关者。

5) 团队成员最后召开Sprint回顾会议,总结问题和经验。

6) 这样周而复始,按照同样的步骤进行下一次Sprint,直到产品交付。

我们将在下一章节详细介绍大型项目中SCRUM的角色定义、软件开发模型及具体的开发流程。

3 基于Scrum的大型软件开发模型

3.1 角色定义

基于SCRUM的大型软件开发模型中的角色、文档及产品的对应关系如图1所示,具体角色有:

1)产品经理,担任产品负责人的角色,由开发方承担,作为客户和开发团队的联络点。理解客户的需求及关注点,创建和维护产品的需求清单Backlog,并按照客户要求的优先级进行排序,使得最重要的功能优先实现。产品经理还需要对每个Sprint的结果进行评审和审批,并交付给客户。客户反馈的意见实时传达给开发团队,并调整下个Sprint的Backlog。

2)客户:负责收集编写产品需求,审查项目成果等。他们通过产品经理来设定产品的期望,传达产品的需求,设置产品功能的优先级。

3)项目经理,担任Scrum负责人的角色,负责指导开发团队进行Scrum的开发与实践。项目经理的主要职责有:

①根据每一个Sprint的目标,从产品Backlog中选择优先级最高的需求进行细化,制定Sprint的Backlog;

②召开Sprint计划会议、Sprint交付产品的评审会和客户反馈之后的回顾会,并根据客户反馈调整下一个Sprint;

③协助消除项目中的障碍,维护障碍列表,确保Sprint的交付;

④敦促项目中依赖的解决,维护依赖列表;

⑤控制项目的风险,维护风险列表;

⑥培训团队,提高生产力,确保SRUM流程的执行;

⑦评价项目过程的有效性、加强执行,确保一切工作按照既定的规范来运行,规划并进行必要的改进。

4) 项目开发组:产品交付要依靠团队的努力,团队的职能是交叉的,包含所有角色:开发人员、测试人员、系统环境支撑人员、文档编写、界面设计等人员。SCRUM团队是自我组织、自我管理的,团队中的角色是不分等级、不固定职能的,例如开发人员也可以做测试。

3.2 基于SCRUM的大型软件开发模型

为了提高开发的效率,并提高产品的质量,基于SCRUM的大型软件开发模型综合了传统瀑布模型、V模型等开发的优点,在SCRUM开发流程中加了新的环节,并对某些流程进行约束。图2为基于SCRUM的大型软件开发模型示意图。

SCRUM中每个Sprint周期的开发不是无序的。Sprint中每一个任务的需求是明确的,建议使用瀑布模型、V模型或快速原型等进行开发。根据功能的大小及难易程度选择合适的开发模型。关键模块或者技术难点,可以使用快速原型开发模型。较大的任务可以使用V模型,测试人员可以从需求分析阶段就开始参与。较小的模块可以使用瀑布模型,测试的工作等编码完成后才开始。这里的瀑布模型与V模型的开发流程,尤其是文档的处理,要比传统的开发模型简化了很多,详细开发流程见下一章节。

在传统软件开发模型中,大型的软件在功能测试和系统测试后,产品要交付给客户进行Alpha测试和Beta测试,Alpha测试用于模拟环境下的测试,有时候需要开发者在场。Beta测试用于在真实环境下的测试。Alpha测试和Beta测试后,客户反馈测试结果给开发团队,开发团队进行问题的修复或者功能的改进。Alpha测试和Beta测试对产品的质量至关重要,我们将Alpha测试环节和Beta测试环节加入到SCRUM的开发流程中,作为最终产品交付前的最后两个Sprint。

3.3 开发流程

3.3.1 产品 Backlog的定义

产品Backlog是产品的需求列表,列出需要产品的所有功能及优先级。产品Backlog是客户与产品经理共同制定的。客户通过产品需求规范、平台规范等文档的形式或者邮件、会议等沟通方式提出需求,产品经理作为客户和开发团队的联络点,理解客户的需求,并进行梳理,与客户共同制定产品Backlog,包括:

1)新的操作系统、新的平台等,如Android平台

2)功能方面的需求,功能点

3)非功能方面的需求, 如性能要求

4)问题的修复与功能的改进,如前面产品出现的问题

5)每一个功能的优先级,优先级反映客户的需求及关注点

3.3.2 Sprint Backlog的定义

3.3.2 Sprint的开发

Sprint Backlog被确定后,项目经理给每一个功能点指定开发者。项目开发者对每个功能点可以使用瀑布模型、V模型或者快速原型开发模型进行开发。如果使用V模型进行开发,开发者可以定义需求文档、设计文档等,测试人员也可以定义测试需求文档和测试用例设计文档。这些文档和传统的瀑布模型的文档不一样,传统的瀑布模型、V模型中,文档编写好后,需要经过严格的审阅,审阅修改完成后,一般不能再修改,即使后期要修改,需要严格的流程。Sprint周期一般较短,2周到1个月左右,要完成V模型的开发,需要快捷的流程及工具的支持。开发人员定义的需求文档,侧重于需求功能的描述及对应的验证规范,设计文档侧重于体系结构及外部接口等,而且这些文档在后期的Sprint中可以更新的,需要根据客户的反馈,增加需求内容或者更新需求,所以版本的控制非常重要。为了保证在该Sprint周期完成的功能复合规定的质量标准,每一个Sprint周期测试人员都要参与。测试人员根据开发人员的需求与验证规范,定义测试用例。功能开发完成后,测试人员负责功能的测试。

3.3.3 Sprint的成果交付与反馈

3.3.4 Alpha测试与Beta测

产品所有功能完成,交付版本给客户后,客户进行Alpha测试。由于产品开发的整个过程中,客户都见到产品,Alpha测试的反馈中,客户需求的变更非常少,更多的实际应用环境下问题的发现。Alpha测试的反馈,作为一个新的Sprint,该Sprint的Backlog列出所有的反馈问题,团队开发的主要工作是问题的修复。修复完成后,将产品交付客户进行Beta测试。Beta测试的反馈同样作为下一个Sprint的内容,该Sprint完成后交予客户进行验收,验收通过后,产品进行。Alpha测试与Beta测试的两个Sprint,需要在产品定义阶段进行定义,客户也可以根据需要选择其中的一个或者全部。

4 小结

传统开发模型不能适应经常变化的客户需求,而且客户在Alpha和Beta测试时才能看到产品,如果产品与用户的预期相差甚远,再提出需求更改已经太晚。而在SCRUM模型中,每一个Sprint都产生可交付的产品,客户可以见到产品,及时校正自己的需求。对于需求不太明确或者经常变更的项目,SCRUM的优势更为明显,越来越多的企业使用SCRUM来开发软件项目。对于需求明确的项目,传统开发模型有质量控制的优势。该文提出的基于SCRUM的大型软件开发模型,吸取了传统开发模型的优点,并在开发流程中综合使用瀑布模型、快速原型、V模型等,提高了产品开发的效率和质量。

参考文献:

[1] Pete Deemer, Gabrielle Benefield,使用Scrum的Agile(敏捷)项目管理介绍, v1.04[Z].

[2] The official SCRUM rule book[EB/OL].http:///.

[3] Mike Cohn.Succeeding with Agile:Software Development Using Scrum[Z].

上一篇:如何抓好中学课文背诵 下一篇:合理使用多媒体技术提高物理课堂教学效率