我说CMMI之七:需求管理过程域--转载
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/dylanren/article/details/5951912
我说CMMI之七:需求管理过程域
先讲讲需求管理的含义。
何谓需求管理?需求管理就是管理需求的一致性。
这里讲的需求指什么?指的产品与产品构件需求,对于软件而言通常就是软件需求规格说明书(SRS)。在CMMI模型中将需求分成了2类:客户需求,产品与产品构件需求。客户需求是采用用户的术语表达的,用户验收的依据,一般是由客户提出需求,由开发人员记录、描述、整理下来。客户需求是平衡了客户的需要、期望、约束和接口需求后的结果。产品与产品构件需求是采用开发人员的属于表达的,是开发方验收的依据。产品与产品构件的需求是基于客户需求派生而得到的,但是又并非仅仅基于客户需求,还可能由开发方附加了一些需求,还可能由于技术路线的实现约束而附件了一些需求。
谁和需求的一致性呢?用户需求、设计文档、代码、测试文档、用户手册、安装手册、项目计划书等文档。
在何时保证和需求的一致性呢?在需求开发的初期,在设计时,在编码时,在编写测试用例时,在编写用户手册时,在需求发生变更时,在设计、编码、测试用例、用户手册发生变更时!
需求管理是CMMI 2级中的唯一的一个工程类过程域,工程类过程域包括需求管理、需求开发、技术解决方案、产品集成、验证、确认,只有将需求管理放在了CMMI的2级,为什么呢?无论需求是如何获取的如何描述的,首先要管理需求的变更!这里隐含了一个前提,即需求是文档化的,需求管理的对象是需求,需求不能是虚无飘渺的,要固化下来,固化下来就是需求文档。
在此过程域中包含了5条特定实践,翻译如下:
SP1.1 理解需求:与需求的提供者对需求的含义达成一致
SP1.2 获得对需求的承诺:获得项目组成员对需求的承诺
SP1.3 管理需求的变更:在项目进行中,管理需求的变更
SP1.4 维护需求的双向可跟踪性:维护需求和工作产品之间的双向可跟踪性
SP1.5 确定项目工作和需求间的差异:识别项目计划、工作产品和需求之间的不一致
每条实践都有一个编号,以“SP1.3 管理需求的变更:在项目进行中,管理需求的变更”来说明一下,SP代表特定实践,1代表是第1个目标的实践,3代表是第3条实践。每条实践有一个名字,“管理需求的变更”即是这条实践的名字,“在项目进行中,管理需求的变更”是这条实践的正文。编号和名字都是解释性的信息,是帮助记忆的,每条实践的正文是“期望的”。
逐条解释每条实践:
SP1.1理解需求:与需求的提供者对需求的含义达成一致。
模型的每条实践都是动宾结构的描述方式,是没有主语的,我们在理解时要结合公司的实际情况,加上主语。对于这条实践,是谁与需求的提供者对需求的含义达成一致呢?是需求分析人员,是项目组的开发人员,是乙方。
需求的提供者是谁呢?是甲方,是客户、最终用户与间接用户。客户是出资者,是花钱买系统的人,最终用户是真正使用系统的人,间接用户是既不用系统也不掏钱买系统的,但是对系统是否上市、能否成功起了重要作用的人。举例来讲,你们家小孩需要买个手机,你是出资者、小孩子是最终用户、国家工信部是间接用户,三者的需求是不一样的,关注点是不同的。手机要既满足你的需求、小孩子的需求、政府的要求才可以销售出去。注意三者是and的关系,不是or的关系,缺一不可。
在CMMI中将需求分成了4个组成部分:需要,期望,约束条件和接口需求。需要是最基本的、不可裁剪的需求;期望是可以实现也可以不实现,最好能实现的需求,期望是可以妥协的需求;约束条件是对需要和期望的限制条件,是实现需要和期望的环境与障碍;接口需求是系统与其他系统之间的衔接关系,任何一个系统都不是孤立存在的。
何谓“一致”?是需求分析人员认可需求并且需求的提供者也认可了需求。仅仅是需求分析人员认可,需求提供者不认可,这显然是不成的,最终验收时肯定无法通过;仅仅是需求提供者一厢情愿,需求分析人员或者开发方不认可也是无法实现的。需求提供者关注什么?其一是正确性:是否准确表达了自己的需求?其二是完备性:是否遗漏了需求?开发人员关注什么?除了上述的正确性与完备性,还关注无二义性、可测试性、可实现性等等。
如何达成一致呢?通常是需求提供者(客户+最终用户+间接用户)讲解需求,需求提供者提供最初的需求,由需求分析人员整理需求,然后再给需求提供者确认需求,确认后一般是签字认可、邮件确认或体现在会议纪要中。
SP1.2 获得对需求的承诺:获得项目组成员对需求的承诺。
这条实践所讲的承诺是指对需求可实现性的承诺,是项目组成员对客户的承诺,承诺什么呢?是承诺需求是可以实现的。注意,这个承诺不是客户对项目组的承诺,不是客户承诺需求不变。
项目的参与人员在了解的需求之后,在和客户对需求的理解达成一致后,在评估了需求的技术可行性之后对客户承诺需求是可以实现的。SP1.1是本条实践的基础,是本条实践的前提。
在CMMI模型中主要在3处提到了承诺的管理,(1) REQM的SP1.2;(2)PP过程域中SP2.3:对需求进行承诺;(3)IPM过程域中SP2.2管理关键依赖的子实践,管理存在关键依赖关系的人员之间的承诺。这3处分别描述了对需求的承诺、对计划的承诺、对关键依赖关系的承诺,承诺的层次是逐步细化的,从宏观到微观,要求逐步加深。
中国人自古以来讲究一诺千金,这个“诺”是一种口头的承诺,是一种做人的信誉,在模型中提到的承诺要求一定要文档化,有记录,是书面的承诺,可以作为一种官方的依据,不能空口白说。
在实践中可以通过项目组的核心承诺对需求进行了评审、进行了估算、进行技术可行性的确认之后书面签字确认来记录。在SP1.1中要求了客户认可开发方对需求理解,客户需要书面确认,这里开发方也要进行书面承诺,二者都可能表现为书面的签字,签字的含义不同。
SP1.3 管理需求的变更
管理这个单词是在CMMI中出现频率很高的一个单词,这个单词的宾语不同含义是不同的,这里所说的管理就同这个PA的名字中的管理的含义是一致的:即保证需求的一致性。
这里所说的管理首先是要确定这个变更是应该变更的,其次要确保变更了所有相关内容,最后要确保修改的正确性,即不多改、不少改、不错改。评价是否需要变更时,需要由客户方与开发方的人员都要参与评价,不能仅仅由一方说了算,需要双方成立决策的小组,对需求的变更进行综合的评估。要考虑需求更变的技术影响、管理影响:
技术影响:
修改需求
修改设计
修改代码
修改测试用例
修改用户操作手册
产生的技术风险
……
管理影响:
变更工期
变更工作量
变更成本
变更计划
变更质量目标
……
需要建立需求变更的控制流程,是否所有的需求变更都走相同的流程呢?未必!
理解CMMI模型要灵活,不要僵化,要根据自己企业的实际情况进行裁剪。
有一家客户将需求的变更划分了高级别与低级别的两种变更,低级别的变更PM批准即可了,高级别的变更需要CCB批准:
高级别的需求变更:
影响其他项目组或者影响项目外部承诺的变更;
单次变更估算规模大于项目总体估算规模5%;
单次变更导致工作量成本增加超过1人周;
项目总体累计变更规模大于项目总体估算规模30%后的变更。
低级别的需求变更:
除上述高级别变更以外的变更。
在需求变更的流程中有几个要点需要强调:
(1) 变更的波及范围分析要完备;在进行波及范围分析时要参考需求跟踪矩阵;
(2) 需求的变更要有评审、批准;
(3) 需求变更完成后要验证变更的正确性;
(4) 变更完成后要变更基线,重新发布基线,通知相关人员。
SP1.4建立需求跟踪矩阵
需求跟踪矩阵一般简写为RTM,RTM可以表达2类跟踪关系:
横向跟踪关系:需求与需求之间的影响关系;
纵向跟踪关系:需求到设计、代码、用户文档、测试用例、计划之间的影响关系。

并非所有的跟踪关系都要建立矩阵,要根据企业的实际情况进行取舍,比如有的企业只建立客户需求到产品需求,产品需求到产品需求,产品需求到设计,产品需求到系统测试用例的跟踪关系。也并非所有的需求都要建立跟踪矩阵,比如有的企业仅对全局性的需求建立了跟踪关系。
这条实践在很多企业中都被忽略了,或者即使做了也只是形式上有了RTM,实际中并没有发现有何作用,而白白地增加了工作量。其实这条实践的作用与项目的规模很有关系,项目规模越大,这条实践的作用也越大,项目规模越小,这个实践的作用也越小。
针对RTM在我之前的博客中有多篇博文都讨论了,这里不再多说了,请搜索相关的博文看看吧。
SP1.5 识别项目计划、工作产品与需求之间的不一致性
这条实践中的字眼就是工作产品,这里说的工作产品指的设计文档、代码、用户手册、测试用例等之类的技术文档。这句话可以改写为:
识别项目计划与需求的不一致:即是否有的需求没有责任到人去开发呢?
识别设计与需求的不一致:是否有的需求没有被设计呢?是否有的设计不能满足需求呢?
识别代码与需求的不一致:是否有的需求没有被实现呢?是否有的实现不能满足需求呢?
…….
如何理解上述的识别2字呢?
识别就是找出来,识别就发现出来,识别就是评审出来,识别就是测试出来。识别的手段包括了评审、测试等验证与确认手段。这个识别不是一次性的,而是在项目进展过程持续进行多次的,这个识别是要参考RTM的。
如果发现了不一致,怎么办?记录问题,定义措施,跟踪关闭,使其保持一致!
以上对REQM的5条特定实践进行了解释,如何建立需求管理的流程呢?其实这个PA并非一定要去编写一个需求管理的流程。需要仔细分析一下,下面给出一种思路供参考:
SP1.1 可以编写到需求获取的流程中,当需求获取完成后,由客户确认需求理解的一致性;
SP1.2 可以编写到需求评审的流程中,当需求评审完成后,由开发人员确认需求的可实现性;
SP1.3 需要编写一个需求变更的流程,该流程可以合并到配置管理的变更管理流程中;
SP1.4 可以在需求开发过程中建立客户需求到产品需求,产品需求到产品需求的跟踪矩阵,可以在设计过程中建立设计到产品需求的跟踪矩阵,在测试过程中建立测试用例到产品需求的跟踪矩阵,以此类推;
SP1.5 可以在需求评审、设计评审、代码评审、测试用例评审、测试、用户手册评审、需求变更、设计变更等流程中体现识别不一致的活动。
不一定需要写一个需求管理的流程吧!
模型,要用活了!
————————————————
版权声明:本文为CSDN博主「麦哲思科技任甲林」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/dylanren/article/details/5951912
我说CMMI之七:需求管理过程域--转载的更多相关文章
- 我说CMMI之二:CMMI里有什么?--转载
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/dylanren/article/deta ...
- CMMI三个过程域的流程及达到特定目标、共性目标的要求(RD需求管理过程,PI产品集成过程,TS技术解决方案)
RD需求管理过程 通过面谈的方式获取相关干系人关于产品生命周期各阶段的需求.期望,限制条件,接口 将相关干系人的需求.期望,限制条件,接口转化成用户需求说明书 依据客户需求,确定产品或产品组件需求,形 ...
- Core3.1WebApi_ 同源策略_如何支持跨域(转载)
原文:https://mp.weixin.qq.com/s/id3fOyGrZI9lLx7PKbVYlg
- 我说CMMI之三:CMMI的构件--转载
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/dylanren/article/deta ...
- CMMI 3级精简并行过程综述
“精简并行过程”(Simplified Parallel Process,SPP)是基于CMMI以及软件工程和项目管理知识而创作的一种“软件过程改进方法和规范”,它由众多的过程规范和文档模板组成.SP ...
- 我说CMMI之六:CMMI的评估--转载
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/dylanren/article/deta ...
- 需求管理(REQM,Requirements Management)工具(转)
需求管理(REQM,Requirements Management)属于成熟度2级(受管理级)的过程域,是其他许多过程域实施的前提.对于暂未实施CMMI的企业,同样也可以借鉴CMMI的原则,实施和优化 ...
- 质量体系 CMMI
CMMI初识 CMM-Capability Maturity Model,能力成熟度模型.CMMI-Capability Maturity Model Integration,能力成熟度模型集成. C ...
- 我所亲身经历的CMMI3 [问题点数:20分,结帖人outer2000]--转载
很荣幸,作为某公司软件部门的软件项目经理,亲身经历了CMMI3,以下就把整个改进过程,用自己的亲身体会,详述如下,文中一些观点与看法难免带有个人感情,还请各位酌情参考. 公司情况简单介绍下,因为是为某 ...
随机推荐
- BUGKU (Take the maze)
首先进行查壳,没有壳. 随便输入,看程序执行信息.随意输入字符串,提示key error 放到IDA中打开,在左侧函数窗口中找到main0,F5反编译,进行分析.具体已在分析在图中标识. 关于main ...
- 【VS开发】【DSP开发】浅谈Linux PCI设备驱动(二)
我们在 浅谈Linux PCI设备驱动(一)中(以下简称 浅谈(一) )介绍了PCI的配置寄存器组,而Linux PCI初始化就是使用了这些寄存器来进行的.后面我们会举个例子来说明Linux PCI设 ...
- 【VS开发】内存泄漏相关问题
之所以撰写这篇文章是因为前段时间花费了很大的精力在已经成熟的代码上再去处理memory leak问题.写此的目的是希望我们应该养成良好的编码习惯,尽可能的避免这样的问题,因为当你对着一大片的代码再去处 ...
- selenium—显示等待中期望的场景语句
① alert_is_present() 判断页面是否出现alert框 wait = WebDriverWait(driver,10) alert = wait.until(EC.alert_is_p ...
- HDU 1203 I NEED A OFFER! (动态规划、01背包、概率)
I NEED A OFFER! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- 【0.1】mysql版本升级(5.6升级到5.7)
目录 [1].升级操作 [2].mysql 5.6安装(二进制) [3].mysql 5.7安装(二进制) [1].升级操作 核心步骤 [1.1]停止mysql 5.6 [1.2]把环境变量引用到My ...
- springboot笔记-使用JSP
Spring Boot 项目中使用 JSP: 项目结构:需要添加webapp文件夹用来存放目录 jsp 文件 spring-boot-jsp +-src +- main +- java +- reso ...
- [BJOI2014]大融合(Link Cut Tree)
[BJOI2014]大融合(Link Cut Tree) 题面 给出一棵树,动态加边,动态查询通过每条边的简单路径数量. 分析 通过每条边的简单路径数量显然等于边两侧节点x,y子树大小的乘积. 我们知 ...
- C++ 二阶构造模式
1.如何判断构造函数的执行结果? 构造函数没有返回值,所以不能通过返回值来判断是构造函数是否构造成功. 如果给构造函数强行加入一个返回值,用来表示是否构造成功.这样确实能够反映出构造的结果,但是不够优 ...
- 关于NGINX在wnidows下面和linux下面的多站点的反向代理的配置
原创文章,转载注明出处 nginx作为一款优秀的反向代理软件,以其好用,易于搭建负载均衡的网站集群而著称,这里分别记录一下工作中用到nginx作为负载以及多站点发布的时候一些配置和注意事项 一 ng ...