UML及其建模工具的使用.ppt_第1页
UML及其建模工具的使用.ppt_第2页
UML及其建模工具的使用.ppt_第3页
UML及其建模工具的使用.ppt_第4页
UML及其建模工具的使用.ppt_第5页
已阅读5页,还剩212页未读 继续免费阅读

下载本文档

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

文档简介

UML及其建模工具的使用 2 内容提要 一 软件工程方法学二 UML的基本概念静态建模动态建模物理架构建模步骤三 Rose的使用四 三个实例五 Java代码生成六 Rational统一过程 1 瀑布模型 线形顺序模型 可行性研究与计划 需求分析 设计 编码 运行维护 测试 定义阶段 开发阶段 维护阶段 一 软件工程方法学 按照传统瀑布模型开发软件的特点 1 阶段间具有顺序性和依赖性 2 推迟实现的观点 3 每个阶段必须完成规定的文档 每个阶段结束前完成文档审查 及早改正错误 2 原型模型 快速原型法 建造 修改原型 用户测试运行原型 听取用户意见 原型范型 采用原型模型的软件生存周期 分析定义系统需求 生成原型 系统设计 程序设计 编码 测试 运行和维护 原型化 含原型化的软件生存期 7 技术发展背景 1 面向对象的含义面向对象技术回顾UML的产生 8 技术发展背景 2 面向对象的含义 面向对象中有几个非常重要的概念 封装 encapsulation 信息 实现的隐藏 information implementationhiding 状态保持 stateretention 对象标识 objectidentity 消息 message 类 class 继承 inheritance 多态性 polymorphism 一般性 generality 9 技术发展背景 3 面向对象的含义 封装 将属性和操作包装成一个单元 使得对状态的访问和修改只能通过封装提供的接口进行 信息 实现的隐藏 将某些属性或方法限制在封装内部使用 限制外部的可见性 状态保持 对象能够保持状态 可以用于后续的处理 对象标识 每个对象可以作为软件实体被标识和处理 每个对象都有一个对象标识符 objectidentifierOID 消息 对象间发送请求的载体 10 技术发展背景 4 面向对象的含义 类 类是对象的类型 模版 对象是类的实例 继承 子类隐式使用超类 或父类 的属性和操作 多态性 子类覆盖 overriding 父类的方法 它和重载 overloading 的区别在于重载是在同一个类中定义 利用参数的不同来进行动态绑定 dynamicbinding 一般性 类的定义是参数化的或模版化的 提高了定义的通用性 11 技术发展背景 5 面向对象技术回顾 面向对象技术是许多人历经多年研究积累的产物 类的概念 是面向对象的重要组成部分 Smalltalk 提出许多面向对象技术的核心概念 如 消息和继承 Dijkstra的软件正确性理念 提出了用抽象层构造软件的观点 ADT抽象数据类型 奠定面向对象的基础 支持信息的隐藏 Ada语言 提出了一般性和包两个概念 C 语言 最广泛使用的面向对象的语言 Eiffel语言 融合了许多最佳的计算机科学思想和面向对象思想 12 为什么对面向对象方法感兴趣 面向对象方法的主要优点 自然性追求软件系统对现实系统的直接模拟 尽量实现将现实世界中的事物直接映射到软件系统的解空间中 软件复用可复用性 可重用性 reusebility可扩展性可管理性 13 可复用性 可重用性 面向对象技术允许复用的不仅仅是代码 通过面向对象技术 我们可以复用需求 分析 设计 测试计划 用户界面以及体系结构等等 事实上 软件工程生存期中的每个部分都可以复用 14 传统系统分析 面向功能 把系统看成一组功能OOA 把问题当作一组相互作用的实体 并确定实体间关系 15 面向对象技术是一个有全新概念的开发模式 其特点是 1 方法是对软件开发过程所有阶段进行综合考虑而得到的 2 从生存期的一个阶段到下一个阶段所使用的方法与技术具有高度的连续性 3 将OOA 分析 OOD 设计 OOP 实现 集成到生存期的相应阶段 16 开发方法的组合 17 OO方法的开发过程 OO方法改进了在生存期各个阶段间的界面 因为生存期各个阶段开发出来的 部件 都是类 在面向对象生存期的各个阶段对各个类的信息进行细化 类成为分析 设计和实现的基本单元 18 对象模型对象模型表示静态的 结构的系统数据的性质 对模拟客观世界实体的对象以及对象彼此之间的关系的映射 描述了系统的静态结构 OO方法强调围绕对象而不是功能来构造系统 19 对象 object 现实世界中某个具体的物理实体或概念在计算机逻辑中的映射和体现 对象具有的含义 在现实世界中 是客观世界中的一个实体在面向对象程序中 表达成计算机可理解 可操纵 具有一定属性和行为的对象在计算机世界中 是一个可标识的存储区域 20 面向对象方法是一种运用对象 类 继承 封装 聚合 消息传递 多态性等概念来构造系统的软件开发方法 面向对象 对象 类 继承 消息通信 面向对象的主要特征 封装性 Encapsulation 继承性 Inheritance 多态性 Polymorphism 21 类 class 具有共同属性和行为的对象的抽象类与对象的关系类是对象的抽象对象是类的实例 类 对象 22 对象 实体与类 对象 实体 类 抽象数据类 计算机世界 现实世界 计算机逻辑的实现 影射 抽象 实例化 抽象 概念世界 23 封装 封装是软件开发方法的重要原则 有两个涵义 把对象的全部属性和全部服务结合在一起 形成一个不可分割的独立单位 对象 尽可能隐蔽对象的内部细节 信息隐蔽 24 传统方法数据与过程是分离的 过程1 输入 输出 过程2 过程3 数据实体 属于该对象的数据 对象 处理数据的方法 消息 消息 对象把数据和处理数据的方法封状成一个单元 25 传统方法和面向对象方法的比较 传统方法系统是过程的集合过程与数据实体交互过程接受输入并产生输出 面向对象方法系统是交互对象的集合对象与人或其它对象交互对象发送与响应消息 26 继承 继承性inheritance 继承性是父类和子类之间共享数据和方法的机制继承性具有传递性继承性包括单继承和多重继承 子类 继承部分 增加部分 父类 共性部分 27 继承性作用 使软件系统具有开放性更好地进行抽象与分类增强代码的重用率 28 多态 多态性 不同的对象收到同一消息可产生完全不同的结果 这一现象叫做多态多态的效果 用户发送一个通用的消息 而实现的细节则由接收对象自行决定实现机制 重载 override 29 多态性的作用 增强了操作的透明性 可理解性和可扩展性增强了软件的灵活性和重用性 30 消息 message 消息 对象之间相互请求或相互协作的途径 是要求某个对象执行某个功能操作的规格说明消息内容 通常包含接收方及请求接收方完成的功能信息发送方 发出消息 请求接收方响应接收方 收到消息后 经过解释 激活方法 予以响应 31 面向对象的软件工程对传统软件工程的改进 1 快速原型法 试用 反馈 修改 多次反复 2 面向对象的软件工程 面向对象的方法 基本概念 对象 类 消息 继承 多态性 封装 优点 思维一致 稳定性好 可重用性好 可维护性好 32 两种技术的比较1 这两种途径并不是相互排斥的 相反 它们是相互促进相互补充的 工作要素 确定 做什么 确定 怎样做 实现 测试 2 传统的生命周期方法学强调 需求分析的重要性 强调软件文档的重要性 适用于需求模糊或者需求不稳定的系统 3 面向对象方法学 工作重点在分析和设计阶段 阶段的划分是十分模糊的 通常在分析 设计和实现等阶段多次迭代 既适用于线性的瀑布开发模型 也适用于快速原型法 33 软件系统的建模及建模原则 计算机软件是 产品 因为它具有产品特征 1 软件产品为用户提供功能 2 开发者和使用者是脱离的 3 软件产品具有质量的概念 4 软件产品具备完备的用户手册技术文档 5 软件产品的生产过程具有工业化生产的特点 6 开发团队协同工作 软件产品需要使用工具 技术可重用 质量必须稳定 不应在不同版本的软件之间产生质量不稳定 34 在解决问题之前必须首先理解所要解决的问题 对问题理解得越透彻 就越容易解决它 为了更好地理解问题 人们常常采用建立问题模型的方法 所谓模型 就是为了理解事物而对事物作出的一种抽象 35 软件建模基本目的有四点 规范 specifying 可视化 visualizing 建造 constructing 和建档 documentation 1 规范 在分析和设计阶段为软件系统的各个组成部分规定其功能 结构和对外接口 2 可视化 有助于软件规范的表达和交流 36 3 建造 生成源代码 完整定义的软件规范可以实现通过模型向源代码的映射 支持软件系统的建造 4 建档 完整定义的软件模型是反映软件系统的结构和实现的重要技术资料 可以作为技术档案保存 以便后续产品或相关产品能有效地重用其中的成熟技术 37 2 建模的原则 1 准确的原则模型必须准确地反映软件系统的真实情况 模型必须准确 意味着在软件开发的整个周期内模型必须和产品始终保持一致 2 分层的原则在建模的过程中 必须有不同的模型 以不同的抽象程度 反映系统的不同侧面 在软件构筑的不同阶段 不同的开发人员如 投资者 管理者 设计者 程序员 测试者和使用者看待软件的侧重面有所不同 因此 软件系统的建模需要不同的模型以反映系统的不同侧面 如 一类模型描绘系统的外部边界和行为 另一类模型描绘系统的内部逻辑关系 38 3 分治的原则不可能单独用一个模型来反映整个系统的任何侧面 软件系统是复杂的 对于软件模型的任意一个侧面不可能用一个模型来反映所有内容 需要把问题分解为不同的子模型 分别处理这些模型 相对独立但又互相联系 综合起来构成了此侧面的一个完整的模型 4 标准的原则模型必须在某种程度上是通用的 建模的基本目的是交流 一个开发队伍内部的交流 同一软件的不同时期的版本的开发队伍的交流 不同软件的开发队伍之间的交流 以实现最大程度的软件复用 交流需要语言 语言是通用的 标准的 39 二 统一的建模语言方法由Rumbaugh Booch Jacobson提出的统一建模语言 UnifyModeingLanguage简称UML UML是一种定义良好 易于表达 功能强大且普遍实用的建模语言 40 UML的产生 1988年到1992年是面向对象方法学蓬勃发展的时期 人们从各自的经历和软件开发的经验提出了各种面向对象的开发方法 代表的有 SallyShlaer和SteveMellor以信息模型化方法作为基础 并为目标系统增设了状态模型和过程模型 PeterCoad和EdYourdon则在信息模型化 面向对象的程序设计语言和基于知识的系统的基础上 建立了他们的OOA和OOD 主要工具是类与对象图 对象状态图和服务图 HP公司的Fusion开发方法 41 UML的产生 Wirfs Brock的职责驱动设计 Responsibility DrivenDesign 也称类 职责 协作Class Responsibility Collaboration CRC cards 用类所承担的责任来描述系统 利用责任把封装的概念带到分析与设计活动中去 GradyBooch在Rational软件公司开发Ada系统作了许多构件 Component 并以此由底向上构筑大型软件系统 即OOD方法 JimRumbaugh在通用电子 GeneralElectric 领导一个研究小组 提出了对象建模技术 OMT 方法 通过面向对象的三种模型 对象模型 动态模型和功能模型 从不同角度对系统进行描述 42 UML的产生 IvarJacobson和他的Objectory公司开发了OOSE ObjectOrientedSoftwareEngineering 面向对象的软件工程 利用UseCases来表达系统要求 1994年任职于Rational公司的GradyBooch首先联合JimRumbaugh加盟Rational软件公司开始了统一OO方法学和工具的历程 以融合Booch和OMT方法的UML开发开始 1995年10月UML0 8发布 1995年秋 IvarJacobson和他的Objectory公司加盟Rational UML中加入了OOSE方法 使其有可能最集中地包容当今最适用的各种OO方法 1996年 UML0 9版本发布 1997年1月 UML1 0被提交给OMG组织 作为软件建模语言的候选 1997年11月7日 UML1 1正式被OMG组织采纳为业界标准 UML经历了1 2 1 3 1 4 目前UML2 0版本正在制定 43 Rational三剑客 JimRumbaugh GradyBooch IvarJacobson 44 UML的基本概念 1 UML简介UML的目标UML概念范围 45 UML的基本概念 2 UML简介 UML UnifiedModelingLanguage 是一种构建软件系统和文档的通用可视化建模语言 UML能与所有的开发方法一同使用 可用于软件开发的整个生命周期 UML能表达系统的静态结构和动态信息 并能管理复杂的系统模型 便于软件团队之间的合作开发 UML不是编程语言 但支持UML语言的工具可以提供从UML到各种编程语言的代码生成 也可以提供从现有程序逆向构建UML模型 46 UML的基本概念 3 UML简介 UML并不是万能的 它是一种离散的建模语言 对于特定的领域 比如 GUI VLSI电路设计或基于规则的人工智能 用特定的语言和工具可能更合适 47 UML的基本概念 4 UML的目标 最重要目标 UML是所有建模人员可以使用的通用建模语言 它包含主流建模方法的概念 从而可以替代现有的软件分析和设计方法 比如 OMT Booch OOSE等 UML不是完整的开发方法 它不包括逐步的开发流程 但它提供所有必要的概念 具备足够的表达能力 UML的另一个目标是 能尽量简洁地表达系统的模型 48 UML的目标是 1 易于使用 表达能力强 进行可视化建模 2 与具体的软件开发过程无关 可应用于任何软件开发的过程 3 简单 可扩展 扩展无需对核心概念进行修改 4 为面向对象的设计和开发过程中涌现出的高级概念 例如协作 框架 组件 提供支持 5 吸收当代最好的软件工程实践经验 6 可升级 具有广阔的适用性和可用性 7 有利于面向对象工具的市场成长 49 UML语言包含三方面内容 1 UML基本图素 它是构成UML模型图的基本元素 2 UML模型图 它由UML基本图素按照UML建模规则构成 3 UML建模规则 UML模型图必须按特定的规则有机地组合而成 从而构成一个有机的 完整的UML模型图 well formedUMLdiagram 50 一 基本图素分为四类 结构模型图素 行为模型图素 成组模型图素 其他模型图素 公用机制 51 UML的基本概念 5 UML概念范围 UML概念可以划分为以下范围 系统需求静态结构动态行为交互行为物理实现各种图之间的关系模型组织扩展机制 52 UML的基本概念 6 UML概念范围 系统需求用例视图 UseCasesView 从外部用户的角度来描述系统的行为 它将系统功能划分为对用户有意义的事务 这些事务被称为用例 用户被称为执行者 用例视图也就是描述活动者在各个用例中的参与情况 它指导所有的行为视图 53 UML的基本概念 7 UML概念范围 静态结构 静态视图 StaticView 一个模型必须首先定义各种事物的内部特征和相互之间的关系 应用概念建模成类 类描述事物的属性和以及在这些属性上的操作 类之间可以存在不同的关系 比如泛化 继承 关联和依赖等 静态视图表示成类图 静态视图在某一时刻的快照称为对象图 54 UML的基本概念 8 UML概念范围 动态行为 状态机视图 StateMachineView 通过对每个类的对象的生命周期进行建模 描述了对象时间上的动态行为 状态机是由状态和迁移组成的图 状态机通常附属于类 描述类实例对接受事件的响应 活动视图 ActivityView 是利用状态机对运算和工作流进行建模的特殊形式 活动图的状态代表了运算执行的状态 而非一般对象的状态 活动图和流程图很相似 不过它支持并发 55 UML的基本概念 9 UML概念范围 交互行为 交互视图 InteractionView 对象通过交互来实现行为 交互视图通过协作来进行建模 协作具有结构和行为两个方面 结构包含为行为方面而定义的一系列角色和关系 行为方面是绑定于角色的对象间的一系列交换的消息 这些消息在协作中称为交互 消息序列可用两种图来表示 顺序图 重点在消息的时间顺序 和协作图 重点在交换消息的对象间的关系 56 UML的基本概念 10 UML概念范围 物理实现 物理视图 PhysicalView 许多系统模型独立于最终的实现 在实现方面 必须充分考虑系统的重用性和性能 UML有两种视图来表示系统的实现 实现视图和部署视图 实现视图将可重用的系统片段打包成组件 部署视图描述系统运行时资源的物理分布 这些资源称为结点 57 UML的基本概念 11 UML概念范围 各种图之间的关系静态视图 类图 对象图 物理视图 实现视图 部署视图 是描述系统的静态结构 用例图是描述系统的外部视图 活动图描述系统的外部 内部视图 交互视图 顺序图 协作图 描述系统的内部视图 状态图描述单个类的动态行为 58 UML的基本概念 12 UML概念范围 模型组织模型管理视图 ModelManagementView 任何大系统必须划分为较小的单元 以使人们能在某一时刻只接触有限的信息 不影响团队间的并行工作 模型是利用包 Package 和包的依赖来进行管理的 包是UML模型中通用的层次组织结构 包上的依赖总结了包内容的依赖关系 59 UML的基本概念 13 UML概念范围 扩展机制扩展机制 ExtensionMechanisms UML能满足绝大部分系统建模的需要 但任何语言都不是万能的 它必须考虑一定的扩展机制 UML的扩展机制包括约束 标签值和原型 这些扩展机制可以用来为特定领域剪裁UML的配置 这样带来一些好处 根据自身需要来使用建模语言 60 基本图素 一个模型必须首先定义各种事物的内部特征和相互之间的关系 下面介绍一些基本的模型元素 分类 共12个类 Class 接口 Interface 包 Package 角色 Actor 用例 UseCases 组件 Component 结点 Node 状态 state 关系 关联 Association 泛化 Generalization 依赖 Dependency 实现 Realization 约束 Constraint 61 基本图素 1 角色 角色是与系统 子系统或类交互的外部人员 进程或事务 在运行时 具体人员会充当系统的多个执行者 不同用户可能会成为一个执行者 根据上下文的不同而具有不同的含义 62 基本图素 2 用例 用例是系统提供的外部可感知的功能单元 用例的目的是定义清晰的系统行为 但不解释系统的内部结构 用例可以与角色关联 也可以参与其他的多种关系 比如扩展 泛化和包含等 用户的动态部分用交互视图来描述 比如顺序图 协作图 用例用椭圆来表示 用例名标在椭圆下方 用实线与同自身通信的用户相连 63 基本图素 3 系统 系统也叫做系统边界 用于界定系统功能范围 它用一个矩形框表示 描述该系统功能的用例都置于其中 而描述的与系统交互的角色都置于其外 系统 边界 常常省略不画 64 基本图素 4 类 类是具有相同属性 操作和关系的对象集合的总称 通常在UML中类被画成矩形 包括三个部分 名称 属性和操作 下面是可选的 名称 每个类都必须有一个名字 用来区分其它的类 类名是一个字符串 称为简单名字 路径名字是在类名前加包含类的包名为前缀 例如Wall java awt Wall都是合法的类名 属性 类可以有任意多个属性 也可以没有属性 在类图中属性只要写上名字就可以了 也可以在属性名后跟上类型甚至缺省取值 操作 操作是类的任意一个实例对象都可以调用的 并可能影响该对象行为的实现 65 基本图素 4 类 类名 属性 操作 66 基本图素 5 对象 1 对象是类的实例 2 对象图素中对象名的下面加下划线 对象图素所使用的符号与类图素基本相同 二者的区别在于对象图素展示的是类的实例 而不是类本身 3 对象图素除第一格外 其他格是可选的 对象常常出现在活动图 序列图和协作图中 67 68 基本图素 6 接口 接口是未给出实现的对象行为的描述 接口包含操作 但没有属性 一个或多个类可以实现接口 每个类实现接口的操作 思考 为什么会有接口 String isEqual String BooleanHash Integer Hashable Comparable 接口标记 69 基本图素 7 协作 协作实质代表一组模型元素协同完成对应用例的功能 协作与对应的用例存在着一种所谓的实现关系 协作与对应的用例分离带来的好处是为描述一个用例可以用不同的协作实现提供了可能 70 求一元二次方程根 求一元二次方程根 71 基本图素 8 组件 组件是可重用的系统片段 具有良好定义接口的物理实现单元 每个组件包含了系统设计中某些类的实现 组件设计的原则 良好的组件不直接依赖于其它组件 而是依赖于其它组件所支持的接口 这样的好处是系统中的组件可以被支持相同接口的组件所取代 一个组件可能是源代码 可执行程序或动态库 72 基本图素 9 结点 结点代表系统运行时的物理对象 结点通常拥有运算能力 它可以容纳对象和组件实例 73 基本图素 10 包 任何大系统都必须划分为较小的单元 以便人们在某一时刻可以和有限的信息工作 使团队的工作不相互影响 包可以包含各种模型元素和其它的包 包之间还可能存在一定的依赖 Finances Credits Accounts BankInterface 74 基本图素 10 包 具有独立的说明和实现部分的包 它代表了与系统其它部分具有清晰接口的清晰单元 它通常代表了系统在功能或实现范围上的划分 75 基本图素 消息 消息代表软件系统内两个对象中一个对象向另一个对象发出的执行某种操作的请求 序列图中的消息有简单 异步 同步之分1 简单消息是一个对象到另一个对象的转移 2 如一个对象发送了同步消息 必须等待对方的回答后才继续自己的操作 3 相反 如一个对象发送了异步消息 不必等待对方的回答就继续自己的操作 76 77 基本图素 11 关系 关联 关联描述了系统中对象和其它实例之间的离散的连接 关联是有序的 它允许重复 关联的实例是链 关联至对象的连接点称为关联端点 很多信息被附在关联端点上 它拥有角色名 重数 多少个类的实例可以关联于另一个类的实例 可见性等 关联有自己的名称 可以拥有自己的属性 这时关联本身也是类 称为关联类 78 基本图素 11 关系 关联 Manages Job boss worker employee employer 1 0 1 Company Person 角色名 重数 关联名称 关联类 二元关联 自关联 79 基本图素 11 关系 关联 聚集 Aggregation 用来表达整体 部分关系的关联 组合 Composition 是一种聚集 是关联更强的形式 Polygon Point 1 3 points Contains Polygon Window Slider 1 2 Scrollbar Header 1 Title 1 1 Panel 1 Body 聚集 组合 80 基本图素 11 关系 泛化 泛化是一般化和具体化之间的一种关系 继承就是一种泛化关系 更一般化的描述称为双亲 双亲的双亲称为祖先 更具体化的描述称为孩子 在类的范畴 双亲对应超类 孩子对应子类 Tree Oak Elm Birch 孩子 双亲 Person Student Graduate 祖先 81 基本图素 11 关系 泛化 多重继承 一个孩子可以从多个双亲继承属性和方法 多重继承可能存在冲突 因为被继承的双亲可能存在相同的类声明 这时 最好显式解决冲突问题 Assistant Teacher Student 82 基本图素 11 关系 依赖 依赖指明两个或两个以上模型元素之间的关系 依赖有很多种类 比如 实现 realize 使用 usage 实例化 instantiate 调用 call 派生 derive 访问 access 引入 import 友元 friend 等等 ApplicationServer DataBase 依赖类型 83 基本图素 11 关系 实现 实现是依赖的一种 但由于它具有特殊意义 所以将它独立讲述 实现是连接说明和实现之间的关系 String isEqual String BooleanHash Integer Comparable Comparable isEqual String BooleanHash Integer 实现 特殊的实现标记 84 基本图素 11 关系 约束 约束用来表示各种限制 如关联路径上的限制 和属性特征检测 存在 所有 Person Committee Member of 约束 Chair of subset 85 模型图 静态视图 类图对象图部署图组件图 86 静态建模 1 类图 静态视图是UML的基础 静态视图表示为类图 主要是描述类和类之间的关系 继承 关联 Person House residence 0 关联类 ordered 87 静态建模 2 对象图 对象图是系统在某一时刻的快照 链 88 静态建模 3 组件图 组件图描述可重用的系统组件以及组件之间的依赖 Course User BillingSystem 89 静态建模 3 部署图 部署图描述系统资源在运行时的物理分布 系统资源成为结点 90 动态建模 1 用例图 从外界对系统的感知状态图 对象自身的活动活动图序列图 对象之间的关系协作图 91 动态建模 1 用例图 用例图描述执行者在各个用例中的参与情况 92 动态建模 1 用例图 用例图描述各个执行者在各个用例中的参与情况 描述系统为用户所感知的外部视图 用例图的功能 捕获系统用户需求描述系统边界指明系统外部行为指导系统开发者的功能开发系统建模的起点 指导所有的类图和交互图的设计产生测试用例 用户文档估计项目大小和进度 93 动态建模 1 用例图 用例可以参与多种关系 关联 扩展 泛化和包含 Customer Salesman Supplier Supervisor Sale Management Supply 执行者 用例 系统边界 94 动态建模 2 状态机图 状态机图是对单个类的对象的生命周期进行建模 描述了对象时间上的动态行为 每个对象被认为是事件驱动的孤立实体 事件表达对象间的调用 显式信号 值的改变或时间的推移 调用事件 变更事件 信号事件 时间事件状态描述对象生命周期的一段时间 可以是等待其它事件时所处的时间 或是执行某一活动时所处的时间 状态分为简单状态和复合状态 95 动态建模 2 状态机图 状态机图是由状态和跃迁组成的图 通常状态机附属于类 描述类实例对接受事件的响应 跃迁定义对象对某一事件发生的反应 通常 迁移具有触发事件 跃迁条件 动作和目标状态 跃迁的种类有外部跃迁和内部跃迁 外部跃迁是最普通的跃迁 会发生状态改变 内部跃迁不发生状态改变 跃迁有两个隐式动作 进入动作和退出动作 无论何时进入和退出时都要执行 这方便进入时进行初始化工作 退出时进行资源的释放工作 96 它强调对象行为的事件顺序 强调对象对外部事件的响应及相应的状态变迁 通过状态图可以了解一个对象所能到达的所有状态以及对象涉及的事件 消息 超时 错误 条件满足 对对象状态的影响 97 动态建模 2 状态机图 初始状态 结束状态 状态机 状态 触发事件 动作表达式 跃迁 98 动态建模 3 活动图 活动图是用状态机对工作流进行建模的特殊形式 它和流程图很类似 不过它支持并发控制 活动图一般不描述所有的运算细节 它显示活动的流 但不显示执行活动的对象 活动图处于系统的外部和内部视图之间 所以它可以作为设计的起点 为了完成设计 每个活动必须扩展成一个和多个操作 每个操作被指派给特定的对象来实现 带有生命线的活动图和无生命线的活动图 99 动态建模 3 活动图 Customer Sales Stockroom RequestService Pay TakeOrder FillOrder DeliverOrder CollectOrder 泳道 100 动态建模 3 带有对象流的活动图 Customer Sales Stockroom RequestService Pay TakeOrder FillOrder DeliverOrder CollectOrder 泳道 Order Placed Order Entered Order Filled Order Delivered 对象 101 动态建模 4 序列图 对象行为是通过交互来实现的 交互是对象间为完成某一目的而进行的一系列消息交换 消息是对象间的单向通信 从发送者到接受者的携带信息的控制流 消息可能带有值参 消息序列可用两种图表示 序列图 重点在消息的时间顺序 和协作图 重点在交换消息的对象间的关系 对协作图来说 时间顺序可以从顺序号获得 102 动态建模 4 序列图 序列图用二维表来表示交互 纵向是时间轴 横向是参与的角色以及它们交换的消息 角色的生命周期表现为生命线 一条垂直的线 在激活的时间段里是双线 在状态保持的时间里是虚线 消息表示为从一条生命线出发到另一条生命线的有向线 从上而下 表示消息的时间顺序 103 动态建模 12 序列图 Caller Operator Callee 时间轴 顺序图 生命线 激活 状态保持 角色 104 动态建模 5 协作图 协作图包含分类角色和关联角色 当它实例化时 对象被绑定到分类角色 链被绑定到关联角色 关联角色还可能被各种暂时性的链来充当 如过程参数和局部过程变量 链可以指定暂时性的原型 或自身调用 协作图对实现协作的对象和链进行建模 而忽略其他对象 105 动态建模 5 协作图 Student RegistrationForm RegistrationManager math 106 动态建模 5 协作图 通常在一个协作图中每个对象分配一个符号 然而有时不同状态的对象需要显式指出 流将同一个对象的不同状态版本关系在一起 使用 原型 流的 原型不太常用 Controller Directory closed Directory open 1 expand 2 sort 1 1 流 107 公用机制 注释规范说明修饰扩充机制公共划分 108 公用机制 1 注释 注释用于解释设计的思路 便于理解 一个好的模型应该有详尽的注释 Representsanincorporatedentity Company 注释 109 规范说明 软件模型必须是完整的 以便于软件系统的建造 也就是说 此模型必须具备足够的详细信息以供软件建造使用 这些构成完整模型的详细信息就是模型的规范说明 简称规范 所有UML模型成员都有规范说明 不同的模型成分规范说明的内容不同 这些规范说明的内容一般用属性名和属性值的形式来表达 UML中有许多预定义的属性 比如 文档 documentation 持续性 persistence 和并发性 Concurrency 等 属性一般作为模型成分附加说明 比如 用一些文字逐条列举类的功能 这种规范说明方式是非形式化的 110 修饰 UML模型图中的图素通常都有一个基本的结构 它描述模型成分最主要的特征 为了表达和建造系统的需要 基本图素表达时 UML提供了有选择地公开相关细节的方式 表示的类的属性和方法的可见性图示出了 UML模型中类的成分带 表示私有的 Private 带 表示公开的 Public 其他类可以访问 带 表示受保护的 Protected 111 扩充机制 当使用UML的基本图素难以有效地表达复杂事物时 就需要对UML进行某种形式的扩充 正如同人类的语言需要不断地扩充语汇 以描述各种新出现的事物一样 UML提供了这种扩充机制 extensibilitymechanisms 112 建模规则 UML的模型图不是UML基本图素的简单堆砌 它必须按特定的规则有机地组合而成 从而构成一个完整的UML模型图 UML建模规则包括 1 命名 任何一个UML基本图素和模型图 统称UML成员 都必须命名 2 作用域 UML成员所定义的内容起作用的上下文环境 如类名受所属包的约束 3 可见性 UML成员能被其它成员引用的方式 4 完整性 UML成员之间互相关联的合法性和一致性 5 运行属性 UML成员在运行时的特性 如进程 线程 同步等 113 UML建模 五个视图 用例视图设计视图进程视图组件视图部署视图 逻辑视图 114 用例视图 用例视图用于描述系统应该具有的功能集 它是从系统的外部用户角度出发 对系统行为的抽象表示 它所描述的系统为用户或另一个系统提供服务 用例视图主要为用户 系统分析人员 系统开发人员和测试人员服务 这些人员利用用例视图交流 以达到各自的目的 用户和系统分析人员通过用例视图达到系统功能上的共识 系统开发人员通过用例视图完成系统逻辑模型的建立 测试人员通过用例视图测试系统是否满足用户要求 115 逻辑视图 用例视图只考虑系统应提供什么功能 对这些功能的内部运作情况不予考虑 为了揭示系统内部的设计和协作状况 要使用逻辑视图描述系统 逻辑视图用来显示系统内部的功能是怎样设计的 逻辑视图通过类图 对象图描述系统类 对象和它们之间的关系 逻辑视图也称为结构模型视图或静态视图或系统结构建模 原则上软件系统逻辑视图在与软件系统的实现平台无关 逻辑视图包含的模型图有 类图 对象图 交互图 类图是构成逻辑视图的核心 通常用对象描述客观世界中某个具体的实体 建立类模型时 应尽量与应用领域的概念保持一致 使模型更符合客观实际 易修改 易理解和易交流 对象图 交互图描述系统的动态行为 116 组件视图 当系统的逻辑视图被定义之后 需要定义逻辑结构的物理实现 这包括 逻辑结构对应的源代码文件 物理文件之间的关系 存放路径等 组件视图主要描述系统部件的配置 通常情况下 组件图看起来似乎是系统物理组件图标的集合 117 部署视图 提供给开发者 部署 集成者和测试者 在网络开发环境中 部署视图是系统模型必不可少的一部分 部署视图用来描述软件产品在计算机硬件系统和网络上的安装 分发和分布 118 UML建模UML将软件的体系结构分解为四个不同的层次 分别是 用例视图 逻辑视图 组件视图 部署视图 其中每个视图分别关注软件开发的一个层次 视图由一种或多种模型图构成 用例视图关注系统需求 逻辑视图关注系统的逻辑结构 组件视图关注系统定义逻辑结构的物理实现 部署视图关注系统中软件和硬件之间的物理关系 119 建模步骤 1 UML是一种建模语言而不是方法 这是因为UML中没有过程的概念 而过程正是方法的一个重要组成部分 UML本身独立于过程 这意味着用户在使用UML进行建模时 可以选用任何适合的过程 一般采用的建模过程有 瀑布开发模型 迭代递增开发模型 120 建模步骤 2 瀑布开发模型 瀑布开发模型 需求 分析与设计 编码 测试 产品 维护 121 建模步骤 3 迭代递增开发模型 迭代递增开发模型 最初需求与分析 设计 编码 测试 产品 维护请求 更多需求与分析 122 建模步骤 4 UML建模过程 基于UML的系统开发采取增量迭代开发模型 1 需求最初需求规格说明应当由代表系统最终用户的人员提供 内容包括系统基本功能需求和对计算机系统的要求 2 分析分析的任务是找出系统的所有需求并加以描述 同时建立模型 以定义系统中的关键领域类 应由系统用户和开发人员合作完成 分析的第一步是定义用例 以描述所开发系统的外部功能需求 用例分析包括阅读和分析需求说明 此时需要与系统的潜在用户进行讨论 123 建模步骤 5 UML建模过程 3 设计设计阶段的任务是通过综合考虑所有的技术限制 以扩展和细化分析阶段的模型 设计阶段可以分为两个部分 结构设计是高层设计 其任务是定义包 子系统 包括包间的依赖性和主要通信机制 我们希望得到尽可能简单和清晰的结构 各部分之间的依赖尽可能的少 并尽可能的减少双向的依赖关系 第二部分是详细设计 细化包的内容 使编程人员得到所有类的一个足够清晰的描述 124 建模步骤 6 UML建模过程 结构设计一个设计良好的系统结构是系统可扩充和可变更的基础 包实际上是一些类的集合 类图中包括有助于用户从技术逻辑中分离出应用逻辑 领域类 从而减少它们之间的依赖性 详细设计详细设计的目的是通过创建新的类图 状态图和动态图 顺序图 协作图和活动图 描述新的技术类 并扩展和细化分析阶段的对象类 125 建模步骤 7 UML建模过程 4 实现构造或实现阶段是对类进行编程的过程 可以选择某种面向对象对象编程语言 如Java 作为实现系统的软件环境 Java很容易实现从逻辑视图到代码部件的映射 因为类到Java代码文件之间是一一映射关系 在实现阶段中 可以选取各种图的说明来辅助编程 比如 类图 状态图和动态图等 126 建模步骤 8 UML建模过程 5 测试和配置完成系统编码后 需要对系统进行测试 它通常包括 单元测试 集成测试 系统测试和验收测试 在单元测试中使用类图和类的规格说明 对单独的类或一组类进行测试 在集成测试中 使用组件图和合作图 对各组件的合作情况进行测试 在系统测试中 使用用例图 以检验所开发的系统是否满足例图所描述的需求 系统的配置是实际地交付系统 包括文档和组成模型等 127 实例 饮料自动售货机系统设置一个饮料自动售货机可以放置五种不同或部分相同的饮料 可由厂商根据销售状况自动调配 并可随时重新设置售价 但售货机最多仅能放置50罐饮料 其按钮设计在各种饮料样本的下方 若经金额计算器累计金额足够 则选择键灯会亮 若某一种饮料已销售完毕 则售完灯会亮 销售顾客将硬币投入售货机 经累加金额足额的饮料选择键灯亮 等顾客按键选择 顾客按键后饮料由取物楼掉出 并自动结算及找钱 取消交易顾客可在按下选择键前任何一个时刻 拉动退币杆取消交易收回硬币 128 步骤 1 找出对象及其关联 2 赋予类及关联的属性数据 3 组织类的结构 对象图 129 找出饮料自动售货机系统中的对象设置一个饮料自动售货机可以放置五种不同或部分相同的饮料 可由厂商根据销售状况自动调配 并可随时重新设置售价 但售货机最多仅能放置50罐饮料 其按钮设计在各种饮料样本的下方 若经金额计算器累计金额足够 则选择键灯会亮 若某一种饮料已销售完毕 则售完灯会亮 销售顾客将硬币投入售货机 经累加金额足额的饮料选择键灯亮 等顾客按键选择 顾客按键后饮料由取物楼掉出 并自动结算及找钱 取消交易顾客可在按下选择键前任何一个时刻 拉动退币杆取消交易收回硬币 130 饮料自动售货机系统对象图 贩卖机 饮料号码价格 投币 接受饮料掉出金额显示按纽退币杆售完显示 存量计算器 饮料号码存量 递减售完显示重置 选择钮 选择钮状态 灯亮灯熄售完灯亮按钮 顾客 姓名硬币 投币 置入拿取饮料 退币杆 退币杆状态 拉动 金额计算器 金额 累加找零重置 购买 选取 被拉动 属于 属于 属于 属于 131 建立数据字典为所有模型实体准备一个数据字典 精确描述每一个对象类 包括 成员约束关联 属性 操作 132 动态模型用来描述系统与时间相关的动态行为即系统的控制逻辑 表现对象彼此间经过相互作用后 随时间改变的不同运算顺序 动态模型以 事件 Events 和 状态 States 为其模型的主要概念 动态模型以状态图形式呈现 133 事件 瞬时发生的行为 引起对象状态转换的控制信息 事件类和属性举例 飞机起飞 航线 航班号 城市 按动鼠标按钮 按钮 位置 134 通话 只包括影响电话线的事件 17 打电话者挂断电话 16 电话切断 15 接电话者挂断电话 14 通电话 12 接电话者电话停止振铃 13 铃声在打电话者电话中消失 11 接电话者回答 10 铃声在打电话者电话传出 9 接电话者的电话开始振铃 8 打电话者拨数字 3 7 打电话者拨数字 7 6 打电话者拨数字 3 5 打电话者拨数字 2 4 电话忙音结束 3 打电话者拨数字 8 2 电话忙音开始 1 打电话者拿起听筒 135 状态 对象属性和对象关联的抽象形式状态的特征表示方法举例 状态 闹铃响描述 闹铃响表示预定时间到产生本状态的事件序列 设置闹钟 预定时间 不包括清除闹铃的任何后续操作当前时间 预定时间表征本状态的条件 闹铃 开 从预定时间起没有按键的情况下 目标时间 当前时间 目标时间 20秒本状态接受的各种时间 事件动作下一个状态当前时间 目标时间 20重新设置闹钟正常按下按钮 任意按钮 重新设置闹钟正常 136 动态模型表示方法 状态图状态和事件的网络 侧重描述每一类对象的动态行为 137 状态图例 状态1 Do 活动1 状态2 事件1 条件1 动作1 结束事件 初始事件 空闲 可视菜单 左边按钮按下 显示弹出菜单 左边按钮弹起 擦除弹出菜单 光标移动 高亮菜单项 弹出菜单动作 138 举例 饮料自动售货机系统的状态图 投入硬币 有效的 按下选择饮料键 Do 显示售货机在备用所有灯都关闭 Do 显示金额总数 Do 显示金额已够饮料选择灯亮 取出饮料结算找零扣减存量完成交易 饮料 售完 灯亮 投入硬币金额 1元 5元 10元 金额不足再投币 存量为零 无效的硬币 取消 取消 回到备用状态 回到备用状态 139 序列图举例 打电话的序列图 挂断电话 电话切断 挂断电话 通话 通话 停止振铃 停止振铃 响应电话 电话振铃 铃声 拨号 3 拨号 7 拨号 3 拨号 2 电话忙音结束 拨号 8 电话忙音开始 拿起听筒 电话线 接电话者 打电话者 140 存量为零 找零 扣减存量 灯亮 余额 饮料 结算 选择键 选择按纽 灯亮 金额总够 显示总额 总额 累加 投入硬币 金额计算器 存量计算器 顾客 售货机 选择键 举例 饮料自动售货机系统的序列图 售完灯 141 3 功能模型用来描述系统中数据的变换 传统DFD 控制流 对象A 对象B 过程1 过程2 数据存储区 控制流 数据流 142 步骤一 寻找类和对象 143 问题域描述中的名词 往往是候选的及对象 根据问题域结构可提取候选的类及对象 例 银行储蓄管理系统 144 与系统发生作用的其它系统和必要的设备可作为候选的类及对象 如 打印机等 分析阶段可不把与实现有关的计算机部件作为候选的类及对象 145 系统必须观测 记忆的与时间有关的事件可作为候选的类及对象 如 建立帐户的日期打开一个帐户等与系统发生交互的人及系统必须保留其信息的人 可作为候选的类及对象 如 柜员 储户等这些人所属的组织单位 可作为候选的类及对象 如 总行 分行等 146 系统必须记忆 且不在问题域约束中的顺序操作过程可作为候选的类及对象 如 柜员事务 远程事务等 其中属性是操作过程名 操作特权及操作步骤的描述 系统需了解掌握的物理位置 办公地点等可作为候选的类及对象 如 ATM机器 帐户等 147 2 审查和筛选 舍弃无用的类对象的精简只有一个属性的对象只有一个服务的对象推迟到OOD考虑的对象 148 帐册 上级系

温馨提示

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

评论

0/150

提交评论