摘 要:讨论信息系统的建模方法人手,重点探讨功能建模、事件建模等主要方法,最后介绍了UML的信息系统建模中的应用。
关键词:信息系统;建模方法;UML应用
一、信息系统建模介绍
所谓现代信息系统,是指具有规模大、目标多、维数高、关联复杂、多学科等特征的计算机信息系统。一般来说,现代信息系统的开发周期长、质量低、维护昂贵,需要探索新的开发方法与工具。基于目前的理论与实践研究,笔者认为,应用多种建模方法,将信息系统的开发作为综合性建模活动,是一种有效的方法。
现代信息系统建模〔或模型化),就是基于人类对开发对象的认识理论和系统开发规律,综合应用多种方法(包括智能与非智能方法、认知方法等)、多类技术及多种工具,将复杂的问题世界抽象描述为一组模型。综合应用多种建模方法,对与问题求解相关的各主要方面建模,对多种系统特征建模,能够得到较完整的、正确的、有效的系统模型,加快开发过程,提高系统质量。
二、信息系统建模方法
功能模型描述与值的变化有关的系统属性—功能、映射、约束及功能依赖条件等,是一种层次结构。功能模型抽象化人类的智能与非智能行为,映射问题的求解模型。功能建模采用功能分解的结构化方法,其指导思想是将问题分解为子问题,使之易理解、易解决。功能建模使用的工具是数据流程图、功能层次图及结构图等。
功能建模包括下列步骤。
1.识别功能需求。建模者常通过分析对象的操作,访问用户与考察业务活动,从输人输出信息推导处理过程等,识别系统功能需求。在识别功能需求过程中,应重视对象模型中顶层对象类的操作信息或高级业务管理者的信息,这些信息对于建立系统整体功能模型很重要,例如业务目标、问题求解策略、主要业务活动及关键的成功因素等。
2.构造功能层次结构。采用结构化方法,首先依据已识别的较高层次的系统功能需求,建立顶层模型;然后自顶向下分解功能为子功能,从抽象到具体建立功能层次结构。在分解过程中还需访问用户,收集与评价较详细的功能信息,并进行模型化处理。这种分解持续到每一功能元素代表单一功能(不能再分解)为止,底层的基本功能是未来程序模块的基础。功能层次结构模型中,同层上的元素是相互独立的,为平等关系,不同层次上的元素之间为调用关系或包含关系。从垂直方向来看,不同层次上具有共同目标的相关功能元素组成一个子系统(或块),一个块提供一种类型的服务。例如上面例子中,帐务处理及下面各层的分解元素组成一个块,提供帐务管理的服务。块与块之间应为弱藕合关系,即尽量减少块与块之间的依赖性,可减少块之间的交互。
3.处理模型化。功能分解到合适层次后,应对每种功能元素进行模型化,包括输人输出信息与功能内部处理的描述,重点是处理逻辑的描述。描述可以是说明性的或过程性的。说明性的描述确定了输入值与输出值之间的关系。过程性的描述确定一个可以用算法表达的函数。
处理逻辑的表达方式可以是:数学函数、伪码、决策表、决策树、自然语言等。当处理依赖于多种条件的组合时,可使用决策表和决策树。操作符,如逻辑与、逻辑或及逻辑异或,用来模型化处理的输人流(或输出流)之间的关系。
上面针对最基本的、最重要的系统属性(对象、功能与事件)讨论了有关建模方法,不同的信息系统可以选择或组合使用。在实际的现代信息系统建模中,有时必须综合考虑较多的系统属性、多种观察角度及多维结构。因此,人们渴望一种具有普遍指导意义的建模框架,即广义建模框架。这种框架是一种认知框架,描述广泛业务问题的真实世界到信息系统世界的一般映射规律,包括开发对象的认识规律和信息系统开发规律。广义建模框架具备以下特点:一是包含广义的目标,可覆盖所有信息系统的开发;二是提供足够多的系统属性、透视点和结构维,可作为系统开发指南;三是具有灵活性,能适应可能的变化与扩展;四是有利于开发者与领域专家的通讯,以便开发一致的,易理解的、较理担的模型。
三、UML在信息系统建模中的应用
下面以一个实验预约系统为例,详细探讨基于UML的信息系统建模过程。
(一)需求分析
分析系统功能需求,较为快速有效的方法就是构建用例模型,并以用例图加以描述。用例图描述系统外部的执行者与系统提供的用例之间的某种联系,其中用例是对系统功能
的描述,执行者则是使用这些用例的角色或外部系统。在用例图中,椭圆表示用例,“小人”图符表示执行者,用例和执行者之间的连线表示二者之间的关联和信息交流。
通过对实验预约系统典型用例的分析,可以确定系统主要执行者有学生、教师和系统管理员。学生具有预约实验、取消预约、查询实验成绩、查询实验项目安排、查询实验班级安排、个人信息维护等功能;教师具有公布实验成绩、查询实验项目安排、查询实验班级安排、个人信息维护等功能;系统管理员具有管理实验项目、管理实验班级计划和数据库维护等功能。由此,可得到系统用例图如图1所示。
图1实验预约系统用例
(二)UML静态模型设计
建立静态模型的首要任务是采用“搜索收集”方法标识系统的类,即首先搜集案例需求描述中所有的名词和名词短语作为系统的候选类,然后对其进行分析,判断和筛选,最后在此基础上确定系统的类。
在标识类的过程中候选类的筛选最为关键,它虽然在一定程序上依赖于设计者对专业领域的熟悉程度和以前的建模经验,但也并不是说没有方法可循。我们可结合图2所给出的学生预约实验使用案例需求描述(候选类已在图中用下划线标识)将几种较为典型的筛选方法归纳如下:①将所有复数形式的名词删除,保证在分析时所有类名为单数形式;②确定系统的设计边界,将超出此范围的候选类删除,如“实验预约系统”是对开发系统的自身引用,“学院”是开发系统的应用环境,它们和设计需求没有关系,予以删除;③将所有名词按语义分组,每组同义词中只选择一个表达简练的名词作为候选类;④将暗示对象之间关联关系的名词删除,如“先修实验项目”就暗示实验项目与实验项目之间的关联关系,可删除;⑤如果某些名词在语义上存在逻辑包含关系,则可删除子项,而只保留父项;⑥根据具体应用需求对集合名词进行取舍,如“实验项目安排表”是一门实验课程设立的所有实验项目信息的集合,“班级
安排表”是每个实验项目的所有班级信息的集合,由于学生预约实验时要反复查询这些信息,为方便用户界面程序的实现,可考虑引入这两个聚合类;⑦如果在需
求描述中,不能抽取候选类的描述属性及其提供的相关服务,就应该考虑将该候选类标识为其它类的属性,如“实验时间”、“实验地点”、“实验名额”等只是实验班级的基本描述信息,
在本系统中并不提供相应服务,所以可将它们设置为实验班级类的属性。 图2学生预约实验使用案例需求描述
按照上述方法,对系统所有使用案例中提供的候选类进行分析和筛选后,我们可初步确定的系统类有学生、教师、实验课程、实验班级、实验项目、实验项目安排表、实验班级安排表、成绩单和等待队列等。
在完成了系统类的抽取工作之后,需要分析需求描述中的动词,以确定系统类之间的静态结构关系。每个实验项目可以有多个先修实验项目,同时它也可以是其它多个实验项目的先修实验,因此实验项目类的不同对象之间存在多对多的一元反身关联关系。学生和实验班级之间存在两个多对多的关联关系,即预约和等待预约。当预约实验成功,学生就和某个实验班级建立起预约关系,如果准备预约的实验班级名额已满,学生就会被送到对应实验班级的等待队列中,学生和该实验班级之间建立起等待预约关系。一旦该班级的实验名额增加或其他同学取消预约,系统就会自动将学生和实验班级之间的等待预约关系变为预约关系。另外,当学生和实验班级建立预约关系,学生就会在所预约的班级得到该实验项目的成绩。鉴于此,我们还在学生和实验班级之间的预约关联关系上引入了一个特殊的关联类——单项实验成绩,主要描述一组特定学生对象和实验班级对象对之间的预约关系,成绩是该类的一个重要属性。学生的成绩单中包含学生预约的所有实验项目的成绩,因此成绩类和关联类单项实验成绩之间可自然建立起聚合关系。同理,在学生和实验班级的等待预约关系上也引入了关联类——队列结点,等候队列是该类的一个聚合类。其它类间的关系比较直观,在此不再赘述。
参考文献:
[1]常晓,王凤霞,张景,等.基于RUP的UML建模方法研究[J].计算机工程与应用,2004,40(21):126-130.
[2]James Rumbaugh,Ivar Jacobson,Grady Booch.UML参考手册[M].北京:机械工业出版社,2001.
[3]屠志强,薛安克,马国兵,等.UML在流程工业优化调度工艺描述系统中的应用[J].计算机工程,2005,31(4):203-205.