计算机专业知识【软件开发中的常用图表:E - R图、HIPO、DFD、N - S、PAD详解】

news2025/3/26 6:58:18

在软件开发过程中,有许多种图表工具被用于不同阶段的设计和分析,帮助开发者更清晰地理解系统结构、数据流程和算法逻辑。下面将详细介绍E - R图、HIPO图、DFD图、N - S图和PAD图,包括它们的样子和用途。

一、E - R图(实体 - 联系图)

样子描述

E - R图主要由实体、属性和联系三部分组成。

  • 实体:用矩形表示,矩形内写上实体的名称。例如在一个学校管理系统中,“学生”“教师”“课程”都可以是实体,分别用标有“学生”“教师”“课程”的矩形表示。
  • 属性:用椭圆形表示,通过连线与相应的实体相连。比如“学生”实体有“学号”“姓名”“年龄”等属性,就用标有这些属性名的椭圆形连接到“学生”矩形上。
  • 联系:用菱形表示,菱形内写上联系的名称,并用连线将相关的实体连接起来。联系有不同的类型,如一对一(1:1)、一对多(1:n)和多对多(m:n)。例如“学生”和“课程”之间存在“选课”联系,是多对多的关系,就用一个标有“选课”的菱形连接“学生”和“课程”两个矩形。

用途

E - R图主要用于数据库设计的概念结构设计阶段,它可以直观地描述现实世界中的实体、属性以及它们之间的联系,帮助数据库设计师规划数据库的结构。
在这里插入图片描述

二、HIPO图(层次 - 输入 - 处理 - 输出图)

样子描述

HIPO图由层次结构图和IPO图两部分组成。

  • 层次结构图:是一种树形结构,用矩形框表示模块,矩形框内写上模块的名称。模块之间用连线表示调用关系,上层模块可以调用下层模块。例如一个软件系统有主模块,主模块下可能调用“数据输入模块”“数据处理模块”“数据输出模块”等,这些模块在层次结构图中呈现出树形的层次关系。
  • IPO图:通常是一张表格,分为输入、处理和输出三部分。输入部分列出模块接收的数据,处理部分描述模块对输入数据进行的操作,输出部分说明模块产生的结果。每个模块都有对应的IPO图,详细描述其功能。

用途

HIPO图用于软件系统的总体设计,它可以清晰地展示系统的模块层次结构和每个模块的输入、处理、输出信息,便于团队成员理解系统的整体架构和模块功能。
在这里插入图片描述

三、DFD图(数据流图)

样子描述

DFD图主要由外部实体、数据流、处理过程和数据存储四部分组成。

  • 外部实体:用矩形表示,代表系统之外与系统有数据交互的人、组织或其他系统。例如在一个网上购物系统中,“顾客”“商家”就是外部实体。
  • 数据流:用带箭头的线段表示,箭头方向表示数据的流动方向,线段上标有数据的名称。例如“顾客”向系统发送“订单信息”,就用一个标有“订单信息”的箭头从“顾客”指向系统的处理过程。
  • 处理过程:用圆形或椭圆形表示,里面写上处理的名称。比如“订单处理”“库存管理”等处理过程。
  • 数据存储:用开口的矩形表示,代表数据的存储位置,如数据库、文件等。例如“商品信息数据库”“订单数据库”等。

用途

DFD图用于描述系统的数据流程,它可以帮助开发者分析系统中数据的来源、流向和处理过程,是需求分析阶段常用的工具。
在这里插入图片描述

四、N - S图(盒图)

样子描述

N - S图是一种结构化流程图,它将程序的流程封装在一个个矩形框中,没有传统流程图中的箭头。它的基本结构有顺序结构、选择结构和循环结构。

  • 顺序结构:用一个大矩形表示,矩形内从上到下依次排列着各个操作步骤。
  • 选择结构:用一个类似菱形的框表示判断条件,框的上下分别连接不同的操作步骤框,根据判断结果执行相应的步骤。
  • 循环结构:用一个矩形框表示循环体,框内包含循环条件和循环操作,循环条件框在循环体的上方或下方。

用途

N - S图用于详细设计阶段,它可以清晰地展示程序的逻辑结构,避免了传统流程图中随意跳转的问题,使程序的结构更加清晰、易读。
在这里插入图片描述

五、PAD图(问题分析图)

样子描述

PAD图也是一种结构化的流程图,它采用二维树形结构来表示程序的逻辑。它的基本符号有顺序、选择和循环三种。

  • 顺序结构:用自上而下的矩形框表示,每个矩形框代表一个操作步骤。
  • 选择结构:用类似二叉树的结构表示,根节点是判断条件,分支节点是不同的操作步骤,根据判断结果选择相应的分支执行。
  • 循环结构:用一个矩形框表示循环体,框内有循环条件和循环操作,循环条件在框的上方。
    在这里插入图片描述

用途

PAD图同样用于软件的详细设计,它能够清晰地表达程序的层次结构和逻辑关系,便于程序员根据图形编写代码,也有利于代码的维护和调试。

这些图表在软件开发的不同阶段发挥着重要作用,开发者可以根据具体的需求和场景选择合适的图表工具来进行系统设计和分析。

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

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

相关文章

智能马达保护器:为工业电机安全运行保驾护航

在工业生产中,电动机作为核心动力设备,其稳定运行直接关系到生产效率与安全性。然而,复杂的工况环境、频繁启停和突发负载变化,常导致电机面临过载、缺相、短路等故障风险。安科瑞智能马达保护器凭借其智能化、高精度、多功能的设…

深度集成DeepSeek大模型:WebSocket流式聊天实现

目录 5分钟快速接入DeepSeek大模型:WebSocket实时聊天指南创建应用开发后端代码 (Python/Node.js)结语 5分钟快速接入DeepSeek大模型:WebSocket实时聊天指南 创建应用 访问DeepSeek官网 前往 DeepSeek官网。如果还没有账号,需要先注册一个。…

QT基础二、信号和槽

一、什么是信号和槽? 1、简述 在Qt框架中,信号和槽(Signals and Slots) 是一种用于对象间通信的机制。它是一种非常强大且灵活的设计模式,广泛应用于事件驱动编程中。信号和槽机制允许对象之间以松耦合的方式进行交互…

【深度学习】计算机视觉(CV)-目标检测-Faster R-CNN —— 高精度目标检测算法

1.什么是 Faster R-CNN? Faster R-CNN(Region-based Convolutional Neural Network) 是 目标检测(Object Detection) 领域的一种 双阶段(Two-Stage) 深度学习方法,由 Ross Girshick…

Blazor-父子组件传递任意参数

在我们从父组件传参数给子组件时,可以通过子组件定义的[Parameter]特性的公开属性进行传值,但是当我们需要传递多个值的时候,就需要通过[Parameter]特性定义多个属性,有没有更简便的方式? 我们可以使用定义 IDictionar…

【原创】vue-element-admin-plus完成编辑页面中嵌套列表功能

前言 vue-element-admin-plus对于复杂业务的支持程度确实不怎么样,我这里就遇到了编辑页面中还要嵌套列表的真实案例,比如字典,主字典嵌套子信息,类似于一个树状结构。目前vue-element-admin-plus给出的例子是无法满足这个需求的…

DeepSeek教unity------MessagePack-02

内置支持类型: 对象序列化 MessagePack for C# 可以序列化你自己定义的公共类或结构体类型。默认情况下,可序列化的类型必须用 [MessagePackObject] 属性进行注解,成员需要用 [Key] 属性进行注解。键可以是索引(整数)…

H5应用抓包及调试技巧

由于图片和格式解析问题,可前往 阅读原文 在现代移动互联网时代,H5 应用以其跨平台、轻量化、快速迭代的特性,成为移动开发的重要一环。然而,随着功能的复杂化和用户体验要求的提升,H5应用的调试也面临着诸多挑战&…

自学Java-面向对象高级(final、单例类、枚举类、抽象类、接口)

自学Java-面向对象高级(final、单例类、枚举类、抽象类、接口) 一、final关键字1、认识final关键字2、final修饰变量的注意3、常量 二、单例类(设计模式)1、设计模式的概念2、单例设计模式3、单例类有很多形式4、懒汉式单例类5、小…

docker下部署kong+consul+konga 报错问题处理

前言: 由于在docker下部署一些项目比较特殊,特别是网络这一块,如果没有搞清楚,是很容易出问题的。 先上docker-compose 编排 这里的docker-compose for kong可以在 kong-compose 获取代码 version: 3.9x-kong-config:&kong…

网络优化工作流程

DT路测 移动测试(Drive Test) CQT 定点测试(通信质量测试) DT 测试不能体现实际话务质量:回音、串音等网络问题不能通过 DT 测试发现,因此 CQT 拨打测试是 DT 测试很好的补充,也是目前室内外测…

React入门 - 0.React简介

React入门 - React简介 A Brief Introduction to React By JacksonML 1. 关于React React是一个知名的Web框架。众所周知,jQuery, Angular, Vue等框架都曾闪亮登场,并且,都仍然在全球市场占有一席之地。React这个颇有担当的新锐&#xff0…

SpringCloud系列教程:微服务的未来(二十四)Direct交换机、Topic交换机、声明队列交换机

前言 在现代消息队列系统中,交换机是实现消息传递和路由的核心组件。本文将重点探讨三种常见的交换机类型:Direct交换机、Topic交换机和声明队列交换机。通过对这三种交换机的详细分析,我们将学习它们的工作原理、应用场景以及如何在实际项目…

Sojson高级加密技术科普

1. 引言 什么是Sojson? Sojson是一款用于JavaScript代码加密与混淆的工具,它能够有效保护前端代码的知识产权,避免开发者的心血被随意窃取。 为什么需要代码加密? 在当今的互联网环境下,代码被轻易复制、篡改或逆向…

mysql多主集群 galera cluster for mysql 8安装配置启动重启集群

[TOC] 一、安装mysql 1、安装 系统环境: Ubuntu 18.04 64位 MySQL 8.0.19 下载MySQL APT安装配置包 首先访问 https://dev.mysql.com/downloads/repo/apt/ 获取配置包下载地址 wget https://dev.mysql.com/get/mysql-apt-config_0.8.14-1_all.deb sudo dpkg -i mysq…

mybatis 入门案例

前言 我们清楚 mybatis 是一个持久层框架,可以非常便捷的操作数据库。如最常见的对数据进行增删改查操作。 项目准备 1 在mybatis 数据库 创建 user 用户表 并插入以下两条数据 以下是一个user.sql 脚本文件如何使用 脚本文件可以参照MySQL数据库的备份与还原_控…

Python使用Flask结合DeepSeek开发

一、背景 我之前关于DeepSeek使用ollama部署的文章大家可以把DeepSeek大模型部署起来。那么ollama还提供了可以调用对应部署模型的API接口。我们可以基于这些接口,做自己的二次开发。使用pythonflaskollama就可以进行模型对话调用。并且前端采用SSE的技术&#xff0…

前端常见面试题-2025

vue4.0 Vue.js 4.0 是在 2021 年 9 月发布。Vue.js 4.0 是 Vue.js 的一个重要版本,引入了许多新特性和改进,旨在提升开发者的体验和性能。以下是一些关键的更新和新特性: Composition API 重构:Vue 3 引入了 Composition API 作为…

大模型开发实战篇7:语音识别-语音转文字

语音识别大模型,是人工智能领域的一项重要技术,它能够将人类的语音转换为文本。近年来,随着深度学习技术的不断发展,语音识别大模型取得了显著的进展,并在各个领域得到了广泛应用。 主流语音识别大模型 目前&#xf…

QML 部件获得焦点触发的全局槽函数 onActiveFocusItemChanged

在qml的window窗口中,假如添加里许多其他部件,当这些部件改变时,会有一个全局部件焦点改变槽函数触发,就是 onActiveFocusItemChanged 可以通过此槽函数就可以知道当前焦点在哪一个部件上,也可以做一些自动化测试等&…