软考 系统分析师系列知识点之需求管理(3)

 接前一篇文章:软考 系统分析师系列知识点之需求管理(2)

所属章节:

第11章. 软件需求工程

        第8节. 需求管理

11.8.4 需求跟踪

根据IEEE的定义,可跟踪性包含两个层面的含义一个是开发过程的两个或多个产品之间能够建立关系的程度,尤其是那些具有前后关系或主从关系的产品。例如,某个给定构件的需求和设计的匹配程度;另一个是软件开发产品中每个元素能够建立其存在理由的程度。例如,DFD中的每个元素定位它所满足需求的程度。

可跟踪性是软件需求的一个重要特征,需求跟踪是将单个需求和其它系统元素之间的依赖关系和逻辑联系建立跟踪。这些元素包括包括各种类型的需求、业务规则、系统架构和构件、源代码、测试用例以及帮助文件等。CMMI也要求具备需求跟踪能力,其对需求跟踪的定义是“在软件工作产品之间维护一致性”,其中工作产品包括软件计划、过程描述、分配需求、软件需求、软件设计、程序代码、测试计划和测试过程。CMMI中的“分配需求”是指项目启动前分配给该项目的需求,其实也就是用户的原始需求。

1. 需求跟踪的内容

根据国家标准GB/T8567-2006,SRS中的每个软件配置项的需求到其涉及的系统(或子系统)需求都要有双向可追踪性。所谓双向跟踪,包括正向跟踪和反向跟踪正向跟踪是指检查SRS中的每个需求是否能在后续工作成果中找到对应点反向跟踪也成为逆向跟踪,是指检查设计文档、代码、测试用例等工作成果是否都能在SRS中找到出处。需求跟踪涉及5种类型,如下图所示:

上图中的箭头表示需求跟踪能力联系链,它能跟踪需求使用的整个周期,即从需求建议到交付的全过程。

上图的左半部分表明,从用户原始需求可向前追溯到软件需求,这样就能区分出开发过程中或开发结束后由于变更而受到影响的需求,也确保了SRS中包括了所有用户需求;同样,可以从软件需求回溯到相应的用户原始需求,确认每个软件需求的出处。如果以用例的形式来描述用户需求,左半部分就是用例和功能性需求之间的跟踪情况。

上图的右半部分表明,由于在开发过程中,软件需求转变为设计和编码等实现元素,因此通过定义单个软件需求和特定的产品元素之间的联系链,可以从软件需求追溯到产品元素。这种联系链使开发人员知道每个需求对应的产品元素,从而确保产品元素满足每个需求。第四类联系链是从产品元素回溯到软件需求,使开发人员知道每个产品元素存在的原因。绝大多数项目不包括与用户需求直接相关的代码,但开发人员应该知道为什么要写这一行代码。如果不能把设计元素、代码段或测试用例回溯到一个软件需求,就可能出现画蛇添足的现象。当然,如果某个孤立的产品元素表明了一个正当的功能,则说明SRS漏掉了一项需求。

第五类联系链是软件需求之间的跟踪。这种跟踪便于更好地处理软件需求之间的逻辑相关性,检查需求分解中可能出现的错误或遗漏

2. 需求跟踪的目的

需求跟踪是一项劳动强度很大的任务,在整个系统开发、运行和维护的过程中,要始终保持联系链信息与实际相符。在项目实践中,使用需求追踪能力,可以获得如下好处:

(1)审核。跟踪能力信息可以帮助开发人员审核和确保所有需求都被正确应用。

(2)变更影响分析。在增、删、改需求时,跟踪能力可以确保不忽略每个受到影响的系统元素。

(3)维护。可靠的跟踪能力信息使得维护能够正确而完整地实施变更,从而提高生产率。

(4)项目跟踪。认真记录跟踪能力数据,就可以获得计划功能当前实现状态的记录。

(5)再工程。可以列出遗留系统中将要替换的功能,记录它们在新系统中的需求和在软件构件中的位置。

(6)重复利用。跟踪能力信息可以帮助开发人员在新系统中对相同的功能利用现有系统的相关资源。

(7)减小风险。需求联系文档化可减少由于项目团队关键成员离职带来的风险。

(8)测试。测试模块、需求和代码段之间的联系链,可以在测试出错时指出最可能有问题的代码段。

3. 需求跟踪矩阵

表示需求和其它系统元素之间的联系链的最普遍方式是使用需求跟踪(能力)矩阵。不论采用何种跟踪方式,都要建立与维护需求跟踪矩阵需求跟踪矩阵保存了需求与后继工作成果的对应关系。例如,从用户原始需求到软件需求之间的跟踪,可以采用如下表所示的矩阵:

                 用例

原始需求

UC-1UC-2UC-3……UC-n
FR-1
FR-2
……
FR-m

对于从软件需求到下游工作产品之间的跟踪,可以采用如下表所示的矩阵:

上表明确展示了每个用例是如何连接到一个或多个设计、编码和测试元素的。其中设计元素可以是模型中的对象,例如,DFD、E-R图或类图等;代码模块可以是类中的方法、源代码文件名、过程或函数。需求跟踪矩阵中可以定义各种系统元素类型间的一对一、一对多和多对多关系,也就是说,允许在上表的一个单元格中填入多个元素来实现这些特征。例如,一个代码模块对应一个设计元素,多个测试用例验证一个功能点,每个用例导致多个功能点等。

至此,“11.8 需求管理”的内容就全部讲解完了。

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

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

相关文章

无广告iOS获取设备UDID 简单方便快捷

ps: 为啥不用蒲公英了,就是因为有广告了,获取个UDID还安装游戏,真恶心?,所以找了新的获取UDID都方法,网页直接获取就可以,不会安装软件。 UDID 是一种 iOS 设备的特殊识别码。除序号之外&…

(1)cpu0简介

一、cpu0介绍 cpu032位架构16位通用寄存器,协处理器和其他特殊寄存器 (1)通用寄存器 全局指针寄存器:"Global Pointer register"(全局指针寄存器)是一个在某些处理器架构中存在的专用寄存器&…

单臂路由实验(思科)

一,实验目的 在路由器的一个接口上通过配置子接口的方式,实现相互隔离的不同vlan之间互通。 二,设备配置 Switch1 Switch>enable 全局模式 Switch#configure terminal 配置模式 Switch(config)#vlan 10 …

【leetcode】20. 有效的括号

有效的括号 题目链接 // 栈结构 typedef char valuetype; typedef struct {valuetype* arr;int top;int capacity; } Stack;void Init(Stack* stack);void Push(Stack* stack, valuetype value); void Pop(Stack* stack);valuetype Top(Stack* stack); int Size(Stack* stack…

嵌入式中C 语言中的三块技术难点

C 语言在嵌入式学习中是必备的知识,甚至大部分操作系统都要围绕 C 语言进行,而其中有三块技术难点,几乎是公认级别的“难啃的硬骨头”。 今天就来带你将这三块硬骨头细细拆解开来,一定让你看明白了。 0x01 指针 指针是公认最难理…

26元/月起!腾讯云一键自动搭建4核16G幻兽帕鲁服务器

腾讯云无需任何配置自动搭建幻兽帕鲁游戏联机服务器,游戏24小时在线,4核16G游戏联机服务器低至26元/月起,新手小白也能一键搭建属于自己的幻兽帕鲁游戏联机服务器! 第一步:购买游戏联机服务器 购买入口:htt…

Django知识随笔

目录 1.如何再ajax中传输post数据? 2.在form表单中使用jquery序列化,input框过多。 1.如何再ajax中传输post数据? 在ajax传递的那个网址,会调用你路由的视图函数,在视图函数上面加一句 csrf_exempt 。写上之后会有提…

Android:RecyclerView跨行跨列的LayoutManager:Spannedgridlayoutmanager

前言: RecyclerView可以使用GridLayoutManager实现跨行,但是不能跨列;瀑布流布局可以跨列但是又不能跨行。原生自带的各个LayoutManager中并没有可以又跨行又能跨列的。网上搜寻了一番,找到了一个亲测可行好用的三方库&#xff1…

DL/T1578-2021电力线路多旋翼无人机巡检系

DL/T1578-2021电力线路多旋翼无人机巡检系 DL/T 1578—2021标准的发布和实施对于架空电力线路的巡检工作具有里程碑式的意义。它不仅填补了多旋翼无人机巡检系统在行业标准方面的空白,还为电力行业提供了一套完整、科学的测试和评估方法。这将有助于提高架空电力线…

使用apifox创建一个Mock Server Api 接口

安装 下载 Apifox - API 文档、调试、Mock、测试一体化协作平台。拥有接口文档管理、接口调试、Mock、自动化测试等功能,接口开发、测试、联调效率,提升 10 倍。最好用的接口文档管理工具,接口自动化测试工具。 创建mock api项目中使用 创建项…

构建LLM辅助生物威胁制造预警系统 人类越发展获取的超能力越大,破坏力越大,威胁越大。我们需要什么样的预警系统?既克服威胁又具有超能力 安全基础

https://openai.com/research/building-an-early-warning-system-for-llm-aided-biological-threat-creation 人类越发展获取的超能力越大,破坏力就越大,威胁越大。 人工智能就是为了赋予人人都能有超能力,而一旦被恶意或无意使用又威胁到人…

生产问题排查系列——未知404状态接口请求

引言 我们的产品主打金融服务领域,以B端客户为我们的核心合作伙伴,然而,我们的服务最终将惠及C端消费者。在技术实现上,我们采用了公司自主研发的微服务框架,该框架基于SpringBoot,旨在提供高效、可靠的服…

vtkNIFTIImageReader读写方位以及原点信息

使用vtkNIFTIImageReader读取体数据为vtkImageData时只会携带spacing信息&#xff0c;方向和原点信息不会写入&#xff0c;需要获取QFormMatrix进行解析。 1、方向及原点读取 vtkSmartPointer<vtkNIFTIImageReader> niiReader vtkSmartPointer<vtkNIFTIImageReader&…

数据结构—基础知识:哈夫曼树

数据结构—基础知识&#xff1a;哈夫曼树 哈夫曼树的基本概念 哈夫曼&#xff08;Huffman&#xff09;树又称最优树&#xff0c;是一类带权路径长度最短的树&#xff0c;在实际中有广泛的用途。哈夫曼树的定义&#xff0c;涉及路径、路径长度、权等概念&#xff0c;下面先给出…

Vue学习之使用HBuilderX创建并使用vue3.0项目

Vue学习之使用HBuilderX创建并使用vue3.0项目 下文将简述如何使用HBuilderX创建并使用vue3.0项目&#xff0c;包含项目创建、目录介绍、如何引用组件、首页自定义设置。 1、创建vue3.0项目 具体操作之前章节已经阐述过不在冗余介绍&#xff0c;创建时选择vue3项目即可。vue2…

【C++】C++入门 — 指针空值nullptr

C入门 指针空值 指针空值 在良好的C/C编程习惯中&#xff0c;声明一个变量时最好给该变量一个合适的初始值&#xff0c;否则可能会出现 不可预料的错误&#xff0c;比如未初始化的指针。如果一个指针没有合法的指向&#xff0c;我们基本都是按照如下 方式对其进行初始化: voi…

数据解构+算法(第07篇):动态编程!黄袍加身!

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 学习必须往深处挖&…

Vue3 函数式弹窗优化

背景 前面文章介绍了如何使用 函数式弹窗&#xff0c;弹窗方式是挂载在了全局&#xff0c;使用了getCurrentInstance方法拿到了全局上下文&#xff0c;进而拿到挂载的dialog进行弹窗操作。getCurrentInstance现在已被官方Vue API隐藏&#xff0c;为内部使用函数&#xff0c;现…

20240202在Ubuntu20.04.6下配置环境变量之后让nvcc --version显示正常

20240202在Ubuntu20.04.6下配置环境变量之后让nvcc --version显示正常 2024/2/2 20:19 在Ubuntu20.04.6下编译whiper.cpp的显卡模式的时候&#xff0c;报告nvcc异常了&#xff01; 百度&#xff1a;nvcc -v nvidia-cuda-toolkit rootrootrootroot-X99-Turbo:~/whisper.cpp$ WH…

ARM架构可视化ROS消息方案部署

ARM架构可视化ROS消息方案部署 三种方案, 1. webviz 2. foxglove 3. rosviz 注: web要用firefox, chromimum用不了, 可能是因为取消了时间同步机制的原因 先说三种方案的优劣, webviz 延迟比较高, 但是部署相对简单, foxglove 部署比较费劲, 但是效果不错, 延迟低, 本文会尽…