系统的结构化分析与设计方法
1、结构化方法的主要思想:
(1)软件是有组织、有结构的逻辑实体,其结构为自顶向下的形式 (2)软件由程序和数据组成,其结构呈现三层组织形式,即系统、子系统、功能模块/数据体 (3)软件结构中的各部分既独立又关联
2、结构化方法的特点: (1)抽象性:抽象描述系统的本质内容 (2)结构化、模块化、层次化: 分而治之,由分到合 (3)分析与设计线索: 面向过程(处理) – 过程驱动 面向数据 – 数据驱动
3、总体规划: 为所规划的软件系统作出一个战略的、宏观的、全局的技术方案 构建宏观结构模型,为后期的分析与设计奠定基础 三个工作内容: (1)需求调查 (2)结构模型建立 (3)总体规划文档撰写
4、过程与数据间的关系建立 – U/C矩阵
(1)过程(处理)对数据的操作可以分为2类: Use – 使用,包括Select、Insert、Delete、Update Create – 建立,即创建数据 (2)U/C矩阵 二维矩阵表 横向业务 – 过程 ;纵向 – 主题数据库 (3)U/C矩阵的作用 为子系统划分提供帮助
5、子系统规划:
(1)建立U/C矩阵 (2)整理成“基本U/C矩阵” 在原始的U/C矩阵基础上,反复调换列,使得尽可能多的“C”标记处于矩阵的对角线附近 (3)子系统划分 按照“职能域”对U/C矩阵进行划分 (4)子系统定义 含业务过程和主题数据库
6、用传统结构化和oo的观点看待系统的比较:
1)传统方法:系统是处理的集合,处理与数据实体的交互,处理接受输入并产生输出
2)OO方法:系统是交互对象的集合,对象与人或其他对象交互,对象发送和响应信息
7、结构化分析:
分析基础:总体规划说明书;分析每个业务过程的详细流程;分析每个主题数据库的数据结构; 建立分析模型:系统业务流程图、详细的数据流图、数据字典;结构化系统分析结果:系统分析说明书
8、系统流程图:
对不同计算机程序、文件、数据库和相关手工过程设计的表达;主要从较高的层次描述系统的相对独立的子系统和程序模块;用图形化的方式描述了对子系统的组织;可以表明系统业务类:Batch(批处理) Real time(实时处理)
9、
10、基于数据流的系统分析 -- 数据流图
数据流图:用处理、外部实体、数据流以及数据存储来表示系统需求的图表
DFD的特点:图形元素少且符号简单易懂;较充分表达系统的主要需求:输入、输出、处理和数据存储;最终用户、管理人员和系统开发人员只需稍加培训即可读懂DFD图,方便交流。
11、
DFD图可以描述高层次的具有高度概括的系统处理 也可以描述低层次的具有更详细分解的系统处理
抽象层次:把系统分解成一个逐步细化的分层集合的建模技术
11、关联图:在单个处理符号中概括系统内所有处理活动的DFD
关联图在表达系统边界时用处很大系统的范围是通过单个的处理和外部实体所表示的事物来定义的 数据存储不画在关联图中是因为它本身被认为是系统内部的内容
当一个系统响应事件较多时,常常将系统分成多个子系统,并为每个子系统创建一张关联图
12、DFD片段:用一个单一处理符号表示系统响应一个事件的DFD
在DFD片段中,展示了处理、外部实体和内部数据存储之间的 交互细节 每个DFD片段仅显示要响应该事件的那些数据存储 一个DFD片段是为事件表中的每一个事件创建的
14、事件分离的系统模型/0层图: 将一个系统或子系统的所有DFD片段组合到一个单个的DFD图 中,这样的DFD图称为事件分离的系统模型/0层图
0层DFD图:“处理”的编号为i
0层图对整个系统或子系统进行比关联图更加详尽的描述 但是,有时不使用0层图,因为: 1)包含的信息与DFD片段重复; 2)图表比较复杂,特别是对于需要响应较多事件的大系统 好处: 可以直观地分析各个“处理”之间的数据流的关联关系 适当规模的子系统可以使用0层图
分解“处理”-理解“处理”的细节: 一个DFD片段中的处理也可
1层DFD图:将0层DFD中的处理进一步细化等到的DFD图 “处理”的编号为“i.j” 2层DFD图:将1层DFD中的处理进一步细化等到的DFD图 “处理”的编号为“i.j.k”
包含多个更小的处理 有时分析员需要将该DFD片段进一步细化,生成更 详细层次的DFD图
15、DFD质量评估:
高质量的DFD: 可读性强、内部一致、能够准确描述系统需求 措施: 最小化复杂度 (就是使每幅DFD图尽量简单易懂,避免信息超量(信息超量: 当太多的信息同时显现时所发生的难以理解的情况))保证数据流一致性。
最小化复杂度:措施:采用分层结构将DFD划分为小的且相对独立的子集 这样可以逐级阅读、考察DFD
构造DFD图的7±2规则: 单个DFD中不应有超过7±2个处理 单个DFD中不应超过7±2个数据流进出同一个处理/数据存储
接口最小化: DFD中各个元素之间的连接数越少越好
保证数据流一致性:
数据流一致性表现在三个方面: 一个“处理”和该“处理”被详细分解后在数据流内容上应该一致 对一个“处理”,有数据流入却没有相对应的数据流出 对一个“处理”,有数据流出却没有相对应的数据流入
黑洞 --- 带有输入数据的但并不用其产生输出数据的“处理”或数据存储
奇迹 --- 没有足够数据元素作为输入或产生来源的一个“处理”或“数据存储”
DFD总结:
在关联图中不画数据存储 数据流不反映处理顺序,显示数据通过系统的流程,因此“处理”可以并行工作 ;
“处理”过程既有输入,又有输出;有输入无输出称之为黑洞;若无输入而产生输出称之为奇迹;输出内容不全部依赖于输入为灰洞
在传统方法中,DFD图在一个图中描述了三种元素:
处理 -- 每个最底层“处理”需要详细描述其细节
数据流 -- “数据流”包含的数据元素需要定义
数据存储 -- “数据存储”需要在ERD中定义
处理方法:
1. “处理”细分解,层层分解,直到可详细描述细节 2. 结构化语言/伪代码 3. 决策表/决策树
16、数据字典—数据分析:
数据字典是数据分析的描述模型,包括: 数据项定义,数据结构定义,数据流描述,数据存储描述
数据项定义:定义特定数据项的组成和意义 数据结构定义:定义有数据项组成的表达数据的基本数据 数据流描述:描述数据流的数据构成,并指明其来源或去向 数据存储描述:描述保存在存储介质上的数据文件或数据库 表的格式和内容
广义的数据字典,也可以包含对“处理”的描述
数据结构:由数据项组成,它给出了数据基本结构单位 数据结构名 数据结构说明 数据结构组成:{数据项/数据结构} 数据结构约束
数据流是数据元素的集合,数据流定义就是列出其 包含的所有数据项
数据元素还需进一步的定义: 说明类型、长度等 数据元素一般在设计阶段详细定义
数据存储:数据结构保存或停留之处,数据文件或数据库表 数据存储名 数据存储说明 输入的数据流 输出的数据流 数据存储组成:{数据结构} 数据量 存取频度 存取方式
数据处理:给出处理的流程和说明信息 数据处理名 数据处理说明 输入数据: {数据结构} 输出数据: {数据结构} 处理过程简要描述
17、结构化的系统设计主要考虑: 模块的层次化、模块之间的接口、数据库设计和用户界面设计的关联性; 用系统流程图记录各个子系统间的关联 为每个模块设计内部逻辑 采用自顶向下的方法进行设计 具有系统自动化边界的DFD ;结构图
18、结构图定义:以模块为基础、以模块间的调用为关联所构成的图称模块结构图,简称结构图