疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

UML语言之组件图、部署图、顺序图


 

组件图
       对于现代的大型应用程序而言,通常不只是单独一个类或单独一组类所能完成的,通常会由一个或多个可部署的组件组成。对Java程序而言,可复用的组件通常打包成一个JRA, WAR等文件;对C/C++应用而言,可复用的组件通常是一个函数库,或者是一个DLL(动态链接库)文件。
       组件图提供系统的物理视图。它的用途是显示系统中的软件对其他软件组件(例如,库函数)的依赖关系。组件图可以在一个非常高的层次上显示,从而仅显示粗粒度的组件,也可以在组件包层次上显示。
UML使用一个特殊符号来表示组件,如图2.15所示:
      从图2.15中可以看出,本系统提供了一个Stock Information(股票信息)组件,该组件向其他组件提供股票信息,而该组件底层自依赖于Servlet2.4 API组件、JDBC API组件和Web Container(Web容器)组件。
部署图
       现代的软件工程早己超出早期的单机程序,整个软件系统可能是跨国家、跨地区的分布式软件。软件的不同部分可能需要部署在不同地方、不同平台之上。部署图用于描述软件系统如何部署到硬件环境中。它的用途是显示软件系统不同的组件将在何处物理地运行,以及它们将如何彼此通信。
       因为部署图是对物理运行情况进行建模,所以系统的生产人员就可以很好地利用这种图来安装、部署软件系统。
部署图中的符号包括组件图中所使用的符号元素,另外还增加了几个符号,主要是增加了节点的概念:节点是各种计算资源的通用名称,主要包括处理器和设备两种类型,两者的区别是处理器能够执行程序的硬件构件(如计算机主机),而设备是一种不具备计算能力的硬件构件(如打印机),UML中使用三维立方体来表示节点,节点的名称位于立方体的顶部。图2.16显示了一个简单的部署图示意。
      从图2.16中可以看出,整个应用可分为5个组件:Student, Administrator、应用持久层、Student数据库和UI界面组件,图2.16的部署图准确地表现了各组件之间的依赖关系。除此之夕卜部署图的重点在物理节点,图2.16反映该应用需要部署在4个物理节点上,其中普通客户端无须部署任何组件,直接使用客户端浏览器即可,管理者客户机上需要部署UI界面。应用服务器上需要部署Student, Administrator和应用持久层三个组件,而数据库服务器上部署Student数据库。
顺序图
       顺序图显示具体用例(或者是用例的一部分)的详细流程,并且显示了流程中不同对象之间的调用关系,同时还可以很详细地显示对不同对象的不同调用。顺序图描述了对象之间的交互(顺序图和通信图都被称为交互图),重点在于描述消息及其时间顺序。
       顺序图有两个维度:垂直维度以发生的时间顺序显示消息/调用的序列;水平维度显示消息被发送到的对象实例。顺序图的关键在于对象之间的消息,对象之间的信息传递就是所谓的消息发送,消息通常表现为对象调用另一个对象的方法或方法的返回值,发送者和接收者之间的箭头表示消息。
       顺序图的绘制非常简单。顺序图的顶部每个框表示每个类的实例(对象),在框中,类实例名称和类
名称之间用冒号或空格来分隔,例如,myReportGenerator : ReportGenerator。如果某个类实例向另一个类实例发送一条消息,则绘制一条具有指向接收类实例的带箭头的连线,并把消息/方法的名称放在连线上面。
对于某些特别重要的消息,我们还可以绘制一条带箭头的、指向发起类实例的虚线,将返回值标注在虚线上,绘制带返回值的信息可以使得序列图更易于阅读。图2.17显示了用户登录的顺序图。
       当绘制顺序图时,消息可以向两个方向扩展,消息穿梭在顺序图中,通常应该把消息发送者与接收者相邻摆放,尽量避免消息跨越多个对象。对象的激活期不是其存在的时间,而是它占据CPU的执行时期,绘制顺序图时,激活期要精确。
       阅读顺序图也非常简单,通常我们从最上面的消息开始(也就是时间上最先开始的消息),然后沿消息方向依次阅读。
       大多数情况,交互图中的参与者是对象,所以也可以直接在方框中放置对象名,UML1.x要求对象名有下划线;2.0不再需要。
       绘制顺序图主要帮助开发者对某个用例的内部执行清晰化,当需要考察某个用例内部若干对象行为时,应使用顺序图,顺序图擅长表现对象之间的协们顷序,不擅长表现行为的精确定义。(摘自[疯狂JAVA讲义].李刚)