




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、冯元勇QQ: 462031289手机:州大学计算机科学与教育软件学院QQ:4620312892课前思考课前思考n一级标题大小:28,文字大小:24l二级文字大小:24u最多三级,所有文字不得小于:20u成句时应应有句号等结束符u不成名时不带句结束符QQ:4620312893大纲7.1 软件体系结构的概念软件体系结构的概念7.2 体系结构的表示体系结构的表示 包图、构件图、部署图、对象图包图、构件图、部署图、对象图7.3 体系结构设计的过程体系结构设计的过程7.4 体系结构设计模式体系结构设计模式7.5 概念设计概念设计7.6 体系结构精化体系结构精化7.7 基于构件的
2、体系结构基于构件的体系结构7.8 体系结构验证体系结构验证QQ:4620312894软件体系结构的定义软件体系结构的定义n软件体系结构(architecture,也称“架构”)从高层抽象的角度刻画组成目标软件系统的设计元素(包括子系统、构件及类)以及它们之间的逻辑关联。QQ:46203128952022-4-195QQ:4620312896体系结构设计的任务体系结构设计的任务n建立满足软件需求的软件体系结构l既要明确定义软件各子系统、构件、关键类的职责职责划分划分及协作关系,也要描绘它们在物理运行环境下的部署模型l还必须针对软件系统全局性、基础性全局性、基础性的技术问题给出技术解决方案,这种方
3、案构成目标软件系统的技术基础设施2022-4-197可信计算终端系统平台安全体系结构可信计算终端系统平台安全体系结构QQ:4620312898体系结构的重要性体系结构的重要性n软件规模日益庞大复杂、交付时间日益紧迫、详细设计和软件实现技术日益成熟,体系结构设计已经成为软件质量的瓶颈。n与详细设计相比,体系结构设计对性能、灵活性、可修改性、可扩充性等质量需求的影响是全局性的、决定性的。n一旦启动基于体系结构的详细设计,对体系结构进行调优的代价将远大于算法调优的代价。QQ:4620312899本章试图回答的问题本章试图回答的问题n如何合理划分模块?n如何确保体系结构满足软件需求?l在大型软件项目中
4、,需求如此之多,如何基于需求推导体系结构,如何确保体系结构满足软件需求,尤其是非功能需求?n软件体系结构设计的过程及方法学有哪些?QQ:462031289107.1 软件体系结构的概念软件体系结构的概念n本节介绍:n什么是软件体系结构n体系结构与需求n体系结构设计与详细设计的关系n从多种视角探讨软件体系结构的不同表现形式QQ:462031289117.1.1 何谓体系结构何谓体系结构n软件体系结构包括三大要素:l组件(component)l连接件(connector)l约束(constraints)n连接件表示组件之间的连接和交互关系n约束表示组件中的元素应满足的条件,以及组件经由连接件组装成
5、更大模块时应满足的条件。QQ:46203128912图图7.12 家庭保安系统的体系结构雏形家庭保安系统的体系结构雏形QQ:46203128913软件体系结构举例:家庭保安系统软件体系结构举例:家庭保安系统n组件l划分为界面、核心和物理设备接口三个层次l核心层(业务逻辑层)u负责存储所有业务数据并提供业务逻辑处理功能l界面层u负责向用户呈现家庭保安系统的操作界面,接收用户的界面输入并将其转换为内部事件传递给核心层l物理设备接口层u应核心层的要求向传感器、报警器、报警电话等物理设备发送必要的控制指令,也负责接收来自传感器的监测数据QQ:46203128914软件体系结构举例:家庭保安系统软件体系
6、结构举例:家庭保安系统n约束l位于较高层次的软件元素可以向低层元素发出服务请求,低层元素完成计算后向高层元素发送服务应答,反之不行;l每个软件元素根据其职责位于最恰当的一个层次当中,不可错置(如,核心层不能包含界面呈现和界面输入接收职责,也不能直接与物理设备交互);l每个层次都可替换。即,一个层次可以被能实现同样对外服务接口的层次所替代。QQ:46203128915体系结构与软件需求的关系体系结构与软件需求的关系n软件需求是体系结构的基础和导引l体系结构是以软件需求的实现为目标的软件设计蓝图,软件需求是体系结构设计的基础和驱动因素。l软件需求,尤其是非功能需求,对软件体系结构具有关键性的塑形作
7、用。QQ:46203128916体系结构设计与详细设计的关系体系结构设计与详细设计的关系n详细设计是体系结构的实现l详细设计是针对软件体系结构中某个未展开模块的局部设计,必须遵循体系结构中规定的原则、接口及约束l详细设计只能实现、不能更改体系结构中规定的模块的对外接口和外部行为;l软件体系结构必须为详细设计提供可操作的指导和充分的约束。QQ:462031289177.1.2 体系结构视图体系结构视图完整的软件体系结构应该包含以下视图:n逻辑视图n开发视图n物理视图n运行视图n数据视图QQ:462031289187.1.2 体系结构视图体系结构视图完整的软件体系结构应该包含以下视图:n逻辑视图n
8、开发视图n物理视图n运行视图n数据视图表述体系结构中各软件模块的逻辑功能划分(或曰职责分派),以及基于这种划分的协作行为。逻辑视图的示例见前文中的图7.12。QQ:462031289197.1.2 体系结构视图体系结构视图完整的软件体系结构应该包含以下视图:n逻辑视图n开发视图n物理视图n运行视图n数据视图表述软件源代码的程序分包及目录结构,采用的类库、中间件或框架(framework),以及它们与逻辑视图中各模块之间的映射关系。开发视图的示例见后文中的图7.19。QQ:462031289207.1.2 体系结构视图体系结构视图完整的软件体系结构应该包含以下视图:n逻辑视图n开发视图n物理视图
9、n运行视图n数据视图表述系统中安装部署的物理机器及其网络连接,逻辑视图及开发视图中模块或程序包的物理部署位置。开发视图的示例见后文中的图7.20。QQ:462031289217.1.2 体系结构视图体系结构视图完整的软件体系结构应该包含以下视图:n逻辑视图n开发视图n物理视图n运行视图n数据视图软件运行时进程、线程的划分,它们之间的并发与同步,瞬时快照(软件运行过程中某个特定时刻活跃的对象及其协作关系),以及它们与逻辑视图和开发视图之间的映射关系。QQ:462031289227.1.2 体系结构视图体系结构视图完整的软件体系结构应该包含以下视图:n逻辑视图n开发视图n物理视图n运行视图n数据视
10、图持久数据的存储方案,数据传递、备份、恢复、同步方案,与物理视图之间的映射关系。QQ:46203128923大纲7.1 软件体系结构的概念软件体系结构的概念7.2 体系结构的表示体系结构的表示 包图、构件图、部署图、对象图包图、构件图、部署图、对象图7.3 体系结构设计的过程体系结构设计的过程7.4 体系结构设计模式体系结构设计模式7.5 概念设计概念设计7.6 体系结构精化体系结构精化7.7 基于构件的体系结构基于构件的体系结构7.8 体系结构验证体系结构验证QQ:462031289247.2 体系结构的表示体系结构的表示n逻辑视图l主要为包图和构件图,有时还辅以类图n开发视图l可能会用到包
11、图n物理视图l显然应表示为部署图n运行视图l因为涉及到并发、同步以及软件运行过程中的瞬时快照,所以它应表示为活动图与对象图n数据视图l一般表示为类图或者实体-关系图QQ:462031289257.2.1 包图包图n包l刻画了包之间的构成和依赖关系。l可以包含一组具有逻辑关联的UML模型元素(例如用例、类等)、模型图(例如用例图、类图、交互图、状态图、活动图等),以及其他的包。l包是配置管理的基本单元,同时也为访问控制提供基本手段。QQ:462031289267.2.1 包图包图n作用l在整个软件开发过程中在整个软件开发过程中,包图用于以结构化、层次化的方式组织、管理大型软件模型,使得分别处理不
12、同包的开发团队之间相互干扰程度降至最低:u在业务分析和需求定义阶段包图可用于刻画业务系统和用户需求的结构u在设计和实现阶段包图可用于描述软件系统的高层结构QQ:462031289272022-4-19图图7.19 包图示例包图示例QQ:46203128928包图的布局规则包图的布局规则n类包图l采用垂直分层布局,即,沿垂直方向绘制依赖关系边,位于同一层次的包水平对齐,最面向用户的包位于顶层,面向系统内部后台处理的包位于底层。n用例包图l采用水平布局,主动执行者、被动执行者分置于图的左、右两侧。QQ:46203128929包的划分规则包的划分规则n类包图l在同一继承结构中出现的类应位于同一包;l
13、存在聚合或组合关系的类应位于同一包;l相互间密切协作的类应位于同一包。n用例包图l相互关联的用例(扩展用例与被扩展用例,包含用例与被包含用例、泛化用例与特化用例)应位于同一包;l同类执行者使用的用例应尽量位于同一包。QQ:462031289307.2.2 构件图构件图n构件l是可分离的物理模块,具有精确定义的对外接口,外界只能通过接口来访问它QQ:462031289317.2.2 构件图构件图n构件的特点l构件是可分离的l构件是可替换的l构件是可配置的u部署至运行环境之后,外界可以通过配置机制修改构件的配置数据,影响构件的对外服务的功能或行为l构件一般具有较好的可复用潜力u可不经源代码修改可不
14、经源代码修改,即可应用于多个软件项目或软件产品u这是因为构件可通过配置信息来适应不同的应用场景u同时也因为构件创立时便考虑了不同应用场景下的复用图7.2 某个软件系统中主要构件之间关系的构件图 图7.3 其中Customer构件的内部结构图2022-4-1932QQ:46203128933(一)(一) 构件及其表示构件及其表示n接口l是一组操作 和/或 属性的说明(不含操作的实现),用作服务提供方和使用方之间的协议。l由类或构件实现。l构件最关键的特征通过接口体现,包括u对外提供的供给接口供给接口(provided interface),u请求其他类、构件或软件模块提供帮助时使用的需求接口需求
15、接口(required interface)。QQ:46203128934(一)(一) 构件及其表示构件及其表示n通过接口实现信息隐藏l构件的实现者可以自由选择实现方法,只要它完整地实现了供给接口中规定的操作及属性即可l其他软件模块对它的访问必须通过它的供给接口来进行l构件的使用者只需要了解其供给接口,构件的服务提供者只需要了解其需求接口,决不需要了解构件的内部实现l只要构件的两种实现遵循相同的接口定义,那么它们就一定是可自由替换的QQ:46203128935(一)(一) 构件及其表示构件及其表示n端口l构件还可以定义一些端口,每个端口绑定了一组一组供给接口和/或需求接口l对于具有端口的构件,
16、它通过端口与外部世界交互通过端口与外部世界交互u当外部请求到达端口时,构件的端口知道如何将外部请求路由至合适的接口的实现体u当构件通过端口请求外部服务时,端口也知道如何分辨该请求所对应的需求接口l针对构件的每个接口和端口,可以通过自然语言描述、用例图或状态图来定义其使用方法QQ:46203128936图图7.4 构件的表示图元构件的表示图元(a)最简化的三种图元 (隐藏接口部分)(b)构件及其接口的两种表示方法2022-4-1936(c)构件端口的表示方法QQ:46203128937(二)构件图(二)构件图n构件图的结点:构件、类和包n构件图的边:与普通类图的边没有严格区分n构件图的关系:构件
17、、类和包之间的依赖关系,偶尔也可以出现继承关系和实现关系n构件间依赖关系的实现:l可以直接搭建于这两个构件之间l也可以搭建于一个构件与另一构件的供给接口之间l还可以描述成一个构件的需求接口与另一构件的供给接口之间的依赖关系,见图7.2。QQ:46203128938(三)(三) 构件定义图构件定义图n描述一个构件的内部结构。l它可以包含多个子构件,每个子构件的需求接口u要么由另一子构件的供给接口负责实现u要么经由父构件的需求接口请求外部支援u示例见图7.3l一个子构件的供给接口对另一子构件的需求接口的实现通过两种图元之间的衔接来表示。l在构件定义图中,父构件的端口与其外部接口之间的无向边表示端口
18、是由哪些接口构成的。QQ:46203128939(三)(三) 构件定义图构件定义图n委托连接器l指子构件端口与父构件端口之间的有向边有向边l当子构件未定义端口时,委托连接器表现为子构件的图元与父构件端口之间的有向边l委托连接器指明了构件与外部世界之间的交互信息如何经由父构件的端口到达内部子构件的接口或端口,也指明了内部子构件的服务请求如何经由父构件的端口到达外部世界中的服务提供方。QQ:462031289407.2.3 部署图部署图n部署图l表示软件系统的可执行工件(artifact)在运行环境中的分布情况l工件是指软件系统中相对独立的物理实现单元,例如Windows平台下的动态链接库(DLL
19、)文件、Java系统中的类库(jar)文件n部署图的作用l为软件配置管理工程师确定软件发布版本的封包方法提供依据l是软件安装、维护工程师了解系统部署状况的主要信息源l也是软件设计、实现人员理解软件运行环境、确定软构件划分的重要参考QQ:46203128941两种部署图两种部署图n描述性部署图l描述软件的逻辑布局l示例见图7.5 描述性部署图示例n实例性部署图l在描述性部署图的基础上针对具体的运行环境和特定的系统配置描述软件系统的物理部署情况l示例见图7.6 实例性部署图示例QQ:462031289422022-4-1942图图7.5 描述性部署图示例描述性部署图示例QQ:46203128943
20、2022-4-1943图图7.6 实例性部署图示例实例性部署图示例QQ:46203128944(一)(一) 描述性部署图描述性部署图n描述性部署图的四种结点l计算资源(结点)u软件运行环境中的一组计算资源u如,客户端计算机、Web服务器、应用服务器u软件工件驻留其中,依赖基础服务来实现工件的功能l工件u以构造型标识l构件u不需要将所有的构件引入至部署图,仅显示相关的、重要的构件即可l用例执行者u意在强调执行者与工件之间的使用关系及信息交互QQ:46203128945(一)(一) 描述性部署图描述性部署图n描述性部署图的四种边l结点之间的通信关联u表示两个结点间的通信连接u可以在通信关联边上以构
21、造型说明通信协议及其他约束,还可以标注结点之间的数量对应关系l工件之间的依赖关系u如果工件定义了对外接口,那么软件设计人员应确保工件之间的依赖关系表现为工件接口上的依赖关系l工件与构件之间的依赖关系u表示工件具体实现了构件u在该依赖关系之上需标注构造型l用例执行者与工件之间的依赖关系u表示执行者使用工件提供的服务(从执行者指向工件)u或工件使用执行者提供的服务(从工件指向执行者)QQ:46203128946(二)(二) 实例性部署图实例性部署图n实例性部署图与描述性部署图之间的关系可类比为对象图与类图之间的关系。n在实例性部署图中结点的命名方式为n “结点名: 类型名”n 其中类型名为描述性部
22、署图中的结点名。n如果实例性部署图中的结点包含了描述性部署相应结点中的所有工件,则不必在该结点中再列举这些工件。n实例性部署图的结点还可包含对工件的具体配置信息的描述,见图7.6中的结点“customerDeploy.xml”。QQ:462031289477.2.4 对象图对象图n对象图是软件系统中某些对象在运行过程中的瞬时快照QQ:46203128948大纲7.1 软件体系结构的概念软件体系结构的概念7.2 体系结构的表示体系结构的表示 包图、构件图、部署图、对象图包图、构件图、部署图、对象图7.3 体系结构设计的过程体系结构设计的过程7.4 体系结构设计模式体系结构设计模式7.5 概念设计
23、概念设计7.6 体系结构精化体系结构精化7.7 基于构件的体系结构基于构件的体系结构7.8 体系结构验证体系结构验证QQ:462031289497.3 体系结构设计的过程模型体系结构设计的过程模型n任务l建立高层结构,确定u所有重要模块重要模块u模块职责划分及协作关系职责划分及协作关系n目标l具有优良的性能u包括正确性、可扩展性、可伸缩性、可行性等方面QQ:46203128950体系结构设计的过程模型体系结构设计的过程模型分为两个阶段n初步设计l仅针对软件需求模型中的部分关键需求项部分关键需求项来构思体系结构的雏形l关键需求项是指对用户满意度及软件结构均有重要影响的需求项l“20-80规则”
24、:20%的关键需求项决定80%的体系结构形态n精化l全面地考虑全面地考虑所有的软件需求项、丰富体系结构雏形的细节并且对其进行调优QQ:46203128951体系结构设计过程的主要活动体系结构设计过程的主要活动n概念设计l选择一种体系结构,合理、充分优化地实现关键需求n体系结构精化l精化体系结构u并用逻辑视图表达u根据具体情况,还应从开发视图、运行视图、物理视图、数据视图等多视角描述l该过程也是需求导向的u应合理、充分优化的方式完整地实现软件需求模型n体系结构验证l重新审视所有软件需求项的实现方案,研究如何化解迄今标识出来的所有重要的全局风险,在此过程中验证体系结构的合理性和充分优化性QQ:46
25、203128952图图7.8 体系结构设计工作流体系结构设计工作流n同样地,大型软件体系结构可迭代设计:l验证中发现的问题要返工返工u返至概念设计或精化阶段l重要的需求项优先设计u分别针对不同的需求项针对不同的需求项依次进行概念设计、体系结构精化和验证,然后进行体系结构的集成QQ:46203128953大纲7.1 软件体系结构的概念软件体系结构的概念7.2 体系结构的表示体系结构的表示 包图、构件图、部署图、对象图包图、构件图、部署图、对象图7.3 体系结构设计的过程体系结构设计的过程7.4 体系结构设计模式体系结构设计模式7.5 概念设计概念设计7.6 体系结构精化体系结构精化7.7 基于构
26、件的体系结构基于构件的体系结构7.8 体系结构验证体系结构验证QQ:462031289547.4 体系结构设计模式体系结构设计模式7.4.1 何谓设计模式何谓设计模式n设计模式l以设计复用复用为目的,采用一种良好定义的、正规的、一致的方式记录的软件设计经验。l它是某种成熟的解决方案u每条模式关注在一般或特定设计环境中可能重复出现的设计问题,并给出经过充分实践考验的软件解决方案。n设计模式的意义和价值l以标准并且规范的方式记录软件设计经验,支持软件设计级复用QQ:46203128955设计模式包含的内容设计模式包含的内容n名称l要反映模式蕴含的设计经验,体现与其它已有模式的关系n问题l描述模式解
27、决的设计问题,包括问题的背景n施用条件l描述在何种条件下才推荐使用该模式解决上述问题,以及在使用本模式之前必须考虑的约束条件n解决方案l设计模式的主体部分,描述问题的软件解决方案QQ:46203128956设计模式包含的内容设计模式包含的内容(2)n效果l描述该方案导致的正面及负面的设计效果n示例代码l应用本模式的示例代码n关联模式l说明本模式继承或扩展了哪些模式,与哪些模式关联n可视情况适当取舍l但名称、解决方案和效果名称、解决方案和效果是不可或缺的QQ:46203128957设计模式的分类设计模式的分类n按解决方案的抽象程度来分(高至低)l体系结构设计模式u面向整个软件系统或规模较大的软件
28、子系统u定义子系统或构件的职责、协作方式的规则或指南l软件子系统或构件设计模式u面向中等规模的软件子系统或构件,独立于程序设计语言,给出内部的软件元素的结构化组织方式u在面向对象环境中,类图表示关系、交互图表示协作途径l面向软件实现的设计模式u针对软件子系统或构件中的某个特定问题,描述如何利用特定的程序设计语言的具体特征来解决此问题。u此类模式不影响软件结构QQ:46203128958设计模式的分类设计模式的分类n(2)按模式解决的设计问题的类别来分l创建型模式(工厂方法模式、生成器模式)u专门解决复杂对象的创建问题l结构型模式(adpter适配器模式、Bridge桥接模式)u分解为粒度更小的
29、软件元素,规定其职责和协作方式l行为型模式(Interpreter解释器、Iterator迭代)u侧重描述软件元素间的通信及控制流模式l分布型模式(客户机/服务器构架)u为分布于网络中的软件系统提供系统结构和远程互操作方法l适应性模式(微核模式)u针对扩展、改进、演进、变更等设计问题提供软件解决方案l访问控制模式(MVC)u针对构件、软件服务或共享资源的访问控制问题提供软件解决方案QQ:46203128959设计模式的分类设计模式的分类n(3)按照模式基于的计算平台类别来分l独立于计算平台的设计模式l面向特定计算平台的设计模式u如J2EE、.NET等QQ:462031289607.4.2 通用
30、的体系结构模式通用的体系结构模式n体系结构模式是专门针对体系结构设计问题的设计模式,是软件体系结构设计的经验结晶。本节内容:n分层模式n管道与过滤器模式n黑板模式QQ:46203128961(一)分层模式(一)分层模式n逐层抽象递减或北增n上层使用下层提供的服务n一般而言l顶层:直接面向用户提供交互界面l底层:负责提供基础性、公共性的技术服务u比较接近于硬件计算环境、操作系统或数据库管理系统QQ:46203128962层次之间的连接有两种形态层次之间的连接有两种形态n高层构件向低层构件发出服务请求l低层构件在计算完成后向请求者发送服务应答l在此过程中,低层构件可能向更低层构件发送抽象级别更低、
31、粒度更细的服务请求n低层构件主动通知高层构件l低层构件在主动探测或被动获知计算环境的变化事件后通知高层构件l这种通知链可能一直延伸到最高层以便软件系统向用户报告,也可能中止于某个中间层次。QQ:46203128963层次间服务接口的两种组织方式层次间服务接口的两种组织方式n 层次中的每个提供服务的构件公开其接口n 将这些接口封装于层次的内部,每个层次提供统一的、整合的服务接口n前一种方式对上层服务请求者更直接,服务提供者所在层次的透明度也较高n后一种方式降低了两个层次之间的耦合度n合理地确立一系列抽象级别是采用分层模式进行体系结构设计的关键QQ:46203128964分层模式的优点分层模式的优
32、点n松耦合n易替换n易复用n易标准化l例如,ISO七层网络协议模型、POSIX接口标准、 Java虚拟机(JVM)标准在各自领域的标准化进程中发挥了关键性作用QQ:46203128965分层模式的缺点分层模式的缺点n会引起性能方面的开销l高层功能可能需要逐层调用下层服务,返回值、报错信息又需逐级上传,这种过程一般会比直接实现高层功能更耗时l如果低层服务还完成了最初的服务请求者所不需要的冗余功能,那么性能损耗就会更严重QQ:46203128966(二)管道与过滤器模式(二)管道与过滤器模式n将软件系统功能实现为一系列处理步骤l每个步骤封装在一个过滤器构件中n相邻过滤器之间以管道连接l一个过滤器的
33、输出数据借助管道流向后续过滤器,作为其输入数据QQ:46203128967过滤器与管道之间的协作方式过滤器与管道之间的协作方式n主动过滤器l过滤器不断从管道中提取输入数据,并将输出数据压入管道n被动过滤器l管道将数据压入位于过滤器,过滤器被动地等待输入数据n管道负责提取位于其源端的过滤器的输出数据n过滤器的连接l如果管道连接的两端均为主动过滤器,那么管道必须负责它们之间的同步,典型的同步方法是先进先出缓冲器l如果管道的一端为主动过滤器,另一端为被动过滤器,那么管道的数据流转功能可通过前者直接调用后者来实现QQ:46203128968管道和过滤器模式的特点管道和过滤器模式的特点n长处l可以通过升
34、级、更换部分过滤器构件,及处理步骤的重组,实现软件系统的扩展和进化n不足l仅适合采用批处理方式的软件系统,不适合交互式、事件驱动式系统QQ:46203128969(三)黑板模式(三)黑板模式n将软件系统划分为黑板、知识源和控制器三类构件黑板负责保存问题求解过程中的状态数据,并提供这些数据的读写服务知识源负责根据黑板中存储的问题求解状态评价其自身的可应用性,进行部分问题求解工作,并将此工作的结果数据写入黑板控制器负责监视黑板中不断更新的状态数据,安排(多个)知识源的活动QQ:46203128970黑板模式的典型动作过程黑板模式的典型动作过程n根据状态选取知识源l控制构件观察黑板中的状态数据,决定
35、哪些知识源对后续的问题求解可能有贡献,然后调用这些知识源的评价功能,进一步选取参与下一步求解活动的知识源。n问题求解,更新状态l被选中的知识源基于黑板中的状态数据将问题求解工作向前推进一步,并根据此步骤的结果更新黑板中的状态数据n重复,直到问题解决l控制构件不断重复上述控制过程,直至获得满意或比较满意的结果QQ:46203128971黑板模式的特点黑板模式的特点n适合于没有确定的求解方法的复杂问题n长处l黑板模式的知识源和控制构件可灵活更换可灵活更换、升级,支持采用不同的知识源、不同控制算法来试验各种问题求解方法l知识源之间没有互操作,知识源与控制构件和黑板之间均通过良好定义的接口进行交互,知
36、识源的复用性较好知识源的复用性较好l知识源的问题求解动作是探索性的问题求解动作是探索性的,允许失败和试错,采用此模式的软件系统具有较好的容错性和健壮性n不足l问题求解性能较低性能较低、有时无法预测求解时间l不能确保获得最优解l知识源和控制器两种构件的开发困难l问题求解路径不确定,软件测试困难软件测试困难QQ:46203128972大纲7.1 软件体系结构的概念软件体系结构的概念7.2 体系结构的表示体系结构的表示 包图、构件图、部署图、对象图包图、构件图、部署图、对象图7.3 体系结构设计的过程体系结构设计的过程7.4 体系结构设计模式体系结构设计模式7.5 概念设计概念设计7.6 体系结构精
37、化体系结构精化7.7 基于构件的体系结构基于构件的体系结构7.8 体系结构验证体系结构验证QQ:462031289737.5 概念设计概念设计n主要目标l根据关键需求确定初始的软件体系结构雏形n方法l首先从软件需求模型中甄别出关键的软件需求项l然后借鉴体系结构模式确定适合于实现这些需求项的体系结构雏形QQ:462031289747.5.1 关键需求辨识关键需求辨识n辨识关键功能需求项关键功能需求项的主要方法l确定核心或基础性功能u其它功能依赖于这些功能,或仅当这些功能实现之后其它功能才有意义l确定为实现对外接口所必需的支持功能l标识实现难度较大、实现风险较高的功能l确定最能体现待开发软件特色的
38、功能需求l确定前述类别没有覆盖,但对用户满意度影响甚巨的功能需求l剔除对体系结构塑形无贡献的功能需求项QQ:462031289757.5.1 关键需求辨识关键需求辨识n辨识关键质量需求项关键质量需求项的主要方法l标识影响用户认可、接受本软件系统的质量需求l标识实现难度较大、实现风险较高的质量需求u但是,并非所有高风险、高难度的质量需求项均须纳入关键需求集。体系结构设计师必须决定,在给定的时间和成本约束前提下重点支持哪些质量需求项l权衡冲突的质量需求项u要么仅将优先支持的质量需求项纳入关键集u要么将二者均纳入u要么均不纳入关键集QQ:46203128976辨识关键需求的注意事项辨识关键需求的注意
39、事项n高优先级并不完全等同于高关键性l虽然优先级较高的功能需求和质量需求项非常有可能进入关键集,但并不必然进入n关键质量需求项优先于关键功能占比l因为质量需求对体系结构初始塑形的影响力比功能需求更大n对软件体系结构有影响,就必须纳入关键集l这是由于由于软件的开发过程和软件产品必须满足所有的约束性需求项l那些与软件体系结构无关的约束,例如编程语言限制等,则不应进入关键集QQ:46203128977例例7.1 辨识关键需求项辨识关键需求项(家庭保安系统家庭保安系统)n关键功能性需求l除“日志查询”外的所有用例,包括“开关机及复位处理”、 “配置管理”和“传感器监测”,均属核心基础性功能,纳入关键需
40、求集l由于家庭保安系统的规模很小,所以关键的功能需求项所占比例很高是可以理解的n关键质量需求l基于该系统的市场定位和竞争力要求,我们将安全性、可靠性、性能和可配置性纳入关键需求集QQ:462031289787.5.2 体系结构初创体系结构初创n任务l建立初始的软件体系结构雏形l属于软件体系结构逻辑视图,与具体的实现技术无关n依据l主要是关键需求集l还必须考虑运行环境,以考虑到对体系结构的影响u例如,单机软件、运行于局域网内部的客户/服务器软件与运行于Internet之上的Web软件的体系结构大不相同n形式l以某一体系结构模式为主l可适量调整QQ:46203128979体系结构模式速查清单体系结
41、构模式速查清单类别类别名称名称特点特点典型应用示例典型应用示例 企业应用企业应用(数据密集(数据密集 型应用)型应用)分层分层(1) 分级抽象分级抽象(2) 依赖关系局部化、简单化依赖关系局部化、简单化(3) 层可复用、可替换层可复用、可替换大部分应用软件大部分应用软件管道与过滤器管道与过滤器(1) 适于批处理、数据密集型处理适于批处理、数据密集型处理(2) Filter可复用可复用(3) 支持处理流程重组支持处理流程重组(1) 编译器编译器(2) HTTP请求处理请求处理 MVC(见(见14.3节)节)(1) 职责分工明晰、合理职责分工明晰、合理(2) 依赖关系局部化、简单化依赖关系局部化、
42、简单化(3) Model可复用可复用(4) View可替换可替换大部分大部分Web应用软件应用软件智能问题求解智能问题求解 黑板黑板(1) 知识源和控制构件可复用、可替换知识源和控制构件可复用、可替换(2) 较好的容错性和健壮性较好的容错性和健壮性(3) 不能确保获得最优解不能确保获得最优解(4) 性能较低、有时甚至无法预测求解时间性能较低、有时甚至无法预测求解时间没有已知算法的复杂问没有已知算法的复杂问题求解软件题求解软件QQ:46203128980例例7.2 建立体系结构雏形建立体系结构雏形n对家庭保安系统,可选用分层模式l针对系统需求和运行环境,对图7.9所示的体系结构进行了具体化和适应
43、性改造,见图7.12l第1层(最外层)负责显示用户界面l第2层(中间层)负责核心业务逻辑处理l第3层(最内层)专门负责与外部物理设备进行交互QQ:46203128981图图7.12 家庭保安系统的体系结构雏形家庭保安系统的体系结构雏形2022-4-1981QQ:46203128982大纲7.1 软件体系结构的概念软件体系结构的概念7.2 体系结构的表示体系结构的表示 包图、构件图、部署图、对象图包图、构件图、部署图、对象图7.3 体系结构设计的过程体系结构设计的过程7.4 体系结构设计模式体系结构设计模式7.5 概念设计概念设计7.6 体系结构精化体系结构精化7.7 基于构件的体系结构基于构件
44、的体系结构7.8 体系结构验证体系结构验证QQ:462031289837.6 体系结构精化体系结构精化n主要目标l将概念体系结构精化成为全面的、设计适度的软件体系结构n主要工作l围绕逻辑、运行、数据、物理、开发五种视图的精化或创立展开l重点是逻辑视图的精化QQ:462031289847.6.1 逻辑视图体系结构的精化逻辑视图体系结构的精化n概念体系结构与精化的体系结构的区别:l精化体系结构必须有明确的接口定义u而概念体系结构中的模块仅代表逻辑职责l精化体系结构必须受到多方面的约束u包括可用的设计资产(如开源构件、开源框架)、技术支撑设施、分布部署、开发技能等因素u而概念体系结构中的模块划分主要
45、是职责的逻辑分组l更重要的是,精化的体系结构必须具备设计充分性u最终的逻辑体系结构不仅要支持关键需求项,还应该比较完整地支持其他需求项的实现u应该合理复用现有的软件资产u应该为详细设计和编程实现提供足够的指导和充分的约束QQ:46203128985逻辑视图体系结构的精化过程逻辑视图体系结构的精化过程n搜索并选取可用的设计资产;n设计技术支撑设施;n确立设计元素;n整合设计元素。n对于大中型软件项目而言,非关键需求项可以逐次引入,即,这些设计活动可以迭代地进行QQ:46203128986(一)搜索并选取可用的设计资产(一)搜索并选取可用的设计资产n“可用”的设计资产:指在当前项目中直接可供复用或
46、借鉴的设计资产。包括:现成的软件系统或子系统,开发机构自身积累的构件库、服务库,业界广泛采用的类库、中间件或框架,以及Internet上开源的软件资产。n如,针对课程注册管理系统,可以直接借用现成的学籍管理系统和教师信息管理系统来实现对用户身份的认证,借用现成的计费系统来确定学生应缴的选课费用。2022-4-1986QQ:46203128987搜索并选取可用的设计资产搜索并选取可用的设计资产n对于必须与当前软件系统交互的可复用设计资产,必须清晰地定义它们与当前软件系统之间的交互接口,包括数据交换的格式、互操作协议等。n对于虽不能直接使用,但具有复用潜力的设计资产,应考虑采用接口重构、适配器等方
47、法将其引入到当前体系结构之中。l接口重构指,调整当前体系结构中面向可复用设计资产的调用接口,使之与其提供的服务接口相匹配。n在决定引入供复用的设计资产之后,应对当前的逻辑体系结构进行相应的调整和精化。2022-4-1987QQ:46203128988搜索并选取可用的设计资产搜索并选取可用的设计资产n在7.5.2节所述的针对UML包图的扩充的基础上,进一步添加以下扩充: 允许在包图中出现构件、类和接口,允许在包图中表示子系统和构件的服务接口,采用构造型 、 依次标示(内部)子系统、外部子系统和外部构件,见图7.13。2022-4-1988QQ:46203128989图图7.13 可复用的设计资产
48、与可复用的设计资产与软件体系结构的整合软件体系结构的整合2022-4-1989QQ:46203128990例例7.3 搜索并选取可用的设计资产搜索并选取可用的设计资产n对家庭保安系统,设可供复用的设计资产有视频监控构件、电话拨号构件、文本朗读构件(text-to-speech)。n前者基于视频判断是否有移动的物体,后者将文本转换成为语音。n假设这三个构件提供的对外接口依次是: MovingObjectMonitor: void openMonitor(VideoStream stream, int nSensitivity, MovingObjectNotifier notifier); vo
49、id closeMonitor();2022-4-1990QQ:46203128991例例7.3 搜索并选取可用的设计资产(续搜索并选取可用的设计资产(续1) TelephoneDialer: void dial(ENUM_Port ePort, String strTelNo, int nMaxRedialNum, TelephoneNotifier notifier); void hangUp();void playVoice(SoundStream stream); TextToSpeech: SoundStream toSpeech(String strText);n函数openMon
50、itor的参数stream表示输入的视频流;n参数nSensitivity表示监控灵敏度(以百分数表示);n一旦发现移动物体,notifier对象将获得通知。n函数dial的参数ePort表示用以发送拨号命令的端口;n参数strTelNo表示电话号码;n参数nMaxRedialNum表示最大重拨次数;2022-4-1991QQ:46203128992例例7.3 搜索并选取可用的设计资产(续搜索并选取可用的设计资产(续2)n一旦电话接通或者拨号失败,notifier对象将获得通知。nMovingObjectNotifier接口包含以下函数:nvoid onMovingObjectDetected
51、(ENUM_Direction eDirection, float fSpeed);n参数eDirection表示物体的移动方向;n参数fSpeed表示物体的移动速度。nTelephoneNotifier接口包含以下函数:nvoid onTelephoneConnected();nvoid onDialFailed(int nErrorCode);n参数nErrorCode表示拨号失败的原因码2022-4-1992QQ:46203128993(二)设计技术支撑设施(二)设计技术支撑设施n体系结构师必须研究公共的基础性软件技术问题,设计技术支撑设施。u如,对企业应用软件(包括电子商务应用、企业管
52、理信息系统等),需要数据持久存储服务、安全控制服务等。2022-4-1993QQ:46203128994(1)数据持久存储服务)数据持久存储服务n数据持久存储:是指在目标软件系统结束一次运行之后,其产生的部分数据能够留存于系统的存储介质中,以供本软件下次运行时使用,或者供其他软件系统使用。n数据持久存储服务的功能包括数据的持久存储、查询(选择性读取)、更新、删除等。n设置数据持久存储服务的目的:将目标软件系统中依赖于系统运行环境的数据存取部分与其他部分相分离。2022-4-1994QQ:46203128995数据持久存储服务数据持久存储服务n数据存取通过一般的数据管理系统(如文件系统、关系数据
53、库或面向对象数据库)实现n实现细节因数据存储介质的种类而异n这些细节被集中在数据持久存储服务中,系统的其他部分只需访问数据持久服务即可,与存储介质的种类、数据在介质中的组织方式、数据存储的实现方法无关。2022-4-1995QQ:46203128996数据持久存储服务数据持久存储服务n原因:一旦存储介质发生变化或者存储格式发生变化,仅修改数据持久存储服务即可适应这些变化,目标软件系统的其余部分不需修改。l如,从文件系统改变为关系数据库,从一种数据库改为另一种数据库,数据库表格结构变化等,n优点:设置相对独立的数据持久存储服务简化了后续的软件设计、编码和测试的过程,有利于软件的扩充、移植和维护。
54、n作法:一般将数据持久存储服务实现为一个构件,接口定义通常包括基本的、通用的数据持久操作,如存储、查询、更新、删除等,见例7.42022-4-1996QQ:46203128997数据持久存储服务数据持久存储服务n如果希望该服务承担的职责非常多,也可以考虑将其实现为一个子系统,其典型结构如图7.14所示。n该子系统通常包含一个通用构件,利用它为若干面向不同业务数据的持久存储服务构件提供基础性的数据持久服务。图7.14 数据持久存储服务子系统子系统的结构2022-4-1997QQ:46203128998例例7.4 设计数据持久存储服务设计数据持久存储服务n对家庭保安系统,本例决定在体系结构中设置专
55、门负责提供数据持久服务的构件 “Data Service”,如图7.15所示。该构件的接口函数依次为: openConnection:与数据源建立逻辑连接 closeConnection:关闭与数据源间的逻辑连接 insert:执行SQL插入语句n如果存在与数据源之间的逻辑连接,则直接使用此连接执行SQL插入语句;n否则,使用 openConnection 创建连接,在此连接上执行SQL插入语句,执行后再用 closeConnection 关闭连接。2022-4-1998QQ:46203128999设计数据持久存储服务设计数据持久存储服务n下面三个接口函数的工作模式与此相似。 update:执
56、行SQL更新语句 delete:执行SQL删除语句 query:执行SQL查询语句2022-4-1999QQ:462031289100图7.15 数据持久存储服务及其与软件体系结构的整合2022-4-19100QQ:462031289101(2)安全控制服务)安全控制服务n设置安全控制服务的目的:是将目标软件系统中有关安全控制的功能集中起来,以便统一管理安全策略,提高安全策略的可配置性。n安全控制服务包含用户身份认证和授权控制两种功能,前者验证用户是否具有合法身份,后者判断用户在请求某种类型的服务时是否具有相应的权限。2022-4-19101QQ:462031289102例例7.5 设计安全控
57、制服务设计安全控制服务n如图7.16所示,家庭保安系统中核心层的软件元素在接获用户命令后,首先由安全控制服务构件“Security Service”验证用户的身份,在验证通过后才调用核心层中的业务逻辑处理功能。n“Security Service”的接口仅包含verifyUserIdentity函数,它负责验证用户输入的密码是否正确。2022-4-19102QQ:462031289103图图7.16 安全控制服务安全控制服务及其与及其与软件体系结构软件体系结构的整合的整合2022-4-19103QQ:462031289104(三)确立设计元素(三)确立设计元素n设计元素包括子系统、构件、设计类
58、。n目的:本活动以概念体系结构中的模块(职责)为基础,以软件需求的实现为目标,探索如何将概念模块组织为设计元素。进一步研究这些设计元素的职责划分和协同工作。n注意:确定设计元素的接口和相互协作关系,不需要给出设计元素的内部结构和实现途径,此项工作留给子系统设计、构件设计和类设计再进行。2022-4-19104QQ:462031289105(1)确定子系统及其接口)确定子系统及其接口确定子系统的基本方法有:n对用例按照业务上的相关性或相似性进行分组,每组用例归为一个子系统,参与这些用例实现的分析类的职责综合成为此子系统的职责n研究软件需求的分析模型中基于分析类的用例实现途径(如,交互图),将具有
59、相关或相似的业务处理职责的控制类归为一个子系统,或将所有这些控制类的职责归并后按照业务上的某种相关性或相似性进行分组,每组职责归为一个子系统。n将分析模型中的实体类分组,每组属于一个子系统,这些子系统负责对其中的实体类实施管理和控制。2022-4-19105QQ:462031289106确定子系统及其接口确定子系统及其接口n在分析模型中,如果参与用例实现的执行者是外部设备或外部软件系统,那么它对应的设计元素应该是子系统。p职责可能包括向目标软件系统提供信息,以及响应来自目标软件系统的消息。p这些职责应该体现在子系统的接口定义中。p针对这种子系统只需定义其面向目标软件系统的接口,勿需在后续的设计
60、过程中精化出子系统内部的构件或类,因为当前软件项目并不关心这种子系统的具体实现,只要通过接口与它们交互即可。2022-4-19106QQ:462031289107例例7.6 确定子系统及其接口确定子系统及其接口n针对家庭保安系统,首先研究其用例模型(见例4-9p114)和分析模型(见例5-10p151),发现其业务逻辑功能可归纳为传感器监测、配置管理和日志管理。n假设希望日志管理功能未来可被复用,所以仅针对前两种功能设置子系统,而将最后一种功能封装成构件(见例7.13)。n传感器监测子系统的职责主要来源于“开关机及复位处理” 用例、“传感器监测”用例及其扩展用例“报警电话未接通”。n为了完成这
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国方形链条市场调查研究报告
- 2025年中国数控螺纹钢轧辊月牙槽铣床市场调查研究报告
- 2025-2030年中国PVAC乳液境外融资报告
- 2025至2031年中国科研零配件行业投资前景及策略咨询研究报告
- 2025年中国体外诊断(IVD)行业市场占有率及投资前景预测分析报告
- 2025年中国双宫大格绸数据监测研究报告
- 许昌陶瓷职业学院《数字建筑概论》2023-2024学年第二学期期末试卷
- 烟台黄金职业学院《电磁场与电磁波》2023-2024学年第二学期期末试卷
- 2025至2031年中国电脑条码标行业投资前景及策略咨询研究报告
- 连锁药店经营课件
- 空调冷却冷冻水管道系统详细的施工方案设计
- 儿童超声心动图操作指南与标准课件
- 安全运输医疗垃圾的要点
- 关于员工心理健康的重要性
- 刑事案件模拟法庭剧本完整版五篇
- 2022年高考全国I卷数学高考真题(原卷版)
- 《商务英语阅读》教学大纲
- 会计学毕业论文8000字-会计学论文范文8000字
- 小学教育毕业论文6000字范文
- 《爱心树》-经典绘本省名师优质课赛课获奖课件市赛课一等奖课件
- 初级家政服务员培训烹饪篇课件
评论
0/150
提交评论