逻辑架构与UML包图详解.ppt
《逻辑架构与UML包图详解.ppt》由会员分享,可在线阅读,更多相关《逻辑架构与UML包图详解.ppt(37页珍藏版)》请在装配图网上搜索。
第13章逻辑架构和UML包图 目标 介绍使用层的逻辑架构阐述使用UML包图的逻辑架构 简介 现在 我们就从面向分析的工作过渡到软件设计典型OO系统设计的基础是若干架构层 例如UI层 应用逻辑 或 领域 层等 UP制品相互影响 业务建模领域模型需求用例模型设想补充性规格说明词汇表设计逻辑架构的包图 静态视图 交互图 动态视图 类图 静态视图 UP制品相互影响 强调的是逻辑架构 LA 主要的输入是补充性规格说明中记录的架构方面的约束和要点LA定义了包 包中有关于软件类的定义 示例 逻辑架构 logicalarchitecture 逻辑架构是软件类的宏观组织结构 它将软件类组织为包 或命名空间 子系统和层等 为何称其为逻辑架构 因为并未决定如何在不同的操作系统进程或网络中物理的计算机上对这些元素进行部署 后一种决定是部署架构的一部分 层 Layer 层是对类 包或子系统的甚为粗粒度的分组 具有对系统主要方面加以内聚的职责 层按照 较高 层 例如UI层 可以调用 较低 层的服务OO系统中通常包括的层有 用户界面应用逻辑和领域对象技术服务 例如数据库接口或错误日志 独立于应用的 也可在多个系统中复用的服务 架构分层 在严格的分层架构中 层只能调用与其相邻的下层的服务 这种设计在网络协议栈中比较常见 而在信息系统中不太常见 在信息系统中通常使用宽松的分层架构 其中较高层可以调用其下任何层的服务例如 UI层可以调用与其相邻的应用逻辑层 也可以调用更下面的技术服务层中的元素 完成日志记录等工作逻辑架构并非一定要组织为层 但这种方式极为常用 案例研究中应该关注的层 尽管OO技术可以用于所有级别 但本课程对OOA D的介绍着重于核心应用逻辑 或 领域 层 其次才是对其他层的讨论 软件架构 软件架构 宏观 架构是一种重要决策 其中涉及软件系统的组织对结构元素及其组成系统所籍接口的选择这些元素特定于其相互协作的行为这些结构和行为元素到规模更大的子系统的组成以及指导该组织结构的架构风格 这些元素及其接口 协作 和组成 软件架构师是做什么的 软件架构师的职责是把需求转换为软件世界的模型 4 1视图中以usecase作为核心 其中功能性需求以及部分非功能性需求会被软件架构师通过分析和设计 映射为各种软件设计模型 从OOA OOD角度说 usecase在这个过程中是要转换为各种UML 其中类图 序列图 状态图是最常用到的 这个转换过程是需要智慧的 usecase是目的 各种OO的原则是指导 设计模式是经验 灵活运用是能力 里面蕴涵了设计的美感 我觉得这个过程是衡量一个软件架构师的最重要的指标 这个过程是需要创造力和想象力的 可能很多人认为这个地方正是软件架构师体现能力的地方 UML包图 UML包图通常用于描述系统的逻辑架构层子系统包 就Java 而言等层可以建模为UML包 例如 UI层可以建模为名为UI的包 UML包图 UML包图提供了组织元素的方式 类 其他包 用例 嵌套包十分常见UML包是比Java包和 NET命名空间更为通用的概念如果包内部显示了其成员 则在标签上标识包名 否则 可以在包体内标识包名称人们通常希望显示包之间的依赖性 耦合 以便开发者能够看到系统内大型事物之间的耦合 UML的依赖线即可用于此目的 依赖线是有箭头的虚线 箭头指向被依赖的包完全限定的名称例如Java util Date UML工具 从代码逆向工程产生包图 开发早期 根据绘制的UML包图的草图来组织代码 随着代码库的不断增长 编程上花费的时间更多 减少了建模或绘制UML图的时间 可以利用UMLCASE工具对源代码进行逆向工程 从而自动生成包图 准则 使用层进行设计 使用层时 将系统的大型逻辑结构组织为独立的 职责相关的离散层 具有清晰 内聚的关注分离 这样 较低 的层是低级别和一般性服务 较高的层则是与应用相关的 协作和耦合是从较高层到较低层进行的 要避免从较低层到较高层的耦合 设计问题 使用层有助于解决如下问题 源码的变更波及整个系统 大部分系统是高度耦合的 应用逻辑与用户界面交织在一起 因此无法复用于其他不同界面或分布到其他处理节点之上潜在的一般性技术服务或业务逻辑与更特定于应用的逻辑交织在一起 因此无法被复用 分布到其他节点或方便地使用不同实现替换不同的关注领域之间的高度耦合 因此难以为不同开发者清晰地界定和分配任务 典型的层 信息系统逻辑架构中常见的层 使用层的好处 关系分离 高级服务与低级服务分离 特定于应用的服务与一般性服务分离 层可以减少耦合和依赖性 增加内聚性 提高潜在的复用性并且使概念更加清晰封装和分解了相关的复杂性某些层能够使用新的实现替换 对于较低级的技术服务层或基础层来说不大可能 例如java util 但是对UI 应用层和领域层来说是可能的 较低层包含可复用功能某些层 主要是领域层和技术服务层 可以是分布式的 通过逻辑划分 有助于团队开发 准则 内聚职责 使关系分离 同一层内的对象在职责上应该具有紧密关联 不同层中对象的职责则不应该混淆例如 UI层中的对象应该关注于UI工作 例如创建窗口和小部件 捕获鼠标和键盘事件等 应用逻辑或 领域 层中的对象应该关注应用逻辑 例如计算销售总额或税金 或在棋盘上移动棋子 UI对象不应该处理应用逻辑 例如JavaSwingJframe 窗体 对象不应该包含计算税金或移动棋子的逻辑 而应用逻辑类不应该捕获UI鼠标或键盘事件 否则将违反关系分离和高内聚原则 这是基本架构原则 将代码组织映射为层和UML包 UI包com mycompany nextgen ui swingcom mycompany nextgen ui web 领域层 特定于NextGen项目的包com mycompany nextgen domain salescom mycompany nextgen domain payments 技术服务层 我们自己的持久 数据库 访问层com mycompany service persistence 第三方org apache log4jorg apache soap rpc 基础层 我们小组自己创建的基础包pany util Java中称为包packageC 和C 中称为命名空间namespace 领域层和领域模型之间的关系 领域层是软件的一部分 领域模型是概念角度分析的一部分 它们是不同的 利用来自领域模型的灵感创建领域层 可以获得在实现世界和软件设计之间的低表示差异 例如 领域模型中的Sale 领域层中创建的Sale软件类 层 层和分区 层 在架构中最初表示的是逻辑层 而不是物理节点 但是现在 这个词被广泛用于表示物理进程节点 或节点簇 例如 客户层 客户计算机 架构中的层表示对系统的垂直方向的划分 分区 表示对层在水平方向进行划分 形成相对平行的子系统 例如 技术服务层可以划分为安全和统计等分区 层和分区 准则 不要将外部资源表示为最底层 大部分系统依赖于外部资源或服务 例如MySQL库存数据库和NovellLDAP命名和目录服务 物理实现构件非逻辑架构中的层 将外部资源 如某个数据库 表示为 低于 例如 基础层 Foundation 的层 是对逻辑视图和架构部署视图的混淆 就逻辑架构及其层而言 对某个持久数据集合 例如库存数据 的访问可以视为领域层中的子领域 库存子领域 而提供数据库访问的一般性服务则可以视为技术服务分区 Partition 持久性服务 架构的混合视图 模型 视图分离原则 其他包应该对UI层具有何种可见性 非窗口类应该如何与窗口通信 模型 视图分离原则 原则 不要将非UI对象直接与UI对象连接或耦合 不要在UI对象方法中加入应用逻辑模型 领域层对象 如Sale Payment 视图 UI对象 如 窗口 web页 applet和reports报表 模型 视图分离原则 模型 视图分离原则规定 模型 领域 对象不应该直接与视图 UI 对象连接 对于视图对象也是如此 MVC M Model模型指领域层 数据对象 V View视图指UI层 GUI小部件 web页 C Control控制器指应用层的工作流对象 鼠标 键盘事件控制器 句柄 模型 视图分离原则 动机 支持内聚的模型定义 这些定义只关注领域过程 而不是用户界面 允许对模型和用户界面层分别进行开发 使界面的需求变更对领域层的影响最小化 允许新视图能够被方便地连接到现有的领域层之上 而不会对领域层产生影响 允许对同一模型对象同时使用多个视图 例如销售信息同时具有表格和业务图表视图 允许模型层的运行不依赖于用户界面层 例如 消息处理或批处理模式的系统 允许模型层能够简便地移植到另一个用户接口框架下 SSD 系统操作 层 SSD描述了系统操作 但是隐藏了特定的UI对象 系统UI层对象捕获系统操作请求 一般是富客户端GUI或Web页面- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 逻辑 架构 UML 详解
装配图网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文