我说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,以下就把整个改进过程,用自己的亲身体会,详述如下,文中一些观点与看法难免带有个人感情,还请各位酌情参考. 公司情况简单介绍下,因为是为某 ...
随机推荐
- linux中为什么删除文件比创建文件要快,读取文件和删除文件的过程是什么?
一.为什么删除文件比创建文件要快? 因为删除文件只是将bitmap位图表中将文件所占据的inode 和dacablock的使用状态从1变成0,相当于释放了这些快的使用权. 二.读取文件和删除文件的过程 ...
- CentOS 7 安装java 环境
1.创建安装目录 mkdir /usr/local/java/ 2.将下载的安装包 上传到 安装目录 (可用Xftp 上传) 3.解压 tar -xzvf jdk-8u221-linux-x64. ...
- java-字符
注意第16行处理方式.
- Kali Linux 2019.2安装谷歌输入法
前言 Linux下常用的中文输入法平台有IBus.fcitx和scim.scim现在维护滞后,不推荐使用. IBus ("Intelligent Input Bus") 是一个 输 ...
- sqlalchemy一对多的关系
#encoding: utf-8 from sqlalchemy import create_engine,Column,Integer,String,Float,func,and_,or_,Text ...
- linux下安转nodejs
转载自:https://www.cnblogs.com/zhuawang/p/7617176.html 在Linux系统安装Nodejs 最简单步骤 1.去官网下载和自己系统匹配的文件: 英文网址:h ...
- C语言程序作业10
问题 答案 这个作业属于那个课程 C语言程序设计 这个作业要求在哪里 https://www.cnblogs.com/galen123/p/11957321.html 我在这个课程的目标是 在学好C语 ...
- CDH6.2安装之YUM方式
参考: https://www.sysit.cn/blog/post/sysit/CDH6.2.0%E7%B3%BB%E7%BB%9F%E9%83%A8%E7%BD%B2%E6%89%8B%E5%86 ...
- 【转帖】超能课堂(188) WiFi 6凭什么可以如此“六”?
https://www.expreview.com/69155.html 不明觉厉 这些东西 自己理解的还是少呢 电脑硬件可能一年甚至不到一年就会开始更新换代,但是路由器就不一样,它们的更新换代往往是 ...
- 【pytorch】学习笔记(一)-张量
pytorch入门 什么是pytorch PyTorch 是一个基于 Python 的科学计算包,主要定位两类人群: NumPy 的替代品,可以利用 GPU 的性能进行计算. 深度学习研究平台拥有足够 ...