基于UML的信息系统分析与设计
刘 明
摘 要: 此文以图书馆信息系统为例,探讨了利用统一建模语言进行面向对象的分析、设计和实现等问题。首先阐述了面向对象的基本思想,概要地介绍了UML的语法语义机制及其优点。UML具有广阔的应用前景,本文围绕图书馆信息系统的开发,对UML面向对象建模在信息系统分析与设计过程中的应用作了较为详细的介绍。
关键词:UML 面向对象 信息系统建模
Analysis and Design of Information System based on UML
Liu Ming
Abstract: This paper discusses some questions about object_oriented analysis and design by UML,and an example about library information system is given in the paper. First,Object_oriented fundamental concepts are talked. Then phrasing and semantic of UML are also presented with its advantage. It’s certain that UML will have a wonderful applicable future. So the usage of UML developing information system is introduced in detail in the paper .
Keywords: UML, Object_orient, Information System, Modeling
一、前言
随着计算机科学与技术的不断发展,计算机技术渗透到各个领域。同样,信息系统的开发也不例外。对输入的原始数据进行收集、存储、传输、分析等变换处理,并输出有用信息的系统称为信息系统。尽管传统的生命周期方法学曾经给软件产业带来了巨大的进步,部分的缓解了软件危机,但是,事实证明这种方法学仍然存在比较明显的缺点。相比其他的分析与设计方法,面向对象方法学有着很大的优点,日益受到人们的重视。本文将结合图书信息系统的分析与设计过程来阐述面向对象方法学的思想及其在UML中的体现。
二、面向对象方法学简介
面向对象方法学的出发点和基本原则,是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,让描述问题的问题空间与实现解法的解空间在结构上尽可能一致。
任何事物都可看作是一个对象,结构复杂的对象由简单的对象以某种方式组合而成。每个对象都是将描述其特征或状态的静态属性和定义在属性之上的动态行为封装在一起的统一体。对象是一个独立的实体,其属性值的改变只能通过定义在属性上的操作(封装的行为)来完成。它可以向其他对象提供服务,也可以申请其他对象为其服务,对象之间仅通过发送消息来传递请求信息。对象收到另一对象的服务请求时,经过其自身的逻辑机制来决定是否响应其请求,并以一定的方式反馈给申请者。
将客观世界中具有相似特征的事物抽象出来而忽略各自的细节,刻画出它们的共
性,定义为类。同属于一个类的对象有相同的属性及其行为,面向对象方法学通过继承机细化对象的细节来实现他们的差异性。
系统的开发常常要经历较长的几个阶段,从用户对系统的需求,到对系统的分析、
设计、实现和最终的维护。面向对象方法学同样要包括面向对象分析、设计及实现。
三、UML建模语言
1、概念
UML是一种标准的图形化建模语言,它是面向对象分析与设计的一种标准表示。
UML只定义了一些图以及它们的意义,它的思想是与方法无关。人们可以采用各种方法使用UML,而无论方法如何变化,他们的基础是UML的图,这也是UML的最终用途---为不同的领域的人们提供统一的交流标准。无论分析、设计和开发人员采取何种不同的方法或过程,他们递交的设计产品都是用UML来描述的,这有利于促进相互的理解。
UML尽可能的结合了面向对象方法实践的成功经验,并以建模语言的形式把它们打包,适应开发大型复杂系统的要求。UML功能强大,但人们常常混淆其概念,它是:
. 不是一种可视化的程序设计语言,而是一种可视化的建模语言;
. 不是工具或知识库的规格说明,而是一种建模语言规格说明;
.不是过程,也不是方法,但允许任何一种过程和方法使用它;
2、设计目标
在UML诞生以前,软件产品开发没有一个统一的标准,人们尝试着采用不同的方法分析和设计系统,因而产生了多种分析和设计方法学。UML的出现,给软件开发过程带来了能够统一一致等许多便利。
.易于使用、表达能力强,进行可视化建模;
.与具体的实现无关,可应用于任何语言平台和工具平台;
. 与具体的过程无关,可应用于任何软件开发的过程;
.简单并且可扩展,具有扩展和专有化机制,便于扩展,无需对核心概念进行修改;
.为面向对象的设计与开发中涌现出的高级概念(例如协作、框架、模式和组件)提供支持,强调在软件开发中,对架构、框架、模式和组件的重用;
.与最好的软件工程实践经验集成;
. 可升级,具有广阔的适用性和可用性;
.有利于面对对象工具的市场成长。
3、UML的架构
UML是由图和元模型组成的。图是UML的语法,而元模型则给出的图的意思,是UML的语义。UML是用来描述模型的,它用模型来描述系统的结构或静态特征、以及行为或动态特征。它从不同的视角为系统的架构建模,形成系统的不同视图(view),包括:
. 用例视图(use case view),强调从用户的角度看到的或需要的系统功能,这种
视图也叫做用户模型视图(user model view):
.逻辑视图(logical view),展现系统的静态或结构组成及特征,也称为结构模型
视图(structural model view)或静态视图(static view);
.并发视图(concurrent view),体现了系统的动态或行为特征,也称为行为模型视
图(behavioral model view)、过程视图(process view)协作视图(collaborative)、
动态视图(dynamic view);
. 组件视图(component view),体现了系统实现的结构和行为特征,也称为实现模
型视图(implementation view)和开发视图(development view);
. 展开视图(deployment view),体现了系统实现环境的结构和行为特征,也称为环
境模型视图(implementation model view)或物理视图(physical view);
每一种UML的视图都是由一个或多个图(diagram)组成的,一个图就是系统架构在
某个侧面的表示,它与其它图是一致的,所有的图一起组成了系统的完整视图。UML提
供了九种不同的图,可以分成两大类,一类是静态图,包括用例图、类图、对象图、
组件图、配置图:另一类是动态图,包括序列图、协作图、状态图和活动图。也可以
根据它们在不同架构视图的应用,把它们分成:
. 用例图(Use case diagram),描述系统的功能;
. 类图(Class diagram),描述系统的静态结构;
. 对象图(Object diagram),描述系统在某个时刻的静态结构;
. 序列图(Sequence diagram),按时间顺序描述系统元素间的交互;
. 协作图(Collaboration diagram),按照时间和空间的顺序描述系统元素间的交互
和它们之间的关系;
. 状态图(State diagram),描述了系统元素的状态条件和响应;
. 活动图(Activity diagram),描述了了系统元素的活动;
. 组件图(Component diagram),描述了实现系统的元素的组织:
. 展开图(Deployment diagram),描述了环境元素的配置,并把实现系统的元素映
射到配置上。
4、UML的应用领域
UML被用来系统建模,它可应用的范围非常广泛,可以描述许多类型的系统,常用的有信息系统、技术系统、嵌入式实时系统、分布式系统等。也可以用于系统开发的不同阶段,从需求规格说明到对已完成系统的测试。
UML的应用贯穿在系统开发的五个阶段,它们是:
.需求分析。UML的用例视图可以表示客户的需求。通过用例建模,可以对外部的角
色以及它们所需要的系统功能建模。角色和用例是用它们之间的关系、通信建模
的。每个用例都指定了客户的需求:他或她需求系统干什么;
.分析。分析阶段主要考虑所要解决的问题,可用UML的逻辑视图和动态视图来描述:
类图描述系统的静态结构,协作图、状态图、序列图、活动图和状态图描述系统
的动态特征。在分析阶段,只为问题领域的类建模——不定义软件系统的解决方
案的细节(如用户接口的类、数据库等);
.设计。在设计阶段,把分析阶段的结果扩展成技术解决方案。加入新的类来提供
技术基础结构——用户接口,数据库操作等。分析阶段的问题领域类被嵌入在这
个技术基础结构中。设计阶段的结果是构造阶段的详细的规格说明;
.构造。在构造(或程序设计阶段)阶段,把设计阶段的类转换成某种面向对象程序
设计语言的代码。
.测试。对系统的测试通常分为单元测试、集成测试、系统测试和接受测试几个不
同级别。单元测试是对几个类或一组类的测试,通常由程序员进行;集成测试集
成组件和类,确认它们之间是否恰当地协作;系统测试把系统当作一个“黑箱”,
验证系统是否具有用户所要求的所有功能;接受测试由客户完成,与系统测试类
似,验证系统是否满足所有的需求。不同的测试小组使用不同的UML图作为他们工
作的基础:单元测试使用类图和类的规格说明,集成测试典型地使用组件图和协
作图,而系统测试实现用例图来确认系统的行为符合这些图中的定义。
下面将通过一个实例说明在一个应用中如何使用UML分析与设计系统。
三、图书馆信息系统 UML实例
图书馆信息系统主要处理书和杂志的借阅和保存。下面是对该信息系统的需求说
明,由用户和开发员共同完成。
. 图书馆讲述和杂志借给读者,读者和书、杂志一样,必须在系统中注册;
. 图书馆负责购买图书,对于流行的书一般要多买几本。如果旧书或杂志过期
了或很破烂则可以从图书馆中删除。
. 图书馆管理员是图书馆的雇员,负责与客户(借书者)打交道,他们的工作要得到系统的支持。
. 借书者可以预定目前借不到的书或杂志,一旦预定的书被返还图书馆或图书馆
新购买书到达,就立即通知预定者。
. 图书馆可以方便地产生、更新和删除系统中与书目、借书者、借书和预定有关
信息。
. 系统应该具有很好的可扩展性。
1、 需求分析
分析的第一步是定义用例,即描述图书馆系统的功能;确定系统的功能需求。
图书馆信息系统中的用例如下所示:
. 借出书目
. 返回书目
. 预定
. 删除预定
. 增加标题
. 更新或删除标题
. 增加书目
. 删除书目
. 增加借书者
. 更新或删除借书者
图书馆信息系统的分析可以用UML的用例图来描述。每个用例以文本的方式来买描
述,描述的内容包括用例以及用例与角色交互的更详细的信息。用例“借出书目”的
描述如下:
(1)如果借书者没有预订;
a. 标记标题
b. 标记可用的该标题下的书目
c.标记借书者
d.图书馆借出标记的书目
e. 增加一条新的借书记录
(2)如果借书者已经预订:
a. 标记借书者
b.标记标题
c.标记可用的该标题下的书目
d.图书馆借出标记的书目
e. 增加一条新的借书记录
f. 删除预订记录
2、 领域分析
为了进行领域分析,需要阅读规格说明和用例,了解系统要处理的概念。为了更
好的了解系统,与用户、领域专家交流,设法确定所有必须处理的概念以及概念间的
关系。图书馆信息系统中的域类主要有:借书者(Borrower Information),标题(Title),书的标题(Book Title),杂志标题(Magazine Title),书目(Item),预定(Reservation)和借书(Loan)。
在类图中表示出这些域类和它们之间的关系。类基本的属性和动作也在类图中描
述。有些属性和动作在画其他图时(如图-2所示)被添加进去。
某些类用UML状态图来显示类的对象的不同的状态以及改变状态的事件。有状态图
的类有:书目和标题。标题类的状态图如图-3所示。
为了描述域类的动态行为,任何动态UML图都可以使用:序列图,协作图或活动图。
在序列图中,说明域类如何协作来操作系统中的用例。当建立这些序列图时,将会发
现新的操作,并将它们加到类中。用例“借出书目”(没有预订)的序列图如图-4所示。
当用序列图建模时,很显然需要窗口或对话框作为到角色的接口。在分析阶段,
为了将域类同窗口类分开,将窗口类组装成—个GUI包(称为“GUI包”),将域类组装
成业务包(Business Package)。此外,也给应用程序取一个名字,称为“通用图书馆
应用“。更具体的用户接口设计常常在设计阶段进行。
3、 设计
设计阶段和最后的UML模型是将设计阶段的模型进行扩展和细化,主要考虑所有的
技术问题和限制。设计的目的是产生一个可用的解决方案,并且能够比较容易地将方
案转换成程序代码。在分析阶段定义的类被进一步细化,定义新的类来处理技术方面
的问题,如数据库、用户接口、通信、设备等等。
一般将设计分为两个部分:
架构设计:在架构设计中,需用定义包(子系统),包间的相关性和基本的通信机
制。—个很自然的要求是,得到清晰而简单的架构,即在架构中,相关性要尽可能少,
双方相关性要尽可能地避免。
详细设计;将包的内容细化,即尽可能详细地描述每一个类,使得编程人员根据
它们很容易地编码。UML的动态模型被用来显示类的对象在指定的情况下如何动作。
图书馆信息系统中分为四个包:用户接口包,业务对象包,数据库包,应用包。
用户接口包(User Interface Package):通过用户接口类,用户可以浏览系统
中的数据,输入新的数据。该包同业务包协作来完成任务。用户接口包调用业务保重
的操作来检索和插入数据。
业务对象包(Business Object Package):业务对象包包含分析模型中的域类,
如等等。业务对象包同数据库包协作完成任务,所有的业务对象类必须从数据保重的
持续性类中继承下来
数据库包(Database Package):数据库包提供服务给业务对象包中的类,可以
有就地保存它们。
应用包(Utility Package):应用包提供服务给系统中其他种类的包。
这四类包的内部设计如图-5所示。
包内部的实现在详细设计阶段完成,这儿不再一一阐述。
四、结束语
在这个瞬息万变的时代 ,在合理的时间内开发和管理高质量的应用程序变得越来
越困难。统一建模语言 UML 的出现为信息系统建模与设计提供了有力工具。利用基于
UML的可视化的建模软件工具 ,我们可以按照 RUP的要求方便的管理项目需求、使用基
于组件的框架、验证软件质量 ,控制版本更新 ,从而实现整个软件系统的面向对象的
分析、设计与迭代开发。这一技术的深入普及与应用必将对我国软件产业的发展产生
非常积极的推动作用。