概述

常用建模方法:BOOCH、OMT、OOSE等
统一建模语言:UML(Unified Modeling Language)
软件开发过程:RUP(Rational Unified Process)
建模工具:PD(PowerDesigner)、Rose等
                 

RUP的二维空间

用例图

用于定义系统的功能需求,描述了系统的参与者与系统提供的用例之间的连接关系。其中,参与者可以人,也可以另一个系统。用例图仅从参与者使用系统的角度描述系统中的信息。

  • 依赖:uses a,使用了某个对象,依赖于某个对象,扩展了某个对象。

    图形:  使用方 ----use----> 被使用方

  • 聚合:has a,包含某个对象,就可以说是聚合了某个对象。

    图形: 包含方 <>----has----- 被包含方

  • 继承(泛化):is a,(本质)是某个类,就可以说是继承了某个类。

    图形:子类 ----is----|> 父类

                              

类图、包图

用来描述系统中的类以及类与类之间的静态关系。

关联关系示例:                                泛化关系示例:

      

依赖和实现关系示例:                     抽象类示例:

                 

接口示例:

对象图

用来描述特定时刻实际存在的若干对象以及它们之间的关系。一个系统的模型中可以包含多个对象图,每个对象图描述了系统在某个特定时刻的状态。

组件图(Component Diagram)

用来建模系统的各个组件(包括源代码文件、二进制文件、脚本、可执行文件)之间的关系,它们是通过功能或者位置(文件)组织在一起的。

使用组件图有助于对系统感兴趣的人了解某个功能单元位于软件包的什么位置,以及各个版本的软件包各包含哪些功能。

组件、接口和依赖关系

              

组件1实现了接口,组件2使用了接口

部署图(Deployment Diagram)

帮助系统的有关人员了解软件中各个组件驻留在什么硬件上,以及这些硬件之间的交互关系。另外,部署图还可以用来描述哪一个软件应该安装在哪一个硬件上。

节点和关联关系

活动图

用来描述工作流,其中每个活动都代表工作流中一组动作的执行。

主要的标记组件:活动、状态、转移和(判断、分叉、汇合、泳道和对象流等)多种标记符

事件和触发器                              父活动与子活动

        

泳道

流程步骤

  (1)标识需要活动图的用例。
  (2)建模每一个用例的主路径。
  (3)建模每一个用例的从路径。
  (4)添加泳道来标识活动的事务分区。
  (5)改进高层活动并添加到更多活动图。

顺序图

描述了一个相互作用、在以时间为次序的对象之间的通讯集合。当执行一个用例行为时,顺序图中的每条消息对应了一个类操作或状态机中引起转换的触发事件。它着重显示了参与相互作用的对象和所交换消息的顺序。

顺序图和协作图表达了相似的信息,但是它们以不同的方式显示。

4个标记符:对象、生命线、消息和激活。
 
 递归(自回调)与回调                      分支和从属流
        
复杂的顺序图

  • alt——选择。有多重片段供选择,且必选其一,只有当其保安条件为真的片段才被执行。
  • opt——任选。有多重片段供选择,只有当其保安条件为真的片段才被执行。
  • par——并行。每个片段都并发执行。
  • loop——循环。片段可重复执行,保安条件给出执行条件。
  • region——临界区域。片段只有一个线程对它立即执行。
  • neg——否定。片段指明一次无效的交互。
  • ref——引用。引用在其它图上定义的一个交互。

流程步骤:

  (1)确定需要建模的用例
  (2)确定用例的工作流
  (3)确定各工作流所涉及的对象,并按从左到右顺序进行布置
  (4)添加消息和条件以便创建每一个工作流

通信图

顺序图按照时间顺序布图,而通信图按照空间组织布图。顺序图着重于对象间消息传递的时间顺序,通信图着重于表达对象之间的静态连接关系。

  对象角色(3种类型的对象实例)

    

迭代                              自调用和回调

          

时序图

显示系统内各对象处于某种特定状态的时间,以及触发这些状态发生变化的消息。

状态机图

用于指定对象的行为以及根据不同的当前状态行为之间差别。同时,它还能说明事件是如何改变一个类对象的状态。

对象、状态、事件、转移和动作

 决策点(分支)                          同步(并发)

        

组合状态

  顺序子状态                                并发子状态

            

同步状态                                  历史状态

          

UML图例的更多相关文章

  1. java 类与类之间的关系 及uml图

    类与接口之间的关系 : 继承 类与类之间的关系 :继承关系  包含关系 类与对象之间的关系 : 实例 UML 类图中类与类之间的关系: 泛化关系(generalization) 关联关系(associ ...

  2. Python设计模式 - UML - 总览

    说到设计模式就不得不涉及建模思想,说到建模思想自然而然会应用UML,目前业界开源的UML工具很多,用起来也非常便捷.近几年来随着软件应用领域开发模式转向快速迭代试错,UML在敏捷开发,尤其是web及m ...

  3. 设计模式中类的关系UML

    在java以及其他的面向对象设计模式中,类与类之间主要有6种关系,他们分别是:依赖.关联.聚合.组合.继承.实现.他们的耦合度依次增强. 1. 依赖(Dependence)  依赖关系的定义为:对于两 ...

  4. ZT UML 类与类之间的关系

    1.聚合关系是关联关系的一种,是强的关联关系.     2.聚合是整体和部分之间的关系,例如汽车由引擎.轮胎以及其它零件组成. 3.聚合关系也是通过成员变量来实现的.但是,关联关系所涉及的两个类处在同 ...

  5. 牛腩新闻系统(一)——UML、数据库设计

    牛腩新闻系统(一)--UML.数据库设计 一.初识牛腩系统 牛腩(Brisket)即牛腹部及靠近牛肋处的松软肌肉,是指带有筋.肉.油花的肉 块.这是一种统称. 若依部位来分,牛身上很多地方的肉都能够叫 ...

  6. 两张图示轻松看懂 UML 类图

    一个类如何表示 第一格为类名 第二格为类中字段属性 格式:权限 属性名:类型 [ = 默认值 ] 权限:private.public .protected.default,它们分别对应 -.+.#.~ ...

  7. UML ——区分类图中的几种关系.md

    目录 关联关系 (association): 聚合关系 (aggregation): 合成关系 (composition): 依赖关系 (dependency): 总结: 原文地址 http://ww ...

  8. 设计模式之十三:适配器模式(Adapter)

    适配器模式: 将一个类的接口转换成另外一个期望的类的接口.适配器同意接口互不兼容的类一起工作. Convert the interface of a class into another interf ...

  9. [学习笔记]设计模式之Factory Method

    写在前面 为方便读者,本文已添加至索引: 设计模式 魔法手札索引 在上篇笔记Abstract Factory设计模式中,时の魔导士创建了一系列的FoodFactory,并教会了其中一名霍比特人theC ...

随机推荐

  1. VS2013 未找到与約束ContractName

    vs2013打开项目无法加载项目,关闭时提示  未找到与約束ContractName... 解決方法,打開控制面板,找到下面這個程序 右击,选 择 修 复

  2. 如果在敲代码的时候eclipse不弹出提示,怎么办?

    非常弱智的操作,我们曾经在输入System.out.println("content");的时候,当我们输入了"."之后,在输入错误,此时我们再回退至" ...

  3. 通过android 客户端上传图片到服务器

    昨天,(在我的上一篇博客中)写了通过浏览器上传图片到服务器(php),今天将这个功能付诸实践.(还完善了服务端的代码) 不试不知道,原来通过android 向服务端发送图片还真是挺麻烦的一件事. 上传 ...

  4. 如何使用国内源部署Ceph?

    由于网络方面的原因,Ceph的部署经常受到干扰,通常为了加速部署,基本上大家都是将Ceph的源同步到本地进行安装.根据Ceph中国社区的统计,当前已经有国内的网站定期将Ceph安装源同步,极大的方便了 ...

  5. iOS开发小技巧--TableView中headerView的循环利用,以及自定义的headerView

    一.首先要搞清楚,tableView中有两种headerView,一个是tableHeaderView,另一个是headerView.前者就一个;后者根据session决定个数 headerView的 ...

  6. java中的this和super的作用和异同和C++中调用父类的构造函数

    来源于:http://www.cnblogs.com/hasse/p/5023392.html 这几天看到类在继承时会用到this和super,这里就做了一点总结,与各位共同交流,有错误请各位指正~ ...

  7. eclipse中如何远程java debug配置

    1.Window中修改startup.bat文件,在顶部添加如下: SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE - ...

  8. 跨域http请求

    <?php header("Access-Control-Allow-Origin: *"); header("Content-Type: application/ ...

  9. js-处理回车事件

    /**回车 */ function enterkey() { //兼容IE或其它其它浏览器 var event = arguments[0] || window.event; //兼容IE或其它浏览器 ...

  10. EF(Entity Framework)发生错误”正在创建模型,此时不可使用上下文“的解决办法。 正在创建模型,此时不可使用上下文。如果在 OnModelCreating 方法内使用上下文或如果多个线程同时访问同一上下文实例,可能引发此异常。请注意不保证 DbContext 的实例成员和相关类是线程安全的。 临时解决了这个问题,在Context的构造函数中,禁用了自动初始化:

    解决方案: 禁止上下创建. 修改.删除,默认为true public DataDbContext() : base("name=DataDbContext") {  this.Da ...