什么是模型

模型是对现实的简化

模型是提供系统的蓝图,模型可是包括详细计划。也可是是从更高程度考虑系统的总体计划,每个系统可以从不同的方面用不通过的模型来描述。因而每个模型都是在语义上闭合的抽象系统。模型可以是结构性的,强调系统的组织。也可是是行为性的,强调系统的动态方面

举例:售楼中心里面的楼盘蓝图

为什么建模

建模是为了能够更好地理解正在开发的系统

通过建模达到下面的目的
1、模型有助于按照实际情况或按照所需的样式对系统进行可视化
2、模型能够规约系统的结构或行为
3、模型给出了构造系统的模板
4、模型对做出的决策进行文档化
对于一个复杂的系统,如银行、电信系统建模的重要性就越大。如果不能很好的理解一个复杂系统,盲目开发,失败的可能性很大。

什么是UML

统一建模语言(Unified Modeling Language , UML) 是一种绘制软件蓝图的标准语言,可以用UML对软件密集的制品进行可视化、详述、构造和文档化
1、可视化:清晰的模型有利于交流
2、详述:可以使用uml对分析、设计、实现等决策进行详细描述
3、构造:把uml描述映射成编程语言
4、文档化:系统的所有细节都可以是uml进行描述。如:项目计划、发布活动等

应用领域:

1、企业信息系统
2、银行与金融服务
3、电信
4、国防、航天
5、科学
6、基于Web的分布式服务

在这里建模工具我是使用的VS2012自带的。

文件——新建——项目——建模项目

一、类图

1.1类

一群对象(object)享有相同的结构、行为、约束和语义时,称它们是同类(class)的对象。换句话说,定义一个类就相当于描述了一群对象。在类中, 使用属性(attribute)表达对象的结构, 使用操作(operation)表达对象的行为。

类是一组具有相同属性、操作、关系和语义的对象描述,一个类可是实现一个或者多个接口。左图是类在.net里面的图形表示

1.1.1 可见性与抽象类

UML预设了四种可见性,分别为公开(public)、私有(private)、保护(protected)、包(package) 减号(-)为私有可见性,加号(+)为公开可见性

在UML中抽象类与普通是同一个是图表示,只是名字会变成斜体。

1.2关系

关系是事物之间的联系,在面向对象的建模中,有三种重要的关系是依赖、泛化、关联

1.2.1依赖(Dependency)

依赖是一种使用关系,一个事物使用另一个事物。在图形上,把依赖画成一条有方向的虚线,指向被依赖的事物。如果被使用的类发生变化,那么另一个类的操作必然受影响

依赖这是一种典型的临时关系,代表了类之间的一种短暂的交互。依赖关系在 .net语言中体现为 局部变量、方法的参数或者对静态方法的调用,如工具类,现实生活中人与锤子。

1.2.2 泛化(Generalization)

在泛化关系中,子类继承了父类的行为和含义,子类也可以增加新的行为和含义或覆盖父类中的行为和含义。在图形上,在泛化画成一个带有空心三角行指向父类

在.Net里面泛化就是继承关系

1.2.3 关联(Association)

关联是一种结构关系,它指明一个对象与另一个对象间的关系。

ClassA与ClassB相互关联
相互关联体现的是两个类、或者 类与接口之间语义级别的一种强依赖关系,是一种长期的稳定的关系;表现在代码层面,为被关联类以类属性的形式出现在关联类中,也可能是关联类引用了一个类型为被关联类的全局变量
单向关联
ClassA关联于ClassB


单向关联表现在代码层面,为被关联类B以类属性的形式出现在关联类 A中,也可能是关联类A引用了一个类型为被关联类B的全局变量;

1.2.3 .1  聚合关系(Aggregation)


聚合是关联关系的一种特例,他体现的是整体与部分拥有的关系。此时整体与部分之间是可分离的,他们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享;比如汽车与发动机;表现在代码层面,和关联关系是一致的,只能从语义级别来区分

1.2.3.2组合关系(Composition)


组合也是关联关系的一种特例,这种关系比聚合更强,也称为强聚合;他同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束;孕妇死了胎儿自然也就死了;表现在代码层面,和关联关系是一致的,只能从语义级别来区分

1.2.3.3 关联关系的多重性


不建议使用双向关联. 关联有两个端点, 在每个端点可以有一个基数, 表示这个关联的类可以有几个实例.
常见的基数及含义
0..1:0 或1 个实例.
0..*: 对实例的数目没有限制.
1: 只能有一个实例.
1..*: 至少有一个实例.

1.3接口

接口(interface)如同契约,负责的类必须负责实现它的公开操作,以及负责维护它的公开属性

案例:公司-部门-员工 类图关系

1.4正向工程、逆向工程

正向工程: uml图生成代码
在图上直接点击右键,选择“”生成代码“就可完成正向工程骤
逆向工程:从代码生成uml图  
   通过体系结构资源管理器找到需要反向工程的类的类型,拖到uml图中。或者是在项目里面找到类的类型拖到项目里面也可以完成反向工程


注意:在反向工程的时候,类的绝对路径里面不能出现中文

二、用例图

2.1用例图说明

用例图用来表达系统对外提供的服务或功能,适合用来作为需求搜集阶段的工作。

2.2用例与执行者

常用用例(UseCase)来表达系统需求或者系统对外呈现的行为,用例采用椭圆图示,参与者(Actor)是人型图示,由于它会参与系统的运作,因此它跟用例之间有连接线段


可以将自动柜员机的行为分成三个不同的用例,分别为取款、存款、加钱。自动柜员机外部一共有两个参与者会参与自动柜员机的行为,一个名为用户,另一个名为银行。顾客会参与前两个用例,应该参与最后一个用例

2.3包含关系(include)

包含(include)关系指的是两个用例之间的关系,其中一个用例(称作基本用例,base use case)的行为包含了另一个用例(称作包含用例,include case)的行为。如图取款的 时候会包含一个用户验证的用例

2.4扩展关系

扩展(extend)关系:将基本用例中一段相对独立并且可选的动作,用扩展(Extension)用例加 以封装,再让它从基用例中声明的扩展点(Extension Point)上进行扩展,从而使基用例行为更简练和目标更集中。如图我们在取完款后,可以打印凭条,也可以不用打印凭条。这个功能就可以使用扩展来表示

三、活动图

活动图通常用来表达业务流程、工作流或系统流程中一连串的动作


简单的登陆流程,登陆失败,跳转到登陆页面,登陆成功跳转到主界面
每个活动图只能有一个开始节点,但是可以有多个结束节点

3.1动作与控制流

动作(activity)是最重要的组成元素,它代表一个执行步骤


带箭头的连接线称为控制流(control flow)。当来源动作结束之后,控制流会启动目标动作。

3.2 对象节点与对象流

对象节点(object node)为矩形图示,对象流(object flow)的图示与控制流相同,不过它的其中一个端点必须是对象节点,而另一端必须是其他节点。控制流的两个端点不可以都是对象节点。对象流不同于控制流,对象流可以携带数据或对象。

如图在登陆成功后,我们将用户对象传递到下一个节点

如果将对象节点当成活动的参数,用于输入或输出活动,就可以改用活动参数节点(activity parameter node)。参数节点其实也是一种对象节点
3.3决策与合并
活动流程中,流程交汇点,称为合并节点(merge node)。一个合并节点会有多条进入线,但是只有一条离开线,合并节点的图示是大的空心菱形,所有进入合并节点的支流都会经历同一条离开线

决策节点(decision node)与合并节点共用图示,两者都是大的空心菱形。不过,决策 节点只有一个进入线,但有多条离开线

3.4分叉和连接

分叉表示的是一个控制流被两个或多个控制流代替,经过分叉后,这些控制流是并发进行的
连接正好与分叉相反,表示两个或多个控制流被一个控制流代替。使用分叉需要使用连接把分叉的流汇聚成一个流

3.5发送信号操作与接受事件操作

发送信号操作是一种操作,可以将消息或信号发送给另一个活动。
接受事件操作是一种要在等到消息或信号后才能继续执行的操作。

四、序列图(时序图)

序列图用来表达系统内部一群对象的交互情况,它是一种行为图。水平方向是对象维,垂直方向是时间维


page与action之间的交互情况,可以用实例图 来表示,在发送list请求的时候我们需要一个返回结果集

4.1生命线

生命线(lifeline)代表一个参与交互的实例,它的图示是顶端连接矩形的虚线,虚线顶部的矩形可以放置生命线的名称。

4.2执行发生

对象在接收到消息之后执行一项活动,执行期间称为执行发生(execution occurrence),它的图示是长条矩形。

4.3消息

消息(message)的图示是一条带箭头的线段,横跨在两个生命线上,对象之间通过发送消息来交互。

序列图中有四种常见的消息
创建消息(createMessage)用来创建对象的消息称为创建消息,它的图示是带箭头的虚线,箭头指向目标对象。
同步调用(synchCall)—这是最常见的消息。它的图示是箭头的实线,由发送消息的来源对象指向负责执行的目标对象。

回复消息(replyMessage)目标对象执行结束时,会发出回复消息给来源对象。它的图示是带箭头的虚线,从负责执行的目标对象反向指回来源对象
异步信号(asynchSignle)同步与异步的差别在于,来源对象是否等待目标执行结束才继续往执行。来源对象如果发送同步消息,会等待,如果发送异步消息,就不等待了。

4.4终止

生命线有生有灭,终止(stop)就是用来表达生命线终止的时刻。终止的图示是一个大叉,放置在生命线的虚线底部,代表生命线已经终止。

UML(Unified Modeling Language)统一建模语言的更多相关文章

  1. UML(Unified Modeling Language)同一建模语言

    wiki定义: UML is a general-purpose, developmental, modeling language in the field of software engineer ...

  2. 学习笔记之UML ( Unified Modeling Language )

    Unified Modeling Language - Wikipedia https://en.wikipedia.org/wiki/Unified_Modeling_Language The Un ...

  3. 技术人应该学习的行话--UML统一建模语言

    新生代码农如何在硝烟弥漫的商业丛林中生存和崛起? 洞见,让一部分先遇见未来. 最近公司技术部在组织架构师培训,有幸参与.导师老刘特别推荐了UML语言的学习.回想多年来,自己习惯做一些流程图,框图或者所 ...

  4. 设计模式学习总结(一)——设计原则与UML统一建模语言

    一.概要 设计模式(Design Pattern)是一套被反复使用.多数人知晓的.经过分类的.代码设计经验的总结. 使用设计模式的目的:为了代码可重用性.让代码更容易被他人理解.保证代码可靠性. 设计 ...

  5. 2017.12.23 第二章 统一建模语言UML概述

    第二章 统一建模语言UML概述 (1)为什么要建模 模型是某个事物的抽象,其目的是在构建这个事物之前先来理解它,因为模型忽略了那些非本质的细节,这样有利于更好的理解和表示事物: 在软件系统开发之前首先 ...

  6. 统一建模语言(UML,Unified Modeling Language)

    Something about UML: 统一建模语言(UML,英语:Unified Modeling Language)是非专利的第三代建模和规约语言.UML是一种开放的方法,用于说明.可视化.构建 ...

  7. 统一建模语言UML

    目录 1. UML定义 2. UML结构 2.1 视图(View) 2.2 图(Diagram) 2.3 模型元素(Model element) 2.4 通用机制(General mechanism) ...

  8. 【UML】统一建模语言

    如果是准备学习设计模式的同学,可以只了解类图相关的知识 而如果是在准备软件设计师考试的同学,或许会对你有点帮助 正在施工...... 参考博客:https://blog.csdn.net/unique ...

  9. The Unified Modeling Language(UML)

    统一过程建模语言UML 统一过程建模语言UML是一种标准的可视化建模语言,使用在:  业务建模和类似的过程 居于软件系统的分析.设计.和实现 UML 是一门通用语言,提供给业务分析员,软件架构师和开发 ...

随机推荐

  1. C# Azure 存储-分布式缓存Redis在session中的配置

    1. 开始 对于分布式的缓存,平常的session的处理是一个用户对应一台分布式的机器,如果这台机器中途挂机或者不能处理这个用户session的情况发生,则此用户的session会丢失,会发生不可预知 ...

  2. python 日期计算案例

    一.计算两个日期内的所有月 def get_month_interval(start_str, end_str): start_year, start_month = list(map(int, st ...

  3. SQL Server 数据库子查询基本语法

    一.SQL子查询语句 1.单行子查询        select ename,deptno,sal        from emp        where deptno=(select deptno ...

  4. Entity Framework Code First实体对象变动跟踪

    Entity Framework Code First通过DbContext.ChangeTracker对实体对象的变动进行跟踪,实现跟踪的方式有两种:变动跟踪快照和变动跟踪代理. 变动跟踪快照:前面 ...

  5. 解读sencha touch移动框架的核心架构(一)

    sencha的前身就是Extjs了,sencha 框架是世界上第一个基于HTML5的Mobile App框架 那么何谓框架,传统软件工程对于库和框架的区分主要着眼于对应用运行流程的控制权,框架提供架构 ...

  6. 《JS设计模式笔记》 2,简单工厂模式

    <script type="text/javascript"> //简单工厂模式 //定义:由一个方法来决定到底要创建哪个类的实例,而这些实例经常拥有相同的接口.其实例 ...

  7. Hawk: 20分钟无编程抓取大众点评17万数据

    1. 主角出场:Hawk介绍 Hawk是沙漠之鹰开发的一款数据抓取和清洗工具,目前已经在Github开源.详细介绍可参考:http://www.cnblogs.com/buptzym/p/545419 ...

  8. iOS开发之遍历Model类的属性并完善使用Runtime给Model类赋值

    在上篇博客<iOS开发之使用Runtime给Model类赋值>中介绍了如何使用运行时在实体类的基类中添加给实体类的属性赋值的方法,这个方法的前提是字典的Key必须和实体类的Property ...

  9. Linux笔记之——Linux关机命令详解(转)

    原文连接:http://www.jb51.net/os/RedHat/1334.html 在linux下一些常用的关机/重启命令有shutdown.halt.reboot.及init,它们都可以达到重 ...

  10. 磁盘操作系统(DOS)

    一.概要 Disk Operation System(DOS)即磁盘操作系统,与win7一样是一个操作系统,字符界面,单用户,单任务. dos,是磁盘操作系统的缩写,是个人计算机上的一类操作系统.从1 ...