软件工程(应试版)图形工具总结(二)
遇到的问题,都有解决方案,希望我的博客能为你提供一点帮助。
教材参考《软件工程导论(第六版)》

七、 层次图(H图)与HIPO图
1、概述
1.1、层次图(Hierarchy Chart / H图)
核心定义
- 目的:描述软件系统的层次结构,体现模块的从属关系。
- 适用阶段:自顶向下设计(Top-Down Design)的核心工具。
- 形态特征:
- 树状结构,根节点为系统顶层模块。
- 每个父模块分解为多个子模块。
- 不展示模块间数据流或控制流。
1.2、HIPO图(Hierarchy + Input-Process-Output)
核心组成
- H图(层次图):模块分解结构,附加追踪编号。
- IPO图:为每个模块定义输入、处理逻辑、输出三要素。
关键特征
- 可追踪性:模块编号体系(如
1.2.3)明确层级关系。 - 设计完整性:H图描述结构,IPO图补充行为。
- IBM标准格式:常用于传统结构化方法,与数据字典配合使用。
1.3、层次图 vs. HIPO图对比
| 维度 | 层次图 | HIPO图 |
|---|---|---|
| 核心目标 | 模块结构分解 | 模块结构+行为设计 |
| 信息维度 | 仅层次关系 | 层次+输入/处理/输出细节 |
| 可追溯性 | 无编号体系 | 严格编号支持模块追踪 |
| 设计深度 | 宏观架构 | 宏观到微观的完整设计 |
| 适用阶段 | 初步设计 | 详细设计阶段 |
2、符号
H图

HIPO图

3、例子
H图

HIOP图

八、 结构图
1、概述
步骤1:确定系统边界。步骤2:构建模块层次树。步骤3:定义调用关系。步骤4:标注数据流。步骤5:处理特殊逻辑。步骤6:连接数据存储。步骤7:验证与优化
2、符号
| 图形符号 | 名称 | 含义说明 | 应用场景示例 |
|---|---|---|---|
| ▢ | 模块框 | 表示独立功能单元,通常以"动词+名词"命名 | 用户管理模块 订单处理模块 |
| ──── | 调用关系线 | 表示模块间的单向调用关系 | 订单模块 → 支付模块 |
| ⭯──→ (空心圆箭头) | 数据流箭头 | 表示模块间传递数据结构,通常伴随数据元素说明 | 传递订单数据:{订单ID, 金额, 商品列表} |
| ●──→ (实心圆箭头) | 控制信息箭头 | 表示传递控制标志或状态码,影响程序执行流程 | 传递支付验证状态:{状态码: 200, 错误信息: null} |


3、例子

九、面向数据流的设计方法
面向数据流的设计(Data Flow-Oriented Design)是一种基于数据流图(DFD)的结构化设计方法,旨在将系统的数据流程转换为模块化的软件结构。
1、步骤
1.1.绘制数据流图(DFD)
使用加工(Process)、数据流(Data Flow)、数据存储(Data Store)和外部实体(External Entity)表示系统的逻辑模型。
1.2.识别数据流类型
变换流(Transform Flow):数据经历“输入→核心处理→输出”的线性流程(如计算账单)。

事务流(Transaction Flow):数据根据类型触发不同处理分支(如订单处理)。

1.3.映射到结构图(Structure Chart)

变换分析:针对变换流,识别核心处理(变换中心),将DFD转换为分层模块结构。
事务分析:针对事务流,设计主模块调度不同事务处理分支。
1.4.优化与细化
合并冗余模块、简化接口、调整模块层次,确保高内聚低耦合。
补充模块的详细逻辑(如伪代码或流程图)。
2、变换分析步骤
2.1、第一级分解
- 顶层结构:
- Cm(主控模块):协调输入、变换中心、输出。
- Ca(输入控制模块):管理数据接收。
- Ct(变换中心控制模块):处理核心逻辑。
- Ce(输出控制模块):管理结果输出(如生成报告)。
2.2、第二级分解
- 输入通路:将输入流中的每个处理映射为Ca下的模块(如“验证数据”→“格式化数据”)。
- 变换中心:将核心处理映射为Ct下的模块(如“计算总价”→“检查库存”)。
- 输出通路:将输出流中的处理映射为Ce下的模块(如“生成确认”→“发送邮件”)。
模块

第二级分解结果:
3.事务分析步骤
步骤1:复查基本系统模型与数据流图
-
确保数据流图中存在明确的事务中心(N),并识别:
-
接收通路(输入流):L、M。
-
发送通路(分支流):A、B、C三条通路。
-

步骤2:确定事务中心与边界
-
事务中心:图中 N节点,负责接收输入并决定分支路径(如根据输入数据选择A、B、C通路)。
-
接收分支边界:从外部输入到事务中心的路径(如L→M)。
-
发送分支边界:从事务中心到各分支模块的路径(如J→K)。
步骤3:第一级分解
-
顶层模块(Cm):协调接收分支(ML)、事务中心(N)、发ABC)。
-
接收分支(Ca):处理输入数据。
-
事务中心(Ct):作为调度核心,不处理具体逻辑,仅决定调用哪个分支模块。
-
发送分支(Ce):可能包含公共输出处理。

步骤4:第二级分解(关键步骤)
(1) 接收分支的映射
从事务中心(N)反向沿接收通路,将每个处理映射为 接收分支的子模块

(2) 发送分支的映射
调度模块(N):不直接处理数据,而是调用下级活动模块。
活动模块:每个分支路径映射为一个独立模块,

(3) 输出分支的映射

步骤5:优化与验证
-
高内聚:每个活动模块(如Q、R)仅处理单一功能。
-
低耦合:模块间通过事务中心(Ct)调度,避免直接依赖。
-
执行顺序:由Ct控制
完整例子:

十、程序流程图
1、概述程序流程图
程序流程图(Program Flowchart)是一种用图形化方式描述算法或程序逻辑的工具,通过标准化的符号和箭头连接,直观展示程序的执行流程。以下是其核心要点:
1.1.绘制规则
-
自上而下:流程方向通常从顶部开始,向下延伸。
-
单一出口/入口:除判断框外,每个符号只有一个入口箭头;处理框只有一个出口,判断框有两个(分支)。
-
避免交叉:通过合理布局或连接点减少交叉线。
-
注释:可添加文字说明增强可读性。
2、符号

2.1.核心符号解释
-
起止框(椭圆形):表示程序的开始或结束。
-
处理框(矩形):代表计算、赋值等操作(如
x = x + 1)。 -
输入/输出框(平行四边形):标注数据的输入或输出(如
打印结果)。 -
判断框(菱形):用于条件分支(如
x > 0?),出口标注“是/否”或“Y/N”。 -
流向箭头:指示程序执行的顺序方向。
-
连接点(圆形):简化复杂流程,标记跨页或远距离流程的衔接。
3.程序结构
4.例子(身份证号验证模块的流程图)
4.1基于描述画流程图 (旅客信息核验)

4.2基于伪码画流程图
#include <stdio.h>
void main()
{int i, Sum;Sum = 0;for(i = 1; i <= 100; i++)Sum += i;printf("总和为 %d\n", Sum);
}

十一、盒图 (N-S图)
1、N-S图概述
盒图(N-S图,又称Nassi-Shneiderman图)是一种结构化程序设计的图形化工具,通过矩形框的嵌套严格表示程序的控制结构,避免传统流程图的随意跳转,确保逻辑清晰。
2、符号

(a) 顺序;(b) 选择;(c) CASE 多分支;(d) 循环;(e) 调用子程序 A
3.盒图绘制步骤
3.1. 确定程序的基本结构
盒图的核心是顺序、分支、循环和调用四种基本结构,需先明确程序的逻辑类型:
- 顺序结构(图a):任务按步骤依次执行。
- 分支结构(图b/c):根据条件选择不同路径。
- 循环结构(图d):重复执行某段代码直到条件不满足。
- 调用(图e)
3.2.按顺序绘制盒图
如下:
顺序:



分支:IF ELSE

循环:


调用:无
盒图绘制如下:

4.例子


十二、PAD图
1、PAD图简述
PAD图以树形结构向右展开,通过纵向分层和横向分支表示逻辑关系:
- 纵向:表示顺序执行(如任务1→任务2→任务3)。
- 横向:表示条件分支或循环嵌套(如IF-THEN-ELSE、CASE分支)。
2.符号

3.PAD图绘制例子

4.例子
十三、判定表
1.概述
| 组成部分 | 说明 |
|---|---|
| 左上部 | 列出所有条件 |
| 左下部 | 所有可能做的动作 |
| 右上部 | 表示各种条件组合的一个矩阵 |
| 右下部 | 和每种条件组合相对应的动作 |
判定表的优点:
能清晰地表示复杂的条件组合与应做的动作之间的对应关系。
判定表的缺点:
判定表的含义不是一眼就能看出来的,初次接触这种工具的人理解它需要有一个简短的学习过程。
当数据元素的值多于两个时,判定表的简洁程度也将下降。
2、例子


判定表如下:
十四、判定树
1、判定树概述
判定树是一种树形结构模型,通过节点和分支表示条件判断与执行逻辑,广泛用于分类、决策和算法设计。图中展示了其核心组成:
- 根节点:起始判断条件(如“条件”框)。
- 内部节点:中间判断或操作(如“CASE条件”“循环条件”)。
- 叶节点:最终操作或结果(如“部分”“第三个任务”)。
- 分支:连接节点的路径,标注条件取值(如
T/F、值1~值n)。
2、例子
十五、McCabe环形复杂度方法
1. 基本概念
流图(Control Flow Graph)
- 简化的控制流模型,忽略具体操作细节,聚焦分支与循环结构:
- 结点:代码块或控制点,用圆表示,一个圆代表一条或多条语句。
- 边:无条件或有条件跳转路径,箭头线称为边,代表控制流。在流图中一条边必须终止于一个结点,即使这个结点并不代表任何语句。
- 区域:边与结点围成的闭合区域(含图外部区域)

复合条件分解
若条件中含布尔运算符(如 if (A && B)),需拆分为多个简单条件结点:
// 原始复合条件 → 分解为多个简单条件
if (A && B) { ... }
// 分解后流图:
// 结点1: if (A)
// 结点2: if (B) → 分支语句
// 结点3: else → 结束
2.流图映射
对于顺序结构,一个顺序处理序列和下一个选择或循环的开始语句,可以映射成流图中的一个结点。

对于选择结构,开始语句映射成一个结点;两条分支至少各映射成一个结点;结束映射成一个结点。
对于循环结构,开始和结束语句各映射成一个结点。

复合条件映射
3. 环形复杂度计算
通过流图计算控制流复杂度(三种等效公式):
| 公式 | 示例说明 |
|---|---|
| V(G) = 区域数 | 流图分为4个区域 → V(G)=4 |
| V(G) = E - N + 2(E边数,N结点数) | E=11,N=8 → V(G)=11-8+2=5 |
| V(G) = P + 1(P判定节点数) | 判定节点数4 → V(G)=4+1=5 |
4.例子


相关文章:
软件工程(应试版)图形工具总结(二)
遇到的问题,都有解决方案,希望我的博客能为你提供一点帮助。 教材参考《软件工程导论(第六版)》 七、 层次图(H图)与HIPO图 1、概述 1.1、层次图(Hierarchy Chart / H图) 核心…...
思维链、思维树、思维图与思维森林在医疗AI编程中的应用蓝图
在医疗AI编程中,思维链(Chain of Thought, CoT)、思维树(Tree of Thoughts, ToT)、思维图(可能指知识图谱或逻辑图)以及思维森林(Forest-of-Thought, FoT)等技术框架通过模拟人类认知和推理过程,显著提升了AI在复杂医疗场景中的决策能力和可解释性: 1. 思维链(CoT)…...
SpringBoot异步任务实践指南:提升系统性能的利器
精心整理了最新的面试资料和简历模板,有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 引言 在现代Web应用中,高并发场景下的响应速度和资源利用率是系统设计的重要考量。SpringBoot通过简洁的异步任务机制,帮助开发者轻松…...
化工行业如何通过定制化工作流自动化实现25-30%成本优化?
作者:Mihir Jhaveri 编译:李升伟 发布日期:2024年10月30日 在化工生产领域,数字化转型正以颠覆性态势重塑产业格局。通过集成定制化软件、ERP系统、工业物联网(IIoT)传感网络、机器人流程自动化࿰…...
嵌入式硬件篇---嘉立创PCB绘制
文章目录 前言一、PCB绘制简介1.1绘制步骤1.1.1前期准备1.1.2原理图设计1.1.3原理图转PCB1.1.4PCB布局1.1.5布线1.1.6布线优化和丝印1.1.7制版1.2原理1.2.1电气连接原理1.2.2信号传输原理1.2.3电源和接地原理1.3注意事项1.3.1元件封装1.3.2布局规则1.3.3过孔设计1.3.4DRC检查1.…...
CSS Id 和 Class 选择器学习笔记
一、概述 在 CSS 中,id 和 class 选择器是用于为 HTML 元素指定样式的强大工具。它们可以帮助我们精确地控制页面中元素的样式,让页面设计更加灵活和高效。 二、id 选择器 1. 定义和使用 定义:id 选择器用于为具有特定 id 属性的 HTML 元素…...
Linux的 /etc/sysctl.conf 笔记250404
Linux的 /etc/sysctl.conf 笔记250404 /etc/sysctl.conf 是 Linux 系统中用于 永久修改内核运行时参数 的核心配置文件。它通过 sysctl 工具实现参数的持久化存储,确保系统重启后配置依然生效。以下是其详细说明: 📂 备份/etc/sysctl.conf t…...
LocaDate、LocalTime、LocalDateTime
Java8的时间处理 Java的时间处理在早期版本中存在诸多问题(如 java.util.Date 和 java.util.Calendar 的混乱设计),但Java8引入了引入了全新的 java.time包(基于JSR 310),提供了更清晰、线程安全且强大的时…...
1.Qt信号与槽
本篇主要介绍信号和槽,如何关联信号和槽以及用QPixmap在窗口中自适应显示图片 本文部分ppt、视频截图原链接:[萌马工作室的个人空间-萌马工作室个人主页-哔哩哔哩视频] 1. 信号 一般不需要主动发送信号,只有自定义的一些控件才需要做信号的…...
MySQL 基础入门
写在前面 关于MySQL的下载安装和其图形化软件Navicat的下载安装,网上已经有了很多的教程,这里就不再赘述了,本文主要是介绍了关于MySQL数据库的基础知识。 MySQL数据库 MySQL数据库基础 MySQL数据库概念 MySQL 数据库: 是一个关系型数据库管理系统 。 支持SQL语…...
shell语言替换脚本、填补整个命令行
shell语言替换脚本 填补整个命令行正则查询服务器指定路径替换内容 填补整个命令行 多用于脚本显示 seq -s "*" tput cols |tr -d [:digit:]正则查询 grep -r -E register[0-9]{5} /www/wwwroot服务器指定路径替换内容 #!/bin/bash cat > 1.sh << EOF #…...
数据分析与知识发现 论文阅读【信息抽取】
文章目录 基于知识蒸馏的半监督古籍实体抽取数据集模型实验结果 基于大语言模型的专利命名实体识别方法研究数据集评估公式实验 基于数据增强和多任务学习的突发公共卫生事件谣言识别研究数据集实验结果 参考 基于知识蒸馏的半监督古籍实体抽取 数据集 本文在有监督数据集的基…...
Compose组件转换XML布局
文章目录 学习JetPack Compose资源前言:预览界面的实现Compose组件的布局管理一、Row和Colum组件(LinearLayout)LinearLayout(垂直方向 → Column)LinearLayout(水平方向 → Row) 二、相对布局 …...
Linux开发工具——vim
📝前言: 上篇文章我们讲了Linux开发工具——apt,这篇文章我们来讲讲Linux开发工具——vim 🎬个人简介:努力学习ing 📋个人专栏:Linux 🎀CSDN主页 愚润求学 🌄其他专栏&a…...
Vue3学习二
认识组件的嵌套 还可以将Main中内容再划分 scoped防止组件与组件之间的样式相互污染 组件的通信 父子组件之间通信的方式 父组件传递给子组件 给传过来的内容做限制 type为传的内容的属性类型,required为true表示该内容是必须传的,default为,…...
[ deepseek 指令篇章 ]300个领域和赛道喂饭级deepseek指令
🍬 博主介绍 👨🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…...
2024第十五届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组
记录刷题的过程、感悟、题解。 希望能帮到,那些与我一同前行的,来自远方的朋友😉 大纲: 1、握手问题-(解析)-简单组合问题(别人叫她 鸽巢定理)😇,感觉叫高级了…...
C++ | C++11知识点
前言: 本篇内容讲述了C11中比较重要的内容为:右值引用、可变参数模板、lambda表达式和包装器。 ps:包装器博主在另一篇文章讲述的,本篇文章包装器板块为原文链接。 C11知识点目录 花括号初始化自定义类型的花括号初始化内…...
LeetCode 1123.最深叶节点的最近公共祖先 题解
昨天写了三题,今天目前为止写了一题,玩了会游戏稍微休息了下 先来理解一下今天的题目,今天的题目类型是递归遍历找最深位置,先通过几个样例了解一下 输入:root [3,5,1,6,2,0,8,null,null,7,4] 输出:[2,7,…...
C++设计模式-责任链模式:从基本介绍,内部原理、应用场景、使用方法,常见问题和解决方案进行深度解析
一、责任链模式的基本介绍 1.1 模式定义与核心思想 责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,其核心思想是将请求的发送者和接收者解耦。通过创建一个由多个处理节点组成的链条,每个节点依次尝试处理请…...
工具介绍 | SafeLLMDeploy教程来了 保护本地LLM安全部署
SafeLLMDeploy:保护本地大语言模型安全部署的“守护者” 在AI技术飞速发展的今天,大语言模型(LLM)如GPT、DeepSeek等正以前所未有的方式改变着我们的工作和生活。然而,本地部署这些强大的AI系统在带来便利的同时&…...
我该怎么设置SVN客户端的认证信息?
设置SVN客户端的认证信息通常取决于您使用的SVN客户端类型(命令行客户端或图形界面客户端)。以下是一些常见SVN客户端的设置方法: 1. 使用命令行SVN客户端 对于命令行SVN客户端,您通常在执行SVN命令时直接输入用户名和密码&…...
机器学习-04-分类算法-03KNN算法案例
实验名称 K近邻算法实现葡萄酒分类 实验目的 通过未知品种的拥有13种成分的葡萄酒,应用KNN分类算法,完成葡萄酒分类; 熟悉K近邻算法应用的一般过程; 通过合理选择K值从而提高分类得到正确率; 实验背景 本例实验…...
AIP-213 通用组件
编号213原文链接AIP-213: Common components状态批准创建日期2018-08-17更新日期2018-08-17 根据AIP-215规定,除使用“通用组件”包之外,API必须是独立的。通用组件包是给多个API使用的。 通用组件包有两种类型: 组织特定的通用组件&#…...
Go语言-初学者日记(七):用 Go 写一个 RESTful API 服务!
👷 实践是最好的学习方式!这一篇我们将用 Go Gin 框架从零开始开发一个用户管理 API 服务。你将学到: 如何初始化项目并引入依赖如何组织目录结构如何用 Gin 实现 RESTful 接口如何通过 curl 测试 API进阶功能拓展建议 🧰 一、项…...
Java 搭建 MC 1.18.2 Forge 开发环境
推荐使用 IDEA 插件 Minecraft Development 进行创建项目 创建完成后即可进行 MOD 开发。 但是关于 1.18.2 的开发教程太少,因此自己研究了一套写法,写法并非是最优的但是是探索开发MOD中的一次笔记和记录 GITHUB: https://github.com/zimoyin/zhenfa…...
计算机网络知识点汇总与复习——(三)数据链路层
Preface 计算机网络是考研408基础综合中的一门课程,它的重要性不言而喻。然而,计算机网络的知识体系庞大且复杂,各类概念、协议和技术相互关联,让人在学习时容易迷失方向。在进行复习时,面对庞杂的的知识点,…...
Verilog HDL 100道面试题及参考答案
目录 Verilog HDL 的四种基本逻辑值是什么? 关键字 reg 和 wire 的主要区别是什么? 解释阻塞赋值(=)与非阻塞赋值(<=)的区别,并举例说明。 如何声明一个双向端口(inout)? 位拼接操作符是什么?举例说明其用法。 拼接信号和常量 拼接常量和信号 重复拼接 以…...
内网(域)渗透测试流程和模拟测试day--5--Windows和Linux的提权
前景: 小知识: 认识一下土豆家族 是指一系列利用 Windows 系统漏洞实现提权的工具或方法,起源于 JuicyPotato。这些工具大多利用 COM 对象和服务中的权限提升漏洞,主要用于在 Windows 环境中从中低权限(如普通用户&…...
主机和虚拟机间的网络通信
参考:Vmware虚拟机三种网络模式详解 - 林加欣 - 博客园 (cnblogs.com) 虚拟机配置 一般额外配置有线和无线网络 桥接模式 虚拟机和主机之间是同一个网络,用一根线连接了虚拟机和物理机的网卡,可以选择桥接的位置,默认情况下是自动桥接&…...


