一种网络环境下根据用户需求生成软件服务的方法

文档序号:6554832阅读:183来源:国知局
专利名称:一种网络环境下根据用户需求生成软件服务的方法
技术领域
本发明涉及一种为用户提供软件服务的方法,尤其是在网络环境中,根据用户需求,利用软件构件,动态地生成服务程序,完成用户服务按需定制的方法。
背景技术
在传统的软件行业中,一套软件经过软件开发者的设计、开发和测试后,以统一的版本向全社会发布。一套软件的用户可能很多,每个人的需求不尽相同,但是软件开发者不可能考虑到用户的个人需求而为每个用户都提供不同的软件版本。于是,有的用户可能只为使用其中一个很小的功能而不得不去购买包含此功能的庞大软件系统,从而造成资金和资源的浪费;还有一些用户难于找到包含所需功能集合及相应处理流程的软件,只能利用不同的软件完成不同的功能,然后手动按照流程进行处理,从而难以有效地利用软件达成工作的高效。这种情况还有很多,概括来说就是软件用户难以根据自己的需求来获得定制的软件服务,在本发明中,凡是能够独立完成某项功能的应用程序逻辑单元统称为软件服务。
随着Internet(英特网)及其相关技术的发展,到了今天,网络已经成为人们生活中重要的工具,通过网络按需获取信息和网络服务成为人们工作、学习的一部分,于是人们也渴望能够通过网络获取按需定制的软件服务。同时,现代社会工作节奏的加快也进一步加剧了对按需化软件服务的需求。于是,网络成为按需软件服务的最合适的提供途径。
在网络上,现在已经有一些服务提供商开始尝试为用户提供软件服务,现有的方式主要有两种。一.直接为用户提供软件模块的下载服务,用户可以将下载到的模块集成到自己的程序中去。像ComponentSource(http//www.componentsource.com)就是这其中比较具有代表性的网站之一,它将软件模块进行分类组织,然后提供给用户下载。二.为用户提供调用软件服务的接口,从而使用户可以通过Internet来直接使用软件服务或者将其集成到客户端软件中。例如搜索引擎Google(http//www.google.com)为用户提供了搜索服务的Web API,用户可以通过注册来直接使用或进行软件集成。这几种软件服务在不同的时间、面向不同的用户时,提供的是同样的功能和接口,并没有根据用户的需求进行软件服务的个性化和按需化定制。
面对用户的这种需求,软件开发技术有了相应的发展。软件构件和软件复用技术的出现,为软件开发提供了一种新的模式。软件构件是指具有相对独立功能的可复用的软件模块,是软件复用中常用的模块形式,通过软件构件可以实现灵活的功能组合,同时达到软件复用的目的。为了支持软件复用,一些组织和公司纷纷推出自己的构件技术标准。目前,有影响的构件标准有SUN公司提出的Java构件标准JavaBeans、EJB,微软公司提出的COM、DCOM标准以及对象管理组织(OMG)CORBA3.0规范中的CCM标准。Internet上出现了很多遵循上述构件技术标准的专门的构件库。
目前业界对构件的研究主要集中在构件的描述、建模以及构件的组装技术上。清华大学网络系统组提出了一种基于多种异构构件的统一封装和组装技术(参见本申请人的专利ZL200410030654.5和CN200510105239.6),该技术将各种类型构件以统一构件封装件结构(简称UCDL)进行封装,通过设置构件库计算机、构件目录库计算机以及构件组装计算机来完成构件组装。其中,构件库计算机存储的是各种软件构件,构件目录库计算机存储的是构件库计算机中每个构件的UCDL封装件,构件组装计算机提供构件组装平台。构件目录库计算机提供根据构件ID进行构件信息提取和构件封装件下载的服务。当进行构件组装时,首先需要从构件目录库计算机上提取构件封装件并下载到构件组装计算机上,然后在构件组装计算机上完成构件组装。利用这种技术,我们可以更为灵活地对各种类型的构件进行组装。
在目前的实际应用中,软件构件主要被软件开发人员用在软件开发过程中来完成软件系统的开发,并没有面向终端用户需求的软件定制技术方案出现。

发明内容
针对现有技术不能提供面向终端用户的按需软件服务的问题,本发明基于UCDL封装件及其组装技术,提出了一种在网络环境下,根据用户需求生成软件服务的方法。
本发明的特征在于,所述方法依次含有以下步骤步骤(1)服务器端的需求分析计算机上定义一个构件领域信息表,其中,构件是指具有相对独立功能的可复用的软件模块;构件领域是指共享某种功能的软件系统或应用程序的集合,以下简称领域,每个构件都有自己所属的构件领域;所述的构件领域信息表包括领域ID、功能关键词表、领域功能描述和领域构件信息,其中,领域ID是构件领域的唯一标识,用于组织、存储和提取构件领域,功能关键词表存放的是代表该领域所具有的功能的关键词,其中包括了一个功能近义词表,存放的是与功能关键词意思相近的近义词;领域功能描述用于提供该领域功能特性和描述;领域构件信息则存放属于该领域的构件的ID,用于提取属于该领域的构件的信息及构件封装件;步骤(2)客户端启动,用户以功能关键词为首选,功能近义词为次选的文字形式向客户端输入对所需要的软件服务的描述,客户端把该软件服务的描述发送给服务器端的需求分析计算机;步骤(3)需求分析计算机按以下步骤对接收到的用户软件需求的文本进行领域分析,提取出与用户需要的功能相关的构件领域步骤(3.1)若用户需求文本已经为空,转步骤(3.7);否则,找出构件领域信息表中功能关键词和功能近义词中最长的一个词的字长;步骤(3.2)比较步骤(3)中所述的用户需求文本字长与步骤(3.1)中所述的功能关键词和功能近义词中最长的一个词的字长若整个用户需求文本的字长大,则从用户需求文本中从开头顺序按步骤(3.1)中所述的字长取出一个字符串;若整个用户需求文本的字长等于或小于功能关键词和功能近义词中最长的一个词的字长,则把整个用户需求文本作为字符串取出;步骤(3.3)遍历构件领域信息,把当前取出的字符串与功能关键词比较,当与某一功能关键词匹配时,则结束遍历,转到步骤(3.5);否则,转下一步骤;步骤(3.4)遍历构件领域信息,把当前取出的字符串与功能近义词比较,当与某一功能近义词匹配时,则结束遍历,转入下一步骤;否则转步骤(3.6);步骤(3.5)把匹配成功的功能关键词或功能近义词所在的构件领域的标识ID作为用户需求构件领域之一,选入一个保存领域ID的词表记录下来,然后,从用户需求文本开头去掉匹配成功的字符串,转入步骤(3.1);步骤(3.6)步骤(3.4)中所述的匹配不成功,则判断步骤(3.1)中所述字长是否为1若为1则把用户需求文本中的开头第一个字去掉,转入步骤(3.1);若非1则把当前取出的字符串的末尾一个字去掉,转步骤(3.3);步骤(3.7)用户需求文本为空,得到了用户软件服务的所需领域的ID,领域分析结束;步骤(4)如果提取到的构件领域为空,则说明没有与用户软件服务需求相关的构件领域,这时需求分析计算机向客户端的用户发送失败信息,用户需要重新输入软件服务的需求描述;如果构件领域提取成功,需求分析计算机根据步骤(3)得到的用户需求相关的领域ID,提取各个领域包含的领域构件ID,并从所述服务器端的构件目录库计算机中提取对应的至少包括构件功能描述和构件接口信息在内的构件封装件信息,并把这些信息以所在领域分类组织后,作为备选的构件信息发送给客户端;
步骤(5)客户端在接收到步骤(4)所述的备选的构件封装件信息后,以领域为目录把各自领域的构件封装件信息展现给用户,以使用户据此选择自己所需要的构件封装件;步骤(6)在用户对构件进行了选择之后,客户端把用户选择的构件以图形化的方式显示出来,对构件的调用接口和被调用接口以不同的图标来表示;在用户根据需要对构件的接口进行连接之后,客户端再对用户的方案进行连接的有效性验证,形成XML格式的构件连接方案发送给服务器端的需求分析计算机;步骤(7)需求分析计算机把步骤(6)所述的构件连接方案发送给所述服务器端的构件组装计算机;步骤(8)该构件组装计算机对收到的用户构件连接方案进行分析,从所述服务器端的构件目录库计算机中提取相关的组装用的构件封装件,生成XML文档格式的组装运行脚本,解释该运行脚本,再利用提取到的构件封装件进行构件组装,生成用户需要的服务程序;步骤(9)该构件组装计算机再把组装好的程序通过所述需求分析计算机发送给客户端的用户;采用本发明中从用户需求到软件构件的映射,进而生成软件服务的方法,用户可以根据自己需要的程序功能来进行软件服务的定制,与传统的软件发布和使用方式相比,提高了软件服务的灵活性和面向用户的个性化程度,方便了用户的使用。


图1是本发明的系统示意2是本发明中构件领域信息表示结构3是本发明中用户需求领域分析流程4是本发明中客户端和服务器端的交互流程5是本发明中构件图形化示意6是本发明中构件连接方案XML文档结构图7是本发明中组装运行脚本的文档结构图具体实施方式
下面参照图示对本发明进行详细说明。
图1描述了本发明的系统示意图,有多个客户端102和提供按需软件服务的服务器端103共同位于一个计算机网络101上。其中,服务器端包括需求分析计算机104和组装系统105,组装系统又分为构件组装计算机106、构件目录库计算机107和构件库计算机108。用户通过客户端和服务器端的需求分析计算机进行交互109来获取按需的软件服务(详见图4说明)。在这个过程中,需求分析计算机104根据对用户需求的分析向构件目录库计算机107发送相关构件信息请求110,在收到构件信息111后将其作为备选构件信息返回给用户进行选择。用户对构件选择后,在客户端上以图形化的方式对选择的构件进行连接,将结果发回给需求分析计算机104,需求分析计算机将用户构件选择和连接方案112发送给构件组装计算机106,构件组装计算机106向构件目录库计算机107发送构件封装件提取请求113,构件目录库计算机107将请求的构件封装件集合114返回给构件组装计算机106进行组装,组装完成后将组装结果115返回给需求分析计算机104,然后通过交互109将组装结果返回给用户。其中构件目录库中的封装件集合是通过向构件库计算机提取构件信息116并进行UCDL封装后组织形成的。
本发明根据用户需求生成软件服务的方法主要包括以下步骤1.客户端启动,用户以文字的形式输入对所需要的软件服务的描述,客户端将其发送给服务器端的需求分析计算机;2.需求分析计算机对接收到的用户需求进行分析,确定与用户需求相关的构件领域;3.需求分析计算机从构件领域信息表中提取上一步确定的构件领域中包含的构件信息,从目录库计算机中提取这些构件的构件封装件信息,和构件领域信息一起发送给客户端;4.客户端将构件封装件信息以所属的构件领域分类呈现给用户,用户根据相关信息对自己需要的构件进行选择;5.客户端将用户选择的构件以图形化方式显示出来,对构件的调用接口和被调用接口以不同的图标表示;用户根据需要对构件的接口进行连接;客户端对用户的连接方案进行连接的有效性验证后,形成XML格式的连接方案发送给服务器端的需求分析计算机;6.需求分析计算机将用户的构件连接方案发送给构件组装计算机;构件组装计算机对用户连接方案进行分析,从构件目录库计算机提取相关的构件封装件,生成组装的运行脚本,此处的运行脚本采用XML文档的格式;构件组装计算机解释执行运行脚本,利用提取到的构件封装件进行构件组装,生成用户需要的服务程序;7.构件组装计算机将组装好的程序通过需求分析计算机发送给客户端用户;上述根据用户需求生成软件服务的步骤1中,用户以文字的形式输入自己的服务需求时,尽量围绕需求的功能描述展开,用功能上的关键词来表述需求可以使得服务器端对需求的分析更为准确;用户需求输入确认之后,客户端将用户的需求文本以明文的方式、基于TCP/IP协议发送给服务器端的需求分析计算机。
上述根据用户需求生成软件服务的方法中,步骤2-3完成了用户需求与软件构件的映射。本发明中使用构件领域作为用户需求和软件构件之间的桥梁,这里的领域是指共享某种功能特性的系统或应用程序的集合,每个构件都有一个适用的领域,我们称之为构件领域。在本发明中,通过对用户需求的分析,首先提取出用户功能需求相关的领域,然后根据领域信息来提取对应的软件构件。
下面介绍用户需求到软件构件映射的具体实施方法。
如图2,本发明定义了一个构件领域信息表示结构图,构件领域信息用来辅助完成用户需求领域的分析。每个构件领域描述201包括领域ID 202,功能关键词表203,领域功能描述204和领域构件信息205三部分。领域ID是每个构件领域的唯一标识,用来组织、存储和提取构件领域。功能关键词表中存放的是代表该领域具有功能的关键词,其中包括一个功能近义词表205,存放的是与功能关键词意义相近的那些词,通常来说,每个领域的功能关键词有3-5个,而每个功能关键词又有多个近义词。领域功能描述用来提供该领域功能特性的描述。领域构件信息存放属于该领域的构件的ID,主要用来提取属于该领域的构件的信息及构件封装件。每个构件领域都通过图2中的结构进行描述,所有构件领域的领域信息形成一个领域信息表存放在服务器端的需求分析计算机上。
领域信息表是随着构件的增多而逐步建立起来的,最初只是一个空的表,每当构件目录库计算机中增加一个构件封装件时,就需要根据构件的功能在需求分析计算机上其所属的领域信息中将构件ID添加到领域构件信息,并根据需要添加功能关键词和功能近义词;如果需求分析计算机上没有相关的领域,则需要在领域信息表中新建相关领域,并设置领域描述中的各项值。
利用构件领域信息表,我们就可以进行用户需求的领域分析,图3给出了步骤2中用户需求领域分析流程图,主要包括如下步骤2.1.接收到用户需求301后,设置一个字符串变量String来保存用户需求,并新建一个词表Domain来记录要提取的构件领域(用领域ID表示)302;2.2.设置一个整数Len,将其赋值为领域信息表里所有领域的功能关键词和功能近义词中长度最长的词的字长303;2.3.从String中顺序(从左到右)取出长度为Len的字符串赋给Str,如果String的长度小于或等于Len,则将String赋给Str 304;这时判断Str是否为空305,如果Str为空,则完成了对用户需求字符串的领域分析,所得到的领域词表Domain即为用户需求的领域分析结果306,分析结束;如果Str不为空,则进入下一步;
2.4.遍历构件领域信息表,将Str与每个领域的功能关键词进行匹配,如果Str与某个功能关键词相同则遍历终止,否则就要遍历完所有领域才能终止307,遍历终止时的情况决定下一步的动作308;如果Str与功能关键词匹配成功,则认为Str所代表的功能的构件领域已经找到,转步骤6;如果匹配不成功,则进入下一步;2.5.重新遍历构件领域信息表,进一步将Str与各领域的功能近义词进行匹配,与第一次遍历类似,当匹配成功或遍历完所有领域后遍历终止310;然后根据遍历终止时的情况来进行下一步动作311,如果Str与功能近义词匹配不成功则转步骤7;如果匹配成功则进入下一步;2.6.将匹配成功的功能关键词或功能近义词对应的构件领域的领域ID添加到Domain中,将String中的Str部分去掉,然后将Str置为空309,转步骤2;2.7.步骤312判断当前的Len值是否等于1,如果Len值为1,则将String开头第一个字去掉,置Str为空313,转步骤2;如果Len值不是1,则将Len值减去1314,这里减1是为了缩短字长,与更小字长的功能关键词或功能近义词进行匹配,转步骤3;经过上面的分析过程,Domain里就保存了一系列构件领域的领域ID,这些领域ID代表的就是与用户需求相对应的构件领域。
用户领域分析主要是一个将用户需求字符串中顺序预取的可能的功能词汇与领域功能关键词和功能近义词进行匹配的过程。由于每个领域的功能关键词比较少,而功能近义词比较多,所以我们设计的是一个两层匹配的方法,当与功能关键词匹配成功时就可退出当前的匹配过程,如果不成功则需要进行与功能近义词的匹配。功能关键词是表示构件领域功能的最准确和通用的词,多数情况下,用户都是用功能关键词来表述自己的需求,通过两层匹配的方法,可以减少与功能近义词的不必要的比较,从而提高分析的效率。
通过用户需求领域分析我们得到了用户功能相关的构件领域,然后对这些构件领域的领域描述进行遍历,就可以提取到这些构件领域中的领域构件信息,这里的构件信息指的是构件ID。构件ID可以唯一地对构件进行标识,从而我们可以根据构件ID提取出相关的构件封装件信息,实现用户需求到软件构件的映射,完成了上述根据用户需求生成软件服务方法的步骤2-3的任务。
上述根据用户需求生成软件服务方法的步骤4-7中,通过和用户交互完成了利用提取到的构件生成用户需要的软件服务的过程,下面结合图4中描述的本发明的整个工作流程介绍一下生成软件服务的具体实施方法。
用户通过客户端410和服务器端420的交互来获取按需软件服务的。用户启动客户端411,开始进行按需软件服务的定制。
首先,在客户端上,用户以文字形式输入所需要的软件服务的描述,客户端将其发送给服务器端的需求分析计算机412。需求分析计算机对用户需求进行领域分析,提取出与用户功能需求相关的构件领域421;如果提取到的构件领域为空,则说明没有与用户需求相关的领域,向客户端的用户发送失败信息,用户需要重新输入自己的服务需求;如果提取成功,则从这些领域中得到相关构件的构件ID。
需求分析计算机利用获取到的构件ID从构件目录库计算机中提取对应的构件封装件信息,这里的构件封装件信息主要包括构件功能描述、构件接口信息等,需求分析计算机将这些构件封装件信息以所属的领域进行分类组织后,作为被选构件信息发送给客户端423。
客户端在接收到备选的构件封装件信息后,以领域为目录将各自领域内的构件封装件信息展现给用户,其中每个构件都有一个选择框,从而使用户可以根据构件功能描述和接口信息来选择自己需要的构件封装件413,如果用户对构件提取结果不满意,则可以返回到上一步重新进行服务需求的输入412。
在用户对构件进行了选择之后,客户端将用户选择的构件以图形化的方式显示出来,并给用户提供手动连接构件的功能。这里,客户端根据用户选择的构件封装件的信息,特别是构件封装件的接口信息,将所要组装的构件及其外部接口以图形化的方式显示出来,如图5所示,一个构件501可以用一个图标来显示,图标上标有构件名称,图标内部从上到下顺序列出构件的各个接口,并根据接口信息并在各个接口旁标上连接线和连接点,入口(即被其它构件调用的接口)502和出口(即调用其它构件的接口)503的连接线和连接点采用不同的标注方式。
当把用户选择的各个构件图形化显示出来之后,用户就可以根据自己的需要,通过查看相关构件的接口信息来连接各个构件,连接的起点必须是某构件出口的连接点,终点是另一构件入口的连接点,用户通过拖拽的方式进行连接,客户端根据用户的操作自动为用户生成连接线。
当用户完成所有连接后,客户端对用户的连接方式进行有效性验证,这里的验证主要是根据构件的接口信息来判断接口之间的调用交互关系是否正确,如果不正确则向用户提示错误,用户需要重新进行连接的调整,如果验证通过,客户端则将用户连接的方案发送给服务器端的需求分析计算机414。
用户的构件连接方案是一个描述各个构件接口之间连接关系的XML文档,图6给出了这个XML文档的结构,文档以<Scheme>为起始的根元素601,每个连接方案涉及多个构件元素<Component>602,每个构件有标识自己ID的元素<Id>603和各接口信息的元素<Interface>604,接口信息元素包括若干个构件接口元素<Unit>605,接口元素中包括了各构件接口的描述和连接关系,其中,<UnitId>是接口的ID,用来标识一个构件的接口606,<UnitType>表示一个接口的类型(包括只是出口、只是入口和既是出口又是入口三种类型)607,<PreCom_Unit>表示与这个入口相连的构件和接口(出口)608,用“构件ID接口ID”来表示,当此接口不是入口时,此项为空,<PostCom_Unit>表示与这个出口相连的构件和接口(入口)609,同样用“构件ID接口ID”来表示,当此接口不是出口时,此项为空。通过上面的XML文档,服务器端可以很清楚地了解用户的连接方案。
需求分析计算机在收到用户的构件连接方案后转交给构件组装计算机424,构件组装计算机对用户的构件连接方案进行分析,从中提取连接方案中涉及的构件信息以及各个构件之间连接调用的关系,并根据需要向构件目录库计算机提取构件封装件和相关信息,生成本连接方案的组装运行脚本。
组装运行脚本采用XML文档的方式,结构如图7所示,<RunningScript>701是文档的根元素,脚本由构件声明<Components>部分702、接口连接关系定义<Links>部分707和构件组装控制流程定义<Process>部分711组成,每一部分的内容如下1.构件声明<Components>部分描述所要组装的构件,包括对构件ID、构件名以及构件接口的描述,由一个或者多个<Component>元素703组成,每个<Component>元素标识一个构件的声明,它包括id和name两个属性,前者是构件的唯一标识符,后者是构件的名称,在整个运行脚本中可以使用该名称引用此构件,<Component>元素包含一个或者多个<Interface>元素704,<Interface>元素用来标识该构件在组装过程中要使用的接口声明,其子元素<InputMessage>705和<OutputMessage>706则分别标识了该接口的输入输出消息;2.接口连接关系定义<Links>部分定义在组装过程中不同构件接口之间的连接关系,包含一个或者多个<Link>元素708,每个<Link>元素定义了两个构件之间接口的连接关系,<Link>元素的name属性是组装脚本中对该Link引用的唯一标识符,每个<Link>元素下,进一步包含<From>709和<To>710两个子元素,分别代表该连接的源接口(出口)和目的接口(入口),每个接口用“构件ID接口ID”形式表示。
3.构件组装控制流程定义<Process>部分定义构件的执行流程,描述构件之间的组装关系,包括对构件调用顺序以及构件之间的消息传递的定义,<Process>包括了表示各种基本活动的子元素,其中,<Sequence>元素712定义一组构件之间的顺序执行关系,一个Sequence控制流包含一个或多个按顺序执行的活动,在组装过程中,脚本解释程序将按照这些活动在<Sequence>元素中被列出的先后次序,顺序执行这些活动;<Invoke>元素713调用某个构件的接口,<Invoke>元素的两个属性Component和Interface,进一步指明所要调用的构件ID和该构件的接口ID;<Switch>元素714定义一组构件之间的分支执行关系,一个Switch控制流包含一个或多个Case元素组成的有序列表和最后可选的Otherwise分支,每个Case元素定义了一个条件分支,执行时以Case分支的出现顺序来测试其条件,被满足的第一个分支被执行,如果所有Case分支的条件都未被满足,那么Otherwise分支将被执行,当被选的分支中的活动完成后,该Switch控制流结束;<While>元素715定义一组构件之间的循环执行关系,While控制流实现循环,它执行重复的活动直到给出的While循环条件不再被满足;<Flow>元素716定义一组构件之间的并发执行关系,Flow控制流中所包含的一组活动在运行脚本解释执行中将被并发地执行,当Flow中的所有活动完成时,Flow控制流结束;从用户的构件连接方案到组装运行脚本转化过程如下1.写入运行脚本文件的头信息。
2.遍历用户构件连接方案文档,根据构件ID从构件目录库计算机上提取每个需要的构件封装件信息;3.从提取到的封装件信息中抽取构件名和接口类型描述等信息,按照运行脚本所定义的结构,填入到运行脚本中构件声明所对应的文档结构<Components>元素中;4.根据用户构件组装方案中构件接口的连接关系,将有连接的构件接口之间的连接方式按照运行脚本所定义的结构,填入到对应<Links>元素中;5.对所有构件之间的连接关系进行分析,将每个并行执行的构件组合作为并发活动独立出来,将它们分别填入<Flow>元素中,将每个并行的构件组合在用户组装方案中分别作为独立的构件模块对待;6.对经过上述步骤处理过的构件连接方案进行分析,将每个分支执行的构件组合作为分支选择执行活动独立出来,将它们分别填入<Switch>元素中,并根据提取到的详细的接口信息确定其中每个分支活动对应的条件,将每个分支选择的构件组合在用户组装方案中分别作为独立的构件模块对待;7.对经过上述步骤处理过的构件连接方案进行分析,将每个循环执行的构件组合作为循环执行活动独立出来,将它们分别填入<While>元素中,并根据提取到的详细的接口信息确定循环的条件,将每个循环的构件组合在用户组装方案中分别作为独立的构件模块对待;8.经过上述步骤处理之后,用户方案中剩下的应该就是一组顺序执行的序列,将序列中每个构件相应接口的调用都转化为一个invoke活动,将它们填入<Sequence>元素中;通过上面的步骤生成了进行构件组装的运行脚本,接下来就可以对运行脚本进行解释执行,来完成构件的组装,运行脚本的解释执行过程如下1.解释执行构件声明部分。通过<Component>元素中指定的构件id和name属性,将每个涉及到的构件封装件进行初始和实例化,根据<Interface>元素中定义的构件接口描述对相关的接口函数进行声明和初始化,并写入相关的程序文件。
2.解释执行构件接口连接关系部分。<Link>标签中定义了构件之间接口的连接关系,解释程序首先检查接口连接关系是否匹配,接口之间的消息定义是否一致等。如果检查通过,运行脚本解释程序将每个连接关系记录为一个调用,转入下一步解释。否则,运行脚本的解释过程中断,返回组装错误信息。
3.解释执行构件组装控制流程部分。<Process>元素通过定义构件的执行流程来定义构件连接执行的顺序关系,在解释过程中,对不同的执行顺序采用不同的程序语句来组织,每个连接关系用上一步中的相应调用来表示,在这个过程中,要根据构件接口信息为不同类型的接口参数生成相应的变量,用变量在接口之间传递消息。
4.对生成的程序文件进行编译和链接,生成用户需要的程序。在这个过程中如果发生错误,则组装过程中断,返回组装错误信息。
通过用户构件连接方案的分析以及运行脚本的生成和解释执行就完成了用户所需服务的组装过程425,上述的组装脚本生成、解释执行的技术细节参见本申请人的专利ZL200410030654.5和CN200510105239.6。
如果用户服务组装成功,则构件组装计算机将组装好的程序发送给需求分析计算机,如果组装失败,则向其发送组装失败信息426。相应地,需求分析计算机将收到的程序或组装失败信息发送给客户端427。
用户通过客户端来查看从需求分析计算机返回的组装结果,如果组装失败,则用户可以返回上一步重新进行构件的连接,也可以选择退出;如果组装成功,用户可以对获取到的程序进行试用,如果需要对程序进行调整则可以返回上一步调整构件的连接方案,如果对获取到的程序满意,则可以成功退出415。
以上描述的具体实施方式
只是对本发明进行示例,本领域技术人员在不脱离本发明实质性思想的基础上进行各种修改和改进后得到的技术方案,均视为在本发明的范围之内。本发明适当的范围以权利要求书为准进行确定。
权利要求
1.一种网络环境下根据用户需求生成软件服务的方法,其特征在于,所述方法依次含有以下步骤步骤(1)服务器端的需求分析计算机上定义一个构件领域信息表,其中,构件是指具有相对独立功能的可复用的软件模块;构件领域是指共享某种功能的软件系统或应用程序的集合,以下简称领域,每个构件都有自己所属的构件领域;所述的构件领域信息表包括领域ID、功能关键词表、领域功能描述和领域构件信息,其中,领域ID是构件领域的唯一标识,用于组织、存储和提取构件领域,功能关键词表存放的是代表该领域所具有的功能的关键词,其中包括了一个功能近义词表,存放的是与功能关键词意思相近的近义词;领域功能描述用于提供该领域功能特性和描述;领域构件信息则存放属于该领域的构件的ID,用于提取属于该领域的构件的信息及构件封装件;步骤(2)客户端启动,用户以功能关键词为首选,功能近义词为次选的文字形式向客户端输入对所需要的软件服务的描述,客户端把该软件服务的描述发送给服务器端的需求分析计算机;步骤(3)需求分析计算机按以下步骤对接收到的用户软件需求的文本进行领域分析,提取出与用户需要的功能相关的构件领域步骤(3.1)若用户需求文本已经为空,转步骤(3.7);否则,找出构件领域信息表中功能关键词和功能近义词中最长的一个词的字长;步骤(3.2)比较步骤(3)中所述的用户需求文本字长与步骤(3.1)中所述的功能关键词和功能近义词中最长的一个词的字长若整个用户需求文本的字长大,则从用户需求文本中从开头顺序按步骤(3.1)中所述的字长取出一个字符串;若整个用户需求文本的字长等于或小于功能关键词和功能近义词中最长的一个词的字长,则把整个用户需求文本作为字符串取出;步骤(3.3)遍历构件领域信息,把当前取出的字符串与功能关键词比较,当与某一功能关键词匹配时,则结束遍历,转到步骤(3.5);否则,转下一步骤;步骤(3.4)遍历构件领域信息,把当前取出的字符串与功能近义词比较,当与某一功能近义词匹配时,则结束遍历,转入下一步骤;否则转步骤(3.6);步骤(3.5)把匹配成功的功能关键词或功能近义词所在的构件领域的标识ID作为用户需求构件领域之一,选入一个保存领域ID的词表记录下来,然后,从用户需求文本开头去掉匹配成功的字符串,转入步骤(3.1);步骤(3.6)步骤(3.4)中所述的匹配不成功,则判断步骤(3.1)中所述的字长是否为1若为1则把用户需求文本中的开头第一个字去掉,转入步骤(3.1);若非1则把当前取出的字符串的末尾一个字去掉,转步骤(3.3);步骤(3.7)用户需求文本为空,得到了用户软件服务的所需领域的ID,领域分析结束;步骤(4)如果提取到的构件领域为空,则说明没有与用户软件服务需求相关的构件领域,这时需求分析计算机向客户端的用户发送失败信息,用户需要重新输入软件服务的需求描述;如果构件领域提取成功,需求分析计算机根据步骤(3)得到的用户需求相关的领域ID,提取各个领域包含的领域构件ID,并从所述服务器端的构件目录库计算机中提取对应的至少包括构件功能描述和构件接口信息在内的构件封装件信息,并把这些信息以所在领域分类组织后,作为备选的构件信息发送给客户端;步骤(5)客户端在接收到步骤(4)所述的备选的构件封装件信息后,以领域为目录把各自领域的构件封装件信息展现给用户,以使用户据此选择自己所需要的构件封装件;步骤(6)在用户对构件进行了选择之后,客户端把用户选择的构件以图形化的方式显示出来,对构件的调用接口和被调用接口以不同的图标来表示;在用户根据需要对构件的接口进行连接之后,客户端再对用户的方案进行连接的有效性验证,形成XML格式的构件连接方案发送给服务器端的需求分析计算机;步骤(7)需求分析计算机把步骤(6)所述的构件连接方案发送给所述服务器端的构件组装计算机;步骤(8)该构件组装计算机对收到的用户构件连接方案进行分析,从所述服务器端的构件目录库计算机中提取相关的组装用的构件封装件,生成XML文档格式的组装运行脚本,解释该运行脚本,再利用提取到的构件封装件进行构件组装,生成用户需要的服务程序;步骤(9)该构件组装计算机再把组装好的程序通过所述需求分析计算机发送给客户端的用户。
全文摘要
本发明涉及一种在网络环境下根据用户需求生成软件服务的方法,其特征在于,包括以下步骤用户通过客户端提交服务需求;服务器端分析用户需求,提取用户需要的功能及相关软件构件领域,获取这些领域中所有构件的信息并发送到客户端;用户查看返回的构件信息,选择自己所需的构件,利用客户端提供的图形化工具对这些构件的接口按需进行连接;客户端将用户的连接方案形成XML文档发送到服务器端;服务器端根据用户的连接方案生成组装运行脚本、提取构件统一封装件,然后解释执行运行脚本完成软件服务组装,最后将生成的服务程序返回给客户端用户。本发明可实现从用户需求到软件构件的映射,进一步生成相应的软件,从而实现按需的软件服务。
文档编号G06F17/30GK1845069SQ200610011940
公开日2006年10月11日 申请日期2006年5月19日 优先权日2006年5月19日
发明者张尧学, 田鹏伟, 方存好, 钟鸣, 徐广斌 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1