UML,Unified Modeling Language,统一建模语言,为软件工程所有阶段提供模型化和可视化支持,由需求分析到规格,到构造和配置。
UML绘制文档所需要的图,其中最常用的是用例图、静态图、行为图和实现图。其中,用例图指用例图,静态图指对象图和类图,行为图指状态图和活动图,交互图指时序图和协作图实现图指构件图和部署图,共九种,有时还包含包图(包图属于静态图)。
用例图 User Case
描述用户/需求/系统功能单元间的关系,如功能模型图,其作用是可视化理解系统的功能需求,获取需求,知道测试,和其它工作流的指导作用。用例图许哟啊在需求分析阶段完成,写入需求规格说明书。
在用例图中包含以下关系:包含关系、泛化关系、扩展关系。
包含关系:使用包含(Inclusion)用例来封装一组跨越多个用例的相似动作(行为片断),以便多个基(Base)用例复用。基用例控制与包含用例的 关系,以及被包含用例的事件流是否会插入到基用例的事件流中。基用例可以依赖包含用例执行的结果,但是双方都不能访问对方的属性。
扩展关系:将基用例中一段相对独立并且可选的动作,用扩展(Extension)用例加以封装,再让它从基用例中声明的扩展点(Extension Point)上进行扩展,从而使基用例行为更简练和目标更集中。扩展用例为基用例添加新的行为。扩展用例可以访问基用例的属性,因此它能根据基用例中扩展点的当前状态来判断是否执行自己。但是扩展用例对基用例不可见。
泛化关系:子用例和父用例相似,但表现出更特别的行为;子用例将继承父用例的所有结构、行为和关系。子用例可以使用父用例的一段行为,也可以重载它。父用例通常是抽象的。在实际应用中很少使用泛化关系,子用例中的特殊行为都可以作为父用例中的备选流存在。
对象图 Object Diagram
说明对象之间的关系,说明数据结构,类图中类或组件的静态快照,类图的实例化,在需求分析阶段完成。
我的对象图把所有对象都写入了,看着好像不对似的,但是我不太了解那里明白,如果有人明白,可以和我说说哦。
类图 Class Diagram
描述类/接口/协作以及他们之间的关系,有时候也可以包含包、对象、链等,是对象图的抽象化。一般都是从词汇中发现类,然后找到它们的责任。类图在需求分析阶段、概要设计阶段完成,写入需求说明书和概要设计说明书中。类的属性和方法存在权限,其中+表示public,-表示private,#表示protected,这种权限在类图中有时会发现。
对象图和类图老是混为一谈,有时候画着画着就不知画的是什么了,希望有人可以各处理解哦。
类图中包含四种关系,有依赖关系、关联关系、泛化关系和实现关系。
依赖关系是指一个类依赖另一个类,被依赖的一方为局部变量,表示方式:虚线+箭头,指向被依赖一方。
关联关系指两个类存在一般的联系,表示方式:实现+箭头。其中如果只有一方联系另一方,则是单箭头,如果是两方互相联系则是双箭头。关联关系还分为聚合关系和组合关系。聚合关系表式两个类不通层次,是整体与个体的层次,则表示为:空心菱形+实线+箭头,箭头指向部分。组合关系则是同一层次的,不能共享,例如火车一节节车厢
,表示方式:实心菱形+实线+箭头,箭头指向靠近整体开始的地方(例如火车车头)。
泛化关系是一般元素和特殊元素的分类关系,也是反向继承关系,表示方式:空心箭头+实线。箭头指向父类;空心箭头+虚线,箭头指向父类(父类是接口)。
实现关系是类与接口的实现,表示方式:空心箭头和实现,箭头指向父类;空心箭头+虚线,如果父类是接口。
包图 Package Diagram
描述包与包之间的关系,由包和类组成,表示系统分层结构。包图属于静态图,需求分析阶段和概要设计阶段完成。
状态图 Statechart Diagram
描述状态和状态控制流,动态特种性建模,侧重行为的状态,一般在详细设计阶段完成,写入详细设计说明书中。
活动图 Activity Diagram
与状态图相类似,只不过活动图侧重的是行为的动作,描述业务实现用例的工作流程。
时序图 Sequence Diagram
对象之间的动态合作关系,强调对象发消息顺序(时序),同时显示对象间的交互。一般在需求分析阶段和详细设计阶段完成。
协作图 Communication Diagram
又称合作图,是描述对象之间的协作关系,强调发消息和接收消息的对象。
部署图 Deployment Diragram
需求阶段的技术解决方案,描述系统中物理体系结构。与构件图相对。
构件图 Component Diragram
描述系统中软件体系结构,例如运行程序需要的构件等。构件包含执行文件(源码编译)/文件/库/表/文档等等。