软件体系结构课程题目:动态软件体系结构的描述1.动态软件体系结构概述软件体系结构(SoftwareArchitecture,简称:SA)是对软件系统整体组织结构和控制结构的刻画,包括系统中各计算单元(构件)的功能分配、各单元之间的高层交互说明(连接件)以及SA的约束。当前,SA研究主要集中在静态体系结构上,这种体系结构在运行时不能发生改变。而对于一些需要长期运行且具有特殊使命的系统(如航空航天、生命维持、金融、交通等),如果系统需求或环境发生了变化,此时停止系统运行进行更新或维护,将会产生高额的费用和巨大的风险,对系统的安全性也会产生很大的影响。静态体系结构缺乏表示动态更新的机制,很难用其分析、描述这样的系统,更不能用它来指导系统进行动态演化。因此,动态软件体系结构(DynamicSoftwareArchitecture,简称:DSA)的研究应运而生。允许在系统运行时发生更新的软件体系结构称为动态软件体系结构,动态体系结构在系统创建后可以动态更新。其动态性主要分为三类:交互式动态性,结构化动态性和体系结构动态性。目前,DSA的研究主要集中在以下几个方面,一是体系结构的动态演化,二是研究模拟和描述体系结构动态更新语言,三是研究支持体系结构动态更新的执行工具。对于DSA动态演化的研究主要围绕动态演化的需求来源、动态演化时期、动态演化类型、动态演化方法等方面;模拟和描述动态体系结构的研究主要集中在对现有的一些ADL扩展以支持体系结构的动态性;动态演化执行工具有加州大学Irwine分校提出的ArchStudio工具集,伦敦皇家学院提出的SAA(SoftwareArchitectureAssistant),北京大学提出的PKUAS等。当前主流的体系结构模型CORBA、COM/DCOM、EJB等,都不支持体系结构的动态更新。同时,由于动态体系结构本身的复杂性,又缺乏通用的结构模型和有效的形式化描述机制及分析工具,使得学术界对DSA的研究还不成熟,实际应用较少,因而解决软件的演化问题将成为DSA应用研究领域的一个重要方向。其次,对于与DSA研究相关概念的统一、通用性支持工具、动态演化完整性、一致性、追溯性等问题都有待进一步深入。此外,随着DSA研究的深入,基于DSA的一些新兴软件体系结构的研究,如自适应软件体系结构、正交软件体系结构、自省动态软件体系结构、网格动态体系结构等,将会成为DSA研究的发展方向。2.动态体系结构的描述与静态体系结构的描述一样,动态体系结构的描述既可以使用描述语言,也可以使用形式化的描述;既可以使用UML建模机制,也可以使用XML建模机制。2.1DSA的描述语言软件体系结构描述语言(ArchitectureDescriptionLanguage,简称:ADL)是SA领域的一个重要研究成果,ADL从较高抽象层次上描述构件接口的语法和语义、系统中的构件和连接子以及它们之间的交互关系、构件的非功能属性以及构件间协议,从而建立系统的体系结构模型。但是大多数ADL只描述系统的静态结构,不支持对体系结构动态性的描述。UML作为体系结构建模工具,它不是一种体系结构的描述语言,而是一种设计语言。因此开发动态软件ADL是很有必要的。近年来,已经开发出了很多动态体系结构描述语言,如Darwin、DynamicACMED、DynamicWright、Rapide等。(1)DynamicWrightDynamicWright是体系结构描述语言Wright的一个扩展,DynamicWright的主要目的是试图模拟或标记已解决软件系统的动态性。采用DynamicWright具有较多的良好特性,其中之一就是能够很容易地描述软件的动态环境。在客户-服务器的体系结构中,如果设计师想要对客户(Client)的每一步工作所依赖的服务器(Server)进行说明,比如Client最初是依赖于Server1的,当且仅当Server1出现问题时,Client将与Server2进行交互。因此,设计师必须用一个符号来表示每一个接触点L。图2-1是上述问题的静态描述,它ClientServer2Server1LL图2-1静态描述并不能清楚的反映出设计师对体系结构的动态依赖关系,这样有可能导致设计师把一些关键的方面遗漏,它还需要一些额外的文本对体系结构的行为进行说明。如果采用DynamicWright来描述客户-服务器的体系结构,就用一个动态变化的新符号,即配置“configuror(C)”。通过增加一个configuror到Wright的标记中,设计师就能很好的阐述控制行为,使得设计师能更好地描述系统体系结构。“Configuror”主要涉及这些问题:什么时候软件体系结构应该重新配置?什么原因使得软件体系结构需要进行重新配置?重新配置应该怎样进行?图2-2是上述问题的动态描述,通过引入虚线和配置C来动态描述该系统的动态特征。这样设计师就能很容易地把系统的动态环境表述清楚。因此,DynamicWright是非常适合动态软件体系结构的环境描述。ClientServer2Server1LC图2-2动态描述(2)DarwinDarwin是一个用于描述系统配置规划的ADL,它把一个程序看成是由不同级别的构件进行相应的配置。相对于其他的ADL,老程序员在使用Darwin上显得更容易些。Darwin具有很多其他ADL的图形表示和文本表示的特点,Darwin与其他的ADL的主要不同之处在于:Darwin具有一个用于对构件所需要的和提供的服务进行指定的规则。图2-3是一个采用Darwin对filter构件的图形化和文本化的描述。filternextoutputPrevComponent{provideprevport,int;requirenextport,int;}图2-3构件filter的Darwin描述在Darwin中,服务的命名是局部命名(如next和output),每一个服务需要被局部地指定,也就是说每一个构件能够从系统中分离出来并且进行独立测试。Darwin对于表示体系结构构件的开发和设计是一个相当成熟的工具,但是Darwin在其他方面的描述上并不是完美的。(3)Z语言Z语言是一种基于集合理论和一阶谓词逻辑的形式语言或方法,支持软件的形式化规格的推理及求精,是迄今为止应用最为广泛的形式语言之一。模式是语言的基本描述单位,一个软件系统的主要是由若干个模式构成,这些模式刻画了系统的静态性质和动态行为。采用扩展的Z语言来描述软件体系结构的动态特性,其描述规则如下:规则1:构件可以表示一个数据类型,接口同样可以表示一个数据类型同样,连接件和接口也可以表示数据类型规则2:接口是用来表示接收还是发出请求的,其接口应该是属于{receive,send}两种类型,定义了接口的具体行为规则3:模式名字可以定义一个具体的接口构件或系统,其模式可包括其他的模式来表示其结构和行为规则4:构件之间的连接是通过连接件来实现的,其连接行为也可以定义是一个类型扩展的Z语言从语义与语法上描述了体系结构中构件连接件和配置,如图2-4所示Connectorcomponent2component1port1port2port3port4port5port7图2-4扩展Z语言描述DSA2.1DSA的形式化描述动态软件系统的形式化描述包括软件体系结构的描述、体系结构的重新配置和系统行为的描述。对DSA的形式化描述,通常可以采用图形化方法、进程代数方法、逻辑方法等。(1)图形化方法由于图能够直观地描述系统体系结构及其风格,所以用图形化方法描述软件体系结构是很自然的事情,用图的重写规则来描述DSA的配置也是一种很自然的方法。采用图形化方法描述DSA的主要有LeMetayer的描述方法、CHAM方法、Hirsh等的描述方法等。(2)进程代数方法进程代数方法通常用于研究并发系统,在并发系统中进程通常用代数方法描述,用微分方法对描述进行验证。多进程代数应用于CCS,CSP和π演算。常用的进程代数方法有DynamicWright、Darwin、LEDA和PiLar等(3)逻辑化描述方法逻辑化描述方法是DSA描述的形式化基础,常用的逻辑描述方法有Gerel、Aguirre-Maibaum方法和ZCL方法等表2-5是对DSA形式化描述方法的归纳与总结,这些描述方法各有其自身的优点和缺点。表2-5DSA形式化描述方法归纳与总结方法语言提出者具体技术特点图形化法LeMetayerapproachLeMetayer用HR图文法、图重写能用图重写来规约体系结构动态行为的途径CHAMG.Berry和G.Boudol引入转换规则及项重写能够描述、分析SA的动态行为,支持SA配置演化的研究进程代数法DynamicWrightRober.JAllen等使用标签事件技术对Wright进行扩展支持动态的建模和分析,用于死锁检测、模型一致性验证等工作DarwinMagee、Kramer等一阶Pi演算对基于消息传递的分布式系统进行描述和动态配置,支持预设的动态演化Pi-ADLArchware基于高阶Pi演算支持动态体系结构建模和验证图形化和进程代数SAAM模型的描述语言于振华等面向对象Petri网OPN和Pi演算两种互补的形式化方法适用于基于构件的软件系统的动态演化,支持动态体系结构建模、分析与验证JB/SADL张世琨等用伪码刻画构件接口、构件结构、构件实现,采用Mealy支持对JB/HMB风格的系统进行规范化描述,并可在工具的支持机刻画构件的行为下进行系统性质分析、动态模拟运行、动态演化和代码框架自动生成此外,徐洪珍等人提出用约束超图表示软件体系结构,用左右应用条件刻画软件体系结构动态演化的前断言和后断言,用条件超图文法建模软件体系结构动态演化过程;汪玲等人提出用扩展的Bigraph描述面向方面动态软件体系结构(AODSA)模型的结构;赵智坤等人提出用动态描述逻辑的方法描述DSA,都为DSA的描述与分析提出了新的方法,为DSA的发展奠定了理论基础。参考文献:[1]张友生.软件体系结构[M].2版.北京:清华大学出版社,2014.[2]李琼,姜瑛.动态软件体系结构研究综述[J].计算机应用研究,2009.6.[3]晏郑勇.基于动态软件体系结构的软件自适应性研究[硕士学位论文].2014.5.[4]周绪川.适用于动态软件体系结构的扩展的Z描述语言[J].计算机应用研究,2012.9.[5]徐洪珍,曾国荪,陈波.软件体系结构动态演化的条件超图文法及分析[J].软件学报,2011.4.[6]汪玲,戎玫等.基于Bigraph的面向方面动态软件体系结构演化研究[J].计算机科学,2010.9.[7]ZhikunZhao,WeiLi.SpecifyingDynamicSoftwareArchitectureswithDynamicDescriptionLogic,JOURNALOFSOFTWARE,VOL.7,NO.1,JANUARY2012