前言

看完UML视频,很多人不明白UML到底是干什么用的,举个通俗的例子,就像盖房子一样,厨房卧室楼层之间怎么拼接,每个部分用什么材料,每个部分里放什么家具什么餐具,每个部分是干吗用的,UML就相当于施工图纸。我们知道,做一个小系统就像盖一间小房子,不需要图纸也可以,但是如果做大系统,试想,没有图纸,摩天大楼怎么拔地而起?

老生常谈,首先,得说一下UML的主要内容。

面向对象技术

1、出现于20世纪70年代末,软件工程领域中的重要技术。
2、是一种程序设计方法。
3、对现实世界中问题的抽象方式。
4、对面向对象建模技术的研究的主要成果就是统一建模语言UML。

软件质量衡量指标

外部:
1、正确性
2、健壮性
3、性能
内部:
1、模块性
2、灵活性和可扩展性
3、可复用性
4、可兼容性
作用:提高了软件质量。

模型与可视化建模

模型:对现实的简化,把复杂系统变成小系统。
可视化:一幅图胜过千言万语。

模型组成

系统(模型的对象)
目标(系统的目标)
组分(构成系统的各种组分或子系统)
约束条件(系统所处的环境及约束条件)
变量(表述各组分的量的变化,分内部变量,外部变量和状态变量)

模型表示

M={O,G,T,V,R,S},其中
O:模型对象集
G:模型目标集
T:模型系统所处环境及约束条件集
V:模型变量集
R:变量间关系集
S:模型状态集(初→终)

建模原理

分解、抽象、泛化(继承)、投影/视图、构件化(软件做成构件,有统一接口)、形式化

什么是UML

1、UML(Unified Modeling Language):统一建模语言是用来设计软件蓝图的可视化建模语言。
2、支持面向对象系统的分析、设计、实现和交付等各个环节,可用于系统的理解,设计,浏览,维护和信息控制。
3、在Booch方法,OMT方法,OOSE方法基础上,广泛民主的发展而成。
4、1997年11月被OMG组正式采纳。
5、不是一个程序设计语言。
6、不是一个形式化语言。
7、是可视化建模语言。

软件过程

RUP

统一软件过程RUP(Rational Unified Process):目前影响大,面向对象的软件开发过程。

特点

1、用例驱动(用户需求驱动)
2、以架构为中心
3、采用迭代和增量的开发过程

四阶段

初始、细化、构造、移交。
每个阶段又包括多个迭代过程。

软件危机主要特征

1、开发周期大大超过规定日期。
2、软件开发成本严重超标。
3、质量难于保证。

软件开发面临的问题

1、不能满足用户或商业要求。
2、不能很好的定位需求。
3、模块难于集成。
4、到最后才发现错误。
5、对于终端用户来说质量较差。
6、负载时性能差。
7、没有协调团队的努力。
8、不断地修改—发布问题。

UML工具

1、Rational Rose
2、Together
3、Microsoft Visio

UML构成

1、事物(构成模型图的一些基本图形符号,表示一些面向对象的基本概念)
2、关系(表示基本图示符号之间的关系)
3、图(特定的视角对系统所做的抽象的描述)
总结:事物是对模型中最具有代表性的成分的抽象;关系把事物结合在一起;图聚集了相关的事物。

事物(things)

结构事物(静态部分)

1、类(对一组具有相同属性、方法、关系和语义的对象的描述,一个类实现一个或多个接口)
2、接口(描述了一个类或构建的一个服务的操作集,接口仅仅定义了一组操作的规范,并没有给出操作的具体实现,类给出了具体实现)
3、协作((定义了一个交互,有结构,行为和维度,一个给定的类可以参与几个协作)
4、用例(对一组动作序列的描述。需求分析阶段。)
5、主动类(其对象至少拥有一个进程或线程,因此它能启动控制活动)
6、构件(比类大。系统中物理的、可替代的部件,遵循且提供一组接口的实现。存在形式多样。)
7、节点(运行时才存在的物理元素,有记忆能力和处理能力。用立方体表示。)

行为事物(动态部分)

1、交互(行为,特定语境中完成特定任务的一组对象之间交换的消息组成。一个对象的群体的行为或单个操作的行为可用一个交互来描述)
2、状态机(状态,转换,事件,圆边矩形表示)

分组事物(组织部分)

1、包(把元素组织成组的机制,唯一的组织机制,可以是类、接口、构件、节点、协作、用例和图、甚至其他包)

注记事物(解释部分)

1、注释(描述说明和标注模型的任何元素)

关系

关联

描述了两个或多个类之间的结构性关系。

依赖

两个事物之间的使用关系

泛化

特殊/一般关系,特殊元素<子元素>的对象可替代一般元素<父元素>的对象,用这种方法,子元素共享了父元素的结构和行为

实现

类元之间的语义行为,一个类元描述了另一个类元保证实现的契约

1、类图(把系统中的类画出来,并描述类与类之间的关系)
2、对象图
3、状态图(存在状态机,状态转换)
4、构件图(构件之间关系)
5、部署图(部署到真实环境中)
6、协作图(描述系统动态行为)
7、交互序列图(描述系统动态行为)
8、活动图(描述流程,活动,序列)
9、用例图(描述用户需求,从用户角度描述系统功能,指出执行者)

UML的规则

        不能简单地把UML的构造块按随机的方式放在一起。像任何语言一样,UML有一套规则,这终规则描述了一个结构良好的模型看起来应该像什么。
UML有用于描述如下事物的语义规则:
1、命名为事物、关系和图起名
2、范围给一个名称以特定含义的语境
3、可见性怎样让其他人使用或看见名称
4、完整性事物如何正确、一致地相互联系
5、执行运行或模拟动态模型的含义是什么

UML中的公共机制

1、规格说明(提供了对构造块的语法和语义的文字叙述)
2、修饰(每个元素都有个基本符号,可以把各种修饰细节加到这个符号上)
3、通用划分(类/对象二分法;接口/实现二分法)
4、扩展机制(对UML图示符号的扩展)

UML在软件开发各个时期的应用

        在软件开发各个阶段,使用不同的UML图对系统进行描述。
        采用面向对象技术设计软件系统时,使用例图来描述用户需求,使用类图、对象图、包图、构件图和部署图这五种静态图来描述系统的静态结构;使用顺序图,合作图,活动图和状态图这四种图描述系统动态行为。

需求

采用例图来描述需求(角色、功能、外部交互)。

分析

1、明确解决问题的细节
2、采用类图描述静态结构。
3、采用顺序图、合作图、活动图、状态图来描述动态行为。

设计

1、给出解决方案。
2、采用类图、包、对类的接口进行设计。

实现

将类用某面向对象语言实现。

集成与交付

构件图、包、部署图。

测试

1、单元测试使用类图和类的规格说明书。
2、集成测试使用类图、包、构件图和合作图。
3、系统测试使用例图来测试系统功能。

【UML】概述的更多相关文章

  1. 敏捷软件开发:原则、模式与实践——第13章 写给C#程序员的UML概述

    第13章 写给C#程序员的UML概述 UML包含3类主要的图示.静态图(static diagram)描述了类.对象.数据结构以及它们之间的关系,藉此表现出了软件元素间那些不变的逻辑结构.动态图(dy ...

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

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

  3. UML概述(转载)

    UML是一种标准语言,用于指定,可视化,构造和文档的软件系统. UML是OMG在1997年1月提出了创建由对象管理组织(OMG)和UML1.0规范草案. OMG不断努力,使一个真正的行业标准. UML ...

  4. UMl概述(转)

    1. UML的组成 UML由视图(View).图(Diagram).模型元素(Model Element)和通用机制(General Mechanism)等几个部分组成. a) 视图(View): 是 ...

  5. UML 概述

    UML统一建模语言      1997年OMG组织(Object Management Group对象管理组织)发布了统一建模语言(Unified Modeling Language,UML).它目标 ...

  6. UML概述

    UML (Unified Modeling Language)统一建模语言,是描述.构造和文档化系统制品的可视化语言,是一种图形表示法. UML用途:UML是一种工具,主要用在我们对软件用面向对象的方 ...

  7. UML——概述

    1. 静态视图(类图)      静态视图不描述与时间相关的系统行为,这种行为在其他视图中描述,因此称之为静态试图.      静态视图用类图来实现,正因为它以类图为中心,因此也称之为类图.     ...

  8. 【UML】概述以及面向对象技术总结

    导读:结束了软工文档后,就开始了UML的学习,不管学习什么,都要先从整体上去把握,然后再从细节上去分析理解.在视频的开头,就对UML进行了概述.然后接着讲了面向对象技术,用例图,类图和包图等.看着软工 ...

  9. 概述UML——UML系列篇一

    前言 作为Java应用开发者,日益感觉到对象建模的重要性.系统的复杂性,对于不能全局掌握的我和编程时没有对象模型指导时,编写实现代码时,感觉甚是困难.处于这些原因,这里想借助学习UML建模,在分析需求 ...

  10. UML浅析

    UML概述 UML (Unified Modeling Language)为面向对象软件设计提供统一的.标准的.可视化的建模语言.适用于描述以用例为驱动,以体系结构为中心的软件设计的全过程. UML模 ...

随机推荐

  1. GridView ,后台修改 跟新完毕,前端 未跟新处理

    //Response.Redirect(Request.Url.ToString());//重新定位 GridView_dept.DataBind(); //重新绑定都可以

  2. 缓存测试分享篇:如何利用测试环境进行灰度测试缓存迁移solo

    此文已由作者王婷英授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 缓存,看到这两个字,第一反应,最近怎么又要弄缓存的改造啊,这个测试好复杂,一不不留心就踩一个线上bug.实在 ...

  3. C++的dllexport和dllimport

    __declspec(dllexport) 声明一个导出函数,是说这个函数要从本DLL导出.我要给别人用.一般用于dll中省掉在DEF文件中手工定义导出哪些函数的一个方法.当然,如果你的DLL里全是C ...

  4. 转载-【深度学习】深入理解Batch Normalization批标准化

      全文转载于郭耀华-[深度学习]深入理解Batch Normalization批标准化:   文章链接Batch Normalization: Accelerating Deep Network T ...

  5. 51nod 1831 小C的游戏

    小C和小L是好朋友,她们在玩一个游戏. 一开始有一个大小为n的石子堆,小C先手. 每次可以对这个石子堆拿走一个或者把这个石子堆分成等量的几份并只取其中一份(不能不变或只剩下一个). 如果取走最后一个人 ...

  6. 洛谷P3757 [CQOI2017]老C的键盘

    传送门 首先可以直接把整个序列建成一个完全二叉树的结构,这个应该都看得出来 然后考虑树形dp,以大于为例 设$f[i][j]$表示$i$这个节点在子树中排名第$j$位时的总方案数(因为实际只与相对大小 ...

  7. 4.Python的不堪一击到初学乍练(列表,元组)

    Python(列表,元组) 一.列表 列表初识 列表是python的基础数据类型之一,其他编程语言也有类似的数据类型. 比如JS中的数组, java中的数组等等,它是以[ ]括起来, 每个元素用&qu ...

  8. HBase中报错 java.lang.NoClassDefFoundError: com/google/protobuf/LiteralByteString

    Protobuf(全称 Protocol Buffers)是 Google 开发的一种数据描述语言,能够将结构化数据序列化,可用于数据存储.通信协议等方面.在 HBase 里面用使用了 Protobu ...

  9. Beanshell vs JSR223 vs Java JMeter脚本:性能关闭你一直在等待!

    有几个选项可用于执行自定义JMeter脚本并扩展基线JMeter功能.查看最流行的扩展机制,比较性能并分析哪一个是最好的. 这是乐队之战,JMeter风格. Beanshell V. JSR223 V ...

  10. java课后思考题(五)

    1.使用Files. walkFileTree()找出指定文件夹下所有扩展名为.txt和.java的文件. import java.io.IOException;import java.nio.fil ...