第三节 信息系统分析的辅助工具
一套数据流图描述了一个系统的逻辑模型,但是有关数据流图的所有细节还要依靠其他文档来加以描述,如用数据字典描述数据流图中的数据流、数据存储等细节,而在过程描述中表述数据的加工处理细节。
一、数据字典
数据字典是信息系统关于系统数据的中心存储仓库。数据字典用来收集、存档、组织有关系统的具体事实,包括数据流、数据存储、外部实体等详细的内容。数据字典还定义和描述数据项和数据项的组合。数据项是信息系统中有意义的最小单位的数据。数据项可组合成记录或数据结构,记录是有关数据项的有意义的组合,它存在于数据流或数据存储。
例如,“成绩”、“工资”、“社会保险号”、“账户余额”、“公司名称”等是数据项。而一张“汽车配件存货单”记录包含了数据项“零部件号”、“规格”、“供应商编号”、“库存量上下限”、“成本”、“报价”。所以“汽车配件存货单”是一个组合的数据项。
注意,数据存储和数据流是以数据结构为基础并由数据项组成的。数据流连接数据存储、外部实体、处理等。
数据字典描述了系统中的数据项、数据流、数据存储、外部实体等相关数据的定义、性质、功能、作用等。
1.数据项描述
数据字典中的每个数据项必须进行描述。可使用标准格式定义数据项,也可使用某些工具(如CASE软件)来记录相同的信息。
在数据字典中描述的有如下内容。
(1)数据项名或编号:数据项的名称,它对用户来说应是有意义,且易于记忆的。
(2)可选名:数据项标准名称之外的可选名称,又称别名。例如,有一个名为“当前余额”的数据项,不同的用户可使用其他别名,如,“客户余额”、“欠款总额”、“应收账款余额”等。
(3)类型和长度:类型是指数值型、字符型、逻辑型等;长度是指字符的最大长度,对于是数值型的最大值要加上小数甚至还要加上小数点的最大位数。除了文本和数值等以外,声音和图像也可以数字的方式存储。在一些系统中,这些二进制数据对象的管理和处理同其他数据类型对象一样。例如,一个“员工”记录可以包含该员工的数字化相片。
(4)输出格式或编辑掩码:用户打印输出或在屏幕上显示数据项的格式。例如:电话号码可以被存储为91912345678,但是它的输出格式为(919)12345678。
(5)缺省值:当没有输入任何值时数据项的默认值或初始值。例如,对于所有的新客户的“信贷限额”,数据项的初始的默认值都是¥500。
(6)提示、列标题或字段名:当信息系统输出数据项时,提示、列标题或字段名将显示在屏幕上。
(7)源:数据项值来源的说明。源可以是一份表格、一个部门、外部组织、另一个信息系统以及计算的结果。
(8)安全性:个人或部门在存取或更新数据项时的权限表示。任何人都必须在其规定的权限范围内使用该数据。
(9)负责的用户:标识应负责输入或更新数据项的用户。
(10)数据的有效性和有效范围:它指定了哪些有效的数值可以赋予数据项,数据项的取值范围。例如:员工的工资必须在其工资等级范围之内。
(11)派生的公式:如果数据项的值是计算的结果,应指明计算公式。
(12)注释:它是数据项描述的一部分,可以提供附加的定义和描述。
2.数据流描述
除了数据项描述以外,还必须对数据字典中的每个数据流进行描述。对数据流的描述可以用标准格式或软件工具来定义。尽管不同的软件工具使用不完全相同的术语,但是每个数据流却有着共同的特性,都需要对这些共性加以描述。
(1)数据流名或编号:它就是写在数据流图上的数据流的名称。
(2)可选名:数据流的别名。
(3)简写或标识:这是数据流名称的代码,在自动化的数据字典中可以用来快速地存取某个数据流。
(4)描述:它描述了数据流的内含和作用。
(5)源:数据流的开始处或是源头。源头可以是处理、数据存储、外部实体。
(6)目的地:数据流在数据流图中的终点。目的地可以是处理、数据存储、外部实体。
(7)记录:每个数据流表示一组相关的数据项。在许多数据字典中,记录的定义是独立于数据流和数据存储的。
(8)容量和使用频率:它描述了数据流在单位时间内可能被使用的次数,以及总容量。
3.数据存储描述
在数据流图中并没有对各个数据存储进行描述。因此在数据字典中就要定义数据存储的各种特性。一个数据存储的典型特性如下所述。
(1)数据存储名称:它就是在数据流图中使用的数据存储名。
(2)可选名:数据存储的别名。
(3)简写或标识:它是数据存储名称的代码,在自动化的数据字典中可以帮助快速地存取一个数据存储。
(4)描述:它描述数据存储的内含和作用。
(5)输入数据流:流入数据存储的数据流名称。
(6)输出数据流:流出数据存储的数据流名称。
(7)记录:在数据字典中数据存储的记录名称。
(8)容量和使用频率:它描述了存储在数据存储中记录的大致容量,以及数据存储的增长和更新速度。
4.外部实体描述
信息系统加工的数据来源于系统的外部实体。因此作为一个完整的数据字典还需要包含对外部实体的描述。外部实体的典型特性如下所述。
(1)外部实体名:它是在数据流图中使用的外部实体的名称。
(2)可选名:它是外部实体的别名。
(3)描述:它说明外部实体的内含和主要作用。
(4)输入数据流:它是流入外部实体的数据流名。
(5)输出数据流:它是流出外部实体的数据流名。
(6)在信息系统的文档中,数据字典如同是一个中央存储仓库。除了描述和说明每个数据项、数据流、数据存储、外部实体等特性以外,数据字典还描述了这些成分的相互关系。可以从数据字典中获得许多有价值的报告,例如:
●所有数据项按照名称排序的清单。
●必须被某个部门更新的数据项的报告。
●使用某个数据项的数据流和数据存储的报告。
●数据项、记录、数据流、处理或别的数据字典中的任一条目的特性的详细报告。
二、过程描述
每个数据流图的单一功能处理代表一个特殊的过程,必须对每个单一功能的处理进行描述,以便得到信息系统完整的逻辑模型。在对单一功能处理进行描述时,要力求做到简洁、精确、完整。
在处理过程的描述中,往往使用模块化设计思想对单一功能处理的细节进行描述。模块化设计主要由3个逻辑结构组成。顺序结构:按线性的顺序,一个接一个地执行处理步骤;选择结构:按条件的判断结果来决定执行哪个处理步骤;循环结构:处理步骤一直循环执行,直到循环的条件判断为“假”。3种逻辑结构的流程如图8 11所示。
结构化分析的所有处理描述工具都是基于上述3种逻辑结构的。最常用的处理描述工具是结构化语言、决策表、决策树。
1.结构化语言
结构化语言可以清晰地、精确地描述逻辑处理过程。当使用结构化语言时,必须遵循以下规则。
●只使用顺序、选择、循环这3种程序结构;
●使用缩进格式,以增强可读性;
●使用有限的词汇,包括在数据字典中的标准术语以及说明处理过程的特定词汇。
表8 1是一个结构化语言描述加工逻辑的例子,用来说明“核对订单”的处理过程。
读者不妨用DFD来对此加工逻辑进行描述,并请与结构化语言的描述进行比较,以体会两者的优劣。
结构化语言很像在设计程序时所用的伪代码。结构化语言和伪代码的不同之处在于前者表达逻辑处理,它必须被用户所理解,后者只需被程序员理解就可以了。
图8 11 3种逻辑结构的流程
表
8 1 “核对订单”处理过程
注意:在结构化语言中,汉语单词是来自数据字典中定义的术语,它用来确保处理描述和数据字典的一致性。其他术语,如for each、if、output等是用来描述处理的逻辑。如果按照这种结构化语言的规则来写,用户就容易理解处理描述了。此外,遵循这样的规则对于根据处理描述而继续设计信息系统的分析员和程序员来说也不会产生误解。
2.决策表
决策表是通过把每个条件都一一罗列出来,然后根据所罗列的条件进行各种可能的组合,以此来表示加工的逻辑结构。
仍以表8 1所示的例子来学习决策表的应用。从结构化语言的描述来看,当“信用状态”是“OK”,并且库存中有“产品”就可以接受订单,其他任何情况下都是拒绝订单的。表8 2给出了“核对订单”的决策表描述。
表8 2 “核对订单”的决策表描述
从表8 2中可以看到,决策表由4部分构成。如表8 3所示。其左上角是基本的条件区域,在这里需要将每一个基本的条件一笔一笔地罗列出来。右上角是实际上可能会出现的情况。这些情况实际上就是左边基本条件的不同情况的组合。在本例中,由于只有两个基本条件,而
表8 3 决策表的构成
这两个条件分别有各自的两个方面,因此组合后有4种实际的情况出现。左下角是基本的行动区域,在这里罗列出每个要采取的基本行动。在本例中就是“接收订单”和“拒绝订单”。表中的右下角是根据具体的情况所采取的具体决策行动。显然,只要能够将各个基本的条件罗列出来,一般就可以写出不同的条件组合,而这些组合的条件往往可以代表实际中可能会出现的某种情况。请读者考虑:在实际情况中,会不会出现两种或两种以上的条件组合(即具体的情况同时满足多个规则)?
有了决策表,具体的加工处理就可根据表中右下角的决策行动写出相关的加工逻辑。本例的加工逻辑如表8 1所示。
如果在需求分析时,根据实际情况,可能会增加一些新的基本条件,即原来的处理没有这一功能,现在由于业务的发展需要增加一个新的功能。假设在本例中,部门的经理可以根据实际情况对客户的信用状况进行调整。这增加了一个基本的条件,其他的基本条件不变,所采取的决策行动是在原有的基础上增加一些新行动,所制作的决策表如表8 4所示。
表8 4 “核对订单”决策表
从表8 4中可以发现,只要增加一个基本条件,那么相关的条件组合就会成倍地增加。因为本例中每个条件有两种可能的值,所以当增加一个新的条件时,规则数目就会翻一倍。这里,一个条件有两个规则,两个条件有4个规则,3个条件有8个规则等等。由于增加一个基本条件,组合条件就会成倍地增加,组合条件所代表的实际情况也会越来越复杂,因此当基本的条件达到一定数量以后,决策表就会变得非常庞大,这时反而不利于对各种情况进行分析,特别是尽量不能遗漏各种组合条件。所以决策表的应用应该是适可而止的。
有了如表8 4所示的决策表以后,如果按照该表来考虑相关的加工处理可能会比较复杂。通过仔细观察,可以发现如表8 4所示的决策表可以在不影响其加工逻辑的情况下做一些简化。在表8 4所示的决策表中,规则1和规则2可以合并,因为在“信用状态”是“OK”的情况下,“经理调整信用”实际上没有什么意义,这些值也就没必要了;同样,如果库存中没“产品”,“信用状态”的值是什么也无关紧要了。所以,原表中规则3、规则4、规则7、规则8也可以合并。最后,8种可能性的表格简化成只有4种逻辑组合,如表8 5所示。
表8 5 简化后的“核对订单”决策表
根据表8 5所示的条件,可以得到如下的加工逻辑:
IF信用状态=“OK”AND产品清单=“库存有货”OR;
信用状态<>“OK”AND产品清单=“库存有货”AND经理调整信用状况;
THEN接收订单;
ELSE拒绝订单。
实际上逻辑判断条件还可以进一步简化成:
IF产品清单=“库存有货”AND
(信用状态=“OK”OR信用状态<>“OK”AND经理调整信用状况);
THEN接收订单;
ELSE拒绝订单。
请读者考虑:在表8 4中,是否还有其他的规则合并方法?如果有,简化后请写出其加工逻辑,并与上述的加工逻辑进行比较。
在进行规则简化时,必须仔细地审查每个条件和结果的组合。如果有3个条件,但是只有一个或两个能产生结果,剩下的没起作用,那么可以用“—”符号来表示无用的规则,然后加以整理。
从例子中可以看到,决策表通常是描述复杂条件组合的比较好的方法。它不仅通俗易懂,而且建表也容易方便。
3.决策树
决策树是把决策表中的条件、结果、规则用图形化的方式表达出来。它与自然界中的树一样,决策树也有树根、树枝和树叶。所不同的是,决策树是一棵水平生长的树。决策树用来显示逻辑结构,是向管理层展示信息系统的一个好方法。可以认为,决策树和决策表是等价的,只是表达的方式不同而已。
决策树的生长是从左向右的。最左边的是树根,各个条件处在不同的分枝上,最右边的是结果。图8 12所表示的就是表8 2所示的决策表的加工逻辑。同样,这个例子中有两个条件,即“信用状况=OK?”和“产品清单=库存有货?”,有4个结果,所以在树的最右边有4个表示结果的树枝。
图8 12 决策树(表
8 2)的加工逻辑
如果考虑经理调整信用状况的条件,可以加在有无库存的后面,也可以放在信用的后面。请读者完成图8 13所示的剩余部分。
图8 13 “核对订单”的决策树
以上所学习的分析工具既可以用来开发一个信息系统的逻辑模型,也可以用来开发一个信息系统的物理模型。下一章就要学习系统需求是如何被实现的,即建立起一个新的信息系统的物理模型。
在系统分析阶段,需要尽力理解一个当前系统的模型,而不论该系统是否为人工系统,还是计算机的信息系统,有了当前系统的模型,就可以理解目前的任务是如何实现的。许多系统分析员在处理新系统的逻辑模型之前,都会建立一个目前系统的物理模型。然后,从该物理模型中抽象出目前系统的逻辑模型;再添加新系统的新需求,获得新系统的逻辑模型;最后,再考虑新系统如何实现,得到新系统的物理模型。整个过程用DFD表述就如图8 14所示。
图8 14 新系统物理模型的实现过程
在开发一个信息系统时如果遵循这样的顺序,将会得到4个模型的集合:目前系统的物理模型、目前系统的逻辑模型、未来系统的逻辑模型和未来系统的物理模型。有这4个模型的主要好处就是在修改目前或改进目前系统之前,开发人员能够对目前系统的功能有一个更好的理解。因为在系统开发中,早期的错误随着开发的不断深入会被“放大”,由此导致用户不满,并且需要投入额外的费用。另一个好处是未来系统的需求常常是建立在目前系统的基础之上的,尤其是当系统的更新是基于新的计算机技术而不是大量新的需求时,这一点表现得更加明显。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。