软件工程与软件测试.ppt_第1页
软件工程与软件测试.ppt_第2页
软件工程与软件测试.ppt_第3页
软件工程与软件测试.ppt_第4页
软件工程与软件测试.ppt_第5页
已阅读5页,还剩145页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

it软件工程与软件测试 林琳软件技术教研室 学习情境4 主要内容 软件工程发展历程常见过程模型面向对象技术UML概述RationalRose的安装与使用Rose与UML图书管理系统的UML建模 软件工程发展历程 软件工程的发展历史 从20世纪60年代中期到70年代中期 软件业进入了一个发展时期 此时出现了所谓的软件公司 1968年 出现 软件工程 SoftwareEngineering 这一术语 30余年来 尽管软件的一些毛病仍然无法根治 但软件的发展速度却超过了任何传统工业 并未出现真正的软件危机 这的确是前人的先见之明 如今软件工程成了一门学科 软件的发展历程 软件工程 软件作坊 个体化的软件环境 上世纪60年代中期 上世纪70年代 上世纪80年代 面向对象软件开发 软件规模小 编写者和使用者往往是同一个人 除程序清单外 无其它文档资料 面向对象技术的应用改变了软件界的开发方式 计算机应用领域越来越广 系统规模越来越大 逻辑越来越复杂 而且功能上需要不断更改和扩充 软件开发需要多个开发者一起开发 开发人员按各自的爱好和习惯进行工作 没有统一的标准可以遵循 以手工艺的方式形成 软件作坊 来进行 1968年 北大西洋公约组织的计算机科学家 在联邦德国召开国际会议 讨论软件危机问题 正式提出 软件工程 这个名词 新兴工程学诞生了 用 工程化 的思想作指导 可以大大减少软件开发成本并提高软件开发质量 工程化 为人们开辟了新的道路 软件工程学 蓬勃发展起来 软件危机 随着硬件成本的降低 电脑开始变得普及 人们对软件的需求越来越高 而这时候的软件行业还处于 手工作坊 阶段 软件的产量和质量远远不能满足人们的需要 于是出现了一系列严重问题 被称为 软件危机 拉布雷阿的焦油坑 MuralofLaBreaTarPits 过去几十年的大型系统开发就犹如这样一个焦油坑 很多大型和强壮的动物在其中剧烈地挣扎 软件工程的产生 为了解决 软件危机 于是出现了 软件工程 学科 有众多专家学者致力于软件工程方法学的研究 并将研究结果应用于实践中进行检验 解决了软件开发中存在的各种问题 使得软件制造的质量大大提高 软件工程的生命周期 经典的软件工程思想将软件开发分成以下5个阶段 需求捕获 RequirementsCapture 阶段系统分析与设计 SystemAnalysisandDesign 阶段 系统实现 Implementation 阶段 测试 Testing 阶段维护 Maintenance 阶段从项目的角度还加入了问题定义阶段可行性分析阶段 软件工程 技术层次 常见过程模型 常见过程模型 瀑布模型快速原型模型增量模型螺旋模型喷泉模型 过程模型的选择 首先 了解每一种过程模型的特点和适用性 其次 根据软件项目的特点选择合适的过程模型 值得注意的是 由于现实中项目的复杂性 通常会在一个项目中选择几种过程模型嵌套使用 瀑布模型 优点 1 可强迫开发人员采用规范的开发方法 2 严格规定每个阶段必须提交的文档 3 要求每个阶段的提交工作产品都必须通过QA的验证 缺点 缺乏灵活性 变动成本高 适用于需求非常明确的情况 快速原型的本质是 快速 开发人员应该尽可能快地建造出原型系统 以加速软件开发过程 节约软件开发成本 原型的用途是获知用户的真正需求 原型又可分为抛弃型原型和演进型原型 适用 主要适用于项目需求不太明确 或需要减少项目的不确定性的情况 快速原型模型 增量模型 特点 每次提交的都是一个满足用户需求子集的可运行的产品 优点 用户每次都可以得到一个可完成部分功能的可用的产品 并有足够的时间去学习和适应新产品 困难之处 对软件体系结构的设计要求较高 体系结构必须是开放的 螺旋模型 图2 6简化的螺旋模型 基本思想 使用原型及其它方法来尽量降低风险 可看作是在每个阶段之前都增加了风险分析过程的快速原型模型 喷泉模型 迭代是软件开发过程中普遍存在的一种内在属性 经验表明 软件过程各个阶段之间的迭代或一个阶段内各个工作步骤之间的迭代 在面向对象范型中比在结构化范型中更常见 喷泉 这个词体现了面向对象软件开发过程迭代和无缝的特性 图2 8喷泉模型 案例分析1 辅导员张老师为了方便管理学生 他委托学生小明帮助他开发一个学生管理系统 用来管理他所带的班级的学生信息 该系统仅供张老师一个人使用 系统功能不是很复杂 张老师对自己需要的系统功能有了明确的认识 并且他本身也对软件开发有一定程度的了解 与小明的沟通过程非常的顺利 在这种情况下 如果你是小明 你会选用哪种过程模型 案例分析2 张扬是某大学软件技术专业的学生 在寒假中 他为他的邻居开发了一个小型的超市管理系统 他的邻居从来不懂软件开发 也不知道超市管理系统应该是什么样的 那么你建议张扬采用哪种过程模型呢 面向对象技术 面向对象技术 面向对象方法OOSD 软件工程方法学传统方法学SA SD SP面向对象方法学OOA OOD OOP 开发软件的方法不同 类的作用 分类 用于区分不同事物 是创建对象的模板 产生对象 关联 单向关联 在现实世界中 对象之间通常会发生某种联系 程序世界中用 关联 来表示对象之间的联系 关联 对象之间还可以以多种方式发生关联 关联 类也可以发生关联 一个类可以和多个类关联 关联的多重性 在关联中一个类的对象可以对应另一个类的多少个对象 一个教师 多个学生一门课程 多个教师一辆轿车 4个车轮 书P23图2 2表示出了关联的表示方法 关联的多重性 国家 首都 1个 工作站 窗口 0个或1个 公司 雇员 0个或多个 1个或多个 用户 目录 1 汽车 车门 1 2 4 1到2个或4个 聚集 计算机系统 计算机由许多不同类型的构件组成 它是一个聚集体 聚集是对象之间的另外一种关联 面向对象其他概念 组成 强聚集 聚集对象和它的组成对象之间有强关联时 我们把这种聚集叫做组成 比如说 树没有树叶的话 就不能成为一棵树 因此树叶和树之间就是组成关系 面向对象其他概念 抽象封装消息传递继承多态性 怎么得到类和对象 抽象 把事物共同点抽取出来 以统一的方式进行概要描述的过程 从许多事物中舍弃个别的 非本质的特征 抽取共同的 本质性的特征 过滤掉对象的一部分特征和操作直到只剩下你所需要的属性和操作 抽象的例子 洗衣机类 WashingMachine类 它是创建新的洗衣机实例的模板 属性brandNamemodelNameserialNamecapacity 操作acceptClothes acceptDetergent turnOn turnOff 抽象的例子 洗衣机类 模型中的属性和操作越多 模型就越接近实际 属性brandNamemodelNameserialNamecapacitytrapmotormotorSpeed 操作acceptClothes acceptDetergent turnOn turnOff acceptBleach controlWaterLevel 是不是现实世界中类的所有属性和方法都需要在系统中进行抽象呢 当然不是啦 作为一个分析人员 要根据用户实际的业务情况进行选择 例如在 课堂考勤系统 中 教师类只需要有姓名 职称 性别这些属性 因为这些是用户需要的 而在 教职工人事管理系统 中 教师类就需要姓名 出生年月 入职时间 所属单位 职称 性别 婚姻状况等属性 1 从许多事物中舍弃个别的 非本质的特征 抽取共同的 本质性的特征 2 过滤掉对象的一部分特征和操作直到只剩下你所需要的属性和操作 让对象细节受到保护 封装 引入问题 现在让我们来编写一个java小程序 实现在命令行模式下输出以下形式的著名诗词 春晓 你会怎么做 春晓 春眠不觉晓 处处闻啼鸟 夜来风雨声 花落知多少 你可能会这么写 publicclassChunXiao1 publicstaticvoidmain String args System out println 春晓 System out println 春眠不觉晓 System out println 处处闻啼鸟 System out println 夜来风雨声 System out println 花落知多少 很简单 但是有时候并不是越简单越好 现在 如果想把 改变为 该怎么办 改5次吗 代码 Chunxiao1 java 你可能还会这么写 publicclassChunXiao2 publicStringbuildStar return publicstaticvoidmain String args ChunXiao2c newChunXiao2 System out println c buildStar 春晓 System out println c buildStar 春眠不觉晓 System out println c buildStar 处处闻啼鸟 System out println c buildStar 夜来风雨声 System out println c buildStar 花落知多少 利用方法buildStar 来产生 这样每次只用修改一个地方了 我们把产生 的功能封装了起来 对外界使用者来讲 不需要知道方法内部的细节 只需要知道调用这个方法可以产生 就行了 代码 Chunxiao2 java 让对象细节受到保护 封装 当一个对象执行自己的操作时 它对外界隐藏了操作的细节 封装可以提高重用性 并且让程序易于维护 封装的程度问题 还是 春晓 刚才我们将产生 的方法写在了类ChunXiao2中 根据前面所讲 类中的方法代表的是类的操作 而产生 和春晓没有直接关系 这样的封装看起来好像不合理 怎么改进一下呢 ChunXiao3 代码 StarFactory javaChunxiaojava 封装的不同 重用也不同了 现在我们不仅可以在 春晓 里面用 了 还可以在 静夜思 里面用 了 ChunXiao3 JingYeSi 代码 JingYeSi java 面向对象重要概念 消息传递 给对象发消息 让它做的更多 消息传递 还是 春晓 有些同学不喜欢刚才的排版 全部是 没有创意 既然StarFactory类是制造 的工厂 那么它应该有更多的产品啊 不能一直是 吧 怎么办 改良版StarFactory2 ChunXiao4 代码 StarFactory2 javaChunxiao4 java 面向对象重要概念 继承 在客观世界中 类是有着层次关系的 那么程序世界中 也要能够表现这种层次 于是 有了继承 用继承改变刚才的 春晓 自从有了StarFactory 春晓 的世界变得丰富起来 既然 可以创造 那么 也应该可以吧 还有 呢 全部都可以 那么让我们创建GraphicFactory类吧 它表示创造上述图形的总厂 而它的子类用来创造每一种图形 所有的子类都有build 方法 代表创造不同图形的操作 创造 创造 创造 创造 代码 GraphicFactory javaStarFactory javaDiamondFactory javaPentacleFactory javaChunxiao5 java 面向对象重要概念 多态性 不同的类具有相同名称的操作 门 窗 盒子 打开 多态性的表现 回顾一下 类和对象关联 聚合 组成抽象封装消息传递继承多态 用到的代码目录 按出场顺序 可以到 ChunXiao1 javaChunXiao2 javaChunXiaojavaStarFactory javaJingYeSi javaChunXiao4 javaStarFactory2 javaGraphicFactory javaStarFactory javaDiamondFactory javaPentacleFactory javaChunxiao5 java 了解这些概念的意义 运用面向对象的概念可以帮助我们 理解客户的领域知识用客户能够理解的术语来说明你对问题的理解准确的建立模型顺利的进行OOA OOD OOP 任务1 利用今天所学习的内容 构造自己的Factory类 利用封装抽象继承的知识实现一个命令行程序 内容和表现形式不限 UML概述 什么是UML 统一建模语言 UnifiedModelingLanguage 一种定义良好 易于表达 功能强大且普遍适用的可视化建模语言 做软件为什么要建模 我们回顾刚才讲的盖房子的过程 就是施工队把王大爷的需求变成了房子 而软件开发也很类似 做软件其实就是把客户的需求变成实际软件产品的过程 出租车公司的需求 出租车计费系统 变成 从客户需求到产品的过程往往会出现这样的问题 为了保证做出来的软件是满足客户要求的 我们至少要保证以下两点 1 客户的需求被正确的获取 2 客户的需求被正确的传递 出现新问题 如何保证以上两点 1 怎样保证客户的需求被正确的获取 解决办法 使用科学的方法进行需求分析 2 怎么样保证客户的需求会正确的被传递下去呢 小游戏 游戏规则 两个小组A和B 每个组5人 分别得到客户需求 A组以文档形式传递 B组以口头形式传递 新问题 如何记录 我们在整个软件开发的过程中 使用文档化 保证客户需求的正确传递 换句话说 需求分析人员要把客户的需求记录下来 给设计人员 而设计人员要把设计记录下来 交给代码人员 直到产品交给用户 小游戏告诉我们 语言文字 语言文字的二义性 例子1 小明 把你的笔记本拿给我 例子2 小胡桃真难吃 利用符号规范进行软件需求 设计的描述 由于语言和文字存在很大的二义性 不同人的理解对其产生很大的影响 因此在软件开发中 需要有一套所有人都接受的符号规范进行软件需求描述 设计描述 由此来保证用户的需求在传递中 不会产生二义性 这就像在盖房子时需要画工程一样的道理 图纸 大楼UML模型 软件系统 回顾一下刚才的分析过程 为了让开发的软件令用户满意 所以需要正确获取需求 并且需求被正确传递 所以在开发过程中需要文档化 又因为文档化的时候使用自然语言文字会产生二义性 所以需要符号规范进行描述 即需要建模 正确获取需求 正确传递需求 软件令用户满意 文档化 建模 为什么要学习UML 作为一个专业的软件行业从业人员 学习UML很重要 自身发展 程序员 测试员 系统分析员 系统架构师 UML语言概述 1UML的历史2UML包含的内容3UML的定义4UML的应用领域 为什么需要UML 1UML的历史 面向对象的分析与设计 OOA OOD 方法的发展在20世纪80年代末至90年代中出现了一个高潮 UML是这个高潮的产物 它不仅统一了Booch Rumbaugh和Jacobson的表示方法 而且对其做了进一步的发展 并最终统一为大众所接受的标准建模语言 公认的面向对象建模语言出现于20世纪70年代中期对象是问题域或实现域中某些事物的一个抽象 1996年6月和10月分别发布了两个新的版本 即UML0 9和UML0 91 并将UM重新命名为UML UnifiedModelingLanguage UML的开发者倡议并成立了UML成员协会 UML的诞生 创始人 GradyBoochGrady IBMfellow 因其在软件架构 软件工程和软件建模方面的杰出贡献而在国际上享有盛名 自Rational于1981年创建以来 他就一直担任IBMRational的首席科学家 Grady于2003年3月荣获IBM名士 IBMfellow 的称号 Booch方法的力量在于其丰富的符号体系 包括 类图 类结构 静态视图 对象图 对象结构 静态视图 状态转移图 类结构 动态视图 时态图 对象结构 动态视图 模块图 模块体系结构 进程图 进程体系结构 UML的诞生 创始人 IvarJacobsonIvarJacobson博士是Objectory方法的发明者 也是瑞典ObjectoryAB公司的创始人 Jacobson博士是两本影响深远的畅销书的主要作者 面向对象的软件工程 一种用例驱动方法 1992年计算机语言生产力奖获得者 和 对象的优势 采用对象技术的业务过程再工程 Jacobson将usecase模型与其它五种系统模型关联 领域对象模型 usecase模型根据领域来表示 分析模型 usecase模型通过分析来构造 设计模型 usecase模型通过设计来具体化 实现模型 该模型依据具体化的设计来实现usecase模型 测试模型 用来测试具体化的usecase模型 UML的诞生 创始人 JamesRumbaughJamesRumbaugh博士是享誉全球的软件开发方法学家 Jim一直是引导UML未来开发的领袖 他提出了许多有关UML的概念 他与Rational的其他软件领袖一起工作在各个领域 比如Rational统一过程和实时开发方法学 自从2003年IBM收购了Rational之后 Jim就一直致力于推动IBM建模工具的开发 Rumbaugh的OMT方法将开发过程分为四个阶段 分析 系统设计 对象设计 实现 UML发展历史 2UML包含的内容 作为一种建模语言 UML的定义包括UML语义和UML表示法两个部分 1 UML语义描述基于UML的精确元模型定义 元模型为UML的所有元素在语法和语义上提供了简单 一致和通用的定义性说明 使开发者能在语义上取得一致 消除了因人而异的表达方法所造成的影响 此外UML还支持对元模型的扩展定义 2 UML表示法定义UML符号的表示法 为开发者或开发工具使用这些图形符号和文本语法为系统建模提供了标准 这些图形符号和文字所表达的是应用级的模型 在语义上它是UML元模型的实例 3UML的定义 1 UML的组成UML由视图 View 图 Diagram 模型元素 ModelElement 和通用机制 GeneralMechanism 等几个部分组成 2 UML的建模机制 UML有两套建模机制 静态建模机制和动态建模机制 静态建模机制包括用例图 类图 对象图 包 组件图和配置图 动态建模机制包括消息 状态图 时序图 协作图 活动图 UML的组成 模型是一个特定系统的完整描述 模型和图 UseCaseDiagrams UseCaseDiagrams 用例图 ScenarioDiagrams ScenarioDiagrams 协作图 StateDiagrams StateDiagrams 构件图 ComponentDiagrams ComponentDiagrams 部署图 StateDiagrams StateDiagrams 对象图 ScenarioDiagrams ScenarioDiagrams 状态图 UseCaseDiagrams UseCaseDiagrams 顺序图 StateDiagrams StateDiagrams 类图 活动图 模型库 小例子 用UML图来描述一台洗衣机 一台洗衣机应该具备的属性 品牌 比如海尔 模式 比如全自动 半自动 序列号 比如AS19980909容量 比如5L 一台洗衣机操作包括 装入衣物装入洗衣粉开电源关电源 一台洗衣机的功能 浸泡 洗涤 漂洗 脱水人使用洗衣机来洗衣服 类图 类 class 一类或一组具有类似属性和共同行为的事物 类的图示 洗衣机类的图示 品牌 模式 序列号 装入衣物 装入洗衣粉 容量 开机 关机 对象图 对象名 类名 匿名对象 某台具体的洗衣机就是洗衣机类的一个对象 比如 小明家的海尔洗衣机 用例图 用例 usecase 从用户的观点对系统行为的一个描述 用来从用户的观察角度收集系统需求 用例图表达系统的外部事物 参与者 与系统的交互 它表达了系统的功能 即系统所提供的服务 整个软件项目的开发可以采用UseCase驱动的方式进行 这个用例图描述了用户使用洗衣机洗衣服 状态图 在任一给定的时刻 一个对象总是处于某一特定的状态 状态图主要表现一个对象所经历的状态序列 引起状态或活动转移的事件 以及因状态或活动转移而伴随的动作 浸泡 洗涤 漂洗 脱水 洗衣机的状态图 顺序图的定义 在一个运行的系统中 对象之间要发生交互 并且这些交互要经历一定的时间 顺序图表达的正是这种基于时间的动态交互 重点是完成某个行为的对象类和这些对象类之间所传递的消息的时间顺序 顺序图 洗衣机的例子 定时器 timer 注水的进水管 waterpiper 装衣服的洗涤缸 drum 1浸泡定时 2注水 3储水 4停止注水 5洗涤定时 6 反复旋转洗涤 7 排脏水 8 停止洗涤 9 漂洗定时 10 注水 11储水 12 反复旋转洗涤 14 停止漂洗 1排脏水 15 脱水定时 16 顺时针旋转 17 停止脱水 协作图 协作图通过对象之间的连接和它们相互发送的消息来显示参与交互的对象 协作图的图例 1 5 9 15由定时器完成 2 4 10由定时器调用注水管完成 2 10由注水管调用洗衣缸完成 6 7 8 12 13 14 16 17由定时器调用洗衣缸完成 交互图的应用 顺序图和协作图都是交互图 它们既是等价的 又是有区别的 顺序图和协作图都能等价的表现系统运行中对象通过消息发生的交互行为 顺序图表示了时间的消息序列 便于分析交互的时序 但没有表示静态对象关系 顺序图可以有效地帮助人们观察系统的顺序行为 协作图着重表示一个协作中的对象之间的联系和消息 活动图 活动图实质上是一种流程图 只不过表现的是从一个活动到另一个活动的控制流 活动图描述活动的序列 并且支持对带条件的行为和并发行为表达 构件图 组件图代表系统的一个物理实现块 代表逻辑模型元素如类 接口的物理打包 部署图 显示基于计算机系统的物理体系结构 UML2 0中的新图 组成结构图 compositestructurediagram 交互纵览图 interactionoverviewdiagram 计时图 timingdiagram 组成结构图 从类的内部来审视这个类 交互纵览图 计时图 4UML的应用领域 UML的目标是以面向对象图的方式来描述任何类型的系统 其中最常用的是建立软件系统的模型 但它同样可以用于描述非软件领域的系统 如机械系统 企业机构或业务过程 以及处理复杂数据的信息系统 具有实时要求的工业系统或工业过程等 UML模型可作为测试阶段的依据 系统通常需要经过单元测试 集成测试 系统测试和验收测试 不同的测试小组使用不同的UML图作为测试依据 单元测试使用类图和类规格说明 集成测试使用部件图和协作图 系统测试使用用例图来验证系统的行为 验收测试由用户进行 以验证系统测试的结果是否满足在分析阶段确定的需求 RationalRose的安装 安装前的准备安装的步骤 2 1建模概论 模型的作用就是使复杂的信息关联简单易懂 它使使用者容易洞察复杂的原始数据背后的规律 并能有效地将系统需求映射到软件结构上去 建模的意义重大 分而治之 是一个古老而有效的概念 可以想象 把特别复杂而困难的问题细化分解之后 一次只是设法解决其中一个 事情就变得容易多了 Rose是美国的Rational公司的面向对象建模工具 利用这个工具 可以建立用UML描述的软件系统的模型 而且可以自动生成和维护C Java VB和Oracle等语言和系统的代码 Rational系列产品简介 Rational系列工具贯穿于整个软件开发生命周期 覆盖了分析设计 需求管理 配置管理 测试管理 缺陷管理 功能测试 性能测试 单元测试等方面 以下是一些常用的Rational工具 1 Robot用于功能回归测试和性能测试测试脚步的自动生成和手工修改2 TestManager是一个测试管理工具 其中有测试计划 测试用例 测试执行的管理 性能测试的运行场景在这里部署3 Purfiy用于白盒测试 测试C C java程序的内存泄漏4 purCoverage代码覆盖测试工具 用于检查测试用例是否完全覆盖了被测试程序 序 或者覆盖率等5 ClearCase配置管理工具6 ClearQuestBug管理工具和Project集成7 SiteCheck网站连接检查工具 用于检查网站的坏连接 快速实用8 Rose分析设计工具开发设计人员必用的工具9 Rup文档描述 Rational统一开发过程描述与CMM紧密相关 Rational系列产品简介 RationalApplicationDeveloperforWebSphereSoftware用于架构和建模 模型驱动开发 组件 组件测试 运行时分析活动的工具 RationalProfessionalBundle提供企业级桌面工具 以便设计 构建和测试J2EE 门户 面向服务的应用程序 RationalRoseDeveloperforUNIX提供行业领先的模型驱动开发工具 RationalRoseTechnicalDeveloper一个模型驱动开发解决方案 针对Java C C 自动进行从设计到代码的转换 RationalRoseXDEDeveloperforJava为基于J2EE的系统提供完整的可视化设计和开发环境 RationalRoseXDEDeveloperforVisualStudio为基于 NET的系统提供完整的可视化设计和开发环境 RationalRoseXDEDeveloperPlus为基于J2EE和基于 NET的系统提供可视化设计和开发环境 RationalSoftwareArchitect利用UML为模型驱动开发提供整合设计和开发支持 RationalSoftwareModeler支持UML可视化建模 设计 从不同的视图编制系统文档 RationalSuiteDevelopmentStudioforUNIX合并屡获殊荣的开发工具 帮助人们更快速地构建更好的软件 RationalSuiteforTechnicalDevelopers支持诸如实时和嵌入式技术应用程序的可视化开发 RationalWebDeveloperforWebSphereSoftware简化和加速了Web Web服务和Java开发 安装前的准备 安装Rose需要Windows2000 WindowsXP及其以上版本 并且如果是Windows2000则要确认已经安装了ServerPack2 安装Rose 必须先得到Rose的安装包 建议购买Rational公司的正版软件 Rational现已被IBM收购 大家可以下载Rose的试用版 的版本是用于教学使用的破解版软件 注意 仅供教学和学习使用 不得用于任何商业用途 安装的步骤 双击启动RationalRose2003的安装程序 进入安装向导界面 单击 下一步 按钮 这里选择第2项即 RationalRoseEnterpriseEdition 单击 下一步 按钮 选择 DesktopinstallationfromCDimage 选项 表示创建一个本地的应用程序而不是网络的 继续单击 下一步 按钮 进入安装向导界面 单击 Next 按钮 进入产品声明界面 继续单击 Next 按钮 进入协议许可界面 选中 Iacceptthetermsinthelicenseagreement 单选按钮即可 继续单击 Next 按钮 进入安装路径设置界面 设置好安装路径开始安装 系统安装完毕 单击 Finish 按钮后 会弹出注册对话框 要求用户对软件进行注册 破解方法 将文件rational perm dat拷贝到rational安装的根目录下的common目录即可 Rose的使用介绍 RationalRose使用介绍 RationalRose主界面 用RationalRose建模设置全局选项框图设计 1RationalRose主界面 标题栏菜单栏工具栏工作区状态栏 RationalRose界面 标准工具条 浏览区 文档描述窗口 状态条 图形工具条 图形窗口 Rose标准工具条 Rose的工具条独立于当前打开的图形窗口界面 2用RationalRose建模 创建模型保存模型发布模型 3设置全局选项 全局选项可以通过菜单 Tools Options 进行设置 如图右图所示接下来可以选择字体和颜色设置 4框图设计 1 创建UseCase 用例图 右键单击浏览器中的UseCaseView 选择弹出的菜单中的 New UseCaseDiagram 如图所示OOSE JimRumbaugh 4框图设计 打开UseCase图 1 从浏览器中的视图中选择 2 双击UseCase框图打开 或者通过菜单实现 1 选择菜单 Browse UseCaseDiagram 在弹出窗口中进行选择 如图所示 2 在包列表 Package 中选择框图所在的包 3 在UseCase列表框中选择所要打开的框图 4 单击 OK 按钮打开 4框图设计 删除框图 1 在浏览器中右键单击框图 2 在弹出菜单中选择 Delete 并确定 如图2 41所示 4框图设计 新建一个UseCase框图以后 可以在如图2 42所示的设计页面中设计UseCase图 图中左边部分是UseCase的工具栏 右边部分是进行图形化建模的面板 对于工具栏 可以进行定制 如果看不到需要的工具按钮 可以通过菜单 View Toolbars Configure 进行设置 如图所示 这里不仅可以对用例图 也可以对其他图的快捷工具栏内容进行定制 完成任务2 第一个设计 UML语言初览 1概述2UML中的事物3UML中的关系4UML中的视图5UML中的图 1概述 UML用来描述模型的内容有3种 分别是事物 Things 关系 Relationships 和图 Diagrams 而这3种内容下面又有具体的划分 引入案例 用来分辨 模型的 种内容 图这是一个类图 它描述的三个类 手机类 音乐手机类 手机类 其中 音乐手机类和 手机类是手机类的子类 关系这个空心三角形箭头表示了一种泛化关系 它用来表示子类对父类的继承 事物这个长方形表示一个类 其中包括类的属性 和类的操作 方法 它是事物的一种 2UML中的事物 2 1结构事物 StructureThings 2 2行为事物 BehaviorThings 2 3组织事物 GroupingThings 2 4辅助事物 AnnotationThings 2 1结构事物 StructureThings 结构事物主要包括7中1类类是具有相同属性 相同方法 相同语义和相同关系的一组对象的集合2接口接口是指类或组件所提供的 可以完成特定功能的一组操作的集合3协作协作定义了交互的操作 表示一些角色和其他元素一起工作 提供一些合作的动作 这些协作代表构成系统的模式的实现4用例用例定义了系统执行的一组操作 对特定的用户产生可以观察的结果 5活动类活动类是类对象有一个或多个线程或进程的类 活动类和类相似 只是它的对象代表的元素的行为和其他的元素同时存 6组件组件是物理上可替换的 实现了一个或多个接口的系统元素 7节点节点是一个物理元素 它在运行时存在 代表一个可计算的资源 比如一台数据库服务器 值得注意的是 活动类是一种特殊的类 它表明类对象有一个或多个线程或进程 Rose里设置ActiveClass的方法 在classspecification的detail页里Concurrency的设置 可以选择Active 2 2行为事物 BehaviorThings 交互Interaction在UML图中 交互的消息通常画成带箭头的直线 如图所示状态机StateMachine状态机是对象的一个或多个状态的集合 在UML图中 状态机通常用一个圆角矩形来表示 如图3 10所示 2 3组织事物 GroupingThings 组织事物也称分组事物 只有一种组织事物称为包 Package 包与组件的最大区别在于 包纯粹是一种概念上的东西 仅仅存在于开发阶段结束之前 而组件是一种物理的元素 存在于运行时 2 4辅助事物 AnnotationThings 类图的主要构成成分 辅助事物也称注释事物 属于这一类的只有注释 Annotation 注释就是UML模型的解释部分 在UML图中 一般表示为折起一角的矩形 如图所示 RationalRose的视图与图 RationalRose提供了四种视图UseCaseView用例视图LogicalView逻辑视图ComponentView组件视图DeploymentView配置视图 RationalRose的视图与图 视图与图的关系用例视图 UseCaseView 用于对需求建模 主要包括用例图 活动图 必要时也会用到对业务建模的顺序图或协作图等 有时还包括领域类图 逻辑视图 LogicalView 用于对分析设计过程建模 主要包括类图 顺序图 协作图 状态图 包图等 有时也用到活动图 组件视图 ComponentView 也称构件视图 建模软件的组件及其相互间的关系 组件可以是任何一个可重用的软件领域内的组成部分 如源程序 二进制文件 方法 类 可执行文件 文本文件等 部署视图 DeploymentView 建模系统的各个硬件节点及其相互间的通信方式 练一练 打开RationalRose新建一个模型 保存一下 命名为 第3章练习1在绘图区的工具栏里面找出刚才讲述的10种事务 并说明属于哪种事务 提示 10种事物在哪些图中出现 用例 用例图 用例视图 包 类 活动类 接口 协作 类图 逻辑视图 状态 状态图 逻辑视图 交互 协作图 逻辑视图 组件 组件视图 节点 配置视图 3UML中的关系 1关联关系 Association 2依赖关系 Dependency 3泛化关系 Generalization 4实现关系 Realization 1关联关系 Association 关联关系是一种结构化的关系 指一种对象和另一种对象有联系 给定关联的两个类 可以从其中的一个类的对象访问到另一个类的相关对象 在UML图中 关联关系用一条实线表示如下图所示 另外 关联可以有方向 表示该关联在某方向被使用 只在一个方向上存在的关联 称作单向关联 UnidirectionalAssociation 在两个方向上都存在的关联 称作双向关联 BidirectionalAssociation 2依赖关系 Dependency 对于两个对象X Y 如果对象X发生变化 可能会引起对另一个对象Y的变化 则称Y依赖于X 在UML图中 依赖关系用一条带有箭头的虚线来表示 如右图所示 3泛化关系 Generalization UML中的泛化关系定义了一般元素和特殊元素之间的分类关系 与和C 及Java中的继承关系有些类似 在UML图中 泛化关系用一条带有空心箭头的实线来表示 如图左所示 4实现关系 Realization 实现关系将一种模型元素 如类 与另一种模型元素 如接口 连接起来 以上讲述了UML中的4种关系 除了需要注意各个关系的区别与联系以外 还要了解对关系的修饰 最常见的 对关系可以做两种修饰 第一种是命名 即可以为关系取名 第二种数字 可以表示不同对应情况的关系 比如一对多 多对一 一对一和多对多等 练一练 画出UML中的四种关系 关联关系 依赖关系 泛化关系 实现关系 关系的修饰 设置关联关系的数字 1 打开关系的specification对话框 2 在RoleADetail选项卡中设置Multiplicity属性 数值可以是0 0 1 1 1 n等等 4 同样方法设置RoleBDetail 关系的修饰 设置依赖关系的数值 打开关系的specification对话框 在Multipl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论