敏捷开发体系在广电新媒体业务中的应用
2019-02-20钟宇霆
□ 钟宇霆
软件开发是广电新媒体业务的重要组成部分,传统的瀑布式软件开发方法希望通过借鉴成熟的建筑行业的做法,采用预先大规模的架构设计,对系统做好明确的分割,继而进行不同层次的设计,直到所有可以预见到的需求都得以满足,然后才开始进行的代码的编写和构建。采用这种方法生产出来的软件交付工期很长,适应性很差,除了少数特殊行业之外基本已经被市场所淘汰,现已无法满足常见的开发需要。敏捷开发是一种从1990年代开始逐渐引起广泛关注的新型软件开发方法,是一种应对快速变化的需求的软件开发能力。它描述了一套软件开发的价值和原则,在这些开发中,需求和解决方案皆通过自组织跨功能团队达成。敏捷软件开发主张适度的计划、进化开发、提前交付与持续改进,并且鼓励快速与灵活地面对开发与变更,使用敏捷开发方法可以更好地满足日常的广电新媒体业务开发需要。
一、敏捷开发体系特征
敏捷开发体系强调以用户需求演化为核心,采用持续迭代、循序渐进的方法进行项目研发。在敏捷开发体系中,软件项目在初期规划构建时就切分成为多个子项目,各个子项目的成果均经过测试,具备可视、可集成和可运行使用的特征。其主要特点如下:
(一)主张简单
软件研发经常受到由W.W.Royce 在1970年最初提出的瀑布式开发方法影响,这种开发方法是最典型的预见性的方法,严格遵循预先计划的需求分析、设计、编码、集成、测试、维护的步骤顺序进行。在进入正式开发之前必须通过计划的需求分析把项目的全部功能和模块规划好,这样就容易让非软件核心运行功能和支撑业务运营的功能需求分析在前期占用过多的时间;而敏捷开发体系主张简单,从支撑业务运营的功能和软件核心运行的功能作为核心需求,不需要过分构建软件,只基于满足业务运转的最低功能实现,从而满足快速上线的要求。
(二)拥抱变化
在现实开发工作中,人们对需求的理解也是不断变化的。在项目进行过程中,会不断有新人加入,也会有旧人离开,同时,需求也随着项目不断推进而有所变化。因此,项目的目标和成功标准也会发生变化。这就意味着项目环境要随着变化而变化,敏捷开发体系正是基于这个特点而被应用。
(三)可持续性
与瀑布式开发方法相比,敏捷开发体系不需要在一开始的时候就建模好一切相关的细节。只需要开发一个小的模型,打下基础,然后慢慢改进模型,或是在不需要的时候调整或重构这个模型,采用一个基础的版本进行递增的迭代,这样就容易开发出满足需要的软件,投入最基本的时间、金钱、设备等各种资源,使得投资收益最大化。
(四)有目的的建模
开发软件需要使用多种模型,因为每种模型只能描述软件的单个方面。敏捷开发体系仅挑选有需要的模型进行软件描述,不只是简单地把源代码、开发文档、设计文档等尽可能详细地描述,而是为了保证项目的顺利进行,使其他人能够操作、维护、改进系统,所以,敏捷开发体系使用能够描述工作的模型即可。
(五)高质量的工作
从开始采取行动,到获得行动的反馈,二者之间的时间至关紧要。和团队一起开发模型,想法可以立刻获得反馈,特别是采用了敏捷开发体系以后,通过项目会议、迭代计划、每日站会、会议评审和项目回顾的方法,能够建立起一套快速上线、快速迭代、快速满足需求的方法,实现以有效的方式,制造出满足需要的软件,而不是制造无关的文档,无关地用于管理的工件。
二、广电新媒体敏捷开发应用方法
在广电新媒体日常应用中,敏捷方法很多,包括Scrum、极限编程、功能驱动开发以及统一过程(RUP)等,这些方法本质上是一样的。敏捷开发小组主要的工作方式可以归纳为:项目会议、迭代计划、每日站会、会议评审和项目回顾。
(一)项目会议
项目会议目的是确定实现产品待办列表中要达到的项目目标的最低开发需求,它可以为开发团队提供指引,使得团队明确为什么要构建增量。项目目标也在项目会议中确定,它为开发团队在项目中所实现的功能具有指导意义和留有一定的弹性。在项目会议中选定的产品待办列表能够提供连贯一致的功能,也是项目目标的方向。
项目会议要求开发团队必须在工作中时刻谨记项目目标。为了达成项目目标,需要实现相应的功能和实施所需的技术。如果所需工作和预期不同,开发团队需要与产品负责人沟通协商项目待办列表的范围,以确保能够在最短时间内交付一个最低可以使用的版本。
(二)迭代计划
完成项目会议就相当于确定了项目目标和开发内容,开发团队就可以根据目标划分迭代计划了。在敏捷项目中,总体上并没有什么上游阶段、下游阶段,可以根据需要定义开发过程在初始阶段可以有一个简短的分析、建模、设计,但只要项目真正开始,每次迭代都会做同样的工作(分析、设计、编码、测试等等)。迭代是受时间框限制的,也就是说即使放弃一些功能,也必须结束迭代。时间框一般很短,大部分是2—4 周,在Scrum 中采用的是30 个日历天,也就是4 周。迭代的时间长度一般是固定的,但也有报告说,有的小组在迭代开始的时候选择合适的时间长度。
(三)每日站会
每日站会是开发团队的一个以15分钟为限的事件。每日站会在项目进行的每一天都举行。在每日站会上,开发团队为接下来的24 小时的工作制定计划。通过检视上次每日站会以来的工作和预测即将到来的工作来优化团队协作和性能。每日站会在同一时间同一地点举行,以便降低复杂性。开发团队借由每日站会来检视完成项目目标的进度,并检视完成项目待办列表的工作进度趋势。每日站会优化了开发团队达成项目目标的可能性。每天,开发团队应该知道如何以自组织团队来协同工作以达成项目目标,并在项目结束时开发出预期中的增量。
会议的结构由开发团队设定。如果会议专注于达成项目目标的进展,开发团队可以采用不同的方式进行。一些开发团队会以问题为导向来开会,有些开发团队会基于更多的讨论来开会。例如:昨天,我为帮助开发团队达成项目目标做了什么?今天,我为帮助开发团队达成项目目标准备做什么?是否有任何障碍在阻碍我或开发团队达成项目目标?
开发团队或者开发团队成员通常会在每日站会后立即聚到一起进行更详细的讨论,或者为项目中剩余的工作进行调整或重新计划。每日站会可以增进交流沟通、减少其他会议、发现开发过程中需要移除的障碍、突显并促进快速地做决策、提高开发团队的认知程度。这是一个进行检视与适应的关键会议。
(四)会议评审
评审会议一般在项目快结束时进行,用以检查所交付的产品迭代并按需调整产品待办列表。在会议评审中,项目团队和干系人协同讨论在这次项目中所完成的工作。根据完成情况和项目期间产品待办列表的变化,所有参会人员协同讨论接下来可能要做的事情来优化价值。这个会议目的是为了获取演示迭代版本的反馈并促进合作。对于长度为一个月的项目来说,评审会议时间最长不超过4 小时。对于较短的项目来说,会议时间通常会缩短。
(五)项目回顾
项目回顾会议是开发团队检视自身并创建下一个项目改进计划的机会。
回顾会议发生在项目评审会议结束之后,下个项目计划会议之前。对于长度为一个月的项目来说,回顾会议时间最长不超过3 小时。对于较短的项目来说,会议时间通常会缩短。
项目回顾会议的目的在于检视前一个项目中关于人、关系、过程和工具的情况如何,找出并加以排序做得好的和潜在需要改进的主要方面,同时制定改进开发团队工作方式的计划。
在项目回顾会议结束时,开发团队应该明确接下来的项目中需要实施的改进,在下一个项目中实施这些改进是基于开发团队对自身的检视而做出的适当调整。
三、结语
敏捷开发体系是一个非常简单的开发流程,也是满足当前开发环境的一个总结,通过这套开发方法,可以在需求迅速变化时实施产品迭代,改善团队交流并实现最优化合作,达到最大化生产效率。在广电新媒体业务中实施敏捷开发体系,能够很好地保障研发的持续交付和效率,还能解决研发团队关于软件研发的工作分配和积极性调动,为新媒体的应用研发提供了一个很好的解决办法。