1997年,3位老大创造了UML0.9,就像上帝造物一般。这个世纪的做IT的人都称他们为神匠,因为UML已经成为他们手中不可或缺的神器。他们的名字是 Grady Booch、 Ivar Jacoboson和 James Rumbaugh。
统一建模语言(Unified Modeling Language,UML)是一种语言。目前最流行的应用UML的方法是RUP(Rational Unified Process)又称UP。UP有四个阶段:(1)初始阶段(Iception)(2)筹划阶段(Elaboration)(3)构建阶段(Construction)(4)转换阶段(Transition)。
UML有两种类型的结构图(Structural Diagrams):类图和实现方式图。细分有可划为类图和对象图、组建图和部署图。行为图又有五类:
·第一类是用例图,从用户角度描述系统功能,并指出各功能的操作者。
·第二类是静态图(Static diagram),包括类图、对象图和包图。其中类图描述系统中类的静态结构。不仅定义系统中的类,表示类之间的联系如关联、依赖、聚合等,也包括类的内部结构(类的属性和操作)。类图描述的是一种静态关系,在系统的整个生命周期都是有效的。对象图是类图的实例,几乎使用与类图完全相同的标识。他们的不同点在于对象图显示类的多个对象实例,而不是实际的类。一个对象图是类图的一个实例。由于对象存在生命周期,因此对象图只能在系统某一时间段存在。包由包或类组成,表示包与包之间的关系。包图用于描述系统的分层结构。
·第三类是行为图(Behavior diagram),描述系统的动态模型和组成对象间的交互关系。其中状态图描述类的对象所有可能的状态以及事件发生时状态的转移条件。通常,状态图是对类图的补充。在实用上并不需要为所有的类画状态图,仅为那些有多个状态其行为受外界环境的影响并且发生改变的类画状态图。而活动图描述满足用例要求所要进行的活动以及活动间的约束关系,有利于识别并行活动。
·第四类是交互图(Interactive diagram),描述对象间的交互关系。其中顺序图显示对象之间的动态合作关系,它强调对象之间消息发送的顺序,同时显示对象之间的交互;合作图描述对象间的协作关系,合作图跟顺序图相似,显示对象间的动态合作关系。除显示信息交换外,合作图还显示对象以及它们之间的关系。如果强调时间和顺序,则使用顺序图;如果强调上下级关系,则选择合作图。这两种图合称为交互图。
·第五类是实现图( Implementation diagram )。其中构件图描述代码部件的物理结构及各部件之间的依赖关系。一个部件可能是一个资源代码部件、一个二进制部件或一个可执行部件。它包含逻辑类或实现类的有关信息。部件图有助于分析和理解部件之间的相互影响程度。
常用的UML工具有:Ratianal Rose , Visio , 还有手+纸+笔。其他一些软件就不一一例举了。
用例图主要用来业务需求的用在UP过程初级阶段,一般用来对测试、普通流程和异常处理流程等阶段进行建模。用例图有4种基本组件:系统、参与者、用例、关系。还有泛化的概念(和继承差不多)。包含(include)经常使用其他用例,扩展(extend)偶尔使用其他用例。建立用例图有5项任务:a.找出参与者和用例b.区分用例的优先次序c.细化每个用例d.建立用例模型结构e.建立用户界面原形。
活动图用来方便的标识并进行活动。活动图主要有3个标记,活动,状态,转移。控制点是个表达式,当其为true允许控制流通过转移。决策点是个标记符,指示作出一个决策且控制流相应的转到不同位置,转移是一个活动绘制状态到另一个活动绘制状态。时间是强制控制流从一个活动转移到另一个活动的活动,泳道是通过对象或者域来分隔活动的区域。分叉和联结的作用是分隔并行处理,把不同的处理控制流合并到一起形成一个单项处理流。活动图的主要任务有5个:a.表示需要活动图的用例b.建模每一个用例的主路径c.建模每一个用例的从路径d.添加泳道来表示活动的事物分区e.改进高层活动并添加到更多活动图中。
活动图
顺序图的两个组件是活动对象和消息,用它建模的主要内容是在不同的活动对象之间的交互。有4种消息:同步、返回、异步、简单。顾名思义,就不多解释了。还有分支和从属流,分支就是分叉,从属流就是将生命线分成两条的那条分路。建模顺序图的四个步骤:a.确定需要建模的工作流b.从左到右布置对象c.添加消息和条件以便创建每一个工作流d.绘制总图一边联结各个分图。
顺序图
类图的主要组件就两个属性和操作。一些概念就是OO的基本概念。建模类图要反复执行两个步骤:a.确定类及其关联b.确定特性和操作。
类图
协作图是一个对象或者角色的集合,连接对象和关联角色。3种消息同步、异步、和简单。序列化就是给消息编号。控制点条件就是就是个条件控制消息的表达式的计算结果来限制消息的发送。
协作图
状态图和活动图差不多,但是区别还是有第,活动图用来建模不同区域的工作如何彼此交互而状态图用来表示单个的对象,以及对象的行为如何改变其状态。
状态时对象某一时刻的快照。5个步骤是:a.表示出需要进一步建模的实体b.表示出每一个实体的开始状态和结束状态c.确定与每一个实体相关的事件d.从开始状态开始创建状态图e.如果必要则指定键和成状态。
状态图
组件图,组建是软件的单个组成部分。它可以使一个文件、产品、可执行文件和脚本。组件之间的关系叫依赖关系。固化关系可以用《import》也可以用《implements》,组件可以包含欠套。
部署图是描述硬件之间的关系,节点之间可以包含组件。节点间的通信关联。创建实现方式图(部署图)有4项任务:a.添加节点b.添加通信关联c.添加组件和其他内容,如类和对象d.添加依赖关系。
部署图
对象约束语言(Object Constraint Language,OCL)。每一个约束必须有上下文。约束的固化类型:per-condition,post-condition,invariant(用于类,其他两种用于操作)。语法:
context context inv:
constraint
context Student inv:
GPA<=4.0
context Teachers::SocialStudiesTeacher inv:
AssignedClasses->includes(GlobalStudies)//包
OCL有4种基本类型:Integer,Real,String,Boolean.用户也可以定义其他的数据类型。
集(Set)无序不可重复:set{items in the set} set{1,9,4,-1,0}
序列是一种排序的,允许重复的项目列表:sequence{item in the sequence}
袋子与许重复无序的项目列表:bag{items in the bag}
(bag{1,2,3,4})->union(bag(3,3,3,3))=bag{1,2,3,3,3,3,4}
intersection用来生成一个集
(bag{1,2,3,4})->intersection(bag(3,3,3,3))=set[3]
asSet operation用来删除重复的项目
(bag{1,1,2,2,3,3})->asSet=set{1,2,3}
select用来生成一个集合,select操作的反操作,他返回满注表达式为false的集合,forall操作在集合中的所有的元素都满足表达式式返回Boolean值True,exists操作在集合中至少有一个元素满足表达式运算为True,size操作返回集合中的项目数。
UML我也只是初探,很多东西还不懂,第一次写文章写得不好不好意思。部分文字是拷贝而来。UML的确是个好东西。