计算机软件及应用软件体系结构课件_第1页
计算机软件及应用软件体系结构课件_第2页
计算机软件及应用软件体系结构课件_第3页
计算机软件及应用软件体系结构课件_第4页
计算机软件及应用软件体系结构课件_第5页
已阅读5页,还剩507页未读 继续免费阅读

下载本文档

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

文档简介

软件体系结构第一部分天津大学计算机学院饶国政软件体系结构天津大学计算机学院课程内容

软件危机

软件体系结构概念

软件体系结构模式

体系结构的设计模式

基础结构模式

软件体系结构的其它研究领域

课程内容

软件危机第一章软件危机软件软件的发展阶段软件危机软件生命周期第一章软件危机软件软件软件=程序、数据和相关文档的完整集合软件的特点:软件是一个逻辑实体,而非物理实体;软件是人类抽象思维的产物;开发过程没有明显的制作过程;生产成本随着软件的复杂程度急剧增加(指数级);容易复制、传播;维护工作复杂。软件软件=程序、数据和相关文档的完整集合软件的发展阶段三个发展阶段程序设计阶段(50~60年代中期)程序系统阶段(60中期~70年代中期)软件工程阶段(70年代中期以来)软件的发展阶段三个发展阶段软件危机

软件危机的表现◎软件成本估计不准确

随着软件规模增长,软件开发成本往往成指数级增长。软件危机

软件危机的表现◎开发进度难以控制

由于软件是逻辑、智力产品,软件的开发需建立庞大的逻辑体系,这是与其他产品的生产不一样的。在软件开发过程中,用户需求变化等各种意想不到的情况层出不穷,令软件开发过程很难保证按预定的计划实现,给项目计划和论证工作带来了很大的困难。盲目增加软件开发人员并不能成比例地提高软件开发能力。相反,随着人员数量的增加,人员的组织、协调、通信、培训和管理等方面的问题将更为严重。◎开发进度难以控制◎软件质量差

软件项目即使能按预定日期完成,结果却不尽人意。1965年至1970年,美国范登堡基地发射火箭多次失败,绝大部分故障是由应用程序错误造成的。在“软件作坊”里,由于缺乏工程化思想的指导,程序员几乎总是习惯性地以自己的想法去代替用户对软件的需求,软件设计带有随意性,很多功能只是程序员的“一厢情愿”而已,这是造成软件不能令人满意的重要因素。◎软件质量差◎软件开发缺乏适当的文档资料

文档资料对于软件开发和软件维护是至关重要的。◎软件开发缺乏适当的文档资料◎软件维护困难

由于在软件设计和开发过程中,没有严格遵循软件开发标准,各种随意性很大,没有完整的真实反映系统状况的记录文档,给软件维护造成了巨大的困难。特别是在软件使用过程中,原来的开发人员可能因各种原因已经离开原来的开发组织,使得软件几乎不可维护。有资料表明,工业界为维护软件支付的费用占全部硬件和软件费用的40%-75%。◎软件维护困难

如何克服软件危机人们面临的不光是技术问题,更重要的是管理问题。管理不善必然导致失败。要提高软件开发效率,提高软件产品质量,必须采用工程化的开发方法与工业化的生产技术。==》软件工程

如何克服软件危机人们面临的不光是技术问题,更重软件生命周期软件从孕育、诞生、成长、衰亡的生存过程,称为软件的生命周期。六个步骤:制定计划:问题分析、可行性研究需求分析软件系统设计:总体设计、详细设计软件编码软件测试软件维护软件生命周期软件从孕育、诞生、成长、衰亡的生存过程,称为软件第二章软件体系结构基本概念重要性组件与连接器风格与模式非功能属性第二章软件体系结构基本概念第一节基本概念定义还没有达到共识。以下几个有助于我们的理解软件体系结构是一组具有一定形式的结构化元素(设计元素)组成。软件体系结构超越了计算过程中的算法设计和数据结构。四视图观点:概念上的体系结构、模块体系结构、代码体系结构和运行体系结构。四模式观点:概念模式、框架模式、动态模式、进程模式第一节基本概念定义还没有达到共识。所以:软件体系结构对软件系统的构造起着指导性作用。它回避了软件系统的功能细节,着重于讨论软件系统的总体构架。它关注的是系统结构及其组成组件。所以:修正后的软件生命周期:需求分析体系结构设计:选择模式,选择组件,组件之间的关系以及它们之间的约束。以此为框架,为详细设计奠定基础。-原为“总体设计”详细设计实现维护修正后的软件生命周期:第二节重要性良好的体系结构设计是决定软件系统成功的重要因素。早期的教训:IBMOS/360(1963-1966)第二节重要性良好的体系结构设计是决定软件系统成功的重要因素软件体系结构的指导意义作为软件开发的基本指导方针整个软件设计的开端,决定着开发工作的整体结构,具有更大的决策性和约束性。体系结构给予后继开发人员一个可实现的指导和约束。软件体系结构的指导意义作为软件开发的基本指导方针软件体系结构的指导意义对软件质量保证具有重大的影响支配了从开发到维护项目的团队组织结构对软件的修改、变动提供了保证和约束。提供了软件的可重用性软件体系结构的指导意义对软件质量保证具有重大的影响为什么体系结构没能早日引进来呢?早期软件开发被认为是个人创造力的产物,灵活性很高,从而导致开发者无规可循。早期软件开发的规模较小,开发通常由个人或者小的团队来完成,团队易于沟通交流,体系结构的要求不迫切。软件产品提交给用户的为编译后的软件,不能看到源代码,其他人难以分析其结构,阻碍了技术的传播。为什么体系结构没能早日引进来呢?早期软件开发被认为是个人创造第三节组件和连接器现代软件系统通常采用组件(构件)的开发方法组件:系统中的结构块,是软件功能设计和实现的承载体。连接器:组件之间进行连接的组件。软件体系结构的两大构成:组件、连接器第三节组件和连接器现代软件系统通常采用组件(构件)的开发方组件组件:系统中的结构块,是软件功能设计和实现的承载体。组件的表达形式:组件是由封装的内部数据结构及其操作,以及对外提供的操作方法集合组成。-例:公安局组件接口组件的特性(略)组件组件:系统中的结构块,是软件功能设计和实现的承载体。组件连接器连接:组件之间建立和维护行为关联及信息传递的途径。连接包含两方面:物质基础:连接发生和维持的机制;规约协议:连接能够正确地、无二义、无冲突地进行信息交换的保证。例:电源转接板连接器连接:组件之间建立和维护行为关联及信息传递的途径。简单连接:两个组件直接连接复杂连接:专门的连接组件(连接器)连接器A组件A组件B组件B组件简单连接:两个组件直接连接复杂连接:专门的连接组件(连接器)连接的特性(略):方向性、激发、响应特性连接的匹配(连接器如何工作的呢):修改组件:有源代码进行包装:常用方法加入中介:比较复杂或要求灵活性的握手:经常变动的系统连接的特性(略):方向性、激发、响应特性第四节风格和模式软件设计人员在长期开发某种类型软件过程中摸索到该类软件的一些规律性的东西,经过提炼总结,得到了具有普遍性的构建模式或称为构建风格。本课程将讨论学习应用较广泛的体系结构风格或模式。第四节风格和模式软件设计人员在长期开发某种类型软件过程中摸使用软件体系结构的风格和模式的意义:便于设计开发者之间互相交流促进了设计的复用也促进了代码的复用使用标准的风格和模式有利于支持互操作所以:有利于交流和理解;有利于提高软件设计实施的效率和质量;风格和模式的完善和系统化,也标志软件体系结构的成熟。使用软件体系结构的风格和模式的意义:我们对风格、模式和框架不加区分。我们讲解侧重于模式。模式分为三个层次:

系统体系结构模式(第三章)体系结构的设计模式(第四章)基础结构模式(第五章)我们对风格、模式和框架不加区分。系统体系结构模式体系结构的设计模式基础结构模式范围最大,层次最高中等规模,独立于特定语言最低层、最基础的模式,和特定语言有关系统体系结构模式体系结构的设计模式基础结构模式系统体系结构模式体系结构的设计模式基础结构模式范围最大,层次卷一、卷二、卷三参考书卷一、卷二、卷三参考书RobertC.Martin清华大学出版社RobertC.Martin第五节非功能属性功能属性非功能属性:易修改性:可维护性可扩展性结构重组第五节非功能属性功能属性可移植性:硬件平台、操作系统、用户界面、编程语言互操作性:软件需要经常与其它系统和周围的硬软件软件入口可移植性:可靠性容错能力健壮性效率响应时间、吞吐率、存储空间可靠性可重用性重用现有的组件和重用以前的项目、商业库、设计分析、设计说明。为重用进行软件开发可测试性软件系统变的越来越大,越来越复杂,软件测试工作也变得越来越困难和昂贵。可重用性第三章系统体系结构模式十种模式:管道-过滤器、分层、知识库(黑板)、MVC、PAC、客户与服务器、COM/DCOM/COM+、代理者、微核、映像、异构第三章系统体系结构模式客户与服务器、每种体系结构的讲解内容概述结构:静态动态特性实现特性变体优缺点Google八周岁了!每种体系结构的讲解内容概述Google八周岁了!第1节管道-过滤器概述结构动态特性实现特性变体优缺点第1节管道-过滤器概述1概述数据流处理系统示例:UNIX操作系统的管道-过滤器示例:语言编译器1概述数据流处理系统扫描器语法分析编译器语义分析调用输入代码生成扫描器语法分析编译器语义分析调用输入代码生成2静态结构过滤器组件过滤器组件管道过滤器组件管道输入输入输出输出数据源输出数据池2静态结构过滤器组件过滤器组件管道过滤器组件管道输入输过滤器组件3种激活方式(1)后续的组件从过滤器中拉出数据;(2)前面的组件向过滤器推入新数据;(3)过滤器处于活跃状态,以循环的方式,不断地从前面的组件中拉出数据,并向后续的组件推入数据。前两种称为被动过滤器;后一种称为主动过滤器过滤器组件3种激活方式数据源(1)主动:将数据推入过滤器(2)被动:在过滤器需要时被动提供数据数据源(1)主动:将数据推入过滤器数据池(1)主动:从过滤器拉出来数据(2)被动:在过滤器把结果推入或写入数据池(1)主动:从过滤器拉出来数据管道组件管道是过滤器之间的连接。管道:(1)对被动过滤器的直接调用。(2)两个主动过滤器进行同步管道组件管道是过滤器之间的连接。一般结构过滤器过滤器管道-过滤器结构过滤器管道数据流数据源数据池过滤器一般结构过滤器过滤器管道-过滤器结构过滤器管道数据流数据源数3动态特性3动态特性[计算机软件及应用]软件体系结构课件4实现(1)把系统任务分成几个独立的处理阶段。(2)定义沿着每个管道传输的数据格式。(3)决定管道的连接。(4)设计和实现过滤器。(5)设计出错处理。(6)建立处理流水线。4实现(1)把系统任务分成几个独立的处理阶段。应用举例搜索引擎快速全面的原因抓取、分词、索引、页面等级评定、查询应用举例搜索引擎[计算机软件及应用]软件体系结构课件[计算机软件及应用]软件体系结构课件5特性(1)每个过滤器都是独立的整体,相互之间的状态互不影响。(2)过滤器并不知道它的上游和下游连接的过滤器的特性。(3)运行结果的正确性不依赖于各个过滤器运行的次序。5特性(1)每个过滤器都是独立的整体,相互之间的状态6变体(1)限制过滤器为单输入、单输出:从拓扑结构上看,为线性过滤器组件过滤器组件管道过滤器组件管道输入输入输出输出输出6变体(1)限制过滤器为单输入、单输出:从拓扑结构(2)如果允许过滤器的输入或输出多于一个:造成反馈回路(拓扑结构:有向图)。需要保证系统可终止。(3)有名管道(文件)过滤器过滤器管道-过滤器结构过滤器管道数据流数据源数据池过滤器(2)如果允许过滤器的输入或输出多于一个:造成反馈回路(拓扑7优缺点1、优点易于重组,增加了系统的灵活性。易于更新、升级和维护易于重用。并行处理提高了系统的效率。?快速原型系统的设计实现拓扑结构清晰,方便性能分析。7优缺点1、优点优缺点2、缺点会导致数据的批处理方式。不适合处理交互式应用要求。增加了系统的开销和复杂性。共享状态信息代价高且不灵活。用并行处理来获得高效率是不可行的。?难以进行错误处理。优缺点2、缺点第2节分层结构

1、概述

复杂系统的解决方法之一:层次化软件系统的发展过程就是不断分层的过程

层次系统组织成一个层次结构,每一层为上层服务,并作为下层客户。

第2节分层结构1、概述网络网络操作系统(Windows为例)操作系统(Windows为例)数据库数据库2分层的静态结构系统的每一层向它的上一层提供服务,同时又作为下一层的客户,调用下层提供的功能函数。简单分层的结构(3层)核心层功能层应用层2分层的静态结构系统的每一层向它的上一层提供服务,同时又[计算机软件及应用]软件体系结构课件3分层的方案简单、直观最主要特征:N层的服务只能被N+1层调用,各层之间没有更多的依赖性。3分层的方案简单、直观[计算机软件及应用]软件体系结构课件组件3组件3<<组件2的服务>>组件2组件2<<组件1的服务>>组件1组件1组件1组件3组件3<<组件2的服务>>组件2组件2<<组件1的服务4分层的动态特性一、自顶向下:请求4分层的动态特性一、自顶向下:请求二、自底向上:通知二、自底向上:通知三、部分请求三、部分请求四、部分通知四、部分通知五:协议堆栈五:协议堆栈5分层结构的实现(1)为便于分层,定义抽象准则(2)根据抽象准则定义抽象层数(3)给每一层命名并指定它们的任务(4)指定服务5分层结构的实现(1)为便于分层,定义抽象准则(5)为每个层定义接口:黑盒(6)构建独立的层(7)确定相邻层间的通信:推/拉模式(8)降低相邻层的耦合程度(9)设计错误处理策略:近可能在低层(5)为每个层定义接口:黑盒6分层的应用实例通信协议TCP/IP6分层的应用实例通信协议TCP/IP虚拟机虚拟机API栈API栈J2EE的结构图(.NET结构类似)J2EE的结构图(.NET结构类似)J2EEBlueprintsSun公司的J2EE开发技术的演示网上宠物商店:不断更新展示最新的Java开发技术三层结构表示层业务逻辑层数据层(持久层)J2EEBlueprintsSun公司的J2EE开发技术的[计算机软件及应用]软件体系结构课件使用界面和功能介绍宠物展示购物车用户登录配货处理Ajax支持使用界面和功能介绍[计算机软件及应用]软件体系结构课件GoogleMapGoogleMap[计算机软件及应用]软件体系结构课件[计算机软件及应用]软件体系结构课件[计算机软件及应用]软件体系结构课件表示层组件<<业务层的服务>>业务层组件<<数据层的服务>>数据层组件数据层组件表示层业务层数据层表示层组件<<业务层的服务>>业务层组件<<数据层的服务>>[计算机软件及应用]软件体系结构课件[计算机软件及应用]软件体系结构课件JSP、HTML<<SessionBean接口>>SessionBean<<EntityBean接口>>EntityBeanEntityBean表示层业务层数据层JSP、HTML<<SessionBean接口>>Sessi7分层结构的变体(1)松弛(宽松)分层结构定义:有些层可以直接使用下面几层的服务,而不仅是相邻层的服务。特点:增加了灵活性和效率,但却牺牲了可维护性。应用:常用于系统软件,较少用于应用软件。7分层结构的变体(1)松弛(宽松)分层结构(2)通过继承的分层结构定义:低层作为基类,较高的层通过继承来使用低层的服务。优点:高层可以根据需要修改低层的服务。缺点:继承关系把高层和低层紧密联系在一起。(违反了“合成/聚合复用原则“)(2)通过继承的分层结构8分层结构的优缺点优点:(1)层的重用(2)对软件标准化的支持(3)局部依赖性(4)可替换性8分层结构的优缺点优点:缺点:(1)更改行为的连锁性(2)运行效率低(3)可能增加许多不必要的工作:(可能低层执行了许多高层不需要的重复性工作)(4)很难确定分层的准确程度缺点:第三节知识库(黑板)结构第三节知识库(黑板)结构1概述(1)适合无确定性求解策略的问题难以用数学精确处理的问题:医疗、地震、天气人工智能:专家系统、模式识别、智能机器人(2)黑板系统是知识库系统的一种。(3)示例:HEARSAY-II语音识别系统HASP潜艇探测系统CRYSALIS蛋白质分子的三维结构1概述(1)适合无确定性求解策略的问题2结构组成部分(1)表示当前状态的中心公共数据结构:黑板(2)知识库:是一些独立的、分离的与应用程序有关的知识库(3)一组对公共数据结构进行协同操作的独立程序集合(4)推理机:中心控制组件,对黑板的信息进行评估,并协调各专用程序进行工作。2结构组成部分

仓库系统及知识库

仓库系统及知识库[计算机软件及应用]软件体系结构课件初始状态目标状态中间状态中间状态推理知识库知识库知识库知识库初始状态目标状态中间状态中间状态推理知识库知识库知识库知识库3动态特性(1)描述初始数据到黑板中(2)启动控制组件的主循环(3)控制组件调用nextsource()过程,选择下一条知识(4)nextsource()通过检测黑板确定哪些知识是可匹配的知识-用知识的条件部分匹配黑板上的数据3动态特性(1)描述初始数据到黑板中(续)(5)根据预先确定的控制策略进行评估,在所有匹配的知识中选择一条知识进行操作(6)根据该条知识的操作部分,更新黑板上数据的内容(7)控制策略判断是否已达到系统终止条件,如果未达到,转向步骤3(8)终止(续)(5)根据预先确定的控制策略进行评估,在所有匹配的知识[计算机软件及应用]软件体系结构课件4实现(1)定义问题(2)定义问题的解空间(3)将求解过程分成几个步骤(1)定义如何将低级中间解转换成更高等级解(2)定义如何进行启发性搜索(3)详细指出修剪部分解空间的知识类型(4)将知识分解成与一定子任务相关联的专门知识(5)定义黑板上的词汇集4实现(1)定义问题(6)设计系统的控制(7)实现知识库(6)设计系统的控制5应用实例HEARSAY-II-语音查询,数据库-类似于Google的语音搜索5应用实例HEARSAY-II6优缺点优点:(1)可应用于许多没有确定解方法的问题(2)支持可更改性和可维护性(3)知识可重用(4)支持容错性和健壮性6优缺点优点:缺点:(1)测试困难(2)不能保证最优的求解方案(3)效率低(4)开发工作昂贵(5)缺少对并行机制的支持缺点:第四节MVC结构第四节MVC结构1、概述图形用户界面-增强和用户的交互性用户界面的问题:用户界面经常需要变动不同的用户对用户界面的要求不同:熟练用户和初级用户同样的数据需要不同的用户界面用户界面和功能核心的关系1、概述图形用户界面-增强和用户的交互性解决之道不可取的方式:用户界面和功能核心紧密结合目标:用户界面的易改动性、功能核心的相对稳定性解决方案:MVC(模型-视图-控制)结构解决之道不可取的方式:用户界面和功能核心紧密结合MVC结构首先应用在Smalltalk环境。目前广泛应用于图形用户界面和交互式系统。比如:MFC、ET++、Java类库、Spring、Struts等MVC结构首先应用在Smalltalk环境。2、MVC静态结构3个组成部分:模型、视图、控制模型:系统处理问题逻辑的内在抽象。它封装了问题的核心数据,以及逻辑和功能的计算关系。-内在视图:把表示模型的数据和逻辑关系以及系统的状态等信息以特定的方式显示给用户。-外表控制:处理用户和应用系统的交互操作。2、MVC静态结构3个组成部分:模型、视图、控制模型、视图、控制的分离,使得一个模型可以具有多个显示视图。模型变化的传播机制:模型、视图、控制保证一致性。模型、视图、控制的分离,使得一个模型可以具有多个显示视图。[计算机软件及应用]软件体系结构课件MVC的几个部分MVC的几个部分3MVC的动态特性3MVC的动态特性4MVC的设计实现1、分析应用问题,将交互界面与核心功能分离2、实现观察器、模型;并实现它们之间的变更-传播机制(注册)。classobserver{public:virtualvoidupdate(){}};4MVC的设计实现1、分析应用问题,将交互界面与核心功能classModel{public:Voidattach(observer*s);Voiddetach(observer*s);Virtualvoidnotify();Private:Collection<observer*>registry;};classModel{VoidModel::notify(){Iterator<observer*>iter(registry);While(iter.next()){iter.curr()->update();}}VoidModel::notify(){3、实现视图ClassView:publicobserver{Public:view(Model*m):myModel(m),myController(0){myModel->attach(this);}virtual~view(){myModel->detach(this);}virtualvoidupdate(){this->draw();}virtualvoidinitialize(){}virtualvoiddraw();VoidsetModel(Model*m){myModel=m;}Model*getModel(){returnmyModel;}VoidsetController(Controller*c){myController=c;}Controller*getController(){returnmyController;}protected:Model*myModel;Controller*myController;};3、实现视图ClassView:publicobse4、实现控制器ClassController:publicobserver{Public:VirtualvoidhandleEvent(event*){}Controller(view*v):myView(v){myModel=myView->getModel();myModel->attach(this);}virtual~Controller(){myModel->detach(this);}virtualvoidupdate(){}VoidsetModel(Model*m){myModel=m;}Model*getModel(){returnmyModel;}VoidsetView(View*c){myView=c;}Controller*getView(){returnmyView;}protected:Model*myModel;Controller*myView;};4、实现控制器ClassController:publ[计算机软件及应用]软件体系结构课件实例实例5MVC的变体1、将视图和控制器合并在一个组件中(文档-视图):典型案例为MFC5MVC的变体1、将视图和控制器合并在一个组件中(文档-观察者模式(Observer模式)观察者模式(Observer模式)实例实例[计算机软件及应用]软件体系结构课件[计算机软件及应用]软件体系结构课件6MVC的优缺点优点:⑴:同一模型可有多个视图⑵:视图同步化⑶:视图与控制器可接插性⑷:模型的可移植性⑸:潜在的框架结构6MVC的优缺点优点:缺点:⑴:增加了系统结构的复杂性⑵:视图与控制器间的连接过于紧密⑶:数据访问的效率⑷:使用现代用户界面工具的困难缺点:第五节PAC结构第五节PAC结构1、PAC结构概述表示-抽象-控制体系结构是以相互协作的代理程序组成的层次形式来定义的交互式软件体系结构。每个代理程序负责应用程序的某一个特定功能方面,而且每个代理程序均由表示、抽象和控制3个组件。PAC结构把代理程序的人机交互部分与其功能内核及其通信部分分隔开来。1、PAC结构概述表示-抽象-控制体系结构是以相互协作的代理所以:在这种结构中,是将系统功能进行横向分解。分解为多个代理程序。这些代理程序互相交互来完成软件的功能。所以:在这种结构中,是将系统功能进行横向分解。2、PAC结构的方案树状的代理程序集合来建立交互式应用程序树根部分-顶层的代理程序树干部分-中层的代理程序树叶部分-低层的代理程序整个树型图反映了代理程序之间的传递关系。每个代理程序依赖于它上面的代理程序,直至树根部的顶层代理程序。-依赖倒转原则2、PAC结构的方案树状的代理程序集合来建立交互式应用程序[计算机软件及应用]软件体系结构课件PAC到哪儿去了呢?在每个代理程序内部,都包括了PAC三个组件:表示组件(P):提供PAC代理程序的可视行为。抽象组件(A):基础的数据模型。控制组件(C):连接表示组件和抽象组件,并与其他组件通信。PAC到哪儿去了呢?在每个代理程序内部,都包括了PAC三个组以此为例,说明树根、树叶、树干部分的代理程序的功能。以此为例,说明树根、树叶、树干部分的代理程序的功能。3、PAC结构PAC结构中的各部分的功能分析(1)树根部的代理程序抽象组件:反映的软件的整体数据模型表示组件:一般很少有职责控制组件:协调各级代理程序之间的关系3、PAC结构PAC结构中的各部分的功能分析(2)树叶代理程序:具体语义概念抽象组件:维护本代理的数据。表示组件:语义视图,对用户的交互。控制组件:与上层代理的通信、交换事件与数据。(2)树叶代理程序:具体语义概念(3)树干代理程序:合成与协作抽象组件:维护本代理特殊的数据。表示组件:实现自己的视图。控制组件:与上下层代理的通信、交换事件与数据。(3)树干代理程序:合成与协作[计算机软件及应用]软件体系结构课件4、动态特性4、动态特性5、PAC结构的设计实现共分九步。关键的部分:根部PAC代理程序、叶部PAC代理程序、树干部PAC代理程序5、PAC结构的设计实现共分九步。6、应用实例6、应用实例

7、优缺点优点:(1)事物分离-单一职责原则(2)易于变化和扩展-易于变化(迪米特法则)、扩展(依赖倒转原则)(3)支持多任务-代理程序可分配到不同的线程、进程或机器上。

7、优缺点优点:缺点:(1)系统的复杂性提高(2)控制组件复杂(3)代理程序间的通信会影响系统效率(4)分解粒度越小,则用户界面相似性越多,但可用性就越差。缺点:第六节客户/服务器结构第六节客户/服务器结构1、概述MVC、PAC解决:同一程序内的不同部分的交互问题。那么不同程序之间的交互如何处理呢?为什么会出现“不同程序之间的交互”呢?1、概述MVC、PAC解决:同一程序内的不同部分的交互问题。1)一个程序不可能完成所有的工作;这些非核心的工作需要交给其他的程序。如数据库服务器程序2)地理位置的分隔,也必然会使得两个程序需要交互。网络应用程序1)一个程序不可能完成所有的工作;这些非核心的工作需要交给其客户/服务器结构一个应用系统被分成了两个逻辑上分离的部分:客户、服务器。它们完成不同的功能。客户:发出请求服务器:接受请求,完成服务功能。客户/服务器结构发展演变过程1、基本客户/服务器系统客户-负责与用户的交互,向服务器请求服务器-负责操作数据库,并把查询结果发送给客户发展演变过程1、基本客户/服务器系统2、把客户和服务器中的应用操作部分抽取出来形成应用逻辑服务器。客户-与用户的交互应用逻辑服务器-复杂处理2、把客户和服务器中的应用操作部分抽取出来形成应用逻辑服务器3、减轻客户端的开发,统一客户端应用,引入浏览器和WWW服务器3、减轻客户端的开发,统一客户端应用,引入浏览器和WWW服务[计算机软件及应用]软件体系结构课件2、客户/服务器的结构1)系统组成客户:根据需要向服务器发出请求,得到结果后将信息显示给用户服务器:等待接收客户的请求,向客户提供服务2、客户/服务器的结构1)系统组成2、客户/服务器的结构2)两组件之间的关系客户:数量不定,请求的时间不定服务器:首先启动,随时提供服务。服务器需要公开自己能够提供的服务接口,便于客户端根据服务接口来请求。-接口。2、客户/服务器的结构2)两组件之间的关系2、客户/服务器的结构3)客户/服务器的连接分成两种:两个程序在同一台机器:信号、消息、共享存储区、网络连接两个程序在不同的机器:网络连接2、客户/服务器的结构3)客户/服务器的连接2、客户/服务器的结构网络连接进程标识:操作系统使用的进程号,但不能用在网络上。端口号在网络上需要还标识机器:IP地址半相关(三元组)、全相关(五元组)如何在程序中调用网络功能呢?2、客户/服务器的结构网络连接直接处理每一位?如何和对方连接?如何处理差错?如何解决流量等问题?这些工作不可能我们来一一解决。需要借助于操作系统提供的系统服务。SocketAPI(网络套接字):可以把Socket简单想像成一个文件直接处理每一位?如何和对方连接?[计算机软件及应用]软件体系结构课件3、客户/服务器的连接1)连接的要求(1)双方的交互必须通过定义好的接口来实现(2)双方交互的信息必须满足规定的语法形式:协议(3)信息传送的方向:客户到服务器是请求信息,从服务器到客户为返回结果和状态信息(4)传送的信息可能需要打包、解包、加密等处理3、客户/服务器的连接1)连接的要求3、客户/服务器的连接2)连接的检测:服务器不可取的方式:循环检测常用的方式:中断的方式服务器的守护进程首先启动,处于等待状态;有客户请求到达会立即响应,然后又回到等待状态准备接受下一个请求。3、客户/服务器的连接2)连接的检测:服务器3)连接方式:信号、消息、共享存储区、网络连接4)连接的协议调用的名称、参数的个数、顺序、类型,执行的方式、返回值的类型等。3)连接方式:信号、消息、共享存储区、网络连接4、服务器的调度挑战:服务器需要时刻准备着,处理来自不同客户的请求,而且要同时接受和处理多个不同的请求。如何解决?4、服务器的调度挑战:服务器需要时刻准备着,处理来自不同客户(1)进程调度主进程从进程从进程从进程客户客户客户(1)进程调度主进程从进程从进程从进程客户客户客户(2)线程调度主进程从线程从线程从线程客户客户客户(2)线程调度主进程从线程从线程从线程客户客户客户(3)线程池调度(3)线程池调度5、客户/服务器的变体前述的客户/服务器结构中,客户和服务器是强耦合的:客户需要知道服务器的准确位置。带来的问题:1)当服务器改变位置时,客户程序不再能够访问服务器。2)当有多个服务器时,无法给客户提供更优的服务。-负载平衡5、客户/服务器的变体前述的客户/服务器结构中,变体:客户/分配器/服务器变体:客户/分配器/服务器[计算机软件及应用]软件体系结构课件客户/服务器模式作业1、线程相对于进程来说,执行效率高于进程,同时节省了资源。请问Java中对于线程提供了哪些辅助类?2、原示例程序中服务器(Server)的调度采用的是线程调度方式(p71),请将其修改为线程池的调度方式。给出Server类的新源代码。客户/服务器模式作业1、线程相对于进程来说,执行效率高于进程第七节COM/DCOM/COM+结构第七节COM/DCOM/COM+结构潘爱民译《COM本质论》北京大学计算机技术研究所教学资料《com组件技术》/潘爱民译《COM本质论》软件环境的变化单任务多任务文字界面图形界面单线程多线程平台相关跨平台单机(本地)网络(分布式)单一语言多种语言软件环境的变化单任务多任务文字界面图形界面单线程多线程平台相1、概述如何在IE中打开word文件、Excel文件;如何在CAD中插入图片;如何在PPT文件中编辑公式和音频?OLE(ObjectLinkingandEmbedding)-多种资源和复合文档1、概述如何在IE中打开word文件、Excel文件;如何在应用程序之间需要交互和组合功能。例:数据库服务器、网页服务器IIS问题:文档编辑服务器、电子表格服务器、声音处理服务器、公式服务器?怎么办?能否利用Word、Excel、Mediaplayer、公式编辑器?应用程序之间需要交互和组合功能。COMWord、Excel、公式编辑器等等程序需要采用标准的方式来提供。COM-组件对象模型,1993年发布是一种基于面向对象概念的组件之间互联和通信的二进制代码模型。是一种支持可组装的可执行代码的结构标准。按照COM标准建立的可执行组件均具有标准的接口,通过这些接口实现组件间透明的连接和互操作。COMWord、Excel、公式编辑器等等程序需要采用标准的计算机网络的发展分布式系统的发展软件系统从集中式(单机)向分布和协作式发展。组件分布在多台机器上,通过网络实行透明的通信和互操作。计算机网络的发展DCOMDCOM-分布式组件对象模型是COM在网络环境下的扩展。COM-LPC(本地过程调用)DCOM-RPC(远程过程调用)DCOMDCOM-分布式组件对象模型COM+COM+是一种依赖于松散耦合LCE的消息机制COM/DCOM依赖于紧耦合TCE小结:COM组件技术是一种基于本地过程调用LPC、远程过程调用RPC和标准操作接口的系统互联的工业标准。并且成为在因特网上实现多层体系结构的支持技术。COM+COM+是一种依赖于松散耦合LCE的消息机制小结:新发展J2EE平台.NET框架新发展J2EE平台2、COM组件结构(静态)面向对象模型->组件对象模型相同点:组件=内部数据成员(状态)+操作方法组件必须通过将类实例化后才能运行。DLL:组件实例EXE:实例代理2、COM组件结构(静态)面向对象模型->组件对象模型不同点:COM组件的调用是通过接口实现的。接口:提供给外界的函数的集合。(公安局)一个组件角色多个,可以定义多个接口(不提倡一个组件一个总接口,接口隔离原则)COM组件的运行功能和一般对象不同。COM组件是一个独立运行的操作系统任务或进程。比如word.exe:文档编辑应用+文档操作服务不同点:COM中的组成COM整体为一个客户/服务器结构。服务器:COM组件,专门为用户提供逻辑操作服务的(类似数据库服务器)。服务器应该提供多线程:多个用户同时请求异步操作请求:不需用户长时间等待COM中的组成COM整体为一个客户/服务器结构。客户:调用接口函数调用方式:同步调用和异步调用客户组件解决程序之间的通信问题——组件基本问题客户:客户组件解决程序之间的通信问题——组件基本问题3、接口客户和组件是通过接口交互的:要求跨语言、跨编译器、跨平台1、接口采用何种语言定义?C、C++、Java等?语言无关的:IDL!示例:InterfaceIAlarmer{HRESULTinitialize();HRESULTConnect([in]string,[in]string);HRESULTDisconnect([in]string);HRESULTUpdateMsg([in]string);HRESULTDeleteMSG([in]string);}3、接口客户和组件是通过接口交互的:要求跨语言、跨编译器、跨对此种接口,C++、VB、Java怎么使用呢?需要把IDL描述的接口转换到具体的语言形式C++中的MIDLJava中的IDLJ对此种接口,C++、VB、Java怎么使用呢?2、工作模式2、工作模式3、默认接口:IUnKnown接口InterfaceIUnKnown{HRESULTQueryInterface([in]REFIIDiid,[out]void**ppv);ULONGAddRef(void);ULONGRelease(void);}3、默认接口:IUnKnown接口[计算机软件及应用]软件体系结构课件4、COM组件生存期引用计数AddRef()Release()注意:在整个生存期内,AddRef与Release一定要配对,否则:漏掉AddRef,程序出错漏掉Release,对象永不释放4、COM组件生存期5、COM组件接口查询及其设计原则HRESULTQueryInterface([in]REFIIDiid,[out]void**ppv);COM接口的标识——IID,是一个128位的长整数5、COM组件接口查询及其设计原则接口查询中:默认接口是唯一的;接口自反性接口对称性接口传递性接口查询中:COM中IUnknown接口解决了两个重要的问题动态接口发现,允许对象支持多个接口、允许在运行时刻确定对象是否支持某些接口生命周期管理COM中IUnknown接口解决了两个重要的问题COM接口IID:128位整数接口定义语言COMIDL对应于C++中由纯虚函数组成的类单继承,基接口:IUnknownCOM接口6、接口的特性接口的二进制特性接口不变性:接口是对外界的承诺接口的动态多变性:接口的实现可以变化6、接口的特性4、COM组件的不同类型1、进程内组件客户和启动的组件在客户的同一进程中运行。Windows中,DLL(动态链接库)本地启动:进程内组件外地启动:组件代理4、COM组件的不同类型1、进程内组件[计算机软件及应用]软件体系结构课件2、进程外组件COM组件被启动后,在自身独立的进程中运行两种形式:可执行程序的EXE形式,不管本地外地,均为进程外DLL形式,远程启动时为进程外2、进程外组件[计算机软件及应用]软件体系结构课件DLL和EXE两种代码形式是在编译时确定的。区别:EXE可执行程序式的组件:无论激活方式,只对应同一个组件DLL动态链接库:每一个应用将拥有不同的组件个体DLL运行效率高于EXE:进程间通信EXE稳定性高于DLL:独立进程DLL和EXE两种代码形式是在编译时确定的。5、COM组件的运行1、注册应用程序如何找到组件呢?注册机构:唯一、确定的。如注册表5、COM组件的运行1、注册TreeView组件的注册信息TreeView组件的注册信息2、COM库系统级的核心代码支持COM库:提供组件创建和组件操作的API函数,通过注册表查找组件代码,实现组件名与组件代码的全路径文件名的转换,以及为组件运行提供组件之间通信的LPC和RPC代码。2、COM库对象的创建过程对象的创建过程COM对象创建过程客户组件COM创建函数COM库DllGetClassObject类厂对象接口指针COM对象创建过程客户组件COM创建函数COM库DllGet[计算机软件及应用]软件体系结构课件3、COM组件代码的重用二进制的重用:不同于代码的重用两种:包容:接口的转换聚合:接口的查询3、COM组件代码的重用[计算机软件及应用]软件体系结构课件[计算机软件及应用]软件体系结构课件6、COM组件的变体和扩展1、连接点组件:双向COM6、COM组件的变体和扩展1、连接点组件:双向COM[计算机软件及应用]软件体系结构课件[计算机软件及应用]软件体系结构课件2、DCOM表面上看,单机到网络,LPC到RPC即可实际,安全、可靠性、性能等问题需要考虑:调用阻塞、中断、信息丢失、异步调用、异常处理例:检测客户是否正常,ping周期2、DCOM[计算机软件及应用]软件体系结构课件3、COM+组件COM/DCOM为LPC和RPC过程调用紧耦合消息COM+:松耦合消息3、COM+组件[计算机软件及应用]软件体系结构课件COM+是什么?面向企业应用提供了企业应用所需要的通用基础设施设计企业应用要求有思想上的根本变化COM+对COM的增强和改进增强了COMruntimelibrary增强了MTS(MicrosoftTransactionServer)事务服务、安全服务提供了新的runtime服务队列服务、事件服务、负载平衡、(内存数据库)COM+兼容COM,只是提供了更多的功能COM+是什么?面向企业应用COM+:interception技术COM对象机器、进程或者套间边界ProxyRPC通道StubClientPolicy1ClientPolicy2ServerPolicy2ServerPolicy1COM+:interception技术COM对象机器、进程或COM之前的应用在COM之前,应用程序是完全分开的实体,它们之间只有很少或没有任何集成关系应用代码和数据结构小结COM之前的应用在COM之前,应用程序是完全分开的实体,它COM组件模型COM提供了组件集成的方法.但是,每个组件必须提供细节复杂的通讯接口,对象不能直接交互COM组件模型COM提供了组件集成的方法.但是,每个组件COM的优缺点COM的优点:在构建组件软件方面,COM优于简单的DLL模型许多公司都使用COM构建了他们自己的核心系统。如:N的后端使用COMCOM成功的关键之一:强调接口COM的优缺点COM的优点:COM的缺点:COMDLLs的名字和配置信息都进入注册表,将导致注册表过重的负担因为COM使用注册表(每个使用者都可以看到),所以不可能隔离私有的组件注册表为应用程序的安装和卸载过程增加了复杂性接口一旦发布决不能变化,发布后变化接口将破坏可靠性和可预测性。客户使用接口必须遵循严格的规则COM组件的数据类型一致性问题:使用各自的类型系统,比如VB组件使用VARIANT类型COM的缺点:走向.NET使用.NETFramework的公共语言运行时(CLR),所有的组件都建立在一个共同的底层基础上。不再需要通讯的繁琐细节,对象可以直接交互走向.NET使用.NETFramework的公共语言运行Microsoft.NET把系统平台从Windows桌面转移到Internet上来Internet作为.NET的平台WebServices新观念:软件作为服务核心技术XML:把各种数据和服务连接起来WebService.NETFrameworkMicrosoft.NET把系统平台从Windows桌面转第八节代理者(Broker)第八节代理者(Broker)1、概述公共信息系统-网络订票服务宾馆预定导游服务等等1、概述公共信息系统-网络公共信息不断增加、不断扩展和更新的。要求:系统不断改变和增长每个服务之间互相隔离,以减少变动的影响。客户端不必知道服务器端的具体地址而获得服务。公共信息不断增加、不断扩展和更新的。要求:解决方法:代理者(Broker)用于构建中间有隔离组件的分布式系统。解决方法:代理者(Broker)2、问题分析与方案构建复杂的分布式的软件系统,遇到的问题:系统功能需要分割->系统是由独立但相互之间可以互相操作的组件组合分布式组件需要相互通信时,需要组件间的通信手段组件的添加、移动、激活、定位->客户不应该过多地依赖系统的各种具体细节2、问题分析与方案构建复杂的分布式的软件系统,遇到的问题:解决问题:地址透明在运行期间更换、添加或移动各组件(开闭原则)系统对用户隐藏特定系统和特定实现的细节解决方案-代理者客户代理者服务器解决问题:客户代理者服务器2、问题分析与方案提供代理者之后的结果地址透明,客户开发简单消息调用(不必把重点放在低级的进程间通信)体系结构灵活,很容易做到对组件动态改变、添加、删除和重定位2、问题分析与方案提供代理者之后的结果静态结构六种成分:客户、服务器、代理者、客户端代理、服务器代理、桥接(网桥)静态结构六种成分:服务器功能:实现多种服务,一个或多个对象服务的展示:接口例子:WWW服务器服务器客户程序:请求服务的程序发送给代理者,由代理者转发客户程序:代理者:中介者客户到服务器的请求服务器返回给客户的应答或状态信息为服务器提供服务注册负责激活服务器定位服务器例子:信息系统-URL代理者:中介者基本组成部分基本组成部分客户端代理:客户-代理者之间,附加层效果:对客户隐藏了代理者,客户好像使用本地服务一样例如:隐藏了客户和代理者之间的进程通信机制、参数和结果的列集等等客户端代理:客户-代理者之间,附加层服务器端代理:代理者和服务器之间功能:⑴负责接收请求,解析收到的消息,散集参数,调用适当的服务。⑵返回的信息,进行数据的列集传送给客户⑵服务器端代理:代理者和服务器之间⑵桥接(网桥):功能:代理者运行在异构系统上,采用桥接来隐藏两个代理者互相操作时的实现细节。桥接(网桥):[计算机软件及应用]软件体系结构课件[计算机软件及应用]软件体系结构课件直接通信通信方式客户代理者服务器直接通信通信方式客户代理者服务器间接通信通信方式客户代理者服务器客户分配器服务器间接通信通信方式客户代理者服务器客户分配器服务器动态特性客户代理者服务器客户端代理服务端代理动态特性客户代理者服务器客户端代理服务端代理[计算机软件及应用]软件体系结构课件客户代理者服务器客户端代理服务端代理代理者网桥客户代理者服务器客户端代理服务端代理代理者网桥[计算机软件及应用]软件体系结构课件5、设计与实现1、对象模型2、组件互操作性IDL接口定义语言3、代理者与客户和服务器的API函数客户侧:构建客户请求、请求发送、接受回应服务器侧:代理者注册客户代理者服务器5、设计与实现1、对象模型客户代理者服务器4、客户和服务器代理对象客户端代理服务器代理客户代理者服务器客户端代理服务端代理4、客户和服务器代理对象客户代理者服务器客户端代理服务端代理5、设计代理者组件-客户与服务器之间传递消息的信使功能:1)请求发送、状态返回2)两端代理未提供参数的列集和散集->代理提供3)客户服务器的异步通信->消息缓冲区4)目录服务5)名字服务6)动态方法调用7)系统失效的处理5、设计代理者组件6、开发IDL编译器6、开发IDL编译器6、变体与扩展1、直接通信2、消息传递:以数据传输为重点3、交易器代理者系统客户请求目标为服务,而非服务器4、适配器代理者系统5、回调代理者系统消费者产生需求6、变体与扩展1、直接通信7、代理者结构的应用①城市信息系统+宾馆预定系统②万维网③COBRA公共对象请求代理体系结构④OLE对象连接与嵌入7、代理者结构的应用①城市信息系统+宾馆预定系统8、代理者结构的优缺点优点:定位的透明性:唯一的标识符定位服务器组件的可变更和可扩展性系统的移植性不同代理者系统间的互操作性可重用性8、代理者结构的优缺点优点:缺点:效率较低:中间层,引入灵活性、可移植性、可变更性,而降低了效率容错性较差测试和调试较困难。缺点:软件体系结构第一部分天津大学计算机学院饶国政软件体系结构天津大学计算机学院课程内容

软件危机

软件体系结构概念

软件体系结构模式

体系结构的设计模式

基础结构模式

软件体系结构的其它研究领域

课程内容

软件危机第一章软件危机软件软件的发展阶段软件危机软件生命周期第一章软件危机软件软件软件=程序、数据和相关文档的完整集合软件的特点:软件是一个逻辑实体,而非物理实体;软件是人类抽象思维的产物;开发过程没有明显的制作过程;生产成本随着软件的复杂程度急剧增加(指数级);容易复制、传播;维护工作复杂。软件软件=程序、数据和相关文档的完整集合软件的发展阶段三个发展阶段程序设计阶段(50~60年代中期)程序系统阶段(60中期~70年代中期)软件工程阶段(70年代中期以来)软件的发展阶段三个发展阶段软件危机

软件危机的表现◎软件成本估计不准确

随着软件规模增长,软件开发成本往往成指数级增长。软件危机

软件危机的表现◎开发进度难以控制

由于软件是逻辑、智力产品,软件的开发需建立庞大的逻辑体系,这是与其他产品的生产不一样的。在软件开发过程中,用户需求变化等各种意想不到的情况层出不穷,令软件开发过程很难保证按预定的计划实现,给项目计划和论证工作带来了很大的困难。盲目增加软件开发人员并不能成比例地提高软件开发能力。相反,随着人员数量的增加,人员的组织、协调、通信、培训和管理等方面的问题将更为严重。◎开发进度难以控制◎软件质量差

软件项目即使能按预定日期完成,结果却不尽人意。1965年至1970年,美国范登堡基地发射火箭多次失败,绝大部分故障是由应用程序错误造成的。在“软件作坊”里,由于缺乏工程化思想的指导,程序员几乎总是习惯性地以自己的想法去代替用户对软件的需求,软件设计带有随意性,很多功能只是程序员的“一厢情愿”而已,这是造成软件不能令人满意的重要因素。◎软件质量差◎软件开发缺乏适当的文档资料

文档资料对于软件开发和软件维护是至关重要的。◎软件开发缺乏适当的文档资料◎软件维护困难

由于在软件设计和开发过程中,没有严格遵循软件开发标准,各种随意性很大,没有完整的真实反映系统状况的记录文档,给软件维护造成了巨大的困难。特别是在软件使用过程中,原来的开发人员可能因各种原因已经离开原来的开发组织,使得软件几乎不可维护。有资料表明,工业界为维护软件支付的费用占全部硬件和软件费用的40%-75%。◎软件维护困难

如何克服软件危机人们面临的不光是技术问题,更重要的是管理问题。管理不善必然导致失败。要提高软件开发效率,提高软件产品质量,必须采用工程化的开发方法与工业化的生产技术。==》软件工程

如何克服软件危机人们面临的不光是技术问题,更重软件生命周期软件从孕育、诞生、成长、衰亡的生存过程,称为软件的生命周期。六个步骤:制定计划:问题分析、可行性研究需求分析软件系统设计:总体设计、详细设计软件编码软件测试软件维护软件生命周期软件从孕育、诞生、成长、衰亡的生存过程,称为软件第二章软件体系结构基本概念重要性组件与连接器风格与模式非功能属性第二章软件体系结构基本概念第一节基本概念定义还没有达到共识。以下几个有助于我们的理解软件体系结构是一组具有一定形式的结构化元素(设计元素)组成。软件体系结构超越了计算过程中的算法设计和数据结构。四视图观点:概念上的体系结构、模块体系结构、代码体系结构和运行体系结构。四模式观点:概念模式、框架模式、动态模式、进程模式第一节基本概念定义还没有达到共识。所以:软件体系结构对软件系统的构造起着指导性作用。它回避了软件系统的功能细节,着重于讨论软件系统的总体构架。它关注的是系统结构及其组成组件。所以:修正后的软件生命周期:需求分析体系结构设计:选择模式,选择组件,组件之间的关系以及它们之间的约束。以此为框架,为详细设计奠定基础。-原为“总体设计”详细设计实现维护修正后的软件生命周期:第二节重要性良好的体系结构设计是决定软件系统成功的重要因素。早期的教训:IBMOS/360(1963-1966)第二节重要性良好的体系结构设计是决定软件系统成功的重要因素软件体系结构的指导意义作为软件开发的基本指导方针整个软件设计的开端,决定着开发工作的整体结构,具有更大的决策性和约束性。体系结构给予后继开发人员一个可实现的指导和约束。软件体系结构的指导意义作为软件开发的基本指导方针软件体系结构的指导意义对软件质量保证具有重大的影响支配了从开发到维护项目的团队组织结构对软件的修改、变动提供了保证和约束。提供了软件的可重用性软件体系结构的指导意义对软件质量保证具有重大的影响为什么体系结构没能早日引进来呢?早期软件开发被认为是个人创造力的产物,灵活性很高,从而导致开发者无规可循。早期软件开发的规模较小,开发通常由个人或者小的团队来完成,团队易于沟通交流,体系结构的要求不迫切。软件产品提交给用户的为编译后的软件,不能看到源代码,其他人难以分析其结构,阻碍了技术的传播。为什么体系结构没能早日引进来呢?早期软件开发被认为是个人创造第三节组件和连接器现代软件系统通常采用组件(构件)的开发方法组件:系统中的结构块,是软件功能设计和实现的承载体。连接器:组件之间进行连接的组件。软件体系结构的两大构成:组件、连接器第三节组件和连接器现代软件系统通常采用组件(构件)的开发方组件组件:系统中的结构块,是软件功能设计和实现的承载体。组件的表达形式:组件是由封装的内部数据结构及其操作,以及对外提供的操作方法集合组成。-例:公安局组件接口组件的特性(略)组件组件:系统中的结构块,是软件功能设计和实现的承载体。组件连接器连接:组件之间建立和维护行为关联及信息传递的途径。连接包含两方面:物质基础:连接发生和维持的机制;规约协议:连接能够正确地、无二义、无冲突地进行信息交换的保证。例:电源转接板连接器连接:组件之间建立和维护行为关联及信息传递的途径。简单连接:两个组件直接连接复杂连接:专门的连接组件(连接器)连接器A组件A组件B组件B组件简单连接:两个组件直接连接复杂连接:专门的连接组件(连接器)连接的特性(略):方向性、激发、响应特性连接的匹配(连接器如何工作的呢):修改组件:有源代码进行包装:常用方法加入中介:比较复杂或要求灵活性的握手:经常变动的系统连接的特性(略):方向性、激发、响应特性第四节风格和模式软件设计人员在长期开发某种类型软件过程中摸索到该类软件的一些规律性的东西,经过提炼总结,得到了具有普遍性的构建模式或称为构建风格。本课程将讨论学习应用较广泛的体系结构风格或模式。第四节风格和模式软件设计人员在长期开发某种类型软件过程中摸使用软件体系结构的风格和模式的意义:便于设计开发者之间互相交流促进了设计的复用也促进了代码的复用使用标准的风格和模式有利于支持互操作所以:有利于交流和理解;有利于提高软件设计实施的效率和质量;风格和模式的完善和系统化,也标志软件体系结构的成熟。使用软件体系结构的风格和模式的意义:我们对风格、模式和框架不加区分。我们讲解侧重于模式。模式分为三个层次:

系统体系结构模式(第三章)体系结构的设计模式(第四章)基础结构模式(第五章)我们对风格、模式和框架不加区分。系统体系结构模式体系结构的设计模式基础结构模式范围最大,层次最高中等规模,独立于特定语言最低层、最基础的模式,和特定语言有关系统体系结构模式体系结构的设计模式基础结构模式系统体系结构模式体系结构的设计模式基础结构模式范围最大,层次卷一、卷二、卷三参考书卷一、卷二、卷三参考书RobertC.Martin清华大学出版社RobertC.Martin第五节非功能属性功能属性非功能属性:易修改性:可维护性可扩展性结构重组第五节非功能属性功能属性可移植性:硬件平台、操作系统、用户界面、编程语言互操作性:软件需要经常与其它系统和周围的硬软件软件入口可移植性:可靠性容错能力健壮性效率响应时间、吞吐率、存储空间可靠性可重用性重用现有的组件和重用以前的项目、商业库、设计分析、设计说明。为重用进行软件开发可测试性软件系统变的越来越大,越来越复杂,软件测试工作也变得越来越困难和昂贵。可重用性第三章系统体系结构模式十种模式:管道-过滤器、分层、知识库(黑板)、MVC、PAC、客户与服务器、COM/DCOM/COM+、代理者、微核、映像、异构第三章系统体系结构模式客户与服务器、每种体系结构的讲解内容概述结构:静态动态特性实现特性变体优缺点Google八周岁了!每种体系结构的讲解内容概述Google八周岁了!第1节管道-过滤器概述结构动态特性实现特性变体优缺点第1节管道-过滤器概述1概述数据流处理系统示例:UNIX操作系统的管道-过滤器示例:语言编译器1概述数据流处理系统扫描器语法分析编译器语义分析调用输入代码生成扫描器语法分析编译器语义分析调用输入代码生成2静态结构过滤器组件过滤器组件管道过滤器组件管道输入输入输出输出数据源输出数据池2静态结构过滤器组件过滤器组件管道过滤器组件管道输入输过滤器组件3种激活方式(1)后续的组件从过滤器中拉出数据;(2)前面的组件向过滤器推入新数据;(3)过滤器处于活跃状态,以循环的方式,不断地从前面的组件中拉出数据,并向后续的组件推入数据。前两种称为被动过滤器;后一种称为主动过滤器过滤器组件3种激活方式数据源(1)主动:将数据推入过滤器(2)被动:在过滤器需要时被动提供数据数据源(1)主动:将数据推入过滤器数据池(1)主动:从过滤器拉出来数据(2)被动:在过滤器把结果推入或写入数据池(1)主动:从过滤器拉出来数据管道组件管道是过滤器之间的连接。管道:(1)对被动过滤器的直接调用。(2)两个主动过滤器进行同步管道组件管道是过滤器之间的连接。一般结构过滤器过滤器管道-过滤器结构过滤器管道数据流数据源数据池过滤器一般结构过滤器过滤器管道-过滤器结构过滤器管道数据流数据源数3动态特性3动态特性[计算机软件及应用]软件体系结构课件4实现(1)把系统任务分成几个独立的处理阶段。(2)定义沿着每个管道传输的数据格式。(3)决定管道的连接。(4)设计和实现过滤器。(5)设计出错处理。(6)建立处理流水线。4实现(1)把系统任务分成几个独立的处理阶段。应用举例搜索引擎快速全面的原因抓取、分词、索引、页面等级评定、查询应用举例搜索引擎[计算机软件及应用]软件体系结构课件[计算机软件及应用]软件体系结构课件5特性(1)每个过滤器都是独立的整体,相互之间的状态互不影响。(2)过滤器并不知道它的上游和下游连接的过滤器的特性。(3)运行结果的正确性不依赖于各个过滤器运行的次序。5特性(1)每个过滤器都是独立的整体,相互之间的状态6变体(1)限制过滤器为单输入、单输出:从拓扑结构上看,为线性过滤器组件过滤器组件管道过滤器组件管道输入输入输出输出输出6变体(1)限制过滤器为单输入、单输出:从拓扑结构(2)如果允许过滤器的输入或输出多于一个:造成反馈回路(拓扑结构:有向图)。需要保证系统可终止。(3)有名管道(文件)过滤器过滤器管道-过滤器结构过滤器管道数据流数据源数据池过滤器(2)如果允许过滤器的输入或输出多于一个:造成反馈回路(拓扑7优缺点1、优点易于重组,增加了系统的灵活性。易于更新、升级和维护易于重用。并行处理提高了系统的效率。?快速原型系统的设计实现拓扑结构清晰,方便性能分析。7优缺点1、优点优缺点2、缺点会导致数据的批处理方式。不适合处理交互式应用要求。增加了系统的开销和复杂性。共享状态信息代价高且不灵活。用并行处理来获得高效率是不可行的。?难以进行错误处理。优缺点2、缺点第2节分层结构

1、概述

复杂系统的解决方法之一:层次化软件系统的发展过程就是不断分层的过程

层次系统组织成一个层次结构,每一层为上层服务,并作为下层客户。

第2节分层结构1、概述网络网络操作系统(Windows为例)操作系统(Windows为例)数据库数据库2分层的静态结构系统的每一层向它的上一层提供服务,同时又作为下一层的客户,调用下层提供的功能函数。简单分层的结构(3层)核心层功能层应用层2分层的静态结构系统的每一层向它的上一层提供服务,同时又[计算机软件及应用]软件体系结构课件3分层的方案简单、直观最主要特征:N层的服务只能被N+1层调用,各层之间没有更多的依赖性。3分层的方案简单、直观[计算机软件及应用]软件体系结构课件组件3组件3<<组件2的服务>>组件2组件2<<组件1的服务>>组件1组件

温馨提示

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

评论

0/150

提交评论