posts - 188,comments - 176,trackbacks - 0

统一建模语言UML 是一种应用于任何软件开发过程的标记法和语义语言。它可以用来描述问题的需求和解决方案,其作用和地位非常类似于结构化程序设计中的数据分析和数据流图,数据流图实际上也是一种描述问题和解决方案的语言,所不同的是UML主要采用面向对象的方式解决问题,而数据流图更适合描述结构化的解决问题方式。

 

UML有两类主要的构件:结构图和行为图

其中结构图用来静态描述软件的构成和部署情况,而行为图是UML中最有特色的部分,它能够用来描述软件各组成部分的相互关系和互动方式,进而阐述软件的工作方式和状态如何变化的过程。

 

(1)首先来看结构图。

 

结构图可以分成4种特定类型的图:类图、对象图、组件图和部署图

 

类图和对象图用来描述软件的基础构件(类)。

类图描述了软件中各个类的构成:包括属性、操作以及许多类型的角色和关联,特别是它能描述各个类之间的固有关系,比如继承、包含等。

 

对象图更关注的是类的不同实例的关系,多用于具体示例的设计。

 

部署图描述组件安装后在哪里配置组件,以及为这些系统如何交互建立模型,这种图重点是描述软件的物理结构以及各个物理组成部分如何交互的方法。

 

组件图则用于说明系统组件之间如何交互,它还描述了组件由那些类构成,显示了类和源文件之间的依赖关系。

 

 

UML最重要的是它的行为图,用于显示组件、类、用户和系统之间相互作用的过程。如果说数据流图是通过数据的变化来体现软件的功能的话,那么,行为图则是通过对象和系统状态的改变来描述软件的工作过程和功能。

 

(2)UML有5种行为图:用例图、活动图、序列图、协作图和状态图

 

用例图主要用来图示化系统的主事件流程,它主要用来描述客户的需求,即用户希望系统具备的完成一定功能的动作,通俗地理解用例就是软件的功能模块,所以是设计系统分析阶段的起点,设计人员根据客户的需求来创建和解释用例图,用来描述软件应具备哪些功能模块以及这些模块之间的调用关系,用例图包含了用例和参与者,用例之间用关联来连接,这种关联可以是泛化、包含和扩展,并连接到参与者,以求把系统的整个结构和功能反映给非技术人员(通常是软件的用户),对应的是软件的结构和功能分解。

 

活动图是对用例图的进一步细化,用来分析较为复杂的用例中的行为,并显示它们之间的交互作用,所以活动图关注于用例的两个方面:一方面是描述用例内部的工作过程,另一方面描述用例之间的交互作用。具体描述哪一方面取决于活动的范围是在一个用例内部还是跨越多个用例。所谓活动实际上指软件一个业务工作流程,它有一个开始状态和一个或多个结束状态,活动图则表示这个业务流程需要哪些用例参加以及以怎样的顺序和方式参加,即这个业务流程有可能需要用到哪些功能模块。对应的是软件的一项功能的实现可能用到哪些模块。

 

序列图则反映了如何用对象来实现用例,描述的是一个用例中对象之间的相互作用的控制流程。对象之间是通过消息来通信的,序列图就是在时间轴上对象的生命周期内详细描述对象之间通信的每个步骤,并指出在通信的每个阶段处理控制权位于何处,其结果就是显示出了对象之间交互的每个路径,它对应的是程序逻辑结构设计,有点像程序流程框图。

协作图仍然是描述用例的实现,但是它的描述比顺序图更加详细,协作图描述了每个对象在用例中的作用和角色,对象之间的交互关系也更具体,因为协作图实际上是类图和顺序图的交集,由于类图已经设计出来了,类对象之间的通信内容也可以更具体(即调用哪个对象的哪个函数),和顺序图不同的是它不是在时间轴上描述对象之间的交互过程,而是采用序号表示对象交互的顺序。它对应的是更细化的流程图,我认为有了这个图之后设计阶段基本可以结束了,软件可以进入编程阶段。

 

状态图不是用来描述用例的,而是用来描述用例中单个对象及其行为状态的改变方式的,即对象可以有那些状态,以及在响应事件的过程中如何由一个状态变迁到另一个状态,在这里可以把对象看成是一个独立的子系统,可以用一个状态机来反映系统对外界的反应,而状态图就是描述这个状态机的。这个图目的在于说明如何实现对象,有了这个图,对象就可以编程实现了,它对应的是对象内部实现流程,当然这个流程是封装在对象内部,对其它对象是不可见的。

 

 

 

 

posted on 2007-05-24 11:38 cheng 阅读(467) 评论(0)  编辑  收藏 所属分类: UML

只有注册用户登录后才能发表评论。


网站导航: