300 likes | 528 Views
互联网软件开发与应用. 任课教师:陆 铭 联系电话: 66134267 QQ: 22839978 PoPo:richard.du@163.com 教学网站: mingler.ccshu.org. 第十章 UML 建模语言介绍. 10.1 UML 概述 UML 的形成 UML 的主要内容、 UML 的特点 10.2 通用模型元素 模型元素 约束、依赖关系 细化、注释 10.3 UML 模型描述图 用例图 类图、序列图 状态图、活动图 组件图、部署图. 10.1 UML 概述. UML 是 Unified Modeling Language 的简称
E N D
互联网软件开发与应用 任课教师:陆 铭 联系电话:66134267 QQ: 22839978 PoPo:richard.du@163.com 教学网站:mingler.ccshu.org
第十章 UML建模语言介绍 • 10.1 UML概述 • UML的形成 • UML的主要内容、UML的特点 • 10.2 通用模型元素 • 模型元素 • 约束、依赖关系 • 细化、注释 • 10.3 UML模型描述图 • 用例图 • 类图、序列图 • 状态图、活动图 • 组件图、部署图
10.1 UML概述 • UML是Unified Modeling Language的简称 • UML是一种统一建模语言,统一了Booch方法、OTM方法、OOSE方法的概念和表示法,并作了进一步的发展,统一为大众接受的标准建模语言 • UML语言的出现具有重要的、划时代的意义,将是面向对象技术领域占主导地位的标准建模语言
10.1.1 UML的形成 • 面向对象开发方法发展的需要 • 面向对象建摸语言出现在20世纪70年代中期,1989—1994年面向对象建摸语言从10种发展到了50多种,客观上要求建立统一的建模语言 • UML的发展历程 • 1994.10,Booch和Rumbargh开始着手建立统一建模语言工作 • 1995年秋,OOSE方法创始人Jacobson加入他们的工作 • 经过他们三人的努力,于1995.6和10月分别发表了两个版本,UML0.9和UML0.91,并将UM正式命名为UML,700多家公司采用了该语言 • 1996,UML的开发者倡导成立了UML成员协会 • 1997.1,公布了UML1.0版本;1997.7,公布了UML1.1 • 1997.11,OMG采纳了UML 1.1作为面向对象技术的标准建模语言,成为可视化建模语言事实上的工业标准,稳占面向对象技术市场的85%分额
UML的形成 • UML的应用 • UML的主要目标是以面向对象图的方式来描述任何类型的系统 • 最常用于建立软件系统的模型 • 也可以描述非软件领域的系统 • 机械系统、企业机构、业务过程、信息系统、实时的工业系统和工业过程 • UML是一个通用的、标准的建模语言 • 任何静态结构、动态行为的系统都可以用来建模 • UML不是标准的开发过程,也不是标准的面向对象开发方法 • 软件开发过程很大程度上依赖于问题域、实现技术和开发小组 • 不同应用、不同开发人员的开发过程有很大的不同 • 把开发过程从开发方法中抽取出来,剩下的表示手段和代表语义可以实现标准化 • 表示手段和代表语义组合在一起,即为建模语言
10.1.2 UML的主要内容 • UML融合了Booch方法、OMT方法和OOSE方法中的基本概念 • 这些基本概念与其他面向对象方法的基本概念大多相同 • UML不仅集众家之长,还扩展了若干概念,因而扩展了现有方法的应用范围 • UML的主要内容 • UML的语义 • UML语义通过元模型来严格定义 • UML的表示法 • UML表示法定义了UML的图形符号
UML的语义 • UML语义通过元模型来严格定义 • 元模型为UML的所有元素在语法和语义上提供了简单、一致及通用的定义性说明 • 使开发者能在语义上取得一致,消除因人而异的表达方式 • UML定义了各种元素、各种机制及各种类型的语义 • UML语义还支持对元模型的扩展定义 • UML的元素是基本构造单位 • 模型元素用于构造系统、视图元素用于构造系统的表示部分 • UML的各种机制是依赖关系、约束、标记、标记值和定制等 • UML定义的各种机制的语义保持了UML的简单和概念上的一致 • UML支持的各种类型的语义 • 布尔、表达式、列表、阶、名字、坐标、字符串和时间等 • UML还允许用户自定义类型
UML表示法定义了UML的图形表示符号 为建模者和建模工具的开发者提供了标准的图形符号和正文语法 这些图形符号和文字表达的是应用级的模型,在语义上是UML元模型的实例 使用这些图形符号和正文语法为系统建模构造了标准的系统模型 UML表示法分为通用表示和图形表示两种 通用表示 字符串:表示有关模型的信息 名字:表示模型元素 标号:表示附于图形符号的字符号 特定字符串;表示模型元素的特征 类型表达式:声明属性变量和参数 定制:一种机制,用已有的模型元素 来定义新的模型元素 图形表示:5类10种图 用例图:表示系统的功能、操作者 静态图:表示系统静态结构 行为图:描述系统的动态行为及对象间的相互关系 交互图:描述对象间的动态合作关系,包括序列图和合作图 实现图:描述系统的物理实现 UML的表示法
10.1.3 UML的特点 • 统一了面向对象方法的基本概念 • UML是在Booch、OMT、OOSE等方法的基础上发展起来的,是这些方法的延续和发展 • UML消除了不同方法在表示法和术语上的差异,避免了符号表示和理解上的不必要的混乱 • 建模能力更强 • UML吸收了不同面向对象方法的长处,融入了其他面向对象方法的可取之处,也包括非面向对象方法的影响 • 也汇入了面向对象领域中很多人的思想 • 独立于开发过程 • UML只是一种建模语言,与具体的软件开发过程无关 • UML提出了许多新概念 • UML符号表示考虑了许多方法的图形表示,删除了大量容易引起混乱的、多余的和极少使用的符号,增加了新符号 • 提出了一些新的概念:构造型、职责、扩展机制、线程、模式、合作图等
10.2 通用模型元素 • 模型元素 • UML构造系统各种模型的元素,有基元素、构造型元素两种 • 约束 • 依赖关系 • 用来描述类之间的依赖、包之间的依赖构件之间的依赖等 • 细化 • 细化关系表示了元素之间更详细的一层描述 • 注释 • 用于对UML的元素或实体进行说明、解释和描述
10.2.1 模型元素 • 模型元素是UML构造系统各种模型的元素,也是UML的基本构造单位 • 基元素 • 基元素是指UML已经存在或已定义的模型元素,如类、结点 、构件、注释、关联、依赖和泛化等 • 构造型元素 • 构造型元素是在基元素的基础上构造的一种新的元素,它是UML的一种扩展机制 • 一个构造型元素与它的基元素并无不同,只是增加了新的语义 • 构造型元素的表示 • 构造型元素用带有一对尖括号的词组来表示,如<使用>、<扩展>这两个关系是泛化关系的构造型元素 • UML提供了40多个预定义的构造型元素 • 构造型元素的创建 • 构造型元素必须构造在UML已经有定义元素的基础上 • 构造型元素可以扩展它的基元素的语义,但不能扩展基元素的语法结构 • 除了UML预定义的构造型元素外,用户也可以自己定义新的构造型元素 • 构造型元素的定义 • 在基元素的模型符号的基础上,附加一个<构造型元素名>或指定一个图符 • 定义构造型元素的语义,其语义必须与基本的语义一致,扩展的语义描述可用形式化的方法定义,也可以用自然语言描述 有基元素和构造型元素两种
10.2.2 约束 • 约束的含义 • 提供一种简便、统一及一致的表达方式,描述元素及其构成要素应遵守的限制和应满足的条件,用于类、关系、关联、属性、操作等元素及其基本构成要素的约束条件 • 约束的表示 • 一个约束由一对花括号括起来的约束内容构成:{约束内容} • 约束内容用自然语言或其他常见的设计语言来描述所表示的约束条件 • 这种方法不太正规但具有良好的可读性。也可以采用严谨的表示方式:谓词演算、微分方程或一段程序代码 • 约束的示例 • {abstract}:用于类的约束,表明该类是一个抽象类 • {complete}:用于关系的约束,表明该分类是一个完全分类 • {hierarchy}:用于关系的约束,表明该分类是一个分层关系 • {ordered}:用于多重性的约束,表明目标对象是有序的 • {bag}:用于多重性的约束,表明目标对象多次出现且无序
X Y 10.2.3 依赖关系 • 依赖关系的含义 • 有两个元素X、Y,若修改元素X的定义,可能引起对另一个元素Y的定义的修改,则称元素Y依赖于元素X • 依赖关系的表示 • 用一个带箭头的虚线来表示依赖关系 • 若元素Y依赖于元素X,则画一个由Y元素指向X元素的虚线箭头 • 依赖关系的使用 • 在UML的类图、包图、构件图和配置图中都会用到依赖关系 • 用于描述类之间的依赖、包之间的依赖、构件之间的依赖以及结点之间的依赖 • 在类的关系中,导致依赖性的原因有很多 • 一个类是另一个类的数据成员 • 一个类用另一个类作为它的某个操作的参数
B A 10.2.4 细化 • 细化的含义 • 细化关系表示了元素之间更详细一层的描述 • 当两个元素A、B中,B元素是A元素的详细描述,则称B、A元素之间的关系为B元素细化A元素 • 细化与类的抽象层次有密切的关系 • 构造模型时不可能一下就把模型完整、准确地构造出来,而是要经过逐步细化的过程,经过逐步求精的过程 • 细化的表示 • 两个元素的细化关系用两个元素之间带空心三角形箭头的虚线表示,箭头的方向由细化了的元素指向被细化的元素 • 细化的使用 • 在系统分析中建立概念层次的类图,用于描述应用域的概念 • 进入系统设计时建立说明层次的类图,比概念层次类图更详细 • 进入系统实现时,建立实现层次的类图,比说明层次类图更细
人员 这是一个类 10.2.5 注释 • 注释的含义 • 注释用于对UML的元素或实体进行说明、解释和描述,通常用自然语言进行注释 • 注释的表示 • 注释由注释体和注释连接组成 • 注释体的图符是一个矩形, 右上角翻下, 矩形中标注要注释的内容 • 注释连接用虚线表示,把注释体与被注释的对象连接起来 • 注释的使用 • 在UML各种模型图中,凡是需要注释的元素或实体均可以加注释 • 注释的表示
10.3 UML模型描述图 • UML不是一种方法学,没有任何正式的工作产品(即 IBM Rational Unified Process术语中定义的“工件”) • UML提供了多种类型的模型描述图,当在某中给顶的方法学中使用这些图时,使得开发中的应用程序更易理解 • 对于入门者来说,这些图对这门语言及其用法背后的基本原理提供了很好的介绍 • 通过把标准的UML图放进你的工作产品中,精通UML的人员就更加容易加入你的项目并迅速进入角色 • 最常用的UML图 • 用例图、类图、序列图、状态图、活动图、组件图、部署图
10.3.1 用例图 • 用例图描述了系统提供的一个功能单元 • 用例图的主要目的 • 帮助开发团队以一种可视化的方式理解系统的功能需求,包括基于流程的角色关系,以及系统内用例之间的关系 • 角色:与系统交互的其他实体,英文名称 Actors • 用例图一般表示用例的组织关系 • 整个系统的全部用例 • 完成具体功能的一组用例:如安全管理相关的所有用例 • 用例图的绘制方法 • 用椭圆表示一个用例,将用例的名称放在椭圆的中心或椭圆下方的中间位置 • 用人形符号表示一个角色、一个系统用户 • 用线段表示角色和用例之间的关系
查看乐队CD的销售统计 查看Billboard200排行榜报告 查看特定CD的销售报告 检索最新的Billboard200排行榜报告 乐队经理 唱片经理 排行榜报告服务 用例图示例:CD销售系统
CD销售报告 • weekNumber : int • salesForWeek : int • totalSalesForYear : int • refrsh(): void 10.3.2 类图 • 类图表示不同的实体(人、事物、数据)如何彼此相关,显示了系统的静态结构 • 类图可用于表示逻辑类和实现类两种 • 逻辑类:业务人员所谈及的事物种类 • 摇滚乐队、CD、广播剧、贷款、住房抵押、汽车信贷、利率等 • 实现类:程序员处理的实体 • 实现类可能会与逻辑类显示一些相同的类,但实现类不会使用相同的属性来描述,因为实现类可能具有诸如向量(Vector)和哈希表(HashMap)这种事物的引用 • 类图的绘制 • 类图上使用三个相连的矩形来描述 • 顶层的矩形显示类的名称 • 中间部分包含类的属性 • 底层部分包含类的操作(也称“方法”) • 类图之间使用带箭头的实线连接 • 带指向父类的完全三角形箭头的线段表示继承关系 • 两个类彼此相互知道的则用实线表示关联关系 • 只有一个类知道该关联关系的则使用开箭头表示
报告 • createdOn : Date 乐队 CD CD销售报告 • name : String • title : String • releaseDate : Date • weekNumber : int • salesForWeek : int • totalSalesForYear : int • refrsh(): void 类图示例 说明: 1. CD销售报告类继承自报告类。 2.一个CD销售报告类与一个CD类关联,但是CD类并不知道关于CD销售报告的任何信息。 3. CD类和乐队类都彼此知道对方。两个类彼此都可以与一个或多个对方类相关联。 1* 1*
10.3.3 序列图 • 序列图显示具体用例或用例的一部分的详细流程 • 序列图几乎是自描述的,并且显示了流程中不同对象之间的调用关系,同时还可以很详细地显示队不同对象的不同调用 • 序列图的两个维度 • 垂直维度:以发生的时间顺序显示消息/调用的序列 • 水平维度:显示消息被发送到的对象实例 • 序列图的绘制 • 实例(对象)框:每个类依序排列在序列图的顶部,框内书写类和类实例名称,类实例名称和类名称之间用空格/冒号/空格分隔 • 消息线:绘制一条由发出消息的类实例指向接受类实例的开箭头实线,返回值用指向发起类实例的开箭头虚线表示(可选),线上标注消息/方法、返回值的名称或内容 • 序列图的阅读 • 从左上角启动序列的“驱动”类实例开始,顺着每条消息往下阅读
aServlet gen : ReportGenerator : CDSalesReport aCDReport : CDSalesReport 序列图示例:创建CD销售报告 1: generateCDSalesReport(cdld) 2: \new()\ CDReport : CDSalesReport) 3: setCreatedOn(date) void 4: setWeekNumber(week) void 5: setSalesForWeek(sales) void report : CDSalesReport
10.3.4 状态图 • 状态图表示某个类所处的不同状态和该类的状态转换信息 • 注意:每个类都有状态,但不是每个类都要有个状态图 • 只对“感兴趣的”状态的类进行状态图的描述 • 即在系统活动期间具有三个或更多潜在状态的类 • 状态图符号集的基本元素 • 初始起点:使用实心圆绘制 • 状态转换:使用具有开箭头的线段来绘制 • 状态:使用圆角矩形绘制 • 判断点:使用空心圆来绘制 • 终止点:使用内部包含实心圆的圆来绘制 • 状态图的绘制 • 首先绘制起点和一条指向该类的初始状态的转换线段,然后在图上任意位置绘制各个状态,再使用状态转换线段将他们连接起来
Loan Application Do/Loan pre-approval Loan in Maintenance Do/Collects Month Loan Payments Loan pre-approved [Yes] Do/Get FullCreditReport Do/Get Property Assessment Do/Get Approval Passes Pre-approval [No] Loan Approved [No] Loan Rejected [Yes] [Customers Didn't Sign in 14 Days] Loan Closing [Customers Sign] Waiting For Customers' Signatures Dispense Cash for Loan [Customer's Signed Documents] 状态图示例
10.3.5 活动图 • 活动图表示在处理某个活动时,两个或更多的类对象之间的过程控制流 • 活动图可用于在业务单元的级别上对更高级别的业务过程进行建模,或者对低级别的内部类操作进行建模 • 由于活动图在表示上的“不够技术性”,因此活动图最适合用于对较高级别的过程建模,即适合于“非结构化的建模” • 活动图的符号集与状态图的符号集相似 • 活动图也是从一个连接到初始活动的实心圆开始 • 活动是一个圆角矩形表示 • 活动可以通过转换线段连接到其他活动或判断点 • 结束过程的活动连接到一个带实心圆的圆上 • 实际执行活动的对象分置在不同的泳道,活动在泳道内进行
乐队经理选择查看他的乐队销售报告 检索所管理的乐队 显示报告条件选择屏幕 选择要查看销售报告的乐队 从销售数据库检索销售数据 显示销售报告 活动图示例 乐队经理 报告工具
Implements some Servlets Billboard Service Servlet 2.2 API Reporting Tools JDBC API Java SOAP aver HTTPS 10.3.6 组件图 • 组件图提供系统的物理视图。组件图的用途是显示系统中的软件对其他软件组件的依赖关系 • 组件图可以在一个非常高的层次上显示,也可以在组件包层次上显示
x : User Machine JDBC API 10.3.7 部署图 • 部署图表示该软件系统如何部署到硬件环境中,它的用途是显示该系统不同的组件将在何处物理地运行,以及它们将如何彼此通信 • 部署图是对物理运行情况进行建模 • 部署图中符号 • 包括组件图中的所有符号 • 增加节点符号:一个三维立方体,节点的名称位于立方体顶部 • 节点的概念:可以代表一台物理的机器,也可以代表一个虚拟机器节点 • 节点名称的命名约定与序列图相同:实例名称 : 实例类型
x : User Machine soap.billboard.com db1.myco.com : DB2 Server reporting : DB2 Billboard Service Browser JDBC API Reporting Tool 部署图示例 w3reporting.myco.com : Application Server http over interanet IBM WebSphere Java SOAP over HTTPS Native DB2
Web开发过程 理念 是 规划 判断点1 设计 否 判断点2 否 是 投入使用 判断点3 建设和测试 是 否 运行及后续维护