一种基于余代数单子的web服务形式化模型-许碧欢.pdf
《一种基于余代数单子的web服务形式化模型-许碧欢.pdf》由会员分享,可在线阅读,更多相关《一种基于余代数单子的web服务形式化模型-许碧欢.pdf(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第48卷第5期2016年10月南京航空航天 大学学报Journal of Nanj ing University of Aeronautics&AstronauticsV0148 No50ct2016DOI:1016356j10052615201605009一种基于余代数单子的Web服务形式化模型许碧欢1 钱俊彦2 张迎周3 陈 蕾(1南京邮电大学理学院,南京,210023;2桂林电子科技大学广西可信软件重点实验室,桂林,541004;3南京邮电大学计算机学院,南京,210023)摘要:为拓展服务计算的形式化研究视野、手段和方法,建立并实现了一种针对Web服务的服务计算形式化模型。鉴于开放环境
2、下的服务实体主要来源于不同的第三方提供者,将软件实体抽象成余代数单子,从而以一种黑盒方式给出软件服务的语义模型。给出了余代数单子的一般性定义,在此基础上对软件服务进行单子描述,进而提出一种基于余代数方法和单子技术的Web服务参考模型。最后,实现了一个基于单子的web服务计算平台原型系统,可支持从遗留系统中进行服务抽取、发布、发现和度量等。关键词:服务计算;web服务;单子技术;余代数方法中图分类号:TP311 文献标志码:A 文章编号:10052615(2016)05066809Formal Method of Web Service Based on Coalgebraic MonadsXu
3、 Bihuan 1,Qian Junyan 2,Zhang Yingzhou 3,Chen Lei 3(1College of Science,Nanjing University of Posts and Telecommunications,Nanjing,210023,China;2Guangxi Key Laboratory of Trusted Software,Guilin University of Electronic Technology,Guilin,541004,China;3College of Computer,Nanjing University of Posts
4、and Telecommunications,Nanjing,210023,China)Abstract:To expand the horizons,means and methods of formal studying on service computing,a formalservice computing model for Web service is builtSince a great number of service entities are from different thirdparty providers in open network,software enti
5、ties are abstracted as coalgebraic monads,then a semantic model is given for services in the blackbox methodBased on coalgebraic monads,aformal framework is put forward for serviceoriented computing(SOC)with its applications as wellFinally,a prototype system is implemented for service computing base
6、d on monads,which supports service abstraction,publishing,discovery and metrics from legacy systemsKey words:service computing;Web services;monad technique;coalgebraic method面向服务计算(Serviceoriented computing,SOC)是在现有技术(如面向对象、基于构件的开发、分布式对象计算及Web技术等)基础上,建立了一种基于Internet的软件开发、部署和集成的新模式17|。软件服务的分布性、动态性和自主
7、性等特点,使得面向服务的系统分析、设计、建模和运行等技术仍为目前国内外学者研究热点6。81。关于面向服务计算建模方面,文献9提出了基金项目:国家自然科学基金(61562015)资助项目;广西高等学校高水平创新团队及卓越学者计划资助项目;江苏省“青蓝工程”中青年学术带头人项目资助项目。收稿日期:2016一Ol一01;修订日期:2016-0830通信作者:张迎周,男,教授,E-mail:zhangyznjupteducn。引用格式:许碧欢,钱俊彦,张迎周,等一种基于余代数单子的Web服务形式化模型J南京航空航天大学学报,2016。48(5):668676Xu Bihuan,Qian Junyan,
8、Zhang Yingzhou,et a1Formal method of web service based on coalgebraic monadsJJournal of Nanjing University of Aeronautics&Astronautics,201 6,48(5):668676万方数据第5期 许碧欢,等:一种基于余代数单子的Web服务形式化模型 669一种用于设计面向服务体系结构的参考模型,叙述了参考模型的结构以及其中的服务总线和服务合约的元模型。文献10对SOC模型中的约束问题进行了讨论,讨论了约束在服务生成方面的作用。文献11,12充分考虑扭斗对于网络体系结构研
9、究的影响,总结和归纳了在扭斗环境下设计新一代网络体系结构模型的若干原则,在这些设计原则的指导下提出了一种结构分层、功能分面、基于交互、面向服务的新一代网络体系结构模型。文献13基于面向服务的体系结构(Serviceoriented architeture,SOA)给出了一个以企业服务总线为中心的面向服务软件体系架构参考模型。为实现互联网上异种异构的复杂信息资源有序化组织和互操作性服务与共享的目标,文献14研究了语义服务的元计算问题,提出了本体元建模理论和方法,定义了本体UML承诺、提倡本体UML表达,给出了本体的元机制。针对在动态、跨组织的网格环境中如何进行适应组织重构、业务变化等动态性要求,
10、文献E15提出了服务网格动态信息聚合模型,从组织模型、数据模型、协作模型3个维度描述信息聚合中变化的因素。文献16利用代数方法(进程代数)对SOA进行形式化建模,并提出多种SOA可信范式,为基于SOA的可信软件开发提供理论支持。本文将单子17。1钉概念引入服务计算中,从另外一个形式化角度为服务计算建模。基于Web服务的服务计算是面向服务计算的特例,目前Web服务的使用主要是将企业原有信息系统(也称遗留系统)进行封装,通过SOAP、WSDL和UDDI等序列标准发布出来让用户通过网络使用。本文将立足于服务计算的“服务”本质,利用单子技术研究基于Web服务的服务计算形式化模型及其实现:以服务化思想和
11、服务交互观点作为建模基础,以余代数方法和单子技术作为理论基础,建立Web服务的形式化模型,以期大大拓展面向服务计算的形式化研究视野、手段和方法。本文先简介一些基本理论知识,包括余代数方法和单子技术;然后设计和定义一般余代数单子和相应的单子转换器,并给出一种基于单子技术的Web服务参考模型;最后给出Web服务计算平台系统原型的实现。1 余代数方法和单子技术11余代数方法不同于从“构造”角度研究数据结构的代数理论,余代数(coalgebras)20-zz方法从“观察”角度考察系统及其性质,故其对研究诸如对象、进程和服务等基于状态的系统有独特的优越性。使用余代数理论作为工具,可以对系统的行为等价、不
12、确定性等从数学上进行深入探讨,从而为这些系统建立良好的形式理论基础模型,并方便对其性质进行描述与验证2 3|。一般地,对于自函子(endofunctor)T,T-余代数是一个二元组(U,户),其中对象U称为P的载体,P为UT己,的映射。如果将T-余代数(己,p)看成是一个具有内部状态的系统,则U是其所有可能的状态,映射P:UT【,表示从外部可观察的系统行为,该行为可能会影响系统内部的状态。此外,射P常可分解成几个射,每个射代表系统可观测的一个行为或系统对外部观测的一种响应。更多的有关余代数的基本概念、性质、应用情况参见相关文献(如文献2023等)。Barbosa及其合作者24281曾理论上深入
13、研究了基于余代数的软件构件形式化建模,给出构件的余代数语义表示。他们指出,软件构件的“黑盒特性”比较适合采用观测语义模型:只要通过观察难以区分的任何两个构件(含配置环境)认为是相同的。这样基于状态的任一构件可由以下形式表示:f:UT U其中?U为配置环境中所有可能的状态;T为观测行为、计算结构或构件接口。12单子技术单子技术是一种根据相关类型值及使用这些值的系列计算来构建新计算的方法,其中重要概念包括单子和单子转换器。单子(monad)概念最初是在1950年代作为范畴论里一种函子而被提出的。在1989年由Moggi173将之引入到语义框架中。随后,Wadler1 92鲴将Moggi单子方法广泛
14、推广到函数式程序设计中(尤其是Haskell语言)。采用单子这种更加规则的表示法替代A表示法,可避免定义语义结构时对无关语义成分的引用,从而加强了语义描述的模块性和扩展性。一般地,单子可表示成三元组(M,r,肚),其中M为某范畴C上的自函子;r:IdM和“:肝一M为其两个基本自然转换函数,且满足如下等式(或称图1是可交换的):肛。M弘一缈。彬zid胁:MxMx衅o M牲zH工o uMz :N登IMx其中:z为范畴C中任意对象,id为恒等函数,。为函数复合运算。单子是一种抽象技术,它可隐藏计算时所需的万方数据670 南京航空航天大学学报 第48卷尬!生M1x o丝胁纽一+一胁nluxMx一tx
15、lt图1单子中自然转换函数的可交换图Fig1 Commute diagram of natural transformations基本信息,并提供一些(操作)函数允许外界访问这些信息2 9|。直观上,对于类型a,类型Ma则表示所有能得到口类型结果的计算,这些计算在范畴理论的同态概念下是一致的1 8|。因此,给定一个单子实际上就相当于给定了能够得到某种类型结果的计算类型。目前人们已抽象设计出不少单子,如描述Pi演算的Pi单子3、并发单子口1|、Agent单子3 2|、描述增量计算的可变单子m3等。Ghania等学者3461曾理论说明,余代数演算可以被抽象成一个单子,即余代数单子。Jacobs也曾
16、致力于余代数与单子间关系的理论研究,包括从具体的Java语义表示模型中实例说明余代数表示方法与单子描述方法间的等价性3 7。单子技术中,为了将两个单子结合成一个新单子,引入了单子转换器(monad transformers)383,它将给定单子转换成新单子,并增加新操作运算。目前人们已设计了不少单子转换器,如统一描述与程序环境交互计算的环境单子转换器EnvT,表示与状态相关计算的状态单子转换器StateT等29383 9|。单子具有高度的抽象性、反射性、重用性和模块化,又具有易于自动实现扩充和修改的特点,这些特性对软件体系结构和软件服务技术带来了积极的影响1 9404引。现在,单子已是独立的概
17、念,掌握它不再需要范畴论的知识,而且大量的研究和实践已证实单子系统具有很强的功能,结合单子表示法的简洁性和易读性,因此将为越来越多的人所接受和应用。现已有不少程序设计语言支持实现单子技术,如Haskell、C+4 3|、Java441等。本文采用易于原型开发的函数式语言Haskell作为支持单子相关方法的实现语言。Haskell是一门高级纯函数式编程语言,致力于快速开发可扩展的、可靠的和易维护的软件,并能很好地与其他编程语言集成,具有内建并发性和并行性、调试器、优化器、丰富的类库以及活跃的社区等。在Haskell语言的基本模块Monad中,关于函子、单子和单子转换器分别被定义为:class F
18、unetor f wherefmap:(a一b)一(f a一f b)class Monad m wherereturn:a一m a(一):m a一(a一m b)一m bclass MonadTrans t wherelift:Monad m一m a一t m a其中单子的类定义中,return和一两个操作函数分别对应于前面提及的两个自然转换函数叩和1。对应于图1,return和一需要满足如下等式(左幺元、右幺元和结合律)2 9|:(return z)一,一f zm一returnm(m=f)一gm一(Axfz一g)这里,Haskell本身不保证单子的两个函数所必须满足的上述3个规律,需其设计者事先
19、保证。2余代数单子在上节所列述的学者研究成果上,尤其是结合Barbosa等基于余代数的构件形式化模型和Ghania等余代数演算的单子抽象表示,本节将这些理论的形式化表示进一步扩展,给出具体程序语言(如Haskell)表示形式,增加交互操作函数,还进一步提升成余代数单子类和余代数单子转换器,进而方便第3节中将之应用到Web服务实际模型描述上。给出如下的一般余代数类型CoAlg:newtype CoAlg f=UnIn UnOut(f(CoAlg f)out:CoAlg f一f(CoAlg f)out(Un0Ut t)一tin:CoAlg f a一ain(UnIn x)一x其中:f为一个表示观测操
20、作的函子;a为任意数据类型;UnIn和UnOut为类型构造函子,分别为CoAlg余代数中映射in和out的逆。即一个余代数类型CoAlg要么是所观测到的内部数据信息(包括初始状态情况),要么是对系统的进一步观测行为,该行为可能会影响到系统内部数据或状态等。其实,上述定义的余代数(CoAlg f,out)中的CoAlg f也可成为函子和单子。下面的两个Haskell实例声明就使得CoAlg f也是函子,且为单子,其所须满足的单子规律可类似文献4547万方数据第5期 许碧欢,等:一种基于余代数单子的Web服务形式化模型 671中证明方法进行保证。instance Functor f=Functor
21、(CoAlg f)wherefmap f。UnInUnlnffmap fUnout=UnOutfmap(fmap f)instance Functor f=Monad(CoAlg f)wherereturn:=UnInUnln a=k=k aUnout t一kUn0Ut(fmap(一k)t)于是,上述定义的CoAlg f也可称为余代数单子。进一步地,可给出余代数单子类CoAlgMonad,以便对余代数单子与其他单子进行交互转换等。class(Functor f,Monad m)一CoAlgMonad f m whereprj:f(m a)一m ainstance Functor f一CoAlg
22、Monad f(CoAlg f)whereprjUnOut为了与前面所述一致,这里也给出余代数类CoAlgC,并说明上述所定义的类型CoAlg f也是属于余代数类的。class Functor f一CoAlgC f m wherefrom:m一f minstance Functor f=CoAlgC f(CoAlg fa)wherefrom=out为便于余代数单子与其他单子组合的需要,给出如下的余代数单子转换器CoAlgT定义:newtype CoAlgT f m a=CoAlgT(m(Either a(f(CoAlgT f m a)instance(Functor f)一MonadTrans
23、(CoAlgT f)wherelift=CoAlgT1iftM Left其中:Either为“可区分并”联合类型声明,Left为Either类型的投影函数,“”为函数的复合操作,liftM为一般单子间的提升映射函数。有了上述的一般余代数单子和单子转换器定义后,任意的服务可抽象描述成其实例,就可自然表示成该服务的单子和单子转换器,以便进行软件服务单子的描述等。3服务的单子描述为了更好地体现服务的封装性、松散耦合性、可复用性、高度可集成性和开放性等特性,本节试着利用单子技术形式化研究Web服务中服务实体:将服务抽象成余代数单子(服务单子),通过单子转换器,多个单子可组合成一个新单子,故服务组合可由
24、若干服务单子组合表示。利用上述的一般余代数单子CoAlg f定义,只要具体化服务相关的函子f定义,就可自然描述该服务单子;类似地可利用CoAlgT方便描述该服务的单子转换器。进一步地,利用单子技术,可自然根据服务单子和单子转换器进行相应服务的合成,以便描述相应功能更强的新单子,如增值服务。一般地,对于输入类型为ti输出类型为t。的服务函数serv:tit。,其对应的构件单子(余代数单子)Mserv可定义如下:newtype FservFUN(tin一tout)type MservCoAlg Fservinstance Functor Fserv wherefmap h(FUN f)一FUN(h
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一种 基于 代数 单子 web 服务 形式化 模型 许碧欢
限制150内