第十二章 需求工程之一图胜千言

news2024/11/19 16:29:45

需求建模

  • 可视化需求模型能帮助我们识别被遗漏的、不相关的和不一致的需求。
  • 数据流图(DFD)
  • 流程图,如泳道图
  • 状态转换图(STD)和状态表
  • 对话图
  • 决策表和决策树
  • 事件-响应表
  • 需求树
  • 用例图
  • 活动图
  • 实体关系图(ERD)

从用户需求到分析模型

用户需求和分析模型组件之间的关联

词语类型示例分析模型的组件
名词人员、组织机构、软件系统、数据元素或者已经存在的对象
  • 外部实体、数据库库房或者数据流(数据流图,DFD)
  • 参与者(用例图)
  • 实体或者实体属性(实体关系图,ERD)
  • 通道(泳道图)
  • 带状态的对象(状态转换,STD)
动词行为、用户或者系统所做的情况或者能够发生的事件
  • 处理(数据流图,DFD)
  • 处理步骤(泳道图)
  • 用例(用例图)
  • 关系(实体关系图,ERD)
  • 转换(状态转换图,STD)
  • 活动(活动图)
  • 事件(事件响应表)
条件条件逻辑的陈述,如if/then
  • 判定条件(决策树、决策表或者活动图)
  • 分支(泳道图或者活动图)

选择正确的表达方式

  • 无须为整个系统创建一套完整的分析模型
  • 建模时关注重点是系统中最复杂的部分,最忌风险的部分,不确定的或是容易产生分歧的部分
所表达的信息表达技巧
系统的外部接口
  • 项目环境图和用例图能够识别与系统交互的外部对象。环境图和数据流图在高度抽象的层面描述系统的输入和输出。生态关系图能够识别出系统可能交互的对象,也包含间接有联系的对象。泳道图描述不同系统之间所发生的交互行为
  • 外部交互的细节可以输入/输出文件格式或者报表格式记录。同时包含软件和硬件组件的产品尝尝都有一个包含数据属性定义的规范说明,其形式或许是一个应用编程接口或者硬件设备的输入/输出说明
业务过程图
  • 顶层的数据流图从高层抽象表述业务过程处理数据的方式。泳道图描述在业务处理流程中参与不同处理步骤的角色
  • 优化后的数据流图或者泳道图能够在恰当的细节层次上表达业务处理流程。流程图和活动图同样也可以用于高层抽象和低层抽象的视图描述,只不过它们通常都是用来定义流程细节的。
数据定义和数据对象关系
  • 实体-关系图表数据数据对象(实体)之间的逻辑联系。类图表述对象类和类对象数据间的逻辑联系
  • 数据字典包含数据结构的详细定义以及各个数据条目。复杂的数据对象要逐步分解成它所包含的数据元素
系统和对象状态
  • 状态转换图和状态表是高度抽象的视图,呈现了系统或者对象可能的状态以及在一定条件下发生的转换。表达多个用例能操控某些对象或者改变这些对象的状态时,这些视图将很有帮助
  • 有些分析人员会创建一个事件响应表来作为范围工具,用它来识别外部事件(帮助定义产品的范围边界)。通过在一个事件响应表里详述系统对外部事件和系统状态每个组合的不同响应方式,还可以用它来描述写单个的功能需求
  • 功能性需求提供用户和系统行为的导致状态变化的详细信息
复杂逻辑
  • 决策树表述一组相联系的判断或条件下可能的输出结果。对于一系列判断或条件的组合,决策表能识别出结果为真和假时各自的功能需求。
用户接口
  • 对话图从高层及提供建议的或是实际的用户接口视图。它描述各种不同显示元素以及元素之间可能导航的路径。
  • 通过展示没有精确细节的画面,故事滑板和低精度的原型方法能充实对话图的内容
  • 展示-行为-响应 (Display-action-response)图描述了每一屏显示的元素及其各自的行为需求
  • 详细的屏幕布局和高精度的原型描述了界面元素的外观。数据域定义和用户界面控制描述进一步提供更多细节
用户任务描述
  • 用户故事,场景和用例规范说明在不同详细程度上描述用户任务
  • 泳道图,描述了业务过程域多个用户或者系统之间的内部交互
  • 流程图和活动图直观描述了用例对话流程和其他可选流程和异常的分支
  • 功能性需求详尽描述系统和用户如何交互以获得有价值的输出。测试用例提供另一个低抽象层次的视图,描述在特定的输入、系统状态和操作条件下期望的系统行为
非功能性需求(质量特征、限制条件)
  • 这两特征和限制条件经常以自然语言文字描述的方式来描述。但是这也经常导致缺少精确描述或是描述得不完整。

数据流图

  • data flow diagram DFD,是一种基本的结构化分析工具。

  • 数据流图用于标识一个系统中的加工处理、系统所操作的数据集合(存储)或者物理介质以及在处理、存储和系统外部之间的数据流。

  • 数据流图采用功能分解的方法来进行系统分析,并在不同的层级上将复杂的问题逐步分解展开。

  • 非常适用于实物处理系统和其他偏重功能性的应用。

  • 通过使用额外的控制流程元素来加强数据流图的功能,已扩展至对实时系统进行建模。

  • 数据流图展示数据流经系统的全貌,这是其他视图做不到的。

  • 作为单一的模型技术来使用,数据流图的功能还不够强大,更好的方式是使用用例图或者泳道图中的流程步骤来表示数据加工机制的细节。

  • 可以把数据流图作为一种方法来识别被遗漏的数据需求。

  • 在各个流程(加工)之间的数据、数据存储里面的数据以及外部实体也应该在实体-关系图(DRD)中进行建模,还要在数据字典中描述。

  • 针对用户如何执行某个特定任务的功能性需求,比如化学品申请,数据流图还能提供环境。

  • 数据流图能够在不同的抽象层级上描述系统。对数据和以多个步骤行为组成的处理模块,高层数据流图提供了一个整体的鸟瞰图。
    ![[数据流图.excalidraw]]

  • 由加工流向存储的箭头表示正在改存储上保存数据

  • 流出存储的箭头表示读取数据操作

  • 在存储和圆圈之前的双向箭头表示更新操作。

  • 在0层数据流图中,以相互独立的圆圈来表示的每一个处理都可以进一步扩展称为一个独立的数据流图,经过扩展的视图可以展示更多的工功能细节。

  • 业务分析师可以逐步细化,指导最底层的视图里质保函基本的处理操作,这些操作可以清楚表达成一段叙述文字、一段伪代码、一个泳道图或者一个活动视图。

  • 每层数据流图必须与其上层视图保持平衡和一致。是子视图中所有的输入流、输出流和父视图中的输入流、输出流相匹配。

  • 在低层数据流图中,高层视图中的复杂数据结构可能分解成其各个构成元素并定义在数据字典中。

  • 数据流图的约定:

    • 工序(处理)通过数据存储进行通信,而不是直接地从一个工序流向另个一工序。同样数据不是直接有一个数据存储流向另一个存储,或者在外部实体和数据存储之间直接流动,数据必须流经一个表示工序的圆圈。
    • 请不要试图在数据流图中表达工序的时序相关内容
    • 请用简洁的短语来命名每个工序,动词+名词,且与具体的业务相关的词语。
    • 每个工序的标号应该唯一并且具有层次性。在第0级试图中用一个整数命名每道工序,子数据流图就应该用3.1、3.2等命名在这个子数据流图的工序。
    • 在单个数据流图中,包含的工序不要超过8-10个,否则难画、难改、难理解。可引进另外一个抽象层来解决。
    • 要质疑只有数据流入和数据流出的工序。工序通常既有流入和流出。

泳道图

  • 泳道图为我们提供一种方法来描述业务过程中设计的步骤或者计划开发的软件系统中的操作。
  • 他们是流程图中的另外一种形式,它把子模块分解称为可视化的泳道。
  • 泳道表示在流程中执行操作的不同系统或者执行者。
  • 泳道图尝尝用来描述业务过程,工作流或者是系统和用户间的交互。
  • 泳道图能够描述数据流图(DFD)中处理(工序)节点内部所发生的的细节。
  • 它们有助于把用户执行某个特定任务的功能需求连在一起。
  • 在识别支持每个流程步骤的需求时,泳道图也常常用来进行详细分析。

状态转换图和状态表

状态转换图

  • 软件系统是一个包含功能行为、数据操作和状态转换的综合体。
  • 实时系统和流程控制应用在任何时候都处于一个数量有限的状态集合中的某一个状态。
  • 只有当某个完整定义的标准被满足时才发生状态转换。如在某种特定的条件下,接收到一个特定的输入。
  • 状态转换图和状态表是两个状态视图,他们都能以一种简明、完整、无歧义的方式来表述一个对象或者一个系统的各个状态。
  • 状态转换视图直观表示了状态之间可能的转换。
  • 状态转换视图包含以下三种类型的元素:
    • 可能的系统状态,用矩形或圆形表示
    • 允许的状态变化或者转换,链接矩形或原型的箭线表示。
    • 导致状态转换发生的事件或状态。箭线上的文字标签表示,可能是一个事件,也可能是相对应的系统响应。
  • 针对一个要经理某个确定生命周期的对象而监理的状态转换图,它包含一个或多个终端状态,这些状态代表一个对象能够有的最终状态。
    在这里插入图片描述

状态表

  • 状态表用矩阵的形式来表现不同状态之间可能存在的所有转换。
  • 单元格表示改行左边的状态到该列上部状态之间的转换是否有效。
  • 如果是有效的状态转换,还要识别出导致相关转换的事件
  • 状态转换图和状态表提供了一种横跨多个用例或者用户故事的高层视图,每个用例或用户故事都可能由一个状态执行到另一种状态。
  • 状态模型并由展示系统执行的处理细节,仅表示系统运行可能导致的状态编号。
  • 帮助开发人员立即系统的预期行为。
  • 状态转换图涵盖所有允许的转换路径,测试人员可以由状态转换图衍生出测试用例。
  • 如需要保证所有必要的状态和转换都完整、正确地在功能需求里描述出来,
  • 状态转换图和状态表都是很有用的工具。
准备申请延期申请通过申请下订单延期交货完成订单取消
准备申请申请人保存未完成的申请系统接受有效的申请
延期申请申请人查询未完成的申请
批准申请购买人项供应商下单化学品库房完成申请申请人取消申请
下订单供应商延迟交付化学品从供应商那里收到化学品购买者向供应商取消订单
延期交付从供应商那里收到化学品购买人项供应商取消订单
完成订单
取消

对话图

  • 对话图(dialog map)在较高的抽象层次上对用户界面设计进行表述。
  • 表达了系统中的对话元素及其之间的导航连接,但没有描述详细的界面设计。
  • 可以把用户界面看作是一系列状态转换。
  • 在任意给定的某个时刻,只有一个对华元素(如菜单、工作区、对话框、命令行提示符或触摸显示屏)可以接收用户的输入。
  • 基于用户在活动输入区域的某个动作,他可以被导航到其他的某些对话元素。
  • 对话图实际上就是以状态转换图形式建模的用户交互。
  • 对话图使我们可以在理解需求的基础上研究假设中的用户交互概念。
  • 对话图与系统故事板相关,他也可以包含对每个界面用户的简短描述。
  • 对话图捕获的是基本的用户-系统交互和任务流,没有让团队纠缠于界面布局的细节。
  • 导致用户导航行为的冬季条件以文本标签的形式现在转换箭头旁边,动机条件如下:
    • 一个用户行为,比如按下一个功能键、点击一个超链接或者在一个触摸屏上做出一个手势动作。
    • 一个数据值,比如能够触发一条错误信息显示的非法用户输入。
    • 一个系统状态,比如检测到打印机缺纸
    • 这些动机条件的某一个组合,比如键入一个菜单选项后按下回车键。
      在这里插入图片描述

判定表和判定树

  • 软件系统经常受制于复杂的逻辑,有很多不同的条件组合导致系统产生不同的行为。
  • 开发人员需要的功能需求是在所有可能条件组合下对系统响应对坐的描述。
  • 系统的逻辑和判定条件变得复杂之后,判定表和判断树都可以用来描述系统应该做出什么响应。
  • 判定表列出的是影响系统行为的所有因素的各个取值,并且表明在每一种因素组合条件下系统预期的响应动作。
  • 判定表
需求编号
条件12345
用户有权限FTTTT
化学品仓库或者供货商哪里有货FTTT
该化学品有毒FTT
申请人受过培训FT
动作
批准申请
驳回申请
  • 判定树
    在这里插入图片描述

事件响应表

  • 另一种了解用户的需求的方式是识别出系统必须响应的外部事件
  • 事件是指在用户环境中发生的某个变化或者活动,厚着可以使软件系统做出某种响应。
  • 事件响应表秩逐项记录所有这些事件以及作为对这些事件交互而产生的系统预期行为
  • 一共有三类系统事件
    • 业务事件
      • 指一个普通用户所执行的动作,该动作是软件弹出对话框,就像用户初始化用户用例时那样。事件响应顺序与用例中或泳道图中的步骤一致。
    • 信号事件
      • 当系统接收到一个控制信号或者数据读取,或者来自某个外部硬件设备或者另一个系统的某个终端指令时,一个信号事件就被注册。
    • 时间相关的事件
      • 是指在某个时刻触发的事件。
      • 如定时任务,或从前一个事件开始时,已经到预先设定的时间(每10秒把传感器读取的温度记录到日志中)
  • 为了识别事件,要思考与分析对象相关的所有状态,还有能使该对象转移到某个状态的所有事件。
  • 对项目环境图进行审查,识别出所有外部实体,这些外部实体可能初始化某一个动作或申请一个自动化响应。
  • 列出跨越系统边界的事件是一种有用的界定软件系统范围的技巧。
  • ![[事件模型.excalidraw]]
ID事件事件前系统状态系统响应
1雨刷控制设置成低速运行雨刷器处于关闭状态,高速运行状态或者间隔运行状态将雨刷控制设置为低俗运行
2设置为高速运行关闭、低速、间隙高速
3设置为关闭状态高速、低速、间隙
  1. 完成当前刮扫循环
  2. 关闭雨刷引擎
4设置为间隙运行关闭状态
  1. 执行一个刮扫循环
  2. 读取间隙时间设置
  3. 初始化刮扫定时器
5设置为间隙运行低速、高速状态
  1. 完成当前刮扫循环
  2. 读取间隙时间设置
  3. 初始化刮扫定时器
6自上次刮扫循环结束已经度过了一个时间间隔雨刷器处于间隙运行状态以低速执行一个刮扫循环
7改变刮扫时间间隔间隙运行状态
  1. 读取间隔时间设置
  2. 初始化刮扫定时器
8改变刮扫时间间隙关闭、高速、间隙没有响应
9及时接收到刮扫信号关闭低速运行一个刮扫循环

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

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

相关文章

Win10升级到Win11

Win10升级到Win11 1. 下载PC健康状况检查应用2. 下载Win111. Windows 11 安装助手2. 创建Windows 11 安装3. 下载Windows 11 磁盘映像(ISO) 3. Windows 11 安装助手4. 安装成功 有些小伙伴的诉求是想使用一下当前最火的Win11操作系统怎么样。 这里就来安…

Java基础进阶(学习笔记)

注:本篇的代码和PPT图片来源于黑马程序员,本篇仅为学习笔记 static static 是静态的意思,可以修饰成员变量,也可以修饰成员方法 修饰成员的特点: 被其修饰的成员, 被该类的所有对象所共享 多了一种调用方式, 可以通过…

引导过程与服务控制

一、开机启动的完整过程 bios加电自检测-------mbr------grub----------加载内核文件------------启动第一个进程 简述:加电后bios程序会自检硬件,硬件无故障,会根据第一启动项去找内核,一般来说,第一启动项是硬盘&a…

初学者快速入门学习日语,PDF文档音频教学资料合集

一、资料描述 本套学习资料是很全面的,共有734份文件,包括PDF,PPT,表格,图片,音频等多种格式,可以作为初级日语的学习教材,也是非常适合初学者入门的,可以帮助大家快速的…

基本算法——深度优先搜索(DFS)和广度优先搜索(BFS)

深度优先搜索和广度优先搜索,都是图形搜索算法,它两相似,又却不同,在应用上也被用到不同的地方。这里拿一起讨论,方便比较。 一、深度优先搜索 深度优先搜索属于图算法的一种,是一个针对图和树的遍历算法&…

西城微科|充气泵方案PCBA和芯片

智能充气泵是一种常见的充气工具,它在我们的日常生活中扮演着重要的角色。它主要用于给车辆、自行车、橡皮艇、游泳圈等充气,方便人们在各种场合使用。它简单方便的操作,快速高效的充气速度,以及便携的设计,让我们能够…

ubuntu系统没有网络图标的解决办法

参考文章:https://blog.csdn.net/qq_56922632/article/details/132309643 1. 执行关闭网络服务的命令,关闭网络服务sudo service NetworkManager stop2. 删除网络的状态文件sudo rm /var/lib/NetworkManager/NetworkManager.state3. 修改网络的配置文件sudo vi /etc…

如何避免LLM的“幻觉”(Hallucination)

生成式大语言模型(LLM)可以针对各种用户的 prompt 生成高度流畅的回复。然而,大模型倾向于产生幻觉或做出非事实陈述,这可能会损害用户的信任。 大语言模型的长而详细的输出看起来很有说服力,但是这些输出很有可能是虚…

Modbus 通信协议 二

Modbus 常用缩写 通用Modbus帧结构 -应用数据单元(ADU) Modbus数据模型 Modbus ADU 和 PDU 的长度 Modbus PDU结构 串行链路上的 Modbus 帧结构 Modbus 地址规则 ASCLL 模式 和 RTU 模式的比较 RTU 模式 RTU 模式位序列 帧格式 帧的标识与鉴别 CRC 循环冗…

linux系统下sql脚本的执行与导出

terminal中执行 执行 mysql -u [username] -p -D [databasename] < [XXX.sql] 导出 mysql -u [username] -p [datbasename] > [XXX.sql] 导出的数据库名自定义。 mysql -u [username] -p [databasename] [tablename] > [xxx.sql] 导出表名自定义 mysql shell 执行 …

众和策略:沪指震荡跌0.21%,煤炭、电力等板块拉升,核电概念活跃

2日早盘&#xff0c;三大股指盘中震荡走低&#xff0c;创业板指跌逾1%&#xff0c;北证50指数逆市拉升&#xff1b;北向资金大幅流出。 到午间收盘&#xff0c;沪指跌0.21%报2968.7点&#xff0c;深成指跌0.91%&#xff0c;创业板指跌1.38%&#xff0c;北证50指数涨1.33%&…

Java学习路线第六篇:互联网生态(1)

这篇则分享Java学习路线第六part&#xff1a;互联网生态 恭喜你已经成功追到第六章节啦&#xff0c;要被自己的努力感动到了吧&#xff0c;而这节将承担起学完互联网生态的使命&#xff0c;本使命为单向契约&#xff0c;你可选择YES或者选择YES。 Linux Linux从入门到精通视…

基于电商场景的高并发RocketMQ实战-促销活动推送至用户完整流程、Spring结合RocketMQ的生产者消费者使用

&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308; 欢迎关注公众号&#xff08;通过文章导读关注&#xff09;&#xff0c;发送【资料】可领取 深入理解 Redis 系列文章结合电商场景讲解 Redis 使用场景、中间件系列…

【Apache-2.0】springboot-openai-chatgpt超级AI大脑产品架构图

springboot-openai-chatgpt: 一个基于SpringCloud的Chatgpt机器人&#xff0c;已对接GPT-3.5、GPT-4.0、百度文心一言、stable diffusion AI绘图、Midjourney绘图。用户可以在界面上与聊天机器人进行对话&#xff0c;聊天机器人会根据用户的输入自动生成回复。同时也支持画图&a…

【微服务架构】Spring Cloud入门概念讲解

目录 一、单体架构VS微服务架构 1.1 单体应用 单体架构的优点 单体应用的缺点 1.2 微服务“定义” 微服务的特性 微服务的缺点 微服务的适用场景 二、微服务常见概念与核心模块 三、Spring Cloud 工作流程 一、单体架构VS微服务架构 1.1 单体应用 一个归档包&#x…

数据损毁!250 亿美金的 Pinterest,在数据库选型上的翻车经历

原文链接 Pinterest 是一个以图片为主的社交网络&#xff0c;用户可以将图片保存或 "钉 / pin" 在自己的图板上。Pinterest 在 2019 年上市&#xff0c;目前市值 250 亿美金。本文内容主要根据 2012 年 Scaling Pinterest 的分享。 2012 年 1 月&#xff0c;Pinteres…

ARM NEON 指令

NEON指令 按照操作数类型可以分为正常指令、宽指令、窄指令、饱和指令、长指令。 正常指令&#xff1a;生成大小相同且类型通常与操作数向量相同到结果向量。长指令&#xff1a;对双字向量操作数执行运算&#xff0c;生产四字向量到结果。所生成的元素一般是操作数元素宽度到…

从0搭建github.io网页

点击跳转到&#x1f517;我的博客文章目录 从0搭建github.io网页 文章目录 从0搭建github.io网页1.成果展示1.1 网址和源码1.2 页面展示 2.new对象2.1 创建仓库 3.github.io仓库的初始化3.1 千里之行&#xff0c;始于足下3.2 _config.yml3.3 一点杂活 4.PerCheung.github.io.p…

Qt(三):udp组播的发送与接收

1. 创建UDP套接字 使用QUdpSocket类创建一个UDP套接字。 udpSendnew QUdpSocket(this);udpRecenew QUdpSocket(this); 2. 绑定套接字 绑定套接字到一个本地地址和端口。可以使用bind()函数来完成。 如果要在组播中发送数据&#xff0c;可以将套接字绑定到一个通配符地址&#…

【CASS精品教程】CASS11计算城镇建筑密度

CASS中可以很方便计算建筑密度。 文章目录 一、建筑密度介绍二、CASS计算建筑密度1. 绘制宗地范围2. 绘制建筑物3. 计算建筑密度三、注意事项一、建筑密度介绍 建筑密度(building density;building coverage ratio),指在一定范围内,建筑物的基底面积总和与占用地面积的比…