当前位置: 首页 > news >正文

[架构之路-249]:目标系统 - 设计方法 - 软件工程 - 需求工程- 需求开发:如何用图形表达需求,结构化方法的需求分析

目录

一、概述

二、数据模型:E-R图/实体关系图(数据单元之间的结构关系)

三、功能模型:数据流图DFD(逻辑运算,包括输入和输出,实体之间的关系):输入=》处理 =》 输出

四、行为模型:状态转化图(系统状态)


一、概述

结构化方法的需求分析是指通过一系列严谨而规范的步骤,对系统的需求进行清晰的描述和分析,以确定系统需要满足的功能和性能要求,以及系统与人、物、环境等相关方面之间的交互关系。

二、数据模型:E-R图/实体关系图(数据单元之间的结构关系)

E-R图(Entity-Relationship Diagram),也称为实体关系图,是一种数据建模工具,用于描述现实世界中实体(entity)之间的关系(relationship)。它是一种图形化的表示方法,能够清晰地展示数据模型中各个实体之间的关联和属性。

在E-R图中:

  • 实体本身用矩形框表示,
  • 实体的属性用椭圆形表示。
  • 实体与实体的关系用用菱形表示:数量关系通过在双方一侧标注数字来标识,行为关系通过在菱形中增加文本表示。

以下是E-R图中常用的符号和概念:

  1. 实体(Entity):代表现实世界中具有独立实体性质的对象,例如人、物、地点等。每个实体都有一些属性,用于描述和区分实体之间的差异。

    实体是指现实世界中的某个具体、独立的事物,它可以用实体名表示,并具有一些属性和行为。在数据库中,实体可以被认为是需要被存储、处理、管理、查询的信息或对象(object),比如商品、客户、订单、文章、作者等。

    在实体关系图中,一个实体通常以一个矩形来表示,矩形中包含实体名和该实体的属性。属性是指实体的特征描述,比如商品实体的属性可能包括名称、价格、描述等。实体之间的关系可以用连线来表示,这些连线描述了实体之间发生的各种事情,比如商品被下单、客户购买商品等等。

    绘制实体关系图是数据库设计的重要过程之一。通过分析现实世界中的业务流程、数据需求和数据结构,可以构建一个合理、可维护、易于扩展的实体关系图。实体关系图不仅能够帮助开发者对数据进行良好的设计和管理,还可以作为协作与沟通的工具,帮助项目各方了解业务需求和数据结构。

  2. 属性(Attribute):描述实体的特征和性质,例如人的姓名、年龄、身高等。属性可以是简单的,也可以是复杂的,可以包含多个值。

  3. 关系(Relationship):描述实体之间的联系和交互。关系可以是一对一、一对多或多对多的关系。例如,学生和课程之间的关系可以是学习关系,一个学生可以选择多门课程,一门课程可以由多个学生选修。

  4. 基本关系类型:包括一对一(1:1)、一对多(1:N)和多对多(M:N)关系。

E-R图提供了一种直观且易于理解的方式来描述数据模型,它是数据库设计和系统分析中常用的工具之一。通过E-R图的绘制和分析,可以帮助设计师和开发人员更好地理解系统的结构和数据流动,从而准确捕捉需求,设计出高质量、合理结构的数据库模型。

三、功能模型:数据流图DFD(逻辑运算,包括输入和输出,实体之间的关系):输入=》处理 =》 输出

功能模型中的数据流图(Data Flow Diagram,简称DFD)是一种常用的建模工具,用来描述信息系统中的数据流动和处理过程,与计算机的系统架构要表述的内容是一致的.

它通过图形化的方式展示了系统中数据的来源(输入)、去向(输出)、处理和存储等过程,帮助开发人员在系统设计时更好地理解系统中的数据流动。

数据流图 (Data Flow Diagram,简称DFD) 中包含以下几个主要元素:

  1. 外部实体 (External Entity):表示与系统交互的外部对象,如用户、其他系统或设备。通常用方框表示,并在方框内部标明实体的名称

  2. 数据流 (Data Flow):表示数据在系统中的流动。数据流可以是输入数据、输出数据或在系统内部流动的中间数据。通常用箭头表示,并在箭头上方标明数据流或流动的信息名称

  3. 进程 (Process):表示对数据进行处理和转换的操作或功能模块。通常使用圆角矩形或圆形表示,并在图形内部标明进程的名称

  4. 数据存储 (Data Store):表示数据在系统中的存储位置,如数据库、文件或内存等。通常使用类长方形表示,并在类长方形内部标明数据存储的数据名称

这些元素通过连接线连接起来,形成数据流图的结构。连接线表示数据的流动路径和数据流向。

除了上述主要元素,数据流图中还可以使用控制流 (Control Flow) 元素表示控制信号和决策的流动。控制流使用类似于数据流的箭头表示。

数据流图的结构和元素的使用可以根据具体的系统和分析目的进行适当的调整和扩展。

在DFD中:

  • 数据流用箭头表示
  • 数据处理用方框表示
  • 数据存储用平行四边形表示
  • 源和目标用椭圆形表示

以下是DFD中常用的符号和概念:

  1. 数据流(Data Flow),即数据流动:代表信息系统中传递的路径,它可以是从数据源到数据目标的传输,也可以是在系统内部不同处理模块之间的数据传递。

  2. 处理(Process)即逻辑运算ALU:代表对数据进行处理、计算、转换或转发等操作的模块,它可以是计算机程序、人工处理或自动化的业务流程等。

  3. 数据存储(Data Store),即计算器、内存、cache、数据库、硬盘、文件等:代表系统中数据的存储位置,可以是数据库、文件或其他数据存储设备

  4. 源和目标(Source and Destination):代表数据流的起点和终点,可以是外部来源或者系统内部的其他模块

  5. 方向箭头:表示数据的流向,从源到目标或从处理模块到数据存储。

通过DFD的绘制和分析,可以帮助设计师和开发人员更好地理解系统中各个部分之间的数据流动,从而更好地分析系统的流程和逻辑。这样可以更准确地捕捉系统需求,设计出更合理的系统架构和流程,提高系统的设计效率和实现质量。

四、行为模型:状态转化图(系统状态)

状态转换图(State Transition Diagram)是一种描述系统行为图形化模型。它主要由状态、转移和事件组成,用于表示一个系统在不同状态之间的转换以及触发状态转换的外部事件。

在状态转换图中,状态表示系统所处的特定状态或条件。转移表示状态之间的切换,通常用箭头连接起来,箭头上可以标注触发转换的事件或条件。事件是引起状态转换的外部触发器,例如用户输入、信号到达等。

状态转换图往往用于描述系统的行为流程、状态机、协议或者算法等。它可以帮助开发人员理清系统的状态变化路径,从而更加清晰地分析和设计系统的逻辑。

请注意,行为模型的状态转化图可能因具体应用场景而异,因此,如果您有具体的应用场景,可以向我提供更多细节,我将尽力为您提供更精确的帮助。

相关文章:

[架构之路-249]:目标系统 - 设计方法 - 软件工程 - 需求工程- 需求开发:如何用图形表达需求,结构化方法的需求分析

目录 一、概述 二、数据模型:E-R图/实体关系图(数据单元之间的结构关系) 三、功能模型:数据流图DFD(逻辑运算,包括输入和输出,实体之间的关系):输入》处理 》 输出 四…...

Django之中间件与CSRF_TOKEN

文章目录 一、什么是中间件二、中间件有什么用三、Django自定义中间件中间件中主要方法及作用创建自定义中间件的步骤:process_request与process_response方法process_view方法process_exceptionprocess_template_response(不常用) 四、CSRF_…...

柑橘病害数据集(四类图像分类,没有打yolo标签)

1.文件夹分为训练集和测试集 在这个数据集中,有一类是新鲜柑橘,还有另外三种疾病,溃疡病、黑斑病和绿化病。 2.train文件夹 2.1.blackspot(黑斑病) 文件夹 206张照片 2.2.canker(溃疡病) 文…...

面向对象三大特性:封装,继承,多态;多态的机制;以及多态是如何实现的,实现的必要条件

文章目录 面向对象三大特性2.1.1 封装 继承 多态2.1.2 其中Java 面向对象编程三大特性:封装 继承 多态2.1.3 关于继承如下 3 点请记住:2.1.4 什么是多态机制?Java语言是如何实现多态的?2.1.5 Java实现多态有三个必要条件&#xff…...

Unity-类-Vector

Vector矢量 是一个基本的数学概念,它允许你描述方向和大小。在游戏和应用中,矢量通常用于描述一些基本属性,如角色的位置、物体移动的速度或两个物体之间的距离。 矢量算术是计算机编程很多方面(如图形、物理和动画)的基础,深入了解这一主题对于充分发挥 Unity 的功能很有…...

【腾讯云云上实验室】向量数据库相亲社交应用实践

快速入口 👉向量数据库_大模型知识库_向量数据存储_向量数据检索- 腾讯云 (tencent.com) 文章目录 前言1. 向量数据库概念及原理1.1 向量数据库概念1.2 向量数据库核心原理1.3 向量数据库优缺点1.4 向量数据库与传统数据库的区别 2. 腾讯云向量数据库的基本特性及优…...

SpringCloud Netflix 知识点汇总

目录 SpringCloud概念:1、什么是springcloud?2、SpringCloud有哪些核心组件?3、什么是分布式?4、什么是微服务?5、分布式+微服务+集群6、微服务之间是如何独立通讯的Eureka1、什么是Eureka ?2、为什么使用Eureka?3、什么是Eureka自我保护机制4、Zookeeper 和 Eureka 区别…...

IO口电压下降那么多是怎么回事??

前几天一个工程师向我反馈他测得如下电路MCU IO口的电压不是3.3V,只有2V多。 IO配置的是输入功能,无上下拉。最初我不太相信这个结果,后来自己用万用表实际测量了下,还真是这个结果 这是咋回事呢?不应该电压就是3.3V吗…...

NLP实践——LLM生成过程中防止重复循环

NLP实践——LLM生成过程中防止重复 1. 准备工作2. 问题分析3. 创建processor3.1 防止重复生成的processor3.2 防止数字无规则循环的processor 4. 使用 本文介绍如何使用LogitsProcessor避免大模型在生成过程中出现重复的问题。 1. 准备工作 首先实例化一个大模型,…...

用苹果签名免费获取Xcode

使用苹果企业签名免费获取Xcode: 打开Xcode。连接iOS设备到Mac。选择Window→Devices and Simulators。选择该设备。将IPA文件拖到“Installed Apps”的列表框中即可安装。使用Cydia Impactor(可以在网上找到相关下载链接): 打开…...

python-opencv在图片中绘制各种图形

python-opencv在图片中绘制各种图形 1.绘制直线 2.绘制矩形 3.绘制圆 4.绘制椭圆 5.绘制多边形 6.嵌入文字 实现代码都在下面了,代码中参数做了简单注释 import copy import math import matplotlib.pyplot as plt import matplotlib as mpl import numpy a…...

用户增长常用的ChatGPT通用提示词模板

用户画像:请帮助我了解目标用户的特点和需求,包括年龄、性别、职业、兴趣等方面的内容,以便我能够更好地定位和推广。 用户获取渠道:请帮助我了解用户主要从哪些渠道获取我们的产品或服务,以便我能够更好地优化获取渠…...

用友NC word.docx接口存在任意文件读取漏洞 附POC

@[toc] 用友NC word.docx接口存在任意文件读取漏洞 附POC 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使…...

小程序中的大道理之四--单元测试

在讨论领域模型之前, 先继续说下关于测试方面的内容, 前面为了集中讨论相应主题而对此作了推迟, 下面先补上关于测试方面的. 测试覆盖(Coverage) 先回到之前的一些步骤上, 假设我们现在写好了 getPattern 方法, 而 getLineContent 还处于 TODO 状态, 如下: public String ge…...

分布式篇---第六篇

系列文章目录 文章目录 系列文章目录前言一、说说什么是漏桶算法二、说说什么是令牌桶算法三、数据库如何处理海量数据?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码…...

C#,《小白学程序》第十八课:随机数(Random)第五,方差及标准方差(标准差)的计算方法与代码

1 文本格式 /// <summary> /// 《小白学程序》第十八课&#xff1a;随机数&#xff08;Random&#xff09;第五&#xff0c;方差及标准方差&#xff08;标准差&#xff09;的计算方法与代码 /// 方差 SUM(&#xff08;Xi - X)^2 ) / n i0...n-1 X Average of X[i] ///…...

【版本管理 | Git 】Git最佳实践系列(一) —— LFS .gitignore 最佳实践,确定不来看看?

&#x1f935;‍♂️ 个人主页: AI_magician &#x1f4e1;主页地址&#xff1a; 作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域优质创作者。 &#x1f468;‍&#x1f4bb;景愿&#xff1a;旨在于能和更多的热爱计算机的伙伴一起成长&#xff01;&#xff01;&…...

【Linux】驱动程序同步和异步通知方式

一、应用程序APP&#xff0c;访问驱动程序/dev/input/enent1流程&#xff1a; 假设用户程序直接访问 /dev/input/event0 设备节点&#xff0c;或者使用 tslib 访问设备节点&#xff0c;数据的流程如下&#xff1a; APP 发起读操作&#xff0c;若无数据则休眠&#xff1b;用户操…...

移动机器人路径规划(七)--- 基于MDP的路径规划MDP-Based Planning

目录 1 什么是MDP-Based Planning 2 worst-case analysis for nondeterministic model 3 Expected Cost Planning 4 Real Time Dynamic Programming&#xff08;RTDP&#xff09; 1 什么是MDP-Based Planning 之前我们从起点到终点存在很多可执行路径&#xff0c;我们可以…...

vue--The template root requires exactly one element.的解决办法

[vue/no-multiple-template-root] The template root requires exactly one element.eslint-plugin-vue 在vue中会出现以上问题 这是因为vue的模版中只有能一个根节点&#xff0c;所以在<template>中插入第二个元素就会报错 解决方案&#xff1a; 将<template>…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下&#xff0c;商品详情API作为连接电商平台与开发者、商家及用户的关键纽带&#xff0c;其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息&#xff08;如名称、价格、库存等&#xff09;的获取与展示&#xff0c;已难以满足市场对个性化、智能…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

uniapp 字符包含的相关方法

在uniapp中&#xff0c;如果你想检查一个字符串是否包含另一个子字符串&#xff0c;你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的&#xff0c;但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

jmeter聚合报告中参数详解

sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample&#xff08;样本数&#xff09; 表示测试中发送的请求数量&#xff0c;即测试执行了多少次请求。 单位&#xff0c;以个或者次数表示。 示例&#xff1a;…...

嵌入式常见 CPU 架构

架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集&#xff0c;单周期执行&#xff1b;低功耗、CIP 独立外设&#xff1b;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel&#xff08;原始…...