3.3 系统结构化分析方法与工具
系统结构化分析是一种简单实用的方法,它采用介于形式语言和自然语言之间的描述方式,建立起以数据流程图为核心、以数据字典和处理逻辑说明为补充说明工具的新系统的逻辑模型。
3.3.1 自顶而下分析法
“自顶而下,逐层分解”的基本原则,是系统分析阶段的最核心内容。一个系统的数据流程图不是一张纸,而是一组图。它是从顶层的数据流程图逐层进行分解,直至分解到不能再分解的一个单位。
分解时分层进行,先考虑问题最本质的属性,暂时略去具体细节,以后再逐层添加细节,直到最详细的内容。把大问题分解成小问题,然后分别解决,这就是自顶而下分析法的精髓所在。
3.3.2 业务流程分析
以功能为基点分析问题,系统则会相对于组织的变化而有一定的独立性,即可获得较强的生命力。所以在分析组织情况时还应该画出其功能一览表。这样做可以使人们在了解组织结构的同时,对于依附于组织结构的各项业务功能也有一个概貌性的了解,也可以对于各项交叉管理、交叉部分各层次的深度及各种不合理的现象有一个总体了解。
调查管理业务流程应顺着原系统信息流动的过程逐步地进行,内容包括各环节的业务处理、信息来源、处理方法、计算方法、信息流经去向、信息提供的时间和形态。业务流程分析可以帮助了解业务的具体处理过程,发现和处理系统调查工作中的错误和疏漏,修改和删除原系统中的不合理部分,在新系统的基础上优化业务处理流程。描述管理业务流程的图标工具主要有管理业务流程图和表格分配图。虽然目前在有些信息系统开发方法中已不再使用它们,用物理数据流程图直接替代,或采用UML中的活动图,但是仍有部分系统分析员看重它们的简单、易懂和消除歧义等特点,在开发中应用这些工具。
1.业务流程分析的目的与任务
在对现行系统的组织结构和功能进行分析时,需要将详细调查中有关某项业务流程的资料从业务流程的角度串起来以便做进一步的分析。业务流程分析可以帮助系统分析人员了解该业务的具体处理过程,发现系统调查中的错误和疏漏,修改现行系统的不合理部分,优化业务处理流程,为目标系统的开发打下基础。
业务流程图(TFD,Transaction Flow Diagram)是业务流程分析所使用的图形工具,它是用一些规定的符号和连线来表达某个具体业务处理过程。可以认为,业务流程图是在业务功能的基础上将其细化,利用系统调查的资料,用一个完整的图形将业务处理过程中的所有处理步骤串联起来。绘制业务流程图是业务流程分析的重要步骤。
2.业务流程图的基本符号
图3.2 业务流程图的常用符号
业务流程图用来描述企业的业务处理过程,其基本图形符号尚未统一,常用的符号如图3.2所示,有关符号的内部解释用文字填入相应的框内。
3.业务流程图的绘制
业务流程图是按照业务的实际处理步骤和过程绘制的。在绘制业务流程图时,要依据业务调查的语义描述进行分析。
在调查中对现行系统的信息处理过程进行分析、归纳、整理和简化描述,以利于获取现行系统的主要信息。在调查中还应注意以下3 点:① 在调查前可先对企业内有关的管理人员、业务人员进行系统开发前的短期培训,使他们对项目的开发有正确的认识,从而得到他们的积极配合与支持。② 应与被调查的不同层次的业务负责人一起完成业务流程的描述、数据的分类和综合,对业务流程及信息流程的描述一定要得到他们的认可。③ 对调查结果要分别描述,用文字来说明企业的生产经营情况,用图表来描述各业务部门的业务流程及信息流程。
例如,某学校的学籍管理业务流程图,如图3.3所示。
图3.3 某学校的学籍管理业务流程图
3.3.3 数据流程分析
数据是信息的载体,也是信息要处理的对象。因此,必须对现行系统调查中所收集到的数据及处理数据的过程进行分析和整理。数据流程分析是今后建立数据库系统和设计功能模块处理过程的基础。
1.数据流程分析的内容
数据流程分析是把数据在组织内部的流动情况抽象地独立出来,舍去了具体的组织机构、信息载体、物质和材料等,单从数据流动过程来考查实际业务的数据处理模式。数据流程分析的目的就是要发现和解决数据流通中的问题,这些问题包括数据流通不畅、前后数据不匹配和数据处理过程不合理等。而这些问题,有些是属于数据处理流程的问题,有些是属于原系统管理混乱的问题。一个通畅的数据流程是目标系统实现业务处理过程的基础。
数据流程分析的任务包括以下内容。
(1)收集现行系统的全部输入单据和报表、输出单据和报表及数据存储介质(账本和清单等)的典型格式。
(2)明确各个处理过程的处理方法和计算方法。
(3)调查、确定上述各种单据、报表、账本和清单的制作单位、报送单位、存储单位、发生频率、发生的高峰时间和高峰度等。
(4)注明各项数据的类型、长度和取值范围等。
数据流程图(DFD,Data Flow Diagram)是数据流程分析所使用的主要工具之一。数据流程图用少量几种符号综合地反映出信息在系统中的流动、处理和存储情况。数据流程图具有抽象性和概括性的特点。数据流程图的抽象性是指它完全舍去了具体的物质,只保留了数据的流动、加工、处理和存储;数据流程图的概括性是指它可以把信息中的各种不同业务处理过程联系起来,形成一个整体。无论是手工信息处理或是计算机信息处理,都可以用数据流程图表达出来。
2.数据流程图的基本符号
数据流程图由4个基本符号组成。这4个符号分别代表外部实体、数据处理、数据流和数据存储。
1)外部实体
外部实体是指系统之外的,与系统有联系的人或事物。外部实体也可以是另外一个信息系统。外部实体是系统数据的来源和去处,它们和本系统都有着系统传递关系。
在数据流程图中用一个圆圈表示外部实体,如图3.4(a)所示。在圆形内部可以写上该外部实体的名称。在数据流程图中,为了避免线条的交叉,同一个外部实体可在一张数据流程图上出现多次。
在绘制某一个子系统的数据流程图中,凡是属于该子系统之外的人或事物,也都被列为该子系统的外部实体。
2)数据处理
数据处理是对数据的逻辑处理,也是数据的变换过程。输入数据在此进行变换产生输出数据。在数据流程图中用一个矩形框来表示数据处理,如图3.4(b)所示。
为了方便处理,在矩形框的上部填写唯一标示该处理的符号标志,一般用字符串表示;在矩形框的下部填写该数据处理的简单描述,一般是用一个动词加上一个做动词宾语的名词表示,如统计生产量等。
3)数据流
数据流表示流动着的数据,是处理功能的输入和输出。数据流可以是一项数据,也可以是一组数据。它可以用来表示对数据文件的存储操作,在数据流程图中用一个带箭头的线段来表示数据流,如图3.4(c)所示。
在数据流程图中用一个带箭头的线段来表示数据流,对每个数据流加以简单地描述,通常在数据流符号的上方标明数据流的名称。一些含义十分明确的数据流也可以不加说明。
图3.4 数据流程图的基本符号图
4)数据存储
数据存储是指通过数据文件和文件夹等存储数据。这里指的是数据存储的逻辑描述,与保存数据的物理地点和物理介质无关。
在数据流程图中一般用右端开口的长方条来表示数据存储,如图3.4(d)所示。同样,为了方便区分,在长方条的内部偏左加上一条竖线,竖线的左边填写唯一标示该数据存储的符号标志,用字符串来表示;竖线的右边写上数据存储的名称。
需要注意的是,在数据流程图中,指向数据存储的箭头,表示送数据到数据存储,即对数据存储的改写和存放等;离开数据存储的箭头,表示从数据存储中读取数据。
3.数据流程图的绘制
数据流程分析的根本目的是分析出合理的信息流动、处理和存储的过程。无论是采用HIPO(Hierarchy Input-Processing-Output)法还是采用SA(System Analyst)法,其基本思想是一样的。先把系统看成一个大整体,作为一个大的功能,明确系统的输入和输出;系统为了实现这个整体功能,内部必然有信息的处理、传递和存储的过程。按照此思想,自上而下,逐层分解,一级一级地剖析,直到所有的处理步骤都具体到可以实现为止。
例如,在学校管理信息系统中,首先,根据学生管理的业务流程图找出与学生管理系统相关的主要外部实体:党总支、院办公室、用人单位、学生和辅导员。学生管理信息系统的顶层数据流程图如图3.5所示。
图3.5学生管理信息系统的顶层数据流程图
其次,再把学生管理信息系统分为档案管理、成绩管理、奖惩管理和综合测评管理4个部分,即学校管理信息系统的二层数据流程图,如图3.6所示。
图3.6 学校管理信息系统的二层数据流程图
最后,进行第三层流程图的设计。
1)成绩管理的数据流程图
在学生管理信息系统流程图设计中,首先分解学生管理系统里面的成绩管理部分,这部分的处理过程是通过院办公室的教学和考试,然后通过任课老师提供的各科考试结果统计成绩,据此判断学生的重修情况,将成绩单寄给学生,再以学习文档的形式给辅导员评奖学金备用,同时,通过成绩管理系统生成的学习文档也为奖惩管理和档案管理提供原始数据,并自动存储在学籍表中。成绩管理的数据流程图,如图3.7所示。
图3.7 成绩管理的数据流程图
2)奖惩管理的数据流程图(见图3.8)
图3.8 奖惩管理的数据流程图
3)档案管理的数据流程图(见图3.9)
图3.9 档案管理的数据流程图
4)综合测评管理的数据流程图(见图3.10)
图3.10 综合测评管理的数据流程图
4.数据流程图绘制的注意事项
数据流程图具有图形符号少、通俗易懂和直观等特点,是系统分析员与用户交流思想的工具。在数据流程图的绘制中,要随时与业务人员进行讨论和分析,对所绘制的数据流程图进行补充和纠正,直到得到用户较为满意的数据流程图。
在绘制数据流程图中还要注意以下事项。
1)划分层次,逐层分解
为了表达数据处理过程中的数据加工过程,只用一个数据流程图是不够的。稍微复杂的实际问题,出现在数据流程图中的加工常常要十几个甚至几十个。把这些加工处理放在一张数据流中看起来很不清楚,杂乱无序。解决的方法是采用分层的数据流程图。在数据流程图的绘制中,按照系统的层次结构进行逐层分解,以分层的数据流程图反映系统的层次结构,这样就能清楚地表达整个系统,也让读者容易理解。
顶层数据流程图概括地描述出了信息系统最主要的逻辑功能、最主要的外部实体和数据存储,它反映了系统与外界环境的接口。顶层图的作用在于表明目标系统的范围,以及目标系统和周围环境的数据交换关系,为逐层分解打下基础。但顶层图并未表明数据的加工处理情况,需要进一步细化。
逐层扩展数据流程图是对上一层数据流程图中某些处理框加以展开。随着处理框的逐步展开,功能越来越具体,数据存储、数据流也越来越多。这样得到的多层数据流程图可以十分清晰地表达整个信息系统的数据加工处理情况。对某一层数据流程图来说,它的上一层数据流程图称为它的“父图”,它的下一层数据流程图称为它的“子图”。必须注意,子图是父图中某个处理框的展开,因此,凡是在父图中与这个处理框有关系的外部实体、数据流和数据存储必须在子图中反映出来,以保持各层数据流程图之间的平衡关系。
2)数据流程图的正确性检查
数据流程图是系统分析阶段最主要的表达工具之一,其正确与否直接关系到整个信息系统开发的质量。因此,保证数据流程图的正确性十分必要。
通常从以下4个方面来检查数据流程图的正确性。
(1)任何一个处理至少有一个输入数据流和一个输出数据流。输入数据流与输出数据流必须相互匹配,以保持数据守恒。如果是某个处理过程产生输出数据,但是没有输入数据,则肯定是某些数据流被遗漏了。反之,如果某个处理过程不产生任何输出数据,那么可以认为这个处理过程是没有任何意义的。还有一种情况是,某些输入数据在处理过程中并没有被使用到,这不一定是错误,但也要追溯到这种情况的原因,探讨是否可以简化。
(2)任何一个数据存储,都必定有流入的数据流和流出的数据流。对数据存储来说,流入的数据流代表着对数据文件的写操作,流出的数据流代表着对数据文件的读操作。任何数据存储都必定有读/写操作。如果在数据流程图中,某一个数据存储缺少流入的数据流或者流出的数据流,都意味着某些加工处理被遗漏了。
(3)任何一个数据流至少有一端是处理框。数据流是指处理功能的输入和输出。也就是说,数据流不能从外部实体直接到数据存储,也不能从数据存储直接到外部实体,也不可能在外部实体之间或者是数据存储之间流动。
(4)图中某一处理框的输入数据流、输出数据流必须出现在相应的子图中。在这方面比较容易出现错误,特别是在对父图和子图进行了某种修改后。子图可以包括比父图更详细、更复杂的数据流、数据存储和外部实体,但在父图中出现的数据流、数据存储和外部实体必须在子图中全部出现,否则会出现父图和子图的数据不平衡。
3.3.4 数据字典
数据流程图描述了系统的“分解”,即描述了系统由哪几部分组成,各部分之间有什么联系,系统数据流向和加工等情况,但是并没有说明系统中各个成分是什么含义,或者说各个成分的具体含义仍然不清楚或不明确,而只有当数据流程图中所出现的每个成分都给了明确的定义之后,才能完整、准确地描述一个系统。因此,还需要其他的工具对数据流程图进行补充说明。
1.数据字典的作用
数据字典(DD,Data Dictionary)是在系统数据流程图的基础上,进一步定义和描述所有的数据项、数据结构、数据存储、处理过程和外部实体的详细逻辑内容与特征的工具。数据流程图和数据字典等工具相互配合,就可以从图形和文字两个方面对系统的逻辑模型进行完整的描述。
数据字典的任务是对于数据流程图中出现的所有命名元素都在数据字典中作为一个条目加以定义,使得每个图形元素的名字都有一个确切的解释。因此,建立数据字典的工作量很大,相当烦琐,但这是一项必不可少的工作。数据字典在系统开发中具有十分重要的意义,不仅在系统分析阶段要使用它,在系统的整个研制过程中及系统运行中都要使用它提供帮助。
2.数据字典的条目
数据字典共有6个条目,不同类型的条目需要描述的属性各有不同。
1)数据项
数据项又称数据元素,是数据的最小单位。分析数据特征应从静态和动态两个方面进行,而在数据字典中,仅定义数据的静态特征。对数据项的描述,应该包括如下属性。
(1)数据项名称:名称要尽量反映该数据项的含义,便于理解和记忆。
(2)数据项编号:对系统中的所有数据项应统一编号,方便查找。
(3)别名:一个数据项的多个名称。
(4)数据项类型:说明数据项取值是字符型或是数字型。
(5)数据项长度:组成该数据项的数字或字母的位数。
(6)数据项取值范围和取值的含义:数据项可能取什么值和每个值代表的意义。
图3.11所示是数据项条目的一个例子。
图3.11 数据项条目
2)数据结构
数据结构用于描述某些数据项之间的关系。一个数据结构可以是由若干个数据项组成的,也可以是由若干个数据结构组成的,还可以是由若干个数据项和数据结构组成的。数据结构是个递归概念。
数据字典中对数据结构的描述应该包括如下属性。
(1)数据结构的名称。
(2)数据结构的编号。
(3)数据结构的简要说明。
(4)数据结构的组成。
数据结构的重点是数据结构的组成。数据结构可以包括若干个数据项和数据结构。这些数据之间的组合关系有3种特殊情况。
(1)任选项:指那些可以出现,也可以省略的项。
(2)必选项:指那些在两个或者多个数据项中,必须选择其中一个的项。
(3)复选项:指那些可以多次出现的数据项。
图3.12所示是数据结构条目的一个例子。
3)数据流
数据流由一个或一组固定的数据项组成。定义数据流时,不仅要说明数据流的名称、数据流编号和简要说明,还应包括以下属性。
(1)数据流的来源。
(2)数据流的去向。
(3)数据流的组成。
(4)数据流的流通量。
图3.12 数据结构条目
图3.13所示为以学生成绩表为例的数据流条目。
图3.13 数据流条目
4)数据存储
数据存储中只描述数据的逻辑存储结构,而不涉及它的物理组织。有两种类型的数据存储,一种是文件形式,另一种是数据库形式。对于文件形式,其定义包括定义文件的组成数据项和文件的组织方式两项内容,其中文件组成数据项的定义方式与数据流的定义方式相同。
以毕业生信息表为例,图3.14所示是相关数据存储条目。
图3.14 数据存储条目
5)处理逻辑
处理逻辑的定义仅对数据流程图中底层的处理逻辑加以说明。数据字典中只需列出基本加工的定义即可,因为任何一个加工最后总能分解成一些基本加工,只要有了基本加工的定义,就可以理解其他加工。它是用简短的自然语言对数据处理过程的高度概括,而并不是具体的逻辑处理。
以填制毕业生登记表为例,图3.15所示为相应的处理逻辑条目。
图3.15 处理逻辑条目
6)外部实体
外部实体是信息系统数据的来源和去向。在数据字典中对外部实体的描述应包括:外部实体编号、名称、简述说明及有关数据流的输入和输出。另外,外部实体的数量对于系统的业务量有参考作用,也应该在条目中加以说明。
如对“学生”这个外部实体的定义,图3.16所示即外部实体条目。
图3.16 外部实体条目
3.数据字典的使用和管理
数据字典的建立有两种方式,既可以由手工方式生成,也可以由计算机自动生成。手工方式是将上面所介绍的格式写在卡片上或者写在纸上,并分类建立一览表。计算机方式是在手工方式的基础上,整理、存储在计算机中,由软件进行管理,查询和修改都十分方便。而对于规模较小的系统,采用手工方式是比较合适的选择。
数据字典实际上是“关于系统数据的数据库”。在整个系统开发阶段及系统运行维护阶段,数据字典是必不可少的工具。在系统分析的过程中,使用数据字典可以方便地通过名称去查询数据的定义,同时也可以按照各种要求随时列出各种表,以满足分析员的需求。使用数据字典,也可以反过来,由描述内容去查询数据的名称。
数据字典可以确保数据在系统中的完整性和一致性。例如,通过检查各类条目的规定格式,可以发现以下问题:① 是否存在没有指明来源和去向的数据流。② 是否存在没有指明所属数据存储或者所属数据流的数据项。③ 处理逻辑与输入的数据项是否匹配。④ 是否存在没有输入或者输出的数据存储。
数据字典必须有专人管理。数据管理员的职责就是维护和管理数据字典,保证数据字典内容的完整性和一致性。任何人包括系统分析员、系统设计员和程序员,若要修改数据字典的内容,都必须通过数据管理员。数据管理员还要负责把数据字典的最新版本及时通知给有关人员。