一、结构化分析与设计概述(教材核心定义)
教材明确:结构化分析与设计是一套面向数据流的、规范化的软件开发方法,核心思想是自顶向下、逐步分解、面向数据------即从系统整体功能出发,逐层分解为具体的子功能和子模块,聚焦数据的流动和处理过程,不涉及具体的实现细节,确保系统开发过程有序、可控,降低开发风险。
结构化分析与设计分为两个紧密衔接的阶段:结构化分析(SA) 和结构化设计(SD)。其中,结构化分析聚焦"做什么",核心是对用户需求进行分析、建模,梳理系统的数据流和逻辑流程;结构化设计聚焦"怎么做",核心是将结构化分析的成果转化为具体的系统架构和模块设计,形成可落地的设计方案,两者共同构成结构化软件开发的核心流程,也是系统架构设计师必须熟练掌握的基础方法。
教材强调:结构化分析与设计的核心价值在于"流程清晰、逻辑性强、可复用性高",能够有效解决需求模糊、开发混乱的问题,尤其适合大型复杂结构化系统的开发,是软考案例分析题中"需求分析建模""系统设计"考点的核心出题方向。
二、结构化分析(SA):聚焦"做什么"(教材重点)
结构化分析(Structured Analysis,SA)是需求分析阶段的核心方法,核心任务是对获取的原始需求进行分析、提炼、建模,消除歧义、冗余和冲突,将用户需求转化为系统可理解、可实现的数据流模型,为后续结构化设计提供明确依据。教材明确,结构化分析的核心输出是数据流图(DFD) 、数据字典(DD),辅助工具包括判定表、判定树等,三者共同构成结构化分析的核心成果。
2.1 结构化分析的核心特点(教材原文,软考必记)
-
自顶向下,逐步分解:从系统整体功能出发,逐层分解为具体的子功能和数据处理环节,先把握整体,再细化局部,确保分析过程有条理、不遗漏;
-
面向数据:以数据流为核心,聚焦数据的来源、流动路径、处理过程和存储方式,梳理数据与功能之间的关联,明确系统的核心逻辑;
-
客观中立:只描述系统"做什么",不涉及"怎么做",不提前考虑具体的实现技术和编程语言,确保分析成果的通用性和可扩展性;
-
规范化、标准化:有明确的建模工具(DFD、数据字典等)和流程,分析成果清晰、可验证、可追溯,便于开发团队、用户、客户达成共识。
2.2 结构化分析的三大模型(教材重点,软考高频)
教材明确,结构化分析通过三大模型全面描述系统的功能、行为和数据特征,三者相互配合,构成完整的需求分析模型,也是软考案例分析题常考的建模考点:
2.2.1 功能模型:数据流图(DFD)(核心)
数据流图(Data Flow Diagram,DFD)是结构化分析的核心工具,用于图形化描述系统中数据的来源、流动路径、处理过程和最终去向,直观呈现系统的数据流逻辑,不涉及具体的实现细节,核心作用是梳理系统功能与数据之间的关系,明确系统的核心处理流程。
教材明确的DFD核心组成要素(软考必记,案例分析常考绘制):
-
外部实体:系统之外与系统交互的人、设备或其他系统,是数据的来源或去向,用"矩形"表示,例如"客户""柜员""监管系统""第三方支付系统";
-
处理(加工):对数据进行处理、转换的操作,是DFD的核心,用"圆角矩形"表示,每个处理需明确输入输出数据,例如"用户登录验证""转账处理""余额查询",处理名称需简洁明了,体现具体功能;
-
数据流:数据的流动方向,用"带箭头的直线"表示,箭头指向数据的去向,需标注数据名称,明确数据的组成,例如"登录请求(手机号+密码)""转账指令(转账金额+收款账户+付款账户)";
-
数据存储:用于存储系统中需要长期保存的数据,用"开口矩形"(或两条平行线)表示,例如"客户账户信息表""交易记录存储""用户权限表",存储名称需体现存储的核心数据。
教材强调的DFD绘制原则(软考案例分析绘图注意事项):
-
自顶向下、逐层分解:先绘制顶层DFD(描述系统与外部实体的交互,仅包含一个核心处理和外部实体、数据流),再逐步分解为中层、底层DFD,细化每个处理的内部逻辑;
-
数据流必须有明确的来源和去向,不可孤立存在,且数据流只能从外部实体、数据存储流向处理,或从处理流向外部实体、数据存储;
-
每个处理至少有一个输入数据流和一个输出数据流,确保处理的合理性(无输入则无处理依据,无输出则处理无意义);
-
避免数据流交叉,保持图面清晰,便于理解和审核;父图与子图的数据流必须平衡(子图的输入/输出数据流需与父图中对应处理的输入/输出数据流一致)。
2.2.2 行为模型:状态转换图(STD)
状态转换图(State Transition Diagram,STD)是描述系统动态行为的核心工具,用于描述一个对象(或系统)在其生命周期中,如何响应外部事件并改变自身状态,补充功能模型未覆盖的动态需求,也是结构化分析中描述系统行为的重要工具。
教材明确的STD核心组成要素:
-
状态:对象在其生命周期中的一种状况,用"圆角矩形"表示,例如"未登录""已登录""转账中""转账成功";
-
事件:导致状态转换的触发条件,用"带标签的箭头"表示,箭头从当前状态指向目标状态,标签标注事件名称,例如"用户输入正确账号密码""转账指令提交""转账失败";
-
初始状态与终止状态:初始状态是对象生命周期的起点(用实心圆表示),终止状态是对象生命周期的终点(用实心圆外加一个圆圈表示)。
2.2.3 数据模型:E-R图(实体-关系图)
E-R图(Entity-Relationship Diagram)是结构化分析中数据建模的核心工具,用于描述系统中涉及的实体、实体之间的关系以及实体的属性,梳理系统的核心数据结构,为后续数据库设计提供直接依据,也是软考案例分析题中"数据建模"的高频考点。
教材明确的E-R图核心组成要素:
-
实体:系统中需要存储和管理的客观事物,用"矩形"表示,例如"客户""账户""交易记录",实体名称需具有唯一性;
-
属性:实体的特征,用"椭圆"表示,通过直线与对应实体关联,例如"客户"的属性包括"客户ID""手机号""姓名""开户日期";
-
关系:实体之间的关联,用"菱形"表示,通过直线与对应实体关联,标注关系名称和关联类型(一对一、一对多、多对多),例如"客户"与"账户"是"一对多"关系(一个客户可拥有多个账户,一个账户仅属于一个客户)。
示例(教材贴合场景):银行系统中,"客户"实体与"账户"实体的E-R图关系:客户(客户ID、手机号、姓名)→[拥有]→账户(账户ID、余额、开户日期),关联类型为一对多。
2.3 数据字典(DD):结构化分析的补充(教材重点)
教材定义:数据字典(Data Dictionary,DD)是对数据流图、E-R图、状态转换图中所有数据元素、数据流、数据存储、处理逻辑的详细描述和定义,是结构化分析的重要补充,确保所有相关人员对系统中的数据有统一的理解,避免歧义,也是软考案例分析题中常要求编写的内容。
教材明确的数据字典核心内容(软考必记):
-
数据元素:最小的数据单位,需描述名称、类型、长度、取值范围、默认值等,例如"客户手机号"(类型:字符串,长度:11位,取值范围:0-9数字组合,无默认值);
-
数据流:描述数据流的名称、组成(数据元素)、来源、去向、流量等,例如"转账指令"(组成:转账金额+收款账户+付款账户+交易密码,来源:柜员/客户,去向:转账处理模块,流量:日均1000笔);
-
数据存储:描述数据存储的名称、存储内容(数据元素/数据流)、存储方式、访问频率等,例如"客户账户信息表"(存储内容:客户ID、手机号、账户余额、开户日期,存储方式:关系数据库,访问频率:高频);
-
处理逻辑:简要描述处理的功能、输入输出数据、处理规则,例如"登录验证处理"(功能:验证用户手机号和密码的有效性,输入:登录请求,输出:登录成功/失败提示,处理规则:匹配客户账户信息表中的手机号和加密密码,密码错误3次锁定账户)。
数据字典与DFD的关系(教材重点,软考必记):数据流图是"图形化的骨架",直观呈现数据流动和处理过程;数据字典是"文字化的说明",详细定义DFD中所有元素的具体含义,两者相辅相成,共同构成结构化需求分析的核心成果,确保需求描述的完整性和一致性。
2.4 结构化分析的实施流程(教材原文,软考必记)
教材明确,结构化分析遵循标准化的流程,与需求工程的需求分析阶段高度契合,核心流程分为4步,需准确记忆各步骤的核心任务和输出物:
-
确定系统边界:明确系统的功能范围,区分系统内部和外部实体,绘制系统顶层DFD,明确系统与外部实体的交互关系;
-
逐层分解处理:将顶层DFD中的核心处理逐层分解,绘制中层、底层DFD,细化每个处理的输入、输出和处理逻辑;
-
建立数据模型:梳理系统中的实体、属性和关系,绘制E-R图,明确系统的数据结构;
-
编写数据字典:对DFD、E-R图中的所有元素进行详细定义,编写数据字典,补充判定表、判定树(用于描述复杂的处理逻辑),形成完整的结构化分析文档。
三、结构化设计(SD):聚焦"怎么做"(教材重点)
结构化设计(Structured Design,SD)是系统设计阶段的核心方法,核心任务是将结构化分析的成果(DFD、数据字典、E-R图等)转化为具体的系统架构和模块设计,明确模块的功能、接口和调用关系,核心思想是模块化、高内聚、低耦合,确保系统架构清晰、可维护、可扩展,也是软考案例分析题中"系统设计"考点的核心内容。
教材强调:结构化设计与结构化分析紧密衔接,结构化分析的成果是结构化设计的输入,结构化设计的输出是系统架构设计说明书、模块设计说明书,为后续编码、测试提供直接依据。
3.1 结构化设计的核心原则(教材原文,软考必记)
-
模块化:将系统分解为若干个独立的模块,每个模块负责一个具体的功能,模块之间通过接口交互,便于开发、测试和维护;
-
高内聚:每个模块内部的功能高度相关,模块内部的逻辑紧密结合,减少模块内部的冗余,提高模块的独立性;
-
低耦合:模块之间的依赖关系尽可能少,模块之间通过简单的接口交互,避免模块之间的直接关联,降低模块之间的影响;
-
自顶向下、逐步细化:与结构化分析保持一致,从系统整体架构出发,逐层细化模块设计,确保模块设计与系统整体功能一致;
-
一致性:模块的命名、接口设计、数据格式等保持一致,提高系统的可维护性和可读性。
3.2 结构化设计的核心内容(教材重点)
结构化设计主要包括总体设计 和详细设计两个阶段,各阶段的核心任务和输出物明确,是软考高频考点:
3.2.1 总体设计(概要设计)
核心任务:根据结构化分析的DFD模型,确定系统的整体架构,划分模块,明确模块之间的调用关系和接口,绘制模块结构图(SC图),核心输出是《系统总体设计说明书》。
教材明确的总体设计核心步骤:
-
梳理系统的核心功能,根据DFD的处理分解,划分系统的主要模块(每个模块对应DFD中的一个或多个处理);
-
确定模块之间的调用关系(如顺序调用、循环调用、选择调用),明确模块的接口参数(输入/输出数据);
-
绘制模块结构图(SC图),图形化呈现模块的划分和调用关系,SC图的核心元素包括模块、调用关系、接口参数;
-
确定系统的硬件架构、软件架构(如分层架构、模块化架构),明确系统的运行环境和部署方案;
-
编写《系统总体设计说明书》,明确系统架构、模块划分、接口设计、部署方案等内容。
3.2.2 详细设计
核心任务:对总体设计中划分的每个模块进行详细设计,明确模块的内部逻辑、处理流程、数据结构,设计模块的算法和接口细节,核心输出是《模块详细设计说明书》,为编码提供直接依据。
教材明确的详细设计核心内容:
-
模块内部逻辑设计:用流程图、N-S图、伪代码等工具,描述模块的内部处理流程,明确每个步骤的处理逻辑;
-
算法设计:设计模块内部的核心算法(如排序、查询、验证算法),明确算法的输入、输出和处理步骤;
-
数据结构设计:设计模块内部使用的数据结构(如数组、链表、结构体),明确数据的存储方式和访问方式;
-
接口细节设计:明确模块与其他模块、外部系统的接口细节,包括接口参数、数据格式、调用方式、异常处理;
-
编写《模块详细设计说明书》,详细描述每个模块的内部逻辑、算法、数据结构、接口细节等内容。
3.3 结构化设计的核心工具(教材重点)
-
模块结构图(SC图):用于描述系统的模块划分和模块之间的调用关系,核心元素包括模块(矩形表示)、调用关系(带箭头的直线表示)、接口参数(标注在箭头上);
-
流程图:用于描述模块的内部处理流程,核心元素包括开始/结束节点、处理节点、判断节点、流程线,直观呈现模块的内部逻辑;
-
N-S图:又称盒图,用于描述模块的内部逻辑,避免流程图的随意跳转,结构清晰、逻辑性强,适合描述复杂的处理流程;
-
伪代码:介于自然语言和编程语言之间的描述方式,用于描述模块的算法和处理逻辑,便于开发人员理解和转化为具体的代码。
四、结构化分析与设计的关系(教材重点,软考必记)
教材明确,结构化分析与设计是相辅相成、不可分割的整体,两者的核心关系的如下:
-
输入与输出的关系:结构化分析的成果(DFD、数据字典、E-R图等)是结构化设计的输入,结构化设计的成果(系统架构、模块设计)是结构化分析成果的落地和转化;
-
目标一致性:两者的核心目标都是为了开发出满足用户需求、结构清晰、可维护的系统,结构化分析解决"做什么",结构化设计解决"怎么做",确保系统开发不偏离需求;
-
流程连贯性:结构化分析的自顶向下、逐步分解思想,贯穿于结构化设计的全过程,确保系统的模块划分、逻辑设计与需求分析保持一致,避免出现需求与设计脱节的问题。
五、教材高频考点总结(软考必记)
结合《系统架构设计师教程(第2版)》原文,梳理结构化分析与设计的软考高频考点,直击核心,避免无效复习,重点掌握以下内容:
-
结构化分析与设计的核心思想:自顶向下、逐步分解、面向数据(结构化分析);模块化、高内聚、低耦合(结构化设计);
-
结构化分析的三大模型:功能模型(DFD)、行为模型(STD)、数据模型(E-R图),掌握每种模型的核心组成要素和绘制方法;
-
数据字典的核心内容:数据元素、数据流、数据存储、处理逻辑,能结合案例编写简单的数据字典;
-
DFD的绘制原则:自顶向下、逐层分解,父图与子图数据流平衡,每个处理至少有一个输入和输出;
-
结构化设计的两个阶段:总体设计(模块划分、SC图)和详细设计(内部逻辑、算法、伪代码);
-
结构化设计的核心原则:高内聚、低耦合,理解其含义及应用场景;
-
软考案例分析高频题型:绘制DFD(顶层、底层)、编写数据字典、划分模块并绘制SC图、描述模块内部逻辑。
六、总结(教材核心观点)
《系统架构设计师教程(第2版)》强调:结构化分析与设计是传统结构化软件开发的核心方法,虽然当前面向对象方法应用更为广泛,但结构化分析与设计的思想(自顶向下、逐步分解、高内聚低耦合)仍然是系统架构设计的基础,也是系统架构设计师必须掌握的核心能力。
对于软考备考而言,结构化分析与设计的考点密集,尤其是DFD绘制、数据字典编写、模块设计等内容,是案例分析题的高频出题点,需重点掌握教材中的核心定义、工具使用和实施流程。对于实际工作而言,结构化分析与设计适合需求明确、业务流程固定的系统,能够有效提升开发效率、降低开发风险,其模块化、高内聚低耦合的思想,也适用于各类系统的架构设计。
本文严格对照教材原文梳理,无多余拓展,重点突出软考考点,适合备考复习和工作备查,后续可结合教材中的案例(如银行系统、政务系统的结构化分析与设计案例),深化对知识点的理解,真正将教材知识落地到实际工作和考试中。