软件工程期末复习(7)需求过程

news2024/11/16 17:57:08

需求分析

需求过程

什么是需求过程?

  • 需求过程是用来导出、确认和维护系统需求文档的一组结构化活动。
  • 通常,一个良好的需求过程应包括下列活动:
    • 需求提取
    • 需求分析和协商
    • 需求确认

需求提取 

  • 需求提取是通过与客户、系统用户和其他与系统开发相关的人员交流来发现需求的过程;
  • 必须从项目干系人的角度考虑问题,花时间找到他们的真正需求;
  • 为提出系统需求,必须理解待解决问题、组织的业务过程、系统可能使用方式、系统的应用领域,以及文档中与系统相关的内容,并与项目相关人员讨论他们需要的系统服务和系统约束。

系统需求的资料来源

  • 主要来源是新系统的各种系统相关者,即项目干系人
  • 系统的用户。从两个方向来收集资料:
    • 水平方向:物流、人力流、资金流、信息流、单据流、报表流、数据流
    • 垂直方向:业务操作用户、管理用户、主管(决策)用户
  • 客户
  • 技术人员技术、维护方面的需求
  • 从各类系统相关者中识别出关键的人做领域专家
  • 其他来源

与客户沟通获取需求的方法: 

  • 访谈
  • 面向数据流自顶向下求精
  • 简易的应用规格说明技术
  • 场景分析
  • 快速建立软件原型

访谈:

准备问题的原则
  • 问题应该是循序渐进的,先一般后细节;
  • 所提问题不应该限制用户在回答过程中进行自由发挥。组织问题尽量客观公正;
  • 逐步提出的问题在汇总后应能反映应用问题或子问题的全貌,并覆盖用户对目标软件系统或其子系统在功能、行为、性能诸方面的要求。

准备问题:

  • 第一组问题(语境无关的问题)
    • 谁是这项工作的最初请求者?
    • 谁将使用该解决方案?
    • 成功的解决方案的经济收益是什么?
    • 存在另一个你需要的解决方案源吗?
  • 第二组问题(使分析员能获得对问题更好的理解,并使客户能够表达对解决方案的感觉)
    • 你将如何刻画将由某成功的解决方案产生的“好的”输出?
    • 该解决方案强调了什么问题?
    • 你能向我展示(或描述)解决方案将被使用的环境吗?
    • 存在将影响解决方案的特殊性能问题或约束吗?
  • 第三组问题(关注会谈的效率)
    • 你是回答这些问题的合适的人员吗?
    • 我的提问和你想解决的问题相关吗?
    • 我是否问了太多的问题?
    • 还有其他人员可以提供附加信息吗?
    • 还有其他我应该问你的任何问题吗?

面向数据流自顶向下求精:

面向数据流自顶向下求精过程

简易的应用规格说明技术:

FAST: facilitated application specification technique 一种面向团队的需求收集法。这种方法提倡用户与开发者密切合作,共同标识问题,提出解决方案要素,商讨不同方案并指定基本需求。

  • 初步访谈,通过用户对基本问题的回答,初步确定待解决的问题的范围和解决方案
  • 开发者和用户分别写出“产品需求”,组织会议
  • 会议前准备,要求每位与会者在会议前列出对象、服务、约束条件(成本、规模、完成日期)和性能标准(速度、容量)列表
  • 是否需要这个新产品?每位与会者把他们在会前准备好的列表展示出来讨论
  • 由协调人主持讨论这些列表,目标是,针对每个议题(对象、服务、约束和性能)都创建出一张意见一致的列表
  • 一旦得出了意见一致的列表,就把与会者分成更小的小组,每个小组的工作目标是为每张列表中的项目制定小型规格说明,并讨论
  • 每个与会者都制定出产品的一整套确认标准,并把自己制定的标准提交会议讨论,以创建出意见一致的确认标准
  • 由一名或多名与会者根据会议成果起草完整的软件需求规格说明书

         优点:

使用户与开发者不分彼此,齐心协力

即时讨论并求精

有能导出规格说明的具体步骤

场景分析(use case) :

一个use case是一个描述软件如何被用于给定情形的场景。

首先标识参与者——角色

然后定义use case

use case回答的问题:

  • 该参与者完成的主要任务或功能是什么?
  • 该参与者将获取、生产或改变什么系统信息?
  • 该参与者是否必须通知系统关于外界环境的变化?
  • 该参与者希望从系统获得什么信息?
  • 该参与者是否希望被通知未预期的变化?

原型化方法:

原型:向相关人员演示系统提供的功能

需求过程中两个阶段都可能使用原型技术

需求提取阶段的原型:针对难以理解、不好把握的需求

  • 原型化使需求的真正含义易于理解;
  • 原型化是开发用户接口的唯一有效方式;
  • 原型化有助于在投入高开发成本前确定系统的总体可行性和可用性;
  • 最终系统有时可以通过向原型添加和修改功能来开发。

三种原型化方法:

  • 三种原型化方法:
    • 纸上原型法:定义场景、画出界面
    • Wizard of Oz:由人模拟系统
    • 可执行原型:选择适合开发原型的语言
  • 需求提取阶段的原型系统通常不能反映系统性能、效率等方面指标,仅用于发现功能需求。 需求确认阶段的原型:能用于试验的系统原型
    • 确认原型必须比提取原型更完整
    • 检查是否满足客户、用户的实际需要
    • 可用于开发测试用例 
  • 废弃型(快速原型):起解释作用
  • 进化型:最终演变为产品
  • 原型可能要求投入较高成本,并可能导致延迟交付;
  • 不提倡把原型做成最终系统:原型趋向于非结构化,会导致系统灵活性降低、长期成本增加、以至于系统生存期缩短。

需求提取中注意的事项:

  • 确定系统的边界
  • 从多个角度考察待解决的问题
    • 对确定需求优先级很有帮助:多个角度下都被建议的需求应该具有高优先级。
  • 把需求按必要程度分三类:
    • 必须要满足的需求
    • 很想要但对系统目标不是必要的需求
    • 可能满足但也可能取消的需求

需求分析与协商(Analysis & Negotiation):

发现一系列原始需求之后,应分析它们之间的冲突、重叠、遗漏和不一致。在具备了有效的分析信息之后,项目相关人员就可以协商得到一套认可的系统需求;

需求分析、协商与需求提取是不可分割、互相交错的两个过程;

经常,需求分析中会细化需求定义文档或开发系统模型,通过模型来揭示需求中更深层次的矛盾或不足。

 

项目干系人与需求协商:

  • 协商主要是讨论需求冲突,找出每个人都满意的折衷方案;
  • 除了逻辑与技术上的问题,组织与行政上的一些考虑也可能左右项目需求,所以必须与各方面项目干系人协商以做出需求决策:  
    • 例如:新系统涉及到权力的丧失或转移 

需求分析原则:

  • 操作性原则
    • 必须理解并描述问题的信息域,建立数据模型;
    • 必须定义软件应完成的功能,建立功能模型;
    • 必须描述作为外部事件结果的软件行为,建立行为模型;
    • 必须对描述信息、功能和行为的模型进行分解,用层次的方式展示细节。
  • 指导性原则
    • 在你开始建立分析模型前先理解问题
    • 开发使用户能够了解人机交互将如何发生的原型
    • 记录每个需求的起源及原因
    • 使用多个需求视图
    • 给需求赋予优先级
    • 努力删除歧义性

在需求分析中使用需求分类:

  • 需求分类是发现需求之间的共性和例外关系的依据。冲突和重叠的需求最有可能发生在同一类需求中。有时某些类似需求可以合并。
  • 需求分类可以提高文档跟踪能力。当某类需求变更时,应考虑同一类中其他需求是否受到影响。
  • 需求分类可以帮助找到遗漏的需求。在正常分类下某一类里没有需求时,往往意味着遗漏了某些重要需求。

在需求分析中使用问题:

  • 每个需求是否和系统/产品的整体目标一致?
  • 所有需求是否在合适的抽象层次上被规约?
  • 需求是否真的必要或是它表示了一个对系统目标而言可能并不重要的附加特征?
  • 是否每个需求被界定并且无歧义?
  • 是否每个需求均有归属?
  • 任意需求是否和其他需求冲突?
  • 是否每个需求均在系统或产品驻留的技术环境中可达?
  • 每个需求在实现后是否可测试?

使用交互矩阵发现冲突与重叠:

交互矩阵的各行和各列都对应一项需求,而每一个矩阵元素都用来表示对应的两个需求是否冲突、重叠或者独立; 可使用电子表格来做。行首和列首都标上需求编号或标识符,把每一项需求跟其他所有需求比较,对于需求冲突,填入1,对需求重叠填入1000,对需求独立填入0。最后对行或列求和,每项需求的总和除以1000的余数就是冲突数目,商数就是重叠数目; 大量的冲突和重叠表明,此项需求的任何更改都可能大大影响系统其他部分。

需求分析与协商中注意的事项:

保证需求是可测试的 摒除需求中不确定、不完整、不正确的部分 例如:“要能立刻访问水质的信息”这样表述是不可测试的; 应准确地描述:“要在请求后2秒内找到水质的记录”。 确定每个副词和形容词的定量描述 用特定实体的名称代替代词 要确保在需求文档中定义了每个名词

各种非功能需求规格说明可能使用的度量: 可靠性:出错时间、错误发生率 有效性:交互请求后出错的可能性 性能:每秒处理事务数、用户输入的响应时间 可用性:学习75%的用户功能所需要时间、在给定时间内,由用户引起的错误平均值 健壮性:系统故障后重新启动的时间 完整性:系统出错后,允许的数据丢失的最大限度

需求确认(Requirement Validation):

需求确认:目标是检查被定义的需求集合,并发现需求中可能存在的问题。最终要确保开发方与客户间没有误解、需求定义与规约间保持一致。 要检查的问题可能包括: 缺乏与质量标准的一致性 由匮乏的词语描述的需求具有不确定性 在分析过程中没有发现的需求冲突

必须明确需求分析和需求确认是不同阶段的任务,尽管它们有共同点: 共同点:它们都要检查系统需求的完整性和一致性; 需求分析所针对的是从有关方面提取的、未被转换过的需求,可能既不完全又不是结构化表达的; 需求确认所针对的是包含全部系统需求的需求文档的最终草案。需求确认是需求文档业已完成,请求获得批准之前的一个检查步骤。

需求过程是从问题空间向求解空间转化的第一步,所以需求确认没有任何东西可依靠,它只能增加双方的信心,但这也是在离开问题空间前确保需求能被相关人员接受的最后机会了; 发现并修复需求问题能节省后期返工的成本; 需求确认要花费一段时间:阅读文档、开评审会、原型试验……请做好思想准备:若不解决需求问题就开始系统开发,准备迎接某种程度的返工。

需求评审:

组织正式的需求评审: 由一组人系统地检查需求、讨论问题的解决方案; 评审组包括双方的人员代表,应由未参与需求过程的人主持; 评审组成员最好具有各自不同方面的技能、知识、经验,以利于问题的发现; 评审是为了发现并解决问题,而不是为了责备任何人。需求中的冲突应在评审中得到解决。

评审的内容:针对前面介绍的需求特性,检查每项需求 审核项目目标; 审核需求与目标相符与否; 系统环境、系统功能、系统的限制等; 对开发过程中或系统运行过程中存在的风险进行评估和记录。讨论和比较各种可选方案,并和客户就使用哪种方案达成一致意见; 随着开发的进行(以及需求改变和增加时),怎样继续检验并确认需求?测试小组怎样测试已经正确实现了所有的需求?谁提供测试数据?

需求过程的总结:

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

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

相关文章

谷歌I/O 2024大会全面硬刚OpenAI

🦉 AI新闻 🚀 谷歌发布升级版Gemini机器人 竞争OpenAI ChatGPT-4 摘要:谷歌展示了升级版的 Gemini 聊天机器人,其支持实时处理视频和语音输入,并准确回答问题。此次发布时机与 OpenAI 公布 ChatGPT-4o 新模型几乎同步…

C++多态实现原理详解

阅读引言: 我想象了一下, 假如人有突然问我什么是多态, 我该如何给别人说清楚呢?所以写下这篇文章, 希望大家看完有所收获。 目录 ①. 开胃小菜 ②. 多态常见的一个小小面试题 ③, 虚函数指针虚函数表 …

FPGA - Xilinx系列高速收发器---GTX

1,GTX是什么? GT :Gigabit Transceiver千兆比特收发器; GTX :Xilinx 7系列FPGA的高速串行收发器,硬核 xilinx的7系列FPGA根据不同的器件类型,集成了GTP、GTX、GTH、GTZ四种串行高速收发器&am…

ARM机密计算组件

安全之安全(security)博客目录导读 目录 ​一、硬件架构 1、RME 二、软件和固件架构 1、RMM 2、其他固件标准(例如PSCI) 三、开源实现 1、TF-A 2、Veraison 3、工具链 四、动态TrustZone技术 Arm机密计算架构(Arm CCA)引入了一系列硬件和软件…

信息化总体架构方法_2.信息化工程建设方法

1.信息化架构模式 信息化架构一般有两种模式,一种是数据导向架构,一种是流程导向架构。对于数据导向架构重点是在数据中心,BI商业智能等建设中使用较多,关注数据模型和数据质量;对于流程导向架构,SOA本身就…

如何利用3D可视化大屏提升信息展示效果?

老子云3D可视化平台https://www.laozicloud.com/ 引言 在信息爆炸的时代,如何有效地传达和展示信息成为了各行各业的一大挑战。传统的平面展示方式已经无法满足人们对信息展示的需求,3D可视化大屏应运而生,成为了提升信息展示效果的利器。本…

二分法的时间复杂度是logN

对数函数: (a>0, a≠1, x>0) 当αe时,记为yln x 当α10时,记为ylg x 当α2时,记为ylog x 其中x是自变量,函数的定义域是(0,∞),…

数智转型 聚创未来 | 2024达索系统企业转型智造论坛汽车零部件专场

报名链接: 数智转型 聚创未来https://3ds.tbh5.com/3ds/ureg.aspx?fwbestway

Adaboost集成学习 | Matlab实现基于CNN-BiLSTM-Adaboost集成学习时间序列预测(股票价格预测)

目录 效果一览基本介绍模型设计程序设计参考资料效果一览 基本介绍 Adaboost集成学习 | Matlab实现基于CNN-BiLSTM-Adaboost集成学习时间序列预测(股票价格预测) 模型设计 融合Adaboost的CNN-BiLSTM模型的时间序列预测,下面是一个基本的框架。 数据准备: 收集并整理用于时…

环境光遮蔽技术在AI去衣应用中的创新探索

引言: 随着计算机视觉和人工智能技术的飞速发展,AI去衣技术逐渐走进公众视野。这一技术以其独特的应用前景和技术挑战引起了广泛的关注。在实现衣物去除的同时保持图像质量的关键技术之一,便是环境光遮蔽技术。本文将深入探讨环境光遮蔽技术在…

“Linux”的vi / vim目录编辑器

在前面中我们了解到Linux中的基础命令,20多个命令每个记住格式是:命令 选项 参数或者文件名,下面在了解一下最后两个命令:tree命令和find命令 一、补充的命令 (1)tree 作用:以竖状显示文件…

什么是BI看板?选择BI看板制作工具时一定要考虑这些方面

BI看板也称为商业智能仪表板,是一种直观的数据可视化工具,它将关键业务指标(KPIs)和数据以图表、图形和表格的形式集中展示,使用户能够快速获取企业运营的实时概览。 这种数据可视化方式不仅使得复杂的数据信息易于理…

【环境安装】nodejs 国内源下载与安装以及 npm 国内源配置

前言 Node.js 是一个基于 Chrome V8 引擎构建的 JavaScript 运行时环境,它能够使 JavaScript 在服务器端运行。它拥有强大的包管理器 npm,使开发者能够轻松管理和共享 JavaScript 代码包。 在中国,由于众所周知的原因,我们可能会…

Salesforce AI研究: 从奖励建模到在线RLHF工作流

摘要 该研究在本技术报告中介绍了在线迭代基于人类反馈的强化学习(Online Iterative Reinforcement Learning from Human Feedback, RLHF)的工作流程,在最近的大语言模型(Large Language Model, LLM)文献中,这被广泛报道为大幅优于其离线对应方法。然而,现有的开源RLHF项目仍然…

【微信小程序开发(从零到一)【婚礼邀请函】制作】——任务分析和效果实现的前期准备(1)

👨‍💻个人主页:开发者-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏&#xff1a…

第188题|幂级数的展开的常规方法(一)|武忠祥老师每日一题

解题思路:求幂级数有两种方法,一种是直接法,这里显然不太好求,还有一种是利用现有展开式展开,我们看到分母 可以分解因式成(x6)(x-1),进而拆解成一次式。拆解成一次式的目的是为了使用一下两个展开式。 第一步&#xf…

51单片机小车制造过程记录

首先感谢B站up主好家伙vcc的资料。 这次小车做出来虽然资料挺全的,但中间还是犯了很多不该犯的错误。 第一个,物料这次我们搞错了挺多,最离谱的应该是最小系统板都错了。 资料里用的stm32f103c8t6,我们开始买成了stm32f103c8t6。…

深度学习:光流估计新范式

0.概述 在这篇文章中,我们将讨论两种基于深度学习的光流运动估计方法。FlowNet是第一个用于计算光流的CNN方法,RAFT是当前最先进的估计光流的方法。我们还将看到如何使用作者提供的经过训练的模型来使用PyTorch对新数据进行推断。 1. FlowNet FlowNet…

银行核心业务详解

银行的核心业务是其运营和盈利的基础,下面我将详细介绍这些核心业务: 存款业务:存款业务是银行最基本的资金来源之一。银行通过吸收公众的存款,为贷款和投资活动提供资金。存款业务分为活期存款、定期存款、储蓄存款等多种形式。…

DDoS攻击揭秘与网站防护策略

DDoS攻击(分布式拒绝服务攻击)是一种利用大量被控制的计算机或智能设备(如僵尸网络)对目标网站或服务器发起大量无效请求或数据流量,从而导致目标系统资源耗尽、服务崩溃或无法处理正常请求的攻击方式。这种攻击通常是…