第十三章 需求工程之对数据关系进行建模

对数据关系进行建模

在设计阶段创建ERD时,其实也是在定义系统数据库的逻辑结构或物理(实现)结构。从分析阶段开始完成的视图能够扩展或者完善对系统的理解和优化系统实现。

ERD

实体

实体本来可以代表物理上的实体(包括人)、对待分析业务或者待实现系统至关重要的数据聚合。
在ERD中实体被命名为一个单数的名词,显示在矩形框内。

属性

每个实体都有一个或多个属性,实体的不同实例具有不同的属性值。

逻辑关系

ERD图中,菱形表示实体之间的逻辑关系,通常用自然含义来命名

数量关系
一对一
一对多

如一个申请人,可以提出多个化学品申请。但是一个化学品申请,只能属于一个申请人,即在化学品申请单中,不允许同时出现两个申请名字。
用字母M或N表示多个,包含1。

多对多

如一个化学品申请中,可以列出多个化学品,共申请人选择,一次申请中可以选择多个化学品。当然这些被选择后的化学品,同时也可以在另外的申请中被再次选择。
用字母M或N表示多个,包含1。
在这里插入图片描述

功能

实体之间的关系通常会揭示出这类功能。化学品容器与容器历史信息这两个实体间是一种“跟踪”关系,我们需要某些功能(描述这些功能的形式可能是一个用例、一个用户故事或者一个流程图)来让用户方位某个特定化学品容器的历史信息。

UML 类图

使用面向对象开发方法的团队通常化UML类图表示各个类中的数据属性、类之间的逻辑关系以及这些关系上的数量关系。类图与ERD中的实体相对应
![[UML类图.png]]

数据字典

数据字典是应用中会用到的关于数据实体的详细信息之集合。数据的构成、数据类型、允许的取值等信息收集成一个公共资源,相比确定数据验证标准,者有助于开发人员正确写程序并使集成中出现的问题最小化。

数据分析

CRUD矩阵

crud矩阵是一种严格的数据分析技术,可以检测出遗漏的需求。

  • C:创建(Create)
  • R:读取(Read)
  • U:更新(Update)
  • D:删除(delete)
    CRUD矩阵将系统行为与数据实体联系在一起,表示每个重要的数据实体应该如何创建、读取、更新以及操作。

CRUD的不同关联

  • 数据实体和系统事件
  • 数据实体和用户任务或者用例
  • 对象类和用例
用例/实体订单化学品申请人供货商名录
提出订单CRRR
修改订单U,DRR
管理化学品库存清单C,U,D
订单报表RRR
编辑申请人C,U
上表中,申请人这一列没有D,也就是申请没有哪个用例可以删除,可能的解释如下:
  • 申请人删除的功能不是期望的功能,即申请人这个实体,是必不可少的。
  • 遗漏了删除申请人这个用例
  • 编辑申请人是一个不完整的用例,遗漏了删除申请人的功能。

报表的规范说明

许多应用都从一个或者多个数据库、文件或者其他信息源生成报表。报表包括由数据行与数据列构成的传统表格、各种类型的示意图和曲线图或者各种组合类型的图表。
报表规范说明横跨需求(报表怎么使用数据,怎么组织数据)和设计(报表的外观样式)两个部分。

获取报表需求

  • 当前使用的是什么报表?
    • 报表是现有系统生成的,还是业务手工生成的?
    • 现有的报表需要在新系统中重复使用吗?
  • 现有的报表中哪些需要进一步修改?
    • 新建或优化现有信息同,有机会修改不能满足的报表。
  • 当前生成了哪些没用的报表?
    • 新系统中也许不需要实现他们。
  • 描述报表必须遵守的任何部门标准或组织标准或政府标准?
    • 提供一个一致的版式或者遵循一个规章。
    • 获得一些副本或与之相符的现成报表样例。

报表外化信息

  • 报表名称时什么?
  • 报表的目的或业务上的意图是什么?报表的使用者如何使用这些信息?谁会依照报表来做出什么决策?
  • 报表是手动生成吗?如果是,又由哪个用户类型生成?多久生成一次?
  • 报表是自动生成的吗?如果是,生成的频率如何?他们报表生成的驱动条件或者事件时什么?
  • 报表的标准大小或者最大大小是什么?
  • 我们需要一个能够展示多个报表或者图表的显示面板吗?如果是,用户还需要对显示面板上的数据元素进行具体查看或者概览吗?
  • 报表申城以后放在何处?是将它显示在屏幕上、发送给接受者、导出到电子表格还是将他自动打印出来?为了以后读取报表,需要将他们保存或者归档到某个位置吗?
  • 在访问报表时是否存在一些安全上的、隐私方面的或者管理上的限制,而这些限制是针对某些特定的个人,还是用户类型?或者说没有这方面的限制使生成报表的人可以决定报表需要包含哪些数据?识别出涉及安全的所有业务规则。

报表内化信息

  • 数据源有哪些?从库中拉取数据的过滤条件是什么?
  • 用户可以选择的参数有哪些?
  • 排序、分页和数据求和的标准是什么?
  • 生成报表过程中,一个查询如果没有返回数据,系统会对此做出怎样的响应?
  • 对于临时报表,报表的基础数据对用户来说可见吗?
  • 这个报表可以作为一些列相似的报表的模板吗?

对报表需求规范的思考

  • 考虑其他变量
    • 优化或增强报表功能,提升业务价值
    • 简单的优化,如改变排序规则,需要提供排序的工具
    • 对数据进行摘要或进一步挖掘数据。
      • 摘要报表能够将具体的结果细节聚合成一个更为简洁的概要视图。
      • 数据挖掘的意思是生成一个报表来显示总结性的数据的源数据明细。
  • 找到数据
    • 保证有供系统生成报表的必要数据。
    • 用户从生成他们期望的输出这一角度来思考问题,这意味着要有一些能够产生必要数据的特定输入和信息源。
    • 这样的分析可以揭示出访问者生成所需数据的位置需求
    • 还要识别将要应用于计算输出数据的业务规则。
  • 预期的扩大
    • 用户可能会基于他们对设计数据的多少或参数的多少的初步概念来提出一些特定的报表需求。
    • 原来在少量数据下工作良好的报表可能会变得不在能够胜任。
      • 如少量数据时,报表或图表展示正常。当数据量翻倍时,会显示错乱。
  • 寻找相似性
    • 不同的用户或者同一个用户可能会提出一个相似但不完全相同的报表需求。
    • 是否存在一个灵活的报表来满足不同需求,节约开发维护成本。
    • 尝试找出这个报表的可能性以便将相似但不完全不相同的需求合并在一个报表中。
    • 参数能够提供一些必要的用户灵活性,有时能够通过参数来处理这些不同的需求
  • 区别静态报表和动态报表
    • 静态报表会刻印或者显示某一时间点的数据。
    • 动态报表提供的是交互的、实时的数据,当基础数据发生变化时,系统将自动更新报表的显示。
  • 原型报表
    • 为演示一个可能的方案借此激发用户反馈时,仿制一个报表通常是有价值的(可废弃原型)。
    • 或为演示一个预期的布局而使用现成的相似报表也是一个好方法。
    • 在讨论续期中生成这些原型,能够使参与需求的人提出设计约束,这些约束可能是预期的也可能是没有预料的约束。
    • 在设计过程中,开发人员会创建一个简单的报表布局来征求客户的反馈(迭代原型)
    • 在仿制报表中使用合理的数据能够让评估它的用户感觉更真实

报表规范说明模板

报表元素元素描述
报表ID用来识别报表或者分类报表的编号、代号或者标签
报表标题
  • 报表名称
  • 标题在页面上的位置
  • 标题中包含用来生产报表查询的参数吗?(如查询的日期范围)
报表用途对报表缘由的项目、背景、上下文或者业务需要进行简要介绍
由报表而做出的决定使用报表中的信息而做出的业务决策
优先级实现该报表功能的相对有限顺序
报表用户
  • 生成报表的用户类别
  • 使用报表的做决策的用户类别
数据源表示数据获取源的应用、文件、数据库等
频率以及处置方式
  • 是静态报表还是动态报表
  • 以多久的时间频率生成报表?每天、每周、每月还是外界事件触发
  • 在报表生成时有多少数据会被访问?或者包括多少事物
  • 报表生成的冬季或者触发的事件时什么?
  • 报表是自动生成的吗?还是需要人工干预?
  • 报表接受者是谁?报表怎么样接收的?(在应用推送、邮件、打印、导出、还是通过移动设备来查看?)
影响性能
  • 当申请发生时,报表发送给用户的响应速度要求多快?
  • 运行报表时,什么数据才是新数据?
直观布局
  • 横屏模式还是竖屏模式
  • 硬拷贝报表使用的页面尺寸(或者打印机类型,如针式打印机、A4、A5等)
  • 如果报表包含图表,请定义图表的类型、他们的样式以及参数、标题、轴向比例和轴标、数据源等
页眉与页脚下面各项常常出现在报表页面或者页脚中的某个位置。对于包括的每个元素,我们要确定他在页面中的位置和外观。包括字体大小、样式、文本的加亮显示、颜色、大小写以及文本对齐方式。当标题或者其他的内容超出分配给他的空间时,是应被截断、换行还是做其他处理?
  • 报表标题
  • 报表编号与格式(第X页、Y页中的页X)
  • 报表注释(本报表不含在公司工作年限不到一个月的员工)
  • 报表运行时间戳
  • 生成报表人的姓名
  • 数据源,特别一个将多个数据源合并数据的数据库方应用
  • 报表起始日期与终止日期
  • 组织标识(公司名称、部门、logo、其他图表)
  • 保密隐私申明或者版权通告
报表正体
  • 记录过滤条件(包含什么数据和过滤掉什么数据的逻辑)
  • 需要包含的字段
  • 用户指定的文字或者定制字段标签的参数
  • 列头、行头的名称和格式、文本、字体、大小、颜色、加亮、大小写、对其方式
  • 数据域的行和列的布局,或者图表的位置与图表或者曲线图的参数
  • 每个域的显示格式、字体、大小、颜色、高亮、大小写、对齐方式、数字取舍、位数和格式、特殊字符(¥、逗号、进制、前导字符、补位字符)
  • 当数字域或文本域溢出时如何处理
  • 显示的数据生成过程中涉及的计算或者其他的转换
  • 每个域的排序标准
  • 过滤条件或者在运行报表前用来限制报表的参数
  • 分组和小计、包括总和的格式或者小计涉及的行
  • 分页条件
报表结束标志出现在报表结束位置的每个指标符的外观和位置
互动性
  • 如果是动态生成的报表或者在生成过程中有交互,那么用户用来修改初始生成报表的内容或者外观而有哪些选项(展开和折叠视图、关联另外的报表、深入研究数据源)?
  • 在报表的使用会话之间,有哪些报表的设置需要持久化
访问安安全方面的限制哪些个人、团队或者组织有权限生成或者查看报表的任何限制,还有他们有权选择哪些数据并将其包括进来的相关限制条件。

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

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

相关文章

深度学习核心技术与实践之计算机视觉篇

非书中全部内容,只是写了些自认为有收获的部分 计算机视觉背景 (1)视觉皮层的神经元是一列一列组织起来的,每一列神经元只喜欢某一种特定的形状或者某些简单的线条组合,而不是鱼、老鼠、鲜花 (2&#xf…

ubuntu18.04查询实时内存、CPU占用率命令

gnome-system-monitor效果就是下面这样:

【KingbaseES】实现MySql函数Space

CREATE OR REPLACE FUNCTION SPACE(input_length integer) RETURNS text AS $$ BEGIN RETURN REPEAT( , input_length) AS SPACES; END; $$ LANGUAGE plpgsql;

虚幻UE 增强输入-第三人称模板增强输入分析与扩展

本篇是增强输入模块,作为UE5.0新增加的模块。 其展现出来的功能异常地强大! 让我们先来学习学习一下第三人称模板里面的增强输入吧! 文章目录 前言一、增强输入四大概念二、使用步骤1、打开增强输入模块2、添加IA输入动作2、添加IMC输入映射内…

SpringCloud微服务 【实用篇】| Dockerfile自定义镜像、DockerCompose

目录 一:Dockerfile自定义镜像 1. 镜像结构 2. Dockerfile语法 3. 构建Java项目 二: Docker-Compose 1. 初识DockerCompose 2. 部署微服务集群 前些天突然发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,…

基于Vue的宿舍管理系统

基于Vue的宿舍管理系统资源-CSDN文库 基于 Koa 以及 VueJS 的宿舍管理系统。 新增功能: 【楼层管理】添加『入住人员信息』模块,显示入住学生、性别、院系、专业的人数,可用饼图表示【用户信息】学生用户添加性别、院系、专业字段【楼层管理…

Alice Bob推出16量子比特量子处理单元——“Helium 1”

​(图片来源:网络) 容错量子计算机硬件开发商Alice & Bob宣布已成功流片一款新芯片“Helium 1”,希望能借助该芯片降低随着量子比特数增加而提高的错误率,这是该公司第一个纠错逻辑量子比特(纠错量子计…

YOLOv8改进 更换轻量化模型MobileNetV3

一、MobileNetV3论文 论文地址:1905.02244.pdf (arxiv.org) 二、 MobileNetV3网络结构 MobileNetV3引入了一种新的操作单元,称为"Mobile Inverted Residual Bottleneck",它由一个1x1卷积层和一个3x3深度可分离卷积层组成。这个操…

go语言语法基础

文章目录 前言一、输入和输出常用的字符串格式化符号 二、注释三、Go常用基本语言数据类型数字类型布尔类型字符类型变量与常量数组和切片数组切片 map类型创建map增删改查特别提醒 指针 四、运算符五、条件判断语句if系列switch六、循环语句for循环标准写法死循环while循环do …

【三维分割】SAGA:Segment Any 3D Gaussians

系列文章目录 代码:https://jumpat.github.io/SAGA. 论文:https://jumpat.github.io/SAGA/SAGA_paper.pdf 来源:上海交大和华为研究院 文章目录 系列文章目录摘要一、前言二、相关工作1.基于提示的二维分割2.将2D视觉基础模型提升到3D3.辐射…

【Spark精讲】Spark on Hive性能优化

目录 第一章 1.1 集群配置概述 1.2 集群规划概述 第二章 Yarn配置 2.1 Yarn配置说明 yarn.nodemanager.resource.memory-mb yarn.nodemanager.resource.cpu-vcores yarn.scheduler.maximum-allocation-mb yarn.scheduler.minimum-allocation-mb 第三章 Spark的配置说…

力扣-42.接雨水

题目: 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 输入:height [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组[0,1,0,2…

20231228在Firefly的AIO-3399J开发板的Android11的Firefly的AIO-3399J开发板的DTS配置单前置摄像头ov13850

20231228在Firefly的AIO-3399J开发板的Android11的Firefly的AIO-3399J开发板的DTS配置单前置摄像头ov13850 2023/12/28 12:30 开发板:Firefly的AIO-3399J【RK3399】 SDK:rk3399-android-11-r20211216.tar.xz【Android11】 Android11.0.tar.bz2.aa【ToyBr…

【算法挨揍日记】day34——647. 回文子串、5. 最长回文子串

647. 回文子串 647. 回文子串 题目描述: 给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 具有不同开始位置或结束位置的子串&am…

【卫星科普】什么是农业一号卫星和农业二号卫星?

农业一号卫星和农业二号卫星是中国自主研发的两颗重要卫星,主要用于农业领域的监测和研究。 农业一号卫星是中国第一颗具备红边波段传感器的卫星,也是世界上第一颗具备红边波段的宽视场多光谱中高分辨率卫星。这对农业农村遥感监测非常重要,…

认识CUDA

CUDA CUDA(Compute Unified Device Architecture),是显卡厂商NVIDIA推出的运算平台。 CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及…

基于YOLOv7算法的高精度实时抽烟行为检测识别系统(PyTorch+Pyside6+YOLOv7)

摘要:基于YOLOv7算法的高精度实时抽烟行为检测系统可用于日常生活中检测与定位抽烟行为,此系统可完成对输入图片、视频、文件夹以及摄像头方式的目标检测与识别,同时本系统还支持检测结果可视化与导出。本系统采用YOLOv7目标检测算法来训练数…

1.1 理解大数据(2)

小肥柴的Hadoop之旅 1.1 理解大数据(2) 目录1.1 理解大数据1.1.3 大数据概述1.1.4 更多思考 参考文献和资料 目录 1.1 理解大数据 1.1.3 大数据概述 step_0 大数据定义 【《大数据算法设计分析》】: 通常来讲大数据(Big Data&am…

互联网分布式应用之RabbitMQ

RabbitMQ Java 是第一大编程语言和开发平台。它有助于企业降低成本、缩短开发周期、推动创新以及改善应用服务。如今全球有数百万开发人员运行着超过 51 亿个 Java 虚拟机,Java 仍是企业和开发人员的首选开发平台。 课程内容的介绍 1. RabbitMQ介绍安装 2. Rabbi…

【C#】知识点实践序列之Lock的输出多线程信息

大家好,我是全栈小5,欢迎来到《小5讲堂之知识点实践序列》文章。 2024年第2篇文章,此篇文章是C#知识点实践序列之Lock知识点,博主能力有限,理解水平有限,若有不对之处望指正! 本篇在Lock锁定代码…