需求分析产生的模型使人们可以更好地理解将要建造的系统,它有助于系统分析员理解系统的信息、功能和行为,成为确定需求规格说明完整性、一致性和精确性的重要依据,奠定了软件设计的基础。

结构化分析导出的分析模型包括数据模型、功能模型和行为模型,具体形式如上图所示。该模型以"数据字典"为核心,它描述了软件使用的所有数据对象,围绕这个核心的是"实体关系图"、"数据流图"和"状态转换图"。
* 实体关系图(Entity-Relationship Diagram,ERD):作为数据建模的基础,描述数据对象及其关系;
* 数据流图(Data Flow Diagram,DFD):作为功能建模的基础,描述数据怎样转换以及转换的功能;
* 状态转换图(State-Transition Diagram,STD):作为行为建模的基础,表示系统的各种行为状态以及状态间的转换方式。
3.3.1.1 实体关系图(ERD)
数据模型包括三种基本元素:数据对象、属性和关系,它们对理解问题的信息域提供了基础。数据对象表示具有不同属性的事物,ERD用带有标记的矩形来表示。关系表示数据对象之间的相互连接,ERD用直线连接相关联的数据对象,并在直线上用带标记的菱形框来表示关系。

两个数据对象之间有以下三种关联,ERD在数据对象之间的连线上用数字或字母表示:
* 一对一(1:1):对象 A的一个实例只能关联到对象B的一个实例,对象 B的一个实例也只能关联到对象A的一个实例,如一个丈夫只能有一个妻子,一个妻子也只能有一个丈夫。
* 一对多(1:N):对象 A的一个实例可以关联到对象B的一个或多哥实例,而对象
B的一个实例只能关联到对象A的一个实例,如一个母亲可以有多个孩子,而一个孩子只能有一个母亲。
* 多对多(M:N):对象 A的一个实例可以关联到对象B的一个或多个实例,同时对象
B的一个实例也可以关联到对象A的一个或多个实例,如一个叔叔可以有多个侄子,一个侄子也可以有多个叔叔。
3.3.1.2 数据流图(DFD)
数据流图是结构化分析的基本工具,它描述了信息流和数据转换,通过对加工进行分解可以得到数据流图。第0层DFD称为基本系统模型,可以将整个软件系统表示为一个具有输入和输出的黑匣子,用一个圆圈表示。上一层DFD中的每一个圆圈可以进一步扩展成一个独立的数据流图,以揭示系统中程序的细节部分。这种循序渐进的细化过程可以继续进行,直到最低层的图仅描述原子过程操作为止。每一层数据流图必须与它上一层数据流图保持平衡和一致,因此,子图的所有输入输出流要与其父图相匹配。
DFD有四种元素,其基本符号如下图所示。

* 外部实体:与系统进行交互,但系统不对其进行加工和处理的实体,用带标记的矩形表示;
* 加工:对数据进行的变换和处理,用带标记的圆圈表示;
* 数据流:在数据加工之间或数据存储和数据加工之间进行流动的数据,用带标记的箭头表示;
* 数据存储:在系统中需要存储的实体,用带标记的双实线表示。
3.3.1.3 状态转换图(STD)
状态转换图通过描述状态以及导致系统改变状态的事件来表示系统的行为,它没有表示出系统所执行的处理,只表示了处理结果可能的状态转换。STD用带标记的圆圈或矩形表示状态,用箭头表示从一种状态到另一种状态的变换,箭头上的文本标记表示引起变换的条件。

分析建模是实现真实世界模型向计算机模型转换的核心环节,也是一种处理软件复杂性的有效手段。在需求开发阶段,分析建模的关键是针对用户需求建立抽象的分析模型,从而有助于开发人员理解用户需求,同时增强自然语言的需求规格说明。分析模型往往采用一些图形化的表示方式,从数据、功能和行为等不同角度表达用户需求。
结构化分析是面向数据流进行需求分析的方法,经过20多年的发展,已经成为广泛应用的技术之一。结构化分析方法以数据字典为核心,采用实体关系图、数据流图和状态转换图等图形来表达需求,直观明了且易于理解和掌握。其中,数据流图是结构化分析的基本工具,体现了自顶向下逐步求精的分析过程,确定了系统的任务流和数据流;实体关系图描述了系统的数据关系,从而帮助开发人员分析和理解系统数据的组成,并为系统设计阶段定义系统数据库的物理结构打下基础;状态转换图描述了系统状态之间的变化过程,它对于实时系统和控制系统尤为重要。
|