收藏 分享(赏)

基于UML的软件设计和建模.ppt

上传人:Facebook 文档编号:8949983 上传时间:2019-07-18 格式:PPT 页数:200 大小:2.86MB
下载 相关 举报
基于UML的软件设计和建模.ppt_第1页
第1页 / 共200页
基于UML的软件设计和建模.ppt_第2页
第2页 / 共200页
基于UML的软件设计和建模.ppt_第3页
第3页 / 共200页
基于UML的软件设计和建模.ppt_第4页
第4页 / 共200页
基于UML的软件设计和建模.ppt_第5页
第5页 / 共200页
点击查看更多>>
资源描述

1、基于UML的软件设计和建模,周秉锋 2002.8,基于UML的软件设计和建模,参考书: 1UML软件建模 作者:周秉锋 出版者:北京大学出版社 2 The Unified Modeling Language User Guideby Grady Booch, .,1.引言,为什么要建模 模型是对现实世界的简化。 在成熟的工业生产领域,建模的方法得到了广泛的应用, 例如: 电子工业 .,在成熟的工业生产领域,建模的方法得到了广泛的应用, 例如: 电子工业 . 在设计收音机的时候: 1.先确定收音机是几个波段、有几个喇叭,等等 2.然后,设计电路图。用集成电路符号、晶 体管符号、电阻电容符号,加上

2、各种标注。 3.最后,做实验电路板,调试,定型,生产 。 电路图就是模型,是现实世界的简化 再看看我们现在软件是怎么做的.,1.引言,1.引言,我们现在怎么做 软件. 先写一个系统分析报告 简单的设计报告(一些孤立的文字和图形) 开始编码,调试,测试,发行。在大多数情况下,这时的工作已经和前两步工作脱钩了。 相当于不画电路图直接用集成电路、 晶体管、电阻、电容做收音机电路。,1.引言,我们现在怎么做 软件. 相当于不画电路图直接用集成电路、 晶体管、电阻、电容做收音机电路。 这在电子工业是不可想象的:怎么维修、怎么在原有产品基础上发展更先进的产品。 对于软件工业,这些问题一样是存在的。 怎么办

3、?.,1、引言,怎么办?多年来,软件工程试图解决这 一问题,但成效不大 原因: 缺少工具,只停留在理论上,用一张纸、一只笔进行软件工程管理不易为软件人员接受, 没有标准, 无法进行有效的交流。 现在,我们有了 . 软件工程工具,如:ROSE, 软件建模标准: UML,1.引言:什么是UML,UML: 统一建模语言(Unified Modeling Language) UML是用于描绘软件蓝图的标准语言。 它可用于对软件密集型系统进行 视化(visualize), 说明(specify), 建造(construct)和 建档(document) 这也是对软件系统进行建模的四个目的,1.引言:什么

4、是UML,解释: UML是语言: 语言意味着有标准的表达规则 UML是蓝图 UML是由图形符号表达的建模语言 例如:类:.,1.引言:什么是UML,UML中类的图形表示:,1.引言:什么是UML,UML中其他一些常用的模型元素: 用例、接口、组件,1.引言:什么是UML,使用UML进行软件建模的原则 准确的原则:模型必须准确地反映软件系统的真实情况。 分层的原则:在建模的过程中,必须有不同的模型,以不同的抽象程度,反映系统的不同侧面。 分治的原则:不可能单独用一个模型来反映整个系统的任何侧面。 标准的原则:建模方法必须在某种程度上是通用的。,1.引言:什么是UML,使用UML进行软件建模的原则

5、 准确的原则:模型必须准确地反映软件系统的真实情况。 在前面所述的软件开发方法中,实际上已经进行了一定程度的建模工作(系统分析报告和软件设计报告),但由于缺乏规范而有效的建模手段,最初的设计和最终的产品产生了分离. 这使得模型没能真实的反映系统的真实情况,从而使得模型失去了应有的价值 模型必须准确,意味着在软件开发的整个周期内,模型必须和产品始终保持一致。,1.引言:什么是UML,使用UML进行软件建模的原则 分层的原则:在建模的过程中,必须有不同的模型,以不同的抽象抽象程度,反映系统的不同侧面。 E.g. 在设计电子产品时,必须绘制电原理图和布线图以分别反映产品的电路原理和物理联线。 在软件

6、构筑的不同阶段,不同的开发相关人员看待软件的侧重面有所不同。 软件系统的建模需要不同的模型以反映系统的不同侧面。 例如: 可以用一类模型描绘系统的外部边界和行为。 用另一类模型描绘系统的内部逻辑关系。,1.引言:什么是UML,使用UML进行软件建模的原则 分治的原则:不可能单独用一个模型来反映整个系统的任何侧面。 软件系统是复杂的, 对于软件模型的任意一个侧面, 不可能用一个模型来反映所有内容, 需要把问题分解为不同的子模型, 分别处理 这些模型相对独立,但又互相联系,综合起来构成了此侧面的一个完整的模型。,1.引言:什么是UML,使用UML进行软件建模的原则 标准的原则:建模方法必须在某种程

7、度上是通用的。 建模的基本目的:交流 一个开发队伍内部的开发人员之间需要交流 同一软件的不同时期的版本的开发队伍,需要参考以前版本的开发队伍的设计原理和实现方案。 不同软件的开发队伍之间也需要交流以实现最大程度的软件复用。 如果各开发队伍和开发人员在建模的时候采用同样的方法和符号,交流才会高效的进行。,1.引言:什么是UML,使用UML进行软件建模的规则 UML的模型图不是由UML语言成份简单地堆砌而成的。 它必须按特定的规则有机地组成合法的UML图。 一个完备的UML模型图(well-formed UML diagram)必须在包括对如下内容的描述: 名字:任何一个UML成员都必须包含一个名

8、字。 作用域:UML成员所定义的内容起作用的上下文环境。 可见性:UML成员能被其它成员引用的方式。 完整性:UML成员之间互相联接的合法性和一致性。 运行属性(execution):UML成员在运行时的特性。,1.引言:什么是UML,使用UML进行软件建模的规则 完备的UML模型在用于建造系统时是必须的 但是 当它在不同的视图中出现时,出于不同的交流侧重点,其表达可以是不完备的。 在系统的开发过程中,模型可以 被省略:即模型本身是完备的,但在图上某些属性被隐藏起来,以简化表达。 不完全:在设计过程中某些元素可以暂时不存在。 不一致:在设计过程中暂不保证设计的完整性。 上述3条建模规则的目的

9、鼓励开发者在设计模型时把注意力放在某一特定时期内对分析设计活动最重要的问题上,而暂不迷恋于细节的完美,使模型逐步趋向完备。,1.引言:什么是UML,UML是围绕着软件的体系结构进行建模的 软件的体系结构(software archtecture)是软件产品构筑过程中的一项重要的软件制成品。软件体系结构由一系列的决定组成, 这些决定定义了如下内容: 软件系统的组织 构成软件系统的结构元素的结构及它们之间的接口 结构元素的行为及元素之间的协同(collaboration) 结构元素的不断组合以构成日渐完备的子系统的过程,1.引言:什么是UML,UML 用“视图(view)”描述软件体系结构:,1.

10、引言:什么是ROSE,ROSE:软件建模、分析工具。 UML相当于制图规则, ROSE. 相当于三角板、圆规、绘图仪。 相当于万用表、示波器、逻辑分析仪。 Microsoft Visual Studio相当于电烙铁,车床 上面的类比很重要,有助于理解使用ROSE。我们会经常引用。,1.引言:通过ROSE用UML进行软件建模,ROSE的组织是和UML的软件体系结构相对应的 ROSE四层视图 Use Case View (用例视图) Logical View (逻辑视图) Component View (部件视图) Deployment View (分布视图),1.引言:通过ROSE用UML进行软

11、件建模,ROSE的组织是和UML的软件体系结构相对应的 ROSE四层视图 Use Case View (用例视图) 定义系统的边界:关注系统的外部功能的描述 Logical View (逻辑视图) 定义系统的实现逻辑:为实现Use_Case图描述的功能,系统应做的处理的逻辑描述,此时的描述原则上与实现平台无关。 Component View (部件视图) 定义系统的物理实现,生成代码。 Deployment View (分布视图) 描述系统的网络分布,2.需求分析和行为建模初步,需求分析 用例视图 用例和用例图 需求分析及软件边界的动态行为的描述, 动态建模 交互图 序列图 协同图,2.需求分

12、析和行为建模初步,回 顾:UML软件体系结构的各个视图和Rational ROSE 的 设 计 界面 用例视图(Use Case View)从 使 用的 角 度 定 义 软 件 的 外 部 特 性 逻辑视图(Logical View)定 义 系 统 的 逻 辑 结 构 部件视图(Component View)定 义 系 统 的 实 现,2.需求分析和行为建模初步,用例视图的建模手段: 用例视图描述的内容:系 统 的 边 界和系统 与 外 界 的 交 互 相关的UML建模元素 用例/系统作用者(Use case / Actor)-边界的静态结构交 互 图(Interaction Diagram)

13、 )-边界的动态特性包 括 序列图(Sequence Diagram) 协同图(Collaboration Diagram)交互图用于软件系统的动态行为的建模 在用例视图里:定 义 系 统 对 用 户 交 互 的 处 理 活动图-边界的动态特性 描述用户和系统的交互 可用于和用户交流,2.需求分析和行为建模初步,用例视图的建模述手段 用例(Use case) 定义:在UML里,用例(use case)代表系统为响应系统作用者(actor)引发的一个事件而执行的一系列的处理,而且这处理应该为系统作用者产生一种可见的价值。,2.需求分析和行为建模初步,用例视图的建模述手段:用例(Use case)

14、 具体地讲, 用例描述了当系统作用者和软件系统进行交互时软件系统所执行的一系列的动作序列。 动作序列 不但应包含正常使用的各种动作序列 而且应包含非正常使用时软件系统的动作序列的描述,2.需求分析和行为建模初步,用例视图的建模述手段:用例(Use case) 一个用例,通常就代表系统作用者和系统的一次交互 因此,用例视图中用例的设置,就代表了软件系统的功能的划分。 这样,将哪些动作组合为一个用例,将影响到软件系统功能设置的合理性和方便性。 为了得到得合理而方便的软件系统的功能设置,必须仔细考虑每个用例代表的动态行为的内容,使得每个用例都能产生一个有价值的结果。 这也是用例的定义中所谓“产生可见

15、的价值“的含义。,2.需求分析和行为建模初步,用例视图的建模述手段:系统作用者(Actor)定 义:系统作用者代 表 一 类 位 于 系 统 之 外 并 直 接 和 系统 交 互 的 对 象。 用 户 以 及 直 接 与 我 们设计的系统打交道的软/硬件系 统 都 是系统作用者。系统作用者表 示 的 是 系 统 的 用 户 ,它 们 能 帮 助 我 们 界 定 ( delimit) 系 统 的 功 能,并 能 给 出 一 个 清 晰 的 画 面 来 表 示 系 统 将 做 的 事 情。,2.需求分析和行为建模初步,用例视图的建模述手段交 互 图(Interaction Diagram)包 括

16、序 列 图(Sequence Diagram)协 同 图(Collaboration Diagram) 交 互 图描述系统与用户之间的交互是 联 系系 统 的 外 部 描 述 与 相 应 的 内 部 结 构 的 桥 梁 与 中 介 交互是为达某一目的而在一组对象之间进行消息交换的的行为。-UML的定义,2.需求分析和行为建模初步,下 面 通 过 一 个 例 子 看 如 何 使 用用例视图来 描 述 系 统的边界 我 们 的 例 子: ,2.需求分析和行为建模初步,我 们 的 例 子:需 求 描 述我 们 做 一 个windows bitmap 文 件 观 察 工 具, 它 有 如 下 功 能:

17、 1. 打 开 一 个bitmap 文 件 2. 可 对 文 件 进 行 放 大、 缩 小 3. 可 对 文 件 进 行 黑 白 转 换 4. 可 对 文 件 进 行 亮 度 调 整 5. 可 对 文 件 进 行 对 比 度 调 整 6. 可 对 文 件 进 行(90 度) 旋 转 7. 可 对 文 件 进 行 上 下、 左 右 翻 转 8. 可 将 处 理 结 果 存 成bitmap 文 件,2.需求分析和行为建模初步,ROSE的设计界面 视图结构窗口(Browser) 文档窗口(Documentation Window) 图 示 窗 口工 具 条,2.需求分析和行为建模初步,用例视图的构成

18、 用例图(Use Case Diagram) 模型包(Package) 系统作用者(Actor) 用例(Usecase) 交互图(Interaction Diagram),2.需求分析和行为建模初步,用例视图建模 模型包(Package) 定义:在UML里,模型包是通用的对模型元素进行分组的机制。 一个设置合理的模型包所包含的建模元素应该构成一个在语义上内聚,对外耦合松散的建模元素的集合。 Package 模 块,2.需求分析和行为建模初步,用例视图建模 模型包的用法用 于 组 织 逻 辑 上 相 关 的 设 计 元 素 e.g. 可以包含所有系统作用者(Actor)、用例(UseCase)每

19、个模型包有相对应的文档窗口,可以用来保存说明文档我们把用户需求描述先放 在一个模型包里。,用例视图建模 BmpViewer的系统作用者 User: 使 用BmpViewer 的 人Bitmap File:BmpViewer 显 示 的 位 图 文 件 Viewing Windows:: 显 示 窗 口,2.需求分析和行为建模初步,用例视图建模 BmpViewer 的用例我 们 把User Requirement 里 列 的 每 一 项 列 为 一 个用例,2.需求分析和行为建模初步,2.需求分析和行为建模初步,用例视图建模 用例图(Use Case Diagram) 在UML里, 用例图是承载

20、用例和系统作用者的载体. 用例图可包含用例、系统作用者以及它们之间的关系。,2.需求分析和行为建模初步,用例视图建模 用例图图上作业: 在用例图上创 建用例和系统作用者 Drag&Drop is available!在用例图上指定用例和系统作用者之间的关联关 系,2.需求分析和行为建模初步,用例视图建模 用例图中的关系 关联关系,关联是UML的关系的一种,它代表两个类的对象之间的语义联接。 未经过修饰的关联关系是双向的。 两个类之间有关联关系,代表两个类之间可以互相访问,因而提供了它们进行交互的基础。,2.需求分析和行为建模初步,用例视图建模 用例图中的关系 用例和系统作用者之间的关系是单向关

21、联关系 单向关联关系不代表信息流向,单 向 关 联 关 系 是 关 联 关 系 的 特 例可 以 通 过 关 系 属 性 对 话 框 设 定 ,2.需求分析和行为建模初步,用例视图建模关 联 关 系 的 属 性:双 击 关 系 图 标, 出 对 话 框 在 代 表Bitmap File 的role detail 上, 取 消Navigable,箭 头 消 失箭 头 代 表“ 可 访 问”读 文 件 是 访 问 文 件 的 过 程, 所 以 箭 头 指 向Bitmap FIle,2.需求分析和行为建模初步,用例视图建模看 看 我 们 的用例:Opening a bitmap file: 打 开

22、文 件用 户 打 开 文 件 的 操 作 涉 及 两 个 对 象位 图 文 件:Bitmap File显 示 窗 口:Viewing Window,系 统 响 应: 从Bitmap File 读 数 据更 新 显 示,2.需求分析和行为建模初步,ROSE中Use Case View 的使用常 用 工 具: Package Usecase Actor单 向 关 联选 择,2.需求分析和行为建模初步,用例视图建模:行为建模 描述“打开文件”用例的动态行为 用 序 列 图描述 方法:在Opening File 用例上按右键,在 右 键 菜 单 上 选New-Sequence Diagram 菜 单

23、创 建 序 列 图 把 序 列 图 取 名 为Opening a bitmap-Unimplemented,用例视图建模:动态建模 序列图 定义:序列图描述了为完成某一交互所需的步骤。 序列图是交互图的一种,它强调的是消息发送的时间的先后顺序。,2.需求分析和行为建模初步,用例视图建模:动态建模 序列图 序列图由对象和消息组成 水平方向排列的是对象 垂直方向排列的箭头是消息 序列图是用例实现的处理的逻辑描述 序列图是构造逻辑视图的基础,2.需求分析和行为建模初步,对象的定义:对象指的是某一种抽象的坚实存在,它是封装了状态和行为的具有明确边界和身份的实体。 相似的对象的结构和行为被定义在它们的类

24、中。 序列图里的每一个对象表示一个类的特定实例 对象的表示:矩形框 名字加下划线 以区别于类,2.需求分析和行为建模初步,消息的定义:一个消息向目标对象传递源对象希望启动目标对象中的某一操作的命令 。,2.需求分析和行为建模初步,2.需求分析和行为建模初步,用例视图 图 上 作 业:序 列 图创 建 对 象建 立 消 息 传递 不同对象间 建 立 自 反 消 息 向自己发消息,消息属性: 在消息箭头上双击左键,出现对话框 缺省为Simple可理解为无条件执行 若选Synchronous 则是调用目标对象内的函数,并返回可接受的值时才继续 其他,需要时看Help,2.需求分析和行为建模初步,2.

25、需求分析和行为建模初步,用例视图 看一下我们的序 列 图:Opening File Selecting File via MFC:通过对话框选择文件 Open Preview-Check box OK Reading Bitmap File Update Sys. Data 单独设立对象,与系统“外壳”分开,2.需求分析和行为建模初步,用例视图 : 看一下我们的序 列 图:Opening File 消息的传递代表了处理的步骤 Select File 1. Select File 2. Is Preview checked? 3.Get Data Click OK 1. OK 2. Get da

26、ta? 3. Updata my data 4. Redraw Select Preview check box,小结: 本讲我们讲了: 用例视图的用途、组成、用法、 关联关系的属性设定(初步) 行为建模:序列图的概念和画法 下一讲:用逻辑视图与VC 6.0设计和实现你的系统 对VC 6.0生成的框架建模:逆向工程 实现序列图里的对象 规划类与类之间的逻辑关系,2.需求分析和行为建模初步,作业: 1.根据user requirement,完成相对应的Use case图设计 2.为“文件存盘(Save)”用户需求设计序列图。,2.需求分析和行为建模初步,3.逻辑视图和结构建模初步,从交互图向类图

27、的转换 逻辑视图 类 类图,3.逻辑视图和结构建模初步,从交互图向类图的转换 看一下已经得到的序列图 .,3.逻辑视图和结构建模初步,从交互图向类图的转换 看一下位图浏览工具的用例图此用例对应的动态行为的序列图见下页.,3.逻辑视图和结构建模初步,从交互图向类图的转换 下一步需要为序列图中的东西指定实现类 场所:逻辑视图 .,3.逻辑视图和结构建模初步,从交互图向类图的转换 场所:逻辑视图 逻辑视图捕获为实现用例视图定义的软件系统的外部特性,软件系统必须具备的基本构成。 构造逻辑视图是建造或分析软件系统的过程的重要环节。 逻辑视图描述的内容包括软件的静态特性和软件的动态特性。 结构建模捕获的就

28、是软件逻辑视图的静态特性。 内容:类、接口、关系、类图、模型包 ,3.逻辑视图和结构建模初步,从交互图向类图的转换 下一步需要为序列图中的对象指定实现类 场所:逻辑视图 Rose里的逻辑视图 见浏览窗口 内容: 类 关系 类图 模型包 模型包内的第一个类图是其主视图(main),3.逻辑视图和结构建模初步,从交互图向类图的转换 类图: 在UML里,类图是一个UML模型图,在其上表示了一组类、接口、协同及其关系。 类图是软件系统逻辑视图的一部分,逻辑视图可以包含多个类图。 逻辑视图用于为软件系统进行结构建模,它捕获了软件系统的词汇及其关系。 结构模型的视化,就是通过类图实现的。 下面,我们为前面

29、的交互图定义其对应的类图 ,3.逻辑视图和结构建模初步,从交互图向类图的转换 现在,为前面的交互图定义其对应的类图,3.逻辑视图和结构建模初步,从交互图向类图的转换 交互图里的对象必须由类来实现 类:在UML中,一个类描述了一组对象的公共的结构和行为。 类是真实世界的事物的抽象。 当这些事物存在于真实世界中时,它们是类的实例,并被称为对象。 同一个类的各对象具有相同的属性,提供相同的操作,并具有相同的语义。,3.逻辑视图和结构建模初步,从交互图向类图的转换 类的构成,三个分割区(compartment): 名字 属性(attribute) 操作(operation) 回顾:模型的表达是可省略的

30、 前页图的类图是省略表示 本页的类是非省略表示,3.逻辑视图和结构建模初步,从交互图向类图的转换类的构成,属性 在UML里,属性定义为类的一个具名的构成(named property),它描述了此构成在类的实例中能具备的取值范围。 每个属性都必须有一个名字以区别于类的其它属性。,为了定义属性的取值范围,必须为属性指定类型 可以为属性指定初值,3.逻辑视图和结构建模初步,从交互图向类图的转换类的构成,操作:在UML里,操作被定义为一个类所能提供的服务的实现,此服务能被请求,以改变提供服务的类的对象的状态或为服务的请求者返回一个值。 操作必须有一个名字 可以有参数表 可以有返回值。,名字和后面的一

31、对括号是不可省略的 参数表+返回值又称为操作署名(signature) 参数可以指定名字、类型和缺省值,3.逻辑视图和结构建模初步,从交互图向类图的转换,为对象指定实现类 冒号前面是对象名 冒号后面是类名 对象名可以省略 消息名被替换为类的操作名,3.逻辑视图和结构建模初步,从交互图向类图的转换,交互是由对象间消息的传递实现的 为实现消息的传递 在类图上必须为对应的类指定关系,3.逻辑视图和结构建模初步,从交互图向类图的转换,在UML中,类之间的语义连接被定义为关系。 对象之间的交互,可以对应到类之间的关系. 最常用的是依赖关系、泛化关系和关联关系(聚合关系是关联关系的一种) 关系被图形化地表

32、示为连接类之间的路径。 不同的线型,区分不同的关系图7.1 关系,3.逻辑视图和结构建模初步,从交互图向类图的转换,关系:依赖关系 在UML中,两个类之间的依赖关系,表明其中的一个类(客户类)依赖于另一个类(供应类)所提供的某些服务。 下面的情形可以用依赖关系建模,如果两个类之间不存在结构方面的联系 的话 客户类访问定义在供应类内部的值(常量或 变量)。 客户类的操作启动了定义在供应类内的操作。 客户类的返回类或参数是供应类的实例。 两个类之间存在着依赖关系,意味着客户类的语义依赖于服务类的语义。服务类的语义的变化,将会导致客户类的语义的变化。,3.逻辑视图和结构建模初步,从交互图向类图的转换

33、,依赖关系 在我们的例子里:CToolPan将被CBmpViewerView调用,故把他们之间的关系设为依赖关系 (CToolPan不是CBmpViewerView的一部分,它将由别的类维护),3.逻辑视图和结构建模初步,从交互图向类图的转换,泛化关系 例子:鼠标工具,每一个鼠标工具用一个对象实现 它们所处理的鼠标消息是相同的,区别在于它们对消息的解释上各有不同。 在面向对象的程序设计语言中,这样的鼠标工具的一组实现对象的实现类可以共同定义为某个基类的导出类 在UML中,用泛化关系为这种基类/导出类的关系建模。 在UML中,泛化关系表示子类共享定义在一个或多个超类(parent)里的结构或行为

34、。,3.逻辑视图和结构建模初步,从交互图向类图的转换,泛化关系 在我们的例子里 CToolBase: 基类 CToolPan:导出类 如果类名是斜体,则代表抽象类 抽象类在UML里被定义为是没有直接实例的类。 ROSE: Abstract,3.逻辑视图和结构建模初步,从交互图向类图的转换,泛化关系 泛化关系的另一种表示方法 一个基类,多个导出类,3.逻辑视图和结构建模初步,从交互图向类图的转换,关联关系 在UML里,关联关系表示两个类或类和接口之间的语义连接。 关联关系可以是双向的。 在所有的关系中间语义最弱。 例子:公司和雇员之间的关系 存在语义上的连接,因此是关联关系,+employee,

35、Person,Company,*,1*,+employer,*,1*,3.逻辑视图和结构建模初步,从交互图向类图的转换,关联关系:关联关系是一种结构关系 如果两个类之间存在着关联关系 . 则其中的一个对象可以访问另一个对象 它可以访问另一个对象的属性, 或启动另一个对象的操作。 则它们的对象之间存在着连接关系(link) 连接关系是关联关系的实例、,+employee,Person,Company,*,1*,+employer,*,1*,连接关系出现在对象图上 对象的画法 .,3.逻辑视图和结构建模初步,从交互图向类图的转换,关联关系:关联关系是一种结构关系 关联关系的构成 结构关系意味着能互

36、相访问,如何访问?.通过角色 角色 在UML里,关联关系两端的类的对象在对方的类里的标识,称为角色(role)。 角色在关联关系的图形化表示里,由角色名(role name)表示 当关联关系里的类被映射到程序设计语言时,角色名字就成为类的一个成员变量的名字 此成员变量的类型将是另一个类的对象或指向另一个类的指针,+employee,Person,Company,*,1*,+employer,*,1*,3.逻辑视图和结构建模初步,从交互图向类图的转换,关联关系:关联关系是一种结构关系 关联关系的构成 重复度 当一个类的对象以关联关系的角色的形式出现在另一个类里时,此角色可以在此类中出现一次,也可

37、以出现多次。角色的重复度指的就是角色的这种出现次数。 在UML里,角色重复度被定义为关联关系的实例的两端所连接的对象的数目。角色重复度被图示为一个表达式,放置在关联关系中靠近相应角色的一侧。 从ROSE里设定. 被实现为此角色的类的数组,+employee,Person,Company,*,1*,+employer,*,1*,3.逻辑视图和结构建模初步,从交互图向类图的转换,关联关系:关联关系是一种结构关系 关联关系的构成 可访问性:单向关联 关联关系按照定义在缺省的情况下是双向的 这意味着被关联关系连接的两个类的任何一个类的对象可以访问另一个类的对象。 为了限制关联关系的访问的方向,可以为关

38、联关系指定可访问性(navigable) 指定访问性后,关联关系就成为单向关联。(关联关系的设定方法见前面的用例图中的介绍),*,*,3.逻辑视图和结构建模初步,从交互图向类图的转换,关联关系 聚合关系:聚合关系是关联关系的一种 关联关系是结构关系,其中的角色代表着一个类的对象在另一个类中的存在 在双向关联的情况下,关联关系中类的对象被互相拥有。 若需要强调类与对象之间的有向的拥有关系,可以用聚合对关联关系进行修饰 在UML中,聚合关系(aggregation)被定义为两个类之间的整体和部分的关系, 表明聚合关系中的客户端以供应端的类的对象作为其一部分。 如果两个类具有聚合关系,则表示其中的聚

39、合对象在物理上是由其它对象构造而来的,或逻辑上包含另一个对象。聚合对象具有其部分的所有权。,3.逻辑视图和结构建模初步,从交互图向类图的转换,关联关系 聚合关系:聚合关系是关联关系的一种 例子:工具对象的维护:切换/创建/撤销 由CMainFrame负责、被CBmpViewerView使用,3.逻辑视图和结构建模初步,从交互图向类图的转换,关联关系 聚合关系:聚合关系是关联关系的一种 简单聚合: 通过指针引用 “部分”的存活期可长于“整体”的存活期,复合聚合 复合聚合是关联关系的一种,它是较强的拥有关系,而且其中的部分和整体具有相同的生存期。 映射到程序设计语言, 复合聚合被表达为聚合类的一个

40、成员变量, 此成员变量是被复合的类的对象。,3.逻辑视图和结构建模初步,从交互图向类图的转换,关联关系 聚合关系:ROSE中复合聚合与简单聚合的设定,关系图符上双击鼠标。弹出关系属性对话框 简单聚合: “By Reference复合聚合 “By Value”,3.逻辑视图和结构建模初步,小结:类和关系,在UML中,类之间的语义连接被定义为关系。 对象之间的交互,可以对应到类之间的关系. 最常用的是依赖关系、泛化关系和关联关系(聚合关系是关联关系的一种) 在这里:CMainFrame/CToolBase:结构关系、CToolBase/CToolPan继承关系、CBmpViewerView/CTo

41、olPan:使用关系(依赖关系),4.软件建造和逆向工程,软件建造 建造是软件建模的重要目的之一 完备定义的软件规格说明还可以通过模型向源代码的映射支持软件系统的建造,从而提高软件系统的开发效率和质量。 我们已有的: 结构模型 VC生成的程序框架等 这些程序应进入模型:逆向工程,4.软件建造和逆向工程,UML里逆向工程的定义 根据从程序设计语言向UML的映射,把程序设计语言源代码转换为UML模型的过程,在UML里,被定义为逆向工程。 之所以能够进行逆向工程,是因为UML的语义比任何一种程序设计语言都要丰富。,4.软件建造和逆向工程,逆向工程 软件建造的第一步:分析已有的代码 当软件系统的用例视

42、图和相关的动态行为和逻辑视图设计(不妨称为内核设计)完成后,可开始软件系统的建造 第一步,在VC 6.0里设计用户界面,定义相应的MFC代码 然后,需要在ROSE里为这些MFC代码建模:逆向工程 第三步: 将得到的MFC代码的模型(不妨称之为外壳模型)和已经设计好的逻辑视图连接 第四步,软件建造:将我们的内核模型转换为源代码,4.软件建造和逆向工程,逆向工程 ROSE和vc 6.0的连接 假定我们为Bmpvierwer建立了一个工程bmpviewer.pjt且在其中定义了用户界面的资源和对应的MFC类 包含系统核心的ROSE模型文件是bmoviewer.mdl 现在需要将其转换为UML模型,并

43、使其进入ROSE的模型文件,方法 在ROSE里打开bmpviewer.mdl Tools-Visual C+-Quick Import MFC6.0 Tools-Visual C+-Quick Import MFC6.0-Update Model From Code ,4.软件建造和逆向工程,逆向工程 将VC6.0生成的基于MFC的源代码转换为UML模型,并使其进入ROSE的模型文件 这些源代码是以MFC类库为基础的,所以应该先导入ROSE提供的MFC6.0的逻辑视图: 菜单:Tools-Visual C+-Quick Import MFC6.0,4.软件建造和逆向工程,逆向工程 逆向工程,菜

44、单:Tools-Visual C+-Quick Import MFC6.0 导入之后的模型的结构如右图 (这是展开前的结构),将VC6.0生成的基于MFC的源代码转换为UML模型,并使其进入ROSE的模型文件,4.软件建造和逆向工程,逆向工程 将VC6.0生成的基于MFC的源代码转换为UML模型,并使其进入ROSE的模型文件 然后开始导入VC6.0生成的软件系统外壳的源代码的逻辑视图: 菜单Tools-Visual C+-Quick Import MFC6.0-Update Model From Code ,4.软件建造和逆向工程,逆向工程,开始导入. 菜单Tools-Visual C+-Qu

45、ick Import MFC6.0-Update Model From Code 出现对话框: 选Add Component.,4.软件建造和逆向工程,逆向工程,开始导入. 菜单Tools-Visual C+-Quick Import MFC6.0-Update Model From Code 出现对话框: 选Add Component 出现对话框: 按“文件选择”钮 选择VC 6.0 工程文件:bmpviewer.dsw 按OK,逆向工程,开始导入. 菜单Tools-Visual C+-Quick Import MFC6.0-Update Model From Code 出现对话框: 选Ad

46、d Component 出现对话框: 按“文件选择”钮 选择VC 6.0 工程文件:bmpviewer.dsw 按OK 出现对话框 按next,4.软件建造和逆向工程,逆向工程,开始导入. 菜单Tools-Visual C+-Quick Import MFC6.0-Update Model From Code 出现对话框: 选Add Component 出现对话框: 按“文件选择”钮 选择VC 6.0 工程文件:bmpviewer.dsw 按OK 出现对话框 按next 出现对话框:finish 按finish,4.软件建造和逆向工程,逆向工程,开始导入. 菜单Tools-Visual C+-

47、Quick Import MFC6.0-Update Model From Code 出现对话框: 选Add Component 出现对话框: 按“文件选择”钮 选择VC 6.0 工程文件:bmpviewer.dsw 按OK 出现对话框 按next 出现对话框:finish 按finish 出现进度条画面,4.软件建造和逆向工程,逆向工程,开始导入. 菜单Tools-Visual C+-Quick Import MFC6.0-Update Model From Code 选Add Component 出现对话框: 按“文件选择”钮 选择VC 6.0 工程文件:bmpviewer.dsw 按OK

48、 出现对话框 按next 出现对话框:finish 按finish 出现进度条画面 结束画面,4.软件建造和逆向工程,逆向工程,开始导入.,4.软件建造和逆向工程,导入之后的模型结构如右图 出现了一个新的模型包:Reverse Engineered,其中即是导入的MFC程序的类图,逆向工程,开始导入.,4.软件建造和逆向工程,调整一下导入的模型包的位置,使它位于logical viewbmpviewer中,并更名为shell(外壳),将外壳模型和内核模型组合起来 e.g. 鼠标工具,4.软件建造和逆向工程,此聚合关系通过继承关系的多态性,实现工具的切换 此依赖关系使得鼠标工具的动态行为能从CB

49、mpVIewer启动,将外壳模型和内核模型组合起来,4.软件建造和逆向工程,将外壳类指定为交互图中的对象的实现类,4.软件建造和逆向工程,下一讲: 细化模型 代码生成正向工程 团队开发,5.结构建模深入和正向工程,结构建模的深入 软件建模的目的是软件建造 需要建立完备的模型 结构模型的细化 需要详细指定模型元素的属性以使之完备 e.g.:名字、作用域、可见性、完整性 完备的模型应映射到程序设计语言 代码生成正向工程,5.结构建模深入和正向工程,正向工程概念 在UML里,正向工程被定义为是根据UML模型向实现语言的映射,从UML模型型实现语言源代码的转换的过程。UML的类的语义是足够丰富的,可以帮助软件系统的建造者通过模型的正向工程,实现模型向源程序代码的转换。 但UML模型又是可省略的,所以在实施正向工程之前,必须保证模型中包含足够的信息,以使得模型能转换成符合语法的程序设计语言。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报