【UML】概述
前言
看完UML视频,很多人不明白UML到底是干什么用的,举个通俗的例子,就像盖房子一样,厨房卧室楼层之间怎么拼接,每个部分用什么材料,每个部分里放什么家具什么餐具,每个部分是干吗用的,UML就相当于施工图纸。我们知道,做一个小系统就像盖一间小房子,不需要图纸也可以,但是如果做大系统,试想,没有图纸,摩天大楼怎么拔地而起?
老生常谈,首先,得说一下UML的主要内容。
面向对象技术
1、出现于20世纪70年代末,软件工程领域中的重要技术。
2、是一种程序设计方法。
3、对现实世界中问题的抽象方式。
4、对面向对象建模技术的研究的主要成果就是统一建模语言UML。
2、是一种程序设计方法。
3、对现实世界中问题的抽象方式。
4、对面向对象建模技术的研究的主要成果就是统一建模语言UML。
软件质量衡量指标
外部:
1、正确性
2、健壮性
3、性能
内部:
1、模块性
2、灵活性和可扩展性
3、可复用性
4、可兼容性
作用:提高了软件质量。
模型与可视化建模
模型:对现实的简化,把复杂系统变成小系统。
可视化:一幅图胜过千言万语。
模型组成
系统(模型的对象)
目标(系统的目标)
组分(构成系统的各种组分或子系统)
约束条件(系统所处的环境及约束条件)
变量(表述各组分的量的变化,分内部变量,外部变量和状态变量)
模型表示
M={O,G,T,V,R,S},其中
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、是可视化建模语言。
2、支持面向对象系统的分析、设计、实现和交付等各个环节,可用于系统的理解,设计,浏览,维护和信息控制。
3、在Booch方法,OMT方法,OOSE方法基础上,广泛民主的发展而成。
4、1997年11月被OMG组正式采纳。
5、不是一个程序设计语言。
6、不是一个形式化语言。
7、是可视化建模语言。
软件过程
RUP
统一软件过程RUP(Rational Unified Process):目前影响大,面向对象的软件开发过程。
特点
1、用例驱动(用户需求驱动)
2、以架构为中心
3、采用迭代和增量的开发过程
2、以架构为中心
3、采用迭代和增量的开发过程
四阶段
初始、细化、构造、移交。
每个阶段又包括多个迭代过程。
软件危机主要特征
1、开发周期大大超过规定日期。
2、软件开发成本严重超标。
3、质量难于保证。
2、软件开发成本严重超标。
3、质量难于保证。
软件开发面临的问题
1、不能满足用户或商业要求。
2、不能很好的定位需求。
3、模块难于集成。
4、到最后才发现错误。
5、对于终端用户来说质量较差。
6、负载时性能差。
7、没有协调团队的努力。
8、不断地修改—发布问题。
2、不能很好的定位需求。
3、模块难于集成。
4、到最后才发现错误。
5、对于终端用户来说质量较差。
6、负载时性能差。
7、没有协调团队的努力。
8、不断地修改—发布问题。
UML工具
1、Rational Rose
2、Together
3、Microsoft Visio
2、Together
3、Microsoft Visio
UML构成
1、事物(构成模型图的一些基本图形符号,表示一些面向对象的基本概念)
2、关系(表示基本图示符号之间的关系)
3、图(特定的视角对系统所做的抽象的描述)
总结:事物是对模型中最具有代表性的成分的抽象;关系把事物结合在一起;图聚集了相关的事物。
2、关系(表示基本图示符号之间的关系)
3、图(特定的视角对系统所做的抽象的描述)
总结:事物是对模型中最具有代表性的成分的抽象;关系把事物结合在一起;图聚集了相关的事物。
事物(things)
结构事物(静态部分)
1、类(对一组具有相同属性、方法、关系和语义的对象的描述,一个类实现一个或多个接口)
2、接口(描述了一个类或构建的一个服务的操作集,接口仅仅定义了一组操作的规范,并没有给出操作的具体实现,类给出了具体实现)
3、协作((定义了一个交互,有结构,行为和维度,一个给定的类可以参与几个协作)
4、用例(对一组动作序列的描述。需求分析阶段。)
5、主动类(其对象至少拥有一个进程或线程,因此它能启动控制活动)
6、构件(比类大。系统中物理的、可替代的部件,遵循且提供一组接口的实现。存在形式多样。)
7、节点(运行时才存在的物理元素,有记忆能力和处理能力。用立方体表示。)
2、接口(描述了一个类或构建的一个服务的操作集,接口仅仅定义了一组操作的规范,并没有给出操作的具体实现,类给出了具体实现)
3、协作((定义了一个交互,有结构,行为和维度,一个给定的类可以参与几个协作)
4、用例(对一组动作序列的描述。需求分析阶段。)
5、主动类(其对象至少拥有一个进程或线程,因此它能启动控制活动)
6、构件(比类大。系统中物理的、可替代的部件,遵循且提供一组接口的实现。存在形式多样。)
7、节点(运行时才存在的物理元素,有记忆能力和处理能力。用立方体表示。)
行为事物(动态部分)
1、交互(行为,特定语境中完成特定任务的一组对象之间交换的消息组成。一个对象的群体的行为或单个操作的行为可用一个交互来描述)
2、状态机(状态,转换,事件,圆边矩形表示)
2、状态机(状态,转换,事件,圆边矩形表示)
分组事物(组织部分)
1、包(把元素组织成组的机制,唯一的组织机制,可以是类、接口、构件、节点、协作、用例和图、甚至其他包)
注记事物(解释部分)
1、注释(描述说明和标注模型的任何元素)
关系
关联
描述了两个或多个类之间的结构性关系。
依赖
两个事物之间的使用关系
泛化
特殊/一般关系,特殊元素<子元素>的对象可替代一般元素<父元素>的对象,用这种方法,子元素共享了父元素的结构和行为
实现
类元之间的语义行为,一个类元描述了另一个类元保证实现的契约
图
1、类图(把系统中的类画出来,并描述类与类之间的关系)
2、对象图
3、状态图(存在状态机,状态转换)
4、构件图(构件之间关系)
5、部署图(部署到真实环境中)
6、协作图(描述系统动态行为)
7、交互序列图(描述系统动态行为)
8、活动图(描述流程,活动,序列)
9、用例图(描述用户需求,从用户角度描述系统功能,指出执行者)
2、对象图
3、状态图(存在状态机,状态转换)
4、构件图(构件之间关系)
5、部署图(部署到真实环境中)
6、协作图(描述系统动态行为)
7、交互序列图(描述系统动态行为)
8、活动图(描述流程,活动,序列)
9、用例图(描述用户需求,从用户角度描述系统功能,指出执行者)
UML的规则
不能简单地把UML的构造块按随机的方式放在一起。像任何语言一样,UML有一套规则,这终规则描述了一个结构良好的模型看起来应该像什么。
UML有用于描述如下事物的语义规则:
1、命名为事物、关系和图起名
2、范围给一个名称以特定含义的语境
3、可见性怎样让其他人使用或看见名称
4、完整性事物如何正确、一致地相互联系
5、执行运行或模拟动态模型的含义是什么
UML有用于描述如下事物的语义规则:
1、命名为事物、关系和图起名
2、范围给一个名称以特定含义的语境
3、可见性怎样让其他人使用或看见名称
4、完整性事物如何正确、一致地相互联系
5、执行运行或模拟动态模型的含义是什么
UML中的公共机制
1、规格说明(提供了对构造块的语法和语义的文字叙述)
2、修饰(每个元素都有个基本符号,可以把各种修饰细节加到这个符号上)
3、通用划分(类/对象二分法;接口/实现二分法)
4、扩展机制(对UML图示符号的扩展)
2、修饰(每个元素都有个基本符号,可以把各种修饰细节加到这个符号上)
3、通用划分(类/对象二分法;接口/实现二分法)
4、扩展机制(对UML图示符号的扩展)
UML在软件开发各个时期的应用
在软件开发各个阶段,使用不同的UML图对系统进行描述。
采用面向对象技术设计软件系统时,使用例图来描述用户需求,使用类图、对象图、包图、构件图和部署图这五种静态图来描述系统的静态结构;使用顺序图,合作图,活动图和状态图这四种图描述系统动态行为。
采用面向对象技术设计软件系统时,使用例图来描述用户需求,使用类图、对象图、包图、构件图和部署图这五种静态图来描述系统的静态结构;使用顺序图,合作图,活动图和状态图这四种图描述系统动态行为。
需求
采用例图来描述需求(角色、功能、外部交互)。
分析
1、明确解决问题的细节
2、采用类图描述静态结构。
3、采用顺序图、合作图、活动图、状态图来描述动态行为。
设计
1、给出解决方案。
2、采用类图、包、对类的接口进行设计。
实现
将类用某面向对象语言实现。
集成与交付
构件图、包、部署图。
测试
1、单元测试使用类图和类的规格说明书。
2、集成测试使用类图、包、构件图和合作图。
3、系统测试使用例图来测试系统功能。
2、集成测试使用类图、包、构件图和合作图。
3、系统测试使用例图来测试系统功能。