




已阅读5页,还剩92页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件工程 UML概述马丽 UML面向对象分析与设计 UM把Booch Rumbaugh和Jacobson等各自独立的OOA和OOD方法中最优秀的特色组合成一个统一的方法 UML的特点 统一标准面向对象可视化 表示能力强大独立于过程容易掌握使用 UML的定义 UML定义有两个主要组成部分 语义 用自然语言描述表示法 定义UML的可视化标准表示符号使用UML时 要从不同的角度观察系统 为此定义了概念 视图 视图是对系统的模型在某方面的投影 注重于系统的某个方面 结构视图 行为视图 实现视图 环境视图 用例视图 为最终用户做什么 系统静态结构 程序员提供什么 软件组织与管理 系统集成人员如何组织与控制系统 系统工程师如何配置和运行系统 系统拓扑 交付 安装 操作 通信 分析员或测试员 系统任务控制与管理 性能 可伸缩性 吞吐量 行为 结构视图 描述系统的静态结构 可根据它确定重要的设计 类 包和子系统 实现视图 描述处于开发环境中的静态软件成分的组织 源程序 构件 数据文件 可执行程序等 行为视图 描述系统在运行时的并发性 包括任务 线程 进程及其相互作用 软件体系结构的4 1视图模型 环境视图 描述处于运行环境中的各种可执行程序是如何映射到底层平台或计算结点上的 用例视图 包括若干关键场景或用例 在初始和细化阶段用来帮助发现和设计体系结构 在构造阶段用来验证各种不同视图 在文档中用来表明其他视图是如何工作的 UML分析建模着重系统的用例模型和结构模型 设计建模着重行为模型 实现模型和环境模型上 体系结构中主要的元素包括 主要的类 如为业务实体建模的类 将行为赋予类的机制 如协同 模式与框架 层次与子系统 接口以及主要的进程控制或线程控制 UML的三个主要组成元素基本构造块组织构造块的规则运用于整个UML的公共机制 UML的构成 UML包括三种基本构造块 事物 关系和图 UML事物 结构事物 类 接口 描述一个类或构件的服务 操作 协作 描述合作完成某个特定任务的一组类及其关联的集合 用于对使用情形的实现建模 用例 表示系统想要实现的行为 不关心这些行为是怎样实现的 主动类 它至少拥有一个进程或线程 故能够启动控制活动 构件 系统中物理的 可替代的部件 节点 系统在运行时存在的物理元素 UML事物 行为事物 交互 由在特定环境中共同完成一定任务的一组对象之间交换的消息组成 状态机 描述了一个对象或一个交互在生存周期内响应事件所经历的状态序列 UML事物 分组事物 包 UML事物 注释事物 注释 依附于一个元素或一组元素之上 对其进行约束或解释的简单符号 UML关系 依赖 两个事物之间的语义关系 其中一个事物发生变化会影响另一个事物的语义 关联 一种描述一组对象之间连接的结构关系 聚合是一种特殊类型的关联 描述了整体和部分间的结构关系 泛化 一种一般化 特殊化的关系 实现 类之间的语义关系 其中的一个类指定了由另一个类保证执行的契约 两种情况出现实现关系 在接口和实现它们的类或构件之间 用例和它们的协作之间 模型中主要的图形元素 UML模型的图形 1 用例图 用例图展现了一组用例 参与者以及它们间的关系 可以用用例图描述系统的静态使用情况 它定义了系统的功能需求 但这是从系统的外部观看系统功能 并不描述系统内部对功能的具体实现 在对系统行为组织和建模方面 用例图的是相当重要的 用例规格说明 销售商品 2 类图 类图展示了一组类 接口和协作及它们间的关系 类图没有时间概念 是概念数据模型 如E R图 的一种延伸 用类图说明系统的静态结构视图 包含主动类的类图 专注于系统的静态处理视图 系统可有多个类图 单个类图仅表达了系统的一个方面 要在高层给出类的主要职责 在低层给出类的属性和操作 类图是从系统构成角度来描述系统 类的表示 限定关联 聚合 引用和重复度 关联名 类1 类2 角色1 角色2 关联类 泛化关系 3 对象图 对象图展示了一组对象及它们间的关系 用对象图说明类图中类的对象实例的数据结构和静态快照 即在某一时刻 一组对象的状态及其关系 对象图表达了系统的静态设计视图或静态过程视图 除了现实和原型的方面因素外 它与类图作用是相同的 4 包图 包图表明包及其之间的依赖类图 包是对模型中涉及的元素分组所得的结果 是具有特定语义的一个子集 必须保证低耦合 高内聚 广义地讲 包可以包含类 接口 构件 节点 协作 用例等 还可以内嵌其他子包 包之间的访问权限通过输出 输出品 和导入 进口货 设置 虚箭头从源包到目标包 5 构件图 构件图展现了一组构件之间的组织和依赖 用于对源代码 可执行的发布 物理数据库等的系统建模 构件图表示系统的静态实现视图 6 部署图 部署图展现了对运行时处理节点以及其中构件的配置每一节点代表一个计算单元 它描述系统硬件的物理拓扑结构 包括网络布局和构件在网络上的位置 以及在此结构上执行的软件 即运行时软构件在节点中的分布情况 用部署图说明系统结构的静态环境视图 即说明分布 交付和安装的物理系统 8 活动图 活动图是一种特殊的状态图 描述要做的活动 执行这些活动的顺序以及工作流 它对于系统的功能建模特别重要 强调对象间的控制流程 高层活动图用于表示任务 即用于分析用例 理解涉及多个用例的工作流 多线程及并行 显示相互联系的行为整体 还可用于业务过程建模 对系统的功能建模 低层活动图用于表示类的方法 9 状态图 状态图展示了一个特定对象的所有可能状态以及由于各种事件的发生而引起的状态间的转移 一个状态图描述了一个状态机 用状态图说明系统的动态视图 状态图对于接口 类或协作的行为建模尤为重要 可用它描述用例实例的生存周期 Project对象的状态图 10 交互图 交互图展现了按一定的目的进行一种交互 它由在一个上下文中的一组对象及它们之间交互的信息组成 交互图可用于描述一个用例的行为 顺序图和协作图都是交互图 它们可以相互转换 如果希望查看单个对象跨用例的行为 要使用状态图 如果希望查看跨用例跨线程的行为 要使用活动图 10 1顺序图 顺序图展现了一组对象和由这组对象收发的消息 用于按时间顺序对控制流建模 对象表述为虚垂线顶端的矩形小框 垂线是对象的生命线 说明对象的生命 生命线之间的箭头表示消息 消息出现的次序自上而下 消息箭头可以回到同一条生命线 指明自调用 即对象发给自己的消息 移动电话系统的用例图 移动电话系统的顺序图 10 2协作图 协作图展现了一组对象 这组对象之间的连接以及这组对象收发的消息 它强调收发消息的对象结构组织 按组织结构对控制流建模 协作图中的协作不是参与者与系统之间的交互 而是系统内部某一个用例中各个对象之间信息传递的方式 消息上所附编号指明执行顺序 移动电话系统的协作图 RUP RationalUnifiedProcess统一开发过程 的分析 设计工作流 分析和设计工作流的目的是研究欲采用的实现环境和系统构件的效用 定义软件的组织结构 把需求获取结果转化为实现规格 为实现这种转化 必须理解需求 采用最佳实现策略将其翻译为系统设计 为此 首先是建立健壮的软件体系结构 设计出易于理解 开发和演进的系统 然后调整这个设计 使之适应实现环境 最后结果是产生一个对象模型 即设计模型 定义一个初始的体系结构建立一个初始的系统体系结构草图 定义一组初始的重要体系结构元素 一组初始分析机制 系统的初始分层和组织 在当前迭代过程中处理的用例实现 从重要的构件用例中确定类 确定类之间的交互作用 修改用例实现 细化体系结构 建立从分析到设计的自然转移 并标识 从分析元素中确定适当的设计元素 从相关分析机制中确定适当的设计机制 保持体系结构的一致性和完整性 确保 将当前迭代中标识的新的设计元素与已有的设计元素集成在一起 在设计中尽早地 最大限度地复用可获得的构件和设计元素 描述系统运行的组织和实施体系结构 组织实现模型以实现设计到实现无缝转移 分析行为将用例提供的行为描述转变为一系列可作为设计基础的元素 在分析行为时 主要注重于如何能够提供要求的功能 较少关心系统的非功能需求 设计构件找出设计元素如何实现要求行为的细节 细化设计元素的定义 根据新的设计元素来细化和更新用例实现 当设计演进后 进行设计评审 设计实时构件在实时的或交互式的上下文中 使用封装制品作为主要的设计元素 设计实时构件与设计构件有相似的活动 但增加了封装设计活动 定义系统的并发控制线程和它们之间的协议 设计数据库在设计中标识永久类并设计适当的数据库结构来存储永久类 定义一种存储和检索永久数据的机制和策略 以满足系统的性能需求 分析和设计工作流中的关键制品 设计模型由类的协作构成 这些类的协作可能集成为包或子系统 包是对类的逻辑分组 是为了减少系统的复杂性 分析模型是设计的抽象和泛化 它提供系统的功能描述 忽略了系统如何工作的细节 软件体系结构文档涵盖系统不同的体系结构视图 实现工作流 实现工作流的目的是建立代码的分层结构 从构件 源文件 二进制文件 可执行文件或其他文件 角度来实现类和对象 对开发出来的构件进行单元测试 将个人和开发团队开发的结果集成到可执行系统中 单元测试仅对单个构件进行 集成测试和系统测试在测试工作流中执行 实现模型是在细化阶段通过不断迭代 不断使用更大规模的集成构造建立起来的 对于每一次迭代 要求做到 确定要实现哪一个子系统 以及在当前迭代中子系统的集成顺序 对于每一个子系统 确定实现每个类的顺序 以及子系统集成的计划 实现设计模型中的类和对象 包括编写源代码 改写已有构件 编译 链接和执行 及时反馈设计中可能的缺陷 修改有缺陷的源代码 进行单元测试以验证这些变更 最后进行代码评审 指定专人负责将所有新的和已变更的构件集成为一个新的实现子系统版本 在团队环境 集成将产生一系列构造 对每个构造由集成测试员进行集成测试 将发布的子系统集成到系统 最终的构造即为系统 由系统测试员进行系统测试 实现工作流的关键制品有 实现子系统构件和其他实现子系统的集成 它是将实现模型细分为更小的部分 并使其构造化 构件可以是一块程序代码 或是包含信息的文件 构件可以由其他构件聚合而成 集成构造计划定义构件和子系统的实现顺序 详细描述系统集成时要建立的构造 实现与设计的关系紧密 在设计元素和实现元素之间有非常明显的跟踪链接 创建良好设计的原则 设计原则1 分治软件系统分解为子系统分布式系统可以分解为客户机和服务器 系统可以分解为一系列子系统 子系统可以分解为一个或多个包 包可以分解为类 类可以分解为方法 设计原则2 尽可能增加内聚不同内聚类型 优先级从高到低排序功能内聚 模块只执行单一计算并返回结果 没有副作用 如函数过程 层内聚 相关服务放在一起 并有严格的层次结构 高层服务可访问低层服务 反之不可 如分层结构 通信内聚 访问或操作同一数据的过程放在一个类中 这些过程可以互相通信 如某个类设计 顺序内聚 存在一系列过程 其中一个过程向另一个过程提供输入 这些过程放在一起 形成顺序内聚 如消息序列 过程内聚 几个一次调用的过程放在一起 但其中一个过程的输出不一定是另一个过程的输入 形成过程内聚 如调用结构 时间内聚 程序执行过程中同一阶段内完成的操作放在一起 达到时间内聚 实用程序内聚 逻辑上不能纳入其他内聚类型的相关实用程序放在一起 形成实用程序内聚 如可复用的过程或类 设计原则3 尽可能降低耦合模块间存在相互依赖关系即为耦合 不同耦合类型从高向低排列有 内容耦合 一个构件在不被察觉的情况下修改另一个构件内部的数据 应始终避免 公共耦合 一组构件使用了全局数据 就产生公共耦合 应通过封装降低公共耦合 控制耦合 一个过程通过标志 开关或命令显式地控制另一个过程的动作 就产生控制耦合 降低的方法是采用多态操作 标记耦合 在一个操作的参数表中将类作为参数 就产生标记耦合 降低标记耦合的方法可以传递简单变量或使用接口做参数 数据耦合 在一个操作的参数表中用简单变量或简单的类 如string 作为参数 就产生数据耦合 应通过减少参数个数降低耦合 例程调用耦合 一个例程 或类操作 调用另一个例程 就产生例程调用耦合 如果出现例程调用序列 降低的方法是编写一个例程将这个调用序列封装起来 类型使用耦合 类将实例变量或本地变量声明为另一个类时 就产生类型 嵌套 使用耦合 降低该耦合的方法是将变量的类型声明为包含所需操作的最通用的类或接口 包含 引入耦合 当一个构件引入 import 一个包时就产生引入耦合 当一个构件包含 include 另一个构件时 就产生包含耦合 外部耦合 模块对外部系统 如操作系统 共享库或硬件有依赖关系时就产生外部耦合 可通过信息隐蔽减少这种依赖关系 设计原则4 尽可能提高抽象层次设计应隐藏或推迟考虑细节以降低复杂性 类是包含过程抽象的数据抽象 父类和接口可进一步提高抽象层次 类中公有操作越少 抽象程度越高 类中所有变量都是私有 抽象程度达到最高 抽象可确保在设计时不必关心不必要的细节 能把握问题的本质并做出重要的决策 设计原则5 尽可能提高可复用性 可以在算法 类 过程 框架和完整应用程序的级别上创建可复用性 复用构件的机制包括过程调用和继承父类 设计原则6 尽可能复用已有的设计和代码复用已有的设计是对可复用性设计的补充 通过复用可从以往对可复用构件的投资中获益 设计原则7 灵活性设计积极预测将来可能在实现和功能上的变化 并为此采取相应措施 在设计中引入灵活性的方法有 降低耦合并提高内聚 易于提高替换能力 建立抽象 创建有多态操作的接口和父类 不要将代码写死 消除代码中的常数 抛出异常 由操作的调用者处理异常 使用并创建可复用的代码设计原则8 预计过期积极预测将来可能在技术和运行环境上的变化 并为此采取相应措施 在设计中应遵循的预计过期的规则有 避免使用早期发布的技术避免使用针对特定环境的软件库避免使用软件库中未编档的或很少使用的功能避免使用小公司或可能不提供长期支持的公司提供的可复用构件或特殊硬件使用众多厂商支持的标准语言和技术设计原则9 可移植性设计 可移植性设计的主要目标是让软件在尽可能多的平台上运行 实现可移植性的规则有 避免使用特定环境的专有功能使用不依赖特定平台的程序设计语言小心使用可能依赖某一平台的类库了解其他语言可能依赖特殊硬件结构的功能和文本文件的差异设计原则10 可测试性设计设计时采取措施使得测试易于进行 可测试性设计的最重要的方法是保证代码的所有功能都能脱离图形用户界面执行设计原则11 防御性设计为提高可靠性 应确保不引入任何缺陷 能够处理其他代码不适当使用构件引起的问题 按契约设计是防御性设计技术 其核心思想 被调用操作为正常执行必须满足的前置条件 precondition 调用操作在调用一个操作时有责任确保该操作的前置条件成立 被调用操作正常执行所得到的结果即为后置条件 postcongdition 要求被调用操作在返回前有责任保证这些后置条件成立 被调用操作在执行时确保不会被修改的不变量 invariant 前置条件 后置条件和不变式都是布尔表达式 其计算结果为假 表示有错误发生 可以使用断言机制 在重要构件的边界 如层 应始终保留严格的断言检测 设计模式 设计模式是面向对象软件设计经验的总结 设计模式系统地命名 解释和评价了面向对象系统中的一个重要的和重复出现的设计 设计模式使人们可以简单方便地复用成功的设计和体系结构 设计模式描述了在特定场景下使用的解决一般设计问题的类和相互通信的对象 设计模式的四个基本要素 模式名用于描述模式的名字 说明模式的问题 解决方案和效果 问题说明在何种场合使用模式 要描述使用模式的先决条件和特定设计问题 解决方案描述设计的成分 它们之间的相互关系 各自的职责和合作方式 效果描述模式使用的效果 包括对时间和空间的衡量 以及对系统灵活性 可扩充性 可移植性的影响 设计模式的特性 灵活性设计模式应是精巧的解决方法 一般化设计模式不依赖于某一种特定的系统类型 程序设计语言或应用领域 已验证设计模式已在某些面向对象系统中实践并已通过测试 简单性设计模式通常较小 只有几个类 可复用可在设计层次 不是编码层次 应用于所有的系统 面向对象设计模式以面向对象的形式出现 设计模式的类型 依据设计模式工作目的不同 模式可分为创建型模式 Creationalpattern 结构型模式 Structuralpattern 行为型模式 Behavioralpattern 创建型模式与对象的创建有关 结构型模式处理类和对象的组合 将一组对象组合成一个大的结构 例如复杂的用户界面 行为型模式描述类或对象的交互和职责分配 定义对象间的通信和复杂程序中的流控 1 创建型模式 创建型模式描述怎样创建一个对象 它隐藏对象创建的具体细节 使用程序可不依赖具体的对象 因此当增加一个新对象时几乎不需要修改代码 创建型类模式将对象的部分创建工作延迟到子类 创建型对象模式将它延迟到另一对象中 这时 重点从定义固定的行为集合转向定义一个较小的基本行为集合 由这些行为可以组成许多更复杂的行为集合 模式的特点封装了系统中使用的类的具体信息 隐藏了这些类的实例如何创建 如何放在一起的 机制 系统关于这些对象所知道的只有由抽象类定义的接口 创建型类模式有FactoryMethod 工厂方法 创建型对象模式包括AbstractFactory 抽象工厂 Builder 生成器 Prototype 原型 Singleton 单件 四种模式 2 结构型模式 结构型模式处理类或对象的组合 即描述类和对象之间怎样组织起来形成大的结构 从而实现新的功能 结构型类模式采用继承机制来组合类 如Adapter 适配器 模式 结构型对象模式则描述了对象的组装方式 如Adapter 适配器 Bridge 桥接 Composite 复合 Decorator 装饰 Facade 外观 Flyweight 享元 Proxy 代理 等七种模式 3 行为型模式 行为模式涉及算法和对象之间职责的分配 行为模式不仅描述对象或类的模式 还描述它们之间的通信 行为模式刻划了在运行时难以跟踪的复杂的控制流 但这类模式把人们的注意力从控制流转移到对象间的相互联系 类行为模式使用继承机制在类间分派行为 如TemplateMethod 模板方法 和Interpreter 解释器 模式 对象行为模式使用对象复合而不是继承 描述对象如何协同完成预定任务 如ChainofResponsibility 职责链 Command 命令 Iterator 遍历器 Mediator 中介者 Memento 备忘录 Observer 观察者 State 状态 Strategy 策略 Visitor 访问者 等九种模式 面向对象测试 面向对象系统的测试与传统的基于功能的系统的测试之间存在很大差别 对象作为一个单独的构件一般比一个功能模块大 由对象到子系统的集成通常是松散耦合的 没有一个明显的 顶层 如果对象被复用 测试者无权进入构件内部来分析其代码 面向对象系统的测试可分为4个层次 测试与对象相关联的单个操作它们是一些函数或程序 传统的白盒测试和黑盒测试方法都可以使用 测试单个对象类黑盒测试的原理不变 但等价划分的概念要扩展以适合操作序列的情况 测试对象簇 聚集 严格的自顶向下或自底向上的集成不适合一组关联对象的情形 应使用基于场景的测试等其他方法 对象类测试 测试面向对象系统根据系统需求规格说明进行检验和有效性验证的过程可以像对其他范型的系统一样进行 在测试对象时 完全的覆盖测试应当包括 隔离对象中所有操作 进行独立测试 测试对象中所有属性的设置和访问 测试对象的所有可能的状态转换 所有可能引起状态改变的事件都要模拟到 对象类 作为在语法上独立的构件 应当允许用在不同的应用中 每个类都应是可靠的 并且不需了解任何实现的细节就能复用 因此 对象类应尽可能孤立地进行测试 设计操作的测试用例时需要注意 首先定义测试对象的各操作的测试用例 对于一个单独的操作 可通过该操作的前置条件选择测试用例 产生输出 让测试者能够判断后置条件是否能够得到满足 各个操作的测试与传统对函数过程定义的测试基本相同 然后再把测试用例组扩充 针对被测操作调用对象类中其他操作的情况 设计操作序列的测试用例组 测试可以覆盖每个操作的整个输入域 但这不够 还必须测试这些操作的相互作用 才能认为测试是充分的 各个操作间的相互作用包括类内通信和类间通信 在设计对象类的规格说明测试时需要注意 把对象类当做一个黑盒 确认类的实现是否遵照它的定义 对于 Stack 的测试应当确保LIFO原则得以实施 对于多数的对象类 主要检验在类声明的public域中的那些操作 对于子类 要检查继承父类的public域和protected域的那些操作 检查所有public域 protected域及private域中的操作以完全检查对象中定义的操作 等价划分的思想也可用到对象类上 将使用对象相同属性的测试归入同一个等价划分集合中 这样可以建立对对象类属性进行初始化 访问 更新等的等价划分 在设计对象类的行为测试时需要注意 基于对象的状态模型进行测试时 首先要识别需要测试的状态的变迁序列 并
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年单招综合素质测试题及答案
- 石油伴生气回收综合利用项目施工方案
- 堤顶防汛道路设计与施工优化方案
- 集装箱泊位建设工程施工方案
- 工业污水处理厂项目施工方案
- 城市综合体物业续约合同及环保服务标准
- 环保产业劳动合同签订与绿色产业发展战略
- 离婚协议书模板:房产、车辆及共同债务分割协议
- 《离婚协议书签订后变更与解除法律依据》
- 矿山开采项目竣工财务决算编制与审查服务合同
- 2025年未来就业报告
- 使用吹风机课件
- 安检流程课件
- 宠物经济下的宠物食品包装创新研究报告:2025年市场潜力分析
- 中国未来50年产业发展趋势白皮书(第四期)
- 2025年关于广告设计合同格式范本
- 基础电工安全培训课件
- 2025年财会类资产评估师资产评估基础-资产评估基础参考题库含答案解析(5卷)
- 公安宣传打击黄赌毒课件
- 法律顾问合同协议书模板
- 2025年淮南市潘集区公开招聘社区“两委”后备干部10名考试参考试题及答案解析
评论
0/150
提交评论