【软件工程】结构化设计:结构化分析方法(DFD)

【软件工程】结构化设计:结构化分析方法(DFD) 考点频率★★★★★下午题必考分值15分难度⭐⭐⭐建议重点掌握DFD四大元素的识别、分层与平衡原则、三种常见错误的判断1️⃣ 什么是结构化分析方法结构化分析方法Structured AnalysisSA是一种面向数据流的需求分析方法核心思想是“自顶向下、逐层分解”。它把一个大系统像剥洋葱一样从最外层开始一层一层地剥开直到看清楚里面的每一个细节。核心目标回答软件系统“做什么”的问题——不是“怎么做”那是设计阶段的事而是“系统要完成哪些功能、数据怎么流动”。三大核心工具数据流图DFD描述系统的数据流动与加工过程数据字典DD精确定义DFD中每个数据元素的组成加工逻辑说明描述最底层加工的内部处理逻辑一句话理解结构化分析方法就是把用户模糊的需求用DFD画出来、用数据字典定义清楚、用加工逻辑说明白——让开发团队和用户在同一张“图纸”上对话。2️⃣ DFD的四大基本元素DFD用四种图形元素来描述系统的逻辑模型元素图形符号含义示例外部实体External Entity矩形系统外部的人、组织或外部系统是数据的来源或去向客户、管理员、银行系统、传感器加工Process圆角矩形/圆形对输入数据进行处理并产生输出的核心环节订单审核、资格认证、数据统计数据存储Data Store开口矩形/双横线存放数据的仓库如数据库表或文件订单表、用户信息文件数据流Data Flow箭头数据的流向由一组固定成分的数据组成订单信息、审核结果2.1 外部实体的识别技巧外部实体通常有三类人物角色客户、管理员、老师、学生组织机构银行、供应商外部系统支付系统、后台数据库考试中外部实体名称通常从题目描述的“人”“外部系统”“设备”中提取。2.2 加工的命名规则加工名称通常采用“动词 名词”的结构例如✅ 生成报告、审核订单、更新库存、发送通知❌ 订单处理、数据管理太模糊看不出具体做什么2.3 数据存储的命名特征数据存储的名称通常带有以下特征词表、文件、库、清单、档案、记录例如用户表、订单文件、权限库、设备清单。2.4 数据流的核心规则数据流的起点或终点至少有一个必须是加工。也就是说✅ 外部实体 → 加工输入✅ 加工 → 外部实体输出✅ 加工 → 加工中间处理✅ 加工 → 数据存储写✅ 数据存储 → 加工读❌ 外部实体 → 外部实体不允许数据必须经过加工3️⃣ DFD的分层机制DFD采用分层模型从粗到细逐步细化层级名称内容顶层图上下文图第0层只有1个加工代表整个系统展示系统与外部实体之间的数据交互0层图第1层将顶层图的1个加工分解为多个子加工引入数据存储子图第2层及以下对0层图中某个加工继续细化分解编号规则顶层图的加工不编号0层图的加工编号为1、2、3…子图加工编号为1.1、1.2、2.1…打个比方顶层图 从飞机上看城市——只能看到城市的轮廓和对外的高速公路外部实体0层图 看城市地图——看到主要街道和区域主要加工子图 看某个小区的详细地图——看到每栋楼的具体位置加工的细节4️⃣ 核心原则父图与子图的平衡平衡原则是DFD的最高频考点。4.1 什么是平衡父图中某个加工的输入/输出数据流必须与其子图的输入/输出数据流在数量和名称上保持一致。一对一平衡父图加工P1有1个输入流A和1个输出流B子图中必须有1个输入流A和1个输出流B一对多平衡父图加工P1有1个输入流“用户信息”包含姓名、年龄、地址子图中可以分解为3条输入流“姓名”“年龄”“地址”子图中这3条数据流的数据项总和必须等于父图中的1条“用户信息”4.2 平衡检查的步骤对照顶层图和0层图检查顶层图中有没有某条数据流在0层图中消失了对照父图和子图找到父图中的某个加工对照其展开的子图检查输入/输出是否一致检查数据流方向数据流的方向也必须一致不能父图是输入、子图变成输出5️⃣ DFD中的三种常见错误必考这是软考DFD题目中最常设置的陷阱错误类型定义通俗理解黑洞Black Hole加工只有输入没有输出数据进去了就消失了——东西吞进去不吐出来白洞/奇迹Miracle加工只有输出没有输入数据凭空产生——无中生有灰洞Grey Hole加工的输入不足以产生输出给了1份原料却想做出3份产品——巧妇难为无米之炊考试技巧检查DFD时第一步就是检查每个加工是否都满足“有进有出”的基本要求。约65%的DFD错误都与违反数据守恒原则有关。6️⃣ 数据字典与加工逻辑6.1 数据字典Data Dictionary数据字典是对DFD中出现的所有数据元素进行精确定义的工具。它解决了一个问题DFD箭头上只写了“订单信息”但“订单信息”具体包含哪些字段数据字典告诉你答案。数据字典的典型条目数据流名订单信息 组成订单编号 客户姓名 商品列表 总金额 下单时间6.2 加工逻辑说明最底层的加工不再继续分解的加工需要用结构化语言、判定表或判定树来描述其内部逻辑。结构化语言的三种基本结构顺序结构先做A再做B最后做C选择结构IF 条件 THEN 做A ELSE 做B循环结构WHILE 条件 DO 做A7️⃣ 考试解题技巧下午题15分下午题DFD通常有4个小问问题考查内容解题技巧问题一填写外部实体名称从题目描述中找“人”“系统”“设备”优先找子图中数据流少的实体问题二填写数据存储名称找“**表”“文件”“库”等关键词无明确名称时用“XX表/XX文件”命名问题三补充缺失的数据流三种方法①父图子图平衡 ②检查加工有无黑洞/白洞 ③对照题目描述问题四拓展题不定可能考平衡原则说明、加工分解、结构化语言等补充数据流时的注意事项数据流的起点或终点至少有一个是加工起点和终点统一用编号或统一用名称不要混着写题目中出现“根据…”往往意味着需要有对应的输入数据流注意“和”字前后的数据流是否都完整8️⃣ 经典例题例题1以下哪个不属于DFD的基本元素A. 外部实体B. 加工C. 数据流D. 程序流程图解析DFD的四大基本元素是外部实体、加工、数据存储和数据流。程序流程图是详细设计阶段的工具不属于DFD。选D。例题2某DFD中一个加工只有输入数据流而没有输出数据流这种错误被称为 。A. 白洞B. 黑洞C. 灰洞D. 数据不平衡解析只有输入没有输出 → 黑洞。选B。例题3判断在分层DFD中父图与子图的输入输出数据流必须在数量和名称上完全一致。 解析正确。这是平衡原则的核心要求。但注意一对多情况下子图多条数据流的数据项总和要等于父图的一条数据流。9️⃣ 记忆口诀DFD四大件外加工存流。顶层定边界逐层往下走。父子要平衡数量名称都得有。黑洞吞数据白洞凭空有灰洞料不够。 小测验评论区对答案某系统的顶层数据流图中系统作为1个加工与外部实体“客户”之间有1条输入数据流“订单信息”和1条输出数据流“确认结果”。在0层图中系统被分解为3个加工。请问0层图的边界上必须有哪几条数据流这体现了DFD的什么原则本专栏日更点击头像 → 专栏《软考中级高频考点》订阅第一时间接收新内容#软考中级 #软件设计师 #数据流图 #DFD #结构化分析 #软件工程