CMMI之需求开发流程

news2024/12/25 2:53:49

需求开发(Requirement Development, RD)的目的是通过调查与分析,获取用户需求并定义产品需求。

需求开发过程域是SPP模型的重要组成部分。本规范阐述了需求开发过程域的两个主要规程:

  • 需求调查 [SPP-PROC-RM-SURVEY]

  • 需求定义 [SPP-PROC-RM-DEFINE]

上述每个规程的“目标”、“角色与职责”、“启动准则”、“输入”、“主要步骤”、“输出”、“完成准则”和“度量”均已定义。

需求分析是需求开发过程域的重要活动之一,但是不宜用“规范”这种形式来论述。本章对需求分析方法作了概括性介绍,请读者阅读更加专业性的需求分析论著。

本规范适用于国内IT企业的软件研发项目。建议用户根据自身情况(如商业目标、研发实力等)适当地修改本规范,然后推广使用。

9.1 介绍

需求开发与需求管理是相辅相成的两类活动,它们共同构成完整的需求工程。需求工程结构图如图8-1所示,需求开发和需求管理的流程如图9-1所示。

需求开发可分为两个阶段:“用户需求调查阶段”和“产品需求定义阶段”。而“需求分析”则贯穿于上述两个阶段。需求调查阶段和需求定义阶段在逻辑上存在先后关系,实际工作中二者通常是迭代进行的。我们把从事需求开发工作的人员称为需求分析员(也叫系统分析员),避免与其它开发人员混淆。

一、需求调查

需求调查的目的是通过各种途径获取用户的需求信息(原始材料),产生《用户需求说明书》。

二、需求分析

需求分析的目的是对各种需求信息进行分析,消除错误,刻画细节等。常用的需求分析方法有“问答分析法”、“结构化分析法”和“面向对象分析法”。

三、需求定义

需求定义的目的是根据需求调查和需求分析的结果,进一步定义准确无误的产品需求,产生《产品需求规格说明书》。系统设计人员将依据《产品需求规格说明书》开展系统设计工作。

需求开发过程域产生的主要文档有:

  • 《用户需求说明书》,模板见 [SPP-TEMP-RD-UR]

  • 《产品需求规格说明书》,模板见 [SPP-TEMP-RD-PRS]

9.2 用户需求调查

9.2.1 目的

  1. 获取用户(客户与最终用户)的需求信息,经过分析后产生《用户需求说明书》。

9.2.2 角色与职责

  1. 需求分析员调查、分析用户的需求。

  1. 客户与最终用户提供必要的需求信息。

9.2.3 启动准则

  1. 需求分析员已经确定。

9.2.4 输入

  1. 任何与用户需求相关的材料

9.2.5 主要步骤

[Step1] 准备

  1. 需求分析员确定需求调查的方式,例如:

  • 与用户交谈,向用户提问题。

  • 参观用户的工作流程,观察用户的操作。

  • 向用户群体发调查问卷。

  • 与同行、专家交谈,听取他们的意见。

  • 分析已经存在的同类软件产品,提取需求。

  • 从行业标准、规则中提取需求。

  • 从Internet上搜查相关资料。

  1. 需求分析员准备调查问卷(问题表)。

  1. 需求分析员与被调查者建立联系,确定调查的时间、地点、人员等。

[Step2] 调查与记录

  1. 需求分析员调查用户需求,随时记录调查过程中所获取的需求信息。

[Step3] 分析需求信息

  1. 需求分析员分析已经获取的需求信息,消除错误,归纳与总结共性的用户需求。

[Step4] 撰写用户需求说明书

  1. 需求分析员按照指定的文档模板撰写《用户需求说明书》,主要内容包括:

  • 产品介绍;

  • 描述用户群体的特征;

  • 产品应当遵循的标准或规范;

  • 描述产品的功能性需求;

  • 描述产品的非功能性需求,如用户界面、软硬件环境、质量等需求。

补充说明:调查过程中获取的需求信息可以作为《用户需求说明书》的附件。

[后续活动:需求确认]

  1. 项目经理邀请同行专家和用户(包括客户和最终用户)一起评审《用户需求说明书》,尽最大努力使《用户需求说明书》能够正确无误地反映用户的真实意愿。

  1. 需求评审之后,开发方和客户方的责任人对《用户需求说明书》作书面承诺。

补充说明:“需求确认”活动属于需求管理范畴,详见 [SPP-PROC-RM]

9.2.6 输出

  1. 《用户需求说明书》

9.2.7 结束准则

  1. 需求分析员已经撰写完成《用户需求说明书》,并做了内部审查(消除拼写、排版等错误)。

9.2.8 度量

  1. 需求分析员统计工作量和上述文档的规模,汇报给项目经理。

9.3 产品需求定义

9.3.1 目的

  1. 定义准确无误的产品需求,产生《产品需求规格说明书》。

9.3.2 角色与职责

  1. 需求分析员定义产品需求。

  1. 客户与最终用户提供必要的需求信息,并确认产品需求。

9.3.3 启动准则

  1. 《用户需求说明书》已经撰写完成。

9.3.4 输入

  1. 《用户需求说明书》

9.3.5 主要步骤

[Step1] 细化并分析用户需求

  1. 需求分析员对《用户需求说明书》进行细化,以便产生详细的产品需求。

  1. 需求分析员对比较复杂的用户需求进行建模分析,以帮助软件开发人员更好地理解需求。建议采用Rational 的Rose工具进行需求的建模分析,建模分析产生的文档可以作为《产品需求规格说明书》的附件。

补充说明:建模分析的技术难度比较高,需求分析员应当根据自身水平进行取舍。

[Step2] 撰写产品需求规格说明书

  1. 需求分析员按照指定的文档模板撰写《产品需求规格说明书》。如果待开发的产品分为软件和硬件两部分的话,则应当分别撰写《软件需求规格说明书》和《硬件需求规格说明书》。

  1. 《产品需求规格说明书》的主要内容包括:

  • 产品介绍;

  • 描述用户群体的特征;

  • 定义产品的范围;

  • 阐述产品应当遵循的标准或规范;

  • 定义产品中的角色;

  • 定义产品的功能性需求;

  • 定义产品的非功能性需求,如用户界面、软硬件环境、质量等需求;

[后续活动:需求确认]

  1. 项目经理邀请同行专家和用户(包括客户和最终用户)一起评审《产品需求规格说明书》,尽最大努力使《产品需求规格说明书》能够正确无误地反映用户的真实意愿。

  1. 需求评审之后,开发方和客户方的责任人对《产品需求规格说明书》作书面承诺。

补充说明:“需求确认”活动属于需求管理范畴,详见 [SPP-PROC-RM]

9.3.6 输出

  1. 《产品需求规格说明书》

9.3.7 结束准则

  1. 《产品需求规格说明书》已经撰写完成。

  1. 已经对产品需求进行了评审,并且获得了开发方和客户方对需求的承诺。

9.3.8 度量

  1. 项目经理统计工作量和上述文档的规模。

9.4 需求分析方法概述

很多时候用户说不清楚需求、会说错需求或者提出一些无法实现的需求。

需求分析是指在需求开发过程中,对所获取的需求信息进行分析,及时排除错误、弥补不足,确保需求文档正确地反映用户的真实意图。

需求分析是需求开发过程中“最费脑子”的工作。分析方法大体有两类:“问答分析法”和“建模分析法”。后者技术性比较强,大多数软件工程书籍都有论述。前者就是一些常识而已,虽然写不成文章,但是简单易用,很有实用价值。

9.4.1 问答分析法

问答分析方法很简单:刨根究底地问,如果解答了这些问题,那么需求也就分析清楚了。一个人可以“自问自答”地分析需求,几个人分析需求则称为“研讨”。

问答分析最重要的问题是:“是什么”和“为什么”。

每个需求都应当用陈述句说明“是什么”,如果“是什么”的内涵不够清晰,则应补充说明“不是什么”。如果“是什么”和“不是什么”并不是“理所当然”的,那么应当解释“为什么”,以便加深读者的理解。追究“是什么”和“为什么”的目的是获得正确、清楚的需求。

其它常见的问题有:

  • 需求存在二义性吗?

  • 需求文档的上下文有矛盾吗?

  • 需求完备吗?

  • 需求是必要的吗?

  • 需求可实现吗?

  • 需求可验证吗?

  • 需求的优先级确定了吗?

9.4.2 建模分析法

人们都有这样地感受:有些时候用语言描述某个问题特别费劲,而采用图形则使人一目了然,所谓“一图低千言”就是这个道理。

在需求开发过程中,对于某些类型的信息,用图形表示要比文本表示更加有效。所以将图形与文本结合起来描述需求是很自然的方法。需求建模就是指用图形符号来表示、刻画需求。建模分析方法主要有两大类:“结构化分析法”和“面向对象分析法”。

一、结构化分析法

软件的建模分析兴起于20世纪60年代末期和70年代初期。结构化分析方法并不是由里程碑式的明确地涉及这个主题的一篇文章或者一本著作引入的,它也不是被所有使用者一致采用的单一方法。相反地,它是几乎发展了20多年的一个混合物。结构化分析方法在70年代和80年代非常流行,相关论著很多。对结构化分析方法有较大贡献的学者有DeMarco, Gane, Sarsen, Yourdon, Constantine, Ward, Mellor, Hatly, Pirbhai等人。文献[Pressmen99, p206-p214]对结构化分析方法作了高度概括(如图9-2所示),我们不妨称之为“一个中心三种图”:

  • “数据字典”是中心,它包含了软件中所有数据对象的描述。

  • “实体-关系图”是用图形符号来标识数据对象以及它们之间的关系。

  • “数据流图”指明了数据在系统中移动时如何被变换。

“状态-变迁图”表示了系统存在的各种状态以及它们之间的变迁方式。

二、面向对象分析法

面向对象分析设计(OOAD)方法兴起于20世纪80年代,从90年代起至今它已经在分析设计领域占据了无可争议的主流地位。

作者在读本科(90年至94年)时就充分地感受到了人们对“面向对象”的狂热。关于“面向对象”的课堂、学术报告常常人满为患。搞软件研发的人都“言必谈对象”,并引以为荣。

面向对象分析设计领域有一些比较著名的学派,如:

  • Coad和Yourdon学派,其代表作为[Coad91]

  • Booch学派,其代表作为[Booch94]

  • Jocobson学派,其代表作为[Jacobson92]

  • Rumbaugh学派,其代表作为[Rumbaugh91]

有趣的是,这些学派的掌门人就像上帝、真主、如来佛,他们用各自的方式定义了这个世界,并留下一堆经书来解释这个世界。这种混乱的局面被学术界称为百家争鸣,每年诞生了许多论著和教授。叫苦的是软件企业和开发人员:没有统一的方法,不好干活啊!

终于等到了那一天,Rational公司招纳了Booch, Jocobson, Rumbaugh,这三位“面向对象”业界的权威强强联手,制定了“统一建模语言”(UML)。1997年11月,UML被国际对象管理组织(OMG)采纳,此后UML成为OOAD建模语言的国际标准。

UML吸取了各种OOAD方法的精髓,对于OOAD中的语义、图形表示法和使用规则作了完整而详细的定义。UML的建模能力超过了以往任何一种OOAD方法,当然其复杂性也随之膨胀。大多数软件开发人员没有兴趣阅读枯燥乏味的UML文档(如[Rumbaugh99])。真正使UML流行的是Rational公司基于UML的建模工具Rose。Rose易学易用,它能交互式地构建类图、用例图、构件图、部署图、状态图、活动图、顺序图、协作图等等,深得开发人员的喜爱。

介绍UML和Rose的书籍非常多,读者自己选择、学习,这里不再论述。

三、恰当地使用图形符号

现代建模工具如Rose有非常丰富的图形符号和文字标注,能很好地表达模型的细节。要注意的是:在建模时使用花样过多的图形符号或文字意味着模型表示的复杂化,将使开发人员更难掌握,而且使图形文档更加杂乱。

世上不存在一个包罗万象的图——它能完整地描述需求。需求建模不可能取代文字描述。在需求规格说明书中,文字描述是第一重要的,建模主要是起分析、解释作用。建议将模型存放在需求规格说明书的附录中,便于正文引用。

9.5 实施建议

  1. 先对需求分析员进行培训,让他们掌握必要的需求开发技能。

  1. 对需求开发过程域产生的所有有价值的文档进行配置管理。

  1. 对于非合同项目,本规范中有关客户的活动可以简化。

  1. 需求的建模分析有较高的技术难度,需求分析员应当根据自身水平进行取舍。建议企业购买Rational Rose作为需求建模分析的工具。

  1. 需求分析员根据产品的特征,适当地修改《用户需求说明书》和《产品需求规格说明书》的模板。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/356140.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

消失的数字【C语言】

题目&#xff1a; 数组nums包含从0到n的所有整数&#xff0c;但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗&#xff1f; 解法&#xff1a; int missingNumber(int* nums, int numsSize){int val0;for(int i0;i<numsSize;i){val^nums[i];}fo…

Vue3之条件渲染

1.何为条件渲染 条件渲染就是在指定的条件下&#xff0c;渲染出指定的UI。比如当我们显示主页的时候&#xff0c;应该隐藏掉登录等一系列不相干的UI元素。即UI元素只在特定条件下进行显示。而在VUE3中&#xff0c;这种UI元素的显示和隐藏可以通过两个关键字&#xff0c;v-if 和…

Qt动画框架详解

目录1.前言2.原理3.属性动画4.并行执行的动画5.顺序执行的动画6.扩展属性动画支持的数据类型1.前言 为软件适当的添加一些动画&#xff0c;能够提高软件的用户体验。在使用Qt框架开发软件时&#xff0c;我们可以用Qt提供的动画框架来为QWidget等UI元素添加动画效果。本文从动画…

程序员和他的女朋友一起创建了价值 150,000,000 美元的网站

本篇文章讲述了Otis和Elizabeth Chandler创办Goodreads.com的故事。他们从小就爱读书&#xff0c;创办网站前他们的困惑是没有很多人在线分享书评。Otis和Elizabeth觉得如果有一个地方把所有人的评论和评价收集起来&#xff0c;那将会很有价值。奥蒂斯和伊丽莎白从小就喜欢读书…

MMKV与mmap:全方位解析

概述 MMKV 是基于 mmap 内存映射的移动端通用 key-value 组件&#xff0c;底层序列化/反序列化使用 protobuf 实现&#xff0c;性能高&#xff0c;稳定性强。从 2015 年中至今&#xff0c;在 iOS 微信上使用已有近 3 年&#xff0c;其性能和稳定性经过了时间的验证。近期已移植…

海量数据相似数据查询方法

1、海量文本常见 海量文本场景&#xff0c;如何寻找一个doc的topn相似doc&#xff0c;一般存在2个问题&#xff0c; 1)、两两对比时间o(n^2) 2)、高维向量比较比较耗时。 文本集可以看成(doc,word)稀疏矩阵&#xff0c;一般常见的方法是构建到排索引&#xff0c;然后进行归并…

论文投稿指南——中文核心期刊推荐(社会学)

【前言】 &#x1f680; 想发论文怎么办&#xff1f;手把手教你论文如何投稿&#xff01;那么&#xff0c;首先要搞懂投稿目标——论文期刊 &#x1f384; 在期刊论文的分布中&#xff0c;存在一种普遍现象&#xff1a;即对于某一特定的学科或专业来说&#xff0c;少数期刊所含…

【论文精读】DeepWalk: Online Learning of Social Representations

DeepWalk: Online Learning of Social Representations 本文是我参加Datawhale的CS224W图机器学习时的笔记&#xff0c;第一次学习图机器学习&#xff0c;对DeepWalk这篇开山之作的理解。 论文的三位作者均来自纽约州立大学石溪分校&#xff0c;杨振宁和丘成桐也曾在此教学。 …

JavaScript内存泄露和垃圾回收机制

1、是什么&#xff1f;内存泄露&#xff08;Memory leak&#xff09;是在计算机科学中&#xff0c;由于疏忽或错误造成程序未能释放已经不再使用的内存。并非指内存在物理上的消失&#xff0c;而是应用程序分配某段内存后&#xff0c;由于设计错误&#xff0c;导致在释放该段内…

Spring Boot 项目介绍

Spring Boot 项目介绍 作为学习过 Java 的软件开发者&#xff0c;相信都知道 Spring 这一伟大的框架&#xff0c;它所拥有的强大功能之一就是可以集成各种开源软件。但随着互联网的高速发展&#xff0c;各种框架层出不穷&#xff0c;这就对系统架构的灵活性、扩展性、可伸缩性…

【项目精选】基于JSP物流信息网(论文+源码+视频)

点击下载源码 近年来&#xff0c;随着时代的进步&#xff0c;社会随之不断发展&#xff0c;经济也快速发展起来了&#xff0c;人民的消费水平在不断地提高&#xff0c;平常的实体店消费已经不能满足人们的需求&#xff1b;在者&#xff0c;互联网技术的不断发展也为电子商务的兴…

CSS Houdini

前言 最近看了几篇文章&#xff0c;是关于 CSS Houdini 的。作为一个前端搬砖的还真不知道这玩意&#xff0c;虽然不知道的东西挺多的&#xff0c;但是这玩意有点高大上啊。 Houdini 是一组底层 API&#xff0c;它们公开了 CSS 引擎的各个部分&#xff0c;从而使开发人员能够通…

Matlab搭建AlexNet实现手写数字识别

Matlab搭建AlexNet实现手写数字识别 个人博客地址 文章目录Matlab搭建AlexNet实现手写数字识别环境内容步骤准备MNIST数据集数据预处理定义网络模型定义训练超参数网络训练和预测代码下载环境 Matlab 2020aWindows10 内容 使用Matlab对MNIST数据集进行预处理&#xff0c;搭建…

基于Spring Boot框架的人事管理系统的设计与实现(程序+详细文档)

大家好✌&#xff01;我是CZ淡陌。这里为大家分享优质的实战项目&#xff0c;本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#xff0c;希望你能有所收获&#xff0c;少走一些弯路&#xff01; &#x1f345;更多优质项目&#x1f447;&am…

面向六部十层电梯群控算法的研究

面向六部十层电梯群控算法的研究 赵大权&#xff0c;张翔宇 &#xff08;晋中学院 机械学院&#xff0c;山西 晋中 030619&#xff09; 摘 要&#xff1a; 在商业大楼和高层写字楼里&#xff0c;基于可编程逻辑控制器&#xff08;PLC&#xff09;对电梯运行进行控制是当前主流…

【LeetCode】剑指 Offer(4)

目录 写在前面&#xff1a; 题目&#xff1a;剑指 Offer 10- I. 斐波那契数列 - 力扣&#xff08;Leetcode&#xff09; 题目的接口&#xff1a; 解题思路&#xff1a; 代码&#xff1a; 过啦&#xff01;&#xff01;&#xff01; 题目&#xff1a;剑指 Offer 10- II. …

河南工程学院2.17蓝桥杯培训

乘法口诀数列&#xff1a;https://www.acwing.com/problem/content/3466/ 剪绳子&#xff1a;https://www.acwing.com/problem/content/68Sin SinSine之舞&#xff1a;http://lx.lanqiao.cn/problem.page?gpidD5272 数列&#xff1a;https://www.acwing.com/problem/content/…

【郭东白架构课 模块一:生存法则】13|法则六:如何鉴别文化环境是否有利于架构师的生存?

你好&#xff0c;我是郭东白。 架构师通常并不管理团队&#xff0c;而是管理架构活动。更准确地说&#xff0c;是定义和引导架构活动。因为每个参与架构活动的个体&#xff0c;都有各自工作的优先级和汇报关系。因此在没有管理、考核和激励等手段的保障下&#xff0c;唯一能够…

Chrome 又不支持 HTTP/2 网站的原因

导读昨晚偶尔清理 Chrome 插件时发现我的 “HTTP/2 and SPDY indicator”插件好像好久没亮了。这个插件在你访问到一个支持 HTTP/2 &#xff08;或之前的 SPDY 协议&#xff09;的网站时会点亮&#xff0c;而我明明记得之前专门让 https://linux.cn/ 支持了 HTTP/2 。 我的第一…

软考高级-信息系统管理师之整体管理(最新版)

整体管理 1、项目整体管理概述2、制定项目章程(选择,案例,论文)制定项目章程过程制定项目章程的依据1、协议2.项目工作说明书:3、商业论证4、事业环境因素包括,但不限于如下事项。5、组织过程资产:项目选择方法项目启动会议项目目标引导技术3、制订项目管理计划(选择)项目管…