第07章 软件体系结构设计_第1页
第07章 软件体系结构设计_第2页
第07章 软件体系结构设计_第3页
第07章 软件体系结构设计_第4页
第07章 软件体系结构设计_第5页
已阅读5页,还剩137页未读 继续免费阅读

下载本文档

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

文档简介

1、冯元勇 QQ: 462031289 手机:广州大学计算机科学与教育软件学院 QQ:4620312892 课前思考课前思考 n一级标题大小:28,文字大小:24 l二级文字大小:24 u最多三级,所有文字不得小于:20 u成句时应应有句号等结束符 u不成名时不带句结束符 QQ:4620312893 大纲 7.1 软件体系结构的概念软件体系结构的概念 7.2 体系结构的表示体系结构的表示 包图、构件图、部署图、对象图包图、构件图、部署图、对象图 7.3 体系结构设计的过程体系结构设计的过程 7.4 体系结构设计模式体系结构设计模式 7.5 概念设计概念设计 7.6 体系结

2、构精化体系结构精化 7.7 基于构件的体系结构基于构件的体系结构 7.8 体系结构验证体系结构验证 QQ:4620312894 软件体系结构的定义软件体系结构的定义 n软件体系结构(architecture,也称“架构”) 从高层抽象的角度刻画组成目标软件系统的设 计元素(包括子系统、构件及类)以及它们之 间的逻辑关联。 QQ:46203128952021-7-9 5 QQ:4620312896 体系结构设计的任务体系结构设计的任务 n建立满足软件需求的软件体系结构 l既要明确定义软件各子系统、构件、关键类的职责职责 划分划分及协作关系,也要描绘它们在物理运行环境下 的部署模型 l还必须针对软

3、件系统全局性、基础性全局性、基础性的技术问题给 出技术解决方案,这种方案构成目标软件系统的技 术基础设施 2021-7-9 7 可信计算终端系统平台安全体系结构可信计算终端系统平台安全体系结构 QQ:4620312898 体系结构的重要性体系结构的重要性 n软件规模日益庞大复杂、交付时间日益紧迫、详细设计 和软件实现技术日益成熟,体系结构设计已经成为软件 质量的瓶颈。 n与详细设计相比,体系结构设计对性能、灵活性、可修 改性、可扩充性等质量需求的影响是全局性的、决定性 的。 n一旦启动基于体系结构的详细设计,对体系结构进行调 优的代价将远大于算法调优的代价。 QQ:4620312899 本章试

4、图回答的问题本章试图回答的问题 n如何合理划分模块? n如何确保体系结构满足软件需求? l在大型软件项目中,需求如此之多,如何基于需求 推导体系结构,如何确保体系结构满足软件需求, 尤其是非功能需求? n软件体系结构设计的过程及方法学有哪些? QQ:46203128910 7.1 软件体系结构的概念软件体系结构的概念 n本节介绍: n什么是软件体系结构 n体系结构与需求 n体系结构设计与详细设计的关系 n从多种视角探讨软件体系结构的不同表现形式 QQ:46203128911 7.1.1 何谓体系结构何谓体系结构 n软件体系结构包括三大要素: l组件(component) l连接件(connec

5、tor) l约束(constraints) n连接件表示组件之间的连接和交互关系 n约束表示组件中的元素应满足的条件,以及组 件经由连接件组装成更大模块时应满足的条件。 QQ:46203128912 图图7.12 家庭保安系统的体系结构雏形家庭保安系统的体系结构雏形 QQ:46203128913 软件体系结构举例:家庭保安系统软件体系结构举例:家庭保安系统 n组件 l划分为界面、核心和物理设备接口三个层次 l核心层(业务逻辑层) u负责存储所有业务数据并提供业务逻辑处理功能 l界面层 u负责向用户呈现家庭保安系统的操作界面,接收用户的界 面输入并将其转换为内部事件传递给核心层 l物理设备接口层

6、 u应核心层的要求向传感器、报警器、报警电话等物理设备 发送必要的控制指令,也负责接收来自传感器的监测数据 QQ:46203128914 软件体系结构举例:家庭保安系统软件体系结构举例:家庭保安系统 n约束 l位于较高层次的软件元素可以向低层元素发出服务 请求,低层元素完成计算后向高层元素发送服务应 答,反之不行; l每个软件元素根据其职责位于最恰当的一个层次当 中,不可错置(如,核心层不能包含界面呈现和界 面输入接收职责,也不能直接与物理设备交互); l每个层次都可替换。即,一个层次可以被能实现同 样对外服务接口的层次所替代。 QQ:46203128915 体系结构与软件需求的关系体系结构与

7、软件需求的关系 n软件需求是体系结构的基础和导引 l体系结构是以软件需求的实现为目标的软件设计蓝 图,软件需求是体系结构设计的基础和驱动因素。 l软件需求,尤其是非功能需求,对软件体系结构具 有关键性的塑形作用。 QQ:46203128916 体系结构设计与详细设计的关系体系结构设计与详细设计的关系 n详细设计是体系结构的实现 l详细设计是针对软件体系结构中某个未展开模块的 局部设计,必须遵循体系结构中规定的原则、接口 及约束 l详细设计只能实现、不能更改体系结构中规定的模 块的对外接口和外部行为; l软件体系结构必须为详细设计提供可操作的指导和 充分的约束。 QQ:46203128917 7

8、.1.2 体系结构视图体系结构视图 完整的软件体系结构应该包含以下视图: n逻辑视图 n开发视图 n物理视图 n运行视图 n数据视图 QQ:46203128918 7.1.2 体系结构视图体系结构视图 完整的软件体系结构应该包含以下视图: n逻辑视图 n开发视图 n物理视图 n运行视图 n数据视图 表述体系结构中各软件模块的逻 辑功能划分(或曰职责分派),以 及基于这种划分的协作行为。 逻辑视图的示例见前文中的图 7.12。 QQ:46203128919 7.1.2 体系结构视图体系结构视图 完整的软件体系结构应该包含以下视图: n逻辑视图 n开发视图 n物理视图 n运行视图 n数据视图 表述

9、软件源代码的程序分包及目 录结构,采用的类库、中间件或框 架(framework),以及它们与逻辑 视图中各模块之间的映射关系。 开发视图的示例见后文中的图 7.19。 QQ:46203128920 7.1.2 体系结构视图体系结构视图 完整的软件体系结构应该包含以下视图: n逻辑视图 n开发视图 n物理视图 n运行视图 n数据视图 表述系统中安装部署的物理机器 及其网络连接,逻辑视图及开发视 图中模块或程序包的物理部署位置。 开发视图的示例见后文中的图7.20。 QQ:46203128921 7.1.2 体系结构视图体系结构视图 完整的软件体系结构应该包含以下视图: n逻辑视图 n开发视图

10、n物理视图 n运行视图 n数据视图 软件运行时进程、线程的划分, 它们之间的并发与同步,瞬时快 照(软件运行过程中某个特定时 刻活跃的对象及其协作关系), 以及它们与逻辑视图和开发视图 之间的映射关系。 QQ:46203128922 7.1.2 体系结构视图体系结构视图 完整的软件体系结构应该包含以下视图: n逻辑视图 n开发视图 n物理视图 n运行视图 n数据视图 持久数据的存储方案,数据传递、 备份、恢复、同步方案,与物理 视图之间的映射关系。 QQ:46203128923 大纲 7.1 软件体系结构的概念软件体系结构的概念 7.2 体系结构的表示体系结构的表示 包图、构件图、部署图、对象

11、图包图、构件图、部署图、对象图 7.3 体系结构设计的过程体系结构设计的过程 7.4 体系结构设计模式体系结构设计模式 7.5 概念设计概念设计 7.6 体系结构精化体系结构精化 7.7 基于构件的体系结构基于构件的体系结构 7.8 体系结构验证体系结构验证 QQ:46203128924 7.2 体系结构的表示体系结构的表示 n逻辑视图 l主要为包图和构件图,有时还辅以类图 n开发视图 l可能会用到包图 n物理视图 l显然应表示为部署图 n运行视图 l因为涉及到并发、同步以及软件运行过程中的瞬时快照,所以 它应表示为活动图与对象图 n数据视图 l一般表示为类图或者实体-关系图 QQ:46203

12、128925 7.2.1 包图包图 n包 l刻画了包之间的构成和依赖关系。 l可以包含一组具有逻辑关联的UML模型元素(例如 用例、类等)、模型图(例如用例图、类图、交互 图、状态图、活动图等),以及其他的包。 l包是配置管理的基本单元,同时也为访问控制提供 基本手段。 QQ:46203128926 7.2.1 包图包图 n作用 l在整个软件开发过程中在整个软件开发过程中,包图用于以结构化、层次 化的方式组织、管理大型软件模型,使得分别处理 不同包的开发团队之间相互干扰程度降至最低: u在业务分析和需求定义阶段 包图可用于刻画业务系统和用户需求的结构 u在设计和实现阶段 包图可用于描述软件系统

13、的高层结构 QQ:462031289272021-7-9 图图7.19 包图示例包图示例 QQ:46203128928 包图的布局规则包图的布局规则 n类包图 l采用垂直分层布局,即,沿垂直方向绘制依赖关系 边,位于同一层次的包水平对齐,最面向用户的包 位于顶层,面向系统内部后台处理的包位于底层。 n用例包图 l采用水平布局,主动执行者、被动执行者分置于图 的左、右两侧。 QQ:46203128929 包的划分规则包的划分规则 n类包图 l在同一继承结构中出现的类应位于同一包; l存在聚合或组合关系的类应位于同一包; l相互间密切协作的类应位于同一包。 n用例包图 l相互关联的用例(扩展用例与

14、被扩展用例,包含用 例与被包含用例、泛化用例与特化用例)应位于同 一包; l同类执行者使用的用例应尽量位于同一包。 QQ:46203128930 7.2.2 构件图构件图 n构件 l是可分离的物理模块,具有精确定义的对外接口, 外界只能通过接口来访问它 QQ:46203128931 7.2.2 构件图构件图 n构件的特点 l构件是可分离的 l构件是可替换的 l构件是可配置的 u部署至运行环境之后,外界可以通过配置机制修改构件的 配置数据,影响构件的对外服务的功能或行为 l构件一般具有较好的可复用潜力 u可不经源代码修改可不经源代码修改,即可应用于多个软件项目或软件产品 u这是因为构件可通过配置

15、信息来适应不同的应用场景 u同时也因为构件创立时便考虑了不同应用场景下的复用 图7.2 某个软件系统 中主要构件之间关 系的构件图 图7.3 其中Customer构件的内部 结构图 2021-7-9 32 QQ:46203128933 (一)(一) 构件及其表示构件及其表示 n接口 l是一组操作 和/或 属性的说明(不含操作的实现), 用作服务提供方和使用方之间的协议。 l由类或构件实现。 l构件最关键的特征通过接口体现,包括 u对外提供的供给接口供给接口(provided interface), u请求其他类、构件或软件模块提供帮助时使用的需求接口需求接口 (required interfa

16、ce)。 QQ:46203128934 (一)(一) 构件及其表示构件及其表示 n通过接口实现信息隐藏 l构件的实现者可以自由选择实现方法,只要它完整 地实现了供给接口中规定的操作及属性即可 l其他软件模块对它的访问必须通过它的供给接口来 进行 l构件的使用者只需要了解其供给接口,构件的服务 提供者只需要了解其需求接口,决不需要了解构件 的内部实现 l只要构件的两种实现遵循相同的接口定义,那么它 们就一定是可自由替换的 QQ:46203128935 (一)(一) 构件及其表示构件及其表示 n端口 l构件还可以定义一些端口,每个端口绑定了一组一组供 给接口和/或需求接口 l对于具有端口的构件,它

17、通过端口与外部世界交互通过端口与外部世界交互 u当外部请求到达端口时,构件的端口知道如何将外部请求 路由至合适的接口的实现体 u当构件通过端口请求外部服务时,端口也知道如何分辨该 请求所对应的需求接口 l针对构件的每个接口和端口,可以通过自然语言描 述、用例图或状态图来定义其使用方法 QQ:46203128936 图图7.4 构件的表示图元构件的表示图元 (a)最简化的三种图元 (隐藏接口部分) (b)构件及其接口的两种表示方法 2021-7-9 36 (c)构件端口的表示方法 QQ:46203128937 (二)构件图(二)构件图 n构件图的结点:构件、类和包 n构件图的边:与普通类图的边没

18、有严格区分 n构件图的关系:构件、类和包之间的依赖关系,偶尔 也可以出现继承关系和实现关系 n构件间依赖关系的实现: l可以直接搭建于这两个构件之间 l也可以搭建于一个构件与另一构件的供给接口之间 l还可以描述成一个构件的需求接口与另一构件的供 给接口之间的依赖关系,见图7.2。 QQ:46203128938 (三)(三) 构件定义图构件定义图 n描述一个构件的内部结构。 l它可以包含多个子构件,每个子构件的需求接口 u要么由另一子构件的供给接口负责实现 u要么经由父构件的需求接口请求外部支援 u示例见图7.3 l一个子构件的供给接口对另一子构件的需求接口的 实现通过两种图元之间的衔接来表示。

19、 l在构件定义图中,父构件的端口与其外部接口之间 的无向边表示端口是由哪些接口构成的。 QQ:46203128939 (三)(三) 构件定义图构件定义图 n委托连接器 l指子构件端口与父构件端口之间的有向边有向边 l当子构件未定义端口时,委托连接器表现为子构件 的图元与父构件端口之间的有向边 l委托连接器指明了构件与外部世界之间的交互信息 如何经由父构件的端口到达内部子构件的接口或端 口,也指明了内部子构件的服务请求如何经由父构 件的端口到达外部世界中的服务提供方。 QQ:46203128940 7.2.3 部署图部署图 n部署图 l表示软件系统的可执行工件(artifact)在运行环境中的分

20、布情况 l工件是指软件系统中相对独立的物理实现单元,例如Windows平 台下的动态链接库(DLL)文件、Java系统中的类库(jar)文件 n部署图的作用 l为软件配置管理工程师确定软件发布版本的封包方法提供依据 l是软件安装、维护工程师了解系统部署状况的主要信息源 l也是软件设计、实现人员理解软件运行环境、确定软构件划分的 重要参考 QQ:46203128941 两种部署图两种部署图 n描述性部署图 l描述软件的逻辑布局 l示例见图7.5 描述性部署图示例 n实例性部署图 l在描述性部署图的基础上针对具体的运行环境和特 定的系统配置描述软件系统的物理部署情况 l示例见图7.6 实例性部署图

21、示例 QQ:462031289422021-7-9 42 图图7.5 描述性部署图示例描述性部署图示例 QQ:462031289432021-7-9 43 图图7.6 实例性部署图示例实例性部署图示例 QQ:46203128944 (一)(一) 描述性部署图描述性部署图 n描述性部署图的四种结点 l计算资源(结点) u软件运行环境中的一组计算资源 u如,客户端计算机、Web服务器、应用服务器 u软件工件驻留其中,依赖基础服务来实现工件的功能 l工件 u以构造型标识 l构件 u不需要将所有的构件引入至部署图,仅显示相关的、重要 的构件即可 l用例执行者 u意在强调执行者与工件之间的使用关系及信息

22、交互 QQ:46203128945 (一)(一) 描述性部署图描述性部署图 n描述性部署图的四种边 l结点之间的通信关联 u表示两个结点间的通信连接 u可以在通信关联边上以构造型说明通信协议及其他约束, 还可以标注结点之间的数量对应关系 l工件之间的依赖关系 u如果工件定义了对外接口,那么软件设计人员应确保工件 之间的依赖关系表现为工件接口上的依赖关系 l工件与构件之间的依赖关系 u表示工件具体实现了构件 u在该依赖关系之上需标注构造型 l用例执行者与工件之间的依赖关系 u表示执行者使用工件提供的服务(从执行者指向工件) u或工件使用执行者提供的服务(从工件指向执行者) QQ:46203128

23、946 (二)(二) 实例性部署图实例性部署图 n实例性部署图与描述性部署图之间的关系可类比为对象 图与类图之间的关系。 n在实例性部署图中结点的命名方式为 n “结点名: 类型名” n 其中类型名为描述性部署图中的结点名。 n如果实例性部署图中的结点包含了描述性部署相应结点 中的所有工件,则不必在该结点中再列举这些工件。 n实例性部署图的结点还可包含对工件的具体配置信息的 描述,见图7.6中的结点“customerDeploy.xml”。 QQ:46203128947 7.2.4 对象图对象图 n对象图是软件系统中某些对象在运行过程中的 瞬时快照 QQ:46203128948 大纲 7.1

24、软件体系结构的概念软件体系结构的概念 7.2 体系结构的表示体系结构的表示 包图、构件图、部署图、对象图包图、构件图、部署图、对象图 7.3 体系结构设计的过程体系结构设计的过程 7.4 体系结构设计模式体系结构设计模式 7.5 概念设计概念设计 7.6 体系结构精化体系结构精化 7.7 基于构件的体系结构基于构件的体系结构 7.8 体系结构验证体系结构验证 QQ:46203128949 7.3 体系结构设计的过程模型体系结构设计的过程模型 n任务 l建立高层结构,确定 u所有重要模块重要模块 u模块职责划分及协作关系职责划分及协作关系 n目标 l具有优良的性能 u包括正确性、可扩展性、可伸缩

25、性、可行性等方面 QQ:46203128950 体系结构设计的过程模型体系结构设计的过程模型 分为两个阶段 n初步设计 l仅针对软件需求模型中的部分关键需求项部分关键需求项来构思体 系结构的雏形 l关键需求项是指对用户满意度及软件结构均有重要 影响的需求项 l“20-80规则” :20%的关键需求项决定80%的体系 结构形态 n精化 l全面地考虑全面地考虑所有的软件需求项、丰富体系结构雏形 的细节并且对其进行调优 QQ:46203128951 体系结构设计过程的主要活动体系结构设计过程的主要活动 n概念设计 l选择一种体系结构,合理、充分优化地实现关键需求 n体系结构精化 l精化体系结构 u并

26、用逻辑视图表达 u根据具体情况,还应从开发视图、运行视图、物理视图、数据视 图等多视角描述 l该过程也是需求导向的 u应合理、充分优化的方式完整地实现软件需求模型 n体系结构验证 l重新审视所有软件需求项的实现方案,研究如何化解迄今标识 出来的所有重要的全局风险,在此过程中验证体系结构的合理 性和充分优化性 QQ:46203128952 图图7.8 体系结构设计工作流体系结构设计工作流 n同样地,大型软件体系结构可迭代设计: l验证中发现的问题要返工返工 u返至概念设计或精化阶段 l重要的需求项优先设计 u分别针对不同的需求项针对不同的需求项依次进行概念设计、体系结构精化 和验证,然后进行体系

27、结构的集成 QQ:46203128953 大纲 7.1 软件体系结构的概念软件体系结构的概念 7.2 体系结构的表示体系结构的表示 包图、构件图、部署图、对象图包图、构件图、部署图、对象图 7.3 体系结构设计的过程体系结构设计的过程 7.4 体系结构设计模式体系结构设计模式 7.5 概念设计概念设计 7.6 体系结构精化体系结构精化 7.7 基于构件的体系结构基于构件的体系结构 7.8 体系结构验证体系结构验证 QQ:46203128954 7.4 体系结构设计模式体系结构设计模式 7.4.1 何谓设计模式何谓设计模式 n设计模式 l以设计复用复用为目的,采用一种良好定义的、正规的、 一致的

28、方式记录的软件设计经验。 l它是某种成熟的解决方案 u每条模式关注在一般或特定设计环境中可能重复出现的设 计问题,并给出经过充分实践考验的软件解决方案。 n设计模式的意义和价值 l以标准并且规范的方式记录软件设计经验,支持软 件设计级复用 QQ:46203128955 设计模式包含的内容设计模式包含的内容 n名称 l要反映模式蕴含的设计经验,体现与其它已有模式 的关系 n问题 l描述模式解决的设计问题,包括问题的背景 n施用条件 l描述在何种条件下才推荐使用该模式解决上述问题, 以及在使用本模式之前必须考虑的约束条件 n解决方案 l设计模式的主体部分,描述问题的软件解决方案 QQ:462031

29、28956 设计模式包含的内容设计模式包含的内容(2) n效果 l描述该方案导致的正面及负面的设计效果 n示例代码 l应用本模式的示例代码 n关联模式 l说明本模式继承或扩展了哪些模式,与哪些模式关 联 n可视情况适当取舍 l但名称、解决方案和效果名称、解决方案和效果是不可或缺的 QQ:46203128957 设计模式的分类设计模式的分类 n按解决方案的抽象程度来分(高至低) l体系结构设计模式 u面向整个软件系统或规模较大的软件子系统 u定义子系统或构件的职责、协作方式的规则或指南 l软件子系统或构件设计模式 u面向中等规模的软件子系统或构件,独立于程序设计语言, 给出内部的软件元素的结构化

30、组织方式 u在面向对象环境中,类图表示关系、交互图表示协作途径 l面向软件实现的设计模式 u针对软件子系统或构件中的某个特定问题,描述如何利用 特定的程序设计语言的具体特征来解决此问题。 u此类模式不影响软件结构 QQ:46203128958 设计模式的分类设计模式的分类 n(2)按模式解决的设计问题的类别来分 l创建型模式(工厂方法模式、生成器模式) u专门解决复杂对象的创建问题 l结构型模式(adpter适配器模式、Bridge桥接模式) u分解为粒度更小的软件元素,规定其职责和协作方式 l行为型模式(Interpreter解释器、Iterator迭代) u侧重描述软件元素间的通信及控制流

31、模式 l分布型模式(客户机/服务器构架) u为分布于网络中的软件系统提供系统结构和远程互操作方法 l适应性模式(微核模式) u针对扩展、改进、演进、变更等设计问题提供软件解决方案 l访问控制模式(MVC) u针对构件、软件服务或共享资源的访问控制问题提供软件解 决方案 QQ:46203128959 设计模式的分类设计模式的分类 n(3)按照模式基于的计算平台类别来分 l独立于计算平台的设计模式 l面向特定计算平台的设计模式 u如J2EE、.NET等 QQ:46203128960 7.4.2 通用的体系结构模式通用的体系结构模式 n体系结构模式是专门针对体系结构设计问题的 设计模式,是软件体系结

32、构设计的经验结晶。 本节内容: n分层模式 n管道与过滤器模式 n黑板模式 QQ:46203128961 (一)分层模式(一)分层模式 n逐层抽象递减或北增 n上层使用下层提供的服务 n一般而言 l顶层:直接面向用户提供交互界面 l底层:负责提供基础性、公共性的技术服务 u比较接近于硬件计算环境、操作系统或数据库管理系统 QQ:46203128962 层次之间的连接有两种形态层次之间的连接有两种形态 n高层构件向低层构件发出服务请求 l低层构件在计算完成后向请求者发送服务应答 l在此过程中,低层构件可能向更低层构件发送抽象 级别更低、粒度更细的服务请求 n低层构件主动通知高层构件 l低层构件在

33、主动探测或被动获知计算环境的变化事 件后通知高层构件 l这种通知链可能一直延伸到最高层以便软件系统向 用户报告,也可能中止于某个中间层次。 QQ:46203128963 层次间服务接口的两种组织方式层次间服务接口的两种组织方式 n 层次中的每个提供服务的构件公开其接口 n 将这些接口封装于层次的内部,每个层次提供统一 的、整合的服务接口 n前一种方式对上层服务请求者更直接,服务提供者所在 层次的透明度也较高 n后一种方式降低了两个层次之间的耦合度 n合理地确立一系列抽象级别是采用分层模式进行体系结 构设计的关键 QQ:46203128964 分层模式的优点分层模式的优点 n松耦合 n易替换 n

34、易复用 n易标准化 l例如,ISO七层网络协议模型、POSIX接口标准、 Java虚拟机(JVM)标准在各自领域的标准化进程 中发挥了关键性作用 QQ:46203128965 分层模式的缺点分层模式的缺点 n会引起性能方面的开销 l高层功能可能需要逐层调用下层服务,返回值、报 错信息又需逐级上传,这种过程一般会比直接实现 高层功能更耗时 l如果低层服务还完成了最初的服务请求者所不需要 的冗余功能,那么性能损耗就会更严重 QQ:46203128966 (二)管道与过滤器模式(二)管道与过滤器模式 n将软件系统功能实现为一系列处理步骤 l每个步骤封装在一个过滤器构件中 n相邻过滤器之间以管道连接

35、l一个过滤器的输出数据借助管道流向后续过滤器, 作为其输入数据 QQ:46203128967 过滤器与管道之间的协作方式过滤器与管道之间的协作方式 n主动过滤器 l过滤器不断从管道中提取输入数据,并将输出数据压入管道 n被动过滤器 l管道将数据压入位于过滤器,过滤器被动地等待输入数据 n管道负责提取位于其源端的过滤器的输出数据 n过滤器的连接 l如果管道连接的两端均为主动过滤器,那么管道必须负责它们 之间的同步,典型的同步方法是先进先出缓冲器 l如果管道的一端为主动过滤器,另一端为被动过滤器,那么管 道的数据流转功能可通过前者直接调用后者来实现 QQ:46203128968 管道和过滤器模式的

36、特点管道和过滤器模式的特点 n长处 l可以通过升级、更换部分过滤器构件,及处理步骤 的重组,实现软件系统的扩展和进化 n不足 l仅适合采用批处理方式的软件系统,不适合交互式、 事件驱动式系统 QQ:46203128969 (三)黑板模式(三)黑板模式 n将软件系统划分为黑板、知识源和控制器三类 构件 黑板负责保存问题 求解过程中的状态 数据,并提供这些 数据的读写服务 知识源负责根据黑板中存储 的问题求解状态评价其自身 的可应用性,进行部分问题 求解工作,并将此工作的结 果数据写入黑板 控制器负责监视黑 板中不断更新的状 态数据,安排(多 个)知识源的活动 QQ:46203128970 黑板模

37、式的典型动作过程黑板模式的典型动作过程 n根据状态选取知识源 l控制构件观察黑板中的状态数据,决定哪些知识源对后续的问 题求解可能有贡献,然后调用这些知识源的评价功能,进一步 选取参与下一步求解活动的知识源。 n问题求解,更新状态 l被选中的知识源基于黑板中的状态数据将问题求解工作向前推 进一步,并根据此步骤的结果更新黑板中的状态数据 n重复,直到问题解决 l控制构件不断重复上述控制过程,直至获得满意或比较满意的 结果 QQ:46203128971 黑板模式的特点黑板模式的特点 n适合于没有确定的求解方法的复杂问题 n长处 l黑板模式的知识源和控制构件可灵活更换可灵活更换、升级,支持采用不 同

38、的知识源、不同控制算法来试验各种问题求解方法 l知识源之间没有互操作,知识源与控制构件和黑板之间均通过 良好定义的接口进行交互,知识源的复用性较好知识源的复用性较好 l知识源的问题求解动作是探索性的问题求解动作是探索性的,允许失败和试错,采用此 模式的软件系统具有较好的容错性和健壮性 n不足 l问题求解性能较低性能较低、有时无法预测求解时间 l不能确保获得最优解 l知识源和控制器两种构件的开发困难 l问题求解路径不确定,软件测试困难软件测试困难 QQ:46203128972 大纲 7.1 软件体系结构的概念软件体系结构的概念 7.2 体系结构的表示体系结构的表示 包图、构件图、部署图、对象图包

39、图、构件图、部署图、对象图 7.3 体系结构设计的过程体系结构设计的过程 7.4 体系结构设计模式体系结构设计模式 7.5 概念设计概念设计 7.6 体系结构精化体系结构精化 7.7 基于构件的体系结构基于构件的体系结构 7.8 体系结构验证体系结构验证 QQ:46203128973 7.5 概念设计概念设计 n主要目标 l根据关键需求确定初始的软件体系结构雏形 n方法 l首先从软件需求模型中甄别出关键的软件需求项 l然后借鉴体系结构模式确定适合于实现这些需求项 的体系结构雏形 QQ:46203128974 7.5.1 关键需求辨识关键需求辨识 n辨识关键功能需求项关键功能需求项的主要方法 l

40、确定核心或基础性功能 u其它功能依赖于这些功能,或仅当这些功能实现之后其它 功能才有意义 l确定为实现对外接口所必需的支持功能 l标识实现难度较大、实现风险较高的功能 l确定最能体现待开发软件特色的功能需求 l确定前述类别没有覆盖,但对用户满意度影响甚巨 的功能需求 l剔除对体系结构塑形无贡献的功能需求项 QQ:46203128975 7.5.1 关键需求辨识关键需求辨识 n辨识关键质量需求项关键质量需求项的主要方法 l标识影响用户认可、接受本软件系统的质量需求 l标识实现难度较大、实现风险较高的质量需求 u但是,并非所有高风险、高难度的质量需求项均须纳入关 键需求集。体系结构设计师必须决定,

41、在给定的时间和成 本约束前提下重点支持哪些质量需求项 l权衡冲突的质量需求项 u要么仅将优先支持的质量需求项纳入关键集 u要么将二者均纳入 u要么均不纳入关键集 QQ:46203128976 辨识关键需求的注意事项辨识关键需求的注意事项 n高优先级并不完全等同于高关键性 l虽然优先级较高的功能需求和质量需求项非常有可 能进入关键集,但并不必然进入 n关键质量需求项优先于关键功能占比 l因为质量需求对体系结构初始塑形的影响力比功能 需求更大 n对软件体系结构有影响,就必须纳入关键集 l这是由于由于软件的开发过程和软件产品必须满足 所有的约束性需求项 l那些与软件体系结构无关的约束,例如编程语言限

42、 制等,则不应进入关键集 QQ:46203128977 例例7.1 辨识关键需求项辨识关键需求项(家庭保安系统家庭保安系统) n关键功能性需求 l除“日志查询”外的所有用例,包括“开关机及复 位处理”、 “配置管理”和“传感器监测”,均属 核心基础性功能,纳入关键需求集 l由于家庭保安系统的规模很小,所以关键的功能需 求项所占比例很高是可以理解的 n关键质量需求 l基于该系统的市场定位和竞争力要求,我们将安全 性、可靠性、性能和可配置性纳入关键需求集 QQ:46203128978 7.5.2 体系结构初创体系结构初创 n任务 l建立初始的软件体系结构雏形 l属于软件体系结构逻辑视图,与具体的实

43、现技术无关 n依据 l主要是关键需求集 l还必须考虑运行环境,以考虑到对体系结构的影响 u例如,单机软件、运行于局域网内部的客户/服务器软件与运 行于Internet之上的Web软件的体系结构大不相同 n形式 l以某一体系结构模式为主 l可适量调整 QQ:46203128979 体系结构模式速查清单体系结构模式速查清单 类别类别名称名称特点特点典型应用示例典型应用示例 企业应用企业应用 (数据密集(数据密集 型应用)型应用) 分层分层分级抽象分级抽象 依赖关系局部化、简单化依赖关系局部化、简单化 层可复用、可替换层可复用、可替换 大部分应用软件大部分应用软件 管道与过滤器管道与过滤器适于批处理

44、、数据密集型处理适于批处理、数据密集型处理 Filter可复用可复用 支持处理流程重组支持处理流程重组 编译器编译器 HTTP请求处理请求处理 MVC (见(见14.3节)节) 职责分工明晰、合理职责分工明晰、合理 依赖关系局部化、简单化依赖关系局部化、简单化 Model可复用可复用 View可替换可替换 大部分大部分Web应用软件应用软件 智能问题求解智能问题求解 黑板黑板知识源和控制构件可复用、可替换知识源和控制构件可复用、可替换 较好的容错性和健壮性较好的容错性和健壮性 不能确保获得最优解不能确保获得最优解 性能较低、有时甚至无法预测求解时间性能较低、有时甚至无法预测求解时间 没有已知算

45、法的复杂问没有已知算法的复杂问 题求解软件题求解软件 QQ:46203128980 例例7.2 建立体系结构雏形建立体系结构雏形 n对家庭保安系统,可选用分层模式 l针对系统需求和运行环境,对图7.9所示的体系结构 进行了具体化和适应性改造,见图7.12 l第1层(最外层)负责显示用户界面 l第2层(中间层)负责核心业务逻辑处理 l第3层(最内层)专门负责与外部物理设备进行交互 QQ:46203128981 图图7.12 家庭保安系统的体系结构雏形家庭保安系统的体系结构雏形 2021-7-9 81 QQ:46203128982 大纲 7.1 软件体系结构的概念软件体系结构的概念 7.2 体系结

46、构的表示体系结构的表示 包图、构件图、部署图、对象图包图、构件图、部署图、对象图 7.3 体系结构设计的过程体系结构设计的过程 7.4 体系结构设计模式体系结构设计模式 7.5 概念设计概念设计 7.6 体系结构精化体系结构精化 7.7 基于构件的体系结构基于构件的体系结构 7.8 体系结构验证体系结构验证 QQ:46203128983 7.6 体系结构精化体系结构精化 n主要目标 l将概念体系结构精化成为全面的、设计适度的软件 体系结构 n主要工作 l围绕逻辑、运行、数据、物理、开发五种视图的精 化或创立展开 l重点是逻辑视图的精化 QQ:46203128984 7.6.1 逻辑视图体系结构

47、的精化逻辑视图体系结构的精化 n概念体系结构与精化的体系结构的区别: l精化体系结构必须有明确的接口定义 u而概念体系结构中的模块仅代表逻辑职责 l精化体系结构必须受到多方面的约束 u包括可用的设计资产(如开源构件、开源框架)、技术支撑 设施、分布部署、开发技能等因素 u而概念体系结构中的模块划分主要是职责的逻辑分组 l更重要的是,精化的体系结构必须具备设计充分性 u最终的逻辑体系结构不仅要支持关键需求项,还应该比较完 整地支持其他需求项的实现 u应该合理复用现有的软件资产 u应该为详细设计和编程实现提供足够的指导和充分的约束 QQ:46203128985 逻辑视图体系结构的精化过程逻辑视图体

48、系结构的精化过程 n搜索并选取可用的设计资产; n设计技术支撑设施; n确立设计元素; n整合设计元素。 n对于大中型软件项目而言,非关键需求项可以逐次引入, 即,这些设计活动可以迭代地进行 QQ:46203128986 (一)搜索并选取可用的设计资产(一)搜索并选取可用的设计资产 n“可用”的设计资产:指在当前项目中直接可供复用或借 鉴的设计资产。包括:现成的软件系统或子系统,开发 机构自身积累的构件库、服务库,业界广泛采用的类库、 中间件或框架,以及Internet上开源的软件资产。 n如,针对课程注册管理系统,可以直接借用现成的学籍 管理系统和教师信息管理系统来实现对用户身份的认证, 借

49、用现成的计费系统来确定学生应缴的选课费用。 2021-7-9 86 QQ:46203128987 搜索并选取可用的设计资产搜索并选取可用的设计资产 n对于必须与当前软件系统交互的可复用设计资产,必须 清晰地定义它们与当前软件系统之间的交互接口,包括 数据交换的格式、互操作协议等。 n对于虽不能直接使用,但具有复用潜力的设计资产,应 考虑采用接口重构、适配器等方法将其引入到当前体系 结构之中。 l接口重构指,调整当前体系结构中面向可复用设计资产的调用 接口,使之与其提供的服务接口相匹配。 n在决定引入供复用的设计资产之后,应对当前的逻辑体 系结构进行相应的调整和精化。 2021-7-987 QQ

50、:46203128988 搜索并选取可用的设计资产搜索并选取可用的设计资产 n在7.5.2节所述的针对UML包图的扩充的基础上,进一步添加以下 扩充: 允许在包图中出现构件、类和接口,允许在包图中表示子系统和构 件的服务接口,采用构造型 、 依次标示(内部)子系统、外部子系统和外部构件,见图7.13。 2021-7-9 88 QQ:46203128989 图图7.13 可复用的设计资产与可复用的设计资产与 软件体系结构的整合软件体系结构的整合 2021-7-9 89 QQ:46203128990 例例7.3 搜索并选取可用的设计资产搜索并选取可用的设计资产 n对家庭保安系统,设可供复用的设计资

51、产有视频监控构件、电话拨 号构件、文本朗读构件(text-to-speech)。 n前者基于视频判断是否有移动的物体,后者将文本转换成为语音。 n假设这三个构件提供的对外接口依次是: MovingObjectMonitor: void openMonitor(VideoStream stream, int nSensitivity, MovingObjectNotifier notifier); void closeMonitor(); 2021-7-9 90 QQ:46203128991 例例7.3 搜索并选取可用的设计资产(续搜索并选取可用的设计资产(续1) TelephoneDialer

52、: void dial(ENUM_Port ePort, String strTelNo, int nMaxRedialNum, TelephoneNotifier notifier); void hangUp(); void playVoice(SoundStream stream); TextToSpeech: SoundStream toSpeech(String strText); n函数openMonitor的参数stream表示输入的视频流; n参数nSensitivity表示监控灵敏度(以百分数表示); n一旦发现移动物体,notifier对象将获得通知。 n函数dial的参数e

53、Port表示用以发送拨号命令的端口; n参数strTelNo表示电话号码; n参数nMaxRedialNum表示最大重拨次数; 2021-7-9 91 QQ:46203128992 例例7.3 搜索并选取可用的设计资产(续搜索并选取可用的设计资产(续2) n一旦电话接通或者拨号失败,notifier对象将获得通知。 nMovingObjectNotifier接口包含以下函数: nvoid onMovingObjectDetected(ENUM_Direction eDirection, float fSpeed); n参数eDirection表示物体的移动方向; n参数fSpeed表示物体的移

54、动速度。 nTelephoneNotifier接口包含以下函数: nvoid onTelephoneConnected(); nvoid onDialFailed(int nErrorCode); n参数nErrorCode表示拨号失败的原因码 2021-7-9 92 QQ:46203128993 (二)设计技术支撑设施(二)设计技术支撑设施 n体系结构师必须研究公共的基础性软件技术问题,设计 技术支撑设施。 u如,对企业应用软件(包括电子商务应用、企业管 理信息系统等),需要数据持久存储服务、安全控 制服务等。 2021-7-9 93 QQ:46203128994 (1)数据持久存储服务)数

55、据持久存储服务 n数据持久存储:是指在目标软件系统结束一次运行之后, 其产生的部分数据能够留存于系统的存储介质中,以供 本软件下次运行时使用,或者供其他软件系统使用。 n数据持久存储服务的功能包括数据的持久存储、查询 (选择性读取)、更新、删除等。 n设置数据持久存储服务的目的:将目标软件系统中依赖 于系统运行环境的数据存取部分与其他部分相分离。 2021-7-9 94 QQ:46203128995 数据持久存储服务数据持久存储服务 n数据存取通过一般的数据管理系统(如文件系统、关系 数据库或面向对象数据库)实现 n实现细节因数据存储介质的种类而异 n这些细节被集中在数据持久存储服务中,系统的

56、其他部 分只需访问数据持久服务即可,与存储介质的种类、数 据在介质中的组织方式、数据存储的实现方法无关。 2021-7-9 95 QQ:46203128996 数据持久存储服务数据持久存储服务 n原因:一旦存储介质发生变化或者存储格式发生变化, 仅修改数据持久存储服务即可适应这些变化,目标软件 系统的其余部分不需修改。 l如,从文件系统改变为关系数据库,从一种数据库改为另一种 数据库,数据库表格结构变化等, n优点:设置相对独立的数据持久存储服务简化了后续的 软件设计、编码和测试的过程,有利于软件的扩充、移 植和维护。 n作法:一般将数据持久存储服务实现为一个构件,接口 定义通常包括基本的、通

57、用的数据持久操作,如存储、 查询、更新、删除等,见例7.4 2021-7-9 96 QQ:46203128997 数据持久存储服务数据持久存储服务 n如果希望该服务承担的职责非常多,也可以考虑将其实 现为一个子系统,其典型结构如图7.14所示。 n该子系统通常包含一个通用构件,利用它为若干面向不 同业务数据的持久存储服务构件提供基础性的数据持久 服务。 图7.14 数据持久存储服务子系统子系统的结构 2021-7-9 97 QQ:46203128998 例例7.4 设计数据持久存储服务设计数据持久存储服务 n对家庭保安系统,本例决定在体系结构中设置专门负责提供数据持 久服务的构件 “Data

58、Service”,如图7.15所示。 该构件的接口函数依次为: openConnection:与数据源建立逻辑连接 closeConnection:关闭与数据源间的逻辑连接 insert:执行SQL插入语句 n如果存在与数据源之间的逻辑连接,则直接使用此连接执行SQL插 入语句; n否则,使用 openConnection 创建连接,在此连接上执行SQL插入 语句,执行后再用 closeConnection 关闭连接。 2021-7-9 98 QQ:46203128999 设计数据持久存储服务设计数据持久存储服务 n下面三个接口函数的工作模式与此相似。 update:执行SQL更新语句 del

59、ete:执行SQL删除语句 query:执行SQL查询语句 2021-7-9 99 QQ:462031289100 图图7.15 数据持久存数据持久存 储服务及其储服务及其 与软件体系与软件体系 结构的整合结构的整合 2021-7-9 100 QQ:462031289101 (2)安全控制服务)安全控制服务 n设置安全控制服务的目的:是将目标软件系统 中有关安全控制的功能集中起来,以便统一管 理安全策略,提高安全策略的可配置性。 n安全控制服务包含用户身份认证和授权控制两 种功能,前者验证用户是否具有合法身份,后 者判断用户在请求某种类型的服务时是否具有 相应的权限。 2021-7-9 101

60、 QQ:462031289102 例例7.5 设计安全控制服务设计安全控制服务 n如图7.16所示,家庭保安系统中核心层的软件元素在接 获用户命令后,首先由安全控制服务构件“Security Service”验证用户的身份,在验证通过后才调用核心层 中的业务逻辑处理功能。 n“Security Service”的接口仅包含verifyUserIdentity函 数,它负责验证用户输入的密码是否正确。 2021-7-9 102 QQ:462031289103 图图7.16 安全控制服务安全控制服务 及其与及其与 软件体系结构软件体系结构 的整合的整合 2021-7-9 103 QQ:462031

温馨提示

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

最新文档

评论

0/150

提交评论