背景:
阅读新闻

语用网:用Petri网系统实现P2P网络软件构件协同计算

[日期:2005-12-01] 来源:  作者: [字体: ]

http://blog.donews.com/ygzw

1引言

计算机技术发展迅速,主要是指符合摩尔定律的计算机硬件系统技术发展迅速,人们对软件技术的发展并不满意,特别是对软件工程技术很不满意。在复杂计算机应用,如ERP等软件工程领域,系统工程的开发与维护成本始终居高不下,虽然软件工程新技术层出不穷,但都没能实质地解决问题。软件问题的本质是图灵机天生的“封闭世界”特性,即软件不能自身解决其构件(component)复用问题。

Petri网是具有与图灵机等价模拟能力的“开放世界”计算系统模型,可以解决软件构件复用问题。Petri网计算系统的实现包括上个世纪7080年代的Petri网硬件计算系统探索和袁崇义老师提出的C-net系统,前者希望取代冯络伊曼的硬件计算系统,后者希望取代程序设计系统。前面讲过,困扰人们的计算机问题不是硬件系统,也不是解决算法问题的软件程序设计技术,因而这些探索都不可能取得工程技术界的共鸣。

困扰人们的计算问题是构件与应用之间的问题,即如何把一个应用系统分解为合适的构件,以及如何用已有的软件构件实现计算机应用系统的问题。这是图灵机的缺陷,也恰是Petri网的优势,对这个思路的认同与研究直接导致了ISO15909标准的诞生。

ISO15909是软件与系统工程小组(自1993年就开始的)正在提出的利用Petri网原理解决把应用需求分解为合适的构件系统问题的国际标准,属于软件工程系统分析中的需求分析阶段的标准化技术。

随着计算机技术,特别是互联网和P2P网络技术的迅速发展成熟,分布在网络中的软件构件在数量上急剧增多,如何有效地利用这些已有的软件构件来实现计算机应用系统的功能问题,就比以往任何时候都更加迫切地摆在了人们的面前。这是典型的技术推动研究的情形,是网格计算技术正在研究却没能解决的问题。

语用网(Pragmatic Web)项目就是我遵循ISO15909的思路,用构造Petri网计算系统的办法来解决分布在互联网中的以P2P网络形式相互联系的计算设备里的软件构件间的协同计算问题的系统技术。

2构件及构件间的边

面向构件的软件工程技术已经成功地发展了20多年,曾一度被乐观的人们认为是解决软件怪兽的武器,虽然事实并非如此,但构件技术已经深入人心。构件是工程中软件复用的最小单位,也是实现语用网和语用计算的基础。那么什么是构件呢?有必要首先仔细地研究一番。

构件是一个实现某一特定功能的软件系统,构件的功能实现不依赖于其它任何构件,即构件的自身算法实现了构件特定的功能,构件间是完全松偶合的关系。构件是操作系统调度的独立的基本功能单元。

构件间是通过消息传递来实现同步的,软件也正是通过消息传递实现了构件协同,才最终实现多构件计算机应用系统的任务和目标的。

传统的软件工程模型都是遵循图灵机系统的,构件既是消息的生产者,也是消息的消费者,构件一次只能“消费”一个消息,也只能“生产”一个消息。所以一般的操作系统在技术上都采用消息队列机制,来保证实现消息处理上的公平性。即操作系统为每一个构件都维护一个消费消息队列和生产消息队列,当消费消息队列中存在消息时,操作系统就调度该构件运行以处理这些消息,并把处理结果送到该构件的生产消息队列里等待发送。这个消费和生产消息队列的维护是操作系统的工作,而不属于构件的内部功能。可以说传统操作系统的主要任务就是按照应用逻辑的要求来定义和维护构件间的消息队列,并根据构件的消息队列来调度构件的运行的。

对构件间联系的不同处理是区分传统的图灵机计算系统和未来的Petri 网计算系统的标志。在Petri网计算系统中,构件仍然是消息的唯一生产者和唯一消费者,但构件一次可以(为不同的其它构件)生产多个消息,也可以消费(来自不同其它构件的)多个消息。不仅如此,Petri网计算系统在构件的生产和消费消息上还有同步要求,语用计算里称同步生产和消费消息的构件为“计算构件”,即Petri网中的“变迁”;称异步生产和消费消息的构件为“存储构件”,即Petri网中的“库所”。所谓同步,是指计算构件必需同时消费特定数量的消息,也同时生产特定数量的消息;所谓异步,是指存储构件可以消费任意数量的消息,也可以生产任意数量的消息(如图1)。

因此,计算构件也叫同步构件,存储构件也叫异步构件。同步构件实现了周围的n个消费消息和m个生产消息的同时发生,异步构件实现了周围的n个消费消息和m个生产消息的单步随机发生。在Petri网计算系统中,同步构件的消息只能来自于或发送到异步构件,而异步构件的消息也只能来自于或发送到同步构件,即同步构件的周围只能是异步构件,而异步构件的周围只能是同步构件。

一般来讲,计算构件是用程序设计实现的一个特定算法的软件函数或函数集合,而存储构件则是一个数据库系统;计算构件负责消息转换,而存储构件负责消息(中所包含的数据)存储。

当构件周围的消息相同或相容时,构件就可以相互结合。如当同步构件的生产消息与异步构件的消费消息相同时,就可以把计算构件的生产消息半边与存储构件的消费消息半边结合为该计算构件与存储构件间的一条边。同样当异步构件的生产消息与同步构件的消费消息相同时,就可以把存储构件的生产消息半边与计算构件的消费消息半边结合为该存储构件与计算构件间的一条边。由构件通过边集合(assembling)成构件组合(component assembled),小的构件组合同样可以集合为大的构件组合,大的构件组合还可以装配成更大的构件组合,直至构造出整个软件世界的虚拟空间。

这种由同步构件与异步构件相互间隔而自然自发形成的有向网络就是Petri网。因此设计Petri网系统就是设计这个构件有向网络,而支持这个构件间有向网络的技术就是Petri网计算系统。语用网(pragmatic net)就是这个构件间的有向网络、即构件组合,而语用计算(pragmatic computing)就是Petri网应用系统。

3构件的元数据

为了实现并维护语用网,首先要掌握的技术就是元数据(metadata),发展近10年、已经成熟了的构件元数据概念和技术是实现软件协同计算的现代网络计算技术的关键。曾经有乐观派认为元数据可以解决软件工程中的怪兽问题,事实证明,微软的架构在元数据之上的.net技术并没有完全解决软件工程中的构件复用问题,所以在搞了WSRF.net之后又迫不及待地在搞Windows Vista系统和未来的BlackcombBigtop等计划了。软件复用问题是网格计算领域的最头疼问题。

语用网里的元数据技术采用融合Web Services和网格计算(grid computing)最新标准的WSRF的元数据标准WSDL2.0,因为它不仅可以描述计算构件,也可以描述存储构件,而WSDL1.0只能描述计算构件,不能描述存储构件。与网络服务(Web Services)相对应,经过元数据描述后的构件也称为服务,分别叫计算服务和存储服务。

元数据技术可以把软件的计算力和存储力抽象到语用网中给语用计算使用。元数据是实现图灵机计算模型到Petri网计算模型转换的关键。元数据把软件构件抽象为语用网中的概念(pragmatic concept),就是Petri所说的语用单元(pragmatic unit)。单一构件抽象为原子概念(atom concept)、即原子语用单元(atom pragmatic unit),代表一个Petri网系统的构件组合抽象为复合概念(composite conceptstructure concept),即构造语用单元(structure pragmatic unit)。

称构件元数据化为概念过程为概念化,概念的内涵就是构件的元数据,概念与构件通过元数据实现一一对应的映射关系,或者说构件是概念的实现,概念是构件的抽象。

语用网里,构件概念化的目的是为了实现网络共享与网络里的构件间协同,这是通过分离概念的内涵和概念的外延来实现的,概念的内涵由计算设备里软件层的构件实现的,概念的外延则由下面的语用计算实现的。

3 P2P网络

P2P网络是近年来出现的并且已经被研究透彻了的一个网络计算技术,P2P网络一改以往网络计算的C/S模式,被誉为可能改变互联网思想的革命性系统技术。P2P网络中既没有专门的服务器,也没有专门的客户机,组成P2P网络的所有计算设备都既是服务器(向网络提供服务),也是客户机(向网络索取服务)。 因此P2P网络中没有服务器(servers),也没有客户机(clients),P2P网络中只有节点(peers)。

语用网里的所有计算设备都是由构件组成,即构件计算系统。这些设备都既有向语用网提供服务的义务,也有向语用网索取服务的权利,因而语用网是一个典型的P2P网络(图2)。

语用网里的节点(peers)叫语用设备,是传统计算设备经过“语用化改造”而来的(图2)。所谓语用化改造,是指计算设备里的所有希望被网络共享和希望共享网络构件的构件都被WSDL2.0技术元数据化、并概念化为语用应用服务器里的语用单元典(pragmatic unit dictionary)里的语用单元。语用设备里的构件都是通过语用设备通信管理器的一个程序与网络中其它语用设备实现构件间的消息传递的,即构件不直接面向网络。这是为了语用计算的高安全性考虑而专门设计的。

计算设备改造为语用设备以后,就具有了特定的专门功能,这个特定的专门功能概念化地宣布(announcement)或广告(publicadvertisement)在语用单元典里,成为了网络可见的功能概念,而这些功能概念是由语用设备里的软件构件具体实现了的。

那么语用网里语用设备是如何联系成为语用网、即某一语用设备到底与哪些语用设备组成P2P网络中的邻居关系的呢?这是由语用服务器根据语用单元典的定义以及P2P网络中当时可达的其它语用设备,动态自组织而成的。

如甲语用设备里有原子概念“A”和复合概念“A1”,而乙语用设备里有原子语用单元“1”和构造语用单元“A1”,此时甲设备里一定有概念“A”所代表的构件“A”,乙设备里一定有概念“1”所代表的构件“1”,而且“A”构件可以与“1”构件通信。如果甲乙两个语用设备之间P2P网络可达,则可以通过协商而成为邻居,联系它们的正是“A”构件与“1”构件间的通信。

4 语用描述计算

以上我通过语用单元典的关键技术在P2P网络里实现了基于软件构件技术的Petri网计算系统。那么在语用计算里,语用应用又是如何描述和实现的呢?显然语用计算不能够使用像C# 这样的网格计算的程序设计语言来实现,因为语用计算的系统模型是Petri网,而不再是以往的图灵机了。

语用计算就是通过语用单元典里的语用单元,按照构件组合规则映射下的概念复合规则,构造出来的应用系统描述技术。如此,语用计算就由语用设备里的语用单元典唯一地限制和确定下来。

语用单元典不仅定义了该语用设备可能支持的全部功能,还定义了该语用设备所有可能的邻居设备。这样,语用单元典就唯一地定义了一个语用设备(的内涵和外延),具有不同语用单元典的语用设备自然就是不同的语用设备了。

语用描述计算主要解决的是软件工程所不能够解决的构件复用问题,语用计算不仅仅实现代表构件的原子概念的复用,更能够实现代表构件组合的复合概念的复用问题,这是软件工程技术所不能够实现的。(未完待续)

 

 

上海汽车租赁  香港公司注册  上海租车  注册香港公司

收藏 推荐 打印 | 录入:admin | 阅读:
相关新闻      
热门评论