需求工程简析

2023-05-16

已剪辑自: https://zhuanlan.zhihu.com/p/36145396

什么是需求工程

需求工程是指应用已证实有效的技术、方法进行需求分析,确定客户需求,帮助分析人员理解问题并定义目标系统的所有外部特征的一门学科。需求工程通过合适的工具和记号系统地描述待开发系统及其行为特征和相关约束,形成需求文档,并对用户不断变化的需求演进给予支持。

需求工程的概述

需求分析是介于系统分析和软件设计阶段之间的桥梁。一方面,需求分析以系统规格说明和项目规划作为分析活动的基本出发点,并从软件角度对它们进行检查与调整;另一方面,需求规格说明又是软件设计、实现、测试直至维护的主要基础。良好的分析活动有助于避免或尽早剔除早期错误,从而提高软件生产率,降低开发成本,改进软件质量。

需求工程的主要内容

需求工程是一个不断反复的需求定义、文档记录、需求演进的过程,并最终在验证的基础上冻结需求。80年代,HerbKrasner定义了需求工程的五阶段生命周期:需求定义和分析、需求决策、形成需求规格、需求实现与验证、需求演进管理。近来,MatthiasJarke和KlausPohl提出了三阶段周期的说法:获取、表示和验证。

综合了几种观点,可以把需求工程的活动划分为以下5个独立的阶段:

  1. 需求获取:通过与用户的交流,对现有系统的观察及对任务进行分析,从而开发、捕获和修订用户的需求;
  2. 需求建模:为最终用户所看到的系统建立一个概念模型,作为对需求的抽象描述,并尽可能多的捕获现实世界的语义;
  3. 形成需求规格:生成需求模型构件的精确的形式化的描述,作为用户和开发者之间的一个协约;
  4. 需求验证:以需求规格说明为输入,通过符号执行、模拟或快速原型等途径,分析需求规格的正确性和可行性;
  5. 需求管理:支持系统的需求演进,如需求变化和可跟踪性问题。

需求工程的基本活动

基本活动

  • 抽取需求;
  • 模拟和分析需求;
  • 传递需求;
  • 认可需求;
  • 进化需求。

项目失败原因

  • 缺少用户参与
  • 不完整的需求
  • 需求或需求文档的变更
  • 缺少管理
  • 技术能力不足
  • 缺少资源
  • 不现实的期望
  • 预算不足
  • 实现不必要的功能
  • 不能适应变化和重新定向

问题 vs. 解决问题

做什么 vs. 怎么做

  • “做什么” 和 “怎么做” 之间的区别经常被用于将系统的需求定义和系统设计区分开来。 或者可以说, 需求用来定义问题并说明 “要开发什么”; 而系统设计用来定义解决方案并说明 “系统应如何开发出来”
  • 做什么 -> 问题描述
  • 怎么做 -> 解决方案描述

需求类型

  • 功能性需求
  • 质量需求
  • 约束

功能性需求

比如:注册登陆,下单等

质量需求

质量需求主要是性能、稳定性、可靠性。

用户关心

  • 可用性
  • 效率
  • 灵活性
  • 完整性
  • 互操作性
  • 可靠性
  • 健壮性
  • 易用性

开发者关心

  • 可维护性
  • 可移植性
  • 可复用性
  • 可测试性

非功能性需求

  • 不明确的功能性需求:不推荐精化,可列为一组功能性需求
  • 质量需求

约束

通过来源区分

  • 文化约束 (即约束来源于系统用户的文化背景)
  • 法律约束 (即约束来源于法律和标准)
  • 组织约束
  • 物理约束
  • 项目约束

通过影响的主体区分

  • 影响系统本身(例如:功能限制、权限等)
  • 影响系统的开发过程(例如:工作量、开发人数等)

需求工程方法

需求工程包括需求开发和管理,而需求开发又包括这几个过程:需求获取,需求分析,需求规格说明和需求验证。

需求获取

需求包括业务需求,用户需求和功能需求以及非功能需求,在需求开发之前,我们需要先定义好需求开发的过程,形成文档,内容包括:需求开发的步骤,每一个步骤如何实现,如何处理意外情况,如何规划开发资源等。

需求获取包括以下方法和技能:

  • 项目范围确定:开需求开发前期,我们应该获取用户的业务需求,定义好项目的范围,使得所有的涉众对项目有一个共同的理解。
  • 用户确定:确定用户群和分类,对用户组进行详细描述,包括使用产品频率,所使用的功能,优先级别,熟练程度等等。对每一个用户组确定用户的代言人。对于大型项目,我们需要先确定中心客户组,中心客户组的需求具有高级别的优先级,需要先实现的核心功能。
  • 用例确定:与用户代表沟通,了解他们需要完成的任务,得到用例模型。同时根据用例导出功能需求。用例描述应该采用标准模板。
  • 系统事件和响应:业务事件可能触发用例,系统事件包括系统内部的事件以及从外部接受到信息,数据等等,或者一个突发的任务。
  • 获取方法:召开需求讨论会议,观察用户的工作过程,采用问答式对话,采用诱发式需求诱导等等。检查完善:问题报告和补充需求建议

需求分析

需求分析是对用户的需求获取之后的一个粗加工过程,需要对需求进行推敲和润色以使所有涉众都能准确理解需求。分析过程首先需要对需求进行检查,以保证需求的正确性和完备性,然后将高层需求分解成具体的细节,创建开发原型,完成需求从需求获取人员到开发人员的过渡。

  • 绘制关联图:关联图确定系统和外部的交互。划分了系统的范围和界限,构建了系统对外的接口。
  • 原型开发:对于敏捷方法,推荐完成一个界面的原型,一个初步的系统实现,通过原型,让所有涉众对开发的项目有了一个初步的映像,同时可以提供对需求的检验。
  • 需求优先级别:采用分析的方法确定产品的功能,用例和单项需求的优先级别,以优先级为基础,确定各项功能和需求都包括在哪个版本中,在项目开发过程中,需求的优先级别根据实际情况进行调整。
  • 需求建模:图形分析模型对需求描述更加抽象。主要可以采用UML的建模分析。
  • 数据字典创建:建立系统中所用到的数据项和结构的定义,数据字典可以使参与项目开发的每一个人都使用统一的定义。
  • 子系统:建立系统的结构,同时将需求分配到各个子系统和模块中 。

需求工程过程能力评估与改进

过程能力评估

通过比较现有需求工程过程与过程参考模型之间的差别,可以评估现有过程的能力水平。具体而言,首先以调查表、面谈等方式收集组织中需求相关实践的执行情况;然后,与过程参考模型中的实践进行映射和比较,统计各能力等级下实践的执行情况;根据统计结果判定当前所处的能力等级。

需求工程过程参考模型,当“已执行级”的基础实践被全部规范执行时,需求工程过程达到“已执行”能力等级,否则,需求过程处在“不完整”能力等级;当执行了全部的“已管理级”实践时,需求工程过程达到“已管理”能力等级;当执行了全部的“已定义级”实践时,需求开发工程达到“已定义”能力等级。

过程改进策略

确定了组织需求过程所处的能力水平后,可以通过引入新实践或提高已有实践的性能,实现过程的改进。首先要明确过程改进的目标;然后分析组织的资源条件,确定过程改进的主要内容和手段。要遵循渐进的过程改进策略。一般来说,按照“由低到高”、“先规范后引入”的顺序逐提高过程能力,即先改进低能力等级的实践再改进高能力等级的,先规范已有实践再引入新实践,这样可以降低组织进行需求工程过程改进的风险。

需求工程的验证准则

需求分析阶段的工作结果是开发软件系统的重要基础,大量统计数字表明,软件系统中15%的错误起源与错误的需求。因此,软件需求规格说明书完成以后,需要认真进行技术评审和修改。作为需求分析阶段工作的复查手段,在需求分析的最后一步,应该对功能的正确性、完整性和清晰性,以及其他需求给予评价,可按以下准则评价和验证。

正确性

正确性是最基本的要求之一,一般是指杂需求规格说明书中对于待开发系统的功能、行为、性能的描述必须与用户对目标软件产品的期望相吻合,正确性是相对与用户的应用需求而言的,由于具体应用的千差万别,需求规格说明书的正确性的判断标准也应各不相同。正确性检查属于技术问题,它并不能说明需求模型是否完全表达了用户需求。评价正确性时,可以按照建模规则去检查,或使用软件工具(如CASE)自动检查。当然,也可以请其他不参与该项目的同行校对,发现错误及时更正。

完整性

完整性是指需求模型中是否包含了用户所需的所有功能,这是最基本的要求,若不能满足,其它任何质量问题都无从谈起。因为需求分析的不完全,即使后面的设计与实现再好,也不能满足用户的要求。并且,在系统开发后期增加或更改用户需求,将会成倍地增加开发代价。因此,完整性评价是需求工程质量的关键。改进需求分析的完整性将有助于提高软件开发的生产率,但评价完全性问题却很难。因为用户有时不能完全表达其所有需求,开发者又没有预见,致使软件完成后才发现,维护代价相当大。为了及时发现问题,开发者最好跟班作业,对用户的业务进行深入地了解,从而对需求模型的完全性作出评价。具体评价方法可采用用户审阅、样例分析、业务规则验证、进程映像等方法。

实现性

实现性是指需求模型可以在规定的时间、经费预算和项目的技术约束下完成整个软件开发。这就要求我们在需求模型中不要出现这样或那样的假设,不要忽略各种实际因素,特别是技术和经费,以免到开发后期追悔莫及。评价可实现性主要应用下面两种方法:

\1. 应用开发人员审阅。他们会重点审查系统实现的一些潜在问题,从技术和经济角度分析系统实现的可行性,发现问题可及早修改。

\2. 开发代价估计。这是对需求模型的实现性进行定量测量的方法,通常质量越好代价越大,降低代价就要牺牲质量。只有权衡两者的关系,才能使系统的可实现性达到最佳。

总之,实现性是需求工程质量的最重要因素之一,实现可能性极小的需求模型,其它质量因素再好也无用。

适应性

适应性可以看作需求模型与用户的独立性,即当用户需求发生变化时,需求模型可以不做修改或只进行微小调整。

适应性是需求工程质量评价的最关键因素之一,但在实际系统开发中往往不被重视。很多需求分析人员就事论事,以完成系统的基本功能为目标,而忽略了其功能扩充或改变的可能性,这将会给系统维护造成困难。适应性评价要分析哪些需求将来可能改变、它们出现的可能性及其对需求模型的影响。由于系统未来可能发生的变化很难预测,所以适应性评价有一定困难。具体评价可采用如下方法:

\1. 高层管理者评审。因为适应性评价涉及组织发展的战略目标,一般的业务工作人员无能为力,只有高层决策者才能把握企业未来的发展方向。

\2. 行业专家评审。这些行业专家应该是业务咨询或学术专家,他们能更好地把握企业的发展方向,能够对潜在的市场变化及其可能性作出预测分析。

\3. 技术专家评审。有经验的需求分析专家可以基于系统结构对系统的适应性作出评估,虽然他们并不一定熟悉企业的业务,但是可以从需求分析的技术角度评价系统的适应性。

集成性

在一个大的企业信息系统开发中,通常包括多个应用子系统,这些子系统之间的数据一致性问题显得格外重要。集成性就是指某个应用子系统与企业信息系统中其它应用系统之间的数据一致性,以减少应用系统之间的数据冲突。由于在某些项目开发中,各应用子系统的需求分析是相对独立的,这就不可避免地造成数据重复、系统之间接口复杂等问题。要防止出现类似情况,应尽可能地重复利用已有的数据资源或者进行适当的扩充,以适应新系统的要求。其次,对数据项的定义要保持命名和格式上的一致。

特别强调的是要用全局的观点看待数据,使需求模型具有通用性。

集成性的评价可采用如下几种方法:

\1. 通过局部应用与全局应用模型的比较,发现数据冲突和结构冲突。

\2. 将数据项向已有的数据源做映像,查看是否存在数据共享和重用的可能。

\3. 让该应用系统以外的其它业务部门审阅,检查数据定义是否具有共性。

一致性

需求规格说明书的一致性要求:系统中不存在显式的或隐含的矛盾,也就是说,需求规格说明书中各个需求的描述必须不能相互矛盾,矛盾主要为:术语使用方面的冲突,功能冲突,以及时序方面的前后不一致等。一致性的评价可采用如下几种方法:

\1. 同一意思要用相同的术语来表达。

\2. 需求规格说明书中的各个部分的产品功能不得相互矛盾。

理解性

顾名思义,理解性是指需求模型的结构和描述易于理解。只有通俗易懂,才能更好地同用户交流。如果用户很难理解需求分析结果,他们就不可能检验需求模型是否完全准确地表达了他们的需求内容。另外,应用开发人员对需求模型的理解也至关重要,因为他们负责系统的设计与实现,不充分理解系统的需求,会使软件系统的实现结果同用户要求出现偏差,造成软件生产率下降。评价理解性常可采用以下方法:

\1. 用户审阅。这是最常用的一种方法,检验需求模型的可理解性。但这种方法有一个缺点,用户可能只关心他们所熟悉的业务操作,而没有充分理解模型所表达的含义。

\2. 样例分析。更有效的方法是让用户去使用这个模型,分析一个业务样例,来检验他们对模型的理解程度。

\3. 应用开发人员审阅。虽然系统设计和编程人员不像需求分析人员那样熟悉用户的业务要求,但他们能有针对性地找出哪些地方描述得不清楚。同时,这一步也是应用开发人员认识需求模型的过程

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

需求工程简析 的相关文章

  • tensorflow.python.framework.errors_impl.AlreadyExistsError解决方案

    tensorflow python framework errors impl AlreadyExistsError Another metric with the same name already exists 这是tensorflow
  • Qt QString 、String、char* 三者之间相互转换

    文章目录 把QString 转化为 char 把char 转化为QStringQString 转C 43 43 自带标准stringstring 转QStringstring gt char char gt string 已剪辑自 http
  • 参数类型string和const char*哪个更合理?

    已剪辑自 https mp weixin qq com s AgJpfmbbCbsyo6oqQDjHNA 看一些C 43 43 项目时 xff0c 发现有些函数传递的参数类型是const char xff0c 我在想 xff0c 为什么一个
  • C语言如何实现动态扩容的string?

    众所周知 xff0c C 43 43 中的string使用比较方便 关于C 43 43 中的string源码实现 xff0c 可以参考这篇文章 xff1a 源码分析C 43 43 的string的实现 最近工作中使用C语言 xff0c 但又
  • 一文搞懂交叉编译,Windows和Linux的交叉编译

    文章目录 什么是交叉编译为什么要交叉编译工具链的种类 我们应该怎样建立交叉编译环境在Windows下交叉编译和调试树莓派软件一 Windows下编译树莓派程序二 用WSL来编译树莓派程序三 通过gdbserver远程调试 基于 MinGW
  • 结构体对齐为什么那么重要?

    已剪辑自 https mp weixin qq com s jPTXM809vxzEBhsPT9NzwA C语言结构体对齐问题 xff0c 是面试必备问题 我参与招聘技术面试的时候 xff0c 也喜欢问这个技术点 这不是在面试时要装B xf
  • 商用飞机表明符合性的10种方法

    已剪辑自 https www cannews com cn 2022 0818 348969 shtml 每一款新型号飞机投入市场之前 xff0c 申请人通常需要采用不同的方法来获得所需的证据资料 xff0c 以表明型号设计对适航条款的符合
  • 什么是项目管理?一文了解项目管理的概念、历史、内容和方法

    已剪辑自 https www 36dianping com dianping 17 项目 是个眼下炙手可热的词 熟人见面问一句 最近忙什么项目 xff0c 已经成为职场打招呼的基本操作 项目起源很久 xff0c 可以说有人类活动时就已经存在
  • 项目管理是什么

    文章目录 一 什么是项目二 什么是项目管理三 项目管理起源四 项目管理的十大知识领域五 项目管理的五大过程和49个子过程1 启动过程2 规划 https worktile com kb tag 规划 过程3 执行过程4 监控过程5 收尾过程
  • 这10种项目管理方法,PMP项目经理备考收藏

    文章目录 1 敏捷开发 2 Scrum 3 Dev O ps 4 Scrumban 5 项目管理的知识体系 6 受控环境下的项目管理 7 六西格玛 8 瀑布开发 9 能力成熟度模型集成 10 关键链项目管理 已剪辑自 https board
  • 符合性矩阵

    已剪辑自 https mp weixin qq com s KKOgk8aJVdcKf5mFasYkhQ 编者注 xff1a 本文作者翱坤科技是一家航空工程综合服务机构 适航思维 在此衷心感谢其无私的知识和经验分享 符合性矩阵 Compli
  • 椭圆曲线密码学(ECC)原理

    1 椭圆曲线的定义 满足以下形式二元三次方程的点集 y 2 43 a x y
  • 可追踪性矩阵和需求追溯性矩阵

    文章目录 可追踪性矩阵的维基百科解释 不同类型的需求可追溯性矩阵 什么是需求可追溯性矩阵 xff08 RTM xff09 xff1f 示例模板什么是可追溯性矩阵 xff1f xff08 TM 值 xff09 什么是需求追踪矩阵 xff1f
  • 软件测试入门

    文章目录 软件测试入门系列之一 xff1a 软件测试基础 测试基础 什么是软件测试为什么软件测试很重要 xff1f 软件测试有什么好处 xff1f 软件工程测试软件测试类型软件工程中的测试策略程序测试软件测试概要 软件测试入门系列之二 xf
  • 一款专业且全面的嵌入式开发调试工具

    已剪辑自 https mp weixin qq com s UH h kxdvYz7A6eUMoYbew 不知道大家平时做嵌入式开发时用调试工具进行调试 xff0c 今天给大家分享一款专业且全面的嵌入式调试工具集 xff1a Micro L
  • 城市空中交通,万亿蛋糕?

    已剪辑自 https mp weixin qq com s biz 61 MzkzMDIxMjY3Mg 61 61 amp mid 61 2247484941 amp idx 61 1 amp sn 61 d27a1ac4054f91a2e
  • EVTOL适航

    已剪辑自 https mp weixin qq com s biz 61 MzkzMDIxMjY3Mg 61 61 amp mid 61 2247491691 amp idx 61 1 amp sn 61 c3dea36069299d2de
  • 无人机适航

    文章目录 无人机适航 xff0c 你起跑了吗 xff1f 调查谁当其冲怎么做 无人机 适航审定新政来了 xff01 01新政解读02管理分类03管理要求 无人机适航 xff0c 你起跑了吗 xff1f 无人驾驶航空器飞行管理暂行条例 xff
  • CAAC、FAA和ICAO的适航法规文件体系

    文章目录 CAAC的适航法规文件体系适航审定管理的行政体系和法规体系FAA的适航法规文件体系ICAO的适航法规文件体系 CAAC的适航法规文件体系 已剪辑自 https mp weixin qq com s KJu3 qBX5AIvRnNI

随机推荐

  • 适航批准形式汇总

    以下内容 xff0c 总结于公众号适航思维 文章目录 田莉蓉老师的机载电子产品设计保证实践中的说明在中国 xff0c 适航 到底有多少种证件 xff1f CTSOA取证入门来自一位适航监察员的 避坑指南 xff1a CTSOA篇PMA取证入
  • 适航工作清单

    已剪辑自 https mp weixin qq com s g2AZCqnVjuI2AUezswfr2w 编者注 xff1a 本文作者翱坤科技是一家航空工程综合服务机构 适航思维 在此衷心感谢其无私的知识和经验分享 在民用航空制造单位 xf
  • 一个应用于嵌入式的通用工具包!

    已剪辑自 https mp weixin qq com s fsVpIRmPOIkIT5lVOqt5xw 来源 xff1a https github com cproape toolkit 1 介绍 ToolKit是一套应用于嵌入式系统的通
  • 可靠性设计基础知识大全,一起来学

    xff08 一 xff09 xff1a 理解可靠性 01 理解与可靠性定义 我们总是会说 xff1a 某某公司的东西 好用 xff1b 某某公司的产品 质量好 xff1b 我也会经常抱怨某某系统 不稳定 xff1b 某某公司的产品 不可靠
  • 嵌入式中程序错误如何处理?

    文章目录 一 错误概念1 1 错误分类1 2 处理步骤 二 错误传递2 1 返回值和回传参数2 2 全局状态标志 errno 2 3 局部跳转 goto 2 4 非局部跳转 setjmp longjmp 2 5 信号 signal rais
  • CLion添加第三方库

    cmake minimum required VERSION 3 23 project test set CMAKE CXX STANDARD 14 set INC DIR Include OpenSSL Include set LINK
  • Clion的下载安装配置使用总结

    已剪辑自 https codeantenna com a s1M0flG7NJ 相必经常学C或者C 43 43 的同学们一定用过dev c 43 43 vc 43 43 VS等等各种编译器 xff0c 相比他们来说 xff0c clion还
  • 下载和安装配置 MinGW-w64(免安装版)

    文章目录 1 找到downloads2 找到SourceForge3 找到一个合适的版本 xff08 我这里是下拉找到免安装版 xff09 下载 xff0c 其他的都试过了 xff0c 都不行 xff08 可能是因为外网的关系连接不稳定 x
  • Clion Debug模式使用实践

    文章目录 一 背景二 开启调试三 编译代码四 调试代码 已剪辑自 https segmentfault com a 1190000040698380 一 背景 最近为了考研 xff0c 在学习C语言与数据结构 xff0c 最开始使用Visu
  • 技术交底书怎么撰写?看这一篇就够了

    文章目录 技术交底书怎么撰写 xff1f 看这一篇就够了专利技术交底书格式1 发明 xff08 或实用新型 以下同 xff09 的名称2 技术领域3 背景技术4 发明内容5 附图说明6 具体实施方式 技术交底书各部分应该怎么写技术交底书的典
  • 计算机软件著作权材料模板

    https github com AlexanderZhou01 China software copyright 自己申请软件著作权流程 超详细 xff0c 内含材料模板等 计算机软件著作权模板及个人申请全套攻略 软著
  • ACP敏捷项目管理认证考试科普

    文章目录 说在最前面 xff1a 1 PMI ACP考试介绍 xff1a 2 PMI ACP考试报名流程如下 xff1a 3 PMI ACP报名条件 xff1a 4 资格审查的目的 xff1a 5 ACP与PMP难度对比 6 考试费用 7
  • 你如何理解敏捷开发?

    文章目录 一 对敏捷开发的理解 什么是敏捷 xff08 Agile xff09 xff1f 1 什么是敏捷软件开发 xff1f 2 敏捷的起源3 敏捷有哪些优点 xff1a 4 敏捷的缺点和不足 xff1a 5 为什么敏捷在企业中越来越流行
  • 民机适航取证过程

    转自田莉蓉老师的书籍 机载电子产品设计保证实践
  • 机载产品类别、层级及各自需要满足的适航要求

    转自田莉蓉老师的书籍 机载电子产品设计保证实践
  • 机载产品符合性方法

    田莉蓉老师的机载电子产品设计保证实践中的说明
  • 系统设计保证指南(ARP 4754)

    田莉蓉老师的机载电子产品设计保证实践中的说明
  • 设计保证指南应用实践

    田莉蓉老师的机载电子产品设计保证实践中的说明
  • 结构化开发方法

    文章目录 6 1 系统分析与设计概述6 1 1 系统分析概述6 1 2 系统设计的基本原理6 1 3 系统总体结构设计6 1 4 系统文档 6 2 结构化分析方法6 2 1结构化分析方法概述6 2 2 数据流图6 2 3 数据字典 6 3
  • 需求工程简析

    已剪辑自 https zhuanlan zhihu com p 36145396 什么是需求工程 需求工程是指应用已证实有效的技术 方法进行需求分析 xff0c 确定客户需求 xff0c 帮助分析人员理解问题并定义目标系统的所有外部特征的一