需求管理(三)需求过程

news2024/11/19 20:30:41

一、需求规格说明

1.1需求规格说明概述

需求获取的目标是得到用户的需求——收集需求信息
需求分析的目标是更深刻的理解用户的需求——界定能够让用户满意的解决方案和准则
需求规格说明的目标是定义用户的需求——准确描述其需求和解决方案

需求规格说明文档的撰写流程如下图:

1.2需求规格说明文档 

常见的需求说明文档主要有以下几种

 项目的前景和范围文档被视为属于用户的文档,主要包括的内容有问题域信息、解决方案、需求,内容较为抽象,具有概括性的特点
招标活动是基于用户需求文档进行的
大多数系统开发项目都是以系统需求规格说明文档为基础签约

对系统规格说明的细化和详细说明会产生软件需求规格说明文档、硬件需求规格说明文档、接口需求规格说明文档和人机交互文档,都是开发文档。

 需求规格文档的作者和读者有:项目管理者、设计人员和程序员、测试人员、文档编写人员、维护人员、培训人员、律师

需求规格说明文档—— 手段:信息描述语言的3种类别:
非形式化(文本为主)
半形式化(图形为主)
形式化(数学公式为主)

1.3模版的选择与裁剪

大概样式

 

1.4文档写作技巧 (略)

指导原则:
写作是一门艺术
文档化的目标是交流

内容组织:
所有内容位置得当
引用或强化,但不重复

表达方式:
形式依赖于内容
使用系统的表达方式

细节描述:
定义术语表或数据字典时应避免的问题有
术语不一致
“方言”问题
错误术语和冗余术语
避免干扰文本
避免歧义词汇

1.5优秀需求规格说明文档的特性

完备性

标准(当且仅当)
描述了用户的所有有意义的需求,包括功能、性能、约束、质量属性和对外接口。
每一条需求都是完备的。
定义了软件对所有情况的所有实际输入(无论有效输入还是无效输入)的响应。
为文档中的所有插图、图、表和术语、度量单位的定义提供了完整的引用和标记。
正确的前景和范围

一致性

细节的需求不能同高层次的需求相冲突,例如系统需求不能和业务需求、用户需求互相矛盾
同一层次的不同需求之间也不能互相冲突

根据重要性和稳定性分级

建立需求的优先级

可修改

标准
它的结构和风格使得人们可以对其中任一需求进行容易地、完整地、一致地修改,同时还不会影响文档现有的结构和风格

文档的可修改性要求:
有着条理分明并且易于使用的组织方式,包括目录、索引和显式的交叉引用。
没有重复冗余。
独立表达每个需求,而不是和其他需求混在一起。

可跟踪

1.后向跟踪(Backward traceability)
能找到需求的来源,例如和更早期文档的显式关联。
2.前向跟踪(Forward traceability)
能找到需求所对应的设计单元、实现源代码和测试用例等,它要求每个需求都要有唯一的标识或者可供引用的名称

1.6需求规格说明的实践调查

不编写正式的需求规格说明文档的原因:
1.时间压力,用非正式文档替代
2.迭代式开发,每次迭代是完成本次需求的正式需求规格说明,最后在整合成完整版本

在需求获取和需求分析当中,可以采用以下一些手段来保证最终需求集的完备性、一致性和正确性:

  • 需求获取
  • 需求采集
  • 需求表达
  • 需求验证

二、需求验证

2.1验证与确认

需求验证主要有两层含义:
1.验证:正确得到需求
2.确认:得到正确的需求

1. 需求验证:以正确的方式建立需求
需求集是正确的、完备的和一致的;
技术上是可解决的;
它们在现实世界中的满足是可行的和可验证的。

2.需求确认:建立的需求是正确的
每一条需求都是符合用户原意的
系统验证:正确的建立系统
系统能够在预期的环境中正确的执行设定的功能。
系统确认:建立的系统是正确的
建立的系统是符合系统需求和系统设计的

验证贯穿于整个软件生命周期静态分析和测试的两个主要手段

2.2需求验证

需求验证是专指在需求规格说明完成之后,对需求规格说明文档进行的验证活动

方法:需求评审、原型与模拟 测试用例开发手册编制,利用跟踪关系,自动化分析 

2.3需求验证方法

  • 评审
  • 原型与模拟
  • 开发测试用例
  • 用户手册编制
  • 利用跟踪关系
  • 自动化分析

2.3.1评审

由作者之外的其他人来检查产品问题的方法
是主要的静态分析手段
原则上,每一条需求都应该进行评审

检查方法

描述

自由方法(Ad-hoc)

没有为检查人员提供系统化的引导

检查清单(Checklist-Based)

以通用的检查清单来引导检查过程

缺陷(Defect-Based)

用于需求文档,根据缺陷的分类来组织和检查场景

功能点(Function Point-Based)

按照功能点来组织和检查场景

视角(Perspective-Based)

按照不同涉众类型的视角来组织和检查场景

场景(Scenario-Based)

常用的方法

对每一个场景,都利用一系列的问题或者细节要求,来引导检查过程。缺陷、功能点、视角都是场景方法的一个特例。

逐步提升(Stepwise Abstraction)

净室软件开发中的一种方法。阅读者描述一些独立代码段的功能,然后将描述的范围逐步扩大,描述的功能抽象逐步提高,直至阅读人员描述了整个评审物件

 2.3.2原型与模拟

用于静态方法力所不及的复杂需求

涉及到复杂的动态行为
成本较高

2.3.3开发测试用例

为需求类开发测试用例也可以被看成一个有效的需求验证方法
无法测试的需求并非绝对有问题

排斥性需求和全局非功能性需求通常无法定义测试用例

2.3.4用户手册编制

用户手册主要包含以下内容:
1.验证功能需求:对软件系统功能和实现的描述
2.验证项目范围:对系统没有实现的功能的描述
3.验证异常流程需求:问题和故障的解决
4.验证环境与约束需求:系统的安装和启动

2.3.5利用跟踪关系※

业务需求(系统特性)=>用户需求(业务、任务)=>系统需求(分析模型)
逐步细化的关系
如果业务需求和用户需求没有得到后项需求(用户需求和系统需求)的充分支持,那么软件需求规格说明文档就存在不完备的缺陷。软件需求规格说明文档描述的是系统级需求,被用来进行需求验证

系统需求=>用户需求=>业务需求
如果不能依据跟踪关系找到一条系统需求的前项用户需求和前项业务需求,那么该需求就属于非必要的需求

2.3.6自动化分析

2.4问题修正※ 

1.需求澄清
(1)理解偏差:重新进行分析工作
(2)分析遗漏:重新分析和文档化这部分信息
(3)表达不当:重新以合适的方式表达

2.发现缺失需求
重新执行需求获取等一系列工作

3.解决需求冲突
协商解决

4.修正不切实际的期望
项目调整与需求协商

2.5需求验证的实践调查

需求验证是重要的
需求验证是容易被忽视的
需求验证的方法是多样的
评审和原型最为广泛

三、需求管理

3.1需求管理

3.2需求基线

是被明确和固定下来的需求集合,是项目团队需要在某一特定产品版本中实现的特征和需求集合

需求基线的主要描述内容有软件需求(需求基线的关键内容)+和软件需求相关的描述信息 

  • 标识符(ID),为后续的项目工作提供一个共同的交流参照。
  • 当前版本号(Version),保证项目的各项工作都建立在最新的一致需求基础之上。
  • 源头(Source),在需要进一步深入理解或者改变需求时,可以回溯到需求的源头。
  • 理由(Rational),提供需求产生的背景知识。
  • 优先级(Priority),后续的项目工作可以参照优先级进行安排和调度。
  • 状态(Status),交流和具体需求相关的项目工作状况。
  • 成本、工作量、风险、可变性(Cost、Effort、Risk、Volatility),为需求的设计和实现提供参考信息,驱动设计和实现工作。

3.3需求跟踪

主要目的是:避免在开发过程或者演化过程中与需求基线不一致或者偏离的风险

需求跟踪是以软件需求规格说明文档为基线,在向前和向后两个方向上,描述需求以及跟踪需求变化的能力。

1.前向跟踪是指被定义到软件需求规格说明文档之前的需求演化过程
向需求的跟踪:说明涉众的需要和目标产生了哪些软件需求
从需求向后回溯:说明软件需求来源于哪些涉众的需要和目标

2.后向跟踪是指被定义到软件需求规格说明文档之后的需求演化过程
从需求向后跟踪:说明软件需求是如何被后续的开发物件支持和实现的
向需求的回溯:说明各种系统开发的物件是因为什么原因(软件需求)而被开发出来的

3.3.1用途

 需求的后向跟踪可以帮助项目管理者

需求的后向跟踪可以帮助客户和用户

需求跟踪中针对具体需求的设计方案选择、设计假设条件以及设计结果等信息可以帮助设计人员

需求跟踪信息还可以帮助维护人员

3.3.2内容

需求跟踪实现的具体内容是依赖于项目的跟踪策略的

3.3.3实现方法

 1.矩阵、2.实体关系模型和3.交叉引用

3.4需求变更控制 

需求的变化是正当和不可避免的,包括:
问题发生了改变
环境发生了改变
需求基线存在缺陷

3.5需求管理的实践调查

3.5.1需求变更

变更发生的事件越迟,影响越大
新增(Added)需求影响最大——影响最大的变更类型
缺陷修复是最为频繁的变更类型
范围蔓延是常见的风险因素

3.5.2需求管理工具

通用的文本处理器(Word Processor)和电子表格(Spreadsheet)使用最为广泛

四、需求工程中的过程管理

4.1需求工程中的过程管理

 需求工程具有环境依赖性

环境因素:

  • 市场特性 例如,客户定制开发 VS 市场驱动
  • 领域特性 例如,成熟领域 VS 不成熟领域,关键性软件 VS 一般应用
  • 技术成熟度 高 VS低
  • 组织文化 固有习惯
  • 项目特性

4.2过程建立(两个步骤:)

  • 建立过程框架
  • 选择工作组件 

4.2.1建立过程框架

选择一个适用项目的过程模型,进行定制和本地化

26种需求工程的过程模型,3种典型的需求工程的过程模型:

(1)完全线性的过程模型 划分为固定的活动,顺序衔接,运用于需求明确处理、简单应用系统

(2)线性迭代的过程模型:不完全顺序衔接

(3)迭代式的过程模型:复杂的迭代、并发和互相交织的关系

常见三个模板:过程说明模板、活动说明模板、技术说明模板

4.2.2 选择工作组件

1.各个需求工程活动需要使用的实践方法和技术;

2.需要使用的支持工具,包括管理工具、建模工具以及各种实践方法要求的工具;

3.执行过程所需要的资源支持,包括可以重用的资源、文档的模版、错误的检查清单等等; 4.执行过程所需要的项目策略支持、过程指南以及各种工作组件的使用帮助。

4.3过程改进 

PDCA模型(Plan-Do-Check-Action)

 五、需求工程中的项目管理

 5.1需求工程中的项目管理

项目管理:围绕着项目计划而执行的各种项目活动

5.2资源支持 

5.3生命周期规划

(1)瀑布模型

(2)增量模型

优点:采用逐步增量和多次发布的方式减少每一次实现的需求范围,降低需求实现的风险,需要可靠的需求基线。软件的问题域比较复杂,但是业务非常成熟而且需求比较稳定

缺点:需求易变或问题域信息很难一次处理完整时并不适用,不利于用户的有效参与。

 (3)领域模型

 (4)原型模型

优点: 问题域不成熟,业务活动仍然在不断发展和改变 能够很好的解决各种不确定性

缺点: 提高了需求工程阶段的成本,而且易于发生各种原型风险

5.4团队管理 

  • 组建需求团队
  • 维持需求团队内部的有效沟通

5.5需求风险管理

 风险产生的原因是对未来不利事件的不确定性

包含5个活动※

5.5.1风险管理过程的活动

1.风险识别

  • 常用方法是建立风险条目的检查表,逐一比照进行项目的风险识别
  • 另一个常用方法是驱动因素分析,建立决策模型,推导出可能的风险
  • 工作分解也是常用方法,建立工作分解和网络图,

2.风险分析

风险分析的特征:       不确定性、损失、严重性、期间、优先级

3.制定风险管理计划

包括3各方面: 风险回避/缓解策略、风险监测、风险应急计划

4.风险跟踪

5.风险控制

5.5.2需求风险管理※

风险驱动因素

应对策略

类别

示例

类别

示例

需求复杂性

系统的规模比较复杂

系统的环境比较复杂

涉及的技术比较复杂

需求建模技术

形式化建模技术,例如KAOS

建模方法学,例如UML

特殊技术,例如ERD、DFD

需求稳定性

任务复杂,有着比较大的可变空间

业务领域不稳定

系统需要解决的问题不稳定

业务领域有不确定性

系统需要解决的问题有不确定性

系统的环境约束有不确定性

需求探索技术

迭代式需求开发,例如原型法

协作式需求开发,例如JAD

需求可得性

系统用户的数量众多

缺乏用户参与

需求团队的组织存在缺陷

需求团队地理分散

需求获取技术

面谈、原型、观察等等

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

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

相关文章

DHCP+链路聚合+NAT+ACL小型实验

实验要求: 1.按照拓扑图上标识规划网络。 2.使用0SPF协议进程100实现ISP互通。 3.私网内PC属于VLAN1O, FTP Server属于VLAN2O,网关分 别为所连接的接入交换机,其中PC要求通过DHCP动态获取 4:私网内部所有交换机都为三层交换机,请合理规划VLAN&#…

关于对tinymce富文本编辑器使用的心得

本文分为一下几个功能: tinymce初始化的一些配置在工具栏和文本中间插入特定的标题和摘要自定义工具栏按钮,实现特定功能上传图片时去掉网络上传功能粘贴过来的图片实现默认上传给图片添加水印功能实现一键排版 一、tinymce初始化的一些配置 1、首先需要…

机械大专生能学会云计算吗,完全零基础的

机械大专生能学会云计算吗,完全零基础的 正常来说,大专及以上学历都能学会云计算,但是会和满足就业需求是两回事哈。如果你想通过学习就业,就需要根据当下相关岗位的普遍技术需求以及其他方面的要求,来针对性的学习和提…

契约锁连续入选金融信创生态实验室「金融信创优秀解决方案」

近日,中国人民银行直属机构--金融信创生态实验室正式公布《金融信创优秀解决方案(第二期)》评选结果,契约锁「印章管控方案」成功入选,并被收录在“一般业务类-产业机构”名录,为金融机构的印章管控及电子签…

一个简单的运筹优化生产问题求解过程

运筹相关的一个简单的生产问题 题目来自于清华大学出版的《运筹学》第四版。 一、问题描述 二、图解法 三、单纯形法 第一次迭代: 第二次迭代: 第三次迭代: 下面描述一下第三次迭代的详细过程: 从表达式(2-18&#…

一文理解Kafka

概述 Kafka是一个基于Zookeeper的分布式消息中间件,支持消息分区,提供发布和订阅功能。使用Scala编写,主要特点是可水平扩展,高吞吐率以及高并发。 常见的使用场景: 企业级别活动数据和运营数据的消息传递&am…

2023年自动化测试如何学?从头开始自动化测试指南,一路晋升...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 Python自动化测试&…

❤ 用JS 从零开始开发一个 Chrome 提示插件(简单易学 10分钟搞定)

❤ 为自己量身手写一个chrome暖心插件(资源文章最后) ❤ 最近看到了一个很温馨的提示代码,于是想着为自己的浏览器做一款chrome插件 1、chrome 插件理解: 一个html js css image的一个web应用 不同于普通的web应用, chrome插…

怎么把视频转换成gif动图,5个超强工具分享

在我们平时的聊天中,会经常遇到需要将视频转换成gif动图的情况。这样一来,我们可以轻松将视频中的经典片段转换成gif动图,方便分享和娱乐。同时,这种方式不仅能够传播视频内容,还能带来很多趣味。 然而,许…

1,Hadoop的基本概念和架构

Hadoop的基本概念和架构 学习路线 hadoop的基本概念和架构hadoop的安装和配置hadoop的HDFS文件系统hadoop的MapReduce计算框架hadoop的YARN资源管理器hadoop的高级特效,如HBase,Hive,Pig等hadoop的优化和调优hadoop的应用场景,如…

Qt中的互斥锁(QMutex和QMutexLocker)

QMutex和QMutexLocker 类 QMutex 的主要函数有: lock (); 加锁,如果该互斥锁被占用,该函数阻塞,直到互斥锁被释放。unlock (); 解锁bool tryLock (int timeout 0); 表示尝试去加锁&#xff0…

如何用R语言分析COVID-19相关数据

一、概述 COVID-19是当前全球面临的一项重大挑战。 本文将介绍如何使用R语言分析COVID-19相关数据,探索其感染率、死亡率和人口特征的相关性,以及使用统计建模方法预测COVID-19的死亡率。 二、数据导入与筛选 COVID-19 Data Repository by the Center…

CSS的使用

CSS 概述 CSS 是一门语言,用于控制网页表现。我们之前介绍过W3C标准。W3C标准规定了网页是由以下组成: 结构:HTML表现:CSS行为:JavaScript CSS也有一个专业的名字:Cascading Style Sheet(层…

一起了解大数据可视化开发

在办公自动化快速发展的今天,大数据可视化开发的应用价值普遍增高。借助它的灵活、便捷、易操作等特性,可以助力企业实现办公自动化提质增效,数字化进程快速发展,因而得到了大家的信赖与支持。那么,什么是大数据可视化…

Spring Boot 使用SSL-HTTPS

Spring Boot 使用SSL-HTTPS HTTPS协议可以理解为HTTPSSL/TLS,可以理解为HTTP下加入了SSL层,通过SSL证书来验证服务器的身份,并为浏览器和服务器之间的通信进行加密。 SSL(Secure Socket Layer安全套接字层):SSL协议位于TCP/IP协…

【Jenkins】Jenkins拉取Github代码(windows)

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化 👉专__注👈:专注主流机器人、人工智能等相关领域的开发、…

虹科新品 | 高可靠性、可适用于高磁/压的线性传感器!

PART 1 什么是线性传感器? 基本上,线性传感器是一种用于测量位移和距离的设备,具有高可靠性。测量网格通过光学传感器移动测量数据,数据被光学记录并通过控制器转换为电气数据,而控制器又可以转换为路径。 因此&…

怎么删除文件?分享3个文件删除的正确方法!

案例:怎么删除文件 【我每次想要删除文件时都感觉好麻烦啊!想问问大家在删除文件时都是怎么进行操作的呢?】 在日常使用电脑的过程中,删除文件是一个很常见的操作,但是并不是每个人都知道删除文件的正确方式。正确的删…

企业做网站需要什么条件?

随着互联网的不断发展,企业做网站已成为市场营销的必要手段。但是,要想让一个网站达到预期效果,需要具备一定的条件和技巧。本文将从以下几个方面介绍企业做网站的条件和优化方法。 第一步:明确目标 企业做网站的第一步就是要明确…

【JAVAEE】线程安全的集合类及死锁

目录 1.多线程环境使用集合类 2.多线程环境使用队列 3.多线程环境使用哈希表 3.1HashTable 3.2ConcurrentHashMap 4.死锁 4.1死锁是什么 4.2死锁的代码示例 4.3产生死锁的原因 4.4如何避免死锁 这里有一个代码示例: 定义一个普通的集合类,通过…