Rose从入门到精通操作手册.ppt

上传人:人*** 文档编号:571206117 上传时间:2024-08-09 格式:PPT 页数:419 大小:4.89MB
返回 下载 相关 举报
Rose从入门到精通操作手册.ppt_第1页
第1页 / 共419页
Rose从入门到精通操作手册.ppt_第2页
第2页 / 共419页
Rose从入门到精通操作手册.ppt_第3页
第3页 / 共419页
Rose从入门到精通操作手册.ppt_第4页
第4页 / 共419页
Rose从入门到精通操作手册.ppt_第5页
第5页 / 共419页
点击查看更多>>
资源描述

《Rose从入门到精通操作手册.ppt》由会员分享,可在线阅读,更多相关《Rose从入门到精通操作手册.ppt(419页珍藏版)》请在金锄头文库上搜索。

1、软件开发工具软件开发工具第第1章章 UML 简介简介什么是模型?什么是模型?l l模型就是现实的简单化模型就是现实的简单化模型就是现实的简单化模型就是现实的简单化建模的目的和用途建模的目的和用途l l建模是为了能够更好地理解我们正在开发的系统建模是为了能够更好地理解我们正在开发的系统建模是为了能够更好地理解我们正在开发的系统建模是为了能够更好地理解我们正在开发的系统l l模型帮助我们按照实际情况或按照我们所需要的样式将模型帮助我们按照实际情况或按照我们所需要的样式将模型帮助我们按照实际情况或按照我们所需要的样式将模型帮助我们按照实际情况或按照我们所需要的样式将系统可视化系统可视化系统可视化系统

2、可视化l l模型允许我们详细说明系统的结构或行为模型允许我们详细说明系统的结构或行为模型允许我们详细说明系统的结构或行为模型允许我们详细说明系统的结构或行为l l模型给出了一个指导我们构造系统的模板模型给出了一个指导我们构造系统的模板模型给出了一个指导我们构造系统的模板模型给出了一个指导我们构造系统的模板l l模型对我们作出的决策进行文档化模型对我们作出的决策进行文档化模型对我们作出的决策进行文档化模型对我们作出的决策进行文档化l l在构建物理实体之前先测试在构建物理实体之前先测试在构建物理实体之前先测试在构建物理实体之前先测试l l与客户交流与客户交流与客户交流与客户交流l l降低复杂度降低

3、复杂度降低复杂度降低复杂度模型和语言模型和语言l l语言语言语言语言 LanguageLanguagel l模型模型模型模型 Model + Model + 表示法表示法表示法表示法 NotationNotationl lModel: Model: 表示系统的结构表示系统的结构表示系统的结构表示系统的结构l l设计系统时可以在高层进行讨论,而不用太早进入代码设计系统时可以在高层进行讨论,而不用太早进入代码设计系统时可以在高层进行讨论,而不用太早进入代码设计系统时可以在高层进行讨论,而不用太早进入代码的细节的细节的细节的细节l lNotation: Notation: 以图表将模型文档化以图表将

4、模型文档化以图表将模型文档化以图表将模型文档化 模型的分类模型的分类l lStructured MethodsStructured Methodsl l包括结构化分析,结构化设计等包括结构化分析,结构化设计等包括结构化分析,结构化设计等包括结构化分析,结构化设计等l l通常用通常用通常用通常用 data flow diagram data flow diagram 描述数据如何经过各个处理流程描述数据如何经过各个处理流程描述数据如何经过各个处理流程描述数据如何经过各个处理流程l l适于关系数据库设计(大量数据,数据的处理可由数据之外的适于关系数据库设计(大量数据,数据的处理可由数据之外的适于关

5、系数据库设计(大量数据,数据的处理可由数据之外的适于关系数据库设计(大量数据,数据的处理可由数据之外的操作处理)操作处理)操作处理)操作处理)l lObject-oriented MethodsObject-oriented Methodsl l将数据和对数据的操作统一将数据和对数据的操作统一将数据和对数据的操作统一将数据和对数据的操作统一l l建议迭代、增量(建议迭代、增量(建议迭代、增量(建议迭代、增量(iterative, incrementaliterative, incremental)开发)开发)开发)开发l lExample: UML, Example: UML, ShlaerS

6、hlaer-Mellor-Mellor面向对象的建模面向对象的建模l l面向对象方法是软件开发方法的主流部分,所有面向对象方法是软件开发方法的主流部分,所有面向对象方法是软件开发方法的主流部分,所有面向对象方法是软件开发方法的主流部分,所有软件系统都用对象或类作为其主要构造块软件系统都用对象或类作为其主要构造块软件系统都用对象或类作为其主要构造块软件系统都用对象或类作为其主要构造块l l要从问题空间或解空间的词汇中找出对象要从问题空间或解空间的词汇中找出对象要从问题空间或解空间的词汇中找出对象要从问题空间或解空间的词汇中找出对象l l类是对具有共同性质的一组对象的描述类是对具有共同性质的一组对

7、象的描述类是对具有共同性质的一组对象的描述类是对具有共同性质的一组对象的描述l l不用太早进入代码的细节不用太早进入代码的细节不用太早进入代码的细节不用太早进入代码的细节l l每一个对象都有标识、状态和行为每一个对象都有标识、状态和行为每一个对象都有标识、状态和行为每一个对象都有标识、状态和行为UML 定义定义l lUML Unified Modeling Language.UML Unified Modeling Language.l lUML UML 是一种对软件密集型系统的制品进行下述工是一种对软件密集型系统的制品进行下述工是一种对软件密集型系统的制品进行下述工是一种对软件密集型系统的制

8、品进行下述工作的语言,这些工作包括:作的语言,这些工作包括:作的语言,这些工作包括:作的语言,这些工作包括:l l可视化(可视化(可视化(可视化(visualizingvisualizing)l l详述详述详述详述 (specifyingspecifying)l l构造构造构造构造 (constructingconstructing)l l文档化(文档化(文档化(文档化(documentingdocumenting)UML 定义定义l lUML UML 是可视化语言是可视化语言是可视化语言是可视化语言l lUML UML 是图形化语言,图形便于交流是图形化语言,图形便于交流是图形化语言,图形便

9、于交流是图形化语言,图形便于交流l lUML UML 是一种可以详细描述的语言是一种可以详细描述的语言是一种可以详细描述的语言是一种可以详细描述的语言l l所建的模型是精确的,无歧义和完整的所建的模型是精确的,无歧义和完整的所建的模型是精确的,无歧义和完整的所建的模型是精确的,无歧义和完整的l lUML UML 是用于构造系统或理解系统的语言是用于构造系统或理解系统的语言是用于构造系统或理解系统的语言是用于构造系统或理解系统的语言l lUML UML 既支持正向工程,又支持反向工程既支持正向工程,又支持反向工程既支持正向工程,又支持反向工程既支持正向工程,又支持反向工程 l lUML UML

10、是文档化语言是文档化语言是文档化语言是文档化语言l l将所建造的系统记录下来将所建造的系统记录下来将所建造的系统记录下来将所建造的系统记录下来l l便于新程序员跟进便于新程序员跟进便于新程序员跟进便于新程序员跟进l l开发产品新版本时很有用处开发产品新版本时很有用处开发产品新版本时很有用处开发产品新版本时很有用处UML 的发展历史的发展历史为为 UML 创建做出贡献的人们创建做出贡献的人们UML 工具工具UML 的特点的特点l l统一标准:已成为面向对象的标准化的统一的建统一标准:已成为面向对象的标准化的统一的建统一标准:已成为面向对象的标准化的统一的建统一标准:已成为面向对象的标准化的统一的

11、建模语言模语言模语言模语言l l面向对象面向对象面向对象面向对象l l可视化、表示能力强大可视化、表示能力强大可视化、表示能力强大可视化、表示能力强大l l独立于过程独立于过程独立于过程独立于过程l l概念明确,建模表示法简洁,图形结构清晰,容易掌握概念明确,建模表示法简洁,图形结构清晰,容易掌握概念明确,建模表示法简洁,图形结构清晰,容易掌握概念明确,建模表示法简洁,图形结构清晰,容易掌握使用使用使用使用UML 和代码的关系和代码的关系l l用用用用 JavaJava,C+ C+ 等等等等 programming language programming language 是用编码实现一个系

12、统是用编码实现一个系统是用编码实现一个系统是用编码实现一个系统l l用用用用 UML UML 是对一个系统建立模型是对一个系统建立模型是对一个系统建立模型是对一个系统建立模型l l一些一些一些一些 CASE CASE 工具可以根据工具可以根据工具可以根据工具可以根据 UML UML 所建立的系统模所建立的系统模所建立的系统模所建立的系统模型来产生型来产生型来产生型来产生 JavaJava,C+ C+ 或其它程序设计语言代码或其它程序设计语言代码或其它程序设计语言代码或其它程序设计语言代码框架框架框架框架UML 的构成的构成l l视图(视图(视图(视图(ViewsViews)l l图(图(图(图

13、(diagramsdiagrams)l l模型元素模型元素模型元素模型元素l l通用机制通用机制通用机制通用机制视图(视图(Views)l l飞机的三视图飞机的三视图飞机的三视图飞机的三视图视图(视图(Views)l l视图是表达系统某一方面特征的视图是表达系统某一方面特征的视图是表达系统某一方面特征的视图是表达系统某一方面特征的 UML UML 建模元素建模元素建模元素建模元素的子集,它是由一个或者多个图组成的对系统某的子集,它是由一个或者多个图组成的对系统某的子集,它是由一个或者多个图组成的对系统某的子集,它是由一个或者多个图组成的对系统某个角度的抽象个角度的抽象个角度的抽象个角度的抽象U

14、se-Case Viewl l用途:描述系统应该具备的功能,即被称为参与用途:描述系统应该具备的功能,即被称为参与用途:描述系统应该具备的功能,即被称为参与用途:描述系统应该具备的功能,即被称为参与者的外部用户所能观察到的功能。者的外部用户所能观察到的功能。者的外部用户所能观察到的功能。者的外部用户所能观察到的功能。 l l用例视图是几个视图的核心,它的内容直接驱动用例视图是几个视图的核心,它的内容直接驱动用例视图是几个视图的核心,它的内容直接驱动用例视图是几个视图的核心,它的内容直接驱动其他视图的开发其他视图的开发其他视图的开发其他视图的开发Logical Viewl l用途:描述用例视图中

15、提出的系统功能的实现用途:描述用例视图中提出的系统功能的实现用途:描述用例视图中提出的系统功能的实现用途:描述用例视图中提出的系统功能的实现l l逻辑视图既描述系统的静态结构,也描述系统内逻辑视图既描述系统的静态结构,也描述系统内逻辑视图既描述系统的静态结构,也描述系统内逻辑视图既描述系统的静态结构,也描述系统内部的动态协作关系部的动态协作关系部的动态协作关系部的动态协作关系l l静态结构在类图和对象图中描述;动态模型在状静态结构在类图和对象图中描述;动态模型在状静态结构在类图和对象图中描述;动态模型在状静态结构在类图和对象图中描述;动态模型在状态图、时序图、协作图以及活动图中描述态图、时序图

16、、协作图以及活动图中描述态图、时序图、协作图以及活动图中描述态图、时序图、协作图以及活动图中描述l l使用者使用者使用者使用者l l设计人员设计人员设计人员设计人员l l开发人员开发人员开发人员开发人员Process Viewl l用途:考虑资源的有效利用、代码的并行执行以用途:考虑资源的有效利用、代码的并行执行以用途:考虑资源的有效利用、代码的并行执行以用途:考虑资源的有效利用、代码的并行执行以及系统环境中异步事件的处理及系统环境中异步事件的处理及系统环境中异步事件的处理及系统环境中异步事件的处理l l组成:状态图、协作图和活动图组成:状态图、协作图和活动图组成:状态图、协作图和活动图组成:

17、状态图、协作图和活动图l l使用者:主要是开发人员和系统集成人员使用者:主要是开发人员和系统集成人员使用者:主要是开发人员和系统集成人员使用者:主要是开发人员和系统集成人员Component Viewl l用途:描述系统的实现模块以及它们之间的依赖用途:描述系统的实现模块以及它们之间的依赖用途:描述系统的实现模块以及它们之间的依赖用途:描述系统的实现模块以及它们之间的依赖关系关系关系关系l l组成:组件图组成:组件图组成:组件图组成:组件图l l使用者:主要是开发人员使用者:主要是开发人员使用者:主要是开发人员使用者:主要是开发人员Deployment Viewl l用途:显示系统的物理部署,

18、并描述位于节点实用途:显示系统的物理部署,并描述位于节点实用途:显示系统的物理部署,并描述位于节点实用途:显示系统的物理部署,并描述位于节点实例上的运行组件实例的部署情况例上的运行组件实例的部署情况例上的运行组件实例的部署情况例上的运行组件实例的部署情况 l l组成:配置图组成:配置图组成:配置图组成:配置图l l使用者:开发人员、系统集成人员和测试人员使用者:开发人员、系统集成人员和测试人员使用者:开发人员、系统集成人员和测试人员使用者:开发人员、系统集成人员和测试人员UML 中的图中的图l l类图类图类图类图 (class diagram )(class diagram )l l对象图对象

19、图对象图对象图 (object diagram )(object diagram )l l用例图用例图用例图用例图 (use case diagram )(use case diagram )l l顺序图顺序图顺序图顺序图 (sequence diagram )(sequence diagram )l l协作图协作图协作图协作图 (collaboration diagram )(collaboration diagram )l l状态图状态图状态图状态图 ( (statechartstatechart diagram ) diagram )l l活动图活动图活动图活动图 (activity d

20、iagram )(activity diagram )l l构件图构件图构件图构件图 (component diagram )(component diagram )l l配置图配置图配置图配置图 (deployment diagram )(deployment diagram )模型元素模型元素l l事物(事物(事物(事物(thingsthings)l l结构事物(结构事物(结构事物(结构事物(structural things)l l动作事物(动作事物(动作事物(动作事物(behavioral things)l l分组事物(分组事物(分组事物(分组事物(grouping things)l

21、l注释事物(注释事物(注释事物(注释事物(annotational things)l lUML UML 中的关系(中的关系(中的关系(中的关系(relationshipsrelationships)l关联(关联(association)l依赖(依赖(dependency)l泛化(泛化(generalization)l实现(实现(realization)l聚合(聚合(polymerization)结构事物结构事物 l lUML UML 模型中最基本的结构化事物,包括模型中最基本的结构化事物,包括模型中最基本的结构化事物,包括模型中最基本的结构化事物,包括l l类类类类l l接口接口接口接口l l

22、协作协作协作协作l l用例用例用例用例l l活动类活动类活动类活动类l l组件组件组件组件l l节点节点节点节点 类类l l类是对具有相同属性、方法、关系和语义的对象类是对具有相同属性、方法、关系和语义的对象类是对具有相同属性、方法、关系和语义的对象类是对具有相同属性、方法、关系和语义的对象的抽象的抽象的抽象的抽象 接口接口l l类或组件提供特定服务的一组操作的集合类或组件提供特定服务的一组操作的集合类或组件提供特定服务的一组操作的集合类或组件提供特定服务的一组操作的集合l l描述了类或组件的对外可见的动作描述了类或组件的对外可见的动作描述了类或组件的对外可见的动作描述了类或组件的对外可见的动

23、作协作协作 l l定义了交互操作定义了交互操作定义了交互操作定义了交互操作l l代表构成系统的模式的实现代表构成系统的模式的实现代表构成系统的模式的实现代表构成系统的模式的实现用例用例 l l描述系统对一个特定角色执行的一系列动作描述系统对一个特定角色执行的一系列动作描述系统对一个特定角色执行的一系列动作描述系统对一个特定角色执行的一系列动作l l组织动作事物组织动作事物组织动作事物组织动作事物活动类活动类 l l类对象有一个或多个进程或线程的类类对象有一个或多个进程或线程的类类对象有一个或多个进程或线程的类类对象有一个或多个进程或线程的类 组件组件l l实现了一个接口集合的物理上可替换的系统

24、部分实现了一个接口集合的物理上可替换的系统部分实现了一个接口集合的物理上可替换的系统部分实现了一个接口集合的物理上可替换的系统部分节点节点 l l在运行时存在的一个物理元素在运行时存在的一个物理元素在运行时存在的一个物理元素在运行时存在的一个物理元素l l代表一个可计算的资源代表一个可计算的资源代表一个可计算的资源代表一个可计算的资源l l通常占用一些内存和具有处理能力通常占用一些内存和具有处理能力通常占用一些内存和具有处理能力通常占用一些内存和具有处理能力动作事物动作事物l l交互交互交互交互l l一组对象在特定上下文中,为达到某种特定的目的而进一组对象在特定上下文中,为达到某种特定的目的而

25、进一组对象在特定上下文中,为达到某种特定的目的而进一组对象在特定上下文中,为达到某种特定的目的而进行的一系列消息交换组成的动作行的一系列消息交换组成的动作行的一系列消息交换组成的动作行的一系列消息交换组成的动作l l状态机状态机状态机状态机l l由一系列对象的状态组成由一系列对象的状态组成由一系列对象的状态组成由一系列对象的状态组成分组事物分组事物 l lUML UML 模型中组织的部分模型中组织的部分模型中组织的部分模型中组织的部分l l分组事物只有一种:包分组事物只有一种:包分组事物只有一种:包分组事物只有一种:包l l包是一种将有组织的元素分组的机制包是一种将有组织的元素分组的机制包是一

26、种将有组织的元素分组的机制包是一种将有组织的元素分组的机制l l包只存在于开发阶段包只存在于开发阶段包只存在于开发阶段包只存在于开发阶段注释事物注释事物 l lUML UML 模型的解释部分模型的解释部分模型的解释部分模型的解释部分UML中的关系中的关系 l l关联关联关联关联l l依赖依赖依赖依赖l l泛化泛化泛化泛化l l实现实现实现实现l l聚合聚合聚合聚合通用机制通用机制 l l修饰修饰修饰修饰l l注释注释注释注释l l规格说明规格说明规格说明规格说明l l通用划分通用划分通用划分通用划分l l扩展机制扩展机制扩展机制扩展机制修饰修饰 l l为图中的模型元素增加了语义为图中的模型元素

27、增加了语义为图中的模型元素增加了语义为图中的模型元素增加了语义l l示例:示例:示例:示例:注释注释l l以自由的文本形式出现的以自由的文本形式出现的以自由的文本形式出现的以自由的文本形式出现的l l信息类型是不被信息类型是不被信息类型是不被信息类型是不被UMLUML解释的一个字符串解释的一个字符串解释的一个字符串解释的一个字符串l l示例:示例:示例:示例:规格说明规格说明 l lUML UML 中预定义的特性:中预定义的特性:中预定义的特性:中预定义的特性:l l文档(文档(文档(文档(DocumentationDocumentation)l l职责(职责(职责(职责(Responsibi

28、lityResponsibility)l l永久性(永久性(永久性(永久性(PersistencePersistence)l l并发性(并发性(并发性(并发性(ConcurrencyConcurrency) 通用划分通用划分l l型型型型- -实例(值)实例(值)实例(值)实例(值)l l描述一个通用描述符与单个元素项之间的对应关系描述一个通用描述符与单个元素项之间的对应关系描述一个通用描述符与单个元素项之间的对应关系描述一个通用描述符与单个元素项之间的对应关系l l接口接口接口接口- -实现实现实现实现 UML 的扩展组件的扩展组件 l l构造型构造型构造型构造型l l标记值标记值标记值标记

29、值l l约束约束约束约束 构造型构造型l l由建模者设计的新的模型元素由建模者设计的新的模型元素由建模者设计的新的模型元素由建模者设计的新的模型元素l l新的模型元素的设计要以新的模型元素的设计要以新的模型元素的设计要以新的模型元素的设计要以 UML UML 已定义的模型元已定义的模型元已定义的模型元已定义的模型元素为基础素为基础素为基础素为基础l l示例:示例:示例:示例:标记值标记值l l附加到任何模型元素上的命名的信息块附加到任何模型元素上的命名的信息块附加到任何模型元素上的命名的信息块附加到任何模型元素上的命名的信息块l l示例:示例:示例:示例:约束约束l l用某种形式化语言或自然语

30、言表达的语义关系的用某种形式化语言或自然语言表达的语义关系的用某种形式化语言或自然语言表达的语义关系的用某种形式化语言或自然语言表达的语义关系的文字说明文字说明文字说明文字说明l l示例:示例:示例:示例:建模的步骤建模的步骤 Hello World(一个(一个 UML 例子)例子)l l关键抽象:关键抽象:关键抽象:关键抽象:l l在浏览器中在浏览器中在浏览器中在浏览器中打印打印打印打印“ “Hello World!”Hello World!”的的的的 Java applet Java applet 程程程程序序序序l l在在在在UMLUML中,对这种应用的建模如下图所示中,对这种应用的建模

31、如下图所示中,对这种应用的建模如下图所示中,对这种应用的建模如下图所示importimport java.awt.Graphicsjava.awt.Graphics; ;public class public class HelloWorldHelloWorld extends extends java.applet.Appletjava.applet.Applet public void paint (Graphics g) public void paint (Graphics g) g.drawString(Hellog.drawString(Hello World!, 10,10);

32、World!, 10,10); 与与 Hello World 直接相关的类直接相关的类l l这个类图反映出了这个类图反映出了这个类图反映出了这个类图反映出了 “ “Hello World!” Hello World!” 这个应用的基本部这个应用的基本部这个应用的基本部这个应用的基本部分,但还遗漏一些事物。按上述代码的描述,这个应用还分,但还遗漏一些事物。按上述代码的描述,这个应用还分,但还遗漏一些事物。按上述代码的描述,这个应用还分,但还遗漏一些事物。按上述代码的描述,这个应用还涉及其他两个类,即涉及其他两个类,即涉及其他两个类,即涉及其他两个类,即 Applet Applet 和和和和 Gr

33、aphicsGraphics,而且二者的,而且二者的,而且二者的,而且二者的使用方式不同。类使用方式不同。类使用方式不同。类使用方式不同。类 Applet Applet 是类是类是类是类 HelloWorldHelloWorld 的父类,的父类,的父类,的父类,类类类类 Graphics Graphics 则是在类则是在类则是在类则是在类 HelloWorldHelloWorld 的一个操作的一个操作的一个操作的一个操作 paint paint 的特征标记和实现中被使用。可以在类图中表示这些类及的特征标记和实现中被使用。可以在类图中表示这些类及的特征标记和实现中被使用。可以在类图中表示这些类及

34、的特征标记和实现中被使用。可以在类图中表示这些类及其他们与类其他们与类其他们与类其他们与类 HelloWorldHelloWorld 的不同关系的不同关系的不同关系的不同关系Hello World 的继承层次的继承层次l l如果针对如果针对如果针对如果针对 Applet Applet 和和和和 Graphics Graphics 研究研究研究研究 JavaJava库,库,库,库,将会发现这两个类是一个更大的类层次的一部分。将会发现这两个类是一个更大的类层次的一部分。将会发现这两个类是一个更大的类层次的一部分。将会发现这两个类是一个更大的类层次的一部分。跟踪类跟踪类跟踪类跟踪类 Applet A

35、pplet 扩展和实现的那些类,能够产成扩展和实现的那些类,能够产成扩展和实现的那些类,能够产成扩展和实现的那些类,能够产成另一个类图,如下图所示另一个类图,如下图所示另一个类图,如下图所示另一个类图,如下图所示Hello World 的包的包l l为了管理大规模的类层次图,可以用包来组织类,为了管理大规模的类层次图,可以用包来组织类,为了管理大规模的类层次图,可以用包来组织类,为了管理大规模的类层次图,可以用包来组织类,如下图所示:如下图所示:如下图所示:如下图所示:l lHelloWorldHelloWorld 依赖包依赖包依赖包依赖包 Java.appletJava.appletl lj

36、ava.appletjava.applet 依赖包依赖包依赖包依赖包 java.awtjava.awtPainting 机制机制l l可以使用顺序图对事件的顺序建模,展示了对象可以使用顺序图对事件的顺序建模,展示了对象可以使用顺序图对事件的顺序建模,展示了对象可以使用顺序图对事件的顺序建模,展示了对象的协作的协作的协作的协作Hello World 的构件的构件l l“ “Hello World!” Hello World!” 是一个程序,不能单独运行,是一个程序,不能单独运行,是一个程序,不能单独运行,是一个程序,不能单独运行,通常是嵌入在通常是嵌入在通常是嵌入在通常是嵌入在 Web Web

37、页中页中页中页中l l下面是下面是下面是下面是 HelloWorldHelloWorld 的构件图的构件图的构件图的构件图第第1章章 Rose入门入门 内内 容容nRose与可视化建模 nRational Rose工具简介 nRational Rose 2003企业版的安装 nRose应用程序界面nRose模型nRose视图 1 Rose与可视化建模与可视化建模n1.1 理解可视化建模 是开发人员及其团队获得应用程序完整设计蓝图的理想方法,是理解复杂问题和相互交流的有效手段可视化建模有助于软件开发人员: 1)可视化应用程序 2)说明应用程序的完整结构和行为 3)创建模板,引导应用程序的构建工作

38、 4)将质量保证贯穿于整个开发生命周期 5)将开发过程中的所有决策信息整理归档 n1.2 可视化建模工具的发展与UML 常见的可视化建模方法:OMT、Booch、OOSE UML:统一建模语言是OMG批准的标准建模方法集OMT、Booch、OOSE的优点于一身1 Rose与可视化建模与可视化建模1 Rose与可视化建模与可视化建模n1.3 Rose:优秀的可视化建模工具Rose占据了市场上可视化建模工具的主导 衡量可视化建模工具的标准:易于使用灵活性 整合到应用程序生命周期的容易程度可伸缩性基于的标准 Rose的优势GUI允许在同一模型中使用多种构件、语言逆向工程团队管理数据建模和Web建模1

39、 Rose与可视化建模与可视化建模n1.4 软件开发过程与Rose可视化建模 软件开件开发阶段段Rose使用情况使用情况可能用到的可能用到的Rose模型模型图及元素及元素开始开始阶段段建立建立业务模型(模型(Business Use Case)业务用例、用例、业务参与者、参与者、业务工人工人确定用例模型(确定用例模型(Use Case)参与者、用例、关系参与者、用例、关系细化化阶段段细化用例化用例参与者、用例、关系参与者、用例、关系事件流程建模事件流程建模顺序序图、协作作图、状、状态图对系系统静静态结构和构和动态行行为建模建模类图、交互、交互图、状、状态机机图确定系确定系统构件构件构件构件图、

40、关系、关系构造构造阶段段正向工程正向工程产生框架代生框架代码类图、交互、交互图、状、状态机机图、构件、构件图逆向工程更新模型逆向工程更新模型构件构件图创建部署建部署图部署部署图交付交付阶段段更新模型更新模型构件构件图、部署、部署图2 Rational Rose工具简介工具简介 n2.1 Rational Rose 2003特性Rose 2003分企业版、专业版和Rose Modeler三种版本 Rose 2003支持的特性表1.22 Rational Rose工具简介工具简介n2.2 Rose的基本功能 面向对象建模用例分析支持UML、COM、OMT和Booch93语义检查支持可控的迭代开发双

41、向工程支持多用户并行开发可以与数据建模工具集成OLE链接、自动化多平台可用性2 Rational Rose工具简介工具简介n2.3 Rose的插件及插件程序管理器的插件及插件程序管理器 插件包括:Framework WizardRose Ada、 ANSI C+、 C+、VC +、VB、Java、CORBA、Java、Oracle8、XML DTDRose Data ModelerRose model IntegratorRose Web PublisherRose TOPLink WizardRose Web ModelerQuality Architect、Version Control2

42、 Rational Rose工具简介工具简介n2.3 Rose的插件及插件程序管理器的插件及插件程序管理器插件程序管理器(Add-In Manager)控制插件程序的状态:激活状态或非激活状态 3 Rational Rose 2003企业版的安装企业版的安装 n3.1 系统要求系统要求 项目需求处理器150MHz以上奔腾兼容机 内存128MB(推荐128MB)硬盘空间400MB(建议留出最小200MB的交换空间)其他SVGA兼容显卡(建议256色以上),分辨率800600,鼠标(建议两轮以上)3 Rational Rose 2003企业版的安装企业版的安装n3.2 安装过程安装过程安装向导(引

43、导安装)安装主程序配置许可协议4 Rose应用程序界面应用程序界面 Rose应用程序界面组成 应用程序窗口显示载体 浏览器窗口模型图超出屏幕显示范围时用于选择观察区域 文档窗口记录用户操作和模型元素信息的辅助提示窗口 模型图窗口用于建立和修改当前模型的图形化视图 规范窗口Rose应用程序界面组成应用程序界面组成工具箱工具栏标题栏控制菜单栏菜单栏最小化、最大化按钮综述窗口图标日志窗口文档窗口状态栏模型图窗口浏览器窗口4 Rose应用程序界面应用程序界面n4.1 Rose应用程序窗口应用程序窗口 控制菜单栏标题栏最小化和最大化按钮菜单栏工具栏日志窗口工具箱状态栏 4 Rose应用程序界面应用程序界

44、面n4.2 工具栏和工具箱工具栏和工具箱 标准工具栏(Standard Toolbar)本书中简称为工具栏与打开的模型图窗口无关,包含一系列可以简化常用操作的图标,如创建新模型、保存模型等 模型图工具栏(Diagram Toolbar)本书中简称为工具箱包含适用于当前模型图的工具,每种模型图都有自己的工具箱 自定义工具栏/工具箱4 Rose应用程序界面应用程序界面n4.2 工具栏和工具箱工具栏和工具箱自定义工具栏/工具箱单击菜单栏中的ToolsOptions,在弹出的Options窗口中单击Toolbars标签,可以在Toolbars标签中自定义工具栏/工具箱右单击工具栏/工具箱,单击快捷菜单

45、中的Customize 4 Rose应用程序界面应用程序界面自定义工具栏/工具箱4 Rose应用程序界面应用程序界面n4.3 文档窗口文档窗口包含与模型元素规范窗口中完全相同的信息,描述模型元素或者关系,描述角色、约束、目的以及模型元素基本行为等信息文档窗口中输入的一切都将显示为生成的代码中的说明语句,以后不必输入系统代码的说明语句 4 Rose应用程序界面应用程序界面n4.4 模型图窗口模型图窗口 综览窗口综览窗口提供当前模型图的一个小比例视图,以便浏览整个模型图 4 Rose应用程序界面应用程序界面n4.4 模型图窗口模型图窗口模型图打印对话框模型图打印对话框4个标签个标签用于设置打印信息

46、用于设置打印信息打印预览打印预览应用过滤应用过滤 4 Rose应用程序界面应用程序界面n4.5 日志窗口日志窗口 显示按时间顺序执行某些命令和操作后,应用程序的进展情况、结果和错误可以隐藏消息前面的时间前缀日志可以保存4 Rose应用程序界面应用程序界面n4.6 规范窗口规范窗口用于显示和修改模型元素的属性和关系信息以文本方式呈现,在模型元素的图标内可能会显示部分规范窗口中的信息 信息按标签进行显示 5 Rose模型模型 Rose模型是问题域和软件系统的表示。模型中包含的元素有类、逻辑包、对象、操作、构件包、构件、处理器、设备以及它们之间的关系。这些模型元素中的每一个元素都拥有能唯一标识它们自

47、身的模型属性。Rose模型还包含模型图和规范,它们提供了对模型元素及其属性进行可视化和操作的手段。 5 Rose模型模型n5.1 创建创建Rose模型模型 框架向导(Framework Wizard插件)框架是一系列预定义的模型元素,可以定义某种系统的体系结构,也可以提供一系列可重用构件 5 Rose模型模型n5.2 保存保存Rose模型模型在默认的情况下,Rose模型都以扩展名为.mdl的文件进行保存*.ptl格式文件类似于模型文件(*.mdl),但是只是模型文件的一部分。模型文件*.mdl则保存完整的模型以Rose的旧版本保存模型,可能会丢失某些模型元素和特性5 Rose模型模型n5.3

48、Rose模型的导入与导出模型的导入与导出导出模型及模型元素导出模型或者模型元素到Petal文件的时机: 将元素从一个模型导到另一个模型在不同的平台之间传送模型或模型元素将一个模型或它的元素添加到一个新的软件版次导入模型、包或类导到Petal文件中的内容包括:整个模型、类、逻辑包以及构件包 5 Rose模型模型n5.3 Rose模型的导入与导出模型的导入与导出导入模型及模型元素 导入时可选择的文件类型有:模型(.mdl)petal(.ptl)类别(.cat)子系统(.sub) Rose会将导入的元素和当前模型中的相关元素进行比较,提示是否要用导入的元素取代当前模型中的元素。导入元素之后,Rose

49、会更新当前模型中的所有模型图。 5 Rose模型模型n5.4 将将Rose模型发布到模型发布到Web上上 Web发布器(Web Publisher)创建基于Web(HTML)的模型版本,将模型发布到Web上,通过浏览器顺序或非顺序地进行查看 Web发布器会重新创建Rose模型元素,包括图、类、包、关系、属性以及操作等Web发布器所发布的内容可以通过选项控制5 Rose模型模型n5.4 将将Rose模型发布到模型发布到Web上上Web发布器生成的文件 在发布模型之前,应当创建一个新的文件夹发布一个模型时,需要提供一个HTML根文件的名字。通过打开该文件来显示模型。 5 Rose模型模型n5.4

50、将将Rose模型发布到模型发布到Web上上发布发布Rose模型模型使用Web Publisher命令 使用Ros Web 发布器批处理器 5 Rose模型模型n5.5模型集成模型集成模型集成器 (Model Integrator)用于对模型进行比较和合并,一次最多可以处理7个模型。个人可以独立地工作,然后通过模型集成器将模型集成起来。在对模型进行比较时,模型集成器能够显示出模型之间的差别模型的比较与合并操作都在模型集成器中进行5 Rose模型模型模型比较6 Rose视图视图n6.1 用例视图用例视图基本概念系统中与实现无关的视图,只关心系统的高级功能,而不关心系统的具体实现细节通常在项目开始时

51、要先确定,之后不轻易修改 6 Rose视图视图n6.1 用例视图用例视图包含的内容业务参与者、业务工作者业务用例、业务用例图、业务用例实现参与者用例、用例图、用例文档类图状态图、活动图顺序图、协作图包、文件、URL6 Rose视图视图n6.2 逻辑视图逻辑视图基本概念关注系统如何实现使用用例中提到的功能,涵盖系统实现的具体细节从中可以看到系统的逻辑结构 6 Rose视图视图n6.2 逻辑视图逻辑视图包含的内容用例、用例图类、类实体、类图接口活动图、状态图协作图、顺序图包、文件、URL 6 Rose视图视图n6.3 构件视图构件视图基本概念包含模型代码库、执行库和其它构件的信息从中可以看出系统实

52、现的物理结构 6 Rose视图视图n6.3 构件视图构件视图包含的内容构件接口构件图包文件URL 6 Rose视图视图n6.4 部署视图部署视图基本概念关心系统的实际部署情况一个项目只有一个部署视图6 Rose视图视图n6.4 部署视图部署视图包含的内容进程处理器连接器设备部署图文件URL 第第2章章 Rose操作基础操作基础 内内 容容n浏览器 n模型图 n模型元素的规范 1 浏览器浏览器 浏览器功能:浏览器功能:可视化显示模型中所有元素的层次结构;拖放(Drag-and-drop)功能同步更新模型,即,浏览器中的模型元素发生变化时,可以自动更新模型中的相应元素,反之亦然n1.1 浏览器的停

53、靠模式浏览器的停靠模式以固定的大小停靠在边框上 以可变的大小浮动显示在窗口的任何位置 1 浏览器浏览器n1.2 操作模型元素操作模型元素 创建一个模型元素创建一个模型元素 利用快捷菜单创建模型元素右单击新模型元素所属的父元素(可以是视图、模型图、包等),从快捷菜单中选择New在New下拉菜单栏中选择相应的模型元素选项运用拖放功能注意源位置的标识 “from ” 1 浏览器浏览器n1.2 操作模型元素操作模型元素 删除模型元素删除模型元素 从浏览器中删除一个模型元素,将把该模型元素从模型中永久删除,同时还将删除该元素的关系 可以一次删除多个模型元素按下Ctrl或者Shift键选取要删除的多个模型

54、元素命名模型元素命名模型元素直接在浏览器中输入模型元素的名称注意多元素同名的命名错误 1 浏览器浏览器不同元素相同命名出现的警告对话框 1 浏览器浏览器n1.3 拖放功能拖放功能 浏览器内部的拖放功能浏览器与模型图之间的拖放功能 浏览器与规范窗口之间的拖放功能 1 浏览器浏览器Rose支持的模型图2 模型图模型图模型图图标描述建模角度类图Class diagram显示系统中的类和包,提供系统构件及其相互关系静态结构建模用例图Use-case diagram用例图从用户的角度描述系统功能的使用者和主要的系统操作流程。显示用例与参与者及其相互关系系统功能建模协作图Collaboration dia

55、gram从对象组织结构的角度显示用例中特定情形的操作流程动态行为建模顺序图Sequence diagram按时间顺序显示用例中特定情形的操作流程动态行为建模状态图Statechart diagram显示系统中类的对象所有可能的状态以及事件发生时状态的转换条件动态行为建模活动图Activity diagram描述满足用例要求所需进行的活动以及活动间的关系的图动态行为建模构件图Component diagram描述代码构件的物理结构以及构件之间的依赖关系。组件图有助于分析和理解组件之间的影响程度静态结构建模部署图Deployment diagram描述系统中的物理结构静态结构建模n2.1 模型图窗

56、口模型图窗口 2 模型图模型图水平滚动条模型图工具箱垂直滚动条标题栏控制菜单栏n2.1 模型图窗口模型图窗口 可以在模型图窗口中创建和修改模型的图形视图模型图中的每个图标表示模型中的一个元素每个模型图只展示系统模型多种不同视图中的某一个可以同时在应用程序窗口中显示多个不同的模型图 2 模型图模型图n2.2 模型图操作模型图操作下面的6种常见模型图操作,既可以在浏览器中进行,也可以通过菜单栏中的Browse项进行:创建一个新的模型图删除一个模型图显示一个模型图重命名一个模型图链接一个模型图在模型图窗口中选择多个元素 2 模型图模型图n2.3 模型元素操作模型元素操作创建模型元素 1)单击工具箱中

57、适当的创建工具2)在模型图窗口中的某一位置单击鼠标左键 2 模型图模型图n2.3 模型元素操作模型元素操作命名模型元素不在同一个包内的参与者、用例、类、构件和包,名称可以相同。不同的模型元素拥有相同的名称时,这些元素被称为“重载”重载允许你进行基于多语言构件的开发。重载允许用例视图中的参与者和逻辑视图中的类拥有相同的名称 2 模型图模型图n2.3 模型元素操作模型元素操作创建一个重载元素创建一个重载元素1)从工具箱中创建一个新的元素2)双击新元素,或者单击BrowseSpecification,打开规范窗口3)在名称字段中输入名称4)单击OK按钮 2 模型图模型图n2.4 操纵模型元素图标操纵

58、模型元素图标 选择图标 撤销图标选择 调整图标大小 移动图标 改变图标表示的元素类型剪切、复制和粘贴图标 图注 2 模型图模型图n2.4 操纵模型元素图标操纵模型元素图标图注的操作图注是加进模型图中的少量文本,可以和模型图中的特定元素相联系 图注用于说明模型元素 2 模型图模型图n2.5 相互关系相互关系 对于一个选定的模型图,相互关系可以是一种关系、链接、依赖、转移或者连接创建两个元素之间的相互关系1)单击工具箱中的关系工具 2)将光标移到模型图中的客户(client)图标 3)按下鼠标左键 4)将箭头拖动到模型图中的提供者(supplier)图标5)在提供者元素上点击,释放鼠标 2 模型图

59、模型图n2.5 相互关系相互关系命名相互关系1)单击图标2)输入名称3)在已命名的图标之外单击鼠标 2 模型图模型图n2.6 装饰模型图装饰模型图将文本放进模型图中将文本放进模型图中1)从工具箱中选择ABC工具 2)在模型图的某个位置单击鼠标左键 3)编辑文本颜色填充和线条着色颜色填充和线条着色使用不同的颜色可以突出显示一些重要的元素 2 模型图模型图n2.6 装饰模型图装饰模型图颜色填充1)右单击模型元素图标2)选中Use Fill Color3)再次右单击模型元素图标,从快捷菜单中选择FormatFillColor4)在弹出的颜色对话框中选择颜色 2 模型图模型图n2.6 装饰模型图装饰模

60、型图线条着色1)右单击模型元素图标2)从快捷菜单中选择FormatFillColor3)选择适当的颜色并确定 2 模型图模型图n2.7 模型工作空间模型工作空间 模型工作空间是当前所有已加载的单元和已打开的模型图的快照通过定义一个或多个工作空间,可以建立在Rational Rose中的工作环境,并在每次准备好工作的时候返回到工作空间加载工作空间时,Rose通过加载特定的控制单元和打开正确的模型图,取回它们的快照 2 模型图模型图n2.7 模型工作空间模型工作空间已保存的模型和模型工作空间一个完整的、已保存的模型包含模型图、元素和控制单元。一个模型工作空间包含的是已保存的模型、已打开的模型图和控

61、制单元在特定时间的实际状态。可以让多个模型工作空间与一个模型相关模型工作空间的保存不影响该模型如何在另一台机器上加载 2 模型图模型图n2.7 模型工作空间模型工作空间保存模型工作空间在默认的情况下,Rational Rose以“-.wsp”的形式命名工作空间要保存一个模型工作空间1)单击FileSave Model Workspace(Rose同时保存模型和工作空间文件) 2)在Save As对话框中输入工作空间文件的名称 2 模型图模型图n2.7 模型工作空间模型工作空间加载模型工作空间 1)单击FileLoad Model Workspace2)选择要加载的模型工作空间文件名3)单击Op

62、en按钮2 模型图模型图规范窗口用于显示和修改模型元素的属性和关系在规范窗口中显示的一些信息也可以在图标中显示出来,用于来描绘模型图中的模型元素规范窗口中提供了诸如字段、列表框、选项按钮和复选框之类的标准接口元素 3 模型元素的规范模型元素的规范n3.1 显示规范窗口显示规范窗口显示模型元素规范窗口的方法:在模型图或者浏览器中双击一个项注意:通过双击一个逻辑或构件包时显示规范窗口,必须关掉ToolsOptionsDiagramDouble-Click to Diagram选项 单击模型图中的一个项,然后单击BrowseSpecification 右单击模型图中的一项以显示快捷菜单,然后单击Op

63、en Specification 选中模型图中的一个项,然后按下CTRLB 选中模型图中的一个项,然后按下F4键 3 模型元素的规范模型元素的规范n3.2 自定义规范窗口自定义规范窗口 如果语言插件支持模型元素中相应的规范,则打开一个已经映射到语言的模型元素的规范窗口时,将显示语言自定义的规范。否则,只显示标准的Rose规范窗口。 3 模型元素的规范模型元素的规范n3.3 编辑规范编辑规范通过编辑一个模型元素的规范,或者通过修改模型图中的图标来改变该元素的属性或关系,Rose会自动地更新相应的模型图和规范一个模型元素如果是写保护的,或者被包含在一个写保护的控制单元内,则该元素规范的OK按钮将被

64、禁用,以阻止对它的修改 3 模型元素的规范模型元素的规范n3.4规范窗口的常见元素规范窗口的常见元素 对话框所有的规范窗口都以对话框的形式显示,并且带有可以导航到特定页和特定项的标签Gerenal标签名称(Name)文档(Documentation)构造型(Stereotype) 3 模型元素的规范模型元素的规范n3.4规范窗口的常见元素规范窗口的常见元素DetailDetail标签标签 3 模型元素的规范模型元素的规范n3.4规范窗口的常见元素规范窗口的常见元素FilesFiles标签标签显示文件、URL、视图文件,以及已经插入到或链接到模型元素和模型图的URL。Files标签在操纵补充文档

65、的链接时十分有用 当在浏览器中展开元素或模型图时,所有在Files标签中列出的URL和文件都将显示出来 3 模型元素的规范模型元素的规范n3.4规范窗口的常见元素规范窗口的常见元素5个控制按钮 OKCancelApplyBrowseSelect in Browser:高亮显示浏览器中所选项Browse Parent:打开所选项父项的规范窗口 Browse Selection:打开当前被选项的规范窗口 Show Usage:显示一个所有当前被选项支持的图的列表(在协作图中,显示消息的用法列表)Help 3 模型元素的规范模型元素的规范n3.5 标签导航标签导航插入操作(插入一个新的行)单击快捷菜

66、单中的Insert或者,按INSERT键删除操作(删除一行)选中行,单击快捷菜单中的Delete或者,按DELETE键 3 模型元素的规范模型元素的规范用例图及其应用用例图及其应用 用例图建模内内 容容n基本概念基本概念 n关系及其应用关系及其应用 n参与者规范及应用参与者规范及应用n用例规范及应用用例规范及应用 n用例视图用例视图 用例图由三部分组成:参与者一组(个)用例关系 1 基本概念基本概念 n1.1 参与者参与者定义定义是直接与系统相互作用的系统、子系统或类的外部实体的抽象。它是用户所扮演的角色,是系统的用户。每个参与者定义了一个角色集合。通常,一个参与者可以代表一个人、一个计算机子

67、系统、硬件设备或者时间等角色。典型的参与者如销售部经理、销售员和结帐系统。 图形表示图形表示用小人图符表示 1 基本概念基本概念 n1.1 参与者参与者 参与者的识别谁将使用系统的主要功能?谁将需要系统的支持来完成他们的日常任务? 谁必须维护、管理和确保系统正常工作? 谁将给系统提供信息、使用信息和删除信息? 系统需要处理哪些硬件设备?系统使用了外部资源吗?系统需要与其他什么系统交互吗?谁或者什么对系统产生的结果感兴趣?一个人同时使用几种不同的规则吗? 几个人使用相同的规则吗?系统使用遗留下来的应用吗?1 基本概念基本概念 1 基本概念基本概念 n1.2 用例用例定义定义对一组动作序列的描述,

68、系统通过执行这一组动作序列为参与者产生一个可观察的结果用例特征说明了系统具有的一种行为模式 说明了一个参与者与系统执行的一个相关的事务序列提供了一种获取系统需求的方法 提供了一种与最终的用户和领域专家进行沟通的方法 提供了一种测试系统的方法图形表示图形表示用椭圆形表示,用例的名字显示在图标的下面 n1.2 用例用例 用例识别用例识别 参与者要向系统请求什么功能? 每个参与者的特定任务是什么? 参与者需要读取、创建、撤消、修改、或存储系统的某些信息吗? 是否任何一个参与者都要向系统通知有关突发性的、外部的改变?或者必须通知参与者关于系统中的发生的事件? 这些事件代表了哪些功能? 系统需要哪些输入

69、/输出? 这些输入输出来自哪里或者到哪里去? 哪些用例支持或维护系统? 是否所有功能需求都被用例使用了? 系统当前实现的主要问题是什么? 1 基本概念基本概念 n1.3 事件流事件流 事件流是用例完成需求行为的事件描述。 事件流的目的是建立用例中逻辑流程的文档,详细描述系统用户的工作和系统本身的工作,既包括正常状态下系统完成需求行为的事件,也包括在其他状态下不能完成需求行为的事件。事件流通常包括:简要说明 前置条件 事件流 后置条件 1 基本概念基本概念 社区管理案例社区管理案例功能功能编号号1.1.1功能名称功能名称用用户资料料录入入所属部所属部门调查者者何亚琴调查时间2004-8-28审核

70、人核人功 能描 述小区住户到管理员处申报个人信息,管理员将住户的住宅位置,住户资料,家庭成员的具体情况录入系统中。每位新住户入住时都要来此进行资料录入,以便管理。输入项将住户位置,包括小区编号、楼宇编号、单元编号、房间编号。住户资料包括户主姓名、性别、宅电传呼、移动电话、工作单位、工作电话、工作地址、入住时间。家庭成员包括姓名、性别、家庭关系、工作单位、单位电话、单位地址、移动电话、传呼按照系统提示之顺序输入。处理描述将输入的数据存入数据库,并建立链接。输出项将录入成功的信息列出,如果数据存入时有错误,则显示出错信息。n1.4 用例模型用例模型 一个用例模型由一个或者多个用例图和所有的支持文件

71、(诸如用例规范和参与者定义等)所构成。用例规范是大多数用例模型的产物,而用例图充当将需求模型综合在一起的粘胶剂。用例模型应当从项目投资者的角度进行开发,而不是从开发者的(通常是技术)观点去开发。 1 基本概念基本概念 关系反应了参与者和用例之间、用例和用例之间以及参与者和参与者之间的相互作用。 在一个用例图中,可能会出现关联关系、依赖关系、泛化关系以及这三种关系的扩展形式:扩展关系、包含关系和精化关系。 2 关系及其应用关系及其应用 n2.1 关联关系关联关系 关联关系表示一种通信路径,它存在于参与者和用例之间,提供用例和参与者之间的通信途径。建立通信之后,信息可以双向流动。 关系方向显示的不

72、是信息的流动方向,而是谁启动信息。 2 关系及其应用关系及其应用 2 关系及其应用关系及其应用 n2.1 关联关系关联关系表示工具箱中:一个直角直线模型图中:一条直线或者一条带箭头的直线关联命名一个动词或者一个动词短语,用于指明关系的类型或者目的。 关联关系表示通信途径 n2.1 关联关系关联关系在用例图中,通常存在两种类型的关联:单向关联 双向关联 Actor1 与 UseCase1Actor2 与 UseCase12 关系及其应用关系及其应用 n2.2 依赖关系依赖关系定义存在于两个模型要素之间的一种关系,其中一个模型要素的改变将影响另一个模型要素 表示方法工具箱和模型图中均表示为一个带箭

73、头的虚线 画图时,拖动鼠标从客户到提供者画出关联关系 2 关系及其应用关系及其应用 n2.3 泛化关系泛化关系定义在一个更一般的模型要素和另一个较具体的模型要素之间存在的一种关系,通常用于表示类(包括用例、参与者等)之间的继承关系 表示方法工具箱中: 模型图中:一条带空心三角形箭头的实线(箭头方向从具体用例指向一般用例) 2 关系及其应用关系及其应用 n2.3 泛化关系泛化关系 用例之间的泛化关系 参与者之间的泛化关系2 关系及其应用关系及其应用 2 关系及其应用关系及其应用 n2.4 关系的扩展关系的扩展1)扩展关系)扩展关系 扩展关系可以放置在所有的关系上,大多数扩展构造型都放置在依赖关系

74、和关联关系上扩展关系用带箭头的虚线表示,沿线上加一个用双尖括号括起来的“extend” n2.4 关系的扩展关系的扩展常见的几种扩展关系 a.两个用例相似但不完全相同时(如图) b.当要对多个额外情况逐一建模时,可以使用扩展关系,用一个独立的用例替代每个额外的情况 c.如果用例涵盖了所有的情况变化,则该用例将会变得十分复杂,应该考虑使用扩展关系 2 关系及其应用关系及其应用 2 关系及其应用关系及其应用 n2.4 关系的扩展关系的扩展 2)包含关系)包含关系是一种构造型关系,它将一个基用例连接到一个包含用例UML1.1中为使用关系,在1.3中改为包含关系包含关系在一个用例中重用另一个用例中的步

75、骤 包含关系用带箭头的虚线表示,沿线上加一个用双尖括号括起来的“include” n2.4 关系的扩展关系的扩展 使用包含关系的三种情况: a.如果有多个用例,并且这些用例包含大量类似的行为,应该考虑将这些类似的行为通过包含关系包含到用例中 b.对两个或多个互相独立的用例建模时做了重复的工作,可以通过包含关系包含这些重复的工作 c.如果某个行为可能会引入冗余,或者,当行为发生变化时可能导致不一致性,这时,应该对这种行为进行孤立建模并将它包含到用例中 2 关系及其应用关系及其应用 n2.4 关系的扩展关系的扩展 包含关系举例2 关系及其应用关系及其应用 n2.4 关系的扩展关系的扩展 3 3)精

76、化关系)精化关系精化关系在不同的语义层或者开发阶段连接两个或者多个模型要素。它表示了某些在一个特定的细节层次上规定的东西的更加全面的规格说明。例如,一个设计类就是一个分析类的一种精化。在一个精化关系中,源模型要素是一般的,在定义上更加概括;而目标模型要素更加具体并得到了进一步的精化。 2 关系及其应用关系及其应用 n3.1 参与者规范参与者规范 Rose在实现中对参与者和类使用相同的规范窗口,包括如下一些标签:General DetailOperationsAttributesRelationsComponentsNestedFiles 3 参与者规范及应用参与者规范及应用 3 参与者规范及应

77、用参与者规范及应用 n3.1 参与者规范参与者规范 General标签NameStereotypeDocumentation 3 参与者规范及应用参与者规范及应用 n3.1 参与者规范参与者规范 Detail标签Multiplicity (参与者基数)Abstract(抽象参与者) 基数含义0.000.10或者10.n0或者多1.111.n1或者多n许多3 参与者规范及应用参与者规范及应用 n3.1 参与者规范参与者规范 Relations标签列出了参与者参与的所有关系。包括参与者与用例、参与者与其他参与者的一切关系 n3.2 参与者的操作参与者的操作 1)增加参与者)增加参与者 2)删除参与

78、者)删除参与者 3 参与者规范及应用参与者规范及应用 n4.1 用例规范用例规范 General标签Diagrams标签Relations标签Files标签4 用例规范及应用用例规范及应用 4 用例规范及应用用例规范及应用 n4.1 用例规范用例规范General标签NamePackageStereotypeRankAbstractDocumentation n4.1 用例规范用例规范 Diagrams标签用例所拥有的模型图的信息,其中第一列(没有标题)显示模型图的图标,第二列(Title)显示图的名称 4 用例规范及应用用例规范及应用 4 用例规范及应用用例规范及应用 n4.1 用例规范用例

79、规范 Relations标签用例与其他用例或参与者之间存在的所有关联关系 4 用例规范及应用用例规范及应用 n4.1 用例规范用例规范 Files标签 n4.2 用例的操作用例的操作 增加用例 将新的用例加入用例图 将现有的用例加入用例图 删除用例仅仅从一个用例图中删除一个用例 从整个模型中删除用例 添加文件和链接URL 4 用例规范及应用用例规范及应用 5 用例视图用例视图 用例图包含的内容用例参与者用例与参与者之间的通信关系用例之间的包含和扩展关系参与者的泛化关系用例图用例实现顺序图协作图 n5.1 用例图操作(用例图操作(RUP软件过程模型)软件过程模型)创建新的用例图打开已有的用例图删

80、除用例图链接用例图重命名用例图5 用例视图用例视图 n5.1 用例图工作箱用例图工作箱 常用工具10个按钮 定制工具箱5 用例视图用例视图 n6.1 寻找所有的系统参与者寻找所有的系统参与者actors,直接直接在在Actors节点下面点击右键节点下面点击右键新增新增6 用例视图操作(用例视图操作(RUP)n6.1 寻找所有的系统参与者寻找所有的系统参与者actors,直接直接在在Actors节点下面点击右键节点下面点击右键新增新增6 用例视图操作(用例视图操作(RUP)6.2 寻找和识别每个系统参与者寻找和识别每个系统参与者actor使用系统使用系统完成什么任务、目标、功能,注意节点位置完成

81、什么任务、目标、功能,注意节点位置6用例视图操作(用例视图操作(RUP)公共的用例目录使用说明66.2 寻找和识别每个系统参与者寻找和识别每个系统参与者actor使使用系统完成什么任务、目标、功能,用系统完成什么任务、目标、功能,6用例视图操作(用例视图操作(RUP)n6.3 全局用例图全局用例图6 用例视图操作(用例视图操作(RUP)这是展示系统所有参与者和用例的全局用这是展示系统所有参与者和用例的全局用例图。可能会比较复杂,通常围绕参与者例图。可能会比较复杂,通常围绕参与者来组织用例来分解这种复杂性来组织用例来分解这种复杂性n6.4 用例图细化和补充,可以对每个用例增加如下制品:用例图细化

82、和补充,可以对每个用例增加如下制品:6 用例视图操作(用例视图操作(RUP)一个用例可以使用交互图、类图、文档等来更进一步细化一个用例可以使用交互图、类图、文档等来更进一步细化描述,比如对用例文本使用相关文档来描述,对用例的事描述,比如对用例文本使用相关文档来描述,对用例的事件流可以使用活动图或者交互图来描述件流可以使用活动图或者交互图来描述类图及其应用类图及其应用 静态建模-类图建模内内 容容n基本概念基本概念 n类图操作类图操作 n类规范与类的应用类规范与类的应用 n属性规范与应用属性规范与应用 n操作规范与应用操作规范与应用 n关联规范与应用关联规范与应用 n泛化规范与应用泛化规范与应用

83、 n依赖规范与应用依赖规范与应用n聚合规范与应用聚合规范与应用 n逻辑包规范与应用逻辑包规范与应用 引引 言言 类图是逻辑视图的重要组成部分,用于对类图是逻辑视图的重要组成部分,用于对系统的静态结构建模,涉及到具体的实现细节。系统的静态结构建模,涉及到具体的实现细节。 在系统分析阶段,类图主要用于显示角色在系统分析阶段,类图主要用于显示角色和提供系统行为的实体的职责;在系统设计阶和提供系统行为的实体的职责;在系统设计阶段,类图主要用于捕捉组成系统体系结构的类段,类图主要用于捕捉组成系统体系结构的类结构;在系统编码阶段,根据类图中的类及它结构;在系统编码阶段,根据类图中的类及它们之间的关系实现系

84、统的功能。们之间的关系实现系统的功能。 类图的地位和作用类图的地位和作用n1.1 类类定义类是一组具有相同属性、相同行为、和其他对象有相同关系、有相同表现的对象描述类具有属性和操作图形表示类名、属性、操作可以简化表示 1 基本概念基本概念 n1.1 类类 属性一般描述类的某个特征,可以确定并区分对象以及对象的状态完整的语法表示可见性属性名多重性:类型初值特殊串 操作操作是与类相关联的行为,表示类提供的服务 完整的语法表示可见性 操作名(参数表):返回类型 特殊串 1 基本概念基本概念 1 基本概念基本概念 n1.1 类类对象对象是一个类的实例,对象的每一个属性都有具体的值 图形表示John是对

85、象名,Person是类名 对象在交互图和状态机中使用 接口一组可重用的操作,描述类的部分行为图形表示两种表示方法1 基本概念基本概念 n1.2 关系关系1)关联()关联(association) 定义两个类在概念上有连接关系时,类之间的连接称为关联;提供了不同类的对象可以相互作用的连接 图形表示用一根连接类的实线表示,用箭头表示关联的方向 ;如果不明确指明方向,则默认关联是双向的 1 基本概念基本概念 n1.2 关系关系 2)聚合()聚合(aggregation) 定义类之间的一种整体与部分的关系 体现了一种层次结构,整体类位于部分类的上层,多个部分类处于并列的层次 图形表示尾端带一个菱形的单

86、箭头直线菱形指向整体部分 1 基本概念基本概念 n1.2 关系关系 3)泛化()泛化(generalization) 定义泛化关系是继承机制中产生的类与类之间的关系 “is a part of”关系:一个事物是另一个事物的种类 图形表示一条带有空心大箭头的有向实线,箭头指向父类 1 基本概念基本概念 n1.2 关系关系 4)依赖)依赖定义两个元素之间的一种关系,其中一个元素(提供者)的变化将影响另一个元素(客体),或向它提供所需信息 显示一个类引用另一个类 图形表示用两个模型元素之间带箭头的虚线表示,箭尾处的模型元素(客户)依赖于箭头处的模型元素(提供者) 1 基本概念基本概念 n1.2 关系

87、关系 5)实现)实现 定义类和接口之间的关系是实现关系,表示类实现接口提供的操作显示一个类引用另一个类 图形表示因接口的表示方法而异 n2.1 创建新的类图创建新的类图步骤右单击浏览器中的逻辑视图名称“Logical View” ;单击快捷菜单中的New Class diagram; 输入新类图的名称。 2 类图操作类图操作n2.2 删除类图删除类图 删除类图时,类图中的类并不删除,它们仍然在浏览器和其它模型图中要删除一幅类图:右单击浏览器中的类图 ;单击快捷菜单中的Delete。 2 类图操作类图操作2 类图操作类图操作n2.3 类图工具箱类图工具箱常用工具如图可以定制工具箱右单击工具箱;单

88、击快捷菜单中的“Customize”;在弹出的“自定义工具栏”对话框中,选择相应的工具图标,然后单击“添加”或“删除”将选定的工具图标添加至窗口的工具箱中,或从工具箱中移走。 3 类规范与类的应用类规范与类的应用 n3.1 类规范类规范 8个标签General标签 Detail标签 Operation标签 Attributes标签 Relations标签 Components标签 Nested标签 Files标签3 类规范与类的应用类规范与类的应用 n3.1 类规范类规范1)General标签 名称(Name) 构造型(Stereotype) 输出控制(Export Control) 选项含义

89、Public系统中所有其它类都能访问这个类Protected这个类可以在嵌套类、友元或同一个类中访问Private这个类可以在友元或同一个类中访问Implementation这个类只能由同一包中的其它类访问3 类规范与类的应用类规范与类的应用n3.1 类规范类规范1)General标签构造型(Stereotype)构造型Actor参与者boundary边界Business actor业务参与者Business entity业务实体Business worker业务工人Control控制Domain域Entity实体Interface接口Table表格View视图3 类规范与类的应用类规范与类的

90、应用 n3.1 类规范类规范2)Detail标签多重性(Multiplicity) 存储需求(Space) 并发性(Concurrency) 类型描述Sequential默认设置。当只有一个控制线程时,类能正常工作;有多个控制线程时,不能保证类能否正常工作Guarded存在多个控制线程时,类正常工作但不同种的类应相互协作,保证不会互相干扰Active类有自己的控制线程Synchronous存在多个控制线程时,类的正常工作不需要与其他类相互协作,类本身能处理互斥情形3 类规范与类的应用类规范与类的应用n3.1 类规范类规范3)Attributes标签 4)Operation标签 5)Relati

91、ons标签 6)Nested标签创建嵌套类 右单击标签中任一空白处,从快捷菜单中选择Insert,输入嵌套类名称;按一般方法创建父类和嵌套类:在浏览器中,将嵌套类拖放到父类。3 类规范与类的应用类规范与类的应用 n3.1 类规范类规范7)Components标签显示用于实现系统中类的构件 复选标记框“Show all components”表示是否要显示模型中的所有构件;如果选中该标记,则显示系统中的所有构件;否则,只显示实现所选类的构件 显示构件时,同时还显示构件所属的包,以及实现所采用的编程语言 n3.2 类的操作类的操作 添加一个类添加一个类单击工具箱中的类图标; 在模型图任一位置单击,

92、新类取名为NewClass;输入新的类名。 删除一个类删除一个类 单击模型图中要删除的类; 选择Edit Delete from Model。 3 类规范与类的应用类规范与类的应用n4.1 属性规范属性规范 3个标签:General标签Detail标签DDL标签4 属性规范与应用属性规范与应用 4 属性规范与应用属性规范与应用 n4.1 属性规范属性规范 1)General标签属性数据类型(Type) 属性构造型(Stereotype) 属性的初值(Initial) 输出控制(Export Control) 选项含义Public公共属性。任何其它类都可以浏览或修改属性的之值Protected保

93、护属性。类及其派生类可以访问该属性Private专用属性。其他类不能访问该属性Implemented实现属性。只能被同一包中的类访问可见性Rose图注UML图注Public+ProtectedPrivate-Implementedn4.1 属性规范属性规范 2) Detail标签属性控制(Containment)By value:按数值 By reference:按引用Unspecified:未指定静态属性(Static) 派生属性(Derived) 4 属性规范与应用属性规范与应用 4 属性规范与应用属性规范与应用 n4.2 属性操作属性操作 增加一个属性增加一个属性右单击浏览器或类图中的类

94、,选择New Attribute,用Name:DataType = Initial Value格式,输入属性名。或者,打开类的规范窗口,选择“Attributes”标签,右单击属性区的任何位置,在快捷菜单中选择Insert。删除一个属性删除一个属性右单击浏览器某个属性,从快捷菜单选择Delete。或者, 选择类图中的某个属性,用退格键删除模型图中的属性名、数据类型和初始值,单击模型图中任一位置,确认删除。 或者,打开属性类的类规范窗口,选择“Attributes”标签,右单击要输出的属性,从快捷菜单中选择Delete,确认删除 。5 操作规范与应用操作规范与应用 n5.1 操作规范操作规范1)

95、General标签标签返回值的类型(Return)构造型(Stereotype) 输出控制(Export Control) 可见性含义Pulic操作可以被其它类访问。Protected操作可以被子类、友元类或本身访问Private操作可以被友元类或本身访问Implemented操作是公开的,但只被同一包中的类访问5 操作规范与应用操作规范与应用 n5.1 操作规范操作规范2)Detail标签标签 操作变元(argument) 操作协议(Protocol) 操作限制(Qualification) 内存长度(Size) 时间(Time) 并发性(Concurrency) Sequential:只有

96、一个控制线程时,操作正常工作。 Guarded:存在多个控制线程时,不同线程的类相互协作,操作可正常工作。 Synchronous:存在多个控制线程时,操作可正常工作。n5.1 操作规范操作规范 3)异常(Exceptions)标签 操作可抛出的异常通过其中的4个按钮添加、删除和上、下移动异常 5 操作规范与应用操作规范与应用 n5.1 操作规范操作规范4)前置条件()前置条件(Preconditions)标签标签 前置条件(Preconditions) 指定操作运行之前应满足的条件,即操作的入口行为,通常是不等式 交互图(Interaction Diagram)说明操作语义的交互图 5 操作

97、规范与应用操作规范与应用 n5.1 操作规范操作规范5)语义()语义(Semantics)标签标签 语义(Semantics) 指定操作的工作在文本框中用伪代码描述操作逻辑 交互图(Interaction Diagram) 说明了操作语义的交互图 5 操作规范与应用操作规范与应用 n5.1 操作规范操作规范6)后置条件)后置条件(Postconditions)标签标签后置条件(Postconditions) 指定操作运行之后要符合的条件,即操作的出口行为,通常是不等式 交互图(Interaction Diagram) 说明操作语义的交互图 5 操作规范与应用操作规范与应用 n5.2 操作应用操

98、作应用 增加一个操作增加一个操作 类似于添加一个属性的操作删除一个操作删除一个操作 类似于删除一个属性的操作5 操作规范与应用操作规范与应用 n6.1 关联规范关联规范 1)General标签标签关系名(Name) 一个动词或动词短语,描述关系的作用,是可选的关系名在关系线上斜体显示6 关联规范与应用关联规范与应用 n6.1 关联规范关联规范 1)General标签标签角色(Role) 描述类在关系中的作用通常是名词或名词短语,显示在起这个作用的类旁边角色名前带有一个加号“+”, 6 关联规范与应用关联规范与应用 6 关联规范与应用关联规范与应用 n6.1 关联规范关联规范2)Detail标签

99、标签链接元素(Link Element) 链接元素也称为关联类,可以放置与关联相关的属性 使用限制(Constraints) 限制是必须符合的条件。在Rose中可以设置关系的限制条件输入的限制条件在生成代码时成为说明语句 6 关联规范与应用关联规范与应用 n6.1 关联规范关联规范 3)Role A General和和Role B General 标标签签Rose在生成代码时要给关联建立一个属性Export Control字段设置该属性的可见性 可见性含义Public公共属性。任何其它类都可以访问或修改属性的之值Protected保护属性。类及其派生类可以访问该属性Private专用属性。其他

100、类不能访问该属性Implemented实现属性。只能被同一包中的类访问6 关联规范与应用关联规范与应用 n6.1 关联规范关联规范4)Role A Detail和和Role B Detail标签标签多重性(Multiplicity) 表示关联中一个类的几个实例与另一个类的一个实例相联系包容(Containment) 设置关联属性是按值还是按引用包容 Static类所有的实例共享的属性 Friend 表示客户类能访问提供者类的非公共属性和操作 选项含义By value按数值。属性放在类中By reference按引用。属性放在类外,类指向这个属性Unspecified未指定。还没有指定控制类型6

101、 关联规范与应用关联规范与应用n6.2 Key/Qualifier规范规范定义即限定词,。在一对多的关联中,索引范围很广,使用限定符可以缩小关联的范围 按下面的步骤可以打开Key/Qualifier规范窗口:双击关联,打开关联规范窗口; 单击“Role A Detail”标签; 双击Key/Qualifier字段列表中的限定词。 n6.2 Key/Qualifier规范规范定义限定词右单击关联规范窗口Key/Qualifier字段列表,从快捷菜单中选择Insert,直接在列表中输入限定词和类型 删除限定词 右单击关联规范窗口Key/Qualifier字段列表,从快捷菜单中选择Delete 修改

102、限定词 单击关联规范窗口Key/Qualifier字段列表,直接在列表中编辑限定词和类型。6 关联规范与应用关联规范与应用n6.3 关联的操作关联的操作 增加关联 改变关系的导航在要移动的关系端单击右键,在快捷菜单中选择Navigable 删除关联 6 关联规范与应用关联规范与应用7 泛化规范与应用泛化规范与应用 n7.1泛化规范泛化规范 General 标签标签n7.2 泛化操作泛化操作创建一个泛化关系删除一个泛化关系8 依赖规范与应用依赖规范与应用 n8.1 8.1 依赖规范依赖规范General标签n8.2 8.2 依赖操作依赖操作创建一个依赖关系删除一个依赖关系n9.1 9.1 聚合规

103、范聚合规范参考关联规范参考关联规范n9.2 9.2 聚合操作聚合操作创建一个聚合关系创建一个聚合关系删除一个聚合关系删除一个聚合关系9 聚合规范与应用聚合规范与应用 10 逻辑包规范与应用逻辑包规范与应用 n10.1 逻辑包操作逻辑包操作包的定义包是一种分组机制,将模型中紧密相关的部分放在同一个包中,减少了模型的规模包之间的关系表现为依赖关系包的操作增加一个包增加一个包 删除一个包n10.2 逻辑包规范逻辑包规范 4个标签,如图交互图及其应用交互图及其应用 交互图建模内内 容容n基本概念基本概念 n顺序图顺序图 n协作图协作图 n顺序图和协作图共有的元素顺序图和协作图共有的元素 n对象规范与应

104、用对象规范与应用 n消息规范与应用消息规范与应用 n消息编号消息编号 n协作图特有的要素协作图特有的要素链链 n顺序图所特有的元素顺序图所特有的元素控制焦点控制焦点 n顺序图与协作图之间的转换顺序图与协作图之间的转换 引引 言言 交互图可以用于对一个用例的事件流程进交互图可以用于对一个用例的事件流程进行建模,也可以单独使用,用于可视化、详述、行建模,也可以单独使用,用于可视化、详述、构造和文档化一个特定对象群体的动态方面。构造和文档化一个特定对象群体的动态方面。交互图显示一个交互,由一组对象和它们之间交互图显示一个交互,由一组对象和它们之间的关系构成,其中包括:需要什么对象、对象的关系构成,其

105、中包括:需要什么对象、对象相互发送什么消息、什么角色启动消息以及消相互发送什么消息、什么角色启动消息以及消息按什么顺序发送。息按什么顺序发送。n1.1 交互图交互图分类交互图分为两种:顺序图和协作图顺序图强调消息发送的时间顺序协作图则强调接收和发送消息的对象的组织结构 顺序图和协作图语义等价顺序图和协作图在语义上是等价的,共享相同的基本模型 两个图都可以表示另一个图所不能表示的某些东西 顺序图和协作图可以实现两者之间的等价转换,而不丢失任何信息 1 基本概念基本概念 1 基本概念基本概念n1.2 对象对象对象是类的实例,具有特定的属性和操作。在交互图中,属性展示了对象的信息和状态,操作展示了对

106、象的行为和功能。 1 基本概念基本概念n1.3 消息消息消息是从一个对象到另一个或者几个其他对象的信息传递,简单地说,消息就是对象与对象、参与者与参与者,或者对象与参与者之间的某种通信方式。消息可以是一个信号或一次操作调用,收到消息即为事件。可以有两种消息,一种是从发送者向接收者发送信号,另一种是由调用者调用接收者的操作对象之间的协作通过相互发送消息实现。 2 顺序图顺序图 顺序图是描述消息时间顺序的交互图。在图形上,顺序图是一张表,其中显示的对象沿横轴排列,从左到右分布在图的顶部;而消息则沿纵轴按时间顺序排序。创建顺序图时,以能够使图尽量简洁为依据布局。 职责驱动设计对象协作建模职责驱动设计

107、对象协作建模(设计与代码设计与代码)表示消息doOne的接收者A类为完成这个消息赋予的职责,对应有一个方法: doOne,为完成这个责任,这个方法需要与B类对象myB协作Public class Aprivate B myB = new B();Public void doOne() myB.doTwo(); myB.doThree();2 顺序图顺序图n2.1 顺序图中的要素顺序图中的要素顺序图包含的内容顺序图包含的内容1)对象2)对象生命线3)消息4)控制焦点 对象、对象生命线和控制焦点对象、对象生命线和控制焦点 表示方法对象向下方垂直伸展的虚线称为该对象的生命线 ,表示该对象存在的时间长

108、度 大“X”标记表明生命的结束 在生命线上的窄矩形条称为控制焦点,控制焦点表示该对象正在执行某个操作。窄矩形的长度表示操作的持续时间。2 顺序图顺序图n2.1 顺序图中的要素顺序图中的要素消息的表示方法消息的表示方法用消息线(消息图标)表示。一个对象到另一个对象的消息用跨越对象生命线的一条消息线表示出来,包括反身消息。三种表示消息的方法消息线本身消息线加消息编号消息线加消息编号加消息名 2 顺序图顺序图n2.1 顺序图中的要素顺序图中的要素消息的分类消息的分类UML的消息分为:简单(simple)同步(synchronous)异步(asynchronous)Rose的消息分类7种类型,见消息规

109、范 2 顺序图顺序图n2.2创建顺序图创建顺序图创建方法单击Browse Interaction Diagram,弹出Select Interaction Diagram对话框; 在对话框左边选择预建立顺序图的包,单击OK。弹出New Interaction Diagram对话框; 在Title字段输入新框图的名字,单击diagram type中的Sequence,单击OK; 2 顺序图顺序图n2.3 在顺序图中添加脚本在顺序图中添加脚本 目的对消息增加说明移动顺序图中的消息时,相应的脚本也将随之移动到新的位置要避免在框图中放入太多的逻辑条件,以保持框图的简洁性要避免在框图中放入太多的逻辑条件

110、,以保持框图的简洁性 添加方法选择工具箱中的文本图标;单击框图中要放入脚本的位置,通常将脚本放在框图的左边;在文本框中键入脚本文本; 选中脚本文本框,按下shift键后选中脚本所描述的消息;选择Edit Attach Script。 撤销方法选择脚本和消息中的任意一项; 选择Edit Detach Script。 2 顺序图顺序图n2.4 顺序图的删除顺序图的删除方法步骤右键单击浏览器中的顺序框图名; 在快捷菜单中选择“Delete”。 2 顺序图顺序图n2.5 顺序图工具箱顺序图工具箱12种常见工具按钮可以定制3 协作图协作图 协作图强调发送和接受消息的对象之间协作图强调发送和接受消息的对象

111、之间的结构组织的交互图,显示对象、对象之间的结构组织的交互图,显示对象、对象之间的链接以及对象之间的消息,还可以显示当的链接以及对象之间的消息,还可以显示当前模型中的简单类实例和类实体实例。前模型中的简单类实例和类实体实例。 3 协作图协作图n3.1 协作图包含的元素协作图包含的元素 对象 链 消息 3 协作图协作图n3.2 协作图的创建和删除协作图的创建和删除 创建一个新协作图的步骤如下:1)单击Browse Interaction Diagram。弹出Select Interaction Diagram对话框; 2)在对话框左边选择预建立协作图的包,单击OK。弹出New Interacti

112、on Diagram对话框; 3)在Title字段输入新框图的名字,单击diagram type中的Collaboration,单击OK按钮。 删除一个协作图的步骤如下:1)右键单击浏览器中的协作框图名;2)在快捷菜单中选择“Delete”。 3 协作图协作图n3.4 协作图工具箱协作图工具箱13种常见工具可以定制4 顺序图和协作图共有的元素顺序图和协作图共有的元素 n4.1 对象对象 表示方法Object指明对象,Class定义Object的类型如果对象已经映射到类,用户便可以在Rose中选择性的显示对象名、类名可以用一个多实例图标表示类的多个实例4 顺序图和协作图共有的元素顺序图和协作图共

113、有的元素n4.2 消息消息1)将消息加进顺序图)将消息加进顺序图单击工具箱中的 按钮;将鼠标从发送消息的对象或参与者的生命线拖动到接受消息的对象或参与者的生命线; 输入消息文本。 4 顺序图和协作图共有的元素顺序图和协作图共有的元素n4.2 消息消息2)将反身消息加进顺序图)将反身消息加进顺序图单击工具箱中的 按钮;单击收发消息的对象生命线; 输入消息名。 4 顺序图和协作图共有的元素顺序图和协作图共有的元素n4.2 消息消息3)将消息加进协作图)将消息加进协作图单击工具箱中的 按钮; 单击框图中对象间的链接; 输入消息名。4)删除消息选择要删除的消息; 选择Eddit Delete from

114、 Model或按Ctrl+D。注意:在协作图中消息删除后,链接仍然存在于注意:在协作图中消息删除后,链接仍然存在于模型中模型中 4 顺序图和协作图共有的元素顺序图和协作图共有的元素n4.3 消息编号消息编号 Rose中默认顺序图中不显示消息编号,协作图显示消息编号。顺序图中,消息根据对象生命线从上往下从1开始进行编号;协作图中,消息根据建立的顺序从1开始进行编号。删除消息时,Rose自动将其余消息重新编号。 4 顺序图和协作图共有的元素顺序图和协作图共有的元素n4.3 消息编号消息编号 打开或关闭消息编号:选择Tools Options; 选择Diagram标签; 复选或取消Collabora

115、tion Numbering 或者Sequence Numbering。 4 顺序图和协作图共有的元素顺序图和协作图共有的元素n4.4 为消息分配操作为消息分配操作要给消息分配操作: 双击框图中的消息图标; 从弹出的列表中选择一个操作。或者单击 定义一个新操作。改变消息指定的操作: 双击框图中的消息; 在消息规范窗口“Name”字段列表框中选择新的操作名 。 5 对象规范与应用对象规范与应用n5.1 对象规范对象规范1)映射类()映射类(Class)在Class下拉列表框中选择类名; 或者,将浏览器中的类拖动到框图中的对象上。2)对象持续性()对象持续性(Persistence) Persis

116、tent:对象保存到数据库或者其他形式的永久存储体中 Static:对象保存在内存中直到程序中止Transient:对象只在短时间内保存在内存中 3)多实例()多实例(Multiple instances) 选中该复选框之后,协作图中的对象图标将显示为多实例图标。但在顺序图中,对象图标仍然是单个对象的图标。 6消息规范与应用消息规范与应用n6.1 消息规范消息规范1)General标签标签Name:消息名Documentation:对消息的附加说明6消息规范与应用消息规范与应用n6.1 消息规范消息规范2)Detail标签标签消息同步类型(Synchronization) 选项Rose图标含义

117、Simply默认值。Synchronous同步。客户(发送消息的对象)发出消息后,等待供应者(即消息接收者,或操作提供者)响应消息。客户等供应者执行完操作之后才能继续其本身的进程,在执行操作的这段时间内,客户一直处于等待状态,直到它收到从操作提供者那里返回的消息。Balking阻止。客户只能在操作提供者能立即接收消息的情况下发送消息。如果操作提供者没有准备好接收消息,则客户将放弃该消息。Timeout超时。客户发出消息并指定等待时间,如果供应者不能在指定时间内处理消息,则客户将放弃该消息。Asynchronous异步。客户发出消息后,不等待消息是否接收,无需等待供应者的应答,可以直接继续自身的

118、操作。Procedure Call过程调用。客户发出消息,等待处理消息的整个嵌套顺序完成之后才能继续。Return返回。从过程调用返回。返回箭头可以省略,因为这种消息隐式地表示一个活动的结束。6消息规范与应用消息规范与应用n6.1 消息规范消息规范1)General标签Name:消息名Documentation:对消息的附加说明6消息规范与应用消息规范与应用n6.1 消息规范消息规范1)General标签Name:消息名Documentation:对消息的附加说明6消息规范与应用消息规范与应用n6.1 消息规范消息规范1)Detail标签消息频率(Frequency)消息频率可以让消息按规定的

119、时间间隔发送不定期(Aperiodic):将消息设定为不定期发送的消息、只发送一次,或者不规则时间间隔发送 定期(Periodic) :将消息设定为定期发送的消息 7 消息编号消息编号 消息编号用来表示一个消息的时间顺序,通过消息的顺序编号可以更清楚地看出各消息之间的时间顺序以及相互之间的关系。 在交互图中可以选择显示消息编号。在顺序图中,消息可以按两种方式编号: Top-Level(顶级编号)方式,如1、2、3;或者Hierarchical(等级编号)方式,如1.1、1.1.2、1.1.3。在协作图中,消息只能采用Top-Level 编号,但如果协作图是由顺序图转换而来,图中也可以使用Hie

120、rarchical 编号。 7 消息编号消息编号n7.1 Top-Level 编号编号定义顶级编号。编号由1开始,后续消息的编号单调递增,消息编号只有一个单一的数字,没有数字子集。举例如用户设定了编号为1.,1.1.,1.2.和1.2.1.的消息,在顶级编号时将被编号为1,2,3和4 一般用于对象和消息很少的顺序图中 要对消息进行顶级编号:单击Tools Options; 单击Diagram标签; 选中Sequence Numbering复选框。 7 消息编号消息编号n7.2 Hierarchical编号编号定义即等级编号,Hierarchical 编号使用带小数点的号码,方便显示消息嵌套。举

121、例如1表示第一个消息,1.1表示嵌套在消息中的第一个消息,1.2表示嵌套在消息中的第二个消息。注意:如果删除消息1,则嵌套在消息1中的其他消息也将同时被删除。 要对消息进行等级编号: 选择Tools Options; 单击Diagram标签; 同时选中Sequence Numbering和Hierarchical Messages复选框。 7 消息编号消息编号n7.2 Hierarchical编号编号8 协作图特有的要素协作图特有的要素链链 n8.1 链的定义链的定义链是关联的实例,当一个类与另一个类之间有关联时,这两个类的实例之间就有链,一个对象就能向另一个对象发送消息。所以链是对象间的发送

122、消息的路径。要在协作图中增加消息,必须先建立对象之间的链接。链接一般建立在两个对象或者两个类实例之间,也可以建立反身链接。 8 协作图特有的要素协作图特有的要素链链n8.2 链的操作链的操作 创建链接:单击工具箱中的 按钮; 从一个对象拖动到另一个对象,创建链接。 创建反身链接单击工具箱中的 按钮;单击发送消息的对象,建立反身链接。 8 协作图特有的要素协作图特有的要素链链n8.3 链的规范链的规范 1)General标签关联(Assoc):两个对象的类之间建立的关联 类关联 对象之间的链接8 协作图特有的要素协作图特有的要素链链n8.3 链的规范链的规范1)General标签标签可见性(Vi

123、sibility):一个对象看到另一个对象的能力 选项含义Unspecified (Default) 不指定对象的可见性(默认值)Field 供应者对象可见。Parameters 供应者参数可见。供应者对象是客户对象操作中的一个参数。Local 供应者对象局部可见。供应者对象是客户对象操作中的一个局部变量。Global供应者对象全局范围内可见。8 协作图特有的要素协作图特有的要素链链n8.3 链的规范链的规范2)Messages标签标签显示了当前链接上的消息信息 右图说明: 一个是正向的链消息(由客户发给供应者),一个是逆向的链消息(由供应者返回给客户);消息的编号分别为2和4;消息名分别为n

124、otify(keystroke)和update(keystroke),接收对象分别为OperatingSystem类的实例和GUI类的实例。 9 顺序图所特有的元素顺序图所特有的元素控制焦点控制焦点 控制焦点是顺序图所特有的元素。控制焦点是对象生命线上一个窄矩形,用于装饰对象生命线,表示对象执行一个动作所经历的时间长度。矩形的顶部表示动作的开始,底部表示动作的结束。上下移动控制焦点时,依附在其上的每个独立的消息线也将发生相应的移动。 9 顺序图所特有的元素顺序图所特有的元素控制焦点控制焦点n9.1 显示控制焦点显示控制焦点显示或关闭控制焦点的方法:单击Tools Options; 单击Diag

125、ram标签; 选中“Focus of Control”左边的复选框,表示在顺序图中显示控制焦点;否则,在顺序图中不显示控制焦点。n9.2 控制焦点着色控制焦点着色单击箭头指向控制焦点的消息。 选择Format Fill Color; 在颜色框中单击要选择的填充颜色; 单击OK。 9 顺序图所特有的元素顺序图所特有的元素控制焦点控制焦点n9.3 控制焦点的嵌套控制焦点的嵌套嵌套的控制焦点依附在另外一个控制焦点之上,它可以确切地区分一个消息开始和终止的具体位置。要显示嵌套的控制焦点,必须同时选中Options对话框中Diagram标签中的Hierarchical Messages和Focus of

126、 Control两个选项。 9 顺序图所特有的元素顺序图所特有的元素控制焦点控制焦点n9.4 移动控制焦点移动控制焦点 移动控制焦点的方法:选中要移动的控制焦点上的第一个消息线; 按下Alt键; 单击并拖动源消息至目标位置。 10 顺序图与协作图之间的转换顺序图与协作图之间的转换 n10.1 从顺序图转换成协作图从顺序图转换成协作图 从sequence框图创建collaboration框图:打开sequence 框图; 选择Browse Create collaboration Diagram;或者,直接按下F5键; 浏览协作图并调整图中模型元素的位置。n 10.2 从协作图转换成顺序图从协作

127、图转换成顺序图 从collaboration 框图创建sequence框图 :打开collaboration 框图; 选择Browse Create Sequence Diagram;或者,直接按下F5键;浏览顺序图并调整图中模型元素的位置。 用例图及其应用用例图及其应用 用例图建模内内 容容n基本概念基本概念 n关系及其应用关系及其应用 n参与者规范及应用参与者规范及应用n用例规范及应用用例规范及应用 n用例视图用例视图 用例图由三部分组成:参与者一组(个)用例关系 1 基本概念基本概念 n1.1 参与者参与者定义定义是直接与系统相互作用的系统、子系统或类的外部实体的抽象。它是用户所扮演的角

128、色,是系统的用户。每个参与者定义了一个角色集合。通常,一个参与者可以代表一个人、一个计算机子系统、硬件设备或者时间等角色。典型的参与者如销售部经理、销售员和结帐系统。 图形表示图形表示用小人图符表示 1 基本概念基本概念 n1.1 参与者参与者 参与者的识别谁将使用系统的主要功能?谁将需要系统的支持来完成他们的日常任务? 谁必须维护、管理和确保系统正常工作? 谁将给系统提供信息、使用信息和删除信息? 系统需要处理哪些硬件设备?系统使用了外部资源吗?系统需要与其他什么系统交互吗?谁或者什么对系统产生的结果感兴趣?一个人同时使用几种不同的规则吗? 几个人使用相同的规则吗?系统使用遗留下来的应用吗?

129、1 基本概念基本概念 1 基本概念基本概念 n1.2 用例用例定义定义对一组动作序列的描述,系统通过执行这一组动作序列为参与者产生一个可观察的结果用例特征说明了系统具有的一种行为模式 说明了一个参与者与系统执行的一个相关的事务序列提供了一种获取系统需求的方法 提供了一种与最终的用户和领域专家进行沟通的方法 提供了一种测试系统的方法图形表示图形表示用椭圆形表示,用例的名字显示在图标的下面 n1.2 用例用例 用例识别用例识别 参与者要向系统请求什么功能? 每个参与者的特定任务是什么? 参与者需要读取、创建、撤消、修改、或存储系统的某些信息吗? 是否任何一个参与者都要向系统通知有关突发性的、外部的

130、改变?或者必须通知参与者关于系统中的发生的事件? 这些事件代表了哪些功能? 系统需要哪些输入/输出? 这些输入输出来自哪里或者到哪里去? 哪些用例支持或维护系统? 是否所有功能需求都被用例使用了? 系统当前实现的主要问题是什么? 1 基本概念基本概念 n1.3 事件流事件流 事件流是用例完成需求行为的事件描述。 事件流的目的是建立用例中逻辑流程的文档,详细描述系统用户的工作和系统本身的工作,既包括正常状态下系统完成需求行为的事件,也包括在其他状态下不能完成需求行为的事件。事件流通常包括:简要说明 前置条件 事件流 后置条件 1 基本概念基本概念 社区管理案例社区管理案例功能功能编号号1.1.1

131、功能名称功能名称用用户资料料录入入所属部所属部门调查者者何亚琴调查时间2007-8-28审核人核人功 能描 述小区住户到管理员处申报个人信息,管理员将住户的住宅位置,住户资料,家庭成员的具体情况录入系统中。每位新住户入住时都要来此进行资料录入,以便管理。输入项将住户位置,包括小区编号、楼宇编号、单元编号、房间编号。住户资料包括户主姓名、性别、宅电传呼、移动电话、工作单位、工作电话、工作地址、入住时间。家庭成员包括姓名、性别、家庭关系、工作单位、单位电话、单位地址、移动电话、传呼按照系统提示之顺序输入。处理描述将输入的数据存入数据库,并建立链接。输出项将录入成功的信息列出,如果数据存入时有错误,

132、则显示出错信息。n1.4 用例模型用例模型 一个用例模型由一个或者多个用例图和所有的支持文件(诸如用例规范和参与者定义等)所构成。用例规范是大多数用例模型的产物,而用例图充当将需求模型综合在一起的粘胶剂。用例模型应当从项目投资者的角度进行开发,而不是从开发者的(通常是技术)观点去开发。 1 基本概念基本概念 关系反应了参与者和用例之间、用例和用例之间以及参与者和参与者之间的相互作用。 在一个用例图中,可能会出现关联关系、依赖关系、泛化关系以及这三种关系的扩展形式:扩展关系、包含关系和精化关系。 2 关系及其应用关系及其应用 n2.1 关联关系关联关系 关联关系表示一种通信路径,它存在于参与者和

133、用例之间,提供用例和参与者之间的通信途径。建立通信之后,信息可以双向流动。 关系方向显示的不是信息的流动方向,而是谁启动信息。 2 关系及其应用关系及其应用 2 关系及其应用关系及其应用 n2.1 关联关系关联关系表示工具箱中:一个直角直线模型图中:一条直线或者一条带箭头的直线关联命名一个动词或者一个动词短语,用于指明关系的类型或者目的。 关联关系表示通信途径 n2.1 关联关系关联关系在用例图中,通常存在两种类型的关联:单向关联 双向关联 Actor1 与 UseCase1Actor2 与 UseCase12 关系及其应用关系及其应用 n2.2 依赖关系依赖关系定义存在于两个模型要素之间的一

134、种关系,其中一个模型要素的改变将影响另一个模型要素 表示方法工具箱和模型图中均表示为一个带箭头的虚线 画图时,拖动鼠标从客户到提供者画出关联关系 2 关系及其应用关系及其应用 n2.3 泛化关系泛化关系定义在一个更一般的模型要素和另一个较具体的模型要素之间存在的一种关系,通常用于表示类(包括用例、参与者等)之间的继承关系 表示方法工具箱中: 模型图中:一条带空心三角形箭头的实线(箭头方向从具体用例指向一般用例) 2 关系及其应用关系及其应用 n2.3 泛化关系泛化关系 用例之间的泛化关系 参与者之间的泛化关系2 关系及其应用关系及其应用 2 关系及其应用关系及其应用 n2.4 关系的扩展关系的

135、扩展1)扩展关系)扩展关系 扩展关系可以放置在所有的关系上,大多数扩展构造型都放置在依赖关系和关联关系上扩展关系用带箭头的虚线表示,沿线上加一个用双尖括号括起来的“extend” n2.4 关系的扩展关系的扩展常见的几种扩展关系 a.两个用例相似但不完全相同时(如图) b.当要对多个额外情况逐一建模时,可以使用扩展关系,用一个独立的用例替代每个额外的情况 c.如果用例涵盖了所有的情况变化,则该用例将会变得十分复杂,应该考虑使用扩展关系 2 关系及其应用关系及其应用 2 关系及其应用关系及其应用 n2.4 关系的扩展关系的扩展 2)包含关系)包含关系是一种构造型关系,它将一个基用例连接到一个包含

136、用例UML1.1中为使用关系,在1.3中改为包含关系包含关系在一个用例中重用另一个用例中的步骤 包含关系用带箭头的虚线表示,沿线上加一个用双尖括号括起来的“include” n2.4 关系的扩展关系的扩展 使用包含关系的三种情况: a.如果有多个用例,并且这些用例包含大量类似的行为,应该考虑将这些类似的行为通过包含关系包含到用例中 b.对两个或多个互相独立的用例建模时做了重复的工作,可以通过包含关系包含这些重复的工作 c.如果某个行为可能会引入冗余,或者,当行为发生变化时可能导致不一致性,这时,应该对这种行为进行孤立建模并将它包含到用例中 2 关系及其应用关系及其应用 n2.4 关系的扩展关系

137、的扩展 包含关系举例2 关系及其应用关系及其应用 n2.4 关系的扩展关系的扩展 3 3)精化关系)精化关系精化关系在不同的语义层或者开发阶段连接两个或者多个模型要素。它表示了某些在一个特定的细节层次上规定的东西的更加全面的规格说明。例如,一个设计类就是一个分析类的一种精化。在一个精化关系中,源模型要素是一般的,在定义上更加概括;而目标模型要素更加具体并得到了进一步的精化。 2 关系及其应用关系及其应用 n3.1 参与者规范参与者规范 Rose在实现中对参与者和类使用相同的规范窗口,包括如下一些标签:General DetailOperationsAttributesRelationsComp

138、onentsNestedFiles 3 参与者规范及应用参与者规范及应用 3 参与者规范及应用参与者规范及应用 n3.1 参与者规范参与者规范 General标签NameStereotypeDocumentation 3 参与者规范及应用参与者规范及应用 n3.1 参与者规范参与者规范 Detail标签Multiplicity (参与者基数)Abstract(抽象参与者) 基数含义0.000.10或者10.n0或者多1.111.n1或者多n许多3 参与者规范及应用参与者规范及应用 n3.1 参与者规范参与者规范 Relations标签列出了参与者参与的所有关系。包括参与者与用例、参与者与其他参

139、与者的一切关系 n3.2 参与者的操作参与者的操作 1)增加参与者)增加参与者 2)删除参与者)删除参与者 3 参与者规范及应用参与者规范及应用 n4.1 用例规范用例规范 General标签Diagrams标签Relations标签Files标签4 用例规范及应用用例规范及应用 4 用例规范及应用用例规范及应用 n4.1 用例规范用例规范General标签NamePackageStereotypeRankAbstractDocumentation n4.1 用例规范用例规范 Diagrams标签用例所拥有的模型图的信息,其中第一列(没有标题)显示模型图的图标,第二列(Title)显示图的名称

140、 4 用例规范及应用用例规范及应用 4 用例规范及应用用例规范及应用 n4.1 用例规范用例规范 Relations标签用例与其他用例或参与者之间存在的所有关联关系 4 用例规范及应用用例规范及应用 n4.1 用例规范用例规范 Files标签 n4.2 用例的操作用例的操作 增加用例 将新的用例加入用例图 将现有的用例加入用例图 删除用例仅仅从一个用例图中删除一个用例 从整个模型中删除用例 添加文件和链接URL 4 用例规范及应用用例规范及应用 5 用例视图用例视图 用例图包含的内容用例参与者用例与参与者之间的通信关系用例之间的包含和扩展关系参与者的泛化关系用例图用例实现顺序图协作图 n5.1

141、 用例图操作(用例图操作(RUP软件过程模型)软件过程模型)创建新的用例图打开已有的用例图删除用例图链接用例图重命名用例图5 用例视图用例视图 n5.1 用例图工作箱用例图工作箱 常用工具10个按钮 定制工具箱5 用例视图用例视图 n6.1 寻找所有的系统参与者寻找所有的系统参与者actors,直接直接在在Actors节点下面点击右键节点下面点击右键新增新增6 用例视图操作(用例视图操作(RUP)n6.1 寻找所有的系统参与者寻找所有的系统参与者actors,直接直接在在Actors节点下面点击右键节点下面点击右键新增新增6 用例视图操作(用例视图操作(RUP)6.2 寻找和识别每个系统参与者

142、寻找和识别每个系统参与者actor使用系统使用系统完成什么任务、目标、功能,注意节点位置完成什么任务、目标、功能,注意节点位置6用例视图操作(用例视图操作(RUP)公共的用例目录使用说明66.2 寻找和识别每个系统参与者寻找和识别每个系统参与者actor使使用系统完成什么任务、目标、功能,用系统完成什么任务、目标、功能,6用例视图操作(用例视图操作(RUP)n6.3 全局用例图全局用例图6 用例视图操作(用例视图操作(RUP)这是展示系统所有参与者和用例的全局用这是展示系统所有参与者和用例的全局用例图。可能会比较复杂,通常围绕参与者例图。可能会比较复杂,通常围绕参与者来组织用例来分解这种复杂性

143、来组织用例来分解这种复杂性n6.4 用例图细化和补充,可以对每个用例增加如下制品:用例图细化和补充,可以对每个用例增加如下制品:6 用例视图操作(用例视图操作(RUP)一个用例可以使用交互图、类图、文档等来更进一步细化一个用例可以使用交互图、类图、文档等来更进一步细化描述,比如对用例文本使用相关文档来描述,对用例的事描述,比如对用例文本使用相关文档来描述,对用例的事件流可以使用活动图或者交互图来描述件流可以使用活动图或者交互图来描述第第7章章 构件图及其应用构件图及其应用 Rational Rose 2003基础教程配套电子教案内内 容容n基本概念基本概念 n构件图操作构件图操作 n构件规范构

144、件规范 n构件包规范构件包规范 构件图提供当前模型的物理视图,对系统的静态实现视图建模。构件图显示一个系统物理设计时,构件所映射的类和对象的配置。 一个构件图可以表示一个系统全部或者部分的构件体系。从组织内容看,构件图显示软件构件的组织以及构件之间的依赖关系,包括源代码构件、二进制代码构件以及可执行构件。 构件图主要包含以下几种内容:构件、接口、依赖关系以及构件包。 1 基本概念基本概念 1 基本概念基本概念n构件图举例构件图举例n1.1 构件和接口构件和接口构件是系统中遵从一组接口并提供其实现的物理的、可替换的部分,是定义了良好接口的软件模块,如源代码、二进制代码、可执行文件以及动态连接库等

145、。构件的接口由该构件支持的一个或多个接口元素表示。在建模中,构件用于显示编译和运行时的依赖关系,以及接口和软件模块之间调用的依赖关系。一个系统可以包含多个不同类型的软件模块,每个软件模块都由模型中一个构件表示。 1 基本概念基本概念 1 基本概念基本概念 n1.1 构件和接口构件和接口图形表示构件用左边带有两个标签的矩形图标表示 接口用于描述构件所提供的服务的一组操作集合,指定了构件的外部可见操作。构件和接口之间的关系叫做实现关系。可以通过接口是访问一个构件。 n1.2 依赖关系依赖关系依赖关系表示一个实体使用另一个实体提供的服务。在构件图中,常见的两种依赖关系:编译依赖调用依赖使用依赖关系的

146、三种情况:客户类要访问一个在提供者类(接口)中定义的值(常量或变量); 客户类的操作激活提供者类(接口)的操作; 客户类的操作具有返回到提供者类(接口)的实例或参量的特征标记。 1 基本概念基本概念 1 基本概念基本概念n1.3 构件包构件包定义:包含一组逻辑相关的构件或者系统的主要构件,它所扮演的角色和作用类似于类图中的逻辑包。构件包的名称通常就是文件系统的路径名。 图形表示2 构件图操作构件图操作 n2.1 创建和显示构件图创建和显示构件图可以通过下面三种方式中的某一种来显示和创建构件图:单击BrowseComponent Diagram; 在工具文本框上双击构件图图标; 在浏览器中,在构

147、件图图标上双击。 2 构件图操作构件图操作 n2.2 构件图工具箱构件图工具箱 18种常见工具可以定制2 构件图操作构件图操作 n2.3 将构件映射到另一个包将构件映射到另一个包 每个构件都对应地属于一个包。当用构件图工具箱中的创建工具创建了一个构件之后,新的构件将被映射到包含构件图的包。 要将一个包(包A)中的构件重新映射到给另一个包(包B): 在被包(A)直接包含的图中选中要重新映射的构件图标;单击EditRelocate。3 构件规范构件规范 n3.1 General标签标签Name(名称)Stereotype(构造型) Language(语言)Documentation(说明)3 构件

148、规范构件规范 n3.2 Detail标签标签Declarations(声明):声明文本框包含一个声明列表,如类名、变量以及其它一些语言专有特性(#includes或类似的结构)。 3 构件规范构件规范 n3.3 Realizes标签标签Show all Classes:显示所有的类Classes Name:类名Logical Package Name:逻辑包名Language:语言3 构件规范构件规范 n3.4 Files标签标签通过单击快捷菜单中的“Insert File”,可以插入一个新的与构件相关的文件;或者,单击“Insert URL”,将一个新的URL与构件相连接。 4 构件包规范构

149、件包规范n4.1 General标签标签 Name字段:Stereotype字段 :4 构件包规范构件包规范n4.2 Detail标签标签Detail标签显示构件图文本框,该文本框列出了包中所含的构件图。 4 构件包规范构件包规范n4.3 Files标签标签Files标签在操纵补充文档的链接时十分有用。补充文档用于说明构件包,其中Filename列显示文件名,Path列显示文件所在的路径。 4 构件包规范构件包规范n4.4 Ada83标签和标签和Ada95标签标签 Set字段:属性设置“Edit Set.”按钮:点击该按钮,将弹出一个相应的属性设置窗口第第8章章 部署图及其应用部署图及其应用

150、Rational Rose 2003基础教程配套电子教案内内 容容n部署图概述部署图概述 n部署图操作部署图操作 n处理器规范处理器规范 n设备规范设备规范 n进程规范进程规范 1 部署图概述部署图概述 部署图对面向对象系统的物理方面建模,描述系统运行时节点、构件实例及其对象的配置。 节点是各种计算资源的通用名称,包括处理器和设备两种类型,两者的区别是处理器能够执行程序的硬件构件(如计算机主机),而设备是一种不具备计算能力的硬件构件(如打印机)。 处理器和设备都用箱子图形表示,区别是处理器的侧面有阴影。 1 部署图概述部署图概述n部署图举例部署图举例每一个模型都包含一个独立的部署图,显示模型的

151、处理器及其设备之间的连接,以及处理器到处理器的布置。 n2.1 创建和显示部署图创建和显示部署图可以通过下面三种方式中的某一种来创建或显示部署图:单击BrowseDeployment Diagram; 在工具栏上,单击部署图图标; 在浏览器中,双击部署图图标。 2 部署图操作部署图操作 2 部署图操作部署图操作n2.2 部署图工具箱部署图工具箱8种常用工具可以定制 3 处理器规范处理器规范 n3.1 General标签标签Name:显示处理器的名称Stereotype:显示处理器的构造型 Documentation:显示对处理器的附加说明 3 处理器规范处理器规范n3.2 Detail标签标签

152、 Characteristics:指定处理器的物理描述Processes:指派给该处理器的进程 Scheduling:处理器所使用的进程调度类型 类型描述Preemptive已经就绪的、较高优先权的进程可以抢占当前正在执行的、较低优先权的进程的资源。相同优先权的进程将被赋予一个执行的时间片,允许平均分配计算资源(默认的情况)。Non preemptive当前进程将持续执行,直到它放弃控制。Cyclic控制从一个进程传递给另一个进程,每个进程有一固定的处理时间长度。Executive由一种算法控制进程调度。Manual进程由系统外部的一个用户调度。4 设备规范设备规范 n4.1 General标

153、签标签 Name:显示设备的名称 Stereotype:显示设备的构造型 Documentation:显示对设备的附加说明4 设备规范设备规范 n4.2 Detail标签标签Characteristics:指定设备的物理描述 5 进程规范进程规范 n定义定义是在一个处理器中执行的控制线程(thread)n进程规范进程规范对一个控制线程的文档说明Name:显示进程的名称Processor:显示进程的所有者 Priority:进程的相对优先权 Documentation:对进程的附加说明 Rose的双向工程的双向工程 双向工程双向工程内内 容容nRose对编程语言的支持对编程语言的支持 nRose

154、的双向工程的双向工程 nRTE举例举例 nRose的正向工程的正向工程 nRose的逆向工程的逆向工程 1 Rose对编程语言的支持对编程语言的支持 支持的语言企业版专业版Rose 2003 ModelerANSI C+XC+版本Visual C+XC+版本Visual BasicXVB版本JavaXJ版本AdaXAda版本CORBA IDLXMIDLXXML DTDX2 Rose的双向工程的双向工程 Rose支持UML模型与编程语言之间的相互转换,采用双向工程(RTE,Round Trip Engineering)的解决方案。Rose可以分析代码的改动,对模型进行修改,构建出与代码相关的更好

155、的模型。 2 Rose的双向工程的双向工程3 RTE举例举例 n3.1 从模型到代码从模型到代码正向工程正向工程类SalesRep:从模型到代码package DesignModel.BusinessLogicLayer;public class SaleRep private int firstname; private int lastname; public Client theClient; public Vector theVector; /* * roseuid 472FD2CB0213 */ public SaleRep() /* * param argname1 * retur

156、n DesignModel.BusinessLogicLayer.Client * roseuid 472FD3C402EE */ public Client opname(Float argname1) return null; 3 RTE举例举例 n3.2 从代码到模型从代码到模型逆向工程逆向工程类SalesRep:从代码到模型n3.3 一致性问题一致性问题对于任何一种CASE工具,在进行模型/代码转换时,都存在一致性问题。即便最先进的CASE工具也很难保证模型/代码与代码/模型转换之间的一致性(同步)。 在进行逆向工程之后,类SalesRep模型已经丢失了逻辑关系与类Client和类Ve

157、ctor之间的关联。3 RTE举例举例 4 Rose的正向工程的正向工程 n4.1 代码生成的步骤代码生成的步骤五个步骤:1)检查模型; 2)创建构件; 3)将类映射到构件; 4)设置代码生成属性; 5)选择要进行代码转换的类、构件和包。 4 Rose的正向工程的正向工程 n4.1 代码生成的步骤代码生成的步骤1) 检查模型(检查模型(Check Model)引用问题非法访问(Access violations)问题 语言语法问题2)创建构件)创建构件Check Model是独立于语言的。如果你想将模型转换成下面的三种语言之前进行模型检查,则:Java:单击ToolsJava/J2EESynt

158、ax Check CORBA:单击ToolsCORBASyntax Check Oracle8:单击Tools Oracle8Syntax Checker 4 Rose的正向工程的正向工程 n4.1 代码生成的步骤代码生成的步骤3)将类映射到构件)将类映射到构件构件之间的依赖性决定了系统的编译依赖性。 指定构件实现的类:选中构件图或浏览器中的用于实现类的构件图标; 打开构件规范窗口; 选中Realizes标签; 选中Show all classes复选框; 在类列表中找到并右击所要实现的类,单击快捷菜单中的Assign。4 Rose的正向工程的正向工程 n4.1 代码生成的步骤代码生成的步骤4

159、)设置代码生成属性)设置代码生成属性直接影响生成的语言代码框架,代码生成属性控制模型元素转换到代码时的具体细节。在生成代码之前,最好先检查代码生成属性并进行必要的修改。因为模型元素(包括类、属性、构件等)有多种代码生成属性可供选择,而Rose只是提供了常用的代码生成属性的默认设置。要查看代码生成属性,单击ToolsOptions,然后选择相应的语言标签 4 Rose的正向工程的正向工程 n4.1 代码生成的步骤代码生成的步骤5)选择类、构件和包)选择类、构件和包Rose允许分步骤、有选择的进行代码转换,即在生成代码时,可以一次选择一个类、一个构件或者一个包,通过代码转换将其转换成相应的语言代码

160、;也可以一次生成多个类、构件或者包的代码;或者是它们的组合。选中一个或多个生成的代码类每个被选中的类逻辑包每个逻辑包中的类构件映射到每个构件的类构件包映射到构件包中各个包中的类4 Rose的正向工程的正向工程 n4.2 代码生成代码生成 1)语言工具定制)语言工具定制从Tools菜单中选择特定的语言工具选项并设置相应的语言选项 2)控制源代码的框架内容)控制源代码的框架内容任何造型工具都不能创建完整的应用程序。Rose强大的代码生成能力在于它能生成大量的框架代码。3)设定源代码文件的位置)设定源代码文件的位置默认的情况下,包含已生成的代码的文件和路径位于当前工作空间所在的目录下。4)代码生成之

161、后的工作)代码生成之后的工作精化模型系统的程序实现:编写每个类的操作(方法实现)和设计图形用户界面(GUI) 5 Rose的逆向工程的逆向工程 n定义定义通过源代码或者对源代码进行修改,得出UML模型,这就是逆向工程。 n模型的信息来源模型的信息来源1)类、属性和操作 2)关系 3)包和构件 5 Rose的逆向工程的逆向工程 n1)类、属性和操作)类、属性和操作 5 Rose的逆向工程的逆向工程 n2)关系)关系5 Rose的逆向工程的逆向工程 n3)包和构件)包和构件代码中包和构件的信息也会在逆向工程时体现在Rose模型中。Rose对构件的处理方法因语言而异。 第第10章章 ANSI C+的

162、的Rose双向工程双向工程 ANSI C+的的Rose双向工程双向工程内内 容容nANSI C+语言插件语言插件 nANSI C+的正向工程的正向工程 n代码生成属性代码生成属性 n设置代码生成属性设置代码生成属性 n生成生成ANSI C+代码代码 nANSI C+的逆向工程的逆向工程 ANSI C+是Rose最新提供的支持C+编程语言的插件。该插件提供了如下功能 支持从分析到设计的模型开发 支持独立于开发商编译器的C+语言 支持C+代码生成 支持从C+代码到模型的逆向工程 支持模型和代码之间的迭代式同步双向工程 支持所有C+结构(包括类、模板、名字空间、继承以及类成员函数)的设计、建模和可视

163、化 支持大型框架结构 支持用户对生成的代码格式化的风格设计 1 ANSI C+语言插件语言插件n正向工程的步骤正向工程的步骤1).检查模型; 2).生成构件; 3).将类映射到构件并将构件的实现语言设为ANSI C+ ;4).设置代码生成属性 ;5).选择类图和(或)构件图中要进行代码生成的类和构件; 6).选择Tools ANSI C+Code Generation,或者,右单击类和构件图标,选择ANSI C+Generate Code。步骤步骤1)-4) 可选可选2 ANSI C+的正向工程的正向工程3 代码生成属性代码生成属性nANSI C+语言属性标签语言属性标签Attribute(类

164、属性) Class(类) Class Category(类类别,包) Dependency(依赖关系) Generalize(泛化关系) Module Body(模块体) Module Specification(模块规范) Operation(类操作) Param(操作参数) Role(角色) 4 设置代码生成属性设置代码生成属性n4.1 类的属性类的属性 类的类的ANSI C+代码生成属性代码生成属性 统一设置模型中类的属性、用途和默认值。 4 设置代码生成属性设置代码生成属性n4.1 类的属性类的属性 定制类的代码生成属性定制类的代码生成属性 在类定制窗口中设置:1).在Class框图中

165、选择一个或几个类; 2).右单击类选择ANSI C+Class Customization。 设置代码生成属性Standard Operations标签 Get and set Operations 4 设置代码生成属性设置代码生成属性n4.2 属性的属性属性的属性 在Options窗口对模型中所有类的属性的代码生成属性进行设置 Synchronize控制属性是否参与双向工程过程,默认值为True CodeName:控制生成代码中类的属性名,在该窗口中不可修改,即使用模型中的属性名 4 设置代码生成属性设置代码生成属性n4.3 操作的属性操作的属性 属 性描 述默 认 值Synchronize

166、控制操作是否参与双向工程TrueCodeName生成代码中的操作名空InitialCodeBody控制操作要包括的代码。这些代码在首次运行代码生成过程时在操作中生成,并且在后续代码生成过程中不会被替换。空Inline控制是否内联操作FalseGenerateFunctionBody控制是否生成函数体。默认生成函数体Defaultn4.4 参数属性参数属性 操作参数的唯一代码生成属性为CodeName。该属性控制操作参数在代码中的名字,默认使用模型中的参数名。 4 设置代码生成属性设置代码生成属性4 设置代码生成属性设置代码生成属性n4.5 模块体属性和模模块体属性和模块规范属性块规范属性 是与

167、双向工程中的.cpp与.h文件相关的属性构件的代码生成属性构件ANSI C+规范窗口4 设置代码生成属性设置代码生成属性n构件构件ANSI C+规范窗口规范窗口1)Files标签标签Source file root directory:逆向工程中源文件的根目录 Reverse engineering root package: 逆向工程的根目录,默认值为C+ Reverse Engineered Reverse engineering directories as packages :将目录在逆向工程中转化为逻辑视图包 Create backup files:创建备份文件 Project Fi

168、les:可以在该字段中添加和删除映射到该构件的文件,包括与这个构件相关的.cpp、.h以及其他源代码文件 Names of generated files:关于生成的代码文件的名称设置4 设置代码生成属性设置代码生成属性n构件构件ANSI C+规范窗口规范窗口2)Style标签标签Indentation组合框:源代码的缩排格式 Round-Trip Engineering Options:双向工程选项 Miscellaneous Options:杂选项 Brace Styles:代码中类和函数所使用的大括号的格式 4 设置代码生成属性设置代码生成属性n构件构件ANSI C+规范窗口规范窗口3)

169、Internal Map和和External Map标签标签Select a class or press :添加引用的类 #include Filename:选择#include语句中的文件名 #include Punctuation:选择在#include语句中使用双引号或者使用“”标记 4 设置代码生成属性设置代码生成属性n构件构件ANSI C+规范窗口规范窗口Copyright and Includes标签标签 Copyright:构件版权信息,以注释的形式添加到新的文件中 Initial header #includes:构件所要包含的所有头文件 Initial implementa

170、tion #includes:构件所要包含的实现头文件 4 设置代码生成属性设置代码生成属性n构件构件ANSI C+规范规范窗口窗口5)Macros标签标签在该标签中为构件设置任意数目的预定义宏,预定义宏在逆向工程中会被添加到模型中 n4.6 角色属性角色属性3个属性:Synchronize:控制角色是否参与双向工程,默认值为True CodeName:代码中角色的名称,默认为空 InitialValue:代码中数据成员的初始值,默认为空n4.7 泛化属性泛化属性 Synchronize:控制泛化关系是否参与双向工程,默认值为True4 设置代码生成属性设置代码生成属性n4.8 依赖属性依赖属

171、性 BodyReferenceOnly:控制#include语句是否只能由与客户类关联的模块体生成,默认值为False n4.9 类类别属性类类别属性CodeName:设置名称空间名,默认为空 IsNameSpace:指定类类别是否为名称空间,默认为False 4 设置代码生成属性设置代码生成属性代码生成的操作步骤:1).选择类图和(或)构件图中要进行代码生成的类和构件2).选择Tools ANSI C+Code Generation 对模型中的类进行ANSI C+代码生成操作,将变成相应的C+类。每个类生成两个文件,一个.h头文件和一个.cpp实现文件。类代码中的信息包括:类名 类可见性 构

172、造函数和析构函数(由代码生成属性决定) 类的属性(可见性、Get和Set操作) 类的操作(参数) 类之间的关系(角色、依赖、泛化) 5 生成生成ANSI C+代码代码ANSI C+不仅支持一个空模型的逆向工程,也支持向一个已存在的模型中添加逆向工程的模型元素 要进行逆向工程,模型必须包含用ANSI C+实现的构件。对所要添加类到模型中的文件,其内容必须是有效的C+代码。6 ANSI C+的逆向工程的逆向工程逆向工程的步骤:1)在构件视图中创建并命名新的构件; 2).双击新的构件打开构件规范窗口,将构件的实现语言改为ANSI C+; 3).右单击新构件,选择快捷菜单中的ANSI; C+Open

173、ANSI C+ Specification,打开构件ANSI C+规范窗口; 4).在构件规范窗口的Files标签中添加源文件; 5).关闭构件ANSI C+规范窗口; 6).单击构件,选择ToolsANSI C+Reverse engineer,打开“选择要添加到模型中的类 ”的窗口; 7).选择要添加到模型中的类,单击Ok按钮,开始逆向工程。6 ANSI C+的逆向工程的逆向工程第第11章章 VC+的的Rose双向工程双向工程 VC+的的Rose双向工程双向工程内内 容容nRose VC+的正向工程的正向工程 n代码生成属性代码生成属性 nCode Update Tool与代码生成与代码生

174、成 n生成的代码内容生成的代码内容 nVC+的逆向工程的逆向工程 n步骤步骤1.检查模型;2.创建构件,在构件规范窗口的Language下拉列表框中选择VC+,并将构件映射到对应的VC项目;3.将类映射到构件;4.设置代码生成属性;5.右单击要生成代码的构件,选择Update Code,或者单击ToolsVC+Update Code,激活Code Update Tool;6. 按照Code Update Tool提示操作。 1 Rose VC+的正向工程的正向工程2 代码生成属性代码生成属性设置代码生成属性的途径VC+语言属性窗口:设置VC+语言属性VC+属性对话框(Properties Di

175、alog):为新建的模型或当前模型设置默认的VC+语言属性构件属性对话框:设定应用于构件所要实现的类的模型属性Model Assistant工具:精确设置模型中的类与代码之间的对应关系模型元素的规范窗口 2 代码生成属性代码生成属性n2.1 VC+语言属性窗口语言属性窗口类的属性类的属性类属性的属性类属性的属性 类操作的属性类操作的属性依赖关系(依赖关系(Dependency)角色(角色(Role)包的属性(包的属性(Class Category)构件的属性(构件的属性(Module Specification)项目属性(项目属性(Project) 2 代码生成属性代码生成属性n2.2 VC+

176、属性对话框属性对话框 Code Update标签标签Generate Model ID:生成模型ID Generate Documentation:信息作为注释添加到代码中 Generate #include Statements:为头文件生成#include语句 Apply Pattern on Code Generation:生成代码时是否选中Class Operations标签和Accessors标签中的原型 Generate Debug Operations for MFC Classes:为MFC类Cobject的派生类生成DUMP和AssertValid成员函数 Create Ba

177、ckup Files:如果选中该选项,则在对源代码文件进行修改之前,在备份区域生成该文件的备份 Support CodeName:为每个模型元素指定与模型中不相同的名字2 代码生成属性代码生成属性n2.2 VC+属性对话框属性对话框 Model Update标签标签Create Overview Diagrams:自动为每个逆向工程的构件创建一张综合图Default Package:新模型元素所在包的名字Attribute Types:首次逆向工程时应该作为属性(而不是角色)进行建模的VC+属性类型 2 代码生成属性代码生成属性n2.2 VC+属性对话框属性对话框 Containers标签标签

178、列出了在Model AssistantRole标签中Implementation下拉列表框可选用的类。在默认的情况下,列表中提供的是最常用MFC容器类。也可以将用户自定义的容器类添加到列表中。右边的Add和Remove按钮用于添加和删除列表中的某个(或某些)容器类。要修改其中的容器类,右单击要改动的类,在快捷菜单中选中Edit进行编辑 2 代码生成属性代码生成属性n2.2 VC+属性对话框属性对话框 Class Operations标签标签类操作的代码生成与否还依赖于Code Update中的Apply Pattern on Code Generation选项。左边选中的成员函数只在第一次代码

179、生成过程中生成。 Model Assistant将用该列表控制所能加入类的操作 2 代码生成属性代码生成属性n2.2 VC+属性对话框属性对话框 Accessors标签标签Accessor Operations:访问函数(操作)。每个访问函数的原型由模型中角色和属性的类型决定 Accessor Body:访问操作的函数体。 2 代码生成属性代码生成属性n2.3 构件属性对话框构件属性对话框General标签标签Workspace File(Optional):VC+项目的工作空间和项目文件的名称和路径Workspace File:VC+项目工作空间文件的文件名和路径 Project File:

180、VC+项目文件的文件名和路径 2 代码生成属性代码生成属性n2.3 构件属性对话框构件属性对话框 Internal Map(和External Map)标签Location:控制在何处定义#include语句,有三种选择:Auto:根据类型依赖规则决定写入头文件或实现文件 Header:总是写入头文件中 Source:总是写入实现文件中 2 代码生成属性代码生成属性n2.3 构件属性对话框构件属性对话框 Includes标签Initial Source Includes:写入类实现文件的#include语句中的文件名。如果有多个包含文件,则每个文件名占一行。 Initial Header In

181、cludes:写入类头文件的#include语句中的文件名,每个文件名各占一行。 2 代码生成属性代码生成属性n2.3 构件属性对话框构件属性对话框 COM标签Update ATL Artifacts:控制是否为服务器端简单的ATL对象生成代码 Use Smart Pointersfor Interface Associations:设定是否要在双向工程中使用VC+的 Smart Pointer特性。Generate #import statements:控制是否为服务器端简单的ATL对象生成#import语句 2 代码生成属性代码生成属性n2.3 构件属性对话框构件属性对话框Copyrigh

182、t标签 添加构件的版权信息,默认的值为“Copyright (C) 1991 - 1999 Rational Software Corporation”。 2 代码生成属性代码生成属性n2.4 Model Assistant工具工具Model Assistant是一个功能强大的工具,可以用来设定类以下层次的模型元素(包括类、操作、属性、关联等)的代码生成属性,精确定制生成的代码框架。利用该工具可以提高代码的准确性和简洁性。启动Model Assistant工具:1.右单击浏览器或类图中的类;2.选择Model Assistant; 2 代码生成属性代码生成属性n2.4 Model Assist

183、ant工具工具General树视图窗口及其标签类及标签 Class Operations文件夹 Attributes 文件夹 Operations文件夹 Associations文件夹 2 代码生成属性代码生成属性n2.4 Model Assistant工具工具MFC树视图窗口及标签 文件夹描述Class NodeMFC视图窗口允许你修改和设定一个MFC派生类的代码生成属性。可以在右边的Class标签中设置该类的代码生成属性。MFC Overrides显示根节点类中所有可用于重载的虚拟操作(只适用于MFC派生类)。点击操作前面的复选框可以将其设定为根节点类的重载操作。可以在Operation和

184、Parameters标签中设置虚拟操作的属性。Windows Messages列出了根节点类所有可接收的Windows消息句柄。点击操作前面的复选框,可以在右边的Message Handler标签中修改和设定操作的代码生成属性。Command Handlers列出了基类的所有命令句柄。点击操作前面的复选框,可以在右边的Command Handler标签中修改和设定操作的代码生成属性。Notification Handlers列出了基类的所有notification句柄。点击操作前面的复选框,可以在右边的Notification Handler标签中修改和设定操作的代码生成属性。3 Code U

185、pdate Tool与代码生成与代码生成Code Update Tool(代码生成向导) 简化正向工程操作 :可以同时生成和更新多个用不同语言实现的源代码项目;可以保证模型和源代码之间的同步;可以将类映射到构件,方便操作;可以在代码生成向导中打开Model Assistant,设定类及其成员的代码生成属行,进一步设置类与代码之间的映射。可以在将模型转换成代码之前,提前预览类和类成员的代码,及时发现模型中的错误并加以修改。 3 Code Update Tool与代码生成与代码生成利用代码生成向导进行正向工程的步骤:第一步:启动Code Update Tool ;第二步:选择要进行代码转换的类、构

186、件以及实现语言:将构件映射到VC项目 ;指定要实现的类及其成员;第三步:生成代码;第四步:查看代码生成结果。 4 生成的代码内容生成的代码内容n4.1 概述概述 生成代码时,模型中的构件对应于VC项目,模型中的类对应于代码中的类。模型中的其他细节(包括属性、操作、关系、可见性等)在类的头文件和实现文件中体现 n4.2 头文件(头文件(*.h)框架代码)框架代码 类声明类的数据成员和成员函数声明注释反映代码生成属性设置的代码 4 生成的代码内容生成的代码内容n4.3 实现文件(实现文件(*.cpp)框架代码)框架代码#include语句 成员函数和数据成员的定义 反映代码生成属性设置的代码 5

187、VC+的逆向工程的逆向工程 利用Rose VC+的Model Update Tool可以方便地进行逆向工程的操作。在需要进行逆向工程时,都需要使用Model Update Tool,包括:1)根据VC+项目创建一个新的模型;2)针对代码的改动,更新一个已存在的模型;3)往模型中添加一个外部VC+构件。 5 VC+的逆向工程的逆向工程n逆向工程的步骤逆向工程的步骤 1.编译要转换的VC+项目,确保源代码文件中没有任何语法错误;2.如果是创建新的模型,则需要创建一个构件,并设置构件的实现语言为VC+;如果是更新模型,则可以省略这一步;3.单击Tools Visual C+ Update Model

188、 from Code,激活Model Update Tool,单击Next,接着出现Select Components and Classes窗口,在该窗口中进行构件和类的选择。4.将VC+项目与模型中已有(或者新创建)的构件关联;5 VC+的逆向工程的逆向工程n逆向工程的步骤(续)逆向工程的步骤(续)5.在要进行逆向工程转换的项目的各项名称前面选中复选框,或者选择构件边上的复选框,对整个项目进行逆向工程。 6.单击Next,出现显示Finish页面。7.检查所要生成的模型元素,确定之后单击Finish按钮,也可以单击Back按钮返回并改动前面的设定。单击Finish按钮之后,开始逆向工程过程

189、,进度在Progress页面显示。8.在Summary页面查看结果。单击OK按钮,关闭Model Update Tool。9.将生成的类移动到模型逻辑视图中相应的逻辑包中。10.保存新的模型。第第12章章 Visual Basic的的Rose双向工程双向工程 设计代码-正向工程代码设计-逆向工程内内 容容n正向工程的操作步骤正向工程的操作步骤 n设置代码生成属性设置代码生成属性 n生成的代码生成的代码 nVB的逆向工程的逆向工程 Rose VB集成了以下工具,对VB语言的双向工程提供支持: 1)Class Wizard:可以在模型中创建和修改一个新的VB类; 2)Model Assistant

190、:用于正向工程过程中更新和精确指定一个类的代码生成属性; 3)Component Assignment Tool:提供一个易于使用的接口,方便在模型中创建新的构件、将构件与源代码项目关联以及将类映射到构件。 4)Code Update Tool:对模型和VB源代码项目进行双向工程。 5)Model Update Tool:从源代码中收集信息,更新应用程序的设计模型。 引引 言言n正向工程的步骤如下:正向工程的步骤如下:1.检查模型2.创建构件;3.将类映射到构件;4.设置代码生成属性;5.选择Class或Component框图中要生成代码的类或构件;6.选择ToolsVisual BasicU

191、pdate Code,Rose VB插件启动Code Update Tool;7.根据代码生成向导的提示,逐步完成正向工程。 1 正向工程的操作步骤正向工程的操作步骤2 设置代码生成属性设置代码生成属性n2.1 VB语言属性窗口语言属性窗口 1.Class属性属性UpdateCode:控制是否为该类生成代码,默认值为True。UpdateModel:控制类是否参与逆向工程过程,默认值为True。OptionBase:设定数组的起始下标,默认值为空。OptionExplicit:控制类代码中的变量名是否需要显式声明,默认值为True。OptionCompare:设定字符串数据的默认比较方法,默认

192、值为空。Instancing:设定类对其它应用程序的可见性,默认值为MultiUse。 2 设置代码生成属性设置代码生成属性n2.1 VB语言属性窗口语言属性窗口2.Attribute的属性的属性 属性名默认值描述NewFalse控制Rose是否在模块变量声明之前添加New关键字。ProcedureID空设定VB过程的ID。PropertyName空设定属性的名字。属性包含一个数据成员和相关的属性过程,Model Assistant工具在显示数据成员及其相关的属性过程时,以属性名作为它们的节点文件夹(见Model Assistant工具)。Subscript空设定Rose在为属性和角色生成数据

193、成员时所使用的数组下标。默认为空表示Rose不生成下标;可接受值的形式有两种:“(1 to MaxLen)”和“()”,前者表示Rose将生成以给定的数字为起止下标的数组,后者表示Rose将生成一个动态数组。WithEventsFalse设定生成代码时是否用关键字WithEvents修饰属性。2 设置代码生成属性设置代码生成属性n2.1 VB语言属性窗口语言属性窗口3.Operation的属性的属性 AliasName:设定DLL中过程调用时的过程别名。DefaultBody:指定生成代码时插入方法体中的代码和注释,默认值为空。IsStatic:控制Rose是否为用户通过关键字Static指定

194、的函数过程生成代码默认值为False。LibraryName:指定包含方法的DLL名字。ProcedureID:设定操作过程的ID。ReplaceExitingBody:控制是否总是用默认的方法体覆盖现有的方法体,默认值为False 2 设置代码生成属性设置代码生成属性n2.1 VB语言属性窗口语言属性窗口4.Param的属性的属性 ByRef:设定VB参数的默认传递机制。值为True表示按引用传递。ByVal:设定VB参数的默认传递机制,值为True,表示按值传递。Optional:设定VB参数的传递机制为可选,默认值为False。ParamArray:设定VB数组的传递机制,默认值为Fal

195、se。 2 设置代码生成属性设置代码生成属性n2.1 VB语言属性窗口语言属性窗口5.Module Specification(构件(构件)的属性的属性ImportBinary:控制是否加载从该构件编译出来的二进制类型库默认值为False。ImportReferences:控制是否加载VB项目中所需的COM构件的类型库,默认值为True。ProjectFile:设定映射到构件的VB项目的.vbp文件路径,默认值为空。 2 设置代码生成属性设置代码生成属性n2.1 VB语言属性窗口语言属性窗口6.Generalize的属性的属性FullName:控制在Implements语句中是否使用包含构件名

196、在内的完整的实现类名字,默认值为False。ImplementsDelegation:控制泛化关系是否由实现委托功能实现,默认值为True。2 设置代码生成属性设置代码生成属性n2.1 VB语言属性窗口语言属性窗口7.Role的属性的属性FullName:控制在角色声明语句中是否使用包含构件名在内的完整的引用类名字,默认值为True。New:控制Rose是否在模块的变量声明语句中使用New关键字。ProcedureID:设置VB过程ID,默认值为空。PropertyName:设定属性的名字,见Attribute的代码生成属性或Model Assistant工具。UpdateCode:控制是否为

197、角色生成代码。2 设置代码生成属性设置代码生成属性n2.2 VB属性对话框属性对话框Save model before code and model update :Suppress model IDs: Code update: 5个选项用于正向工程Model update:3个选项用于逆向工程2 设置代码生成属性设置代码生成属性n2.3 Model Assistant工具工具用于精确控制代码生成的内容与VC+代码生成的作用类似,参考第11章 2 设置代码生成属性设置代码生成属性n2.4 VB构件属性对话框构件属性对话框General标签Should be generated:设定构件是否参

198、与正向工程。Should be updated from code:设定构件是否参与逆向工程。Project file:设定构件对应的VB项目文件。Stereotype::构件的构造型,对应于VB项目的类型。Documentation:构件的说明文档。 2 设置代码生成属性设置代码生成属性n2.4 VB构件属性对话框构件属性对话框References标签 Quick import:设定用VB项目更新构件时,是否加载模型中所引用的COM构件。Import all references:设定是否加载所有的COM构件。Import the compiled VB binary:设定是否加载从该构件编

199、译出来的二进制类型库。 3 生成的代码生成的代码n3.1 类、属性和方法类、属性和方法 类的属性代码内容包括:属性名、数据类型、可见性、初始值以及Get、Set、Let方法。具体的代码因(模型属性、代码生成属性)设置而异。类操作在代码中体现为方法,代码内容包括:方法名、可见性、参数、参数数据类型、参数传递机制、返回值、错误处理、提示注释及调试语句等。具体的代码因(模型属性、代码生成属性)设置而异。Rose VB不仅生成完整的方法签名,而且还生成完整的方法体。 3 生成的代码生成的代码n3.2 类之间的关系类之间的关系 1)关联关系在VB中,关联关系映射为与关联关系的角色同名的属性(数据成员)

200、Public Users As B Private Users As Collection 3 生成的代码生成的代码n3.2 类之间的关系类之间的关系2)泛化关系因为VB并不支持继承,泛化关系变成实现委托3 生成的代码生成的代码n3.2 类之间的关系类之间的关系3) 实现关系当一个类(客户类)需要调用接口(提供者类)中的操作,即客户类实现提供者类的接口时,两个类之间存在实现关系。在这种情况下,客户类要同时提供接口的属性和操作的实现。 3 生成的代码生成的代码n3.2 类之间的关系类之间的关系4)聚合关系聚合关系在概念上等同于关联关系,正向工程中得到的代码与关联关系的代码相同。模型中的聚合表示一种整体与部分的关联,是概念意义上的抽象,对于代码生成没有其它特殊的影响。而且,在逆向工程中也反映不出聚合这种抽象关联。5)依赖关系依赖关系在代码中没有体现,即并不生成属性。 4 VB的逆向工程的逆向工程n逆向工程的步骤如下:逆向工程的步骤如下:1.创建构件并将VB项目赋予构件;2.选择ToolsVisual BasicUpdate Model Tool;3.选择要更新的模型和构件;4.选择Finish完成逆向工程过程。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号