没有合适的资源?快使用搜索试试~ 我知道了~
理论计算机科学电子笔记236(2009)117-130www.elsevier.com/locate/entcs基于图的全局计算系统设计框架Antonio Bucchiaronea,1 格雷格丹尼斯b,2 Stefania Gnesia,3a信息科学技术研究所A. Faedob计算机科学与人工智能实验室,麻省理工学院,剑桥,马萨诸塞州摘要我们提出了一个使用动态软件体系结构设计和分析全球计算系统的框架。该框架被称为T GGA,它集成了类型化图语法和Alloy建模语言,以指定程序化动态软件架构,该架构表示在运行时演变其拓扑结构的系统。我们通过将其应用于汽车软件系统的研究来证明该框架的好处。关键词:基于构件的软件系统,动态软件体系结构,图形文法,合金1介绍现代软件系统已经从孤立的静态设备转变为以协作和协调的方式执行任务的高度互连的机器。 这些系统被称为全球计算系统(GCS),以应对网络环境的频繁变化。而且,它们的结构是动态的,是不断变化的。GCS的特性如下• 全球化:每个GCS由自治的计算实体组成,其中活动不是集中控制的,因为全球控制是不可能的或不切实际的,或者因为实体是由不同的所有者创建或控制的。• 异构:GCS由异构设备组成(即,PDA、膝上型电脑、移动电话等)具有不同的配置和功能。1电子邮件:antonio. isti.cnr.it2电子邮件:gdennis@mit.edu3电子邮件:stefania. isti.cnr.it1571-0661/© 2009 Elsevier B. V.根据CC BY-NC-ND许可证开放访问。doi:10.1016/j.entcs.2009.03.018118A. Bucchiarone等人/理论计算机科学电子笔记236(2009)117• 移动性:由于物理平台的移动或实体从一个平台移动到另一个平台,一些计算实体是移动的。• 可扩展性:GCS能够从小开始,然后随着时间的推移在大小方面扩展(即,更多的用户、设备和连接)和功能(即,新的服务请求)以确保系统可用性。软件体系结构模型旨在描述系统的组件结构、组件之间的交互以及组件的组成模式[31]。由于GCS拓扑可能在运行时发生变化,软件体系结构(SA)模型应该能够描述系统的变化,并在系统执行期间制定这些修改。这种模型被称为动态软件架构(DSA)[2,3,22],以强调系统架构在运行时演变。 人们对SA的动态性提出了多种定义在文学中。下面我们列出一些最突出的定义,以显示动态一词内涵的变化。• Programmed [12]:所有可接受的更改都在运行前定义,并由系统本身触发。• 自我修复[15]:内部发起和评估变更,即,监视系统的运行时行为以确定是否需要改变。在这种情况下,将自动执行重新配置• 自适应[25]:系统可以通过执行运行时更改来适应其环境。• Ad-hoc [12]:变更由用户发起,作为软件维护任务的一部分,它们在运行时定义,在设计时不知道• Constructible [3]:所有的架构变更都必须用给定的修改语言来描述,其原语约束了可接受的变更。在本文中,我们首先形式化的程序化动态软件体系结构(PDSA)使用类型图文法(TGG),然后实现每个方面 为了有一个完整的框架,能够设计和验证GCS。这个框架的名字是TGGA(其中A表示使用Alloy),它的目标是允许软件架构师设计GCS在运行时可以支持的一组可能的结构演化,以及验证每个系统配置必须满足的一组不变属性。1.1动机我们选择TGG作为GCS的正式表示,因为(i)它们提供了一个正式的基础和图形表示,这与通常的架构表示方式一致,(ii)它们允许描述风格,配置和重构的自然方式,(iii)它们主要用于指定架构[5,19,24,32]。在[8]中,本文的一位作者尝试使用DynAlloy [14]来实现A. Bucchiarone等人/理论计算机科学电子笔记236(2009)117119TGG框架。DynAlloy规范由一个大型单片文件组成,妨碍了其可读性和可用性。DynAlloy非常难调试模型,以在规范过程中发现和纠正错误。此外,DynAlloy很难直接支持正式规范。出于这些原因,我们选择Alloy [20]来支持正式规范。Alloy提供了一种基于签名和关系的描述语言来表示软件模型,我们发现它非常适合于对与PDSA相关的超图进行建模。 此外,Alloy基于一个简单的符号,这使得很容易此外,它还提供了一阶逻辑的扩展,使用关系运算符来表示属性和约束。 AlloyAnalyzer可以将模型和逻辑谓词转换为布尔公式,使用有效的SAT求解器来确定满足性,并在谓词不适用于模型的情况下提供反例。在选择Alloy之前,我们还尝试使用图形转换工具,如AGG [1],PROGRES[26],Fujaba [27],CheckVML[30][16][17]所有这些都允许设计类型和属性图。对基数约束的完全支持,包括自动约束检查,仅由AGG提供。除了CheckVML,它的目的是将图转换模型转换成模型检查器的输入语言,所有这些工具都允许执行图转换规则,即使在负的应用条件下。它们的极限在于设计类型超图的可能性。唯一支持类型超图的工具是图形交换语言GXL [17],但它缺乏验证方面。综上所述,上述考虑使我们选择Alloy作为我们的工具。1.2本文结构本文其余部分的结构如下。在第2节中,我们介绍了我们的PDSA形式化使用TGG。第3节介绍了每个TGG方面的Alloy实现,而第4节显示了我们可以使用TGGA设计自动驾驶系统的方式。第五部分总结了本文的结论和未来的工作。2作为类型化文法的可编程DSA本节中描述的方法遵循[7]中讨论的方法。它基于使用类型化图文法(TGG)的动态软件体系结构建模。它介绍了将在第3节中使用Alloy实现的各个方面。这些方面来自于图论理论[9,28]。我们集中我们的approach类型超图重写系统在单推出(SPO)的方法[11]。类型化重写是经典方法的变体,其中重写发生在所谓的类型化图上,即,标记在本身是图的结构上的图(即,所谓的类型图)。在下文中,我们提出了一组定义,我们将在形式化中使用定义2.1[Hypergraph]一个(hyper)图是一个三元组G=(NG,EG,φG),其中120A. Bucchiarone等人/理论计算机科学电子笔记236(2009)117G→G→→→→→⟨⟩GLRzR,MMJG、RJzGJ,、N G是节点的集合,E G是(超)边的集合,φ G:E GN+描述了图的连接,其中N+代表节点的非空序列的集合。 我们称|φ G(e)|e的秩,其中|φ G(e)|> 0,对任意e ∈ E G.连接函数φG将每个超边e与n所连接的有序非空节点序列相关联。定义2.2[图态射]设G和G'是两个图。一对函数<$fN,fE<$其中fN:NG→NGJ和fE:EG→EGJ是从G到G'的图态射,定义2.3[类型超图]设T是一个图。 T上的类型图G是图|G|,连同图态射τ:|G| →T. T型图f:G1→ G2之间的态射是图态射f:|G1| → |G2|与类型一致,即τ G1=τ G2<$f。图重写的基本思想是考虑一组图重写规则(即,形式为p:L R的规则,其中L是规则的左手边,R是规则的右手边,作为可能无限的直接导子集合的示意性描述。Gp GJ表示直接推导,其中匹配m:LG固定L在图G中的出现。 应用规则p,通过用R替换L在G中的出现,从G产生导出图GJ。每个图重写规则定义其左侧和右侧的元素之间的部分关系,确定哪些元素被保留、删除或由一个规则。在这项工作中,给定一个图G和一个重写规则p,使用单推出图变换方法[11]实现了使用p对G的定义2.4[SPO直接导子]给定一个类型图G,一个重写规则p,和一个匹配m:LG,我们说存在一个从G到G'的直接导子rJ使用p,记为r j:G p G j,如果,对于合适的态射r'和m',我们有以下推出方:Fig. 1. 基于SPO的图重写。定义2.5[(T型)图文法](T型)图文法是一个元组T,G in,P,其中T是类型图,G in是初始(T型)图,P是一组重写规则。给定一个文法G= T,Gin,P n,我们将使用以下概念:• 可达配置的集合R(G),即,初始构形G可以演化到的所有构形。形式上,R(G)= {G |G inG}。A. Bucchiarone等人/理论计算机科学电子笔记236(2009)117121D GD GG• 理想配置的集合P()被定义为具有以下类型T满足一个合适的性质P。形式上,D P(G)= {G|G是一个T-型图,且P在G中成立。程序化的动态机制使得能够提出若干核查问题。考虑理想配置的集合P(),那么它应该是可能的(在 至少)了解是否:• 从任何可达配置都是可取的这个意义上说,这种规范是正确的。这归结为证明R(G)<$DP(G),或等价地证明<$G∈ R(G):P在G中成立.• 规格是完整的,在这个意义上,任何理想的配置可以达到。这对应于证明DP(G)<$R(G),或者等价地,如果P在G中成立,则G∈ R(G)。在其余部分中,为了简单起见,我们省略了前缀2.1程序化DSA的形式化在本文中,我们考虑PDSA。他们假设所有的架构变化都在设计时被识别,并由程序本身触发[12]。 许多建议在文献[4,19,24]中,使用图文法来指定PDSA呈现了这种动态性。 PDSAA与T型图文法A=T,Gin,P相关联,其中T代表PDSA的风格,Gin是初始配置,重写规则集P给出了体系结构的演变。语法固定了架构中所有元素的类型及其可能的连接,重写规则说明了配置可能更改的可能方式。PDSA的每个软件体系结构配置都由一个图表示,其中组件(分别为连接器)使用边和它们的端口(分别(图为外伸的触角)组件和连接器连接在一起,将各自的端口连接到同一节点。架构风格只是一个类型图T,它只描述端口、组件、连接器的类型,加上一组不变的约束,指示这些元素如何合法地连接。一个符合这种风格的配置,然后描述的T型图的概念。类型图被定义为具有类型态射的图由于我们用图来表示架构,因此它的重构是由一组重写产生式来描述的,这些重写产生式说明了SA配置可能发生变化的可能方式3合金实现上一节中介绍的每个概念的实现都是使用Alloy [20,21]完成的,Alloy是一种轻量级的软件模型建模和分析方法。由于我们使用类型化图文法来表示PDSA,因此在概述了Alloy的基本概念之后,我们提出了TGGA,122A. Bucchiarone等人/理论计算机科学电子笔记236(2009)117类型化图语法概念,用于设计和验证PDSA的结构方面。我们关注的主要方面涉及:• 代表性,即设计、构建和浏览PDSA的便捷方法;• 风格,即约束考虑中的PDSA以满足某些要求的方便方法;• 属性,即表达相关结构属性的方便逻辑形式;• 分析,即有效的核查技术和工具。我们展示了如何用我们的方法解决这些问题。我们的经验结果显示,TGGA非常适合发展的早期阶段,在此阶段,风格所施加的建筑限制在模型和风格的迭代过程中定义,并辅以模型查找技术。我们使用Alloy来实现图,图态射,图变换等。从这个核心实现开始(即,TGG Alloy模块),我们已经扩展它来表示风格,配置,重新配置等概念。我们的形式化方法,PDSA元素和Alloy实现之间的关系。表1中总结了这些情况。正式内容PDSA元素合金实现类型超图配置签名类型图风格签名类型化部分态射再计算规则签名SPO图重写(单步)进化(单一进化)谓词类型化图语法PDSA事实表1T GGA元素3.1TGGA详细介绍在本节中,对于表1中第一列的每个方面,我们显示了包括特定TGG合金模块的各个合金实现。 这导致了TGG合金模块的实现。在本节之后,我们将使用此模块介绍汽车软件系统的设计和验证3.1.1图每个图的模型中的三个基本概念是节点、端口和边,它们表示为清单1中列出的三个Alloy签名。A. Bucchiarone等人/理论计算机科学电子笔记236(2009)11712312345678910111213141516清单1:图形根据上面的定义,节点和端口是原子概念,而边有一个将每个端口映射到节点的场连接。声明中的关键字lone表示多重性,在本例中,每个端口最多映射到 一个节点。签名Graph(清单1的第10-16行)用于将图定义为由节点和边组成的结构3.1.2类型图与类型图为了生成符合给定类型图的图,我们在Alloy中定义了签名TypedGraph,它是一个具有类型态射的图。 清单2给出了类型化图的实现。需要注意的是,每个类型化图中态射的目标图是系统的样式(第2行)。类型图由一组基本元素组成(即, Edge、Node和Ports),这些元素可以构成一个类型化图,加上一组约束,指示这些元素可以如何lagally连接。对于我们想要设计的每个新系统,我们必须定义一个包含所有这些元素的Alloy模块。我们的案例研究的风格在第4.2.1节中描述。123456789清单2:类型化图3.1.3SPO图重写和重写规则给定初始图Gin和重写规则p,使用单推出图变换方法在Alloy中实现使用p重写Gin[11]。为了实现它,我们定义了谓词rwStep,它执行一个重写步骤并生成目标图GJ(清单3的第7-9行)。在抽象sig节点{}抽象sig端口{}abstractsig Edge {conn:Port ->lone Node}{//非空连接一些连接}//图形定义abstractsig Graph{ edges:setEdge,节点:设置节点}{//连接到图中节点的边边.节点中的节点}sigTypedGraphextends Graph{style:Graph,fN:节点->节点,fE:边缘->边缘}{fNin nodes ->one style.@节点fEin edges->one style.@边缘所有e:边|(e.fE).conn = e.(连接fN)}124A. Bucchiarone等人/理论计算机科学电子笔记236(2009)117→→为了应用重写步骤,我们必须定义一组重写规则,类型化图可能改变的可能方式。 每个规则被定义为类型化的偏态射p:LR(如清单3第1-5行所示),其中L和R是类型化图(即, 源和目标)。 对于每个新系统,我们指定一个Alloy模块,其中包含系统可以执行的所有重构规则在运行时。123456789清单3:SPO重写3.1.4类型图文法与每个PDSA相关联的类型化图语法已使用清单4中描述的代码定义。 它使用Alloy模块(即,util/ordering)创建类型图上的线性排序每个新的类型化图(即,配置)是通过执行单个重写步骤(第4行)而生成的。12345清单4:类型化图语法3.2PDSA的结构分析为了验证PDSA的结构观点,我们列出了一组分析技术,我们可以使用TGGA执行。• 模型发现:这是TGGA的主要分析能力。Alloy Analyzer基本上探索所有可能模型的状态空间(的有界片段)。例如,我们可以很容易地使用Alloy Analyzer来构造初始配置:我们需要请求一个满足样式事实并具有一定数量的边和节点的图实例。• 不变量分析:这个分析的目的是:给定一个属性P在某些操作的应用序列下是不变的。在我们的例子中,这个操作是重写步骤。 一种用于说明属性P的不变性的技术包括指定P在初始配置中成立,并且对于每个非初始配置和每个重写操作,以下成立:P(G)和rwStep(G,GJ)P(GJ). 为此,我们定义了我们将在下一节介绍的Alloy模块//一个重写规则abstractsig Rewrite{ source:TypedGraph,target:TypedGraph}predrwStep[g,rw:重写|rw.source = g&&rw.target= g'}openutil/ordering[TypedGraph]事实文法{all tg:TypedGraph- last |let tg ' = next[tg]|tg.style=}A. Bucchiarone等人/理论计算机科学电子笔记236(2009)117125在下一节中,我们将使用TGGA设计一个汽车软件系统。4汽车行业案例研究本文中提出的案例研究在Sensoria项目的不同地方进行了讨论[6,23,13]。在下一节中,我们将介绍路线规划系统,它是[13]中提出的汽车系统的一个子系统4.1路线规划系统路径规划系统(RPS)负责提供引导指示给司机特别是,它必须能够提供以下功能:• 路线规划:每个车辆通过使用车辆中的GPS系统提供的信息或已经存在的内部信息来自主地规划行程。RPS在观光数据库中搜索合适的景点,并将其显示在车辆导航系统的车载地图• 低油:在驾驶过程中,车辆机油灯报告低油位。这触发车载诊断系统执行传感器值的分析。诊断系统报告一个气缸盖中的压力问题,并且汽车不再可驾驶,并发送具有诊断数据的消息以及车辆的GPS数据到道路援助服务(RAS),最佳解决方案(拖车服务,修理店,租车)。• 银行手机充值申请:银行代表一家提供金融服务的机构。与RPS应用程序相关的银行操作是在驾驶员移动电话中收取信用• 车辆连接:史蒂文和约翰在去意大利的路上,他们开着不同的车。两人都想一起度假。约翰已经将目的地输入到他的导航系统中,该系统正在计算并提供旅行期间的最佳路线。为了确保两辆车走同一条路线,史蒂文的导航系统只是从约翰的导航系统接收路线规划信息自己规划路线。4.2利用TGGA在本节中,我们使用TGGA设计并验证我们的案例研究。 RPS系统的PDSA的每种配置可由图中所示的组件组成2,我们现在简单地描述它,而表2列出了每个组件的端口所使用的缩写。BANK:提供与RPS应用程序相关的银行操作;GPS:提供全球定位系统数据(如车辆的当前位置);Local Discovery(LD):在本地存储库中查找适当的服务;RAS:提供汽车修理所需的服务(拖车、车库和汽车租赁);外部车辆(EV):在旅行期间可以连接的另一辆车辆;126A. Bucchiarone等人/理论计算机科学电子笔记236(2009)117BANKBVZ,VS◦吉夫VO r,rOVORCHOLD z,V CG,。你好,VV VGPSGP S z,LDLDOz,RASRAVz,EVVV z,图二. RPS的基本组成部分缩写VVVSVOVGPSOLDOVBVRAVLDOGPSV描述车辆-车辆车辆-服务车辆-导航车辆-GPS搜索器-本地发现搜索器-车辆银行-车辆道路援助-车辆本地发现-导航GPS -车辆表2端口描述。车辆通信网关(VCG):将消息转发到外部组件(BANK、RAS、EV);调度器(ORCH):负责通过组合服务来实现目标,因此每次驱动程序4.2.1RPS风格在确定组成RPS系统的每个组件后,我们定义了每个PDSA配置应遵循的RPS风格。为此,我们定义了一个Alloy模块来实现图3的类型图。 完整的Alloy代码可以下载[29]。4.2.2RPS的结构分析我们的框架使用模型发现和不变量分析来验证PDSA的结构。对于第一个,我们实现了一个名为模型查找的模块,该模块从我们初始配置的元素(如组件,端口等)的定义生成由精确数量的组件、端口和附件组成的所有可能的PDSA配置集当合金运行com-A. Bucchiarone等人/理论计算机科学电子笔记236(2009)117127GPSBVVSVOGPSV旧版银行rrr,RasVV你好,VV.·,r,VGPSLDOOVRavLDEVOrchV CG图三. RPS型图命令执行后,Alloy分析器生成所有可能的符合RPS风格的配置。图4中示出了其中的两个,其中1a节点表示汽车内部的组件之间的通信,并且e节点表示内部组件与外部环境中的组件之间的通信。图四、RPS的两种可能的符合风格的PDSA配置为了执行不变量分析,我们定义了一组重构规则,一组要验证的属性,最后是一个Alloy谓词不变量分析,它将用于验证我们系统上一组属性的不变量图5显示了一组可能的重新配置规则(即,GPS请求,请求帮助和呼叫朋友),而图。图6给出了一个RPS可能的运行时演变的例子,作为一组转换,每个转换由一个startingState、一个arrivalState和一个触发器(即重新配置规则)组成。此外,我们定义了RPS的每个DSA配置在每个重新配置步骤之后必须满足的一些属性,例如:特性1:没有组件VCG直接连接到组件LD;128A. Bucchiarone等人/理论计算机科学电子笔记236(2009)117图五. RPS的重新配置规则图第六章RPS的运行时演化示例属性2:如果存在组件LD,则存在组件ORCH,两个必须连接;性质3:组件ORCH恰好有两个连接;属性4:VCG组件的每个端口不能连接多个组件。A. Bucchiarone等人/理论计算机科学电子笔记236(2009)117129如果我们检查每个属性的不变分析谓词,那么我们使用Alloy Analyzer获得,每个属性对于我们运行示例的每个可达配置都是有效的。考虑到[7]中提出的PDSA形式化,我们可以得出结论,RPS的结构规范是正确和完整的。5结论和今后的工作在本文中,我们提出了TGGA,一个工具支持的框架,设计全球计算系统。它基于将动态软件体系结构建模为类型化文法,并使用Alloy实现。此外,合金分析仪已用于确保风格一致性,进行模型查找并验证每种PDSA配置的结构特性。 该框架非常适合于反应式建模过程:软件架构师构建模型,系统对报告风格的不一致做出反应。TGGA通过在可重构图上的局部重写规则来定义动态性,并且它具有通过以下方式来跟踪可重构项的机制: 迹态射的概念为了验证结构特性,TGGA通过用于定义建筑风格的相同形式来表达它们即 合金逻辑 作为一种建筑的活力,我们只考虑了 编程动态性,其中所有可允许的更改都在运行时间之前定义,并由系统本身触发。其他未来的研究扩展了我们的建模方法。 与此相关,有必要使用具有负应用条件的图语法[18],以便对配备有关于它们可以应用的上下文的约束的产生式进行建模。例如,这样的条件可以声明仅当某些节点、边或子图不存在于图中时产生式才适用。另一个未来的研究是扩展我们的建模方法,以建模和分析分层DSA的基本元素,一些更复杂和结构化的组件。我们 正在考虑使用层次超图[10],其中每个超边可以表示组件之间的关系。确认这项工作得到了欧盟项目S ENSORIA(IST-2005-016004)和意大利项目TOCAI的部分资助。IT.引用[1] GG。网址http://tfs.cs.tu-berlin.de/agg/[2] 艾伦河,R. Douence和D.Garlan,《分析动态软件架构》,FASE21-37号。[3] Andersson,J., 动态软件体系结构中的问题,在:ISAW111-114[4] 巴雷西湖R. He ckel,S. Thone和D. V'o,Style-Bas edRfinnementofDynamicSoftwareeArchitectures,in:WICSA'04(2004),pp. 155-166。130A. Bucchiarone等人/理论计算机科学电子笔记236(2009)117[5] 巴雷西湖R. He ckel,S. Thone和D. Vo,Style-bas edmodelingandrefinementofservi ce-orientedarchitectures,Software and System Modeling 5(2006),pp. 187-207[6] Berndl,D.和N. Koch,汽车场景:说明服务规范,技术报告第2号,FAST技术报告(2007)。[7] 布鲁尼河,A. Bucchiarone,S. Gnesi和H. Melgratti,Modeling Dynamic Software Architectures usingTyped Graph Grammars,ENTCS213(2008),pp.39比53[8] Bucchiarone,A.和j.P. Galeotti,使用DynAlloy进行动态软件架构验证,载于:GT-VMT[9] Corradini,A., 联合 Mo ntanari,F. Rossi,H. 埃里格河 He ckel和M. 刘伟,G raph变换的代数应用--第一部分:基本概念和双推出方法,载:[28],1997年,pp. 163-246。[10]Drewes,F.,B. Ho Mushmann和D.Plump,层次图变换,J.Comput. 系统Sci. 64(2002),pp. 249-283.[11] Ehrig , H. , R.他 很 好 , M 。 KorKang , M.卢 韦 湖Ri b. , A.Wagner 和 A. Corradini ,AlgebraicApproachesto Graph Transformation - Part II:Single Pushout Approach and Comparisonwith Double Pushout Approach,in:[28],1997,pp. 247-312[12] Endler,M.,一种用于实现分布式程序的通用动态重构的语言,其特点是:BSCN175-187[13] 欧盟SENSORIA项目。网址http://www.sensoria-ist.eu/[14] 弗里亚斯,M., J. Galeotti,C. L. Pombo和N. Aguirre,DynAlloy:用行动升级合金,在:ICSE442-450[15] Garlan,D.和B.Schmerl,基于模型的自修复系统适应,在:WOSS27-32.[16] G ROOVE。网址http://groove.sourceforge.net/[17] G XL。网址http://www.gupro.de/GXL/[18] Habel,A.,R. Heckel和G.张文,带负应用条件的图论,北京大学出版社。告知。26(1996),pp. 287-313[19] Hirsch , D. , P. Inverardi 和 U.Montanari , Reconfiguration of Software Architecture Styles withName Mobility,in:COordination148比163[20] Jackson,D.,Alloy:A Lightweight Object Modeling Notation,TOSEM11(2002),pp.256-290。[21] Jackson,D.,“Software Abstractions: Logic, Language, and Analysis,” The MIT Press,[22] 卡塞姆湾H、M. Jamiel,A. H. Kacem和K. Drira,基于ADL的软件体系结构动态描述方法的评估和比较,ICEIS189- 195.[23] Koch,N.,汽车案例研究:道路救援场景的UML规范,技术报告编号1、FAST技术报告(2007)。[24] 等着吧D L.,用语法描述软件结构样式,IEEETrans. Softw. Eng. 24(1998),pp. 521-533[25] Oreizy , P. , M. 戈 尔 利 克 河 Taylor , D. Heimhigner , G. 约 翰 逊 , N 。 Medvidovic , A. Quilici , D.Rosenblum和A. Wolf,一种基于架构的自适应软件方法,IEEE智能系统及其应用14(1999),pp.54比62[26] P.URLhttp://www-i3.informatik.rwth-aachen.de/research/projects/progres/[27] 项目,F.网址http://wwwcs.uni-paderborn.de/cs/fujaba/index.html[28] 罗森伯格,G.,编辑,1、股份有限公司、River Edge,NJ,USA,1997.[29] RPS代码.网址http://www.antoniobucchiarone.it/code/RPSCode.zip[30] S c henches,A. 和D. Varr´o,CheckVML:AToolforModelCheckingVisualModelingLanguages,in:UML九比九十五[31] 肖,M。和D. Garlan,[32] Wermelinger,M.和J. L. Fiadeiro,A graph transformation approach to software architecturereconfiguration,Sci.Comput. 程序. 44(2002),pp.133-155
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Aspose资源包:转PDF无水印学习工具
- Go语言控制台输入输出操作教程
- 红外遥控报警器原理及应用详解下载
- 控制卷筒纸侧面位置的先进装置技术解析
- 易语言加解密例程源码详解与实践
- SpringMVC客户管理系统:Hibernate与Bootstrap集成实践
- 深入理解JavaScript Set与WeakSet的使用
- 深入解析接收存储及发送装置的广播技术方法
- zyString模块1.0源码公开-易语言编程利器
- Android记分板UI设计:SimpleScoreboard的简洁与高效
- 量子网格列设置存储组件:开源解决方案
- 全面技术源码合集:CcVita Php Check v1.1
- 中军创易语言抢购软件:付款功能解析
- Python手动实现图像滤波教程
- MATLAB源代码实现基于DFT的量子传输分析
- 开源程序Hukoch.exe:简化食谱管理与导入功能
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功