李雅彬
〔中国石化天津石油分公司 天津 300100〕
敏捷开发在油品销售行业软件开发中的应用
李雅彬
〔中国石化天津石油分公司 天津 300100〕
介绍了敏捷开发进行软件开发的原理方法和开发流程,对瀑布模型与敏捷开发模型进行了比较,阐述了目前在互联网环境下油品销售行业信息系统及软件开发中应用敏捷开发的软件开发管理方法,搭建符合目前业务发展需要的信息项目平台。
互联网 敏捷软件开发 油品销售行业 应用 探讨
在当今互联网环境下,经济全球化、经济信息化的潮流在不断壮大,各行各业的经营管理模式都在经历巨大的转变,油品行业自然也不例外。中石化目前正在大力开发各种新型经营方式,那么如何建立业务经营可以依托的信息平台,如何利用信息资源解决更多的用户需求成了需要研究的课题。作为时下非常流行的软件开发的方式方法,敏捷开发的各种特点也许能带来一些启发。
敏捷开发(Agile)不是指某一种软件开发的方式方法,而是一系列价值观和原则的体系。敏捷开发诞生于2001年,当时17位软件开发领域的领军人物聚集在美国犹他州的雪鸟(Snowbird)滑雪场,经过讨论,最终得出著名的敏捷开发宣言。适用于敏捷开发的方法有很多,这些开发方法拥有共同的特征:迭代式开发、增量交付、开发团队和用户反馈推动产品开发、持续集成以及开发团队的自我管理。
1.1 Scrum
Scrum是Agile软件开发管理方法中的一种。“Scrum”这个词是美式橄榄球中的术语,代表“争球”的意思,因此以此命名的软件开发管理方法也带着快速的、充满激情的特质。Scrum的核心思想和关键特性在于迭代,它将整个开发周期分为若干个迭代期间,每个迭代期间通常持续2~4周,称为“Sprint”。在每个Sprint的末尾,团队需要向客户交付一个潜在的产品版本。
在Scrum这种软件开发组织方式中,有三个主要的元素,分别为:角色、产品和会议。
Scrum中有三个主要的角色:产品负责人、主持人和团队。其中,产品负责人在Scrum中负责定义产品特性,拥有可以转化为产品的想法与方案。主持人负责保证整个团队的工作不受外界的干扰,主持日常会议并保证各项事务的正常运行。团队通常由开发人员、测试人员及文档人员组成,为了保证项目进展,团队中的每个成员一般需要担任多重角色。
其中Scrum产品或者文档包含:产品列表、Sprint列表和燃尽图。产品列表是产品负责人创建的一个具有优先权的产品特性列表,就是人们所熟知的用户故事,这些具有优先特性的用户故事将会变成产品。在每个Sprint期间,列表中的用户故事优先权会随着项目进展情况而发生变化和调整。用户故事,可用来描述产品特性的方式,采用“作为一个用户,我需要____,因此我才能实现____”的格式,这种描述用户故事的方式使得产品负责人能够分清任务的总量和细节,并且方便评估交付给团队的工作量。具有最高优先权的用户故事将会转化为Sprint backlog,这些用户故事已经被评估过工作量,并且会被提交至下一个Sprint。燃尽图,显示Sprint 列表的进度和完成情况,燃尽图在工作完成后的值应该是0。
在Scrum中有五个基本的会议形式: 待办事项梳理会议、Sprint计划会议、Scrum每日例会、Sprint回顾会议和Sprint 评审会议。
待办事项梳理会议是一个贯穿整个Sprint项目始终的活动,为了给即将到来的Sprint做准备,也为了保持产品待办事项有序,需要对产品待办事项进行优先级调整、增减、分解、归并及估算等工作。
Sprint计划会议是一个Sprint的开始,固定时长,在一个特定的time box内,团队共同选择和理解即将到来的Sprint中要完成的工作,内容包含在Sprint中要完成哪些工作,如何完成等。
开发团队通过每日Scrum会议来确认人们仍然可以实现Sprint的目标,会议每天在同样的时间和同样的地点召开。会议时长建议在30 min之内,每一个团队成员需要提供以下三点信息:从上一个每日Scrum会议到现在,我完成了什么; 从现在到下一个每日Scrum会议,我计划完成什么; 有什么阻碍了我的工作进展。
Sprint评审会议发生在每个Sprint的结束,由产品负责人、Scrum Master及团队成员共同对本次Sprint工作进行评价,是一个非正式分会议,来探讨目前产品的进展情况和下一步如何推进工作。
在每个Sprint结束后,Scrum团队共同进行Sprint回顾会议,会议目的是回顾团队在流程、沟通以及管理方式方面的做法。团队每位成员提出在本次迭代中哪些做得好,哪些做得不好,并找出潜在的可改进事项,为将来的改进制定计划。
整体来讲,Scrum流程大概如图1所示。
图1 Scrum概括
首先,产品负责人将产品待办事项列表进行优先级排序,并将优先级高的事项交付给团队,团队、产品负责人及Scrum Master在Sprint计划会议上对高优先级的用户故事进行讨论,并决定哪些可以进入到下一个Sprint里, Sprint计划会议的产出是将会被提交至下一个Sprint的Sprint待办事项列表。整个团队和产品负责人基于Sprint计划会议上的讨论对涉及到的每个用户故事充分的理解和沟通。一个Sprint是一个固定时长在2~4周的时间盒子,用来完成Sprint待办事项列表, 在整个Sprint期间,每日Scrum会议作为一个站立会议对团队正在进行的事务和困难今天讨论, 一个Sprint的产物是一个潜在的可发布的产品增量。 在Sprint的结尾,发生的是Sprint评审及回顾会议,Sprint团队在评审会上向产品负责人展示本次迭代的工作成果 ,在回顾会议上讨论如何优化工作流程。重复以上工作流程作为产品解决方案的方法即称为Scrum。
1.2 Kanban
看板(Kanban)开发方式是近年引起很多讨论和注目的一种敏捷开发实施,用于精益管理软件开发流程的新技术。看板方法源自丰田的“及时生产”系统。尽管生产软件是一项创造性活动,与批量生产汽车有所不同,但是生产线管理背后所蕴含的原理仍然适用软件开发及项目管理,David J. Anderson是将看板应用到软件开发和项目管理中的先驱者。
看板的核心思想是可视化及工作流程的形象化。简单来说,就是把工作细分成任务,写在贴在墙上的白板上,把任务按阶段命名好任务栏,每个任务栏都分两种状态——“进行中”和“已完成”。限制“在制品”(work in progress,简称 WIP)的数量,即明确设定限制在每个状态下同一时间能有多少工作任务。
组成一个看板(图2)的几个元素:任务清单,项目需要完成的任务集合;进行步骤,项目开发至完成需要进行的流程或步骤,步骤的名称通常是自定义的,按照当前项目的内容及形式确定。列,列是看板中非常重要的元素,通常分为两列——进行中和已完成,列表示了每一个看板步骤的质量。完成原则,每个步骤任务完成的原则由团队成员一起讨论确定。在制品限制是每一个步骤中允许存在的最大任务数,同时限制进行中和已完成两种状态的任务数量。
图2 看板示意
与Scrum不同的是,在当前Sprint中未解决的问题可延伸至下一个Sprint中,而在看板中,如果在某一阶段的问题存在未解决的,那么所有的任务都不能继续到下一个阶段,需要将当前阶段所有任务完成才能进阶到下一个节点。
在看板中,通常不以频繁的会议方式解决问题,因为整个进程完全是可视化的,团队中的成员每天通过看板可以认清自己的工作进度,做好如何完成工作的计划,节省了一定的项目时间,提升了效率,这也是一个可以警示和督促团队成员解决问题的优点。同时,看板方法更灵活,因为在看板中不存在时间盒子的限制,最终时间以项目结束时间为准,不遗留问题,保证了项目质量。
在瀑布模型中,通常来讲,仅仅需求调研阶段及项目计划的制定就需要几个月的时间,随后的产品建设阶段同样会花费几个月的时间,再后面就是产品测试、回顾及产品部署阶段。基于此,在整个项目进行中,如果市场上的主流技术发生了变化,那么很有可能最终以向市场提供了并不被需要的产品而结束。然而,由于最初的计划已经被开发完成了,所以这种模型下的开发方式存在着很多问题。
首先,需求调研及项目计划必须在所有工作开始之前得到确认。多数情况下,有些工作在没有完全被理解透彻的情况下就已经完成,一旦后续过程中后出现新的需求或者问题,那么返工工作需要退回至计划阶段,整个工作就要全盘重新开始,否则开发人员无法很好的理解项目的整体计划。类似的循环在一个软件开发过程中有可能重复出现多次,如果测试阶段遇到问题,那么工作点就会弹回至开发阶段,甚至计划阶段。
在多次的回退步骤和重复工作下,在帷幕拉开之前,需要数月甚至数年才能向用户提供一个可以闪亮登场的产品。瀑布模型的工作方式见图3。
图3 瀑布模型的工作方式
大家可以利用敏捷开发中的Scrum,一个用来提交复杂产品的可迭代的增量开发方法,将整个流程拆分成多个小的碎片,称作特性。首先,只需要计划如何开始建立一个最小单元的特性集,用来实现所计划的内容;接着,测试、回顾这个小的特性集,使它达到待交付的状态。当整个循环结束,会得到一个潜在的可交付产品。这个过程通常发生在2~4周的时间段里,之后就是不断重复这个过程,每个循环的末尾都会释放一定的产品增量,直到客户看到可交付的产品。在这个固定周期中的每个环节,都减少了客户见到可交付产品的时间,同时,特性集的小规格保证了每个过程的计划都被开发人员充分理解,并且由于迭代开发的灵活性,当新的需求或者问题出现时,使得项目调整的计划对整体以及其他迭代周期的影响降到最低。
敏捷开发用于瀑布开发见图4。
图4 敏捷开发用于瀑布开发
综上所述,相对于瀑布模型,敏捷开发具有以下特点:①更早也更快的获得客户反馈;②采用适应性的项目计划;③开发人员与业务人员之间的联系更紧密;④需求的变更可以发生在整个过程的任意时点;⑤为当前项目提供持续改进的机会;⑥高透明度。
3.1 敏捷开发方法论的应用要点
敏捷开发的应用,有三个主要的必要条件,也是应用难点。第一个就是应用环境,时下不断扩张的互联网环境提供了越来越多的多样、急迫的客户化需求,而Scrum快速迭代的特点正好满足了软件开发中的该类需求。由于可以快速地获取客户反馈,所以Scrum更适合中小型项目的开发与管理。第二个难点在于团队建设,笔者认为这是Scrum可以顺畅运行的最重要的保障,团队中的每位成员必须对Scrum的基本原则达成共识,遵守这些原则,并且拥有共同的目标,即是将整个项目按照客户的需求做好。Scrum的关键原则是每个团队成员必须共同遵守的:沟通机制的建立、减少不必要的工作量以及出席率。团队成员之间,团队成员与项目经理之间都要建立良好的沟通渠道和方式,探索该项目中可以改进和提升的部分,以保证问题解决的时效性和项目进展的高透明度;为了确保产品可以及时交付,团队要减少大量与该项目无关的工作,不受外界的打扰;要保证Scrum会议的出席率。
3.2 油品销售行业应用敏捷开发的条件分析
以S.W.O.T的视角分析,从优势上来讲,拥有高度重视信息化建设的领导班子,信息化认识水平较高,同时,经过多年的积累与发展,己拥有了一定规模的信息化基础和强大的开发管理团队,可以支撑信息化道路走得更深远;其次,说到弱点,目前石油行业可开发以及正在开发的信息项目越来越多,而缺乏一个集成化的平台,一个可以高效的管理多个项目进展情况的平台,在这个平台上,可以收集、整理、解决、跟进用户的需求与反馈。
在互联网环境下,各企业的经营形式发生了巨大的转变,作为成品油销售企业,为了适应市场的发展和变化,在业务经营方式上也需要进行一系列的创新。诸如微信营销平台、网上非油品电子商城以及一些基于网络的大数据分析系统等,这类基于互联网软件在管理上要求产品的交付时间短、变更及时,采用适应性的计划等,而迭代开发正好满足了以上的需求,这是应用Scrum的机遇。如果在软件开发与管理上采取Scrum的方式,仍存在着一些自身问题及挑战(Threat),那么,首先就是观念的转变,需要加强团队建设,在敏捷管理方法中,团队成员坚守敏捷开发原则的素质是至关重要的,加强对团队成员关于敏捷开发方式方法培训的同时要加强团队责任感。其次要建立团队之间积极沟通的机制,充分的沟通可以确保团队对需求的理解,可以吸取更多利于团队建设的建议,使整个团队可以目标一致,更高效率的完成工作。
3.3 如何实践敏捷开发
在实际的应用中,可以依据当前项目的大小、类型将Scrum和看板两种方法论结合在一起。从关键用户参与度考虑,整体信息项目及信息系统建设可以按照Scrum的方式分几段进行管理,具体任务的划分由项目的总体负责人依据项目的规模及时间要求把握,这样可以避免产品交付周期长、用户需求理解不透彻并存在误解,一旦出现错误变更需要返工的工作量巨大等不足。同时在每个阶段中,团队成员的管理结合看板模式,每个成员的任务以可视化的方式展现,每个Sprint内的任务计划完成情况由指定团队负责人负责,每日由团队负责人参加每日Scrum例会,向产品负责人汇报本团队工作完成情况,以及遇到的瓶颈和问题。这样,由于看板的在制品限制原则,可以避免过多的用户需求再转到下一个Sprint,保证项目整体的完成质量。
综上所述,作为传统行业的油品销售行业,想要在经济形势发生巨大变化的今天占有一席之地,必须适应当今瞬息万变的互联网环境。为了对客户多样、多变的需求做出及时、快速、准确的响应,就必须在信息平台及信息系统建设上融入敏捷开发的管理思想与模式,让信息化建设过程更加灵活开放,发挥油品销售行业软件对油品业务强有力支撑的现实作用,更好地为油品销售企业经营和管理服务。
2017-05-03。
李雅彬(1982-)女,本科,毕业于天津工业大学,工程师,现从事信息系统管理工作。