UML - 2 其他类型的图

1. 对象图(Object Diagram)

对象图也叫实例图(instance diagram)是系统运行的某一瞬间的对象的一个快照。对象图用来展示连接的对象。


2.包图(Package Diagram)

包图描述的结构层次在类图之上。便于跟清晰地描述大型系统。包用来把类进行分组。包也是一个划分命名空间的单位,不同的包里可以有同名的类。包图的一个重要作用是展示包之间的依赖关系。在OO原则中有6个原则用来指导包的划分。他们是REP(发布与重用等价原则),CCP(统一封闭原则,类比于类划分的单一职责原则) CRP(统一重用原则,包里的类要么一起被重用,要么反之),ADP(无环依赖原则,包之间不能有环路),SDP(稳定依赖原则,不问题的包依赖稳定包,越底层的包越稳定) 跟 SAP(稳定抽象原则,类比于开发封闭原则。抽象类集中的包应该月稳定)。

包的划分应该从领域的角度进行,不建议从技术角度。包的命名最终成为领域语言的一部分。


3.部署图(Deployment Diagram)

部署图揭示系统的物理布局。通过此图我们可以知道那一部分软件运行于那个硬件之上。一个设备(device)或一个执行环境(execution environment)都可以表示成一个节点(Node)。节点中可以包含工件(artifact)。工件可以是任何可执行的软件,数据文件,配置文件,等等。通常地一个工件是一个组件(component)的实现。


4.用例图(Use Cases)

用例图用来捕获系统的功能需求。在实际中,文字描述能更好的描述功能需求。所以实际中用例图一定要加上文字的描述。用例图更多用来同业务分析人员进行沟通,因此,简洁的文字描述更能起到好的效果。

用例图描述用户跟系统的关系。我们应从用户的角度来描述此图。

在用文字描述用例时,我们先逐步描述一个成功的场景(main success scenario)。然后补充辅助跟扩展路径(extensions)。除了这些路径,我们可以加上先决条件(pre-condition), 保证条件(guarantee)跟 出发条件(trigger)。

用例可以有不同的方法来划分层次。

一种是我们把他们分为系统用例(system use case)跟业务用例(business use case)。

另一种(Cockburn)我们把用例分为 海层(sea-level),风筝层(kite-level)跟鱼层(fish-level)。sea-level描述主要actor跟系统间具体交互。fish-level用力是被sea-level包含的用例。Kite-level是比sea-level更高级的用例,比更广泛的业务范围所包围。kite-level一般对应业务用例。

用例开发是开发过程中较早期用到,我们要避免用例复杂化,因为需求会不断变化,我们对系统的了解也是一个逐步深入的过程。


5.状态机图(State Machine Diagram)

状态机图是用来描述某个类的一个对象的生命周期的行为图。一个状态可能有内部活动(Internal activity),这些活动不会改变状态。有一类状态是活动状态(Activity States),不同于一般状态的是,这种状态是一个持续活动的状态,这状态的完成会进入下一个状态。比如searching 状态,一旦他完成就会进入信息呈现状态。另外当一些状态共享一些共同的演化或内部活动时,我们可以加入一个超级状态(superstates)来承载这个共同点,简化视图。在是现实我们可以考虑用状态模式进行实现。

状态图虽然不能描述多个对象,但是可以跨用户实例描述一个对象行为。所以状态机图常常联合其他图一起进行描述。


6.活动图(Activity Diagram)

活动图用来描述过程逻辑,业务过程跟工作流。活动图在很多方面跟流程图有相同的用途。活动图中的节一个结点就是一个动作(action)不是活动(activity)。根据定义活动是一系列的动作。活动图就是通过一些列动作描述一个活动。

我们这一在UML找到一种画流程图的替代品。活动图还能很好地表述并发。

在活动图中我们可以通过划分类似泳道(partition)来表示动作属于哪个类。


7.通信图(Communication Diagram)

通信图跟序列图都是交互图(Interaction Diagram)。通信图强调的是参与之间的数据联系,不像序列图中清楚的信息调用顺序。此图的参与者主要是类的实例。

通信图可以清晰地画出自调用。

通信图比序列图跟好在白板上展示。


8.组件图(Component Diagram)

组件跟类在OO界存在一些争议,争议在谈间的不共同点。组件不是技术概念,更多的是从客户的角度怎么来开软件。用户希望他们可以一片一片地购买升级软件,并希望新购的一片系统可以无缝地跟现有系统集成。所以有一种定义是组件是一片一片可单独购买并可单独升级维护的软件块。所以组件跟多的是市场的决定。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章