前边的博客已经分别讨论了UML的九种图(重点介绍了六个),但是,讨论完以后,这些图还只是孤立的模型,怎么把它们联系起来呢?它们之间是什么关系?通过这篇博客来分析这些图的关系。
我们从它的用途开始。这九种图来源于哪?UML,UML是什么?可视化的建模语言,通俗点,它就是一个工具,帮助我们了解、研究、开发系统的建模工具。既然是帮助我们了解和研究系统,我们都从系统的哪些方面开始研究呢?系统的硬件模型和软件模型,外部模型和内部模型,整体模型和局部模型,静态模型和动态模型等等;
本着发现问题解决问题的目的,我们依次来解决这些问题。硬件模型由部署图实现,软件模型包括剩余的八种图;外部模型由部署图、构件图、用例图、包图实现,内部模型由类图、活动图、状态图、顺序图协作图实现;动态模型由行为图和交互图实现,静态模型由类图、对象图、包图、构件图、部署图和用例图完成。可见,UML的九种图可以满足所有的模型要求,从系统的角度来说,UML可以完整的从各个方面来描述它,这是一个功能强大的工具。
UML既然是工具,就是要为用户服务的,我们从用户的角度来考虑问题。系统的用户包括两部分,系统开发者和系统使用者,系统使用者只需要简单的整体使用说明即可,所以系统使用者的要求需要部署图和构件图;对于系统开发者来说,比较复杂,因为系统开发人员分为很多类,各类人员对于系统的层次要求是不一样的,系统的分析员需要用到用例图和类图、顺序图、协作图、状态图、活动图;系统设计人员需要用到类图、包图;系统实施人员则需要用到类图;测试人员需要用到类图、包图、构件图、协作图。系统开发者和使用者需要使用用例图进行交流。
再从软件工程的角度来分析这些图,从需求开始,需求了解需要用用例图和客户交流,以确定系统功能;系统分析需要使用类图描述系统静态结构,行为图和交互图来描述系统动态行为,通过系统分析来明确系统细节;系统设计需要使用类图和包图,这个阶段需要设计类的接口并就系统的细节问题给出解决方案;实现阶段需要用到类图,程序员需要将类用面向对象语言实现;测试阶段会用到类图、包图、构件图、协作图、用例图,不同的测试阶段,测试内容和测试用途也不一样。
最后用对比的方法来分析这些图,顺序图和协作图,这两个图属于交互图,主要描述系统的动态行为,顺序图强调消息传递的时间顺序,协作图则强调对象之间的交互关系,顺序图的预期使用人员是系统分析人员,协作图的预期使用人员是系统分析人员和测试人员,这两个图是可以相互转换的。
顺序图举例:
协作图举例:
活动图和状态图,这两个图都属于行为图,主要描述系统的活动状态,状态图强调系统在某时刻所处的状态,活动图强调系统在某段时间内所发生发生的变化,活动图的预期使用对象是系统分析人员,状态图的预期使用人员也是分析人员,这两个图不可以相互转换。
活动图举例:
状态图举例:
部署图和构件图,这两个图都属于实现图,属于集成与交付阶段,部署图强调硬件设备及其相互关系,构件图则是其他元素的物理实现,部署图的预期使用对象是客户,构件图的预期使用搞对象是系统测试人员。
部署图举例:
构件图举例:
最后分析类图,用例图,包图,对象图,用例图是需求人员和客户的沟通桥梁,它是系统开发人员和客户达成的功能上的某种协议,类图是系统实现的基本的单元,也是面向对象程序设计的标准构件,对象是类的实例化,包图可以理解为类、对象的集合。
用例图举例:
类图举例:
纸上得来终觉浅,绝知此事要躬行。以上这些,算是UML的理论分析,更多的知识和心得需要通过天量的练习来获得了。
原文:http://blog.csdn.net/u010942465/article/details/23030855