CN1320874A - 网络环境下的程序挖掘方法及其程序挖掘系统 - Google Patents
网络环境下的程序挖掘方法及其程序挖掘系统 Download PDFInfo
- Publication number
- CN1320874A CN1320874A CN 01118354 CN01118354A CN1320874A CN 1320874 A CN1320874 A CN 1320874A CN 01118354 CN01118354 CN 01118354 CN 01118354 A CN01118354 A CN 01118354A CN 1320874 A CN1320874 A CN 1320874A
- Authority
- CN
- China
- Prior art keywords
- program
- user
- server
- component
- agency
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明属于软件工程领域,包括:建立本地构件目录信息库;创建智能代理接受并分析用户请求,根据用户请求从构件目录信息库中检索可用构件的位置及描述信息;然后启动智能代理程序查询构件目录信息库和构件库,获取所需构件;对这些构件进行选择、取舍、组装,形成完成用户计算要求的程序。本发明可以在分布式网络中实现按需计算,根据用户的要求,从网络构件库中发现组装满足用户需求的程序,并链接执行,完成用户要求的处理功能。
Description
本发明属于软件工程领域,特别涉及用于在网络环境中,通过多个智能代理,根据用户的特定需求,从分布式构件库中自动发现、获取所需要的构件,进行自动组装,形成实现用户所需计算功能的程序,并在应用框架中链接执行程序,完成用户所需要的处理功能的方法。
近年来,Internet一直被看作是一个巨大的信息库和人们发布与共享各种信息的媒体。为了帮助用户从Internet中获取所需要的信息,人们研究开发了各种信息获取系统,如:视频点播、新闻点播,及其他各种个性化、智能化的信息获取系统;还有一些研究人员将数据挖掘技术应用到Web领域,帮助用户从大量的HTML页面中挖掘所需要的知识,这些技术统称为Internet上的信息点播或知识点播(Information/Knowledge On Demand)系统。
但是,随着网络技术的迅速发展,尤其是Java技术的普及,Internet逐渐成为一个大规模的分布式计算平台,除了大量的信息之外,网上还提供了大量的计算资源,提供各种各样的应用程序为用户提供各种网络服务,满足人们通讯、娱乐、工作的需求。通常情况下,这些应用都是包含各种功能的软件包,用户很难根据自己的需要扩展或定制系统的功能。但是在大规模分布式网络中(如Internet),应用和服务需要面向各种各样的用户,用户所在的网络环境不同,需求也不同,因此很难用同一个解决方法来满足所有用户的需求。一种理想的解决方案应陔能够提供服务或应用的可定制性,用标准化的软构件实现应用,让用户能够根据自己的网络连接方式和特定的需求,自行选择所需要的功能或界面,让应用程序以一种按需加载的方式安装到用户本地系统中。因此在Internet网络中,除了对信息的定制需求,人们对处理信息的程序也有同样的要求,人们需要特定的程序处理特定的信息。这是在应用层次人们对计算的定制需求。
另一方面,主动网的出现也在网络层次引入了按需计算的需求。主动网络中,网络中间节点引入了用户定制的计算,这样的节点称为主动节点,这些主动节点可以执行各种各样的程序,对流经的数据包执行定制的计算,如数据包的汇聚、拷贝、压缩等等。主动节点中的这些程序为用户或应用提供了灵活的网络服务,使网络成为一种可编程网络,使新协议、新算法、新应用的实现更加容易。但是,尽管主动网提供了在主动节点中加载、校验和执行程序的机制,但这些程序一般是由网络管理员或用户事先安装好的,主动节点并没有解决该选用哪些程序和如何获取这些程序的问题。要成为真正意义上的‘主动’网,还需要引入程序的主动搜索或获取机制,让主动节点根据需要选择所需要的计算模块,这就形成了网络层次的按需计算需求。
要在网络中实现应用层和网络层的按需计算,首先要解决两个重要问题,一是创建大量可实现各种元计算功能的标准化软构件,并将它们组织成Internet上可访问的资源库,这里的元计算功能是指可以组合成各种计算程序的不同粒度的部件;另一个问题是如何从这些软构件资源中获取适当的构件,并组装链接,形成执行所需计算功能的程序。目前,针对网络环境下的按需计算问题,还没有人提出完整的解决方案。但是,现有的一些技术和成果为本发明提供了坚实的基础,分别介绍如下:
首先,软构件技术提供了一种从可复用构件中组装程序的有效方法。近年来,构件技术在研究领域和商业领域都引起人们的高度重视:在技术上出现了长足进步,也出现了许多软构件产品,如JavaBeans、ActiveX等等。同时,Internet的易用性和广泛联通性,使它成为发布和测试软构件的理想场所。目前,在Internet上有很多专门的软构件库,如Gamelan、Alphaworks、Fashline等,有很多Web站点也提供指向软构件的链接,这样,在Internet上逐渐形成了一个不断扩展的在线软构件库,为基于构件的程序开发提供了坚实的基础。另外,各种构件表示方法、构件获取技术,构件的组装、测试等问题在文献中也有深入的讨论,使程序的组装和发布过程变得更容易。
其次,迅速发展的软件代理技术,也提供了一种在网络中自动搜索和获取构件的有效方法。一般情况下,代理被看作是能够执行某些自主操作,代表用户或其他代理完成特定任务的软件实体。接受任务后,代理遵循某种算法自主行动,它们可以通过互相通讯共享所持有的知识,形成一个相互协作的有机整体,完成较为复杂的任务。另外,随着网络技术的迅速发展,能够在网络节点中自主移动成为代理的重要特性,这样的移动代理通过移动到信息或服务所在的主机,用本地的快速通讯代替通过网络的交互,可大大提高工作效率,有效地构建分布式应用。利用软件代理的这些特性,可以构建用于构件搜索、获取的多代理系统。具体来讲,就是利用某种构件表示方法形成查询请求,接口代理对该请求进行转换,并转交给构件发现代理,该代理可以在构件库服务器之间自主移动,搜索所需要的构件,最后带着查到的构件返回到客户端。这样利用软件代理,可以使网络环境下的构件搜索与获取更加方便。
另外,随着数据库系统的广泛应用,从海量数据中帮助用户发现隐含知识的数据挖掘(Data Mining)技术取得了很大发展,同时,因特网上信息的迅速膨胀,促使人们将数据挖掘技术应用到Web领域,帮助用户从Web站点中挖掘所需要的知识,分析Web站点的结构及访问情况等等。Web挖掘技术(Web Mining)是数据挖掘技术在Web领域的应用和扩展,它采用数据挖掘中的关联规则、分类、聚类等技术分析Web文档的结构及访问情况,从超文本文件或日志文件中分析、提取用户感兴趣的信息。
按照处理对象的不同,Web挖掘分为两种:Web内容挖掘(Web Content Mining)和Web且志挖掘(Web Usage Mining)。其中Web内容挖掘是指通过归纳学习、机器学习、统计分析等方法从大量Web站点中发现和提取用户感兴趣的信息或者更高层次的知识和规律;Web日志挖掘是指通过分析Web服务器的日志文件,发现用户访问站点的浏览模式,为站点管理员提供各种利于Web站点改进或者可以带来经济效益的信息。虽然二者的处理对象不同,但它们采用一致的技术方案,Web挖掘包括以下几个步骤:
1.数据准备
Web挖掘的处理对象是大量的数据,这些数据包括Web页面的内容、Web站点的结构、Web站点的访问记录等等,这些数据可以从Web服务器的日志文件、网站自身的内容、代理服务器及客户端得到。在Web挖掘之前,需要做数据准备工作,一般包括数据的选择(选择相关的数据)、净化(消除噪音、冗余数据)、推测(推算缺失数据)、转换(离散值数据与连续值数据之间的相互转换,数据值的分组分类,数据项之间的计算组合等)、数据缩减(减少数据量)等等,把网页中的文本、图片及其他文件转换成数据挖掘算法可用的形式。
2.模式发现
模式发现是Web挖掘最关键的步骤,采用决策树、分类、聚类、粗糙集、关联规则、神经网络、遗传算法等技术,选取相应算法的参数,分析数据,得到可能形成知识的模式模型。
3.评估、解释模式模型
根据用户的经验对得到的模式模型进行评估分析,找到那些有意义的模型或规则,用数据检验其准确性,并把模式以易于理解的方式呈现给用户。
4.巩固知识
能被用户理解的有价值模式模型形成了知识,还需要对这些知识做一致性检查,解决和以前得到的知识互相冲突、矛盾的地方,使知识得到巩固。
5.运用知识
运用知识有两种方法:一种是运用知识本身所描述的关系或结果,对决策提供支持,优化网站的设计,提高系统的性能等;另一种是根据得到的知识或规律,对将要发生的问题做预测。
Web挖掘可以有效地帮助用户从大量的Web站点中获取感兴趣的信息,提取所需要的知识,但是它不能帮助用户从大量的网络构件中发现处理信息所需要的计算程序。而随着计算机网络技术和通信技术的迅速发展,因特网的接入方式和接入设备日趋多样化,用户迫切需要根据所处的网络环境和资源条件选择不同功能集的程序,以满足自己的特定需求。
本发明的目的是针对用户在不同网络环境和资源条件下的按需计算问题,以软构件技术和智能代理技术为基础,提出一种从网络构件库中帮助用户发现计算程序的网络环境下的程序挖掘方法,该方法利用多个软件代理,分析用户计算请求,从大量的构件资源中识别、发现、获取所需的构件,并进行自动组装,形成实现用户所需计算功能的程序。通过本程序挖掘,可以在分布式网络中实现按需计算,根据用户的要求,自动从网络构件库中发现组装完成用户所需计算功能的程序,并在用户端链接执行,完成用户要求的处理功能,为用户提供最大限度的灵活性和定制服务。
本发明提出的一种网络环境下的程序挖掘方法,如图1所示,包括以下步骤:
1)建立本地构件目录信息库,保存网络构件库所提供构件的组织与描述信息,建立构件索引,并通过智能代理程序的通讯维护该目录信息库,为程序挖掘提供组织良好的挖掘资源;
2)通过建立相应的智能代理接受并分析用户请求,根据用户的特定需求,从构件目录信息库中检索可用构件的位置及描述信息;
3)然后启动用于构件搜索的智能代理程序查询构件目录信息库,并在构件库服务器间自主移动,获取所需要的构件;
4)对这些构件进行选择、取舍,分析它们之间的调用关系;
5)并进行组装和重新链接,形成完成用户计算需求的程序;
6)程序校验与执行。
本发明提出一种采用上述方法的程序挖掘系统,其结构如图2所示,包括连接在本地局域网上的多个设置有构件库的构件服务器、设置有目录信息库的构件目录服务器、设置有知识库的程序挖掘服务器、管理工作站及客户机,该本地局域网通过互连网与异地网络相连。各个服务器上配置有相应的智能代理程序,在处理用户需求的过程中,这些代理程序相互协作,完成对用户计算请求的处理、构件查询、获取、组装等任务。本发明中的智能代理程序是指能够代表用户自主完成特定任务的软件实体,包括目录服务代理、库代理、用户接口代理、需求分析代理、构件搜索代理、构件组装代理等任务代理和管理代理、目录代理和通讯代理等系统代理。
各服务器上代理的配置和工作过程如图3所示:构件目录服务器上配置一个目录服务代理,它管理三个构件库服务器1、2、3,每个构件库服务器上分别设置一个库代理11、21、31。每个库代理定时向目录服务代理注册、更新构件库服务器所提供的构件资源信息,在构件库服务器所提供的构件发生变化时,随时更新目录信息库,维持构件目录信息与构件资源信息的一致。
在客户端的用户接口代理提供系统交互界面,接收用户提出的计算需求,对请求进行预处理,转交给位于程序挖掘服务器的需求分析代理作进一步处理。用户接口代理还将用户对挖掘程序的反馈存储起来,更新知识库,并以此为依据调整程序挖掘过程,更好地满足用户需求。
程序挖掘服务器是处理用户请求的核心,该服务器上运行多个智能代理程序:其中,需求分析代理处理来自客户端的用户请求,根据知识库中的规则对请求进行分析,得到构件组装方案和待选构件的描述,形成构件搜索条件,然后将搜索条件转交给构件搜索代理。构件搜索代理首先访问构件目录服务器,通过目录访问协议查询构件目录信息库,得到相关或相近构件的位置信息。然后构件搜索代理在提供构件的库服务器间自主移动,与库服务器上的库代理进行快速的本地交互,得到包含待选构件的资源文件,返回程序挖掘服务器,提交给构件组装代理处理。构件组装代理在组装环境中对选定的构件进行动态组装,得到完成用户计算需求的程序。
管理工作站上设置有三个系统代理程序:管理代理、目录代理和通讯代理。管理代理负责监视本管理域内所有任务代理的运行状况,支持任务代理的创建、移动、修改、删除等操作;通讯代理负责任务代理之间的通讯,为它们之间基于代理通讯语言(ACL)的高层次交互提供异步消息传送服务;目录代理为各个任务代理提供名字注册和查找服务,在任务代理的逻辑名和物理地址之间建立映射关系,动态跟踪移动任务代理的活动,为管理代理提供位置信息。这些系统代理保证整个程序挖掘过程中各个任务代理的协同工作,为系统中各个任务代理程序的通讯、移动、执行等提供服务。
位于各服务器上的多个智能代理协同工作,完成对用户计算请求的处理,从网络构件库中为用户挖掘所需要的程序。
本发明所述程序挖掘方法的具体步骤如下:
步骤1:建立构件目录信息库
如图2所示,在本地局域网中,设立一个构件目录服务器,该服务器创建并维护一个构件目录信息数据库,该数据库为广域网中的大量软构件建立索引,为Internet中的专用构件库和Web站点中指向的构件提供一个标准的访问接口,象搜索引擎对Web页面建立索引一样,为网上的软构件资源建立类似的索引目录。该数据库并不保存构件的实现代码,即构件数据本身,它维护的是构件的描述信息(Meta-Information),如构件的类别、实现方法、应用领域、功能、所在位置等等。本发明将整个网络中的构件资源按照地域、应用领域、管理权限等规则组织成不同的管理域,每个域中设立相应的构件目录服务器,维护本域内各构件服务器所提供的构件资源描述信息,目录服务器和和构件库服务器通过智能代理的动态交互维持构件目录信息与构件资源信息的一致;同时,该目录服务器可以与相邻域的目录服务器交换信息,形成层次化的构件分布式目录,为构件的浏览、搜索和获取提供基础,提高整个系统的可伸缩性。
建立构件目录库的具体方法如下:
本发明中的构件目录信息库保存本管理域内各库服务器所提供构件的组织与描述信息,建立构件索引,为构件查询代理提供构件目录服务。构件目录信息库是程序挖掘的基础,下面从构件的描述、分类、目录库的结构、目录信息维护等方面详细说明构件的具体建立过程。
1.构件的描述与分类:
将构件的功能或行为特征提取出来,得到构件的描述,是建立构件目录索引的基础。这种对构件的高层次描述便于帮助构件目录服务的用户理解构件的功能,而不必去分析构件的具体实现。一个构件的完整描述包括三方面内容:
组织分类信息:按照某种分类策略对构件进行分类,通过层次化的分类结构将具有某些公共特征的构件组织到一起,方便构件的浏览、检索;
静态属性:提供构件的基本描述信息,包括构件的作者、开发日期、版本、大小、厂家、功能描述等等;
动态行为:主要描述构件在组装和执行过程中所表现出来的动态特征,如构件的运行条件、构件的接口规约、所支持的操作、所采用的算法、执行效率等等。
其中,构件的组织分类信息决定构件目录信息库的结构,确定每个构件在目录库中的位置。本发明从构件模型、应用领域、实现语言、运行平台等多个刻面对构件进行分类,每个刻面代表理解构件的一个上下文(Context),在刻面的限定下,构件被进一步细分为多个子类。通常情况下,一个构件可以在多个刻面下归到不同的类别中。分类刻面从不同的角度为构件目录库建立视图,组织成层次化的多目录树结构。如果有新的一组构件出现,可以在分类树的不同层次随时增加新的表项以扩充目录库,如有必要,还可以增加分类刻面,建立新的目录子树。本发明从6个角度对构件进行分类,每个角度代表目录库的一个刻面,每个刻面由一组基本的术语(term)构成,所有的术语构成该刻面的词表,进一步确定构件所属的类别。本目录库采用的刻面及其术语词表如下:
构件模型(Component Model)
构件模型是指为构件的运行、操作提供服务或接口的标准框架(Framework),该框架在构件的连线或组装过程中提供必要的事件适配、方法调用、参数传递等服务。该刻面的词表根据现有的多种构件标准设定。
词表:COM、DCOM、CORBA、JINI、EJB、JAVABEAN、J2EE、J2Eeservlet、X-Windows、Motif、Other;
编程语言
指实现构件所采用的编程语言。
词表:C、C++、Csharp、Pascal、VisualBasic、Fortran、Java、Ada、Assembly、Delphi、Prolog、Lisp、Python、Perl、Other;
应用领域
构件的应用领域是陔构件实际应用的具体商业领域,如农业、商业、医疗等等。
词表:农业(Agriculture)、航空(Aerospace)、汽车业(Automotive)、银行业(Banking)、生物技术(BioTech)、商业(Business)、通讯(Communication)、建筑(Construction)、网络商业(DotCom)、财政(Financial)、保险(Insurance)、医疗(Healthcare)、生产(Manufacturing)、房地产(Real Estate)、零售(Retail)、公共管理(Public Administration)、服务业(Services)、软件开发(SoftwareDevelopment)、电信(Telecommunication)、运输(Transportation)、实用技术(Utilities)、贸易(WholesaleTrade)、其他(Other);
操作系统
指构件所支持的操作系统平台。
词表:Solaris、Linux、HPUX、Mac、Wintel、Windows、NT、Win2000、Other;
硬件平台
指构件所支持的硬件环境。
词表:IntelPC、SunSparc、HpRisc、IBM、Mac、Other;
构件功能
这里的构件功能是指构件在软件开发过程中,发挥作用的环节。如用户接口设计、网络功能、文件操作、图形处理等等。该刻面根据软件开发流程和构件的具体功能分为10个类别,每个类别下细分为多个子类。
词表:开发工具(Development Tools)、文件处理(File Manipulation)、多媒体(Multimedia)、网络工具(Network Tools)、科学计算(Scientific Computing)、用户接口(User Interface)、字处理(Word Processing)、因特网/企业内部网(Internet/Intranet)、数据库(Database)、杂项(Miscellaneous)。
每个类别对应的子类:
1)开发工具(Development Tools)应用服务器(Application Servers)、构件管理器(Component Managers)、构件生成器(Component Creation Tools)、代码生成(Code Components)、配置与初始化(Configuration&Initialization Components)、跟踪测试(Debugging&TestingComponents)、安装工具(Installation Tools)、本地化工具(LocalizationComponents)软件注册(Software Licensing Components)、源代码生成构件(SourceCode Generators)、软件升级(Software Upgrade Components)、版本控制(VersionControl Components)、帮助构件(Help Components)、其他(Others);
2)文件处理(File Manipulation)压缩(Compression)、加密(Encryption)、转换工具(Convert Tools)、文件拆分(File Spit Tools)、图标工具(Icon Tools)、文件上载(File Upload Components)、图形构件(Imaging Components)、PDF工具(PDF Tools)、其他(Others)
3)多媒体(Multimedia)声音(Audio,MIDI&Sound Components)、语音识别(Speech RecognitionComponents)、DirectX构件(DirectX Components)、MP3构件(MP3 Components)、视频构件(Video Components)服务质量控制构件(QoS Components)、多媒体邮件(MultimediaMail)、协作构件(Collaborative)、视频会议(Video Conferencing)、3D建模(3D Modeling Components)、其他(Others)
4)网络工具(Network Tools)聊天工具(Chatting Tools)、电子公告版(BBS)、拨号构件(Dialup Components)、通用网关接口(CGI)、服务器小程序(Servlet)、目录服务(Directory Service)、传真构件(Facsimile Components)、防火墙(Firewall)、新闻(News)、代理服务器(Proxy)、网络管理(Network Management)、网络通信(Network Communication)消息构件(Messaging Components)、串行通讯(Serial Communication Components)、其他(Others)
5)科学计算(Scienti fic Computing)信号处理(Signal Processing)、数学/统计构件(Maths&Stats Components)、算法(Algorithms)、其他(Others)
6)用户接口(User Interface)按钮构件(Button Components)、日历/日程表(Calendars/Scheduling)、图表/图形(Charts/Graphs)、数据输入/屏蔽(Data Input/Masking)、数据入口验证(DataEntry Verification)、表格(Grids/Tables)、可视仪器构件(Instrumentation)、文本(Text Components)、树状视图/列表(Tree view&List Components)、工具条(Toolbar Components)、菜单(Menu Components)、图表/曲线构件(DiagrammingComponents)、其他(Others)
7)字处理(Word Processing)寻找/替换(Find&Replace Components)、拼写(Spelling Components)、电子数据表构件(Spreadsheet Components)、打印/预览(Print&Preview Components)、报告(Reporting Components)、其他(Others)
8)因特网/企业内部网(Internet/Intranet)电子商务(E-Commerce)、电子邮件(E-mail)、文件传输(FTP)、远程登录(Telnet)、超文本传输(HTTP)、安全(Security)、网站(Website Components)、超文本标记语言(HTML)、扩展标记语言(XML)、因特网通讯(Internet Communication)、网络出版工具(Authoring Tools)、搜索引擎(Search Engines)、浏览构件(ExplorerComponents)、其他(Others)
9)数据库(Database)数掘库连接工具(Database Connectivity Components)、数据库管理(DatabaseManagement)、数据库报告(Database Reporting)、数据存储(Data StorageComponents)、SQL构件(SQL Components)、OLAP构件(OLAP Components)、其他(Others)
10)杂项(Miscellaneous)地址/邮政编码/地区码构件(Addressing,Postcode/ZipCode Components)、条形码(Barcode Components)、信用卡授权(Credit Card Authorization Components)、电话构件(Telephony Components)、寻呼构件(Paging Components)、短消息(SMSComponents)、其他(Others)
以上述分类模式为基础,本发明设计了基于XML语言的构件描述符,全面刻画构件的分类、静态属性及动态行为信息,该描述符的结构如图4所示。每个描述符由构件分类信息、构件静态属性和构件接口描述三部分组成,各部分由多个自定义标签对组成。其中分类信息中的大类和子类分别用标签对<Category></Category>和<SubCategory></SubCategory>表示;构件的静态属性用从属性名称中提取的标签对表示,如<author></author>、<vendor></vendor>等等;构件接口描述分别用与操作、事件相对应的标签对表示。
2.目录库的结构与目录信息交换
构件描述符代表所描述的构件,形成目录信息库的一个分类和获取单元-目录登记项。多个目录项按照构件分类策略形成层次化的目录树,树中的叶节点对应构件,非叶节点表示一组具有相同属性的构件。构件分类的每个刻面对应一个目录子树,对构件的多刻面分类形成目录库的多目录树结构。
构件目录库的建立和维护通过智能代理之间的动态交互完成。构件目录服务器上设立目录服务代理,各构件库服务器上设置库代理,目录服务代理与各个库代理之间的交互模型如附图5所示。
目录信息交换的具体方法为目录服务代理可以通过发广播包,要求本域内的各库代理响应,从而获取各库代理的位置信息;由于一个管理域内只设一个目录服务器,各库服务器可以通过预先配置或DHCP(动态主机配置协议)来获得本域中的目录服务器地址。目录服务代理和各库代理在获取彼此的位置信息后,目录服务代理定时轮询本域中的各库代理,获取各库服务器所提供的构件信息。库代理在本服务器提供的构件发生变化时,主动向目录服务代理发出构件注册或取消注册的信息。目录服务代理和库代理之间的交互基于下层通讯基础设施提供的消息传送服务,交互双方各维护一个消息队列,发出消息的代理首先将需要发送的信息封装成一个消息对象,将该对象通过消息传送服务发给接收代理,接收代理将该消息对象添加到本地消息队列中,等待处理,同时,接收代理马上返回一个消息应答对象,通知消息发送方。通过目录服务代理和各库代理之间的高层次交互,可以保证构件目录服务器提供最新的构件目录信息。
步骤2:接受并分析用户需求
步骤1中构件目录库的建立,为根据用户需要搜索、定制和组装程序提供了挖掘资源。在客户端主机中,设置用户接口代理,提供友好的输入界面,用户可以通过语音输入或图标选取等方式输入计算请求。用户接口代理根据程序的应用领域和功能提供相应的词汇表和图文导航树状目录,一方面方便用户的使用,另一方面可以在应用领域和程序功能两个层次对用户的计算请求进行限定,避免模糊和歧义性,帮助用户更准确地提交请求,同时为在相应的范围内选取可用构件创造条件,提高构件搜索和获取的针对性。用户接口代理对用户提出的请求进行预处理,根据用户选定的关键词或图标得到用户所需程序的初步描述,然后将该描述转交给位于程序挖掘服务器的需求分析代理。需求分析代理可以跟踪并记录用户的操作行为,根据用户的输入模式、使用习惯和兴趣等为每个用户建立模型,并存储到程序挖掘服务器维护的知识库中,作为修正和补充用户请求的依据。需求分析代理根据知识库中的规则对用户请求做进一步分析,从用户所需程序的初步描述得到计算请求的形式化描述。
本发明将用户的计算需求看作是待解决的问题,把完成用户所需计算的程序看作是该问题的解决方法,程序挖掘的过程就成为一个问题的求解过程,程序挖掘服务器所维护的知识库,除了保存与用户相关的知识以外,还存储成熟的程序组装方案,每个方案包括程序的分类信息,程序的功能描述以及相应的构件组装方法等等。这些方案可以通过软件再工程的方法获得。每个组装方案的描述由三部分组成:
程序的分类信息:该信息确定程序所解决问题的领域和程序所属的具体类别。程序的分类采用与构件分类相同的策略,这样可以在程序和相关构件之间建立联系,便于构件的搜索和获取。
程序的功能描述:该信息为文本形式,说明程序所解决问题的背景、目的、采用的方法、优点等,根据程序所属的领域和程序的描述,可以提取一个关键词列表,作为初步匹配用户计算需求的条件。
程序的构件组装方案:按照自上而下的分解策略,将程序分解为多个功能模块,每个模块由一个或多个构件组合而成。用脚本语言将组装过程中需要的构件、构件属性设置、事件的触发和响应等构件依赖关系描述出来,作为构件搜索和组装的依据。
需求分析代理得到用户的计算请求后,首先在解决方案库中查找有没有相同或相似的构件组装方案,如果有则直接从库中获得程序的构件组装和连线描述,并以此为依据去搜索和获取相关的构件;如果没有,需求分析代理根据自己所持有的领域知识,分析计算需求,将任务分解成小的功能模块,找出它们之间的调用和依赖关系,直到各模块可以通过某个构件或某些构件的组合实现为止,在分析过程中,后一阶段的结果会反馈到前一阶段,在必要的时候会重新调整分解策略,以得到满足用户要求的程序。然后,需求分析代理根据得到的构件组合,结合下面步骤中构件搜索、组装的结果提取新的问题求解方案,添加到知识库中,不断丰富解决方案知识库的内容,提高程序挖掘的效率。
步骤3:构件搜索与获取
程序挖掘服务器启动一个或多个构件搜索代理,以步骤2中得到构件组合方案为基础,提取所需构件的描述,形成构件查询条件,该条件由构件的应用领域、功能描述、类别、接口特征等组合而成。构件搜索代理首先访问构件目录服务器,通过目录访问协议查询构件目录信息库,得到相关或相近构件的位置信息。然后构件搜索代理在提供构件的库服务器间自主移动,与库服务器进行快速的本地交互,得到包含待选构件的资源文件,返回程序挖掘服务器,提交给下面的智能代理处理。构件搜索过程分为两步进行:构件搜索代理首先在本地构件目录库中快速搜索需要的构件,如果本地库中没有,则马上返回错误信息,系统根据该信息做相应的调整,以适应某些对结果的返回时间要求较高的实时应用;对于对实时性要求不高的用户,系统可以启动代理到远程构件服务器上继续搜索,获取需要的构件,这一工作可以开发相应的构件搜索引擎来完成。
步骤4:分析、选择构件
待选构件的分析选择取决于前面三个步骤的结果。在建立构件目录信息库阶段,构造出了描述构件静态属性及动态行为的构件描述符,并做了分类组织,这是在构件层次上的描述;对用户需求的分析则得到用户所需程序的功能归约和自上而下的程序分解方案,这是应用层的描述。构件分析的任务就是根据用户需求分析阶段得到程序描述和分解方案,按照相反的顺序自下而上验证分解方案的可行性,从分析构件的功能和依赖关系开始,逐步综合,得到更高抽象层次的构件组合,再进一步分析构件组合之间的关系,最终得到基于构件组装的程序,建立起应用层次和构件层次描述之间的联系。
在分析待选构件的过程中,由于有多个构件实现相同或相似的功能,并且在组合过程中对外部条件有不同的要求,因此在实际组装之前需要对构件进行选择和优化。构件选择主要从两个层次进行:首先对功能相近的构件进行比较分析,综合考虑执行效率,时空开销等因素,对构件进行取舍,以满足用户的实际需要;另外,在更高一个层次上,对于实现相同功能的构件组合,也同样存在比较和取舍问题,确保构件组合在执行过程中不互相影响。这两方面的取舍对于整个挖掘过程的优化有重要意义。经过构件的分析选择,最终确定了待组装的构件和构件组装方案。
步骤5:组装构件
在程序挖掘服务器的组装环境中,构件组装代理按照组装方案定义的构件依赖和调用关系,对选定的构件进行连线和组装。在组装过程中,需要根据用户的具体需求调整和设置各个构件的可定制属性,通过事件触发和方法调用将构件连接成一个统一的整体,并自动生成相关的程序代码,完成用户所要求的计算功能。在组装过程中,自动生成的代码主要包括事件发出和事件响应方法之间的适配代码;构件之间的动态参数传递,以及支持整个程序执行的静态入口方法和变量设置等等。本发明中采用XML语言对构件的配置和调用关系进行描述。
步骤6:程序校验与执行
这一步的主要任务足在组装程序提交给用户之前,进行验证和测试,确保得到的程序能完成用户需要的功能,并且在运行过程中不会给客户端系统带来不良影响。程序的校验在以下几个方面进行:组装程序的有效性和可靠性,功能归约的一致性和正确性,构件间依赖关系描述的正确性,以及功能归约到实现转换的有效性。由于在程序挖掘过程中,从用户需求、程序功能到构件的交互都采用了统一的描述方法,程序验证可采用软件方法学的自动校验机制进行。在校验完成后,挖掘到的程序经网络传输到客户端系统或网络节点上,在相应系统平台的应用框架上链接、执行,完成所需要的计算功能,在分布式网络中实现按需计算,如果挖掘出的程序不能满足用户的需求,可以通过调整某些中间步骤来优化整个过程,直到为用户挖掘到满足要求的程序。
本发明的特点及效果:
1)网络环境下的程序挖掘隐藏程序设计与构件组装的细节,使构件概念对最终用户完全透明,用户只需通过语音输入、图标选择等方式提出自己的计算需求,系统即可从网络构件库中发现、组装用户需要的计算程序,提供一种简单易用的网络交互模式,实现大规模网络环境下的按需计算,使不同用户能根据自己的特定需求定制程序,提供灵活性和可扩展性;
2)网络环境下的程序挖掘系统将智能代理技术引入到构件的查询与获取领域,以智能代理技术为基础,设计并实现了基于多代理的构件查询与获取子系统,利用多个智能代理之间基于代理通讯语言的高层次交互和代理的自主学习,在广域网环境中定位和获取软构件,以支持程序的自动发现与组装;
3)提供智能代理运行平台,为各个代理的运行、迁移、通讯等提供所需的资源和方法调用,提供管理界面,监视各个代理的运行状态,可视化显示代理的交互与任务的执行进程。
4)提供一种对软构件的非行为特征与行为特征进行完整描述的方法(ComponentDescriptor),并从构件模型、编程语言、应用领域、操作系统等多个角度对构件进行刻面分类,建立分布式构件目录库,通过目录代理与库代理之间的高层次交互,维持构件资源信息与构件目录信息的一致;通过相邻域间目录服务器的交互,形成层次化构件目录服务。
5)在客户端提供支持程序定制与运行的应用框架,程序挖掘服务器端提供构件组装环境,该环境支持构件之间调用和依赖关系的描述,用来实现计算功能描述与构件化实现间的映射,为构件组装代理提供组装程序的环境。
目前,国际上流行的是数据挖掘,即如何从网上找到自己需要的信息与知识。而在网络环境中帮助用户发现和获取程序的程序挖掘方法目前在国际上还没有人提出。因此,程序挖掘方法具有重大创新性和广阔的应用前景。
本发明有以下应用:
应用本发明,可以在大规模的分布式网络中,根据用户的特定计算需求,从网络构件库中挖掘出满足用户需要的处理程序,实现按需计算。
本发明的程序挖掘可以在分布式网络中根据用户所处的网络环境和资源条件实现按需计算,其可能的应用领域如下:
1.本地资源受限应用的按需加载,如家庭网络中,信息家电设备应用程序的发现、定制与加载;移动通信设备中,客户端系统模块或应用程序的自动发现与加载。目前,很多移动设备都支持WAP,使用户能够随时随地访问Internet,而且随着网络技术的发展,将来很多家用电器也会具备访问因特网的功能,使家庭中的多个设备联成一个家庭网络,但由于这些移动设备和家电设备的本地资源很有限(如CPU处理能力、内存、本地存储器等),很难将所需的应用程序都预装到设备中。这种情况下,可以利用程序挖掘机制,为这些设备提供即时安装的应用,用户可以随时向程序挖掘系统提出程序需求,挖掘系统从在线构件资源中搜索、获取可能的构件,组装成用户所需的应用程序,动态加载到本地资源有限的设备中。
2.主动网络中,主动节点中协议处理模块或其他主动程序的自动发现与动态加载。在主动网中,网络的路由器或交换机能对流经的数据流执行定制的计算,这些用户定制的计算为应用提供主动式的网络服务,实现不同网络服务的计算模块可以通过程序挖掘从网络构件资源中动态发现和下载到主动节点中。这样在主动网络的主动节点中,如果某个流需要特定的计算处理,执行该计算的程序可以从网络中发现和下载,然后这些程序在主动节点上被重新链接并执行,为单个的数据流提供定制的计算。因此,利用程序挖掘,主动网络可以为用户和应用提供一种更为灵活的网络服务,为用户控制和利用网络提供新的手段。
3.因特网的端系统中,系统模块或应用程序的定制、自动发现与按需加载。
大规模分布式网络中(如Internet),应用和服务需要面向各种各样的用户,用户所在的网络环境不同,需求也不同。为了满足不同用户的各种需求,本发明的程序挖掘可用来给用户提供一种定制和裁剪网络服务和应用的手段,应用的发布和配置可以由用户驱动,不同级别的用户可以根据他们的特定需求选择合适的计算功能。具体来讲,首先将组装程序的标准化构件组织成在线的构件库,作为程序挖掘的资源,用户向程序挖掘系统提出程序请求,程序挖掘系统从在线构件资源中,搜索可用的构件,自动组装链接,形成提供用户所需功能组合的应用程序,然后用户能够根据自己的网络连接方式和特定的需求,对挖掘到的程序进行选择和取舍,自行选择所需要的功能或界面,让应用程序以一种按需加载的方式安装到用户本地系统中。
附图简单说明
图1.为本发明的程序挖掘流程图。
图2.为本发明的程序挖掘实体关系图。
图3.为本发明中各代理的配置和交互关系。
图4.为本发明的基于XML的构件描述符结构。
图5.为本发明中目录服务代理与库代理的交互关系
图6.为本发明的程序挖掘实施例系统结构
图7.为本发明的挖掘程序FTP客户应用的执行界面。
本发明的程序挖掘方法在家庭网络中应用的一个具体实施例详细说明如下:
本实施例假定在家庭网络中有多个具有联网功能的设备,如带有顶置盒的电视机,智能空调、冰箱、网络计算机等等。由于这些设备的本地资源很有限,无法预装所有的应用程序,因此我们可以采用程序挖掘方法,实现一个按需加载应用系统(Applieation-On-Demand),当用户需要收发电子邮件时,电子邮件客户程序可以通过程序挖掘从网络构件库中自动组装和下载;当用户需要从因特网上下载文件时,可以通过程序挖掘搜索组装FTP客户软件。同直接从文件服务器上下载应用软件不同,本系统中的应用程序并不是以最终软件包的形式存储在一个服务器上,而是通过程序挖掘从网络上的大量构件中发现、组装而成,这些构件分布于多个网络构件库中。本实施例的系统结构如图6所示。该系统包括连接在本地局域网上的多个设置有构件库的构件服务器、设置有目录信息库的构件目录服务器、设置有知识库的程序挖掘服务器、管理工作站及客户机。其中客户机指具有联网功能的家电设备,该设备通过网络与程序挖掘服务器联到一起。下面以该应用环境为背景,说明本实施例的程序挖掘方法从网络构件库中挖掘FTP客户程序的步骤:
首先,要创建构件目录信息库,建立构件索引,为挖掘程序提供组织良好的构件资源。每个构件的索引包括该构件的组织与描述信息,这些信息形成构件的描述符。一个构件的完整描述包括三方面内容:
组织分类信息:按照某种分类策略对构件进行分类,通过层次化的分类结构将具有某些公共特征的构件组织到一起,方便构件的浏览、检索;
静态属性:提供构件的基本描述信息,包括构件的作者、开发日期、版本、大小、厂家、功能描述等等;
动态行为:主要描述构件在组装和执行过程中所表现出来的动态特征,如构件的运行条件、构件的接口规约、所支持的操作、所采用的算法、执行效率等等。按照本发明中构件的分类策略与描述方法,为基于Java的构件FTP Protocol和FTP UI建立构件描述符。
FTP Protocol构件实现文件传输协议,解释执行文件的上传、下载,用户的认证等协议命令,帮助用户发出请求和接收来自服务器的响应;FTP UI构件为FTP Protocol构件提供与用户交互的接口,使用户无须了解FTP协议的内部实现就可以在本地主机与远程服务器之间方便地传递文件,该构件将用户的鼠标点击、菜单选取等操作映射成FTP协议命令,并为本地和远地目录文件提供显示窗口。按照多刻面分类策略,这两个构件的分类信息为:
构件模型:JavaBean
编程语言:Java
应用领域:软件开发(Software Development)
操作系统:Solaris、Linux、Windows、NT、Win2000
硬件平台:IntelPC、SunSparc
构件功能:大类:因特网/企业内部网(Internet/Intranet)
FTP Protocol和FTP UI构件通过事件的触发和方法调用相互配合,提供文件传输服务。构件的动态行为通过事件的触发和方法的调用体现出来,构件方法和事件的描述信息及其运行条件构成构件的接口描述。FTP Protocol和FTP UI构件的接口信息如下:
事件监听方法 | addLocalFileListListener/removeLocalFileListListeneladdRemoteFileListListener/removeRemoteFileListListeneraddStatusListener/removeStatusListener | ||
命令实现方法 | connectgetFiledeleteFilegetRemoteDirgetLocalFileListloginsetType | abortconnectdownloadmakeDirsetType |
用XML语言将上述信息表示出来,得到FTP Protocol和FTP UI构件的描述符:FTP Protocol构件:
<Component> <Classification> <Context> <ComponentModel>JavaBean</ComponentModel> <ProgrammingLanguage>Java</ProgrammingLanguage> <ApplicationDomain>Software Development</ApplicationDomain> <OperatingSystem>Solaris,Linux,Windows,NT,Win2000 </OperatiingSystem> <HardwarePlatform>InteIPC,SunSparc</HardwarePlatform> <ComponentFunctionality> <Internet/Intranet> <SubCategory>FTP</SubCategory> </Internet/Intranet> </ComponentFunctionality> </Context> </Classification> <Componentlnfo> <componentName>FTP Protocol Bean</componentName> <author>Unknown</author> <vendor>IBM</vendor> <description>implements FTP client services</description <version>1.0</version> <size>31Kbytes</size> <madeDate>1999.11</madeDate> <indexDate>2000.12</indexDate> <resourceFile>FTPProtocol.jar</resourceFile> <dp n="d15"/> <location>libl.cs.tsinghua.edu.cn/cf/internet/ftp</location> </ComponentInfo> <InterfaceSpecification> <Operation> <methodName>connect</methodName> <param> <name>hostName></name> <type>String</type> </param> <returnValue>void</returnValue> <description>Creates a FTP connection to the named host</description> <preConditions>no Connection</preConditions> <postConditions>a FTP connection is established</postConditions> </Operation> … … <Event> <eventName>statusEvent</eventName> <description>Carries the present status of FTP connection</description> </Event> … … </InterfaceSpecification> </Component>
FTP UI构件:
<Component> <Classification> <Context> <ComponentModel>JavaBean</ComponentModel> <ProgrammingLanguage>Java</ProgrammingLanguage> <ApplicationDomain>Software Development</ApplicationDomain> <OperatingSystem>Solaris,Linux,Windows,NT,Win2000 </OperatiingSystem> <HatdwarePlatform>IntelPC,SunSparc</HardwarePlatform> <ComponentFunctionality> <Internet/Intranet> <SubCategory>FTP</SubCategory> </Internet/Intranet> </ComponentFunctionality> <dp n="d16"/> </Context> </Classification> <ComponentInfo> <componentName>FTP UI Bean</componentName> <author>Unknown</author> <vendor>IBM</vendor> <description>Implements a user interface for FTPProtocol component</description <version>1.0</version> <size>42Kbytes</size> <madeDate>1999.11</madeDate> <indexDate>2000.12</indexDate> <resourceFile>FTPUI.jar</resourceFile> <location>lib2.cs.tsinghua.edu.cn/cf/internet/ftp</location> </ComponentInfo><InterfaceSpecification> <Operation> <methodName>statusReceived</methodName> <param> <name>se></name> <type>StatusEvent</type> </param> <returnValue>void</returnValue> <description>receives the StatusEvent from the sources and and sets the status message in the status window </description> <preConditions>null</preConditions> <postConditions>the status window is set</postConditions> </Operation> … … <Event> <eventName>CommandEvent</eventName> <description>The event contains the command and associated parameters</description> </Event> … … </InterfaceSpecification> </Component>
这些构件描述符存储在目录信息库中,为构件的搜索组装提供基础。
在程序挖掘服务器的知识库中,保存有成熟的程序组装方案,为挖掘程序提供任务分解策略和构件组合方法。
每个组装方案的描述由三部分组成:
程序的分类信息:陔信息确定程序所解决问题的领域和程序所属的具体类别。程序的分类采用与构件分类相同的策略,这样可以在程序和相关构件之间建立联系,便于构件的搜索和获取。
程序的功能描述:该信息为文本形式,说明程序所解决问题的背景、目的、采用的方法、优点等,根据程序所属的领域和程序的描述,可以提取一个关键词列表,作为初步匹配用户计算需求的条件。
程序的构件组装方案:按照自上而下的分解策略,将程序分解为多个功能模块,每个模块由一个或多个构件组合而成。用脚本语言将组装过程中需要的构件、构件属性设置、事件的触发和响应等构件依赖关系描述出来,作为构件搜索和组装的依据。
按照本发明中组装方案的描述方法,FTP客户端程序的描述信息及构件组装方案为:
程序分类信息:
编程语言:Java
程序功能:大类:因特网/企业内部网(Internet/Intranet)
子类:文件传输(FTP)
程序的功能描述:利用文件传输协议,在本地主机和远程服务器之间传递文件。
功能关键词:软件下载,上传,文件传输,FTP,Upload,Download
构件组装方案:FTP客户端程序可由FTP Protocol和FTP UI构件组装而成,将这两个构件通过事件触发和相关的方法调用连接到一起,实现文件传输协议的所有功能。该组装方案将FTP Protocol构件的LocalFileList、RemoteFileList和Status事件分别与FTP UI构件的相应事件处理方法绑定到一起;同时FTP UI构件也将接收到的用户命令通过command事件传递给FTP Protocol构件。
该组装方案的XML描述如下:
<?xml version=″1.0″?> <DOCUMENT> <BEAN> <name>com.ibm.network.ftp.ui.FTPUI</name> <beanPath>FTPUI.jar</beanPath> <ID>UI1</ID> <label>USER INTERFACE</label> <posX>250</posX> <posY>250</posY> </BEAN> <dp n="d18"/> <BEAN> <name>com.ibm.network.ftp.protocol.FTPProtocol</name> <beanPath>FTPProtocol.jar</beanPath> <ID>PROTOCOL1</ID> <label>PROTOCOL</label> <posX>100</posX> <posY>20</posY> </BEAN> <ITEM> <sourceBean>PROTOCOL1</sourceBean> <targetBean>UI1</targetBean> <EVENTHANDLE> <event>remoteFileList</event> <method>remoteFileListReceived</method> <dealMethod>remoteFileListReceived</dealMethod> </EVENTHANDLE> </ITEM> <ITEM> <sourceBean>ROTOCOL1</sourceBean> <targetBean>UI1</targetBean> <EVENTHANDLE> <event>localFileList</event> <method>localFileListReceived</method> <dealMethod>localFileLi stReceived</dealMethod> </EVENTHANDLE> </ITEM> <ITEM> <sourceBean>Protocoll</sourceBean> <targetBEAN>UI1</targetBEAN> <EVENTHANDLE> <event>status</event> <method>statusReceived</method> <dealMethod>statusReceived</dealMethod> </EVENTHANDLE> </ITEM> <ITEM> <sourceBean>UI1</sourceBean> <dp n="d19"/> <targetBean>PROTOCOL1</targetBean> <EVENTHANDLE> <event>command</event> <method>commandPerformed</method> <dealMethod>commandPerformed</dealMethod> </EVENTHANDLE> </ITEM> </DOCUMENT>
其中,<BEAN></BEAN>标签用来指定组装程序的各个构件,<ITEM></ITEM>标签用来指定构件之间的调用和连线关系。
在客户端,用户通过用户接口代理提供的用户界面提交计算请求,接口代理从用户请求中提取用户所需程序功能的关键词(软件下载,FTP),并将请求转交给位于程序挖掘服务器的需求分析代理,需求分析代理以程序功能的关键词为检索条件,在知识库中查找已有的解决方案,得到FTP客户程序组装方案的XML描述。需求分析代理对该描述进行分析,从<BEAN>标签中得到组装FTP客户程序所需要的构件:FTPProtocol Bean和FTP UI Bean。然后需求分析代理启动一个构件搜索代理,该代理与位于目录服务器的目录服务代理交互,从构件目录信息库中搜索这两个构件,得到它们的描述和位置信息。构件搜索代理从构件所在的库服务器Lib1和Lib2将构件资源文件下载到程序挖掘服务器,得到组装FTP客户程序需要的构件。构件组装代理根据组装方案描述中<ITEM>标签定义的构件调用关系,自动生成两个构件的事件适配代码,并自动编译出FTP客户程序的可执行代码。事件匹配代码如下:
//Automatically generated event hookup file. package tmp.sunw.beanbox; import com.ibm.network.ftp.ui.FTPUI; import com.ibm.network.ftp.event.LocalFileListListener; import com.ibm.network.ftp.event.LocalFileListEvent; public class_Hookup_170a2dldd9 implements com.ibm.network.ftp.event.LocalFileListListener, java.io.Serializable{ public void setTarget(com.ibm.network.ftp.ui.FTPUI t) { target=t;} public void localFileListReceived(com.ibm.network.ftp.event.LocalFileListEvent arg0) { target.localFileListReceived(arg0);} private com.ibm.network.ftp.ui.FTPUI target; } //Automatically generated event hookup file. <dp n="d20"/> package tmp.sunw.beanbox; import com.ibm.network.ftp.ui.FTPUI; import com.ibm.network.ftp.event.StatusListener; import com.i bm.network.ftp.event.StatusEvent; public class_Hookup_170a2d20b9 implements com.ibm.network.ftp.event.StatusListener,java.io.Serializable{ public void setTarget(com.ibm.network.ftp.ui.FTPUI t) {target=t;} public void statusReceived(com.ibm.network.ftp.event.StatusEvent arg0){ target.statusReceived(arg0); } private com.ibm.network.ftp.ui.FTPUI target; } //Automatically generated event hookup file. package tmp.sunw.beanbox; import com.ibm.network.ftp.protocol.FTPProtocol; import com.ibm.network.ftp.event.CommandListener; import com.ibm.network.ftp.event.CommandEvent; public class_Hookup_170a2d2138 implements com.ibm.network.ftp.event.CommandListener,java.io.Serializable{ public void setTarget(com.ibm.network.ftp.protocol.FTPProtocol t) {target=t;} public void commandPerformed(com.ibm.network.ftp.event.CommandEvent arg0) {target.commandPerformed(arg0);} private com.ibm.network.ftp.protocol.FTPProtocol target;}
构件组装生成的FTP客户程序代码传递到客户端的应用框架,并在应用框架中启动执行,为用户提供文件传输服务,程序执行界面如附图7所示。通过该客户端程序,用户可以查看本地和远端服务器的文件列表,发出命令,完成文件的上传和下载,实现用户的计算请求。
Claims (12)
1、一种网络环境下的程序挖掘方法,其特征在于,包括以下步骤:
1)建立本地构件目录信息库,保存网络构件库所提供构件的组织与描述信息,建立构件索引,并通过智能代理程序的通讯维护该目录信息库,为程序挖掘提供组织良好的挖掘资源;
2)通过建立相应的智能代理接受并分析用户请求,根据用户的特定需求,从构件目录信息库中检索可用构件的位置及描述信息;
3)然后启动用于构件搜索的智能代理程序查询构件目录信息库,并在构件库服务器间自主移动,获取所需要的构件;
4)对这些构件进行选择、取舍,分析它们之间的调用关系;
5)并进行组装和重新链接,形成完成用户计算需求的程序;
6)程序校验与执行。
2,如权利要求1所述的程序挖掘方法,其特征在于,所说的步骤1中具体步骤包括:
1)在本地局域网中,设立一个构件目录服务器,该服务器创建并维护一个构件目录信息数据库,该数据库为广域网中的大量软构件建立索引,为Internet中的专用构件库和Web站点中指向的构件提供一个标准的访问接口;
2)该数据库维护构件的描述信息,所说的构件按照地域、应用领域、管理权限等规则组织成不同的管理域,每个域中设立相应的构件目录服务器,维护本域内各构件服务器所提供的构件资源描述信息,该目录服务器和和构件库服务器通过智能代理的动态交互维持构件目录信息与构件资源信息的一致;
3)同时,该目录服务器与相邻域的目录服务器交换信息,形成层次化的构件分布式目录。
3、如权利要求2所述的程序挖掘方法,其特征在于,所说的建立构件目录信息库的具体方法包括如下步骤:
1)构件的描述与分类:
将构件的功能或行为特征提取出来,得到构件的描述,一个构件的完整描述包括三方面内容:
组织分类信息:按照某种分类策略对构件进行分类,通过层次化的分类结构将具有某些公共特征的构件组织到一起,方便构件的浏览、检索;
静态属性:提供构件的基本描述信息,包括构件的作者、开发日期、版本、大小、厂家、功能描述等等;
动态行为:主要描述构件在组装和执行过程中所表现出来的动态特征,如构件的运行条件、构件的接口规约、所支持的操作、所采用的算法、执行效率等等;
2)目录库的结构与目录信息交换
多个目录项按照构件分类策略形成层次化的目录树,树中的叶节点对应构件,非叶节点表示一组具有相同属性的构件;构件分类的每个刻面对应一个目录子树,对构件的多刻面分类形成目录库的多目录树结构;
目录信息交换的具体方法是:位于目录服务器上的目录服务代理通过发广播包,要求本域内各构件库服务器上的库代理响应,从而获取各库代理的位置信息;各库服务器通过预先配置或动态主机配置协议来获得本域中的目录服务器地址;目录服务代理和各库代理在获取彼此的位置信息后,目录服务代理定时轮询本域中的各库代理,获取各库服务器所提供的构件信息。库代理在本服务器提供的构件发生变化时,主动向目录服务代理发出构件注册或取消注册的信息;目录服务代理和库代理之间的交互基于下层通讯基础设施提供的消息传送服务,交互双方各维护一个消息队列,发出消息的代理首先将需要发送的信息封装成一个消息对象,将该对象通过消息传送服务发给接收代理,接收代理将该消息对象添加到本地消息队列中,等待处理,同时,接收代理马上返回一个消息应答对象,通知消息发送方。
4、如权利要求3所述的程序挖掘方法,其特征在于,所说的每个构件描述符的结构由构件分类信息、构件静态属性和构件接口描述三部分组成,各部分由多个自定义标签对组成;其中分类信息中的大类和子类分别用标签对<Category></Category>和<SubCategory></SubCategory>表示;构件的静态属性用从属性名称中提取的标签对表示,构件接口描述分别用与操作、事件相对应的标签对表示;构件描述符代表所描述的构件,形成目录信息库的一个分类和获取单元一目录登记项。
5、如权利要求1所述的程序挖掘方法,其特征在于,所说的步骤2具体内容包括:
1)在客户端主机中,设置用户接口代理,提供友好的输入界面,用户可以通过语音输入或图标选取等方式输入计算请求;
2)所说的用户接口代理根据程序的应用领域和功能提供相应的词汇表和图文导航树状目录,用户接口代理对用户提出的请求进行预处理,根据用户选定的关键词或图标得到用户所需程序的初步描述,然后将该描述转交给位于程序挖掘服务器的需求分析代理;
3)所说的需求分析代理跟踪并记录用户的操作行为,根据用户的输入模式、使用习惯和兴趣等为每个用户建立模型,并存储到程序挖掘服务器维护的知识库中,作为修正和补充用户请求的依据,需求分析代理根据知识库中的规则对用户请求做进一步分析,从用户所需程序的初步描述得到计算请求的形式化描述;
4)该程序挖掘服务器所维护的知识库,除了保存与用户相关的知识以外,还存储成熟的程序组装方案,每个方案包括程序的分类信息,程序的功能描述以及相应的构件组装方法;
5)需求分析代理得到用户的计算请求后,首先在解决方案库中查找有没有相同或相似的构件组装方案,如果有则直接从库中获得程序的构件组装和连线描述,并以此为依据去搜索和获取相关的构件;如果没有,需求分析代理根据自己所持有的领域知识,分析计算需求,将任务分解成小的功能模块,找出它们之间的调用和依赖关系,直到各模块可以通过某个构件或某些构件的组合实现为止;
6)然后,需求分析代理根据得到的构件组合,结合构件搜索、组装的结果提取新的问题求解方案,添加到知识库中,不断丰富解决方案知识库的内容。
6、如权利要求5所述的程序挖掘方法,其特征在于,所说的每个组装方案的描述由三部分组成:
1)程序的分类信息:该信息确定程序所解决问题的领域和程序所属的具体类别。程序的分类采用与构件分类相同的策略,这样可以在程序和相关构件之间建立联系,便于构件的搜索和获取:
2)程序的功能描述:该信息为文本形式,说明程序所解决问题的背景、目的、采用的方法、优点等,根据程序所属的领域和程序的描述,可以提取一个关键词列表,作为初步匹配用户计算需求的条件;
3)程序的构件组装方案:按照自上而下的分解策略,将程序分解为多个功能模块,每个模块由一个或多个构件组合而成。用脚本语言将组装过程中需要的构件、构件属性设置、事件的触发和响应等构件依赖关系描述出来,作为构件搜索和组装的依据。
7、如权利要求1所述的程序挖掘方法,其特征在于,所说的步骤3中构件搜索与获取具体包括:
1)程序挖掘服务器启动一个或多个构件搜索代理,以所说的构件组合方案为基础,提取所需构件的描述,形成构件查询条件,该条件由构件的应用领域、功能描述、类别、接口特征等组合而成;
2)该构件搜索代理首先访问构件目录服务器,通过目录访问协议查询构件目录信息库,得到相关或相近构件的位置信息;
3)然后构件搜索代理在提供构件的库服务器间自主移动,与库服务器进行快速的本地交互,得到包含待选构件的资源文件,返回程序挖掘服务器,提交给下面的智能代理处理。
8、如权利要求7所述的程序挖掘方法,其特征在于,所说的构件搜索分为两步进行:
1)构件搜索代理首先在本地构件目录库中快速搜索需要的构件,如果本地库中没有,则马上返回错误信息,系统根据该信息做相应的调整,以适应某些对结果的返回时间要求较高的实时应用;
2)对于对实时性要求不高的用户,可以启动代理到远程构件服务器上继续搜索,获取需要的构件。
9、如权利要求1所述的程序挖掘方法,其特征在于,所说的步骤4中分析、选择构件具体包括:
1)构件分析是根据用户需求分析阶段得到程序描述和分解方案,按照相反的顺序自下而上验证分解方案的可行性,从分析构件的功能和依赖关系开始,逐步综合,得到更高抽象层次的构件组合,再进一步分析构件组合之间的关系,最终得到基于构件组装的程序,建立起应用层次和构件层次描述之间的联系;
2)构件选择从两个层次进行:首先对功能相近的构件进行比较分析,综合考虑执行效率,时空开销等因素,对构件进行取舍,以满足用户的实际需要;另外,在更高一个层次上,对于实现相同功能的构件组合,也同样存在比较和取舍问题,确保构件组合在执行过程中不互相影响。
10、如权利要求1所述的程序挖掘方法,其特征在于,所说的步骤5中组装构件包括:在程序挖掘服务器的组装环境中,构件组装代理按照组装方案定义的构件依赖和调用关系,对选定的构件进行连线和组装;在组装过程中,需要根据用户的具体需求调整和设置各个构件的可定制属性,通过事件触发和方法调用将构件连接成一个统一的整体,并自动生成相关的程序代码,完成用户所要求的计算功能。
11、如权利要求1所述的程序挖掘方法,其特征在于,所说的步骤6中程序校验与执行具体包括:
1)程序的校验在以下几个方面进行:组装程序的有效性和可靠性,功能归约的一致性和正确性,构件间依赖关系描述的正确性,以及功能归约到实现转换的有效性;在程序挖掘过程中,从用户需求、程序功能到构件的交互都采用统一的描述方法,程序验证采用软件方法学的自动校验机制进行;
2)在校验完成后,挖掘到的程序经网络传输到客户端系统或网络节点上,在相应系统平台的应用框架上链接、执行,完成所需要的计算功能,在分布式网络中实现按需计算,如果挖掘出的程序不能满足用户的需求,可以通过调整某些中间步骤来优化整个过程,直到为用户挖掘到满足要求的程序。
12、一种采用如权利要求1所述方法的程序挖掘系统,其特征在于,包括连接在本地局域网上的多个设置有构件库的构件服务器、设置有目录信息库的构件目录服务器、设置有知识库的程序挖掘服务器、管理工作站及客户机,该本地局域网通过互连网与异地网络相连;各个服务器上配置有相应的能够代表用户自主完成特定任务的软件实体的智能代理程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 01118354 CN1320874A (zh) | 2001-05-25 | 2001-05-25 | 网络环境下的程序挖掘方法及其程序挖掘系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 01118354 CN1320874A (zh) | 2001-05-25 | 2001-05-25 | 网络环境下的程序挖掘方法及其程序挖掘系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1320874A true CN1320874A (zh) | 2001-11-07 |
Family
ID=4663126
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 01118354 Pending CN1320874A (zh) | 2001-05-25 | 2001-05-25 | 网络环境下的程序挖掘方法及其程序挖掘系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1320874A (zh) |
Cited By (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100437571C (zh) * | 2003-04-25 | 2008-11-26 | 汤姆森环球资源公司 | 分布式搜索方法、体系结构、系统及软件 |
CN100454243C (zh) * | 2006-11-28 | 2009-01-21 | 北京龙阁创意数码科技有限公司 | 基于海量数据的多元动漫产品开发系统和开发方法 |
CN100483422C (zh) * | 2007-11-21 | 2009-04-29 | 中国科学院合肥物质科学研究院 | 用于农业复杂自适应搜索引擎系统的控制方法 |
CN100549949C (zh) * | 2006-07-21 | 2009-10-14 | 石自力 | 一种计算机应用系统的设计系统 |
CN101945122A (zh) * | 2010-08-17 | 2011-01-12 | 江苏金思源电力科技有限公司 | 可组态智能视频监控平台及其监控方法 |
CN101951398A (zh) * | 2010-09-08 | 2011-01-19 | 檀朝东 | 一种工程计算方法、客户端、服务器端及系统 |
CN102073506A (zh) * | 2011-02-24 | 2011-05-25 | 北京中电普华信息技术有限公司 | 一种基于J2EE的Web应用请求处理方法及系统 |
CN102087599A (zh) * | 2011-02-24 | 2011-06-08 | 北京中电普华信息技术有限公司 | 一种基于J2EE的Web应用系统开发方法及装置 |
CN102203730A (zh) * | 2011-05-20 | 2011-09-28 | 华为技术有限公司 | 开放应用程序编程接口选择方法及设备 |
CN102236556A (zh) * | 2011-08-01 | 2011-11-09 | 苏州万图明电子软件有限公司 | 一种软件产品的快速构建方法 |
CN102375734A (zh) * | 2010-08-23 | 2012-03-14 | 中国移动通信集团公司 | 应用产品开发系统、方法、装置和运行系统、方法、装置 |
CN102750144A (zh) * | 2012-05-31 | 2012-10-24 | 华亚微电子(上海)有限公司 | 功能模块的生成工具 |
CN103294755A (zh) * | 2013-02-01 | 2013-09-11 | 税友软件集团股份有限公司 | 一种灵活组装分析方法 |
CN103488100A (zh) * | 2012-06-12 | 2014-01-01 | 苹果公司 | 使用连续选择进行组件组装的方法和设备 |
CN103729385A (zh) * | 2012-10-16 | 2014-04-16 | 阿里巴巴集团控股有限公司 | 一种报表自动更新的方法和装置 |
CN104156202A (zh) * | 2014-05-20 | 2014-11-19 | 杨圣泽 | 一种软件需求分析的方法 |
CN104468785A (zh) * | 2014-12-08 | 2015-03-25 | 上海斐讯数据通信技术有限公司 | 电子设备、服务器设备、数据请求提交方法及处理方法 |
CN104536815A (zh) * | 2015-01-28 | 2015-04-22 | 浪潮通用软件有限公司 | 业务应用间的协同处理方法和系统 |
CN104754280A (zh) * | 2014-04-07 | 2015-07-01 | 惠州Tcl移动通信有限公司 | 选择性地采用高画质多媒体的交流系统 |
CN106790709A (zh) * | 2017-02-28 | 2017-05-31 | 烽火通信科技股份有限公司 | 基于异步化读写的ftp文件传输方法及ftp客户端 |
CN107103540A (zh) * | 2016-02-22 | 2017-08-29 | 易保网络技术(上海)有限公司 | 一种计算机执行的访问保险产品数据结构中的具体数据元素的方法和系统 |
CN107426291A (zh) * | 2017-05-27 | 2017-12-01 | 遵义华宁科技有限公司 | Cdm流程构建系统 |
CN108205466A (zh) * | 2016-12-20 | 2018-06-26 | 北京京东尚科信息技术有限公司 | 计算机函数方法的执行方法和装置 |
CN108280091A (zh) * | 2017-01-06 | 2018-07-13 | 阿里巴巴集团控股有限公司 | 一种任务请求执行方法和装置 |
CN111158676A (zh) * | 2019-12-31 | 2020-05-15 | 山东蚁动网络科技有限公司 | 基于变量传播技术的构件关联性分析方法及设备、介质 |
-
2001
- 2001-05-25 CN CN 01118354 patent/CN1320874A/zh active Pending
Cited By (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100437571C (zh) * | 2003-04-25 | 2008-11-26 | 汤姆森环球资源公司 | 分布式搜索方法、体系结构、系统及软件 |
CN100549949C (zh) * | 2006-07-21 | 2009-10-14 | 石自力 | 一种计算机应用系统的设计系统 |
CN100454243C (zh) * | 2006-11-28 | 2009-01-21 | 北京龙阁创意数码科技有限公司 | 基于海量数据的多元动漫产品开发系统和开发方法 |
CN100483422C (zh) * | 2007-11-21 | 2009-04-29 | 中国科学院合肥物质科学研究院 | 用于农业复杂自适应搜索引擎系统的控制方法 |
CN101945122A (zh) * | 2010-08-17 | 2011-01-12 | 江苏金思源电力科技有限公司 | 可组态智能视频监控平台及其监控方法 |
CN102375734A (zh) * | 2010-08-23 | 2012-03-14 | 中国移动通信集团公司 | 应用产品开发系统、方法、装置和运行系统、方法、装置 |
CN102375734B (zh) * | 2010-08-23 | 2014-05-07 | 中国移动通信集团公司 | 应用产品开发系统、方法、装置和运行系统、方法、装置 |
CN101951398A (zh) * | 2010-09-08 | 2011-01-19 | 檀朝东 | 一种工程计算方法、客户端、服务器端及系统 |
CN102073506A (zh) * | 2011-02-24 | 2011-05-25 | 北京中电普华信息技术有限公司 | 一种基于J2EE的Web应用请求处理方法及系统 |
CN102087599A (zh) * | 2011-02-24 | 2011-06-08 | 北京中电普华信息技术有限公司 | 一种基于J2EE的Web应用系统开发方法及装置 |
CN102203730A (zh) * | 2011-05-20 | 2011-09-28 | 华为技术有限公司 | 开放应用程序编程接口选择方法及设备 |
CN102203730B (zh) * | 2011-05-20 | 2013-10-02 | 华为技术有限公司 | 开放应用程序编程接口选择方法及设备 |
US8839276B2 (en) | 2011-05-20 | 2014-09-16 | Huawei Technologies Co., Ltd. | Open application programming interface selection method and device |
CN102236556A (zh) * | 2011-08-01 | 2011-11-09 | 苏州万图明电子软件有限公司 | 一种软件产品的快速构建方法 |
CN102750144A (zh) * | 2012-05-31 | 2012-10-24 | 华亚微电子(上海)有限公司 | 功能模块的生成工具 |
CN103488100A (zh) * | 2012-06-12 | 2014-01-01 | 苹果公司 | 使用连续选择进行组件组装的方法和设备 |
US10054927B2 (en) | 2012-06-12 | 2018-08-21 | Apple Inc. | Method and apparatus for component assembly using continuous selection |
CN103729385A (zh) * | 2012-10-16 | 2014-04-16 | 阿里巴巴集团控股有限公司 | 一种报表自动更新的方法和装置 |
CN103294755A (zh) * | 2013-02-01 | 2013-09-11 | 税友软件集团股份有限公司 | 一种灵活组装分析方法 |
CN104754280A (zh) * | 2014-04-07 | 2015-07-01 | 惠州Tcl移动通信有限公司 | 选择性地采用高画质多媒体的交流系统 |
CN104754280B (zh) * | 2014-04-07 | 2019-03-01 | 惠州Tcl移动通信有限公司 | 选择性地采用高画质多媒体的交流系统 |
CN104156202A (zh) * | 2014-05-20 | 2014-11-19 | 杨圣泽 | 一种软件需求分析的方法 |
CN104468785A (zh) * | 2014-12-08 | 2015-03-25 | 上海斐讯数据通信技术有限公司 | 电子设备、服务器设备、数据请求提交方法及处理方法 |
CN104536815A (zh) * | 2015-01-28 | 2015-04-22 | 浪潮通用软件有限公司 | 业务应用间的协同处理方法和系统 |
CN107103540A (zh) * | 2016-02-22 | 2017-08-29 | 易保网络技术(上海)有限公司 | 一种计算机执行的访问保险产品数据结构中的具体数据元素的方法和系统 |
CN108205466B (zh) * | 2016-12-20 | 2021-04-30 | 北京京东尚科信息技术有限公司 | 计算机函数方法的执行方法和装置 |
CN108205466A (zh) * | 2016-12-20 | 2018-06-26 | 北京京东尚科信息技术有限公司 | 计算机函数方法的执行方法和装置 |
CN108280091A (zh) * | 2017-01-06 | 2018-07-13 | 阿里巴巴集团控股有限公司 | 一种任务请求执行方法和装置 |
CN108280091B (zh) * | 2017-01-06 | 2022-05-17 | 阿里巴巴集团控股有限公司 | 一种任务请求执行方法和装置 |
CN106790709B (zh) * | 2017-02-28 | 2019-09-17 | 烽火通信科技股份有限公司 | 基于异步化读写的ftp文件传输方法及ftp客户端 |
CN106790709A (zh) * | 2017-02-28 | 2017-05-31 | 烽火通信科技股份有限公司 | 基于异步化读写的ftp文件传输方法及ftp客户端 |
CN107426291A (zh) * | 2017-05-27 | 2017-12-01 | 遵义华宁科技有限公司 | Cdm流程构建系统 |
CN107426291B (zh) * | 2017-05-27 | 2020-03-20 | 贵州华宁科技股份有限公司 | Cdm流程构建系统 |
CN111158676A (zh) * | 2019-12-31 | 2020-05-15 | 山东蚁动网络科技有限公司 | 基于变量传播技术的构件关联性分析方法及设备、介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1320874A (zh) | 网络环境下的程序挖掘方法及其程序挖掘系统 | |
CN1223938C (zh) | 一种构件的封装和一致性访问的方法 | |
CN1176432C (zh) | 提供本国语言查询服务的方法和系统 | |
CN100458777C (zh) | 向用户提供集成帮助信息的系统和方法 | |
CN101127655B (zh) | 集成现有基于万维网的系统的方法和系统 | |
Lopes et al. | An analysis of modularity in aspect oriented design | |
CN1662899A (zh) | 网络服务代理 | |
US20060287937A1 (en) | Generative Investment Process | |
CN101040280A (zh) | 元数据管理 | |
CN102576364A (zh) | 来自一组搜索引擎的搜索结果的聚合 | |
CN1533542A (zh) | 建立财经建议应用的系统和方法 | |
CN1705944A (zh) | 使用对等网络执行自适应搜索的系统和方法 | |
CN1967533A (zh) | 采用元推荐引擎的门户个性化推荐服务方法和系统 | |
CN1755683A (zh) | 上下文动作的发布 | |
CN1808439A (zh) | 网页加入可搜索的深标签及浏览器插件和脚本结合的方法 | |
CN1875344A (zh) | 综合业务软件的导入运用支援系统 | |
US20110264484A1 (en) | Activity-centric granular application functionality | |
JP2004164623A (ja) | 表示データ生成装置、表示データ生成システム、表示データ生成方法、表示データ生成プログラム及び記録媒体 | |
CN1662011A (zh) | 使用元数据定义映射来构建组件应用程序的系统和方法 | |
CN102117331A (zh) | 视频搜索方法及系统 | |
CN114816499A (zh) | 一种电子资源分享方法、装置和存储介质 | |
Ramos-Vidal et al. | A Software Product Line for Digital Libraries. | |
Hassan et al. | Mace: A dynamic caching framework for mashups | |
US20080154937A1 (en) | System and method for generic output management | |
Gilart-Iglesias et al. | A model for developing j2ee applications based on design patterns. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C06 | Publication | ||
PB01 | Publication | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |