结构化分析方法 SA 方法的基本思想是自顶向下,逐层分解,把一个大问题分解成若干个小问题,每个小问题再分解成若干个更小的问题。
SA 方法分析模型的核心是数据字典,围绕这个核心,有三个层次的模型,分别是数据模型、功能模型和行为模型(也称为状态模型)。在实际工作中一般使用 E-R 图表示数据模型,用 DFD 表示功能模型,用状态转换图(STD) 表示行为模型。这三个模型有着密切的关系,它们的建立不具有严格的时序性,而是一个迭代的过程。
DFD 是 SA 方法中的重要工具,是表达系统内数据的流动并通过数据流描述系统功能的一种方法。DFD 还可被认为是一个系统模型,在信息系统开发中,如果采用结构化方法,则一般将 DFD 作为需求规格说明书的一个组成部分。
DFD 从数据传递和加工的角度,利用图形符号通过逐层细分描述系统内各个部件的功能和数据在它们之间传递的情况,来说明系 统所完成的功能。具体来说,DFD 的主要作用如下:
在 DFD 中,通常会出现 4 种基本符号,分别是数据流、加工、数据存储和外部实体 (数据源及数据终点)。数据流是具有名字和流向的数据,在DFD中用标有名字的箭头表示。加工是对数据流的变换,一般用圆圈表示。数据存储是可访问的存储信息,一般用直线段表示。外部实体是位于被建模的系统之外的信息生产者或消费者,是不能由计算机处理的成分,它们分别表明数据处理过程的数据来源及数据去向,用标有名字的方框表示。
SA 方法的思路是依赖于 DFD 进行自上而下的分析。这也是因为系统通常比较复杂,很难在一张图上就将所有的数据流和加工描述清楚。因此,DFD提供一种表现系统高层和低层概念的机制。也就是先绘制一张较高层次的DFD,然后在此基础上,对其中的加工进行分解,分解成为若干个独立的、低层次的、详细的 DFD , 而且可以这样逐一地分解下去,直至系统被清晰地描述出来。看下图,圆圈就是加工,矩形是实体,箭头是数据流,两条直线是数据存储。
DFD 的绘制是一个自顶向下、由外到里的过程,通常按照以下几个步骤进行:
大多数业务系统是数据驱动的,所以适合使用 DFD。但是,实时控制系统却主要是事件驱动的,因此,行为模型是最有效的描述方式。
STD 通过描述系统的状态和引起系统状态转换的事件,来表示系统的行为。此外,STD还指出了作为特定事件的结果将执行哪些动作(例如,处理数据等)。状态是任何可以被观察到的系统行为模式,每个状态代表系统的一种行为模式。
在 STD 中,用圆形框或椭圆框表示状态,通常在框内标上状态名。状态规定了系统对事件的响应方式。系统对事件的响应可以是做一个(或一系列)动作,也可以是仅仅改变系统本身的状态。
STD 描述了系统如何在各种状态之间移动。事件是在某个特定时刻发生的事情,它是对引起系统从一个状态转换到另一个状态的外界事件的抽象。例如,内部时钟指明某个规定的时间段已经过去,鼠标移动或单击等都是事件。简而言之,事件就是引起系统状态转换的控制信息。
在 STD 中,从一个状态到另一个状态的转换用箭头线表示,箭头表明转换方向,箭头线上标上事件名。必要时可在事件名后面加一个方括号,括号内写上状态转换的条件。也就是说,仅当方括号内所列出的条件为真时,该事件的发生才引起箭头所示的状态转换。
STD 既可以表示循环运行过程,也可以表示单程生命期。当描述循环运行过程时,通常不关心循环是怎样启动的。当描述单程生命期时,需要标明初始状态(简称为 “初态”,系统启动时进入初始状态)和最终状态(简称为“终态”,系统运行结束时到达最终状态)。
在 STD 中,初始状态用实心圆表示,最终状态用一对同心圆(内圆为实心圆)表示。
DFD 描述了系统的分解,即系统由哪几部分组成,各部分之间的联系等,但是,对于数据的详细内容却无法在 DFD 中得到反映。数据字典是在DFD 的基础上,对 DFD 中出现的所有命名元素都加以定义,使得每个图形元素的名字都有一个确切的解释。
DFD 和数据字典等工具相配合,就可以从图形和文字两个方面对系统的逻辑模型进行完整的描述。
数据字典中一般有 6 类条目,分别是数据元素、数据结构、数据流、数据存储、加工逻辑和外部实体。
数据字典是所有人员工作的依据,统一的标准。它可以确保数据在系统中的完整性和一致性。
为了保证数据的一致性,数据字典必须由专人(数据管理员)管理。数据管理员的职责就是维护和管理数据字典,保证数据字典内容的完整性和一致性。任何人,包括系统架构设计师、软件设计师、程序员,如果要修改数据字典的内容,都必须通过数据管理员。数据管理员还要负责把数据字典的最新版本及时通知有关人员。