3.2 系统需求分析
简单地说,需求分析就是分析用户的要求。在需求分析阶段,系统分析员将分析结果用数据流程图和数据字典表示。需求分析的结果是否能够准确地反映用户的实际要求,将直接影响到后面各个阶段的设计,并影响到系统的设计是否合理和实用。
3.2.1 需求分析的任务和方法
需求分析的主要任务是:详细调查现实世界要处理的对象(组织、部门和企业等);充分了解原系统(手工系统或计算机系统)的概况和发展前景;明确用户的各种需求;收集支持系统目标的基础数据及其处理方法;确定新系统的功能和边界。
1.系统需求调查的内容
调查是系统需求分析的重要手段,只有通过对用户的调查研究,才能得出需要的信息。调查的目的是获得数据库所需数据情况和数据处理要求。调查的具体内容有以下3个方面。
1)数据库中的信息内容。数据库中需存储的数据,包括用户将从数据库中直接获得或者间接导出的信息的内容和性质。需求分析时,不仅要考虑过去、现在的数据,还要考虑将来应用所涉及的数据,充分考虑到可能的扩充和改变。
2)数据处理内容。包括用户要完成的数据处理功能;用户对数据处理响应时间的要求;数据处理的工作方式(是批处理还是联机处理)。
3)数据安全性和完整性要求。包括数据的保密措施和存取控制要求;数据自身的或数据间的约束限制。
2.系统需求的调查步骤
实际上,确定用户的最终需求是一件非常困难的事情。一方面用户缺少计算机专业知识,不知道计算机能做什么,不能做什么,因而不能准确地表达自己的要求;另一方面,设计人员缺少用户的专业知识,不易理解用户的真正需求,甚至可能误解用户的需求。只有两者加强交流,互相沟通,才能够较好地完成需求分析。要进行需求分析,应当先对用户进行充分的调查,弄清楚他们的实际要求,然后再分析和表达这些需求。
数据分析阶段,任何调查研究没有用户的积极参与是寸步难行的,设计人员应该和用户取得共同的语言,帮助不熟悉计算机的用户建立数据库环境下的共同概念,并对设计工作的最后结果承担共同的责任。因此,用户的参与是设计数据库不可缺少的环节。调查用户需求的具体步骤如下。
1)了解管理对象的组织机构情况。在系统分析时,要对管理对象所涉及的行政组织机构进行了解,弄清所设计的数据库系统与哪些部门相关,这些部门及下属各个单位的联系和职责是什么。
2)了解相关部门的业务活动情况。包括各部门需要输入和使用什么数据;在部门中是如何加工处理这些数据的;各部门需要输出什么信息;输出到什么部门;输出数据的格式是什么。
3)确定新系统的边界。包括哪些功能现在就由计算机完成;哪些功能将来准备让计算机完成;哪些功能或活动由人工完成。由计算机完成的功能就是新系统应该实现的功能。
3.系统需求调查的方法
计算机工作人员应当在熟悉了相关部门的业务后,协助用户提出对新系统的各种要求。这些要求包括信息要求、处理要求、安全性与完整性要求等。在系统需求调查中,用户的积极参与配合是做好调查的关键。做需求调查时,往往需要同时采用上述多种方法。
1)跟班作业。数据库设计人员亲身参加业务工作,深入了解业务活动情况,比较准确地理解用户的需求。
2)开调查会。通过与用户座谈的方式了解业务活动情况及用户需求。座谈会或调查会的参加者可以互相讨论、启发和补充。
3)请专人介绍。对于某些业务活动的重要环节,可以请业务熟练的专家或用户介绍业务专业知识和业务活动情况,设计人员从中了解并询问相关问题。
4)询问。对某些调查中的问题,可以找专人询问。
5)请用户填写设计调查表。数据库设计人员可以提前设计一个合理的、详细的业务活动及数据要求调查表,并将此表发给相关的用户。用户根据表中的要求,经过认真思考、充分准备后填写表中的内容。如果调查表设计合理,则这种方法很有效,也易于被用户接受。
6)查阅数据记录。调查中还需要查阅与原系统有关的数据记录,包括账本、档案或文献等。
4.系统需求分析方法
调查、了解了用户的需求以后,需要进一步分析和表达用户的需求。分析和表达用户需求的方法很多,常用的有结构化分析方法(Structure Analysis,SA),它是一种简单实用的方法。
SA方法是从最上层的系统组织机构入手,采用自顶向下、逐层分解的方式分析系统。SA方法可以把任何一个系统都抽象为如图3-4所示的形式。
图3-4 系统高层抽象图
图3-4给出的只是最高层次的抽象系统概貌。要反映更详细的内容,可将一个处理功能分解为若干子功能,每个子功能还可以继续分解,直到把系统工作过程表示清楚为止。在处理功能逐步分解的同时,它们所用的数据也逐级分解,形成若干层次的数据流程图。
数据流程图表达了数据和处理过程之间的关系。在结构化分析方法中,处理过程的处理逻辑常常用判定表或判定树来描述。数据字典(Data Dictionary,DD)则是对系统中数据的详尽描述。对用户需求进行分析与表达后,必须把分析结果提交给用户,征得用户的认可。
3.2.2 数据字典及其表示
数据字典是各类数据描述的集合,它是进行详细的数据收集和数据分析后所获得的主要成果。数据字典在数据库设计中占有很重要的地位。数据字典通常包括以下5个部分。
1.数据项
数据项是不可再分的数据单位,它的描述为
数据项={数据项名,数据项含义说明,别名,类型,长度,取值范围,与其他数据项的逻辑关系} 其中,“取值范围”和“与其他数据项的逻辑关系”两项定义了数据的完整性约束条件,它们是设计数据完整性检验功能的依据。
2.数据结构
数据结构的描述为
数据结构={数据结构名,含义说明,组成,{数据项或数据结构}}
数据结构反映了数据之间的组合关系。一个数据结构可以由若干个数据项组成,也可以由若干个数据结构组成,或由若干数据项和数据结构混合组成。
3.数据流
数据流是数据结构在系统内传输的路径。数据流的描述通常为
其中,“流出过程”说明该数据流来自哪个过程;“流入过程”说明该数据流将到哪个过程去;“平均流量”是指在单位时间(每天、每周、每月等)里传输的次数;“高峰期流量”则是指在高峰时期的数据流量。
4.数据存储
数据存储是数据及其结构停留或保存的地方,也是数据流的来源和去向之一。数据存储可以是手工文档、手工凭单或计算机文档。数据存储的描述通常为
数据存储={数据存储名,说明,编号,输入的数据流,输出的数据流,组成:{数据结构},数据量,存取频度,存取方式}
其中,“数据量”说明每次存取多少数据;“存取频度”指每小时或每天或每周存取几次、每次存取多少数据等信息;“存取方式”包括是批处理还是联机处理,是检索还是更新,是顺序检索还是随机检索等;“输入的数据流”要指出其数据的来源处;“输出的数据流”要指出其数据的去向处。
5.处理过程
处理过程的具体处理逻辑一般用判定表或判定树来描述。数据字典中只需要描述处理过程的说明性信息,通常包括以下内容。
处理过程={处理过程名,说明,输入:{数据流},输出:{数据流},处理:{简要说明}} 其中,“简要说明”中主要说明该处理过程用来做什么(不是怎么做)及处理频度要求,如单位时间里处理多少事务、多少数据量和响应时间要求等。
数据字典是关于数据库中数据的描述,即对元数据的描述。数据字典是在需求分析阶段建立,在数据库设计过程中不断修改、充实和完善的。
需求和分析阶段收集到的基础数据用数据字典和一组数据流程图(Data Flow Diagram,DFD)表达,它们是下一步进行概念设计的基础。数据字典能够精确和详尽地描述系统数据的各个层次和各个方面,并且把数据和处理有机地结合起来,可以使概念结构的设计变得相对容易。
图3-5是一个数据流程图的实例。图中包括外部项、存储框、处理框和数据流,它们需要数据字典对其内容进行详细说明。
图3-5 一个数据流程图的实例