最近在准备一些考试,涉及到UML的常规知识,感觉自己以前知道的也是一知半解,所以正好借助这个机会进行一次全面的学习认知。
1.UML基础概念
UML这三个字母的全称是Unified Modeling Language,即统一建模语言,是一种有特殊用途的语言。在软件开发界,我们需要一套标准来帮助我们做好软件开发的工作。UML是其中的一种标准。UML可帮助我们做软件需求分析和软件设计的工作。
2. UML的分类概述
UML图可分为结构型和行为型两种。结构型的图描述的是某种结构,这种结构在某段时间内是稳定的,“静态”的;而行为型的图描述的是某种行为,是“动态”的。分析系统需求时,我们会面对很多业务概念,它们之间会有某些关系,这些内容可以看成是“静态”的,我们可以利用UML的结构型的图来分析;同时,业务会涉及大量的流程、过程等,这些内容是“动态”的,我们可以用行为型的UML图来分析。在我们进行软件设计时,我们需要考虑用哪些类、哪些构件、系统最后怎样部署等,这些内容弄可以看成是“静态”的,我们可以利用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)。
3. UML各类型图详细分析介绍
3.1 结构类型的图(Structure Diagram)
3.1.1 类图(Class Diagram)
请看下面的类图:
此图截取自某模具管理系统的业务概念分析图,图中一个一个的矩形就是类,这些类之间有各种线条连接,这些线条表示类之间的关系。类图是分析业务概念的首选,类图可能是使用率最高的UML图。
再看看下面的Person类图,这是软件设计时用到的一个图:
该Person类具有以下属性(Attribute):Name(姓名),Sex(性别),Department(部门)等,有以下操作(Operation):Work(工作)等。类有属性和操作,但用类图分析业务模型时,往往不需要使用操作,上面的模具类图中就只要有属性。
3.1.2 对象图(Object Diagram)
一般情况下只有软件开发中才会使用到对象图,下面的内容以开发的角度来说明对象图,上面的Person类,用代码实例化如下:
Person person=new Person()
类(class)实例化后就是对象(Object),对象person是类Person的实例,上述代码可以用对象图表示如下:
对象图和类图的样子很类似,对象是类的实例化,“person:Person”表示对象person是类Person的实例。对象图往往只在需要描述复杂算法时才会使用,画出来的对象图往往不会只有一个对象,上图中只画了一个对象,其目的是尽量简化以便大家理解什么是对象图。
在需求分析工作中基本上不需要使用对象图,从严谨的角度来看某些情况下应该使用对象图,但往往还是使用类图来处理,这样更加简便而且容易理解。
3.1.3 构件图(Component Diagram)
构件图也叫组件图,两个名字均符合UML中文术语标准。一辆汽车由轮子、发动机等物理部件组成,一个软件往往也是由很多“物理部件”(如:控件、重用构件等)组成的,构件图就是用来描述软件内部物理组成的一种图。下图是某权限构件设计图:
上图中右上方有特殊标志的矩形表示一个构件,构件可以再包含构件。软件需求分析工作中,需要用到构件图的情况不是很多,以下情况除外:
1. 待开发的系统需要与第三方的系统、原有系统、某些老系统等交互,这是可用构件图描述交互要求。
2. 客户对软件设计有某些特殊要求,这时可用构件图来描述要求。
构件图有时不会单独使用,还会和部署图一起结合使用。
3.1.4 部署图(Deployment Diagram)
部署图是用来描述如何部署、本系统与其他系统是怎样的关系的一种图,如下图:
图中一个个立体的矩形是部署图的“节点”,一个节点表示一个物理的设备,节点之间的线条表示节点间的物理连接关系。大部分客户都会具备一定的IT基础环境(如具备局域网、一些服务器、某些软件平台等),软件系统需要基于当前的IT基础环境来规划,这是我们可以使用部署图来做这个规划。分析系统的需求,不能忽略系统架构、部署、IT架构等方面的要求,我们要机遇客户当前的基础IT环境,做一个最符合客户利益的规划。
要活用构件图、部署图来分析需求,需要具备一定的IT基础架构知识和软件设计知识,如果你还不具备相关知识,那么可以考虑抓紧补充相关知识。不过需求分析工作更多的还是分析业务,提炼功能性需求,这部分工作做好是相当不容易的事情。对于技术方面的非功能需求分析,可交由有技术背景的专业人士负责。
3.1.5 包图(Package Diagram)
Package有“打包”的意思,包图的主要用途是“打包”类图。用类图描述业务概念时,很多时候回因为业务类太多,而导致类图非常庞大,不利于阅读,这是可以将某些类放入“包”中,通过包图来组织业务概念图。