需求分析师在需求调研分析工作中经常会用到各种分析方法,但对各种建模方法没有体系化的认识,经常讲概念混淆。本文从常用的结构化分析方法和面向对象分析方法着手,对各种建模方法进行梳理,帮助理解其含义及作用。
  1  建模概述
  1.1  什么是建模?

  建模就是采用表格化、图形化、公式化的方式,将系统的构成及其构成间的关系呈现给人们的一种技术方法。可能是因为软件本身的不可见,使得软件的建模也显得抽象,但在平常生活中,建模随处可见,比如盖房子,需要画图纸,画图纸就是建模的过程,而图纸就是建模产出的模型。在楼盘预售时,房子都还没建好,地产商会先做个缩小版的原型出来,甚至做个样板房让顾客有直观的感受,这个也是建模。当房子卖出去了,屋主需要装修了,找装修公司设计,设计师根据屋主需要设计一套图纸,甚至细到水电的走线,这些也是建模。因此将开发软件比作盖房子,其建模过程就相当于绘制图纸的过程。
  可以说对软件系统进行建模的目的是帮助我们按照实际情况或按我们需求的样式对系统进行可视化;提供一种详细说明系统的结构或行为的方法;给出一个知道系统构造的模板;对我们所作出的决策进行文档化。
  1.2  建模演变历程
  软件建模并不是从来就有的,而是随着软件工程的发展而不断演变。主要经过了三个阶段。
  第一阶段:程序=数据结构+算法
  出现于20世纪50~60年代,软件开发主要解决的是科学计算问题,Fortran语言是其代表。其建模关键点是选择合适的数据结构和算法。
  第二阶段:结构化分析方法
  出现于20世纪60~70年代,将解决一些与数据处理相关的问题,例如计费等。COBOL、C语言是其代表。其建模关键点有两方面,一是确定有哪些数据,格式是什么,如何存储,主要通过E/R模型表达;二是确定数据的加工、处理过程,主要通过DFD(数据流图)表达。
  第三阶段:面向对象分析方法
  出现于20世纪80~90年代,信息系统覆盖了更多业务过程,数据不再是唯一的视角,事(业务流程)、人的视角越来越重要,因此加入更多这方面的建模工具。
  目前结构化分析方法和面向对象分析方法仍广泛应用。
  2  结构化分析方法
  结构化分析方法(Structured Analysis,简称SA)是将待解决的问题看做一个系统,从而用系统科学的思想方法(抽象、分解、模块化)来分析和解决问题,并基于功能分解设计系统结构,通过不断把复杂的处理逐层分解来简化问题,其最核心思想是自顶向下的分解。
  结构化分析方法模型如下图所示:

  ● 数据字典是模型的核心,是关于数据的信息集合,也就是对数据流图中包含的所有元素定义的集合。对于数据流图中出现的所有被命名的图形元素加以定义,使得每个图形元素的名字都有确切的解释。
  ● 实体关系图(ER图):描述数据对象间的关系,用于数据建模。
  ● 数据流图(DFD图):描述了数据流在系统中流动的过程,以及对数据流进行变换的功能,用于功能建模。
  ● 状态迁移图(STD图):描述了对外部事件的响应方式,表示了系统的各种行为模式(称为状态)以及在状态间进行变迁的方式,用于行为建模。
  可见,结构化分析方法包含3层建模,数据建模、功能建模以及行为建模。
  2.1  数据建模——ER图
  数据模型是为了把用户的数据要求清晰明确地表达出来所建立的一个概念性的模型,也称为概念模型,因此数据建模也称为概念建模。概念性模型是一种面向问题的数据模型,是按照用户的观点来对数据和信息进行建模。它描述了从用户角度看到的数据,也反映了用户的现实环境。
  数据建模的目标是为了明确下列与数据处理相关的特定问题:
  ● 系统处理哪些主要的数据对象?
  ● 每个数据对象的组成如何?
  ● 哪些属性描述了这些数据对象?
  ● 这些数据对象当前位于何处?
  ● 数据对象之间的关系?
  ● 数据对象和变换它们的处理之间有哪些关系?
  数据模型常用ER图表示,ER图也称实体关系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法。用矩形表示实体型,矩形框内写明实体名;用椭圆表示实体的属性,并用无向边将其与相应的实体型连接起来;用菱形表示实体型之间的联系,在菱形框内写明联系名,并用无向边分别与有关实体型连接起来,同时在无向边旁标上联系的类型(1:1,1:n或m:n)。ER图示例如下图所示,具体绘制方法不做详细说明。

  另外,对于设计方面的数据建模包括概念建模、逻辑建模和物理建模,而需求分析中的数据建模相当于设计中第一阶段的概念建模。由于是设计方面的建模方法,这里不再说明,详细信息可网上查找“详解数据建模的三个阶段”。
  2.2   功能建模——DFD图
  当数据或信息“流”过信息系统时将会被系统的功能所处理、加工活变换,再将处理或变换后的数据从系统中输出,DFD图从数据传递和加工角度,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程。而功能建模正是通过DFD图将系统所需实现的功能绘制出来的过程。
  DFD图的基本组成包括数据流、加工、数据存储和外部实体。通常用箭头标志数据流,用圆或椭圆表示加工,用双杠表示数据存储,用方框表示外部实体,即数据的源点或终点。DFD图示例如下图所示。

  2.3  行为建模——STD图
  STD图(State Transition Diagram)用于描述系统或对象的状态,以及导致系统或对象状态发生改变的事件,从而描述系统的行为。它指明了作为特定事件的结果(状态),在状态中包含可能执行的行为。
  STD图中,用圆圈表示可得到的系统状态,用箭头表示从一种状态向另一种状态的迁移,在箭头上要写上导致迁移的信号或事件的名称。STD图示例如下图所示。

  3  面向对象分析方法
  面向对象方法是从内部结构上模拟客观世界 ,其基本思想认为对象是对现实世界客观实体的描述 ,均由其属性和相关操作组成 ,是系统描述的基本单位。面向对象方法更强调运用人类在日常的逻辑思维中经常采用的思想方法和原则 ,例如抽象、分类、继承、聚合、封装等 ,这使得软件开发者能更有效地思考问题 ,并以其他人也能看得懂的方式把自己的认识表达出来。
  面向对象方法包括面向对象需求分析(OOA)、面向对象设计(OOD)、面向对象编程(OOP)。而面向对象分析方法主要经过3个建模过程,包括结构建模、行为建模和功能建模,3中建模均采用统一建模语言 UML (Unified Modeling Language)。
  根据UML2.0标准,一共定义了13种不同的图,其功能各有不同,而OOA主要使用到其中的5种,分别是类图、活动图、用例图、构件图和部署图。
  3.1  结构建模
  结构建模也叫领域建模或概念建模,是对业务或系统的某个时刻或某段时间内的状态进行系统化描述,一般使用结构型的UML图进行结构建模。结构建模所表示的内容一般是静态的,在一段时间内是不会变化的。如用类图表示业务及业务之间的关系,用部署图、构件图表示系统的部署及架构设计。
  类图示例如下图所示: