《软件体系结构-第5章.ppt》由会员分享,可在线阅读,更多相关《软件体系结构-第5章.ppt(64页珍藏版)》请在三一办公上搜索。
1、1,软件体系结构,北京理工大学计算机科学技术学院,徐 进,第五章,2,课程内容第一章 软件体系结构基本概念第二章 软件体系结构经典风格第三章 软件体系结构应用第四章 软件体系结构设计模式第五章 软件体系结构研究与发展,3,第5章 软件体系结构研究与发展5.1 软件体系结构的研究现状5.2 软件体系结构语言 5.1.1 ADL核心模型 5.1.2 ADL构成要素 5.1.3 几种ADL介绍5.3 软件体系结构形式化描述 形式化方法简述 软件体系结构抽象模型 5.2.3 Z标记形式化描述语言,4,5.1 软件体系结构的研究现状,软件体系结构已经成为国内外软件研究的热点,人们已经把解决复杂软件设计的
2、难题,以及提高软件设计效率和质量寄托在软件体系结构研究的突破上。然而,软件体系结构的技术研究从理论到实践还处在发展时期。主要研究包括:,1)软件体系结构形式化2)软件体系结构的描述语言、工具和环境3)软件体系结构经典风格、应用框架和设计模式的总结,5,1)软件体系结构形式化,用形式化体系解释体系结构抽象定义体系结构的精确语义,证明某种体系结构运用的必然性和充分性,进而扩展证明它的使用性,并且,作为验证结构合理性的基础,用于系统设计中的结构选取。主要软件体系结构的形式化体系:形式化对象关系表达:类属理论(Category Theory)形式化描述语言:Z标记语言(Z Notation)抽象代数理
3、论:抽象模型等等,形式化方法的两方面研究:,6,体系结构描述语言ADL(Architecture Description Language)用形式化的符号表示体系,进行建模和结构分析。抽象描述结构的形式,便于掌握系统全局和特征,便于分析系统的构成角色和特性,便于复用和继承已有结构,目标是体系结构自动化。,研究进展:ACME:描述系统结构交互机制Aesop:对体系结构特定风格的规范性描述C2:描述分布式可延展动态系统的结构MetaH:用于描述导航和控制体系结构Rapide:对体系结构描述中的动态行为建模并模拟运行SADL:用形式化对体系结构不同层次的细节描述Unicom:用公共接口协议连结构件,
4、粘合生成系统Wright:用于并发系统建模,可对死锁等动态行为分析,7,2)软件体系结构的工具和环境,描述语言和工具环境的关系:描述语言-研究语言的成分和表示能力工具环境-研究工程平台和系统建设能力描述语言的可用性,直接反映在工具所提供的环境中,软件体系结构工具环境应该具备的基本功能:提供设计规范提供多视角表达提供分层细化,以及性能分析可生成运行代码提供动态行为描述,可进行运行配置,8,ADL研究现状:认识不统一,ADL商业产品大都来自企业和学术团体,它们的手段和目标不尽相同。ADL研究虽然在界有影响,但并没有达到一般性的实际应用。,ADL具备的共同点:提供图形句法表示手段,给了形式化的句法和
5、语义提供分布式系统建模描述除支持数据流和控制流连接,很少支持其他类型的连接支持详细结构层次的表示,并支持子结构的模板实例化除了一般的注释说明,不支持设计的依据和历史跟踪,5.2 软件体系结构语言ADL,9,各种ADL目前存在的问题:描述结构的实际处理角度不同。有从硬件结构的角度,也有从软件优先级角度的。描述结构的范围不同。大部分都包含管道过滤器体系结构形式,有的包含了层次式部件结构,有的包含了对象式结构,还有的包含了动态体系以及类继承体系。描述结构支持一致性的完整程度不同。大部分支持内部一致性,有的支持部件间的一致性。描述结构在分析能力的支持方面存在明显不足。描述结构在处理相同体系结构的不同实
6、例能力上,或者说可变性方面,存在明显不足。,10,IEEE P1471规定了应用体系结构的描述标准:(2000.9),体系结构的存档要求能区别个体及其关系体系结构视点,体系结构视点的选择体系结构视点之间的一致性体系结构原理,ADL应该具备的基本特点:能使用较小的独立体系结构元素来建造软件系统;关注的是构件和连接件描述,而无需关注实现;构件和连接件以及体系结构都是开发设计的重用部件;描述的每个元素都有自己局部的结构,支持动态变化组合;可描述不同体系结构的关联;可对描述的体系结构进行性能及功能的分析。,11,所有ADL都围绕着被称为“软件体系结构核心模型”而设计的。软件体系结构核心模型由五个基本元
7、素:构件、连接件、配置、端口和角色。,5.2.1 ADL核心模型,软件体系结构,配置,构件,连接件,端口,角色,1:N,1:N,1:N,返回本章目录,12,构件:是软件结构的构造块,是计算与状态存在的场所构件的大小:可小到只有一个过程或大到整个应用系统构件的存储:有自己的或与其它成分共享的存储和执行空间构件的属性:如类型、语义、状态,等,1)构件的概念,5.2.2 ADL的构成要素,构件构件接口(端口)构件类型构件演变,返回本章目录,13,构件接口(端口):构件与外部交互的端口点。构件接口可以有多个,不同的接口对应不同的操作。ADL中的构件接口说明,提供构件消息和操作变量的描述手段,能定义构件
8、提供的计算及约束条件。构件类型:构件是按照指定的类型实例化的,类型可参数化。ADL应具有构件类型保证机制。构件演化:构件通过子类型形成特性细化的特殊构件。目前只有少数几种ADL部分地支持构件演化。,14,连接件:软件结构的构造块。建立构件交互的规则。与构件的区别:不直接对应编译单元。连接件包括:消息路由兼容设备、共享变量、是入口表、缓冲区、连接器指令、动态数据结构、内嵌在代码中的远程过程调用序列、初始化参数、客户服务协议、管道、数据库、应用程序之间的查询语言,等。,2)连接件的概念,连接件连接件接口(角色)连接件协议,15,连接件接口(角色):由一组角色组成,参与者对应交互的角色。例如:二元消
9、息传递连接件有两个角色,发送者和接收者。而广播连接件有多个角色,一个发送者角色,多个接收者角色。连接件协议:提供规定类型的通信交互的规范。协议可以是独立的或是内嵌在交互机制中实现的。ADL应提供协议的交换语法,能够规划交互协议,建立内部连接件的依赖关系以及用途边界。通过强制风格和角色限制来保证连接约束。,16,体系结构配置-是用来描述体系结构的构件与连接件的连接图。配置信息可以用来确定构件的连接、接口的匹配,通信的正确性以及实现的组合行为语义。文本和图形说明-ADL应该以简单的、可理解的语法来配置结构化信息。除了文本形式外,还提供图形说明形式,并且它们之间可以互换。多视图、多场景的体系结构方法
10、成为研究方向。复合及合成-复合是包括将一个整体作为另一个的部分构成更大的配置。这样可以适应异构和不断变化的结构,3)体系结构配置的概念,结构配置文本和图形说明复合及合成,17,5.2.3 几种ADL介绍,目前在软件体系结构研究领域出现多种体系结构描述语言,既有针对特定领域的ADL,也有以通用性为目标的ADL。不同的ADL描述体系结构的侧重点不尽相同。,返回本章目录,例如:,18,1)UniCon(Universal Cennection)语言,UniCon是 Caregie Mellon 大学的 Mary Shaw 等人研究的成果。它主要的目标是支持对体系结构的描述,针对构件连接器模型,区分不
11、同需要的构件,支持构件打包、定位、交互模式描述和编码。,UniCom语言的形式,构件,连接器,1.表演者2.接口3.类型实现,1.角色2.协议3.类型实现,19,构件规范 表演者:实体命名接口:调用形式(性能或交互性的功能)类型:可以是过滤器、子程序、知识源,事件处理等,连接器规范角色:实体命名协议:角色与表演者对应的规则、交互约束限定、性能类型:可以是管道、过程调用、事件驱动、等,成分特性原始构件由体系结构之外的语言描述;合成构件用体系结构语言描述连接器角色若为多种角色,则多端情况可用多态方式构件和连接器是互补和对称的,20,UniCon语言构件描述示例,Component Real_Tim
12、e_System interface is type General implementation is uses client interface RTclient PRIORITY(10)end client uses server interface RTserver PRIORITY(10)end server establish RTM-realtime-sched with clientapplicetion1 as load serverapplicetion2 as load serverservices as load ALGORITHM(rate_monotonic)end
13、 RTM-realtime-sched establish RTM-remote-proc-call with clienttimeget as caller servertimeget as definer IDLTYPE(Mach)end RTM-remote-proc-call end implementationend Real_Time_System,实时系统构件说明:1.实时系统接口是通用类型2.实时系统的实现,Client接口:优先级等 Server接口:优先级等 建立实时管理的实时调用程序 Client和Server加载应用load 和服务算法 建立实时管理的远程调用程序 Cl
14、ient和Server交互方式,21,Connector RTM-realtime-sched protocol is type RTscheduler role load is load end protocol implementation is built in end implementationend RTM-realtime-sched,实时调度表连接件:1.协议 类型是实时调度表 角色是加载2.实现是在执行中,UniCon语言连接件描述示例,22,2)C2 体系结构语言,C2支持事件风格的用户界面体系结构描述语言。配合有设计环境Argo系统。使用可替换、可重用的GUI构件开发体系
15、结构。重点是构件的动态改变,以满足某些GUI特性。C2的连接件负责构件之间的消息传递,C2的构件只能通过连接件完成消息传递。消息要么是请求其它构件执行某项操作,要么是通知其它构件改变状态,请求消息只能向上层传递,通知消息只能向下层在内部构件间传递。C2的构件维持状态、执行操作并通过top和bottom端口与其它构件交换信息。每个构件最多只能和一个连接件相连,而连接件可以和任意数目的构件相连。,23,Component_message_interface:=top_domain_interface bottom_domain_interfacetop_domain_interface:=top_
16、domain is out interface_requests in interface_notificationsbottom_domain_interface:=bottom_domain is out interface_ notifications in interface_requestsinterface_requests:=request;|nullinterface_ notifications:=notification;|nullrequest:=message_name(request_parameters)request_parameters:=to componen
17、t_nameparameter_listnotification:=message_nameparameter_list,C2体系结构形式化描述形式,构件,顶部接口,底部接口,提出请求,接受通知,接受请求,发出通知,24,C2体系结构形式化描述示例,Attendee-1,Attendee-m,ImportantAttendee-1,ImportantAttendee-n,MeetingInitiator,Attconn,Mainconn,ImportantAttconn,C2会议安排系统,包括3个功能构件:发起人、多位出席者和重点出席者,3个连接件为主要连接件、出席连接件和重要出席连接件。某些
18、消息由发起人同时发给出席者和重要出席者,但某些消息只能传送给重要出席者。因为一个C2构件在top和bottom端分别只有一个通信端口,并且所有消息路由功能都与连接件相关,所以主要连接件分别与出席连接件和重要出席连接件相连,为保证出席连接件和重要出席连接件的top和bottom端能分别接收与它们相连的构件消息。,25,3)Wright体系结构语言,Wright是一种特定的形式化体系结构描述语言。它的连接器针对离散的、异步的行为关系模型构件,并可限定配置。,Wright体系结构形式化描述示例,Capitalize,Split,Upper,Merge,示例描述大写字母转换器,系统将读入的字符流分离成
19、需要转换和不需要转换的两部分,经过转换后的部分再与不需要转换的部分合并成输出流。系统运用了经典的管道过滤器结构。,p1,p2,p3,26,Wright构件描述,Component SplitFilter port Input read data until end-of-data is reached port Left output data repeatly Port Right output data repeatly computation repeatly read from input,then output,alternating between Left and Righ Po
20、rts,分离过滤器构件的描述分为两部分:构件端口:输入端口数据到达时读数据 左端口反复地输出数据 右端口反复地输出数据构件的计算:在左右端口之间交替地,反复读输入,然后输出,27,Connector Pipe Role Source deliver data repeatly,signalling termination by close Role sink read data repeatly,closing at or before end data Glue sink receives data in same order delivered by source,连接器管道描述:数据源角
21、色(Source)反复地交付数据,直到关闭信号出现则终止数据池角色(sink)反复地读数据,在数据结束或结束之前关闭粘合(glue)按照数据源交付的同一次序接收数据,Wright连接件描述,在Wright中,用管道过滤器风格来描述由数据源到接收器的模式。这样在大写字母转换系统中的管道,可以直接用该风格的连接器。指定连接到大写转换器的工作,由具体实际应用来完成描述。,28,Configuration Capitalize Component SplitFilter Component UpperCase Connector Pipe.Instances Split=SplitFilter;upp
22、er=UpperCase;Merge=MergrFilter;p1,p2,p3=Pipe Attachments Split.Left as p1.Source Upper.Input as p1.Sink;Split.Right as p2.Source;Merge.Left as p2.Sink;Upper.Output as p3.Source Merge.Right as p3.Sink;End Capitalize,Wright配置描述示例,配置中说明三部分内容:1.定义各构件和连接件;2.声明给定类型的不同实例;3.附件说明了连接件及构件的组合约束。,29,Wright的风格定义和
23、接口类型,Wright提供设计人员,寻找一种特定的体系结构风格或模式来描述自己的设计。把设计限制在某种风格范围,可以共享合理的属性集合与词汇,便于关键部分的分析和验证。可以声名一系列构件和连接件的类型,引入公共词汇集,并通过类型实例化说明来定义具体的使用。(例如:管道过滤器风格),Interface type dataIntput=read data repeatedly,closing the port at or before end of dataInterface type dataOutput=write data repeatedly,closing the port to sig
24、nal end of data,Style pipe_Filter Connector Pipe Role Source deliver data repeatly,signalling termination by close Role sink read data repeatly,closing at or before end data Glue sink receives data in same order delivered by source,还可以通过接口类型说明,使同类的端口说明简单一致。,30,Wright接口类型和参数化构件,通过接口类型,可以使同一种风格具有不同计算。
25、例如:UNIX的stdin、stdout和stderr函数组,都属于管道过滤器风格构件,可以使用参数化构件,来定义一个通用的过滤器。然后用它对每个不同计算过程的过滤器分别说明。其中的端口说明使用了统一的接口类型来说明。,Component UNIX_filter(c:computation)port stdin=dataInput port stdout=dataOutput port stderr=dataOutput Computation=C,31,Wright还提供风格的约束描述,采用一阶谓词逻辑表示。,Wright的风格约束,其中“”表示约束。,C:Connectors Type(C
26、)=PipeC:Components;P:Port|pPort(C)Type(P)=dataInputType(P)=dataOutput,Wright还提供用数字来进行参数化描述,使参数的数目可根据特定种类设定。,Wright的数字参数化构件,Component SplitFilter(nout:1_)port Input=dataInput port Output1.nout=dataOutputComputation=read from Input repeatedly,write to Output1,Output2,etc,in succession,32,5.3 软件体系结构形式化
27、描述,从软件体系结构研究和应用的现状来看,当前对软件体系结构的描述,在很大程度上还停留在非形式化的基础上。软件体系结构设计依赖于设计人员的经验和技巧。人们对同一种结构的理解和表达差别很大,所使用的符号体系也相差很大,并且,对约定、术语和概念是分散的、缺乏严格性、一致性和系统性,没有形成对软件体系结构设计的一般性指导。这些都表明建立软件形式化和规范化结构描述的必要性。,33,要点:形式地推论系统特征的方法遵循给出的数学系统得出结论数学系统的基础是公式逻辑,提供正确的思维规律,或推理规则,即结论和前提间的推断关系。,目的:形式方法关注应用模型和计算机模型之间的逻辑关系。软件工程中的形式方法,即是依
28、靠数学模型和计算,来描述和验证目标软件系统的行为和特性。严格的形式化描述和验证技术,可实现自然地软件自动生成和自动验证的目的。,形式化方法,34,表明结论和前提间的推断合理性有两种方法,证明理论-推理(proof-theoretic reasoning)不考虑任何解释,只讨论对前提进行操作的推理规则,以及由推理规则所得出的结论。,推理规则,即制订一个论断合法性的准则,假设前提为真,并使用公认的推理准则,得到其结论也为真。合法论断,任何论断只要结论是从前提中使用推理规则推导出来的,就称合法论断。合法性不等于正确性。结论与论断是否正确,要看它的解释是否符合实践的检验。,模型-理论推理(model-
29、theoretic reasoning)假定前提在一种解释下为真,要求任何满足这种解释所得到的结论也为真。其合法性不仅根据证明规则,更要依靠解释。,形式逻辑使用的理论推理方法,35,逻辑基础,数理逻辑组成,集合论模型论递归论构造证明论,逻辑是研究形式语言和形式系统的语法和语义基础。逻辑最终可导致机械地认识过程,可用数学完整地说明认识的过程。,导致机械过程根本原理,确定性原理有穷性原理,新的、非经典逻辑方法,直观逻辑时态逻辑程式逻辑非单调推理逻辑模糊逻辑,36,软件体系结构抽象模型,使用抽象代数理论,定义构件、连接件和软件体系结构,并讨论它们的属性和动态行为,以建立软件体系结构的数学理论体系,证
30、明不同类型软件系统结构的相互关系,给出软件体系结构范式和建立范式的方法。,包括的内容,构件构件的演化构件相等构件激发运算构件使用运算运算满足结合率,连接件软件体系结构的性质软件体系结构是代数系统的定理软件体系结构的映射关系软件体系结构的同态和同构关系软件体系结构的映射连接关系,返回本章目录,37,ID是构件的标志;Publi是构件第i个接触点能提供给环境或其他构件的功能集合;Extni是构件第i个接触点运行所需环境或其他构件的功能集合;Privi是构件第i个接触点私有属性集合;Behai是构件第i个接触点行为语义描述;Msgsi是构件第i个接触点所产生消息的集合;Consi是对构件第i个接触点
31、行为约束,包括构件运行的初始条件、前置条件和后置条件,分别记为Cons(init,pre-cond,post-cond);Non-Funci是构件第i个接触点非功能说明,包括构件的安全性、可靠性说明等。,定义1:构件是一个数据单元或一个计算单元,它由构件接口和构件实现模块组成。构件接口是构件与外部接触点的集合,即,而每个接触点Porti是一个八元组,其中:,构件,定义1给出了构件接口的形式化描述,38,定义2:设A和B是论域U中的两个构件,如果A和B满足下列条件:,(1)Dom(A)=Dom(B)(2)Publ(B)Publ(A)(3)Extn(B)Extn(A)(4)Priv(B)Priv(
32、A)(5)Beha(B)Beha(A)(6)Msgs(B)=Msgs(A)(7)(Cons(B)=Cons)A)or(Cons(B)Cons(A)(8)(Non-Func(B)=Non-Func(A)or(Non-Func(B)Non-Func(A)则称B是A的一个演化,记为Evolve(B,A),构件的演化,定义1和定义2反映了构件的可充用和可演化特性。除此之外,通过下面的定义讨论构件间的互操作性。,39,激发运算和激发运算相连构件的性质,定义3:设A和B是论域U中的两个构件,若x Publ(A)y Extn(B)使得(xy)(pre-cons(B),这时构件A通过发送消息“激发”(invo
33、cation)构件B中的Publ(B)来实现功能需求,就称构件A、B进行了一次“激发”运算,记作Inv(A,B)或AB。,AB仍然是一个构件,它满足下列性质:,(1)Dom(AB)=Dom(A)Dom(B)(2)Publ(AB)=Publ(A)Publ(B)(3)Extn(AB)=Extn(A)Extn(B)(4)Priv(AB)=Priv(A)Priv(B)(5)Beha(AB)Beha(A)Beha(B)(6)Msgs(AB)=Msgs(A)Msgs(B)(7)Cons(AB)Cons(A)Cons(B)(8)Non-Func(AB)Non-Func(A)Non-Func(B),注:在“激
34、发”模式下,A、B构件是相互独立的,例如对象之间的进程调用,40,定义4:设A和B是论域U中的两个构件,如果A和B满足下列条件:,(1)Dom(A)=Dom(B)(2)Publ(A)=Publ(B)(3)Extn(A)=Extn(B)(4)Priv(A)=Priv(B)(5)Beha(A)Beha(B)(6)Msgs(A)=Msgs(B)(7)Cons(A)Cons(B)(8)Non-Func(A)Non-Func(B)则称A和B是相等的,记为A=B。,构件相等,41,定理1:设A、B和C是论域U中的三个构件,它们对运算满足结合率,即(AB)C=A(BC),举例证明:由定义3的性质(2)可知
35、Publ(XY)=Publ(X)Publ(Y)Publ(AB)C)=Publ(AB)Publ(C)=Publ(A)Publ(B)Publ(C)=Publ(A)Publ(BC)=Publ(A(BC)定义4的性质(2)成立。,为证明构件满足结合率的性质,需要将定义4的所有8个性质逐一证明,才能证明定理1。,根据定义证明激发运算满足结合率,42,推论1:,设C1,C2,Cn是论域 U的 n个任意构件,则它们对运算满足结合率,即:(C1C2)C3)Cn-1)Cn=C1(C2 C3)Cn-1)Cn,激发运算满足结合率的推论,43,定义5:,AB仍然是一个构件,它满足下列性质:,(1)Dom(AB)=Do
36、m(A)Dom(B)(2)Publ(AB)=Publ(A)Publ(B)(3)Extn(AB)=Extn(A)Extn(B)(4)Priv(AB)=Priv(A)Priv(B)(5)Beha(AB)Beha(A)Beha(B)(6)Msgs(AB)=Msgs(A)Msgs(B)(7)Cons(AB)Cons(A)Cons(B)(8)Non-Func(AB)Non-Func(A)Non-Func(B),使用运算和使用运算相连构件的性质,设A和B是论域U中的两个构件,若xPubl(A)yExtn(B)使得(xy)(pre-cons(B),这时构件A通过“使用”构件B中的Publ(B)来实现功能需求
37、,就称构件A、B进行了一次“使用”运算,记作 Use(A,B)或AB。,注:“使用”指:复制B中的代码到A,或者过程调用,动态连接库。A、B构件是非独立的。,44,定理2:设A、B和C是论域U中的三个构件,它们对运算满足结合率,即(AB)C=A(BC),与激发运算情形类似,使用运算也满足结合率,推论2:,设C1,C2,Cn是论域 U的 n个任意构件,则它们对运算满足结合率,即:(C1C2)C3)Cn-1)Cn=C1(C2 C3)Cn-1)Cn,45,连接件,定义6:连接件是构件运算的实现,它是一个六元组。其中:,ID是连接件的标识Role为连接件和构件之间的交互点集合,Beha是连接件的行为集
38、合Msgs是连接件中各Role中事件产生的消息的结合Cons是连接件约束的集合,包括初始条件、前置条件和后置条件,记为Cons(init,pre-cond,post-cond)。Non-Func连接件非功能说明,包括连接件安全性、可靠性说明等。,其中:Role=四元组 ID是Role的标识 Action是Role活动的集合(每个活动由事件的连接组成)Event是Role产生的事件集合。LConstrains是Role的约束集合,46,软件体系结构和性质,定义7:设论域为U,(1)构件是一个软件体系结构;(2)连接件是一个软件体系结构;(3)构件经有限次连接(运算)后是软件体系结构。软件体系结构
39、记为 A=,其中:C表示组成体系结构的构件集合,O表示构件运算的集合。,由定义7 得软件体系结构的性质如下:,封闭性:构件与构件、构件与体系结构、体系结构与体系结构 连接后仍是一个体系结构。层次性:体系结构可由构件连接而成,而体系结构又可以再经 连接,组成新的更大的体系结构。可扩充性:满足条件的新构件可以通过连接加入到体系结构中。,47,代数系统定义:一个非空集合A连同若干个定义在A上的运算f1,f2fn所组成的系统,称为代数系统,记为(A,f1,f2fn)。通常讨论的是带有二元运算的代数系统。,引理1:设A=是一个软件体系结构,则A是一个代数系统。,软件体系结构是代数系统,48,定理3:设A
40、=是一个软件体系结构,则A对运算和分别构成半群。,定理3证明:C1,C2,C3 C,由定义3和定义5得知C对运算和是封闭的,即 C1C2 C,C1C2 C 又由定理1和定理2知,C对运算和满足结合率,即(C1C2)C3=C1(C2C3)(C1C2)C3=C1(C2C3)成立 又由引理1知:A=是一个代数系统,则A=对运算和分别构成半群。证毕。,半群定义:设S是一个非空集合,若S上存在一个二元运算O,适合结合率,即对于S中任意a,b,c,均有(aob)oc=ao(boc),则说S是一个半群。,49,软件体系结构的映射关系,定义8:设A1=,A2=是两个不同的体系结构,若对x C1,总有y C2,
41、使得y与x对应,则称A1与A2之间存在着一个映射,记为f:A1A2 或 y=f(x)。若映射是满射,则称体系结构间映射为满射;若映射是一对一的,则称体系结构间为一一映射。,不同的体系结构,会存在着对应关系,这些关系,往往反映出结构之间的变化及更新。讨论结构之间的对应关系,可以提供对结构一致性和适应性验证的必要依据。,50,同态映射:设G,G是两个群,G到G的映射f是一个同态映射,如果对于任意a,b G,均有 f(a b)=f(a)f(b)。,软件体系结构的同态和同构关系,定义9:设A1=,A2=是两个体系结构,f是A1到A2的一个映射,若对x,yC1,有f(xy)=f(x)f(y),其中O1,
42、O2,则称f为A1到A2的同态,也称A1与A2同态;若f是单射,则称f是从A1到A2的单一同态;若f是一一映射,则称f是从A1到A2的同构,也称A1与A2同构。,51,定理4:设A1=,A2=,A3=是三个体系结构,f是A1到A2的一个映射,g是A2到A3的一个映射。则gf是从A1到A3的体系结构同态,其中“”是映射的连接。,定理4证明:对a,bC1,O1,O2,O3,根据的定义有 gf(a b)=g(f(a b)=g(f(a)f(b)=g(f(a)g(f(b)=(gf)(a)(gf)(b)gf构成了从A1到A3的体系结构同态证毕。,软件体系结构的映射连接关系,52,定理5:设A=,是一个体系
43、结构,如果aC,bC,有b是a的一个演化,即Evolve(b,a)成立,则体系结构A=和A=同态,这里C=(C-a)b。定理5的证明显然,略。,定义10:设A=,是一个体系结构,如果aC,bC,有b是a的一个演化,即Evolve(b,a)成立,则体系结构A=和A=演化,这里C=(C-a)b。,软件体系结构的同态,53,5.3.3 Z标记形式化描述语言,Z标记语言是由英国牛津大学的Programming Research Group研究的。是一种以一阶谓词逻辑和集合论为基础的数学表示语言。它使用标准的逻辑操作符和集合操作符,以及标准的语义。由于描述的数学对象与程序对象有及其相似之处,可以直接对应
44、软件工程问题,因此,Z语言被较广泛地运用在软件程序规格说明和软件体系结构的形式化描述上。,Z使用的数学基础,逻辑与 逻辑或 否定 逻辑蕴含 全称量词 存在量词,集合构造说明构造说明返回基数说明#序列表示说明元素排列空集表示空序表示使用,属于 包含 差 笛卡尔积 子集 P,集合运算符号,集合表示形式,逻辑运算符号,返回本章目录,54,Z的一些基本概念,Z的规范由文字和数学描述两部分组成数学描述使用类型集合的方式,每个类型是谓词真值的集合Z提供了一些基本的类型,如自然数N、整数Z等等Z也可以自行定义类型,用引出,并用英文大写字母 例如:CLIENT,ROOM两个类型Z的图解架构(schema)是一
45、种类型结构的抽象,采用盒式图解结构。架构形式化地描述过程或结构。盒中线以上是状态描述变量,以下是变量关系式一组构造类型的运算符:包括PX、X Y、seq X、XY、X+Y、XY、XY、X+Y、等等,55,BLOCKS=(1,block1),(2,block2),(3,block3),(n,blockn),Used,free:P BLOCKS BlockQueue:seq P BLOCKS,used free=used free=BLOCKS i:dom BlockQueue BlockQueue i used BlockQueue i free i,j:dom BlockQueueij Blo
46、ckQueue i BlockQueue j=,BlockHandler,Z语言描述的示例(一),用Z语言描述文件存储块结构以及处理文件存储块的行为特性。文件由固定长度的存储块BLOCKS构成,每个BLOCKS有起始地址、长度等信息,并由序号标识。系统的任务是根据需求,从BLOCKS序列中取出存储块并分配使用。,56,块BLOCKS的集合序列形式说明已用块Used和未用的块free是块类型集合的子集说明块序列BlockQueue是块类型集合的序列子集,上部分状态变量说明,下部分变量关系式说明,已用块Used和未用的块free的交集为空,并且已用块Used和未用的块free的合集等于块BLOCK
47、S,并且块序列BlockQueue域中的块序列i包含在已用块或未用块集合中,并且块序列BlockQueue域中的任意块序列i,j不相同。也就是它们没有交集,存储块处理器BlockHandler解释,57,BlockHandler,RemoveBlock,#BlockQueue 0 used=used head BlockQueue free=free+head BlockQueue BlockQueue=tail BlockQueue,使用存储块处理器作为它的状态变量,上部分状态变量说明,下部分变量关系式说明,返回块序列BlockQueue的基数大于0,新的已用块used等于已用块used与块
48、序列第一元素的差,并且新的未用块free等于未用块free与块序列第一元素的和集,并且新的块序列BlockQueue等于除第一元素之后的剩余元素序列,移出块RemoveBlock解释,58,BlockHandler Ablock?:Blocks,AddBlock,Ablock?used BlockQueue=BlockQueue+Ablock?used=used free=free,使用存储块处理器作为它的状态变量添加块Ablock?的类型是Blocks类型,上部分状态变量说明,下部分变量关系式说明,添加的Ablock?包含在已用块used集合中新的块序列BlockQueue 等于块序列加上添
49、加的块序列新的已用块used和未用块free都没有变化,添加块AddBlock解释,59,Z语言描述的示例(二),对隐式激发体系结构表示为独立的构件接口,它由构件的名称、事件的集合及方法的集合来定义。,在以事件处理为基础的隐式激发体系结构中,一个构件作为主要构件,其它构件通过注册,能建立与该构件的关联。当主要构件发布一个事件后,所有与其关联的构件将会被系统事件处理机制自动地激发,接收发布的事件,响应事件而工作。,事件驱动的隐式激发体系结构,Z语言描述隐式激发体系结构,60,一个特定的方法(或事件),是作用于某构件的,所以对方法(或事件)的描述可以是构件名字和方法(或事件)类型的笛卡尔积。因此可
50、以对所有的方法和事件描述为:methods=CNAME METHOD events=CNAME EVENT,用Z语言的定义三个类型:EVENT,METHOD,CNAME,name:CNAME methods:P METHOD events:P EVENT,Componet,构件接口描述为:name的类型是CNAMEmethods的类型是所有METHOD元素构成的集合events的类型是所有EVENT元素构成的集合,61,components:P Component EM:Event?Method,EventSystem,c1,c2|components(c1.name=c2.name)(c1=