第六章节——结构化开发方法
结构化开发方法
- 第六章节——结构化开发方法
- 一、系统分析与设计概述
- 1. 系统分析概述
- 2. 系统设计的基本原理
- 3. 系统总体结构设计
- 二、结构化分析方法
- 1. 结构化分析方法概述
- 2. 数据流图(DFD)
- 3. 数据字典
- 三、结构化设计方法(了解)
- 四、WebApp分析与设计(了解)
- 五、用户界面设计(了解)
一、系统分析与设计概述
1. 系统分析概述
结构化方法
包括结构化分析、结构化设计、结构化程序设计,它是一种面向数据流
的开发方法。结构化方法总的指导思想自顶向下、逐层分解
,它的基本原则是功能的分解与抽象
。
(1) 系统分析目的和任务
系统分析的目的和任务是形成书面材料:系统分析包括,即系统方案说明书
系统分析的主要步骤:
- 对当前系统进行详细的检查,收集数据。
- 建立当前系统的逻辑模型。
- 对现状进行分析,提出改进意见和新系统应达到的目标
- 建立新系统的
逻辑模型
- 编写系统方案说明书
(2) 系统分析的主要步骤
系统开发的目的是把现有系统的物理模型转化为目标系统的物理模型。系统分析阶段的结构是得到目标系统的逻辑模型
。逻辑模型反映了系统的功能和性质,而物理模型反映的是系统的某一种具体的实现方案。
2. 系统设计的基本原理
(1) 抽象
抽象·
是·一种重要的工具,用来将复杂的现场简化到可以分析、实验或者可以理解的程度。
(2) 模块化
模块化
是指将一个待开发的软件分解成若干个小的简单部分–模块
,每个模块可以独立地开发、测试,最后组装成完整的程序。
(3) 信息隐蔽
信息隐蔽
是将每个程序的成分隐藏或封装在一个单一的设计模块种,在定义每一个模块时尽可能少地显露其内部的处理,对提高软件的可修改性、可测试性和可移植性都有着重要的作用。
(4) 模块独立
模块独立
是指每个模块完成一个相对独立
的特定子功能,并且与其他模块之间的联系简单
衡量模块独立程度
的标准有两个:耦合性和内聚性(高内聚,低耦合)
耦合
是模块之间
的相对独立(互相连接的紧密程度)的度量
耦合类型 | 描述 |
---|---|
无直接耦合 | 两模块无直接关系,分属不同模块的控制与调用,独立性最高 |
数据耦合 | 模块之间通过值传递 完成调用关系 |
标记耦合 | 模块之间传递的是数据结构 |
控制耦合 | 模块之间传递的是控制变量 |
外部耦合 | 模块之间通过外部环境联结 |
公共耦合 | 访问同一个公共数据环境 (如全局数据结构,共享通信,公共内存) |
内容耦合 | 直接使用另一个模块的内部数据 ,或者非正常入口转入另一个模块 |
内聚
是对一个模块内部各个元素彼此结合的紧密程度的度量
内聚类型 | 描述 |
---|---|
功能内聚 | 完成单一功能,各部分协同工作,缺一不可,是最强 的内聚 |
顺序内聚 | 模块内的处理元素都密切相关且按顺序 执行 |
通信内聚 | 模块内的所有处理元素集中在一个数据结构的区域 上 |
过程内聚 | 模块内按指定的过程 完成多个任务 |
时间内聚 | 模块内的组合动作需要同时 执行 |
逻辑内聚 | 模块内通过参数确定完成哪一个逻辑上 相似的功能 |
偶然内聚 | 也称巧合内聚,模块内的处理元素之间没有任何联系,是最弱 的内聚 |
3. 系统总体结构设计
(1) 系统结构设计原则
①分解一协调②自顶向下③信息隐蔽、抽象④一致性原则⑤明确性原则⑥模块间松耦合、模块内高内聚⑦模块的扇入系数(一个模块直接上级模块的个数)和扇出系数(一个模块所拥有的直属下级模块的个数)要合理⑧模块规模适当。
(2) 子系统划分
子系统划分的原则: ①子系统相对独立②子系统间的依赖小③数据冗余小④考虑扩展性⑤便于系统分析阶段实现⑥考虑到各资源的利用情况。
子系统结构设计: ①各个子系统划分成多个模块②子系统、模块之前的数据及调用关系③评价并改进模块结构的质量④从数据流图导出模块结构图。
(3) 系统模块结构设计
- 模块四要素:输入输出、处理功能、内部数据、程序代码
- 模块结构图。
二、结构化分析方法
1. 结构化分析方法概述
结构化分析与设计方法
是一种面向数据流
的传统软件开发方法,它以数据流为中心
构建软件的分析模型和设计模型。
结构化方法
采用自顶向下逐层分解
的思想进行分析建模。自顶向下逐层分解充分体现了分解和抽象的原则。
2. 数据流图(DFD)
(1)数据流图中的基本图形元素
数据流图中的基本图形元素包括数据流、加工、数据存储和外部实体
数据流
:数据的流向。在DFD中,数据流的流向可以有以下几种:从一个加工流向另一个加工;从加工流向数据存储(写);从数据存储流向加工(读);从外部实体流向加工(输入);从加工流向外部实体(输出)。数据流必须与加工有关
。除了流向数据存储或从数据存储流出的数据流不必命名外,每个数据流都必须有一个明确的名字。加工
:描述了输入数据流到输出数据流之间的变换,也就是输入数据流经过什么处理后
变成了输出数据流。一个加工可以有多个输入数据流和多个输出数据流,但至少有一个输入数据流和一个输出数据流。“黑洞”
:加工有输入但没输出。“奇迹”
:加工没输入但有输出;“灰洞”
:加工输入不足以产生输出。数据存储
:用来存储数据。DFD中的数据存储在具体实现时可以用文件系统
实现,也可以用数据库系统
实现。数据存储的存储介质可以是磁盘、磁带或其他存储介质。外部实体
:外部实体是指存在于软件系统之外
的人员或组织,它指出系统所需数据的发源地和系统所产生的数据的归宿地。例如,对于一个考务处理系统
而言,考生
向系统提供报名单(输入数据流),所以考生是考务处理系统的一个数据发源地;而考务处理系统要将考试成绩的统计分析表(输出数据流)传递给考试中心
,所以考试中心是该系统的一个数据归宿地。
(2)数据流图的层次结构
一个复杂的软件系统可能涉及上百个加工或数据流,太复杂,也不易理解。于是根据自贝问卜逐层分解的思想,将数据流图进行分层。
顶层图
顶层图也称上下文数据流图,只有一个加工
,代表整个软件系统
,该加工描述了软件系统与外界之间(外部实体)
的数据流。0层图
顶层图中的加工(即系统)经分解后的图称为o层图。
DFD的分层图
(3)分层数据流图的审查
一致性
:父图与子图平衡、数据守恒、局部数据存储、输出不能与输入同名
父图与子图: 如果某图(记为A)中的某一个加工分解成一张子图(记为B),则称A是B的父图,B是A的子图。父图与子图平衡: 是指任何一张DFD子图边界上的输入/输出数据流必须与其父图中对应加工的输入/输出数据流保持一致。
数据守恒: 通常是指一个加工的所有输出数据流中的数据必须能从该加工的输入数据流中直接获得,或者能通过该加工的处理而产生。
局部数据存储: 一个数据存储应该画在哪些DFD中,不应该画在哪些DFD中。
完整性
:
- 黑洞:是指只有数据输入、没有数据输出的数据加工;
- 奇迹:是指没有数据输入只有数据输出的数据加工;
- 灰洞:是指输入不足以产生输出的数据加工。
3. 数据字典
数据字典
就是为数据流图中的每个数据流、文件、加工,以及组成数据流或文件的数据项做出说明。
(1) 数据字典的内容
数据字典的4类条目:数据流、数据项、数据存储、基本加工。
(2) 加工逻辑描述(加工规格说明)
在数据流图的分解中,位于层次树最低层的加工也称为基本加工
或原子加工,每一个基本加工都需要进一步说明,这称为加工规格说明。
在编写基本加工的规格说明时,主要目的是表达“做什么”
而不是“怎么做”。
加工规格说明应满足以下要求:
- 对数据流图的每一个
基本加工,必须有一个加工规格说明
。 - 加工规格说明必须描述基本加工如何把输入数据沉尖换为输出数掂沉的加上戏则加上风则的说明有三种方式:结构化语言、判定表、判定树)。
- 加工规格说明必须描述
实现加工的策略而不是实现加工的细节
。 - 加工规格说明中包含的信息应是充足的,完备的,有用的,没有重复的多余信息。
常用的加工逻辑描述方法(加工规格说明)有结构化语言、判定表(决策表)和判定树(决策树) 三种。
- 结构化语言
结构化语言(如结构化英语)是一种介于自然语言和形式化语言之间的半形式化语言,是自然语言的一个受限子集。 - 判定表
判定表
能够清楚地表示复杂的条件组合与应做的动作之间的对应关系。由4个部分组成:左上部分是条件定义,在此区域列出了各种可能的单个条件;
左下部分是动作定义,在此区域列出了可能采取的单个动作;
右上部分是条件项,在此区域列出了针对各种条件的每一组条件取值的组合;
右下部分是动作项,这些动作项与条件项紧密相关,它指出了在条件项的各组取值的组合情况下应采取的动作。
- 判定树
也是用来表达加工逻辑的一种工具,有时侯它比决策表更直观。
三、结构化设计方法(了解)
(1) 结构化设计(SD)
结构化设计(SD)是一种面向数据流的设计方法,与SA衔接,基本思想是将系统设计成相对独立、功能单一的模块组成的结构。
(2) 结构化设计步骤
①建立初始结构图。②对结构图进行改进。③书写设计文档。④设计评审。
(3) 数据流图到软件体系结构的映射
结构化设计是将结构化分析的结果(数据流图)映射成软件的体系结构(结构图)。根据信息流的特点,可将数据流图分为变换型数据流图和事务型数据流图 ,其对应的映射分别称为变换分析和事务分析。
①信息流的类型:交换流(主加工))、事物流。②变换分析(从受抉沉型的DFD寸出住厅阳图)。
四、WebApp分析与设计(了解)
WebApp是基于Web的系统和应用。大多数WebApp采用敏捷开发过程模型进行开发
(1) WebAPP的特性
网络密集性、并发性、无法预知的负载量、性能、可用性、数据驱动。
(2) WebApp需求模型
内容模型、交互模型、功能模型、导航模型、配置模型。
(3) WebApp设计
架构设计、构件设计、内容设计、导航设计。
五、用户界面设计(了解)
(1) 用户界面设计的黄金原则
Theo Mandel关于界面设计的著作中提出了3条“黄金原则”
:
用户操纵控制
:不强迫、交互灵活、中断和撤销、定制、内部隔离、直接交互减少用户的记忆负担
。保持界面一致
。
(2) 用户界面的分析与设计
- 分析和设计模型:设计模型、用户模型、系统感觉、系统映像。
- 分析和设计过程:界面分析及建模、界面设计、界面构造、界面确认。
- 设计问题:系统响应、帮助设施、错误信息处理、菜单和命令标记。