UML(Unified Modeling Language)是一种统一建模语言,为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言。UML支持面向对象的技术,能够准确的方便地表达面向对像的概念,体现面向对象的分析和设计风格。UML不仅可用于软件设计,也可以用于软件需求分析。
UML的模型主要有三部分构成
事物(Things):UML模型中最基本的构成元素,是具有代表性的成分的抽象。
关系(Relationships):关系把事物紧密联系在一起。
图(Diagrams ):图是事物和关系的可视化表示。
UML图分为结构型和行为型两种
结构型的图描述的是某种结构,这种结构在某段时间内应该是稳定的,静态的;而结构型的图描述的是某种行为,是动态的。
结构型的图(Structure Diagram)
类图(Class Diagram)
对象图(Object Diagram)
构件图(Component Diagram)
部署图(Deployment Diagram)
包图(Package Diagram)
行为型的图(Behavior Diagram)
活动图(Activity Diagram)
状态机图(State Machine Diagram)
顺序图(Sequence Diagram)
通信图(Communication Diagram)
用例图(Use Case Diagram)
时序图(Timing Diagram)
类图描述一组对象、接口、协作等事物之间的关系。类图描述系统中类的静态结构,不仅定义系统中的类,表示类之间的联系,如关联、依赖、聚合等,也包括类的属性和操作。类图描述的是一种静态关系,在系统的整个生命周期都是有效的。类图是业务概念模型分析的有利武器,也是面向对象分析能力的强有力训练工具。
对象图是类图的实例,几乎使用与类图完全相同的标识。一个对象图是类图的一个实例。由于对象存在生命周期,因此对象图只能在系统某一时间段存在。对象图往往只在需要描述复杂算法时才会使用。
构件图也叫组件图,一辆汽车由轮子、发动机等物理部件组成,一个软件往往也是由很多“物理部件”(如:控件、重用构件等)组成的,构件图就是用来描述软件内部物理组成的一种图。构件图有时不会单独使用,还会和部署图一起结合使用。
部署图是用来描述系统如何部署、本系统与其他系统是怎样的关系的一种图。大部分客户都会具备一定的IT基础环境(如具备局域网、一些服务器、某些软件平台等),软件系统需要基于当前的IT基础环境来规划,这时我们可以使用部署图来做这个规划。
构件图、部署图是分析IT基础架构、软件架构等方面需求的有利分析工具,但需要你具备IT基础架构、软件设计方面的知识和经验。
包图的主要用途是“打包”类图。用类图描述业务概念时,很多时候会因为业务类太多,而导致类图非常庞大,不利于阅读,这时可以将某些类放入“包”中,通过包图来组织业务概念图。
活动图、状态机图、顺序图是分析业务流程的强力武器。
活动图中的一个圆边框框表示一个活动,多个活动之间的带箭头线条表示活动的先后顺序,该图只是表达了一个顺序流程,活动图还可以表达分支结构。活动图的表达思路与流程图很类似,很容易掌握,而且大部分情况下都可以使用活动图来分析业务流程。
状态机图从某个物品的状态是如何变化的角度来展示流程。某流程如果是围绕某个物品进行,该物品在流程中转换多种状态,那么使用状态机图来分析是首选。
序列图(顺序图)是用来显示你的参与者如何以一系列顺序的步骤与系统的对象交互的模型。顺序图可以用来展示对象之间是如何进行交互的。顺序图将显示的重点放在消息序列上,即强调消息是如何在对象之间被发送和接收的。用顺序图来分析的好处是能清晰表达整个过程所参与的角色,角色与角色之间的关系,各角色是如何被卷入这个过程当中的。
通信图可以看作是顺序图的另外一种表达形式。角色之间有直线联系表示他们之间有关系;带序号的文字和箭头,表示角色之间传递的信息。顺序图更强调先后顺序,通信图更强调相互之间的关系。而从我的工作经验看,顺序图更加实用一点。
用例图描述一组用例、参与者以及它们之间的关系,其展示的是该系统在它的外面环境中所提供的外部可见服务。从用户角度描述系统功能,并指出各功能的操作者。表达的是什么角色通过软件系统能做什么事情,我们可以使用用例图系统地表达软件系统的绝大部分需求。
时序图也叫时间图,时序图是表示某东西的状态随时间变化而变化的一种图。我在实际工作中很少有机会能用到这种图。