Python设计模式 - UML - 部署图(Deployment Diagram)

简介

部署图也称配置图,用来显示系统中硬件和软件的物理架构。从中可以了解到软件和硬件组件之间的物理拓扑、连接关系以及处理节点的分布情况。

部署图建模步骤

    - 找出需要进行部署的各类节点,如网络硬件设备、服务器硬件设备、及部署在硬件设备上的软件系统等

    - 确定各类节点之间的连接关系及通信方式

    - 从性能、可扩展性、可维护性、可移植性角度确定各类节点的数目和部署方式

    - 绘制部署图,将artifact分配给各个节点

部署图主要元素

部署图中的主要元素有节点、物件和连接。其中节点根据其状态不同又有节点实例、节点容器等区别于节点的拓扑方式。

  • 节点(Node):硬件设备或运行在硬件设备上的软件系统。

    - UML表示

   

      - 节点实例:节点的实例形式。格式为instance name: Node,与类实例格式相似,冒号前面可以有实例名称也可以没有实例名称

        

      - 节点类型:根据节点是否能够进行

        - 处理器:本身具有计算、执行等软件运行处理能力的节点

        - 设备:本身不具有软件运行处理能力的节点

      - 节点容器(Node as Container):一个节点可以包括其他的物件或节点,比如Artifact类型的库文件、可执行文件等。

        

  • 物件(Artifact):UML部署图中的物件时软件开发过程中的产物,包括需求文档、源代码、库文件、可执行程序、库文件、用户手册等。

   UML标识为 artifact + 图标 或 <<artifact>> + Name

  • 连接(Association):节点或物件之间的连线。见部署图主要关系部分

部署图主要关系

部署图中节点或物件之间存在依赖或关联关系。

  • 依赖:节点的物件之间存在相互调用的弱关系

  • 关联:节点间的通信方式。跟具体的协议有关,比如TCP/IP, ftp, http, soap, web service等

部署图示例

以订单-库存系统为例

部署图与组件图的区别

    - 组件图侧重系统组件在软件层面的定义、结构及调用关系;部署图侧重系统组件在硬件层面的组织结构

    - 组件图侧重描述哪个组件位于哪个模块或包以及各个组件的版本信息;部署图侧重描述哪个组件部署在哪个硬件设备上以及硬件设备之间的交互关系

    - 组件图中的组件侧重源文件的模块化打包;部署图中的节点侧重组件的物理部署

    - 组件图中的组件和部署图中的Artifact相对照

部署图与组件图的联系

    - 组件图和部署图都是对系统实现的UML描述,联系起来对比使用,更易加深对整个系统架构的理解,一般来说大型项目两类图都需要

    - 组件图和部署图包含相同的构成元素:组件、接口、组件间关系、组件通过提供接口向外部提供的服务、组件通过需求接口向外部请求的服务

    - 组件图和部署图都包含关联、依赖关系

    - 组件图和部署图都可以被嵌套、都可以参与外部和内部接口间的交互通信

部署图注意事项

     - 一般部署图的绘画分为四阶段:

          - 第一阶段确定需要进行部署的各类节点,如网络硬件设备、服务器硬件设备、及部署在硬件设备上的软件系统等

          - 第二阶段侧重确定节点信息、节点关系、及连接方式

          - 第三阶段把物件分配到节点

          - 第四阶段根据性能、可靠性、可维护性、可移植性等确定各类节点的数目及拓扑方式

     - 对于部署图来说,最有价值的就是节点上的物件信息

     - 在UML1.x部署图规范中,组件图中的组件可以直接部署到节点中;在UML2.x规范中,组件图中的组件不能直接部署到节点,需要通过Artifact

     - 部署图中摆放元素时尽量避免线的交叉

原文地址:https://www.cnblogs.com/coolstream/p/9572870.html

时间: 2024-10-09 11:48:21

Python设计模式 - UML - 部署图(Deployment Diagram)的相关文章

Python设计模式 - UML - 总览

说到设计模式就不得不涉及建模思想,说到建模思想自然而然会应用UML,目前业界开源的UML工具很多,用起来也非常便捷.近几年来随着软件应用领域开发模式转向快速迭代试错,UML在敏捷开发,尤其是web及mobile开发领域应用越来越少. 就国内软件行业发展现状来说,稳定成熟的商业软件凤毛麟角,初具雏形的互联网App大行其道,竞争中的公司更看重的是快速占领市场,小团队快速迭代试错,而不是长期.精心打磨同一款软件产品,所以注重统一规范.充分需求分析.严密框架设计的UML显得相对繁琐,自然会被灵活敏捷的各

UML之部署图(Deployment Diagram)

计算机系统由硬件和软件组成,应用软件的命令,先转化为操作系统命令,再转化为汇编语言,最后再转化为二进制命令,由硬件来执行.软件要部署到硬件上才具有生命.Deployment Diagram展示的就是把什么样的软件部署到什么样的硬件上的过程,主体还是软件.因为关注的是部署,所以主体分割衡量标准就是,是否能够独立部署.Deployment Diagram里面的主体叫Node,用长方体来表示.下面讲从Node以及Node之间的关系两个方面来说明. Node Node里面有三个部分: Node名字 No

Python设计模式 - UML - 类图(Class Diagram)

简介 类图是面向对象分析和设计的核心,用来描述系统各个模块中类与类之间.接口与接口之间.类与接口之间的关系,以及每个类的属性.操作等特性,一般在详细设计过程中实施. 类图本身就是现实世界的抽象,是对系统中各种概念进行建模,并描绘出它们之间的关系,所以类图关注的对象就是元素及元素之间的关系. 类图建模步骤 - 抽象出类实体 - 识别出类的主要属性 - 画出类之间的关系 - 对各个类进行分析.梳理.设计 类图的元素 类图中包含以下几种模型元素:类.接口.关系.协作.注释.约束.包. 类 在UML的图

【UML】部署图Deployment diagram(实现图)(转)

http://blog.csdn.net/sds15732622190/article/details/49049665 前言 下面要介绍UML中的部署图,和构件图一样,它也属于实现图的一种,五种静态图之一. 定义 部署图描述了运行软件的系统中硬件和软件的物理结构,描述了一个系统运行时的硬件节点. 构成 部署图由节点和节点之间的联系组成,描述了处理器,设备和软件构件运行时的体系结构. 节点 存在于运行时并代表一项计算资源的物理元素.一般用于对执行处理或计算的资源建模.在建模过程中,可将节点分为处

Python设计模式 - UML - 组件图(Component Diagram)

简介 组件图又称构建图,用于显示系统各组件及各组件关系的物理视图. 组件图通常包括组件.接口.关系.端口和连接器,用来显示程序代码中相应的模块.源文件或源文件集合之间的依赖和泛化关系. 组件图中的组件通常由类图中的一个或多个类(对象)实现为系统中的模块.源文件.过程文件或可执行文件,最终构成系统的绝大部分功能单元. 组件图建模步骤 - 确定系统有哪些对外接口或端口 - 确定系统要用到哪些组件,识别出系统中的重要模块.库文件.源代码文件.数据表或文件.可执行文件或文档等,将其建模为一个个组件 -

Python设计模式 - UML - 包图(Package Diagram)

简介 包图是对各个包及包之间关系的描述,展现系统中模块与模块之间的依赖关系.一个包图可以由任何一种UML图组成,可容纳的元素有类.接口.组件.用例和其他包等.包是UML中非常常用的元素,主要作用是分类.容纳其他元素.包与包之间的关系有泛化.细化和依赖,主要取决于包内部成员之间的关系. 包图建模步骤 - 分析系统的模型元素,运用分层设计把概念.语义和逻辑上相近的元素包含在同一个包中 - 对于每个包,分析包内每个元素的可访问属性,并标识出该元素的可见性 - 确定包与包中元素之间的泛化.细化.依赖关系

python设计模式之门面模式

一.结构型设计模式 门面模式与单例模式,工厂模式不同,它是一种结构型模式. 结构型模式描述如何将对象和类组合成更大的结构 结构型模式是一种能够简化设计工作的模式,它能找出更简单的方法来认识或表示实体之间的关系. 结构型模式是类和对象模式的综合体.类模式通过继承来描述抽象,从而提供更有用的程序接口,而对象模式描述了如何将对象联系起来从而组合成更大的对象. 二.理解门面设计模式 它为子系统中的一组接口提供一个统一的接口,并定义一个高级接口来帮助客户端通过更简单的方式使用子系统. 门面所解决的问题是,

Python设计模式——设计原则

1.单一职责原则:每个类都只有一个职责,修改一个类的理由只有一个 2.开放-封闭远程(OCP):开放是指可拓展性好,封闭是指一旦一个类写好了,就尽量不要修改里面的代码,通过拓展(继承,重写等)来使旧的类满足新的需求,而不是修改一个类里面的代码. 3.依赖倒转原则:高层模块不应该依赖底层模块,两个都应该依赖抽象:抽象不应该依赖细节,细节应该依赖抽象.底层模块例如很多工具类,例如专门用于管理sql连接的类,管理文件,管理socket连接的类,高层类指具体实现需求的类.高层类和底层类都不应该相互依赖,

Python设计模式——工厂方法模式(FactoryMethod)

需求:有一个学雷锋活动,有买米和扫地两个内容,参与的人有大学生和社区志愿者,他们各自的方法不一样. 如果用简单工厂模式实现: #encoding=utf-8 __author__ = '[email protected]' class LeiFeng(): def buy_rice(self): pass def sweep(self): pass class Student(LeiFeng): def buy_rice(self): print '大学生帮你买米' def sweep(self