项目管理:项目中什么叫完成,传统瀑布开发与敏捷开发的完成标准是什么??

  在做开发过程中,我们总是在问或是被问到:这个任务完成了么?这个版本开发完成了么?这个产品开发完成了吗?这个……。完成没完成我们都需要有个标准,这个标准是什么呢?今天我们就讲一下这个问题。

  首先,对于是否完成在传统开发和敏捷开发中都会有相应的定义或标准。在传统开发模式中,我们以典型的瀑布模型为主,介绍一下完成标准。

  在瀑布开发模型中完成标准主要包含有三种:项目完成标准、阶段完成标准、版本发布标准。下面就针对瀑布开发模型的三种完成标准,举例说明:

  1. 项目完成标准:

  1) 进度:不能超于合同提交时间XXX天。

  2) 系统测试缺陷密度<=5个/KLOC

  3) 成本花费应不能超于计划的XX%

  4) 验收完成项目管理培训

  5) 项目相关文档已归档

  6) 合同结束

  7) 结题评审通过

  等项目管理者联盟

  2. 阶段完成标准:

  瀑布开发模型一般包含:需求、设计、实现、测试、发布阶段。每个阶段都有自己的定性和定量的标准。例如:

  3、版本发布标准:

  1) 验收测试已通过

  2) 发布计划已制定

  3) 风险分析及措施已完成

  4) 回退、应急方案已制定

  5) 问题收集、处理机制已制定

       6) 运维团队已明确

  7) 所有计划、方案、机制已与用户和开发、运维团队评审通过

  8) 发布评审会通过

  9) 等

  项目、阶段、版本发布的完成标准应该在项目计划中制定并评审。在开发过程中可以调整,但是要走正式的变更流程。

  其次,随着现在敏捷开发的流行,越来越多的开发使用小版本迭代模式,从而实现小、快、灵开发。这里我们就以最流行的SCRUM框架为例,讲解一下在敏捷开发中都有哪些完成标准及其具体内容。

  敏捷开发中把完成标准成为DoD(完成定义)。根据各自的开发特点可以定义不同的DoD,一般来讲会有版本发布完成定义、迭代完成定义、故事完成定义、周完成定义和每天完成定义等等。可以看出,后面的完成定义实际上是保证前面完成定义的,是一个层层分解、细化的过程。下面我们就以典型的每日完成定义、故事完成定义、迭代完成定义、版本发布完成定义来具体讲述:

  1、 每日DoD:

  1) 搭建每日构建环境,晚上自动静态代码检查、编译、部署和测试,每日修复前一日构建和测试发现的缺陷和问题。

  2) 下班前必须Check in当天书写的代码

  3) 当天的代码必须在当天或者第2天邀请同伴进行代码评审

  4) 凡是检入的功能代码必须要有对应的单元测试

  5) 当天集成、构建的问题当天(或第二天)解决。

  6) 等

  每日的DoD会在项目初始时确定在框架要求中。

  2、 用户故事的DoD:

  1) 用户故事最终的描述符合如下原则:

  •  独立性(Independent)— 要尽可能的让一个用户故事独立于其他的用户故事,是否可以在一个迭代内完整实现。

  •  可协商性(Negotiable)— Team是否理解用户故事,无疑问。如有有疑问,一个用户故事的内容要是可以协商的,因为用户故事不是合同。

  •  有价值(Valuable)— 每个故事必须对客户具有价值(无论是用户还是购买方,也包括使用新技术的价值)。

  •  可以估算性(Estimable)—开发团队需要去估计一个用户故事以便确定优先级,工作量,安排计划。

  •   短小(Small)— 一个好的故事在工作量上要尽量短小,最好不要超过1-2人天的工作量,至少要确保的是在一个迭代中能够完成。

  •  可测试性(Testable)—一个用户故事要是可以测试的,以便于确认它是可以完成的。

  2) 用户故事得到用户代表试用并初步认可

  3) 用户故事都有测试用例对应覆盖

4) 用户故事都有对应的自动化测试用例

  5) 用户故事已经实现

  6) 用户故事已经测试通过

  对于一个用户故事以及验证标准,举例如下:

  用户故事实例:作为一个用户,我要在用户界面写入用户名和密码,然后我就可以登录了。

  这个功能的验证标准至少应该分为以下三部分:

  1) 前置条件

  2) 用户输入

  3) 用户期待的结果。(注意是用户的期待)

  验证实例1:

  1) 前置条件:在网站登录页面项目管理者联盟文章

  2) 用户输入:输入用户名、密码

  3) 用户期待结果:可以登录到网站

  验证实例2:

  1) 前置条件:在网站登录页面

  2) 用户输入:输入错误的用户名、密码

  3) 用户期待结果:不能登录到网站,并显示“用户名或密码错误”

  验证实例3:

  1) 前置条件:在网站登录页面

  2) 用户输入:选中“记住我”,输入的用户名、密码,登录后退出,再次进入登录页面。

  3) 用户期待结果:用户名、密码自动存在,不用输入。

  4) 验证实例3:

  1) 前置条件:在移动的网站登录页面

  2) 用户输入:输入用户名或密码三次以上。

  3) 用户期待结果:再次输入用户名和密码后需要增加一个新的验证。

一般对于用户故事的DoD会写在Use Story CRC背面,并且在对用户故事进行估算时要考虑验证的人工。即对于一个故事的估算点数应该也包含验证的人工。

  3、 迭代DoD:(计划会议下半场)bbs.mypm.net

  1) 我们都明白在Sprint中交付的价值/目标

  2) Sprint交付的所有用户故事都完成了(由谁开确认:PO?用户?)。

  3) 确保相关文档更新完成。

  4) 确保功能描述更新完成。

  5) 验证已识别到/从其他团队的依赖关系和依赖关系。

  6) 根据提交的测试分析和变更进行的测试。

  7) 执行了的同行评审和评价。

  8) 如下产品已经准备和存档完成:

  •   故事描述

  •  源代码

  •  交付报告

  •   测试分析报告

  •   验证规范和报告

  •  详细的需求规范

  •   各版本的自动测试脚本

  •  所有用户需要的报告

  9) 使用静态测试工具没有发现新的缺陷。

  10) 所有单元测试用例已经执行通过。

  11) 核心代码互查完毕并通过

  12) 性能评测通过

  13) 代码已经用工具进行检查完毕并通过

  14) 所有缺陷已通过确认(明确:已修复或可以暂不修复)

  迭代DoD可以在计划会议下半场进行确定。

       4、 版本DoD

  上面的每个故事都测试通过了,每天也都有持续集成,是不是就可以直接对外交付了?

  理论上来讲,如果每日DOD和用户故事DOD,比较完善的话,是可以直接对外交付了,但是在这里我们还要有个决策,这个决策可以算是一个管理里程碑的评审(与技术评审不同)。我们不得不再定义个版本(或者直接叫交付)DOD:

  1) 产品文档已全部更新

  2) 代码已部署到产品服务器上并进入基线

  3) 运维在验收测试环境上测试通过

  4) 原始需求提交人对功能已经验收通过

  5) 运维、市场、客服对新功能已经培训完成

  6) 得到产品经理或是客户的认可。

  无论是传统还是敏捷的开发的完成标准,以上都只是给大家一个参考,我们可以根据具体的开发实际情况去定义、执行、分析,从而保证产品/项目的开发目标。

posted on 2017-11-30 09:05  sduSRZ  阅读(1607)  评论(0编辑  收藏  举报

导航