当前课程知识点:软件理论与工程 > 第4章 UML方法 > 4.1 UML概述 > 4.1 UML概述
大家好
今天我们来一起分享一下
关于UML建模的相关知识
UML就是统一建模语言
Unified modeling language 的简称
什么是建模呢
建模就是我们要认识现实世界
在这个图的是左边是客观世界
那么客观世界在我们的头脑中
主观世界反应是什么样子呢
这个就是我们理解的客观世界的一个模型
那么现实客观世界的事物
反映在我的主观世界
可能是各种抽象的概念
这些概念构成了一个模型
这个模型
我们对它加以梳理
然后认识规律
通过这些规律的发现
我们再去应用这些规律去
改造这个世界
这就是我们建模的目的
建模就是为了认识我们的现实世界
建模的模型会因不同的人而有差异
不同类型的人有不同的世界观
比如在我们的软件工程领域
我们的软件工程方法有
结构化方法和面向对象方法
结构化方法建模
建模的结果会是一些模块
函数
还有功能
那么面向对象方法呢
建模的结果会是一些类
关联
还有一些对象
那么 持不同的世界观
就会得到对现实世界的不同认识
我们就说
建立出不同的模型
模型体现了现实世界
现实世界只有一个
但是不同的人
对于现实世界构建出来的模型却不同
那么 模型本身并没有对错之分
只有符合建模人的目的的多少之分
如果你的模型符合你的建模的目的
我们就认为它是一个好的模型
那么在我们的软件工程里面
谁应该来建模呢
我们的模型有很多种
首先我们看一下业务建模
业务建模是以领域专家为主
需求分析人员是主力
系统分析人员
架构师
可以一起参与业务建模
再看一下需求模型
需求模型的主力人员是
需求分析人员
系统分析员也是主力建模的人员
领域专家提供指导
架构师和资深的开发人员
同时也可以参与我们的需求模型
再然后就是设计模型
设计模型分为
概要设计模型和详细设计模型
那么 对于高层的概要设计模型
通常是以架构师为主
系统分析人员从需求方面提供支持
资深的开发人员从技术实现方面提供支持
那么 详细设计模型呢
则是以资深的开发人员为主
架构师呢 提供指导
在分析模型和设计模型构造好了之后
然后我们就要建立实现模型
实现模型是以资深的开发人员
和设计人员为主
架构师可以提供总体的指导
最后 我们要建的数据库模型
数据库模型以数据库开发人员为主
架构师提供指导
资深的开发人员和设计人员
可以给予相应的配合
那么我们构建出来各种模型之后
我们就可以通过模型
构建我们的体系架构
有一种方法叫做模型驱动的体系结构
Model Driven Architecture
这种方法的核心思想就是
我们通过现实世界的抽象
构建出来的模型
可以是同一套模型
但是我们会根据这个模型
将来使用的具体的技术的不同
而最终导出不同的技术架构
所以从这张图我们可以看出
在中间我们是
Model Driven Architecture的
Model的模型
然后向各个方向
通过不同的技术架构的实现
会最终实现出不同的实现模型
那么再举一点呢 我们看一下这张图
这张图的最顶端就是
PIM
就是Platform independent model
也就是独立于平台的模型
然后我们建设出这样一套模型之后
我们通过不同的映射
会把它映射出不同的PSM
也就是Platform specific model
也就是我们通过独立于平台的模型
加上各种平台的个性化的特征
我们就可以建设出来
具有不同平台特征的平台相关的模型
那么通过不同平台特征的结合
我们可以生成
CORBA模型
COM模型
J2EE的模型
等等等等
很多具体的不同的实现模型
那么我们看一下
我们既然要建设一套平台独立的模型
那么建设这样的模型的时候
我们可以使用什么样的方法呢
这里我们就看一下我们的UML
UML是Unified modeling language
那么从它的名字我们就可以看出
UML是一个language
所以它是一种语言
语言是用来表达想法的工具
UML是表示符号
而不是方法
那么 这一套表示符号
可以应用在任何的方法当中
建立出任何的模型
UML由对象管理小组
Object Management Group
OMG进行管理
UML仅仅是一种建模语言
UML是独立于建模过程的
那么 既然它是一种语言
它就可以提供用于交流的词汇表
和词汇表中的组合词汇的规则
而一种建模语言
侧重于对系统进行概念上的和物理上的描述
建模是为了产生对系统的理解
只有一个模型是不够的
UML贯穿于软件开发生命周期
并能表达系统体系结构的各种不同的视图
UML可以告诉你如何创建
或理解结构良好的模型
但它并没有定义
应该在什么时候
创建什么样的模型
那么什么时候
创建什么样的模型
可能要根据建模的人的经验来决定
UML是一种可视化的语言
既然是可视化
那么它就以图形的方式进行建模
清晰的模型
有利于开发者之间
或者软件工程相关人员之间进行交流
来解决信息丢失的问题
对于有些事情
我们最好使用文字来建模
而有些其他的事情
则最好使用图形来建模
在UML中
每一个符号都是有其明确的定义的
这样就避免了歧义的产生
UML是一种可用于详细描述的语言
详细描述就意味着
用UML所建的模型是精确的
没有歧义的
和完整的
特别的UML适用于对所有重要的
分析
设计
和实现决策
进行详细的描述
这些是软件密集型系统
在开发和部署中
所必须的内容
UML建模的时候
最好我们用于以用例驱动
以体系结构为中心
通过不断的迭代
和增量的过程
建出一套完整的
清晰的对系统描述的UML模型
最后我要跟大家说明一下
UML模型只说明了一个系统
应该要做什么
它对系统做出来一个描述
UML定义了 what to do
但是
UML并没有告诉我们这个系统应该怎么做
怎么去实现
所以
UML定义的是 what to do
但是UML并没有定义 how to do
我们的系统
怎么去做
在UML是没办法描述出来的
今天我们关于UML的概述的部分就讲这么多
谢谢大家
-课程概述
-1.1 软件的本质
-1.2 软件工程
--1.2 软件工程
-1.3 软件过程结构
-1.4 过程模型
--1.4 过程模型
-1.5 敏捷开发方法
-第1章 习题
--第1章 习题
-2.1 需求工程过程
-2.2 需求获取
--2.2 需求获取
-2.3 需求分析
--2.3 需求分析
-2.4 过程建模
--2.4 过程建模
-2.5 面向对象建模
-第2章 习题
--第2章 习题
-3.1 设计概述
--3.1 设计概述
-3.2 设计的概念
-3.3 设计模型元素
-3.4 体系结构概述
-3.5 体系结构风格
-3.6 构件级设计
-3.7 UI设计
--3.7 UI设计
-3.8 基于模式的设计
-第3章 习题
--第3章 习题
-4.1 UML概述
-4.2 UML 及UML中的事物
-4.3 UML关系和图
-4.4 UML 图细节(上)
-4.4 UML 图细节(下)
-第4章 习题
--第4章 习题
-5.1 软件测试策略
-5.2 测试传统的应用系统
-5.3 测试面向对象的应用系统
-5.4 测试web应用系统
-5.5 测试移动应用系统
-第5章 习题
--第5章 习题
-6.1 软件项目估算
-6.2 软件过程管理
-6.3 软件配置管理
-6.4 项目版本控制及调试
-第6章 习题
--第6章 习题