第5章 架构设计的5视图法

更新时间:2023-05-30 00:02:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

软件架构

《软件架构设计》温昱 电子工业出版社1第5章 架构设计的5视图法王建民 mcswjm@ 2010年1月20日5.1 架构设计的5视图法2软件需求具有复杂性; 功能需求、约束、运行期质量属性和开发期质 量属性等不同种类的需求对架构设计的影响是 截然不同的; 基于多视图的架构设计方法在一定程度上将各 类需求分别对待,通过不同的架构设计视图分 别满足它们,从而确保重要的需求一一被满 足;

软件架构

5.1 架构设计的5视图法3图5-1 架构设计的5视图方法5.1 架构设计的5视图法4逻辑架构:关注功能,不仅包括用户可见的功能,还包括 为实现用户功能而必须提供的“辅助功能模 块”;它们可能是逻辑层、功能模块和类等;

软件架构

5.1 架构设计的5视图法5开发架构:关注程序包,不仅包括要编写的源 程序,还包括可以直接使用的第三方SDK和现 成框架、类库,以及开发的系统将运行于其上 的系统软件或中间件。 开发架构和逻辑架构之间可能存在一定的映射 关系:比如逻辑架构中的逻辑层一般会映射到 开发架构中的多个程序包,再比如开发架构中 的源码文件可以包含逻辑架构中的一到多个 类;5.1 架构设计的5视图法6运行架构:关注进程、线程、对象等运行时概 念,以及相关的并发、同步、通信等问题。运 行架构和开发架构的关系: 开发架构一般偏重程序包在编译时期的静态依 赖关系,而这些程序运行起来之后会表现为对 象、线程、进程; 运行架构比较关注的是这些运行时单元的交互 问题;

软件架构

5.1 架构设计的5视图法7物理架构:关注“目标程序及其依赖的运行库和 系统软件”最终如何安装或部署到物理机器,以 及如何部署机器和网络来配合软件系统的可靠 性、可伸缩性等要求。 物理架构和运行架构的关系:运行架构特别关 注目标程序的动态执行情况, 而物理架构重视目标程序的静态位置问题:物 理架构还要考虑软件系统和包括硬件在内的整 个IT系统之间是如何相互影响的;5.1 架构设计的5视图法8数据架构:关注持久化数据的存储方案,不仅 包括实体及实体关系的数据存储格式,还可能 包括数据传递、数据复制和数据同步等策略。 数据架构和物理架构的关系:对于很多集成系 统,数据需要在不同系统之间传递、复制和暂 存,这往往要涉及到不同的物理机器:也就是 说,如果需要,可以把数据放在物理架构之中 考虑,以便体现集成系统的数据分布与传递特 征;

软件架构

5.1 架构设计的5视图法95视图架构设计方法的不同视图,所重点针对的需 求类型不同; 功能需求逻辑架构数据需求数据架构开发架构开发期质量属性物理架构安装和部署需求运行架构运行期质量属性图5-2不同视图所重点针对的需求类型不同5.1 架构设计的5视图法10逻辑架构的设计着重考虑功能需求---系统应当 向用户提供什么样的服务。 逻辑架构的关注点主要是行为或职责的划分; 如果使用UML来描述架构的逻辑架构,则该视 图的 静态方面由包图、类图、对象图来描述 动态方面由序列图、协作图、状态图和活动图 来描述

软件架构

5.1 架构设计的5视图法11开发架构的设计着重考虑开发期质量属性,例 如可扩展性、可重用性、可移植性、易理解性 和易测试性等。 开发架构的关注点是在软件开发环境中软件模 块的实际组织方式,具体涉及源程序文件、配 置文件、源程序包、编译后的目标文件和第三 方库文件等。 如果使用UML来描述架构的逻辑架构,则该视 图可能包括包图、类图和组件图等;5.1 架构设计的5视图法12运行架构的设计着重考虑运行期质量属性,例 如性能、可伸缩性、持续可用性和安全性等。 运行架构的关注点是系统的并发和同步等问 题,这势必涉及到进程和线程等技术。 如果使用UML来描述架构的运行架构,则该视 图的 静态方面由包图、类图和对象图等来说明关键 运行时概念的结构关系。 动态方面由序列图、协作图等来说明关键交互 机制;

软件架构

5.1 架构设计的5视图法13物理架构的设计着重考虑“安装和部署需求”。物 理视图描述运行软件的计算机、网络和硬件设 施等情况,还包括如何将软件包部署到这些硬 件资源上,以及它们运行时的配置情况。 物理架构的关注点是软件的目标单元如何映射 到硬件;另外,由于一部分运行时质量属性需 要硬件或网络的支持,所以物理架构还应关注 相关的可靠性、可伸缩性、持续可用性、性能 和安全性等方面。 如果使用UML来描述架构的运行架构,则该视 图可能包括部署图和组件图;5.1 架构设计的5视图法14数据架构的设计着重考虑“数据需求”。数据架构 的关注点是持久化数据的组织、数据传递、数 据复制和数据同步等策略。 数据架构的描述一般用E-R图和数据流图表示。 当采用UML时,可以用特定版型的UML类图替 代E-R图,采用带对象流的活动图替代数据流图。

软件架构

5.2 实践中的5视图法15在运用5视图方法进行架构设计时需注意两方面 的问题: 1. 不同软件架构视图之间是独立的吗? 不完全是。因为它们分别反映同一软件系统的 不同设计方面,它们最终合在一起才是完整的 架构设计方案,所以不同架构视图之间势必有 相互支撑的关系。 所谓保持架构视图之间的同步,就是要保证不 同视图之间是相互解释而不是相互矛盾的;5.2 实践中的5视图法162. 另一个是架构视图的数量问题。 视图间的同步是多视图方法的“开销”所在,故 而,应该限制软件架构视图的数量,对于不需 要的视图可以不用或者合并。例如:数据架构、 物理架构的取消,逻辑架构和开发架构合二为 一; 如果需要,也可以引入新的架构视图,从而更 加突出和明确地制定和表达特定方面的架构决 策。例如:安全架构视图。

软件架构

5.3 办公室里的争论:回顾与落实17涉众及视角 程序员说,软件架构就是要决定需要编写哪些类、使用哪 些现成框架 程序经理说,软件架构就是模块的划分和接口的定义 系统分析员说,软件架构就是为业务领域对象的关系建模相应的架构视图 开发架构 逻辑架构 逻辑架构配置管理员说,软件架构就是开发出来的以及编译过后的 软件到底是个啥结构 数据库工程师说,软件架构规定了持久化数据的结构,其 他一切只不过是对数据的操作而已 部署工程师说,软件架构规定了软件部署到硬件的策略 用户说,软件架构就是决定一个个功能子系统如何划分开发架构 数据架构 物理架构 逻辑架构5.4 案例:再谈设备调试系统18本章将根据架构设计5视图法的指导,继续把设 备调试系统的架构设计活动深入下去。《软件架构设计》温昱 电子工业出版社

软件架构

5.4.1 根据需求决定引入哪些架构视图19经过研制方和委托方的紧密配合,最终确定的 需求(经简化)可以总括地用下表来表示:非功能需求 约束 程序的嵌入式部分 必须用C语言开发 一部分开发人员没 有嵌入式开发经验 运行期质量属 性 高性能 开发期质量属性 易测试性功能需求察看设备状态 发送调试命令5.4.1 根据需求决定引入哪些架构视图20约束是必须遵守和考虑到的,每个架构设计视 图都应注意这一点; 高性能作为运行期质量属性需求,应多多研究 设备调试系统的运行时结构与交互,制定出高 性能所需的设计决策; 易测试性的确很有必要,毕竟牵扯到硬件设备 的问题,如果这次搞硬件的同事再迟迟交不出 合格的设备,软件这边的进度可不能跟着拖 延,所以要把与硬件相关和通信相关的模块都 独立出来。

软件架构

5.4.2 开发架构设计21软件架构的开发视图应当为开发人员提供切实 的指导。 任何影响全局的设计决策都应由架构设计来完 成,这些决策如果"漏"到了后边,最终到了大规 模并行开发阶段才发现,可能造成"程序员碰头 临时决定"的情况大量出现,软件质量必然将下 降甚至导致项目失败。5.4.2 开发架构设计22其中,采用哪些现成框架、哪些第三方SDK、 乃至哪些中间件平台,都应该考虑是否由软件 架构的开发视图确定下来。 图6展示了设备调试系统的(一部分)软件架构 开发视图: 应用层将基于MFC设计实现, 而通讯层采用了某串口通讯的第三方SDK。

软件架构

5.4.2 开发架构设计23图5-3设备调试系统的开发架构5.4.2 开发架构设计24再说说约束性需求。约束应该是每个架构视图都 应该关注和遵守的一些设计限制。 例如,考虑到“一部分开发人员没有嵌入式开发 经验”这条约束情况,架构师有必要明确说明系 统的目标程序是如何编译而来的:图7展示了整 个系统的桌面部分的目标程序pc-moduel.exe、 以及嵌入式模块rom- module.hex是如何编译而 来的。 这个全局性的描述无疑对没有经验的开发人员提 供了真实感,利于更全面地理解系统的软件架构。

软件架构

5.4.2 开发架构设计25pc-module.exe rom-module.hexVC++ projectC51 projectcpp文件某RS232 SDKc文件asm文件图5-4设备调试系统的开发架构5.4.3 运行架构设计26性能是软件系统运行期间所表现出的一种质量 水平,一般用系统响应时间和系统吞吐量来衡 量。 为了达到高性能的要求,软件架构师应当针对 软件的运行时情况进行分析与设计,这就是我 们所谓的软件架构的运行架构的目标。 运行架构关注进程、线程、对象等运行时概 念,以及相关的并发、同步、通信等问题。下 图展示了设备调试系统架构的运行架构。

软件架构

5.4.3 运行架构设计27应用层 《 a c tiv e 》 主窗口《消息》 通讯层《调用》《消息》 应用协议模块 《调用》 《 a c tiv e 》 R S 232通 讯 模 块R S 232异 步 通 讯 嵌入层R S232异 步 通 讯数据上传《 a c tiv e 》 中断服务程序图5-5《 a c tiv e 》 轮询 设备控制协议模 块设备调试系统的运行架构数据采集器设备5.4.3 运行架构设计28可以看出,架构师为了满足高性能需求,采用 了多线程的设计: 应用层中的线程代表主程序的运行,它直接利 用了MFC的主窗口线程。 无论是用户交互,还是串口的数据到达,均采 取异步事件的方式处理,杜绝了任何"忙等待"无 谓的耗时,也缩短了系统响应时间。

软件架构

5.4.3 运行架构设计29通讯层有独立的线程控制着"上上下下"的数据, 并设置了数据缓冲区,使数据的接收和数据的 处理相对独立,从而数据接收不会因暂时的处 理忙碌而停滞,增加了系统吞吐量。 嵌入层的设计中,分别通过时钟中断和RS232 口中断来激发相应的处理逻辑,达到轮询和收 发数据的目的。5.5 总结与强调30方法如路标,为我们的实践提供很多指导。 本章讲述的架构设计5视图方法包含下列5个架 构视图:逻辑架构视图、开发架构视图、运行 架构视图、物理架构视图、数据架构视图。 构成每个架构视图的元素不同,这些不同的元 素撑起了不同的思维空间,从而使每个架构视 图重点覆盖不同种类的需求。 最终,所有架构设计视图所表达的语义综合在 一起,就构成了软件架构设计方案。

软件架构

Questions?32《软件架构设计》温昱 电子工业出版社整理:网络工程 黎雄希 2010-01

本文来源:https://www.bwwdw.com/article/gc74.html

Top