卓有成效的敏捷开发流程

随着带的团队做的事情越来越多, 发布的产品也越来越多, 关于软件开发的流程的思考也越来越多.前段时间的高效虚拟自适应团队是在历经困难后磨练出来的方法的总结, 在此基础上,又经过几个版本发布的洗礼,对之前的认识又有了更新,更深入的看法. 在此特提炼出一套方法论, 供大家参考.

一个软件从开发到上市(我们抛去维护部分), 一般需要经历阶段有 需求分析, 方案设计, 开发方案设计(包括概要设计, 详细设计等), 测试, 交付. 相信这些名词在软件工程中大家都能找得到, 那在这些过程中, 具体怎么实施呢?

先看下面的流程图:

一. 前期准备阶段

    有很多人不太重视前期的准备, 或者不太在意这方面的事情. 还有一个问题, 前期的准备要准备到什么程度?

在我这里, 前期要做好三件事: 需求分析工作, 数据分析工作, 概要开发方案

需求分析: 这部分就是我们的专业需求人员所要处理的事情. 主要负责把本次版本中的功能分析清楚.我们一直强调一点, "需求要明确", 不允许在需求文档中出现类似"跟XXX一样"等这种含混不清的字眼. 一般来讲, 分析到此业务的背景, 解决的问题, 用户的操作场景, 有这些信息有可以了.

数据分析: 尤其在我们的计价软件中, 定额库是不可缺少的东西. 他是你程序能够运行的前提.对于数据如何制作, 用何种方式制作能,制作成什么格式是最省力的, 对开发, 对数据人员的加工量是最少的, 能否支持程序运行. 数据的存储的介质,格式决定了后面的开发方案

开发方案分析: 目标达到能说清楚这件事怎么做就可以了. 内容格式方面可以自由扩展. 可以以下面的我的分析方案为参考:

可参考我之前的博客:<<概要设计 --需求定义及描述方式>>

http://blog.sina.com.cn/s/blog_48258fbe0100b54a.html

图2(需求分析格式)

 二. 方案评审

    这一步是必须的. 让业务专家, 或者有经验的人给你把下关.这样对你的方案是一个很大的补充. 一个人的想法很难保证想的很全, 所以, 可以经过这个环节进一步充实你的方案.等这一步完成后, 你会形成项目列表. 就是针对每个开发功能, 拆解为详细的开发步骤, 并估算出工时, 如下图所示:

图3(任务分析明细图)

这样有助于你完成更为详细的开发计划. 一定要把任务项列细了, 越细, 对后面的进度控制就越有帮助.

三. 项目启动会议

    正如我上上篇文章所说, 这个过程的好坏会对后面的开发任务有很大的影响.在这个过程, 重点是进行需求交底. 把前面的分析结果再加上已经评审通过的内容做成PPT, 给整个团队成员做讲解. 让团队中的每个成员都能知道

我们很难保证让团队中的每一个人都能把所有的业务都理解的很清楚, 这是很难办到的, 但可以保证的是,当这个任务为某个人做的时候, 他会更专心的去听这块内容, 对于要执行者,他是最为关注的. 这样当需求交底完成的, 可能是大部分人对需求都有所了解, 理解度在20%~60%左右吧, 但执行此任务的人理解度应该能达到90%左右. 不用担心, 我们后面有办法让那些只理解20%的人也能掌握另外的没掌握的内容.

当需求交底完成后, 就要开始进行方案交底了, 一般你会把之前分析的内容给大家讲出来, 并给出自己的一套默认的开发方案,然后由大家来评审这个方案如何.

在这个过程,有开发, 有测试, 有需求, 有数据,都会从不同的角度去分析此问题.在讨论过程中,那些本来可能还是太懂的人, 结过这么讨论,就会更明白了许多. 这样, 其理解度会上长到50%应该是没问题的.做为主持者, 当你发现某些人确实不在状态时,可采用单独提问方式来让他加深记忆,这都是可以的.

还有不太清楚业务的, 没关系, 下面我们就要根据前面敲定的方案来排定任务了. 因为已经经过了前面的方案讨论, 所以对开发的时间应该有所把握, 这时,对于不清楚业务而无法估算出时间, 或者为了估算出正确的时间以至不会让自己任务拖延的, 也要再熟悉一遍需求. 经过这样, 需求基本上就都搞清楚了.那最后就要出我们的作战图了:

图4(作战图示例)

之前也说过, 作战图的作用, 就是把事情盘点清楚(当然你也可以理解为"网络图"), 让每一个人所做的的任务都能具体到整个过程的位置, 地位, 清楚自己的任务在整个项目中处在什么样的关键位置上.

这就是作战图的优势, 把团队的目标凝聚在一起.

四. 迭代开发

   如上幅图所示, 我们有很多任务点, 任务项, 我如何能让在开发过程中, 让我们的团队更具有凝聚力, 更能向上呢, 答案就是自适应团队. 那如何才能实现呢.

那就是短周期迭代. 我们可以把每一个任务做成一个小周期的迭代. 你这个迭代必须是有交付物的, 没有交付物, 那就没办法验证你的成果.

在这个过程中, 我们只需要回答两个问题就足够了: 1. 能不能用. 2.有什么用. 当你进行完这个迭代后能回答这两个问题, 那么, 我就可以认为这个迭代完成, 可以进行一下个周期的迭代.

以前我们在排定任务的时候, 总是在想着这个任务开发完成后再交由测试去测.这样相当于开发与测试在并行, 相互的交集就比较少. 开发只管开发的事, 完了后修改BUG就行了. 而测试呢, 只需求不停的测试版本就行了, 什么也不用管. 这样带来的问题就是修改BUG不及时, 有可能会出现开发成了这个功能好久后测试才提出这个问题, 开发再去修改. BUG越往后修改效率就越差的. 所以, 应该想办法让任务风险前移.

当我给定一个开发任务时, 当他提交时, 应该是严格结过测试, 需求确认的. 测试的验证, 保证了该功能是"能用"的问题, 而需求的评审通过意味着该功能的"有用的", 自然也就是有价值的. 有用, 但不能用, 价值无法传递出去; 能用(可以使用), 但没用(此功能没有意义), 相当于做无用功. 所以在交付时, 一定是回答了"能不能用", "有什么用"之后的.

这样, 在排定任务时, 就把开发, 测试, 需求无形中绑定在一起了, 自适应何愁不来.

在迭代开发中, 过程监控的方式手段很多, 比如我们常用的: 晨会, 夕会, 周会, 每日汇报. 项目可的可视化方式也有很多, 比如常用的任务燃烧图, BUG趋势图, 明细任务显示图等.

说到这不得不提下每日汇报的内容. 每日汇报, 就是把当前的工作内容以可视化的方式呈现出来. 有本书叫"一页纸项目管理", 里面介绍的方法就很好, 我又把它本地化了下, 显示的方式如下图所示:

图5(每日汇报明细)

点击查看大图

这种方式能让你控制每一个小的迭代细节中, 能让你的控制更加周密. 大家可以不防试试.

关于任务任务燃烧图, 他是从整体项目上对你当前产品的进度做出的评价, 有利于你及时调整项目中的瓶颈问题, 如下图所示的燃烧图: 他的做法就是总工时, 已剩余工时之前的关系来决定的.

图7(进度控制超前的燃烧图)

图8(进度失控的项目)

结合这两种分析方式, 就可以看出项目中存在风险的项目是什么了.

五. 集成测试

    在这个过程中, 最重要的反馈产品质量的就应该属BUG趋势图了, 可以反应出当前产品的BUG曲线, 来预测产品的质量. 关于BUG管理工具方面, 现在市面上也有很多, 比较有名的像BUGFree之类的, TD也不错的, 不要收费比较高.

六. 最后就是发版了.

   自然要经过评审, 确认本次版本中依然存在的问题, 解决的问题内容.

时间: 2024-10-14 13:31:37

卓有成效的敏捷开发流程的相关文章

互联网公司的“敏捷开发”流程是怎么样的,每个职位的角色和分工是什么?

作者:暗灭 第一   为什么需要敏捷开发. 在几万年以前,软件项目的开发都是以年来计算的,这代表什么意思呢 ?需求设计了半年多,方案设计做了半年多,开发了三年多,测试了半年多,修改Bug用了半年多.总计花了很长很长的时间,然后上线后发现有很多需求已经不存在了,同时又出现了很多新的需求. 怎么办?继续改.这一改又是半年多的时间过去了.马丹用户的需求还再改,怎么办? 这是困扰软件开发项目的最大的问题,越大的项目,参与的人越多,风险越大.文档越规范,维护起来的难度就越高,导致项目中遇到的问题越来越多.

工作中敏捷开发流程梳理

接触敏捷开发差不多一年了,对它也有了一些自己浅显的认识,写这篇文章来给自己梳理梳理工作中的敏捷开发流程. 迭代周期 工作中根据项目普遍任务的耗时,采用10个工作日作为1个迭代周期,包括迭代计划会议.迭代开发和迭代回顾会议 迭代任务 迭代任务通常在feature到task的级别,任务主要由以下几个方面来产生:产品功能开发计划.产品功能研究计划.测试提交的上轮迭代未解决的bug和客户反馈的产品问题 1)     开发任务由产品专员在上一轮迭代中确定产品功能点,并产出功能设计文档,由开发在本轮迭代完成

敏捷开发流程,您缺一个这样的协作平台

近年来,在高科技行业,为了响应快速的技术迭代和产品升级,敏捷开发流程正成为越来越多企业的选择.企业希望通过敏捷开发模式,基于自身的线性发展,来获取非线性的创新与竞争优势. 敏捷开发宣言是这样重新定义研发过程: ? 个体和交互胜过过程和工具 ? 可以工作的软件胜过面面俱到的文档 ? 客户合作胜过合同谈判 ? 响应变化胜过遵循计划 敏捷开发模式的践行,并非易事.首先是团队观念的转变和组织变革,然后这些还并不足够,在敏捷流程中特别强调沟通的高效,快速而有序.要做到这样,您还需要一个协作平台. 敏捷开发

汇总敏捷开发流程细节

简单的说,敏捷开发以用户的需求进化为核心,采用迭代.循序渐进的方法进行软件开发.其核心价值观便是:沟通.简单.反馈和谦逊.而在敏捷开发过程中,也注重各方面的细节.如下,本文汇总了敏捷开发过程要注意的细节. 1.快速竞品分析 在动手设计前,第一步需要对市面上的同类竞品进行较为深入的分析,提炼出竞品的产品框架.各模块的设计特点,通过对比分析,总结出各竞品的优缺点,取其精华,取其糟粕,真正做到后来居上. 2.用户行为数据分析 有个竞品分析数据后,还需要结合用户的行为数据进行分析.所以需要通过访谈获取用

敏捷开发流程

敏捷开发以用户的需求进化为核心,采用迭代.循序渐进的方法进行软件开发.在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视.可集成和可运行使用的特征.换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态. 流程介绍 需求池 客户.业务部门.项目组内部等相关人员提出的需求,经过产品经理,转化成为可开发的需求,放在需求池. 迭代 一般的开发周期1到4个周都是合理,具体根据实际定. 每日早会 早会Daily

敏捷开发流程总结

Agile——敏捷开发,作为CMM神话崩溃后被引入的一套新的软件开发模式,这几年来被广泛引起关注,并被寄予厚望.敏捷开发在其它业界的应用是否理想不得而知,但下面总结了我所在公司的敏捷开发试验,希望能够达到管中窥豹的目的.敏捷开发宣言——个体和交互 胜过 过程和工具能够工作的软件 胜过 面面俱到的文档客户合作 胜过 合同谈判响应变化 胜过 遵循计划尽管右项也有价值,可是我们觉得左项具有更大的价值. 以上的宣言比較抽象,基于该理念,下面是ThoughtsWork咨询公司的推崇的n个敏捷开发实践:

敏捷开发流程及敏捷工具

敏捷开发,要求在开发过程中不断增强,从而提高软件质量,以达到提高商业收入的目的.它是一个迭代的过程,一个不断提高企业投资回报率和服务质量的过程.值得注意的是,成功的敏捷开发,单纯依附于活跃的开发过程和理解敏捷所带来的效益并对此有浓厚兴趣的企业用户.本文将介绍敏捷开发的五大过程及这些过程中所要用到的工具. 敏捷计划 典型的敏捷开发将整体工作分为一系列的发布过程,每个发布过程都是一个迭代循环,每个迭代循环都会发布一组功能特性. 敏捷计划规定了每个循环中所需要完成的工作(发布/迭代).在该阶段,产品所

中小企业团队敏捷产品开发流程最佳实践

近期因为疫情的影响,不少互联网公司开始尝试远程工作.也出不了少如何做好远程工作的方法,我认为不管是场地办公还是远程办公都依赖于原来的产品开发流程. 我曾经遵循CMMI5的流程管理过15人左右的跨国/语言/文化团队,也遵循敏捷Scrum管理过9人的小团队,还针对一个从4人发展到近30人的团队尝试过各种方式的项目管理方法,这其中有2C和2B的产品,也有平台/生态型产品. 最后在自己创立公司的5人小团队(场地和远程办公融合方式)中摸索出了我认为最适合中小企业产品开发流程与管理方法. 今天我们聊聊产品开

敏捷开发实施方案

今天把前段时间,给公司讲解敏捷开发流程的PPT文档发出来.由于近来比较喜欢用Markdown编写文档,发现博客园不支持Markdown编辑,有点失望.小小吐槽,O(∩_∩)O~ 敏捷开发实施流程 敏捷开发实施流程 1.迭代计划 2.每日晨会 3.看板 4.迭代验收 (ShowCase) 5.迭代回顾会议 6.敏捷使用管理工具 7.敏捷开发总结回顾 8.瀑布模式与敏捷开发区别 敏捷开发的最大特点是:积极响应用户的需求,快速高质量的交付软件; 其核心是:以人为本,发挥人的主观能动性. 1.迭代计划