结构化分析

    结构化分析方法的基本思想是自顶向下逐层分解。分解和抽象是人们控制问题复杂性的

两种基本手段。对于一个复杂的问题,人们很难一下子考虑问题的所有方面和全部细节,通

常可以把一个大问题分解成若干个小问题,每个小问题再分解成若干个更小的问题,经过多

次逐层分解,每个最底层的问题都是足够简单、容易解决的,于是复杂的问题也就迎刃而解

了。这个过程就是分解过程。

    结构化分析与面向对象分析方法之间的最大差别是:结构化分析方法把系统看作一个过

程的集合体,包括人完成的和电脑完成的;而面向对象方法则把系统看成一个相互影响的对

象集。结构化分析方法的特点是利用数据流图来帮助人们理解问题,对问题进行分析。

    结构化分析一般包括以下工具:数据流图(Data Flow Diagram,DFD)、数据字典(Data

Dictionary,DD)、结构化语言、判定表、判定树。在接下来的部分将对它们一一做简单介绍。

    结构化系统分析方法从总体上来看是一种强烈依赖数据流图的自顶向下的建模方法。它

不仅是需求分析技术,也是完成需求规格化的有效技术手段。

1.结构化分析的工作步骤

    在介绍具体的结构化分析方法之前,先对如何进行结构化分析做一个总结性描述,以帮

助大家更好地应用该方法。

    (1)研究“物质环境”。首先,应画出当前系统(可能是非计算机系统,或是半计算机

系统)的数据流图,说明系统的输入、输出数据流,说明系统的数据流情况,以及经历了哪

些处理过程。在这个数据流图中,可以包括一些非计算机系统中数据流及处理的命名,例如

部门名、岗位名、报表名等。这个过程可以帮助分析员有效地理解业务环境,在与用户的充

分沟通与交流中完成。

    (2)建立系统逻辑模型。当物理模型建立完成之后,接下来的工作就是画出相对于真

实系统的等价逻辑数据流图。在前一步骤建立的数据流图的基础上,将所有自然数据流都转

成等价的逻辑流,例如,将现实世界的报表存储在计算机系统中的文件里;又如将现实世界

中“送往总经理办公室”改为“报送报表”。

    (3)划清人机界限。最后,确定在系统逻辑模型中,哪些将采用自动化完成,哪些仍

然保留手工操作。这样,就可以清晰地划清系统的范围。

2.数据流图

    DFD 是一种图形化的系统模型,它在一张图中展示信息系统的主要需求,即输入、输

出、处理(过程)、数据存储。由于从 DFD 中可以很容易地看出系统紧密结合的各个部分,

而且整个图形模式只有 5 个符号需要记忆,所以深受分析人员的喜爱,因而广为流行。

如图 8-5 所示,DFD 中包括以下几个基本元素。

过程:也称为加工,一步步地执行指令,完成输入到输出的转换。

外部实体:也称为源/宿,系统之外的数据源或目的。

数据存储:也称为文件,存放数据的地方,一般是以文件、数据库等形式出现。

数据流:从一处到另一处的数据流向,如从输入或输出到一个过程的数据流。

实时连接:当过程执行时,外部实体与过程之间的来回通信。


    (1)数据流图的层次。正如前面提到的,结构化分析的思路是依赖于数据流图进行自

顶而下的分析。这也是因为系统通常比较复杂,很难在一张图上将所有的数据流和加工描述

清楚。因此,数据流图提供一种表现系统高层和低层概念的机制。也就是先绘制一张较高层

次的数据流图,然后在此基础上,对其中的过程(处理)进行分解,分解成为若干独立的、

低层次的、详细的数据流图,而且可以这样逐一地分解下去,直至系统被清晰地描述出来。

数据流图的层次如图 8-6 所示。


    (2)Context 图。Context 图,也就是系统上下文范围关系图。这是描述系统最高层结

构的 DFD 图。它的特点是,将整个待开发的系统表示为一个过程,将所有的外部实体和进

出系统的数据流都画在一张图中。图 8-7 就是一个 Context 图的例子。


   Context 图用来描述系统有什么输入、输出数据流,与哪些外部实体直接相关,可以把

整个系统的范围勾画出来。

(3)逐级分解。当完成了 Context 图的建模之后,就可以在此基础上进行进一步的分

解。以图 8-7 为例,进行再分解,在对原有流程了解的基础上,可以得到如图 8-8 所示的

结果。


    图 8-8 是在 Context 图的基础上做的第一次分解,而在 Context 图中只有一个过程,那就是系统,将其编号为 0。而接下来对 Context 图进行的分解,其实就是对这个编号为 0的过程进行更细化的描述,在这里引入了新的过程、数据存储,为了能够区分其位置的级别,

    在这层次上的过程将以 1、2、3 为序列进行编号。由于这是对过程 0 的分解,因此也称之为 DFD 0 层图。而可以根据需要对 DFD 0 层图上的过程(编号为 1、2、3)进行类似的分解,那么就称之为 DFD 1 层图,在 DFD 1 层图中引入的新过程,其编号规则就是 1.1,1.2...,以及 2.1,2.2...,以此类推,直到完成分析工作。

    另外,这里存在一个很关键的要点,那就是 DFD 0 层图是 Context 图的细化,因此所有的输入和输出应该与 Context 图完全一致,否则就说明存在着错误。

(4)如何画 DFD。DFD 的绘制是一个自顶向下、由外到里的过程,通常按照以下几个步骤进行。

画系统的输入和输出:就是在图的边缘标出系统的输入、输出数据流。这一步其实是决定研究的内容和系统的范围。在画的时候,可以先将尽可能多的输入、输出画出来,然后再删除多余的,增加遗漏的。

画数据流图的内部:将系统的输入、输出用一系列的处理连接起来,可以从输入数据流画向输出数据流,也可以从中间画出去。

为每一个数据流命名:命名的好坏与数据流图的可理解性密切相关,应避免使用空洞的名字。

为加工命名:注意应该使用动宾短语。

不考虑初始化和终点,暂不考虑出错路径等细节,不画控制流和控制信息。

3.细化记录 DFD 部件

    为了更好地描述DFD 的部件,结构化分析方法还引入了数据字典、结构化语言及决策

树、决策表等方法。通过使用这些工具,能对数据流图中描述不够清晰的地方进行有效的补

充。其其中数据字典应用最为广泛,下面将详细说明数据字典的相关使用方法。

    数据字典技术是一种很实用、有效的表达数据格式的手段。它是对所有与系统相关的数

据元素的一个有组织的列表和精确严格的定义,使得用户和系统分析员对于输入、输出、 存

储成分和中间计算机有共同的理解。通常数据字典的每一个条目中包括以下信息。

1 名称:数据或控制项、数据存储或外部实体的主要名称,如果有别名的还应该将别

名列出来。

2 何处使用/如何使用:使用数据或控制项的加工列表,以及如何使用。

3 内容描述:说明该条目的内容组成,通常采用以下符号进行说明。=:由...构成。

+:和,代表顺序连接的关系。[ | ]:或,代表从中选择一个。{}*:n 次重复。

():代表可选的数据项。

*...*:表示特定限制的注释。

4 补充信息:关于数据类型、默认值、限制等信息。下面就是一个数据字典的实例:

客户基本信息=客户编号+客户名称+身份证号码+手机+家庭电话

客户编号 = {0...9}8

客户名称 = {字}4

身份证号码 = [{0...9}15|{0...9}18]

手机 = [{0...9}11|{0...9}12]

家庭电话 =(区号)+本地号区号 = {0...9}4本地号 = [{0...9}7|{0...9}8]

你可能感兴趣的:(结构化分析)