《软件体系结构》课件全套 李青山 01-绪论-15-课程总结_第1页
《软件体系结构》课件全套 李青山 01-绪论-15-课程总结_第2页
《软件体系结构》课件全套 李青山 01-绪论-15-课程总结_第3页
《软件体系结构》课件全套 李青山 01-绪论-15-课程总结_第4页
《软件体系结构》课件全套 李青山 01-绪论-15-课程总结_第5页
已阅读5页,还剩543页未读 继续免费阅读

下载本文档

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

文档简介

软件体系结构Software

Architecture2课程简介

软件体系结构的主题是针对复杂软件系统的高层结构、组织单元之间的相互关系的描述,以及围绕这种描述开展的各项活动,如设计、评估、实现、管理等。

《软件体系结构》课程是软件工程专业核心课程,在该课程32学时的学习中,同学们将学习软件体系结构的基本概念、原则和方法。同时,通过实际软件项目设计任务驱动学生运用理论知识主动思考架构方案,引导学生应用辅助工具完成系统架构设计、评估和实现。体验软件架构师在软件项目全生命周期的任务、角色,搭建软件体系结构“学与用”的桥梁。任务导向以面引点案例驱动体验探究3课程大纲软件体系结构绪论软件体系结构风格数据流体系结构风格调用/返回体系结构风格以数据为中心体系结构风格虚拟机体系结构风格事件系统体系结构风格软件体系结构建模和文档化质量属性及质量属性策略可用性及其策略性能及其策略可修改性及其策略安全性及其策略可测试性及其策略易用性及其策略软件体系结构评估综合应用案例总结及展望4课程大纲软件体系结构1.绪论软件体系结构风格2.数据流体系结构风格3.调用/返回体系结构风格4.以数据为中心体系结构风格5.虚拟机体系结构风格6.事件系统体系结构风格7.软件体系结构建模和文档化质量属性及质量属性策略8.可用性及其策略9.性能及其策略10.可修改性及其策略11.安全性及其策略12.可测试性及其策略13.易用性及其策略14.软件体系结构评估15.综合应用案例16.总结及展望5课程目标理解体系结构定义熟悉体系结构风格准确描述一个体系结构制定、选择体系结构方案为特定应用定制体系结构利用现有工具加速开发过程构建满足特定体系结构要求的中等规模软件系统6软件体系结构

让我们开始

软件体系结构(Software

Architecture)……绪论Introduction8

什么是Architecture?Architecture的辞典定义Architecture9Architecture圣·玛利亚百花大教堂

构建Architecture?瑞典的瓦萨战舰10案例一圣·玛利亚百花大教堂1296年,佛罗伦萨开始动工修建一座“具有无与伦比之华美和尊荣的圣殿,足以使任何教堂都相形见绌”的圣·玛利亚百花大教堂。然而,大教堂在盖好本体后,圆顶部分依然空了50年无法完工。直到1418年,这座梦想中的建筑仍未完成。WHY?没有钢筋、混凝土等现代建材的时代,如何筑成全世界最巨大的石砌砖造圆顶?少了鹰架和电动吊车,该怎么把37000吨的大理石安稳放置在50米的高空中?没人提供的巨大拱顶和圆顶,以及其中设备的设计方案。以当时的经验,面对这类建筑体系结构,设计师无法在美观和安全之间做出任何妥协。需求建筑体系结构11案例二瑞典瓦萨战舰

1620年代,瑞典与波兰交战。瑞典国王下令建造一艘巨型战舰,长70m,载员300人,两层甲板,64门重炮,以尽快结束战争。建造期间,国王得知了丹麦建成双层炮舰的消息,于是在战舰骨架已经基本搭好之后,他又决定,为原计划修建单层炮舰的“瓦萨”号增加一个枪械甲板,把它改建成“双层”炮舰,使得“瓦萨”号拥有了双排、64门舰炮,全长达到了69米,成为当时装备最齐全、武装程度最高的战船。1628年,Vasa战舰建造完成,在下水鸣放了几响礼炮之后,很快沉入水中。WHY?虽然Vasa战舰制造工艺精良,但船体比例严重失调,体系结构存在致命缺陷。设计师在无前人设计经验的基础上,既要执行暴躁国王的“功能性”需求,又要考虑“非功能性”要求(如安全性、可靠性、造价等)。面对诸多相互冲突的约束条件,做出了错误的权衡,对一些不可能实现的要求做了妥协。需求建筑体系结构12软件体系结构的动机建筑体系结构软件体系结构需求复杂、变化频繁功能模块规模大功能性/非功能性要求高总体的系统结构设计比计算算法和数据结构的选择更为重要大规模复杂软件系统13本节内容软件体系结构的发展史1软件体系结构定义2软件体系结构的研究活动3软件体系结构的作用414~60年代70~80年代90年代2000年代2010年代高级语言编译器出现;C语言诞生;COBOL语言诞生集成开发环境出现;软件工程诞生面向过程开发结构化程序出现;程序验证方法出现形式化方法出现面向服务开发软件构件化出现;J2EE诞生,CORBA诞生搜狐、阿里等成立智能化软件开发程序自动生成;软件库挖掘协作化工业化工程化时代特征时期开发模式个人小组企业众包面向对象开发C++/Java/C#诞生;UML出现;软件质量管控体系(COCOMO);互联网诞生现代云与移动服务开发云计算出现并流行智能机流行,移动服务出现系统=子程序+子程序构件+连接对象+对象服务+服务总线算法+数据结构软件体系结构的发展史15~60年代70~80年代90年代2000年代2010年代高级语言编译器出现;C语言诞生;COBOL语言诞生集成开发环境出现;软件工程诞生面向过程开发结构化程序出现;程序验证方法出现形式化方法出现面向服务开发软件构件化出现;J2EE诞生,CORBA诞生搜狐、阿里等成立智能化软件开发程序自动生成;软件库挖掘协作化工业化工程化时代特征时期开发模式个人小组企业众包面向对象开发C++/Java/C#诞生;UML出现;软件质量管控体系(COCOMO);互联网诞生现代云与移动服务开发云计算出现并流行智能机流行,移动服务出现理论完善及普及应用“无体系结构”概念和理论体系形成系统=子程序+子程序构件+连接对象+对象服务+服务总线算法+数据结构软件体系结构的发展史16软件体系结构的发展史1968北大西洋公约组织(NATO)会议上第一次出现词语“Software

Architecture(软件体系结构/软件架构)”体系结构出现(1968)概念体系和理论体系形成理论完善和普及应用17软件体系结构的发展史1968北大西洋公约组织(NATO)会议上第一次出现词语“Software

Architecture(软件体系结构/软件架构)”软件体系结构的定义逐渐明确;相关体系结构书籍出版;体系结构风格、描述方法、演化及重用等研究方向成为软件工程领域的研究热点。体系结构出现(1968)概念体系和理论体系形成理论完善和普及应用18软件体系结构的发展史1968北大西洋公约组织(NATO)会议上第一次出现词语“Software

Architecture(软件体系结构/软件架构)”软件体系结构的定义逐渐明确;相关体系结构书籍出版;体系结构风格、描述方法、演化及重用等研究方向成为软件工程领域的研究热点。体系结构出现(1968)概念体系和理论体系形成理论完善和普及应用1999年,1st

IFIP软件架构会议召开;Markup架构描述语言提出,支持广泛的架构模型共享;软件产品线被提出,吸引了大量的大型企业的关注;IEEE1471-2000发布,为软件架构的普及应用制定了标准化规范。19本节内容软件体系结构的发展史1软件体系结构定义2软件体系结构的研究活动3软件体系结构的作用4系统草图构件集合设计决策…定义驳杂多端组成派决策派组成派关注于软件本身,将软件体系结构看做构件和交互的集合。有哪些部分组成,如何组成,强调整体结构和配置决策派关注于软件架构中的实体(人),将软件体系结构视为一系列重要设计决策的集合。人员意志和决策,注重架构风格和模式的选择软件体系结构定义1992年,DE.Perry与AL.Wolf对软件架构进行了阐述,认为软件体系结构是具有一定形式的结构化元素。这一定义在大多数定义中被广泛继承。【PerryandWolf,1992】

Asetofarchitectural(or,ifyouwill,design)elementsthathaveaparticularform.PerryandWolfdistinguishbetween

processingelements,dataelements,andconnectingelements,andthistaxonomybyandlargepersiststhroughmostotherdefinitionsandapproaches.

元素(elements)是指具有一定形式的结构化元素。包括处理元素(processingelements)、数据元素(dataelements)和连接元素(connectingelements)。处理元素负责对数据进行加工数据元素是被加工的信息连接元素把体系结构的不同部分组合连接起来软件体系结构定义-组成派定义1993年,DGarlan,MShaw提出软件架构包括component、connector和constraint三大要素。【

DGarlan,MShaw,1993】...beyondthealgorithmsanddatastructuresofthecomputation;designingandspecifyingtheoverallsystemstructureemergesasanewkindofproblem.Structuralissuesincludegrossorganizationandglobalcontrolstructure;protocolsforcommunication,synchronization,anddataaccess;assignmentoffunctionalitytodesignelements;

physicaldistribution;

composition

ofdesignelements;scalingandperformance;andselection

amongdesignalternatives.“

软件设计过程中的一个层次,超越了计算过程中的算法设计和数据结构设计。组件(component)可以是一组代码,也可以是独立的程序;连接件(connector)用于表示组件之间的相互关系,可以是过程调用、管道和消息等;约束(constraint)为组件连接时的条件。软件体系结构定义-组成派定义

2011年,ISO/IEC/IEEE标准中定义软件架构是某一系统的基本组织结构,其内容包括软件构件,构件间的联系,构件与其环境间的联系,以及指导上述内容设计与演化的原理。。。【ISO/IEC/IEEE,2011】ABSTRACTISO/IEC/IEEE42010:2011addressesthecreation,analysisandsustainmentofarchitecturesofsystemsthroughtheuseofarchitecturedescriptions.Aconceptualmodelofarchitecturedescriptionisestablished.Therequiredcontentsofanarchitecturedescriptionarespecified.Architectureviewpoints,architectureframeworksandarchitecturedescriptionlanguagesareintroducedforcodifyingconventionsandcommonpracticesofarchitecturedescription.Therequiredcontentofarchitectureviewpoints,architectureframeworksandarchitecturedescriptionlanguagesisspecified.AnnexesprovidethemotivationandbackgroundforkeyconceptsandterminologyandexamplesofapplyingISO/IEC/IEEE42010:2011.

软件体系结构定义-组成派定义

1999年,

Booch,RumbaughandJacobson从另一个角度对软件架构的概念进行了全新的诠释,认为架构是一系列重要决策的集合。【Booch,1999】Anarchitectureisthesetofimportant

decisionsabouttheorganizationofasoftwaresystem,theselectionofthestructuralelementsandtheirinterfacesbywhichthesystemiscomposed,togetherwiththeirbehaviorasspecifiedinthecollaborationsamongthoseelements,thecompositionofthesestructuralandbehavioralelementsintoprogressivelylargersubsystems,andthe

architecturalstyle

thatguidesthisorganizationcomposition.—theseelementsandtheirinterfaces,theircollaborations,andtheircomposition.

一系列重要决策的集合关于:软件系统的组织;组成系统的结构元素和它们之间的接口,及这些元素相互协作时所体现的行为;如何组合这些元素,使它们逐渐合成为更大的子系统;指导这一软件系统组织的架构风格。软件体系结构定义-决策派定义【Anton,2005】软件架构是架构层次上所有设计决策的集合体,这些设计决策与以下内容有关:架构改造的影响、原理、设计准则、设计约束以及附加需求。

【Kruchten,2006】软件体系结构是设计决策+设计(设计决策的推理过程)。

软件体系结构定义-决策派定义在Booch定义的基础上,其他决策派定义产生。VivekKhare认为软件架构是设计和构建软件应用的科学和艺术,这些软件应用满足生命周期中用户的各种需求。

AakashAhmad认为软件架构是包含设计、演化、构建配置的推理和构件互连关系的高层抽象结构。

AndreasRausch认为软件架构是一个针对软件改变的框架。

MuthuRajagopal认为软件架构是能够有效组合在一起的软件和硬件构件的集合,这些构件组合后能满足预期需求。

软件体系结构定义-其他定义业界还存在一些其他观点,从独特的角度诠释软件体系结构【CMU,2018】

基于DGarlan,MShaw的定义,我们可将软件体系结构的定义理解为:

软件体系结构=组件+连接件+约束

SoftwareArchitecture=Components+Connectors+Constrains组件:具有某种功能的可重用的软件模块单元,表示了系统中主要的计算单元和数据存储。连接件:表示了组件之间的交互,简单的连接件有:管道(pipe)、过程调用(procedure-call)、事件广播(eventbroadcast)等。复杂的连接件有:客户-服务器(client-server)通信协议,数据库和应用之间SQL连接等。约束:表示了组件和连接件的拓扑逻辑和约束(constraint)。软件体系结构定义-总结28软件体系结构的发展史1软件体系结构定义2软件体系结构的研究活动3软件体系结构的目标与作用4本节内容29软件体系结构的研究活动-从建筑体系结构看起基本的建筑单元都有哪些?有哪些实用、美观、强度、造价合理、可复用的大粒度建筑单元,使建造出来的建筑更能满足用户的需求?建筑模块怎样搭配才合理?有哪些典型的建筑风格?每种典型建筑(医院、工厂、旅馆)的典型结构是什么样子?需要什么样的构件?如何绘制建筑体系结构的图纸?如何快速节省的将图纸变为实物(即施工过程)?建筑完成之后,如何对其进行恰当程度的修改?重要模块有了更改后,如何保证整栋建筑质量不受影响?如何根据图纸进行质量评估?30软件体系结构的研究活动-软件体系结构要解决的问题软件的基本构造单元是什么?这些构造单元之间如何连接?最终形成何种样式的拓扑结构?典型应用领域的典型体系结构是什么样子?如何进行软件体系结构的设计与实现?如果对已经存在的软件体系结构进行修改?使用何种工具来支持软件体系结构的设计?如何对软件体系结构进行描述、分析和验证?31软件体系结构的研究活动-软件体系结构的研究内容软件体系结构的建模与表示(Architecture

ModelingandDocumenting)软件体系结构风格的研究(SoftwareArchitectureStyles)体系结构描述语言(Architecture

DescriptionLanguage,ADL)软件体系结构的评价方法(Architecture

Evaluation)软件产品线及特定领域软件框架的研究(ProductlineandDSSA)动态软件体系结构。。。动态演化自适应体系结构——来源32自适应过程面临瓶颈软件体系结构1软件体系结构为考察自适应系统提供了全面、系统、易于理解的模型软件体系结构有助于对自适应系统动态演化的正确和有效评估基于体系结构的软件自适应基于体系结构的自适应系统动态演化,就是将软件变化映射为体系结构变化。软件体系结构以实体显性表示,作为系统动态演化的依据。21现有自适应框架调整层次单一。现有方法忽略了变化间关联关系及变化对系统的潜在影响。32现有方法忽略变化特征与系统结构特点。为解决软件运行环境开放性、动态性、多变性等引起系统频繁变化的问题,对软件提出了自适应性要求。软件体系结构通过实体关联描述组件间的交互关系,其被整个运行环境共享,因此可作为触发条件驱动软件系统自适应演化,对整个软件系统进行监控,实现全局的适应。软件体系结构的研究活动-动态演化自适应体系结构动态演化自适应体系结构——过程33基于体系结构的软件自适应需要引入基本体系结构生成器,负责从实际运行的系统中不断提取最新的软件体系结构信息,把系统自身的动态调整在体系结构的抽象层面上得以表达,引入演化执行管理器负责在实际系统上执行在软件体系结构层面表述的动态调整命令,实现软件自适应演化。运行系统状态管理器分析判断模型管理器规划决策器演化执行管理器数据库知识管理器基本体系结构用户管理需求变化自适应层系统层用户层设计制定或在线扩展目标知识库领域信息库效用信息库软件体系结构自适应动态演化软件体系结构的研究活动-动态演化自适应体系结构典型框架——RAINBOW34Rainbow框架由卡内基·梅隆大学(CMU)的SWCheng团队于2004年提出,使用了基于外部模型的控制闭环来实现自适应调整。该方法使用软件体系结构模型动态监控系统,对系统约束规则及运行性能综合分析,通过系统API重构基础设施,应用于多种典型系统中自适应调整稳定性提升明显。RAINBOW框架架构设计图体系结构层系统层自适应引擎约束评估器自适应执行模型管理器策略性能操作规则映射基础设施重构目标系统API在典型系统Znn中自适应过程响应时间对比图(右)在Libra视频会议系统中多客户自适应过程稳定性测试图(左)软件体系结构的研究活动-动态演化自适应体系结构典型框架——自适应软件体系结构方法35自适应软件体系结构方法(SASA)由北京大学梅宏院士于2008年提出,该方法首先根据需求规约设计体系结构,并依据需求规约选择与自适应相关的质量场景,然后按照体系结构分析方法选择适当的调整方案,最后根据方案对系统进行构件添加删除和重配置等调整,实现软件动态演化。可调整的软件系统自适应支撑机制具有适应性的软件系统适应性软件体系结构应用程序体系结构自适应策略需求规约基于场景的自适应分析和自适应调整方案的确定体系结构设计部署分析/调整SASA框架图元素动作具体调整动作构件添加和删除创建或释放容器实例替换替换整个构件;替换构件契约;释放旧实例,并且创新新的实例构件的约束添加、删除、替换相应的截取器连接子协议添加和删除添加或删除相应的发送者和接收者,为传输层协议添加删除传输者对协议的调整调整协议的实现配置重配置上述调整的不同组合体系结构层次的调整软件体系结构的研究活动-动态演化自适应体系结构未来工作36目前,基于体系结构的自适应软件动态演化技术以成功应用于多种大型复杂系统(如电子商务系统、CPS系统等)。未来,结合最新理念扩宽研究思路,与新兴技术交叉融合实现广泛应用。电子商务系统物理信息融和系统扩宽研究思路,应对不确定性交叉融合新技术,应对群体自适应强化学习统计分析概率理论社群智能数据流推理PBAAM框架MADAM框架技术成熟,应用广泛推动发展,展望未来应用软件体系结构的研究活动-动态演化自适应体系结构37本节内容软件体系结构的发展史1软件体系结构定义2软件体系结构的研究活动3软件体系结构的作用438项目规划考虑项目的规模、复杂度、可行性等;需求分析利用SA,支持用户、项目负责人、系统架构师、程序员、测试人员之间进行交流和协商;从不同视角审查备选的SA,对得出的意见进行综合,找出合理的平衡方案;从用户角度考虑未来的需求变化,并使SA能够提前支持这些变化;软件实现各开发团队按照SA规定的“构件及其之间的相互关系”进行开发,保证最终得到的系统与最初的SA一致;维护与升级把SA文档作为维护和升级的重要依据。软件设计参考经典SA风格,设计系统体系结构模型,推敲其存在的缺陷和替代方案,并进行评估;进而逐步细化SA,并对定型后的SA作文档化工作;测试与评审根据SA的约束条件,对软件的质量属性进行测试。软件生命周期软件体系结构作用软件体系结构的作用-软件生命周期中的作用39软件体系结构的作用-SAisveryimportant

借用艾兹格·迪科斯彻的话:

“…thelargertheproject,themoreessentialthestructuring!”(1968)

图灵奖获得者:EdsgerDijkstra40Reference【PerryandWolf,1992】PerryDE,WolfAL.FoundationsfortheStudyofSoftwareArchitecture[J].ACMSIGSOFTSoftwareEngineeringNotes,1992,17(4):40-52.【DGarlan,MShaw,1993】DGarlan,MShaw.AnintroductiontoSoftwareArchitecture[M].Advancesinsoftwareengineeringandknowledgeengineering,1993:1-39.【ISO/IEC/IEEE,2011】ISO/IEC/IEEE42010:2011

[P42010/D1],Systemsandsoftwareengineering—Architecturedescription,2011.【Booch,1999】GBooch,JRumbaugh,IJacobson.TheUnifiedModelingLanguageUserGuide[M].2nded.AddisonWesley,1999.【Anton,2005】AJanse,JBosch.SoftwareArchitectureasaSetofArchitecturalDesignDecision[C].Proceedingsofthe5thworkingIEEE/IFIPConferenceonSoftwareArchitecture.IEEE,2005:109-120.【Kruchten,2006】P

Kruchten,PLago,etal.Buildingupandreasoningaboutarchitecturalknowledge[C].ProceedingoftheInternationalConferenceontheQualityofSoftwareArchitectures.Springer,Berlin,Heidelberg,2006:43-58.【CMU,2018】CommunitySoftwareArchitectureDefinitions[EB/OL]./architecture/start/community.cfm,201841欢迎各位同学交流讨论计算机科学与技术学院微信数据流体系结构风格Data

Flow

Style软件体系结构课程组本节内容软件体系结构风格1数据流体系结构风格243批处理体系结构风格3管道-过滤器体系结构风格444强调垂直高度和石骨架结构优美的彩色玻璃窗画直刺苍穹的尖顶丛生的圆柱飞扶壁有龙骨的拱顶尖顶形状的圆弧拱门强调雕塑的细节软件体系结构风格-从“建筑风格”开始哥特式源于12世纪的法国,并持续到16世纪45结构清晰、规则,遵循简单的形状和数学比例简单的圆柱、对称,区别于日后不规则的、复杂的多面建筑古典风格的圆柱、完美的几何设计和半球形的屋顶软件体系结构风格-从“建筑风格”开始文艺复兴式

发源于意大利弗洛伦萨,借鉴和发扬了古希腊和古罗马建筑思想

。软件体系结构风格-从“建筑风格”开始46Architecturalstyleconstitutesamodeofclassifyingarchitecturelargelybymorphologicalcharacteristicsintermsofform,techniques,materials,etc.(建筑风格等同于建筑体系结构的一种可分类的模式,通过诸如外形、技术和材料等形态上的特征加以区分)。“风格”——经过长时间的实践,被证明具有良好的工艺可行性、性能与实用性,并可直接用来遵循与模仿(复用)。软件体系结构风格-回到“软件体系结构风格”47describesaclassofarchitectures(描述一类体系结构)independentontheproblems(独立于实际问题,强调了软件系统中通用的组织结构)foundrepeatedlyinpractice(在实践中被多次应用)apackageofdesigndecisions(是若干设计思想的综合)has

knownpropertiesthatpermitreuse(具有已经被熟知的特性,并且可以复用)Asoftwarearchitecturestyle

(软件体系结构风格)软件体系结构风格-定义48Architecturestyle={

Component/Connectorvocabulary,

Topology,

SemanticConstraints

}描述特定领域中软件系统家族的组织方式的惯用模式(idiomaticparadigm),反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统。49数据流批处理管道-过滤器虚拟机解释器基于规则的系统调用-返回主程序-子过程OO分层以数据为中心仓库黑板独立构件事件系统隐式调用显式调用进程通信软件体系结构风格-Taxonomy

of

styles本节内容软件体系结构风格1数据流体系结构风格250批处理体系结构风格3管道-过滤器体系结构风格4数据流体系结构风格-直观理解51数据流处理处理:数据到达即被激活,无数据时不工作一个直观实例:在MSExcel中,改变某个单元格的值,则依赖于该单元格的其他单元格的值也会随之改变.数据流体系结构风格-特征52Adataflowsystemisoneinwhichtheavailabilityofdatacontrolsthecomputation(数据的可用性决定着处理<计算单元>是否执行)thestructureofthedesignisdecidedbyorderlymotionofdatafromprocesstoprocess(系统结构由数据在各处理之间的有序移动决定)inapuredataflowsystem,thereisnootherinteractionbetweenprocesses(在纯数据流系统中,处理之间除了数据交换没有任何其他的交互)数据流体系结构风格-基本构件53<<Trigger>>Components:dataprocessingcomponents(基本构件:数据处理)Interfacesareinputportsandoutputports(构件接口:输入端口和输出端口),Inputportsreaddata;outputportswritedataComputationalmodel:readdatafrominputports,compute,writedatatooutputports(计算模型:从输入端口读数,经过计算/处理,然后写到输出端口)DataArrivalIOReadWriteComp输入端口输出端口54Connectors:dataflow(stream)(连接件:数据流)Unidirectional,usuallyasynchronous,buffered(单向、通常是异步、有缓冲)Interfacesarereaderandwriterroles(接口角色:reader和writer)Computationalmodel(计算模型:把数据从一个处理的输出端口传送到另一个处理的输入端口)IOReadWriteComp2IOReadWriteComp1ReaderWriter<<Role>><<databuffering>>数据流体系结构风格-连接件数据流体系结构风格-PatternsofDataFlowinSystems55nearlylineardataflowsystems近似线性数据流highlyconstrainedcyclicstructures在限度内的循环数据流Data

can

flow

in

free

patterns数据自由流动√√数据流体系结构风格-典型数据流风格56ProcessControl(过程控制)BatchSequential(批处理)Pipe

and

Filter(管道-过滤器)本节内容软件体系结构风格1数据流体系结构风格257批处理体系结构风格3管道-过滤器体系结构风格458将用户输入的纸带上的数据写入磁带将磁带作为计算设备的输入,进行计算,得到输出结果打印计算结果批处理体系结构风格-直观结构(1//2)59批处理体系结构风格-直观结构(2//2)批处理体系结构风格-定义(1/2)60Components(processingsteps)areindependentprograms

(基本构件:独立的应用程序)Connectorsaresometypeofmedia-traditionallytape(连接件:某种类型的媒质)Topology:Connectorsdefinedataflowgraph(连接件定义了相应的数据流图,表达拓扑结构)61Processingstepsareindependentprograms(每个处理步骤是一个独立的程序)Eachsteprunstocompletionbeforenextstepstarts(每一步必须在前一步结束后才能开始)Datatransmittedasawholebetweensteps(数据必须是完整的,以整体的方式传递)批处理体系结构风格-定义(2/2)62批处理体系结构风格实例:基于Eclipse的代码重复检测工具批处理体系结构风格-应用实例(1/2)63基于Eclipse的代码重复检测工具批处理体系结构风格-应用实例(2/2)本节内容软件体系结构风格1数据流体系结构风格264批处理体系结构风格3管道-过滤器体系结构风格465自来水处理中的Pipe-and-Filter结构管道-过滤器体系结构风格-直观结构(1//2)66管道-过滤器体系结构风格-直观结构(2//2)67场境:数据源源不断的产生,系统需要对这些数据进行若干处理(分析、计算、转换等)。解决方案:把系统分解为几个序贯的处理步骤,这些步骤之间通过数据流连接,一个步骤的输出是另一个步骤的输入;每个处理步骤由一个过滤器构件(Filter)实现;处理步骤之间的数据传输由管道(Pipe)负责。每个处理步骤(过滤器)都有一组输入和输出,过滤器从管道中读取输入的数据流,经过内部处理,然后产生输出数据流并写入管道中。管道-过滤器体系结构风格-定义(1//3)68Components:Filters—processdatastreams(构件:过滤器,处理数据流)Afilterencapsulatesaprocessingstep(algorithmorcomputation)(一个过滤器封装了一个处理步骤)Datasourceanddataend/sinkareparticularfilters(数据源点和数据终止点可以看作是特殊的过滤器)Connectors:Apipeconnectsasourceandaendfilter(连接件:管道,连接一个源和一个目的过滤器)PipesmovedatafromafilteroutputtoafilterinputDatamaybeastreamofASCIIcharactersTopology:ConnectorsdefinedataflowgraphStyleinvariants:Filtersareindependent管道-过滤器体系结构风格-定义(2//3)69Incrementallytransformdatafromthesourcetothesink(递增的读取和消费数据流),数据到来时便被处理,不是收集然后处理,即在输入被完全消费之前,输出便产生了。管道-过滤器体系结构风格-定义(3/3)70Incrementallytransformsomeofthesourcedataintosinkdata(目标:将源数据变换成目标数据)Streamtostreamtransformation(从“数据流”→“数据流”的变换)Filter(过滤器)管道-过滤器体系结构风格-过滤器(1/3)71过滤器对数据流的五种变换类型增加/丰富data:adata:a+b删减/浓缩data:adata:a-b转换data:adata:a’合并data:adata:a+bdata:b分解data:adata:a+bdata:b通过计算和增加信息来丰富数据

通过浓缩和删减来精炼数据通过改变数据表现方式来转化数据将多个数据流合并为一个数据流将一个数据流分解为多个数据管道-过滤器体系结构风格-过滤器(2/3)72nocontextinprocessingstreams(无上下文信息)nostatepreservationbetweeninstantiations(不保留状态)noknowledgeofupstream/downstreamfilters(对其他过滤器无任何了解)Filtersareindependententities.管道-过滤器体系结构风格-过滤器(3/3)73Onewayflowfromonedatasourcetoonedatasink(单向流)Apipemayimplementabuffer(可能具有缓冲区)Pipesformdatatransmissiongraph(管道形成传输图)不同的管道中流动的数据流,可能具有不同的数据格式,数据在流过每一个过滤器时,被过滤器进行了丰富、精练、转换、融合、分解等操作,因而发生了变化。Pipes:movedatafromafilter'soutputtoafilter'sinput(ortoadeviceorfile).管道-过滤器体系结构风格-管道(1/2)74管道-过滤器体系结构风格-管道(2/2)75Compiler

(编译器)Unixpipes(Unix管道)Imageprocessing(图像处理)Signalprocessing(信号处理)Voiceandvideostreaming(声音与图像处理)…管道-过滤器体系结构风格-应用实例76使构件具有良好的隐蔽性和高内聚、低耦合的特点,可将整个系统的输入/输出行为看成多个过滤器的行为的简单合成;支持软件复用,只要提供适合在两个过滤器之间传送的数据,任何两个过滤器都可被连接起来系统维护和增强系统性能简单,新的过滤器可以添加到现有系统中来,旧的可以被改进的过滤器替换掉允许对一些如吞吐量、死锁等属性的分析支持并行执行:每个过滤器是作为一个单独的任务完成,因此可与其它任务并行执行。管道-过滤器体系结构风格-Advantages77不适合处理交互的应用在早期对交互应用需求不高的情况下提出当需要增量地显示改变时,这个问题尤为严重系统性能不高,并增加了编写过滤器的复杂性数据传输缺乏通用标准,每个过滤器都增加了解析和合成数据的工作绝大部分处理时间消耗在格式转换上不适用于需要大量共享数据的应用设置管道-过滤器体系结构风格-Disadvantages78把任务分解成为一系列固定顺序的计算单元&彼此间只通过数据传递交互批处理VS管道-过滤器79BatchSequentialPipe-and-Filtertotal(整体传递数据)coarsegrained(构件粒度较大)highlatency(延迟高,实时性差)noconcurrency(无并发)incremental(增量)finegrained(构件粒度较小)resultsstartsprocessing(实时性好)concurrencypossible(可并发)批处理VS管道-过滤器8080计算机科学与技术学院微信软件体系结构—调用/返回风格软件体系结构课程组本节内容调用/返回风格1风格变种282课程总结3调用/返回风格主程序/子程序风格经典的编程范式:功能分解面向对象/抽象数据类型(ADT)信息(表示,方法方法)隐藏层次结构每一层只能与其直接相邻的邻居进行通信其他客户端/服务器……调用/返回风格主程序/子程序风格单线程控制,划分为若干处理步骤功能模块:把步骤集成至模块中抽象数据类型(ADT)操作和数据绑定在一起,隐藏实现和其他秘密面向对象方法(动态绑定),多态(子类),重用(继承)对象活动于不同的进程/线程(分布式对象)CS结构、分层风格组件多个接口,二进制兼容,高级中间件主程序/子程序风格主程序/子程序风格Problem:Thispatternissuitableforapplicationsinwhichthecomputationcanappropriatelybedefinedviaahierarchyofproceduredefinitions.Context:Manyprogramminglanguagesprovidenaturalsupportfordefiningnestedcollectionsofproceduresandforcallingthemhierarchically.Theselanguagesoftenallowcollectionsofprocedurestobegroupedintomodules,therebyintroducingname-spacelocality.Theexecutionenvironmentusuallyprovidesasinglethreadofcontrolinasinglenamespace.Solution:Systemmodel:callanddefinitionhierarchy,subsystemsoftendefinedviamodularityComponents:proceduresandexplicitlyvisibledataConnectors:procedurecallsandexplicitdatasharingControlstructure:singlethread模块分解ParnasHidesecrets.OK,what’sa“secret”?RepresentationofdataPropertiesofadevice,otherthanrequiredpropertiesMechanismsthatsupportpoliciesTrytolocalizefuturechangeHidesystemdetailslikelytochangeindependentlyExposeininterfacesassumptionsunlikelytochangeUsefunctionstoallowforchangeThey’reeasiertochangethanvisiblerepresentation封装/信息隐藏Parnas:Hidesecrets(notjustrepresentations)Booch:Object’sbehaviorischaracterizedbyactionsthat

itsuffersandthatitrequiresPracticallyspeaking:Objecthasstateandoperations,butalsohasresponsibilityfortheintegrityofitsstateObjectisknownbyitsinterfaceObjectisprobablyinstantiatedfromatemplateObjecthasoperationstoaccessandalterstateandperhapsgeneratorTherearedifferentkindsofobjects(e.g.,actor,agent,server)数据抽象/面向对象数据抽象/面向对象Problem:Thispatternissuitableforapplicationsinwhichacentralissueisidentifyingandprotectingrelatedbodiesofinformation,especiallyrepresentationinformation.Context:Numerousdesignmethodsprovidestrategiesforidentifyingnaturalobjects.Newerprogramminglanguagessupportvariousvariationsonthetheme,soifthelanguagechoiceorthemethodologyisfixed,thatwillstronglyinfluencetheflavorofthedecomposition.Solution:Systemmodel:localizedstatemaintenanceComponents:managers(e.g.,servers,objects,abstractdatatypes)Connectors:procedurecallControlstructure:decentralized,usuallysinglethread面向对象体系结构的元素Encapsulation:Restrictaccesstocertaininformation

封装:限制对某些信息的访问Interaction:Viaprocedurecallsorsimilarprotocol

交互:通过过程调用或类似的协议Polymorphism:Choosethemethodatrun-time

多态:在运行时选择具体的操作Inheritance:Shareddefinitionsoffunctionality

继承:对共享的功能保持唯一的接口Reuseandmaintenance:Exploitencapsulationandlocalitytoincreaseproductivity

复用和维护:利用封装和聚合提高生产力面向对象方法的问题ManagingmanyobjectsVastseaofobjectsrequiresadditionalstructuring

对象的海洋需要额外的结构来容纳HierarchicaldesignsuggestedbyBoochandParnasManagingmanyinteractionsSingleinterfacecanbelimiting&unwieldy(hence,“friends”)

单一的接口能力有限并且笨拙(于是,”友元”)Somelanguages/systemspermitmultipleinterfaces(innerclass,interface,multipleinheritance)DistributedresponsibilityforbehaviorMakessystemhardtounderstandInteractiondiagramsnowusedindesignCapturingfamiliesofrelateddesignsTypes/classesareoftennotenoughDesignpatternsasanemergingoff-shoot如何管理大的对象数据集PureO-OdesignleadstolargeflatsystemswithmanyobjectsSameoldproblemscanreappearHundredsofmodules=>hardtofindthingsNeedawaytoimposestructureNeedadditionalstructureanddisciplineStructuringoptionsLayers(whicharenotnecessarilyobjects)SupplementalindexHierarchicaldecomposition:bigobjectsandlittleobjects体系结构风格变种Client-serverObjectsareprocesses

进程就是对象Asymmetric:clientknowsaboutservers,butnotviceversa

不对称:客户端知道服务器,反之则不然TieredElaborationonclient-server

C/S模式的扩展Aggregationintorun-timestrata

运行时层的结合Usuallysmallnumberoftiers

通常只有少量的层Components(later)MultipleinterfacesSpecialprotocolsfordynamicreconfiguration

支持动态配置的专门协议层次风格案例-操作系统硬件OS应用应用应用平台层次案例-计算机网络层次风格Problem:Thispatternissuitableforapplicationsthatinvolvedistinctclassesofservicesthatcanbearrangedhierarchically.Oftentherearelayersforbasicsystem-levelservices,forutilitiesappropriatetomanyapplications,andforspecifictasksoftheapplication.Context:Frequently,eachclassofserviceisassignedtoalayerandseveraldifferentpatternsareusedtorefinethevariouslayers.Layersaremostoftenusedatthehigherlevelsofdesign,usingdifferentpatternstorefinethelayers.Solution:Systemmodel:hierarchyofopaquelayersComponents:usuallycomposites;compositesaremostoftencollectionsofproceduresConnectors:dependsonstructureofcomponents;oftenprocedurecallsunderrestrictedvisibility,mightalsobeclient/serverControlstructure:singlethread层次风格参考结构层次风格特点每层为上一层提供服务,使用下一层的服务,只能见到与自己邻接的层适当时候(必不得已的时候),可以允许一定的越层操作大的问题分解为若干个渐进的小问题,逐步解决,隐藏了很多复杂度修改一层,最多影响两层,而通常只能影响上层。接口稳固,则谁都不影响上层必须知道下层的身份,不能调整层次之间的顺序层层相调,影响性能

服务器客户客户客户客户客户LocalLoopback客户端/服务器风格两层C/S结构三层C/S结构B/S结构(浏览器/服务器风格)客户端/服务器风格两层客户端/服务器风格C/S软件体系结构是基于资源不对等,且为实现共享而提出的,20世纪90年代成熟起来C/S体系结构有三个主要组成部分:数据库服务器、客户应用程序和网络服务器(后台)负责数据管理,客户机(前台)完成与用户的交互任务。“胖客户机,瘦服务器”缺点:对客户端软硬件配置要求较高,客户端臃肿客户端程序设计复杂数据安全性不好。客户端程序可以直接访问数据库服务器。信息内容和形式单一用户界面风格不一,使用繁杂,不利用推广使用软件维护与升级困难。每个客户机上的软件都需要维护两层客户端/服务器风格与二层C/S结构相比,增加了一个应用服务器。整个应用逻辑驻留在应用服务器上,只有表示层存在于客户机上:“瘦客户机”应用功能分为表示层、功能层、数据层三层表示层是应用的用户接口部分。通常使用图形用户界面功能层是应用的主体,实现具体的业务处理逻辑数据层是数据库管理系统。以上三层逻辑上独立。通常只有表示层配置在客户机中三层客户端/服务器风格B/S体系结构是三层C/S体系结构的特例客户端有http浏览器即可为增强功能,往往还需要安装flash、jvm及一些专用插件使用标准http/https协议,省却很多麻烦只能“拉”,不能“推”客户之间的通信只能通过服务器中转对客户机资源和其他网络资源的利用受限B/S结构的安全性较难控制(SQL注入攻击…)B/S结构的应用系统在数据查询等相应速度上,要远远低于C/S体系结构服务器的负荷大,客户机的资源浪费用jvm、flash、ActiveX等客户端计算技术解决调用/返回风格总结主程序/子程序风格单线程控制,划分为若干处理步骤功能模块:把步骤集成至模块中抽象数据类型(ADT)操作和数据绑定在一起,隐藏实现和其他秘密面向对象方法(动态绑定),多态(子类),重用(继承)对象活动于不同的进程/线程(分布式对象)CS结构、分层风格组件多个接口,二进制兼容,高级中间件107107计算机科学与技术学院微信数据为中心的体系结构风格Data-centered

Style软件体系结构课程组Preview-TaxonomyofStyles109数据流批处理管道-过滤器虚拟机解释器基于规则的系统调用-返回主程序-子过程OO分层以数据为中心仓库黑板独立构件事件系统隐式调用显式调用进程通信本节内容数据为中心的体系结构风格1仓库体系结构风格2110黑板体系结构风格3数据为中心的体系结构风格-注册表111注册表(WindowsRegistry)注册表中存在着系统的所有硬件和软件配置信息,如启动信息、用户、BIOS、各类硬件、网络、INI文件、驱动程序、应用程序等;注册表信息影响或控制系统/应用软件的行为,应用软件安装/运行/卸载时对其进行添加/修改/删除信息,以达到改变系统功能和控制软件运行的目的。112注册表的结构最初,硬件/软件系统的配置信息均被各自保存在一个配置文件中(.ini);这些文件散落在系统的各个角落,很难对其进行维护;引入注册表的思想,将所有.ini文件集中起来,形成共享仓库,为系统运行起到了集中的资源配置管理和控制调度的作用。应用程序1应用程序2硬件树形注册表(共享仓库)App1.iniApp2.iniHardware.ini……数据为中心的体系结构风格-注册表113剪贴板(Clipboard):一个用来进行短时间的数据存储并在文档/应用之间进行数据传递和交换的软件程序

剪贴板当前数据1应用1应用2应用n复制读取复制读取复制读取当前数据k…用来存储带传递和交换信息的公共区域(形成共享仓库);不同的应用程序通过该区域交换格式化的信息;访问剪贴板的方式:copy&paste.数据为中心的体系结构风格-剪贴板114Data-centered

stylearchitecturesinvolveashareddatasourceapproachtoinformationpassing.数据为中心的体系结构风格-定义本节内容数据为中心的体系结构风格1仓库体系结构风格2115黑板体系结构风格3116Arepository

isacentralplacewheredataisstoredandmaintained.(仓库是存储和维护数据的中心场所)Inarepositorystyletherearetwoquitedistinctkindsofcomponents:Acentraldatastructurerepresentingthecurrentstate;(中心数据结构,表示当前数据的状态)Acollectionofindependentcomponentsoperateonthecentraldatastore.(一组对中心数据进行操作的独立构件)仓库体系结构风格-基本概念117Connector:Interactionsbetweentherepositoryanditsexternalcomponents.(连接件:仓库与独立构件之间的交互)Twomajormechanisms:(存在两种交互机制)Database:thetypesoftransactionsinaninputstreamtriggerselectionofprocesstoexecute;(数据库方式:输入流中的事务类型触发需要执行的过程)Blackboard:thecurrentstateofthecentraldatastructureisthemaintriggerforselectingprocessestoexecute.(黑板结构:中心数据结构的当前状态触发并选择需要执行的过程)仓库体系结构风格-基本概念118Problem:Thispatternissuitableforapplications

温馨提示

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

评论

0/150

提交评论