《软件设计师》复习笔记(13)——结构化开发方法
目录
1. 结构化开发方法
1.1 系统分析过程
1.2 系统设计基本原理
(1)内聚性(模块内部关联程度)
(2)耦合性(模块间依赖程度)
真题示例:
1.3 系统总体结构设计(相当于概要设计)原则
1.4 子系统划分原则
1.5 系统模块结构设计
1.6 模块结构图
真题示例:
1.5 结构化分析与设计工具
(1)数据流图(DFD)
(2)数据字典(DD)
真题示例:
(3)模块结构图
真题示例:
2. WebApp分析与设计
2.1 WebApp特性
2.2 WebApp需求模型
2.3 WebApp设计方法
1. 结构化开发方法
1.1 系统分析过程
系统分析的目标是将当前系统的物理模型转化为目标系统的逻辑模型,步骤如下:
- 获取当前系统的物理模型(现实环境)。
- 抽象出当前系统的逻辑模型(功能与数据流)。
- 优化逻辑模型,建立目标系统的逻辑模型。
- 具体化目标系统的物理模型(实现方案)。
1.2 系统设计基本原理
- 抽象:隐藏细节,关注核心功能。
- 模块化:分解系统为独立模块。
- 信息隐蔽:模块内部数据不直接暴露。
- 模块独立:高内聚、低耦合。
(1)内聚性(模块内部关联程度)
内聚类型 | 定义 | 关键字 |
---|---|---|
1,偶然内聚 | 模块内元素无直接关系 | 无关联 |
2,逻辑内聚 | 执行相似功能,由参数决定具体操作 | 逻辑相似 |
3,时间内聚 | 需同时执行的任务组合 | 同时执行 |
4,过程内聚 | 按指定顺序执行多个任务 | 过程顺序 |
5,通信内聚 | 操作同一数据结构或输入/输出 | 相同数据 |
6,顺序内聚 | 元素顺序执行,前一个输出是下一个输入 | 顺序依赖 |
7,功能内聚(最强) | 所有元素共同完成单一功能 | 缺一不可 |
(2)耦合性(模块间依赖程度)
耦合类型 | 定义 | 关键字 |
---|---|---|
1,无直接耦合 | 模块间无直接关系 | 无交互 |
2,数据耦合 | 传递简单数据值(如函数参数) | 值传递 |
3,标记耦合 | 传递数据结构(如对象、记录) | 结构传递 |
4,控制耦合 | 传递控制变量,决定被调用模块的行为 | 条件控制 |
5,外部耦合 | 依赖外部环境(如I/O设备、协议) | 外部依赖 |
6,公共耦合 | 通过公共数据环境交互 | 共享数据 |
7,内容耦合(最差) | 直接访问或修改另一模块内部数据 | 强依赖 |
真题示例:
某模块中各个处理元素都密切相关于同一功能且必须顺序执行,前一处理元素的输出就是下一处理元素的输入,则该模块的内聚类型为( )内聚
A、过程 B、时间 C、顺序 D、逻辑
- 顺序内聚的定义是:模块内的处理元素必须按特定顺序执行,前一个元素的输出是下一个元素的输入,且所有元素共同完成一个功能。
- 其他选项:
- 过程内聚:按特定流程组织,但无严格的输入输出依赖。
- 时间内聚:元素在同一时间执行(如初始化模块)。
- 逻辑内聚:元素逻辑相似(如根据参数执行不同操作)。
已知模块A给模块B传递数据结构X,则这两个模块的耦合类型为( )。
A. 数据耦合 B. 公共耦合 C. 外部耦合 D. 标记耦合
- 标记耦合的定义是:模块间通过传递数据结构(如对象、记录)交互,而非简单值。
- 其他选项:
- 数据耦合:传递简单数据值(如整数、字符串)。
- 公共耦合:通过共享数据环境(如全局变量)交互。
- 外部耦合:依赖外部系统或设备(如API、硬件)。
1.3 系统总体结构设计(相当于概要设计)原则
- 分解-协调:分而治之,再整合。
- 自顶向下:从整体到细节。
- 信息隐蔽:模块内部数据不暴露。
- 一致性:统一接口、命名规范。
- 模块独立性:高内聚、低耦合。
- 合理扇入/扇出:模块调用关系适度。
- 模块规模适当:避免过大或过小。
1.4 子系统划分原则
- 独立性:功能独立,减少依赖。
- 数据冗余小:避免重复存储。
- 便于分阶段实现:可增量开发。
- 适应未来发展:预留扩展性。
1.5 系统模块结构设计
- 模块的定义与特点:模块是组成系统的基本单位,具有可组合、分解和更换的特点。系统中任一处理功能都可视为模块,根据功能具体化程度,模块分为逻辑模块和物理模块。
- 模块的要素:
- 输入和输出:是模块的外部特性之一。
- 处理功能:指模块将输入转换成输出所做的工作,为模块外部特性。
- 内部数据:仅供模块本身引用的数据,属于模块内部特性。
- 程序代码:用于实现模块功能的程序,是模块内部特性。
1.6 模块结构图
- 设计原则:
- 模块独立性:模块内部凝聚性要强,模块间联系要少。
- 调用关系:模块之间只能存在上下级的调用关系,无同级横向联系。
- 系统结构:整个系统呈树状结构,不允许网状或交叉调用关系。
- 编码与归档:所有模块(包括后继IPO图)都要严格分类编码并建立归档文件。
- 关注重点:主要关心模块的外部属性,即上下级模块、同级模块之间的数据传递和调用关系,不关心模块内部情况。
真题示例:
以下关于软件设计原则的叙述中,不正确的是( )
A、系统需要划分多个模块,模块的规模越小越好
B、考虑信息隐蔽,模块内部的数据不能让其他模块直接访问模块独立性要好
C、尽可能高内聚和低耦合
D、采用过程抽象和数据抽象设计
- A选项:模块划分并非越小越好。模块规模过小会导致系统过于碎片化,增加模块间的调用开销,降低可维护性。正确的原则是模块规模适中,保持功能完整性。
- B选项:信息隐蔽是核心原则,模块内部数据应封装,避免外部直接访问。
- C选项:高内聚(模块功能单一)、低耦合(模块间依赖少)是设计目标。
- D选项:抽象(过程抽象和数据抽象)是设计的基本手段。
在进行子系统结构设计时,需要确定划分后的子系统模块结构,并画出模块结构图。该过程不需要考虑( )。
A.每个子系统如何划分成多个模块
B.每个子系统采用何种数据结构和核心算法
C.如何确定子系统之间、模块之间传送的数据及其调用关系
D.如何评价并改进模块结构的质量
- B选项:数据结构和核心算法属于详细设计阶段的任务,而非子系统结构设计阶段(概要设计阶段)的重点。
- 其他选项:
- A:模块划分是结构设计的核心。
- C:模块间数据传递和调用关系需明确。
- D:需评估模块结构的合理性(如独立性、耦合度)。
1.5 结构化分析与设计工具
(1)数据流图(DFD)
- 元素:
- 外部实体(源/宿):系统外的人或组织(如用户、银行)。
- 加工(处理逻辑):输入→输出变换。
- 数据存储:数据库或文件。
- 数据流:数据流动方向。
- 常见错误:
- 黑洞:有输入无输出3.1.2。
- 奇迹:有输出无输入3.1.3。
- 灰洞:输入不足以产生输出3.1.1。
- 分层数据流图
(2)数据字典(DD)
- 数据字典的作用:数据流图描述系统分解,但未对图中各成分说明。数据字典则为数据流图中的每个数据流、文件、加工以及组成数据流或文件的数据项做出说明。
- 数据字典的条目类型:包括数据流、数据项、数据存储和基本加工这4类。
- 数据字典的符号及含义:
- “=”:被定义为。
- “+”:与,如x = a + b,表示x由a和b组成。
- “[…|…]”:或,如x = [a|b],表示x由a或b组成。
- “{……}”:重复,如x = {a},表示x由0个或多个a组成 。
- 加工逻辑:也称为“小说明”,常用的描述方法有结构化语言、判定表和判定树3种。
真题示例:
在结构化分析中,用数据流图描述( )。当采用数据流图对一个图书馆管理系统进行分析时,( )是一个外部实体。
A. 数据对象之间的关系,用于对数据建模
B. 数据在系统中如何被传送或变换,以及如何对数据流进行变换的功能或子功能,用于对功能建模
C. 系统对外部事件如何响应,如何动作,用于对行为建模
D. 数据流图中的各个组成部分
A. 读者 B. 图书 C. 借书证 D. 借阅
- 数据流图(DFD) 主要用于描述 数据在系统中的流动和变换过程,即 功能建模。
- (数据建模)通常由 E-R图 完成,而非DFD。
- (行为建模)通常由 状态转换图 或 活动图 描述。
- 是DFD的组成部分(如数据流、加工、存储、外部实体),但并非其核心作用。
- 外部实体 指与系统交互的 人或外部系统(如用户、管理员、第三方服务)。
- 读者是主动与系统交互的角色(如借书、还书),属于外部实体。
- 图书是数据存储(如数据库中的记录)。
- 借书证是数据流(如借书时传递的信息)。
- 借阅是行为或加工(如“处理借阅”功能)。
(3)模块结构图
- 基本概念:结构化设计(SD)是一种面向数据流的设计方法,可与结构化分析(SA)方法衔接,其基本思想是将系统设计为由相对独立、功能单一的模块组成的结构。
- 描述工具:使用结构图(Structure Chart)来描述软件系统的体系结构,指出软件系统由哪些模块组成以及模块之间的调用关系。模块结构图是结构化设计的工具,由模块、调用、数据、控制和转接五种基本符号构成。
- 主要内容:
- 体系结构设计(架构设计):定义软件的主要结构元素及其关系。
- 数据设计:基于实体联系图确定软件涉及的文件系统结构及数据库的表结构。
- 接口设计:描述用户界面,软件与其他硬件设备、其他软件系统及使用人员的外部接口,以及各种构件之间的内部接口。
- 过程设计:确定软件各个组成部分内的算法及内部数据结构,并选定某种过程的表达形式来描述各种算法。
真题示例:
在采用结构化开发方法进行软件开发时,设计阶段接口设计主要依据需求分析阶段的()。接口设计的任务主要是()。
A. 数据流图 B. E - R图 C. 状态 - 迁移图 D. 加工规格说明
A. 定义软件的主要结构元素及其之间的关系
B. 确定软件涉及的文件系统的结构及数据库的表结构
C. 描述软件与外部环境之间的交互关系,软件内模块之间的调用关系
D. 确定软件各个模块内部的算法和数据结构
- 结构化开发方法中,需求分析阶段的核心输出是 数据流图(DFD),它描述了系统的功能需求和数据流动。
- 接口设计需要明确系统与外部(用户、其他系统)以及内部模块之间的 数据交互关系,这些信息直接来源于DFD。
- 其他选项:
- (E-R图):用于数据库设计,与接口设计无关。
- (状态-迁移图):描述系统行为(如状态机),非接口设计依据。
- (加工规格说明):是模块内部逻辑的细节,不直接用于接口设计。
- 接口设计的核心任务是:
- 外部接口:系统与用户、硬件、其他系统的交互(如API、UI)。
- 内部接口:模块间的调用协议(如函数参数、返回值)。
- 其他选项:
- A:属于 体系结构设计 任务。
- B:属于 数据设计 任务。
- D:属于 过程设计 任务。
2. WebApp分析与设计
2.1 WebApp特性
- 网络密集性:依赖网络通信(Internet/内联网)。
- 高并发:大量用户同时访问。
- 负载不可预测:用户量波动大。
- 性能敏感:响应速度影响用户体验。
- 高可用性:需支持24/7访问。
- 数据驱动:内容以超媒体(文本、图片、视频)为主。
2.2 WebApp需求模型
模型 | 描述 |
---|---|
内容模型 | 定义WebApp提供的文本、图片、视频等。 |
交互模型 | 用户与系统的交互方式(用例图、状态图等)。 |
功能模型 | 系统提供的计算和操作功能。 |
导航模型 | 用户如何在不同内容间跳转。 |
配置模型 | 系统部署环境(如服务器、数据库)。 |
2.3 WebApp设计方法
- 架构设计:
- 采用**MVC(模型-视图-控制器)**分离功能与内容。
- 构件设计:
- 内容设计:组织内容对象(线性、网格、层次、网络结构)。
- 功能设计:模块化处理逻辑。
- 导航设计:定义用户访问路径。