第5章RationalRose建模 Rose简介建立用例模型建立对象模型建立动态模型建立数据模型 5 1Rose简介 RationalRose 简称Rose 是美国IBMRational软件公司在软件工程专家GradyBooch IvarJacobson JimRumbaugh等人主持下研制的图形化 集成化OOCASE产品 支持面向对象软件系统的开发 利用ROSE可以建立用UML描述的软件系统的模型 可以自动生成和维护C JAVA VB PB ORACLE等语言和系统的代码 是目前使用最广泛 最先进的可视化软件开发工具之一 5 1Rose简介 核心图 1 Use CaseDiagrams 用例图 2 sequencediagram 顺序图 3 Collaborationdiagram 协作图 4 Classdiagram 类图 5 StateChartdiagram 状态图 6 Activitydiagram 活动图 7 Componentdiagram 组件图 8 Deploymentdiagram 部署图 9 Package 包图 Rose的特点 支持三层结构方案 为大型软件工程提供了可塑性和柔韧性极强的解决方案 支持UML OOSE及OMT 支持大型复杂项目 与多种开发环境无缝集成 Rose的启动 Rose2003的启动窗口如图所示 用户可以选择建立新模型 打开某个已存在的模型或打开最近使用的模型 Rose的主界面 Rose的基本操作 自定义工具栏 Rose的基本操作 系统弹出自定义工具栏窗口 在左面窗口中选中当前工具栏中没有的按钮 点击 添加 A 按钮即可 Rose的基本操作 保存模型右键点击浏览器窗口中的 untitled 在弹出的快捷菜单中选择 save 或者选择主菜单 File 下的 save 子菜单 系统弹出文件保存对话框 如图所示 Rose的基本操作 浏览模型结构浏览器窗口中前面带有文件夹图标的项称为包 其他一般为模型元素 如图所示 Rose的基本操作 打开说明窗口可以在模型元素或包上双击 或者点击右键 从菜单中选择第一项 openspecification Rose的基本操作 删除及增加包 Rose的基本操作 删除及增加图元素浏览器窗口中的一个图元素可以在多个应用窗口中出现 也就是说可以出现在多个图中 因此在删除图元素时要区分是从浏览器窗口中删除图元素 还是从应用窗口中删除图元素 当从浏览器窗口中删除图元素时 Rose首先从模型中移去所选择的元素 之后修改所有出现被移去元素的图 从中删除被移去的元素及元素的详细说明 当从某个应用窗口中移去选择的元素时 不影响浏览器窗口 也不影响其他应用窗口 5 2建立用例模型 建立用例模型的过程 1 确定业务参与者 标识目标系统将支持的不同类型的用户 可以是人 事件或其他系统 2 确定业务需求用例 参与者需要系统提供的完整功能 3 创建用例图 标识参与者与用例之间 用例与用例之间的关系 例 选课系统 给教师分配课程和学生注册课程 在每个学期选课开始之前 系统管理员需要对系统中的教师信息 课程信息和学生信息进行维护 学期结束后 将本学期成绩归档到学籍档案系统 学生登录系统后会得到一份本学期将要开设的课程目录 每门课程包含的信息有开课系别 教师 上课时间 教室 容纳的学生数量和学生选择课程的先决条件 当学生选择了一门课程后 系统需访问学籍档案系统 查询是否符合选课的先决条件 如果不符合 系统给出提示信息 每个学期有一段时间让学生可以改变计划 学生可以在这段时间内访问联机系统以增选课程或退选课程 例 选课系统 给教师分配课程和学生注册课程 教师可以访问系统 查看将要教授哪些课程和每门课程有哪些学生报名 课程考试结束后可以提交成绩 系统可以生成带有成绩分布统计结果的成绩单 1 确定业务参与者 通过关注系统的业务参与者 我们可以将重点放在如何使用系统 而不是如何构造系统上 并且有助于进一步明确系统的范围和边界 当系统比较庞大和复杂时 要搞清楚系统的需求往往比较困难 通过明确参与者 可以针对参与者确定系统需求 有助于保证系统需求的完整性 1 确定业务参与者 可通过以下资料来确定系统的参与者 标识系统范围和边界的环境图 现有系统 如果有的话 的文档和用户手册 项目会议和研讨会的记录 现有的需求文档 工作手册等 1 确定业务参与者 还可以通过提出以下问题 明确系统的参与者 谁或者什么为系统提供输入 谁或者什么接收系统的输出 需要与其他系统连接的接口吗 是否存在在预定的时间自动触发的事件 谁将维护系统中的信息 1 确定业务参与者 从选课系统的需求描述中 可以确定4类参与者 学生 Student 教师 Teacher 系统管理员 Administrator 学籍档案系统 ArchiveSystem 2 确定业务需求用例 以下问题可以帮助我们更好地标识系统的用例 每个参与者的特定任务是什么 是否每个参与者都要从系统中创建 存储 改变 移动或读取信息 是否任何参与者需要通知系统有关突发性的 外部的改变 哪些用例支持或维护系统 目前的用例是否覆盖了所有功能需求 2 确定业务需求用例 环境图是分析参与者和发现潜在用例的极好来源 它不仅可以用在结构化分析方法中 也可以用于面向对象的分析方法中 通过环境图 可以确定系统的主要输入输出 通过提交和接收输入输出的各方确定潜在的用例 选课系统的环境图 选课系统的业务列表 对用例的完整描述包括用例名称 执行者 前置条件 后置条件 一个主事件流 零到多个备选事件流 主事件流表示正常情况下执行者与系统之间的信息交互及动作序列 备选事件流则表示特殊情况或异常情况下的信息交互及动作序列 应给出每个用例的规格说明 用例的规格说明 用例 选择课程 的规格说明 用例 选择课程 的规格说明 3 创建用例图 用例图是若干个参与者和用例 以及它们间的关系构成的图形表示 每个系统通常都有一个总体视图 GlobalViewofActorsandUseCases 如果总体视图过于复杂 则可以创建多个用例图 每个用例图关注系统的某一方面 通常是围绕参与者创建用例图 使用Rose创建用例模型 1 在Rose中创建参与者 actors 创建的角色应放在Use CaseModel包中的Actors包中比较好 如果模型结构中没有这样的包 可以先创建Actors包 之后按下面的步骤创建角色 1 在浏览器窗口中的Actors包上单击鼠标右键 显示弹出菜单 2 选择New Actor菜单选项 系统创建名为NewClass的参与者 3 选中新创建的参与者 更名为设计的名字 使用Rose创建用例模型 1 在Rose中创建参与者 actors 使用Rose创建用例模型 2 给参与者添加文档在Rose中我们对模型元素都可以 在多数情况下是必须的 添加文档以描述更多的信息 应该给模型中的每个actor添加摘要描述 摘要描述表示actor和系统交互的规则 课程注册系统中actor的摘要描述如下 Student 在学校注册上课的人 Teacher 学校授权上课的人 Administrator 系统认同的维护人员 ArchiveSystem 管理学生学籍档案的外部系统 使用Rose创建用例模型 3 在Rose中创建用例 UseCase 应该将用例放在Usecases包中 如果您的模型结构中没有这样的包 则应该先创建包 也可以将每个用例放在单独的包中 因此可以先创建相应的包 再创建用例 另外 在多个用例中使用的公共用例 如验证用户 ValidateUser 可以放在一个单独的包中 如可以在Usecases包中创建IncludedUseCases包来存放公共用例 使用Rose创建用例模型 3 在Rose中创建用例 UseCase 在Rose中创建用例的过程如下 1 在浏览器的相应包上单击鼠标右键 弹出菜单显示 2 选择New UseCase选项 则在浏览器中生成名为NewUseCase的新用例 3 选中创建的新用例 键入设计的名字 重复上面的步骤 直到将所有需要的用例都创建完成 使用Rose创建用例模型 3 在Rose中创建用例 UseCase 使用Rose创建用例模型 4 为用例增加文档描述将每个用例的规格说明增加到Rose系统中 例如 可以将选择课程的规格说明存放在一个单独的Word文档 选择课程的规格说明 doc 中 并将此文件作为附加文档添加到Rose中的 Registerforacourse 用例下 使用Rose创建用例模型 4 为用例增加文档描述将用例的规格说明文档关联到用例的方法如下 1 在浏览器中的用例 如 Registerforacourse 上单击鼠标右键弹出菜单 2 选择Specification菜单 3 选择Files标签页 4 单击右键弹出快捷菜单 5 选择InsertFile菜单 如图所示 使用Rose创建用例模型 4 为用例增加文档描述 6 浏览目录列表选择要关联的文件 7 单击打开按钮 系统将选择的文件加到说明窗口中 如图所示 8 单击OK按钮关闭Specification窗口 使用Rose创建用例模型 5 创建用例图在Rose中创建用例图的过程如下 1 加入参与者及用例 在浏览器中的用例视图 UseCaseView 中双击Main 单击一个actor选中 并将其拖动到图中 重复步骤 把每个需要的actor加入到图中 在浏览器中选择一个用例并把它拖到图中 重复步骤 把所有用例都拖到图中 使用Rose创建用例模型 2 创建参与者与用例之间的关联关系在图形工具栏上单击Association 双向关联 或UnidirectionalAssociation 单向关联 图标 在起始actor上单击并拖动到usecase上 可以按下面的步骤给关联关系增加关系类型 构造型 stereotype 双击Association线 弹出Specification窗口 或使用右键菜单的 OpenSpecification 项 从stererotype后面的下拉框中选择一种类型 如图所示 如果下拉框中没有 则可以输入关系名称 单击OK 关闭specification窗口 使用Rose创建用例模型 添加了参与者与用例之间关系的用例图 使用Rose创建用例模型 2 创建用例之间的关系用例之间主要主要有三种关系 包含 include 使用 use 扩展 extend 在Rose中创建包含 include 关系的步骤如下 在工具条上选择dependency图标 在 包含 用例上单击 拖动到被 包含 的用例上 双击dependency线 弹出specification窗口 在stereotype下拉列表中选择 include 如图所示 单击OK关闭specification窗口 使用Rose创建用例模型 添加了包含关系的主用例图如图所示 5 3建立对象模型 在系统分析阶段 对象建模的主要任务是建立问题域的概念模型 这个模型描述了现实世界中的 类与对象 以及它们之间的关系 在UML中 通过建立类图来表示对象模型 划分主题 在开发大型 复杂系统的过程中 为了降低复杂程度 人们习惯于把系统再进一步划分成几个不同的主题 应该按问题领域而不是用功能分解方法来确定主题 此外 应该按照使不同主题内的对象相互间依赖和交互最少的原则来确定主题 主题可以采用UML中的包来展现 确定类与对象 1 找出候选的类与对象类与对象是对问题域中有意义的事物的抽象 它们既可能是可见的物理实体 也可能是抽象的概念 我们可以将客观事物分为以下五类 可感知的物理实体 如教学楼 教室等 人或组织的角色 如教师 计算机系等 应该记忆的事件 如演出 交通事故等 两个或多个对象的相互作用 通常带有交易或接触的性质 如购买 教学等 需要说明的概念 如保险法 政策等 确定类与对象 1 找出候选的类与对象另一种更简单的非正式分析方法 是以自然语言书写的需求陈述为依据 把陈述中的名词作为类与对象的候选者 用形容词作为确定属性的线索 把动词作为服务 操作 的候选者。