自动构建应用的设备和方法

文档序号:6468014阅读:141来源:国知局

专利名称::自动构建应用的设备和方法
技术领域
:本发明涉及应用的设计,并且更具体地涉及用于根据现用(off-the-shelf)软件组件来构建应用的方法和设备。
背景技术
:按照在面向对象以及基于组件的应用开发范围中被用作参考的可接受的定义,术语"设计"在此表示应用的一个阶段,该阶段在代码之上的逻辑层描述应用将如何实现。对于设计而言,进行策略性和战术性决策,以便满足应用所需的功能性需求和质量需求。按照例如GradyBooch在其著作"Object-OrientedAnalysisandDesignwithApplication,,,第三版,Cased,Addison画Wesley(2007),ISBN9780201895513中进行的描述,此阶段的结果由设计级模型(静态视图、状态机视图以及交互视图)来表示。设计活动得到了应用的架构,其是该应用的组织结构,包括其到软件组件的分解、这些软件组件之间的连接、交互机制、以及通告应用设计的指导原理。已经有多个作者描述了若干种方法来指导基于(软件)组件的应用的构建,但是这些方法有两个主要的缺点这些方法是全手工的,并且找到和装备正确组件的过程不是从将要构建的应用的说明书直接得出的,该说明书描述了应用必须满足的功能性和非功能性需求。
发明内容本发明的目的是提出一种新方法及对应设备,其意在借助于对应用说明书的语义分析并通过考虑应用设计(也即,解的架构)可以根据应用说明书的文本中所表达的需求之间的关系(也即,问题的架构)得出,从而根据现用软件组件来自动构建应用。为此目的,提供了一种根据说明书和("现用")软件组件来构建应用的方法,该方法包括每当接收到描述将要构建的应用的说明书时,-执行对说明书的语义分析,以便从说明书文本中提取基本需求以及这些基本需求之间的链接,以下将这些链接的集合称为"说明书的总体结构",继而-针对每个基本需求,提取其所包含的相关术语,并且针对每个基本需求,基于其提取的相关术语来构建"语义描述"并且该"语义描述"表示了"该基本需求的语义",继而-访问至少一个组件库(repository),其中,每个组件注册和描述为"语义软件组件"(这意味着每个组件与包括至少一个相关术语的用于定义该软件组件能够执行的每个公共操作的"语义描述"相关联),以便针对每个提取的基本需求,通过对该基本需求的语义与组件语义描述进行比较,来确定哪个(哪些)组件能够覆盖所述提取的基本需求,以及-最终按照说明的总体结构来组装这些确定的软件组件,以便构建应用。因此,可以将语义描述与基本需求以及软件组件相关联-确定基本需求的语义描述,并将其与基本需求本身的文本(也即,构成基本需求的表达的语句)相关联;-确定软件组件的语义描述,并将其与该组件能够执行的公共操作相关联,这将在下文描述。根据本发明的方法可以包括单独的或者组合的附加特性,并且具体地-软件组建的至少一些语义描述可以包括i)软件组件能够执行的操作的目标,ii)至少一个领域标识符,其指明了一个领域,其中描述操作目标以及该操作的输入/输出参数的术语定义在该领域,以及iii)与这些输入/输出参数相关联的相关术语和/或特定元数据;-针对每个提取的基本需求,可以确定其语义描述与每个所存储的软件组件的语义描述之间的距离,继而可以选择对应于最小语义距离的存储的软件组件,由此该选择的软件组件意在实现基本需求;-可以将词语的主n-uplet(例如,同义词,此后一寻n-uplet称为"syn-uplet")与基本需求的每个相关术语相关联,此后将syn-uplet称为"req-uplet";通过相同方式,还可以将syn-uplet与每个软件组件的每个公共操作的目标的每个相关术语相关联,此后将该syn-uplet称为"comp-uplet",并且可以对这些req-uplet中的每一个与这些comp-uplet中的每一个进行比较,以确定每个基本需求与每个存储的软件组件之间的语义距离;>可以确定语义4矣近禾呈度,其表示每个req-uplet和每个comp-uplet共同词语的数目,以及,针对每个基本需求,可以构建次n-uplet,其例如称为"sem-uplet",并且其表示每个req-uplet与每个comp-uplet的req-uplet之间的i吾义才妄近牙呈度,每个次n-uplet定义语义距离,继而可以选才奪与定义最小语义距离的次n-uplet相对应的存储的软件组件;-可以在与提取的基本需求相对应的、所选择的存储的软件组件之间建立与定义说明书总体结构的那些链接相同的相关链接,以便优化应用的结构;-确定说明书的该总体结构,可以确定语义接近程度,其表示每对基本需求的req-uplet的共同词语的数目,并且针对每个基本需求,可以构建次n-uplet(所述"sem-uplet"),其包括其req-uplet和其他基本需求的req-uplet之间的语义4妄近程度,每个sem-uplet定义语义距离,继而可以在两个不同基本需求的sem-uplet值最大时在这两个不同基本需求之间建立相关链接。本发明还提供一种用于根据说明书和软件组件来构建应用的设备,该设备包括-存储装置,用于存储语义软件组件,每个语义软件组件由与语义描述相关联的软件组件构成,所述语义描述包括用于定义该软件组件能够执行的每个公共操作的至少一个相关术语,8-分析装置,其被设置为每当接收到描述将要构建的应用的说明书时,i)执行对该说明书的语义分析,以便从说明书文本4是取基本需求以及这些需求之间的链接,以下将这些链接的集合称为"说明书的总体结构",继而ii)用于针对每个基本需求,提取其所包含的相关术语,以及,针对每个基本需求,基于其提取的相关术语来构建"语义描述",该"语义描述"表示"该基本需求的语义",继而iii)用于访问存储装置,以便针对每个提取的基本需求,通过对该基本需求的语义与组件语义描述进行比较,来确定(选择)哪些组件能够覆盖该提取的基本需求,以及-处理装置,用于按照说明书的总体结构来组装所确定的软件组件,以便构建应用。根据本发明的设备可以包括单独的或者组合的附加特性,并且具体地-分析装置可被设置为用于针对每个提取的基本需求,确定其语义描述与每个所存储的软件组件的语义描述之间的距离,继而用于选择与最小语义距离相对应的存储的软件组件,由此该选择的软件组件意在实现该基本需求;-分析装置可被设置为用于将词语的主n-uplet(例如,同义词,此后将该n-uplet称为"syn-uplet")与基本需求的每个相关术语相关联,此后将该syn-uplet称为"req-uplet";以及用于将这些req-uplet中的每一个与每个comp-uplet(与每个软件组件的每个公共操作的目标的每个相关术语相关联的syn-uplet)进行比4交,以确定每个基本需求与每个存储的软件组件之间的语义距离;>分析装置可被设置为i)用于确定语义接近程度,其表示每个req-uplet和每个comp-uplet的共同词语的凄史目,ii)用于4十对每个基本需求构建次n-uplet,其例如称为"sem-uplet,,,并且表示每个req画uplet与每个comp-uplet的req-uplet之间的i吾义才妄近程度,每个次n-uplet定义语义距离,以及iii)用于选择与定义最小语义距离的次n-uplet相对应的存储的软件组件。-处理装置可被设置为用于在与提取的基本需求相对应的、所选择的存储的软件组件之间建立与定义说明书的总体结构的那些链接相同的相关链接,以便优化应用的结构;-为了确定说明书的总体结构,分析装置可被设置为i)用于确定语义接近程度,其表示每对基本需求的req-uplet的共同词语的数目,ii)用于针对每个需求,构建次n-uplet(或者"sem-uplet,,),该次n-uplet包括针对的基本需求的req-uplet和其他基本需求的req-uplet之间的语义接近程度,每个sem-uplet定义了语义3巨离,继而用于在两个不同基本需求的sem-uplet值最大时在这两个不同基本需求之间建立相关链接。在阅读此后的详细说明以及附图时,本发明的其他特征和优点将变得易见,其中,图1示意性地示出了根据本发明的设备的实施方式的示例。附图不仅可以用来使本发明完整,如果需要,其还可以对本发明的定义有所贡献。具体实施例方式本发明旨在提供一种这样的设备及关联方法,其意在通过使用现用软件组件、根据应用说明书的文本来自动地构建应用。本发明适用于由说明书所描述的任意类型的应用,并且可以通过现用软件组件的组装来构建所述应用。术语"应用"在此表示一组互相关联的(软件)组件,每个组件都具有功能性,所述功能性表示为至少一个公共功能(称之为操作)的集合,并且所述功能性封装和管理其自己的数据。该定义是从面向对象得出的组件范式,并且是当今的开发标准。此外,表述"现用软件组件,,在此表示一段旨在实现某个精确的基本功能(即,功能性的原子)的可执行代码,所述基本功能诸如文10件管理机制、数据库访问、GUI显示机制、文本翻译、转换模块、根据URL读取HTML页面、用于文本处理的基本功能、等等。如图l示意性示出的那样,根据本发明的设备D至少包括存储装置SM、分析模块AM以及处理模块PM。存储装置SM意在至少存储语义软件组件SSC。每个语义软件组件SSC由与语义描述SD相关联的软件组件SC构成。表述"软件组件的语义描述"在此表示包括至少一个相关术语的描述,所述相关术语定义了关于关联软件组件SC能够执行的公共操作(或功能)的目标。优选地,该目标简单地通过自然语言形式(也即,利用相关术语)来表示,并且清晰地描述组件SC实际做什么、其功能是什么、以及其操控什么数据(也即,其操作的输入/输出)。优选地,每个组件的语义描述(例如,称为"语义卡")SD还包含至少一个领域标识符,该领域标识符指明了一个领域,其中用于描述每个操作的术语定义在该领域。例如,某个软件组件的每个语义描述SD是XML表示,其中利用三个主要属性来描述输入和输出数据-数据名称(或者标识符);-与该数据相关联的概念(或者相关术语),其表示为对在外部本体(ontology)中或者在外部字典或词典中被定义为类的概念的引用,以便规定数据的语义。这里,本体例如表示组件SC所适用的领域,并且其名称在语义卡的头部中给出;以及-该数据的语义标签(例如称为"semTag"),其表示语义数据类型的原型,并且规定数据的特性。该semTag将有助于确定和优化组件间的交互,下文将对此进行讨论。可以使用能够存储语义软件组件SSC的、本领域技术人员已知的任何类型的存储装置SM,特别是数据库、闪存、ROM或者RAM、平面文件系统以及任何其他类型的库。分析模块AM被部署为在每次其设备D接收到描述将要构建的应用AP的说明书AS时进行干预。表述"应用说明书"在此表示定义了希望的应用应当实现的至少一个需求的至少一个语句。更准确地,应用需求描述了应用AP将做什么以及其功能性和非功能性特征是什么。优选地,这些需求通过自然语言来表达,但是其可以通过任何形式化或者非形式化的文本表示的形式来表达。每当接收到应用说明书AS时,分析模块AM意在用于-执行对接收到的应用说明书AS的语义分析,以便>例如借助于语法分析器从说明书AS的文本中提取基本需求SR以及这些基本需求SR之间的链接,以下将这些链接的集合称为"说明书的总体结构(或者逻辑组装)",继而>针对每个基本需求SR,提取其所包括的相关术语,并且针对每个基本需求SR,基于其提取的相关术语来构建"语义描述",该"语义描述"表示"该基本需求的语义",继而-访问存储装置SM,以便针对每个提取的基本需求SR,通过对该基本需求SR的语义与组件语义描述SD进行比较,来确定哪个(哪些)组件能够覆盖所述提取的基本需求SR。重点注意,分析模块AM可以划分为两个子模块,第一子模块用于执行语义分析,以及第二子模块用于在存储装置(或者组件库)SM中确定哪个(哪些)组件能够覆盖第一子模块提取的基本需求SR。换言之,分析模块AM确定表示基本需求SR的每个语句的含义(也即,其语义),并且按照适当的可计算的数据结构来表示它。思想是通过适当的语义数据结构来对功能性的每个语义原子进行标记,以便稍后将该结构与所存储的软件组件SC的等效语义数据结构进行比较,以确定哪个组件能够覆盖哪个(基本)需求SR。实际上,可以对每个语句(需求的原子)进行评价和标记,以便接收其自己的语义数据。重点注意,该过程不同于基于本体的需求分析方法,在基于本体的需求分析方法中,软件需求分析方法是基于领域本体技术,其中可以在软件需求说明书与若干领域本体之间建立映射。注意,本体是对在给定领域内操控的概念以及这些概念之间的关系的形式化描述。在本发明中,没有使用外部本体来帮助需求分析,因为语义是从文本本身中提取的。优选地,利用精确的规则来定义操作目标的语义,所述规则例如以下-使用特定的词语、通过自然语言来表达目标;-这些特定词语属于"概念列表",该"概念列表"嵌入在语义卡SD中,并且总结了用于书写目标的相关词语;以及-这些"概念列表,,例如可以在语义卡SD中引用的外部本体中(也即在相关领域的形式化描述中)描述,或者可以是对外部字典或者词典的定义的简单引用。这种规则有助于书写简捷、明了的操作目标。下面给出与RSS-feed-accessor(RSS源存取器)组件相关联的语义卡SD的非限制性示例<semGard><URL>http:〃xxx.xx.xxx.x/components/RSS/RSS一Component.asmx</URL>〈componentname="RSS"><domains>〈domainname="RSS">〈conceptslist="RSS,RSS—feed,URL,news"/></domain><domainname="News"〉<conceptslist="news,title,titles,description,article,text,NewsAgency"/></domain></domains><operationname="getAllTitles"><goal>DeliverthetitlesofallthenewsoftheRSSfeedaddressedbyagivenURL.</goal〉<inputs><inputname="URL—RSS"concept="RSS#URL"semTag="URL"/></inputs〉〈outputname="titles"concept="News#title"semTag-"text"/></operation〉<operationname="getDescriptionOfTitle"><goal〉DeliverthedescriptionofthetitleofonenewsoftheRSSfeedaddressedbyagivenURL.</goal><inputs〉<inputname="URL—RSS"concept="RSS#URL"semTag="URL"/><inputname="title"concept="News#title"semTag="short—text"/〉</inputs>〈outputname="description—of—title"concept="News#description"semTag="text"/></operation></componcnt〉</semCard>。需求SR的相关术语的逻辑组装(或者总体结构)包含在相关术语之间的相关链接以及其间的逻辑顺序中。例如,在语句"应用必须访问互联网,以根据文件'Parameters.txt,生成脚本并且执行该脚本"中,表示需求的相关术语(或者概念)是"访问互联网"、"生成脚本"、"文件'Parameters.txt",以及l丸行脚本",这些相关术语的逻辑顺序是"访问互联网"、"读取文件'Parameters.txt",、"生成脚本"以及"执行脚本"。重点注意,分析模块AM被设置为确定说明书中的基本需求SR之间的逻辑组装。实际上,假设在构成说明书AS的基本需求SR的集合中,需求SR彼此逻辑地链接。这是从以下事实得出的两个不同需求之间的链接导致实现这些需求的组件之间的链接(当两个需求都涉及目标应用AP的给定数据、限制、功能性或者特征时,则这两个需求彼此链接)。在此假设如果在需求SR之间存在某些相关链接,则在实现这些需求SR的组件SC之间存在相同的相关链接。因此,通过分析需求(或者需求原子)SR之间的链接来确定"需求网络",以确定对问题进行描述的应用说明书AS的总体结构。换言之,问题结构与解的结构是同构的。例如,考虑意在计算发票的VAT的应用,并且假设应用说明书AS的文本包括两个涉及VAT计算的不同段落第一个段落解释计算VAT的一般方法,而第二个段落(可能位于说明书AS的若干页之后)根据产品类别给出了不同的VAT率。这两个段落是链接在一起的两个需求SR,因为其涉及相同的数据。因此,实现这些需求SR的两个组件SC将必须链接在一起,因为给定产品的VAT的计算需要计算VAT量的一般方法。每当分析模块AM已经确定了接收到的应用说明书AS的"需求SR的语义,,以及这些需求SR的逻辑组装时,其访问存储装置SM,以选择其语义描述SD与需求的语义相对应的语义软件组件SSC。为此目的,分析才莫块AM必须对^v应用"i兌明书AS中4是取的需求的含义与每个组件的目标进行比较,其中每个组件的目标是该组件的语义卡SD的一部分。这么做是为了能够选择该组件SC,因为其意在满足该需求。如前所述,该比较需要确定说明书文本的含义。这里,-i人为含义(concatenation)构成的。因此,对两个不同文本的含义进行比较意味着对不同的术语或者概念(两两地)进行比较,以确定其是否是语义上接近的。因此,需要具有用来表示基本术语含义的方法,以便能够进行该比较。为此,可以利用可在词典中找到的术语的同义词来建立主n-uplet。此后将这种主n-uplet称为"syn-uplet"。例如,术语"battle"、"war"和"peace"的syn-uplet可以分别15是-battle={fight,clash,combat,encounter,skirmish,scuffle,m616e,conflict,confrontation,fracas,fray,action;struggle,crusade,war,campaign,drive,wrangle,engagement},-war={conflict,combat,warfare,fighting,confrontation,hostilities,battle;campaign,struggle,crusade;competition,rivalry,feud},以及-peace={concord,peacetime,amity,harmony,armistice,reconciliation,ceasefire,accord,goodwill;agreement,pact,pacification,neutrality,negotiation}。注意,如果针对需求SR的术语来构建syn-uplet,可以将其称为"req-uplet",而如果针对软件组件SC的公共操作目标来构建syn-uplet,可以将其称为"comp-uplet"。只于于syn-uplet,也即只寸于req-uplet禾口comp-uplet,可以定义^口下功能-syn(word)是术语"word,,的syn-uplet,-Nl指明"wordl"的syn-uplet,而N2指明"word2"的syn-uplet:Nl=syn(wordl)并且N2=syn(word2),-card(Nl)是syn-upletNl的基数,也即,Nl中同义词的数目,-common(Nl,N2)是N1和N2共同的同义词的数目,以及-avg(Nl,N2)是N1的基数和N2的基数的平均值,继而,对于上文"l是到的syn-uplet的示例,card(common(syn("battle"),syn("war,,)))=9。换言之,"battle"和"war"有9个共同的同义词。还可以定义两个术语T1和T2之间的语义4妾近程度,这例如是通过将两个syn-upletsyn(Tl)和syn(T2)内的共同的同义词考虑在内来计算比率而进行的。例如可以通过以下/^式来给出这种语义接近程度(例如称为"semProx,,)semProx(Tl,T2)=100*card(common(synTl),synT2)))/avg(synTl),synT2))。对于上文提到的syn-uplet的示例,"battle"和"war"的syn-uplet的语义接近程度由semProx("battle","war")=100*9/0.5*(19+13)=900/16=56.25给出。换言之,在"battle"和"war"的同义词的集合的并集中,发现56.25%的元素是相同的。作为另一示例,"war"禾口"peace"的syn-uplet的i吾义4妾近禾呈度由semProx("war","peace")=0给出,这是逻辑上的。语义接近程度表示两个术语之间的接近程度比率。例如,如果语义接近程度大于第一所选阈值A(例如,50)或者接近100,则认为两个术语是语义上接近的。反之,如果语义接近程度小于第二所选阈值(例如10)或者接近O,则认为两个术语是语义上不同的。阈值A和B的值可以根据将要处理的文本的类别来"调节"。例如,可以如下确定给定i吾句的含义。在第一步骤中,分析语句并且提取相关术语(词语)。忽略冠词、介词、连词等不相关的词语。在第二步骤中,对于每个相关术语(词语),构建对应的syn-uplet。最后,在第三步骤中,通过对语句中所包含的相关词语的所有syn-uplet进行组装,来构建整句的全局n-uplet。可以将这种全局n-uplet称为"phrase-uplet"(可以将其^人为是超级n-uplet,也即,n-uplet的n-uplet)。作为例子,如果从呼叫管理系统的说明书AS中提取的需求SR是"Thecallermakesacalltoareceiverbycreatingamessagethatcontainsthecallsubject,submittedtothereceiveratthesametime(呼叫者通过创建包含呼叫主题的消息来对接收者进行呼叫,该消息同时提交给接收者)",则相关术语是caller(呼叫者)、call(呼叫)、makeacall(进行呼叫)、receive"接收者)、message(消息)、subject(主题)以及submit(提交)。该需求SR的phrase-uplet可以是以下syn-uplet的连结-caller={phonecaller,telephonecaller,visitor,guest,company},call,buzz,bell,ring;demand,request,plea,appeal,bid,invitation},画makeacall={phone,makeademand,sendarequest},-receiver={recipient,heir,addressee,beneficiary,inheritor,heritor},-message={communication,memo,memorandum,note,letter,missive,dispatch},-subject={topic,theme,focus,subjectmatter,areaunderdiscussion,question,issue,matter,business,substance,text;field,study,discipline,area},-submit={offer,present,propose,suggest,tender}。可以通过比较其phrase-uplet来对说明书AS的一个语句SI与软件组件SC所关联的语义描述(或者卡)SD的两个其他语句S2和S3进行比较。如下所述,该比较提供了可以用来计算两个语句之间的语义距离的结果。phrase-uplet比较步骤可以如下-对两个phrase-uplet的内部syn-uplet两两地进4亍比l交。换言之,将SI的phrase-uplet的每个syn-uplet与S2和S3的phrase-uplet的每个syn画uplet进行比较,-针对每对syn-uplet计算语义接近程度(semProx),-构建有序的次n-uplet,例如称之为"sem-uplet"。每个语义n-uplet(或者sem-uplet)包括SI的每个syn-uplet与S2或者S3的syn-uplet之间的语义4妄近程度,并且定义了语义距离。-保持提供最小语义距离的语义n-uplet,并JU人为该语义n-uplet所涉及的语句S2或者S3在语义上与SI接近,由此选4奪其对应的已存储的软件组件SC。此后给出的表格是搜索需求SR"Thecallermakesacalltoareceiverbycreatingamessagethatcontainsthecallsubject,submittedtothereceiveratthesametime"与组件库SM中存储的组件集合的样本之间的对应关系的非限制性示例。需求的相关术语是{caller,call,18makecall,receiver,message,subject,submit}。下表中最右歹'J示出的sem-uplet是这些相关术语的syn-uplet与根据组件目标计算得到的syn-uplet之间的比较结果。这些sem-uplet的快速阅览有助于容易地确定能够满足要求的组件SC。<table>tableseeoriginaldocumentpage19</column></row><table><table>tableseeoriginaldocumentpage20</column></row><table>处理模块PM被设置为按照说明书的逻辑组装(也即,已经由分析模块AM确定的总体说明书结构)来对所确定的语义软件组件SSC的软件组件SC进行组装,以便构建希望的应用AP。如前所述,该组装是基于以下假设应用说明书AS(或者问题)的需求之间的相关链接与所确定的软件组件SSC(解的块)之间的链接具有类似的对应关系。因此,处理模块PM对其与需求的语义原子之间的语义距离最小的所选组件SC进行组织,以便构成应用AS的初始架构。该初始架构是通过复制问题结构(或者需求网络)以及使用解原子(或者组件SC)而不是问题原子(或者需求)完成的。如前所述,对il明书需求之间的相关链4妻进行总结和表示的需求网络是由分析模块AM确定的。为此目的,分析模块AM可以使用上面"^是到的sem-uplet(次n-uplet)方法来发现需求(或者需求原子)之间的相关链接。通过使用phrase-uplet力osem-uplet方法,在语义上对说明书AS的语句两两地进行语义比较。更具体地,在说明书AS的需求Rl与相同说明书AS的其他两个需求R2和R3之间进行比较的情况下-对两个phrase-uplet的内部syn-uplet两两地进4亍比净交。换言之,将Rl的phrase-uplet的每个syn-uplet与R2和R3的phrase-uplet的每个syn-uplet进4亍比專交,-针对每对计算语义接近程度(semProx),-构建有序的次n-uplet(i吾义n-uplet,一尔为sem-uplet)。每个sem-uplet包括Rl的每个syn-uplet与R2或者R3的syn-uplet之间的语义接近程度,并且定义语义距离。因此,得到了一个n-uplet集合,其按照语义距离表示每个需求关于其他需求的链接。可以对语义距离的级别进行"调节",以便仅仅保留语义接近程度方面的"最佳"sem-uplet,也即,给定需求的语义上最为相关的链接。这意味着,假设每个需求具有有限数目的语义上最接近的其他需求。因此,可以认为,在整个说明书AS的上下文内,通过一个表示语义上最为接近的其他需求的sem-uplet的有限集合可以形式化地描述一个需求。例如,如果R2与Rl和R3链接,但是sem-uplet(R2,R3)>sem-uplet(R2,Rl),则在最终模型上仅保留链接R2-R3。这是优化问题。可以通过确定两个sem-uplet之间的最大可接受间隙来调节模型。例如,可以认为,如果diff(sem画uplet(R2,R3),sem-uplet(R2,Rl))>10,则仅保留链接R2-R3,其中"diff()"是功能差(或者相减)。在变形中,功能"diff()"的限度(或者阈值)可以等于5或者15,这取决于问题类别或者需求类型。在另一变形中,可以在问题模型(或者需求网络)中保留与大于最小临界级别的功能diff()相对应的所有链接,并由此将其复制到解模型中。解"分子"具有与问题"分子"相同的空间结构,尽管其没有包含和使用相同类型的原子问题原子是需求,解原子是组件SC。问题原子因为它们共享相同的概念并且涉及相同的需求而链接在一起;而解原子因为它们共享或者交换相同的数据而链接在一起。然而,包括需求之间的相关链接的需求网络(或者问题分子)包含与应用架构(或者解)相同的链接。这两种类型的原子是不同的,并且没有完全相同的特性,在需求网络中相关的链接在初始组件结构中可能是不相关的。实际上,两个需求共享同一概念这一事实未必意味着两个对应的组件也具有交互。因此,需要对处理模块PM进行设置,以便优化应用AS的初始架构,更具体地,以便确定最佳组件交互模型。优化过程旨在仅保留从问题结构继承的最有用的链接,也即,对应于两个组件SC(Compl和Comp2)之间的实际数据交换的关联,其中组件Comp1的输出是组件Comp2的输入,反之亦然。该优化过程可以使用作为语义元数据附加至组件操作的数据描述(更准确地,附加至其输入和输出)的语义标签,以便确定和优化所选组件SC之间的交互。如果这些语义标签是恰当选择和设置的,可以连接组件SC,并且可以形式化地表示其连接。例如,如果Compl.operation—A()的输出在语义上适合Comp2.operatioi^B()的输入,则可以通过从"A的输出"到"B的输入,,的链接来连接Compl和Comp2,并且可以写为out—A=Comp1.operation—A(A_parameters);out_B=Comp2.operation—B(out—A);或者更直接地out—B=Comp2.operation—B(Compl.operation_A(A_parameters))。这表示两个连接的数据具有相同的语义"维度",也即,其在语义上彼此适合(或者说它们是处理兼容的),因为它们不仅共享相同的数据类型,而且还共享相同的数据特性。可以通过参数"semTag"来表示该语义数据类型,其中参数"semTag"与UML标记的值相类似并且附加至语义描述(或者语义卡)SD内的输入和输出。由于Compl的输出与Comp2的输入在语义上^皮此适合(例如,Compl产生文本,而Comp2处理文本),因此可以将Compl的输出连接至Comp2的输入这一事实未必意味着Comp2实际上在等待Compl的输出而不是在等待例如Comp4(产生文本的另一组件)的输出。事实上,Compl-Comp2连接性得以证明是因为交互是在解结构中存在的链接之后被建立的。即使Comp4产生文本,其并不直接链接至Comp2。因此,不必尝试结合其输入-输出。SemTag确保组件接口的一致性,出于此原因,它们是用于优化组件交互的重要元素。回想在UML含义中,组件SC的接口是由其公共操作(具有各操作的参数)的集合构成的。例如,假设Comp1.operation—A()才是供文本,而Comp2.operation_B()是组件Translator(翻译器)的操作translate()。由于翻译文本是有意义的,因此Comp1.operation—A()的输出必须适合Translator.translate()的專命入。但是假设Compl.operatioi^A()提供给定公司的股票符号,该符号与Translator.translate()用作输入的文本可以具有相同的数据类型(String(字符串)),但是其在语义上是不相同的,因为试图翻译23股票符号是没有意义的。因此,附接至这两个数据的语义信息必须是不同的,由此,两个操作及其两个组件SC是不可连接的(或不可链接的)。下面给出了组件Translator的语义卡SD的非限制性示例,以示出semTag的4乍用<semCard〉<URL〉http:〃xxx.xx.xxx.x/components/Translation/Translator.asmx</URL>〈componentname="Translator"><domains><domainname="Translation">〈conceptslist="translation,version,language,sourcelanguage,targetlanguage,result"/〉</domain〉<domainname="Text">〈conceptslist="text,chapter,paragraph,sentence,phrase,word,language"/〉</domain></domains><operationname="translate"><inputs>〈inputname="text_to—translate"concept="Text#Text"semtag="text"/><inputname="source—language"concept="Translation#SourceLanguage"semtag="language"/><inputname="target—language"concept="Translation#TargetLanguage"semtag="language"/></inputs><outputname="translated—text"concept="Text#Text"semtag="text"/〉24<goal>Thegoaloftheoperationistoprovideatranslated—textwritteninagiventarget—languageasaresultofthetranslationofagiventext—to—translatewritteninasource—language.</goal〉</operation></component></semCard>。当组件SC是web服务时,例如可以根据该服务的WSDL(Web服务描述语言)来生成其语义描述(语义卡)SD。但是,为了自动设置语义标签,如图1所示,可以使用设备D的可选的和特定的语义模块SSM。该^^块SSM可以是处理;f莫块PM的一部分。该语义模块SSM可以分析操作的参数的名称和类型(其以WSDL进行描述),并且可以搜索特定本体中的语义对应关系。该特定的本体包含如程序员经常使用的输入数据和输出数据的当前名称和类型的语义之间的链接以及对应的语义标签。例如,具有类型"String"的、命名为"text"或者"content"或者"translated_page,,或者"description"的数据可以具有语义标签"text(文本)",因为数据具有文本的"维度"。具有类型"Date(日期)"或者"String"的、命名为"date"或者"current—date"的数据可以具有语义标签"date(日期)",等等。这种意在自动地设置语义卡SD内的语义标签的特定本体可以表示为简单的对应关系表。下面给出了这种对应关系表的一个示例。<table>tableseeoriginaldocumentpage25</column></row><table><table>tableseeoriginaldocumentpage26</column></row><table>成。第二点在于考虑目标组件组装的主要输出,以便找到哪些组件操作可以提供其输入,并且迭代针对这些操作的处理搜索哪些其他操作可以提供其输入。继而,从主要输出逐渐回到产生该输出所需的输入数据,这样,通过链接其输入和输出,自动地对不同的组件操作进行了组装。同时,可以按照表示操作调用的伪代码的形式将链接存储在FILO(先进后出)堆栈中。在此过程的结尾,堆栈的内容表示所选组件之间的正确交互。组件组装的主要输出由说明书需求的表示给出。在这个希望翻译版本的示例中,主要输出是翻译文本,也即操作Translator.translate()的输出。因此,可以将该主要输出推入堆栈,表示为目标组件组装所代表的功能的"返回"translated—text=Translator.translate(text—to_translate,src—lang,dest—lang);returntranslated—text。如果现在回到该操作的输入(其语义标签分别是"language"、"language"和"text"),可以看到,具有语义标签"text"的数据是由操作RSS.getDescriptionOfTitle()提供的。因此,可以将该操作连接到Translator.translate(),并且可以在堆栈中添加对#:作RSS.getDescriptionOfTitle()的调用,按照如下所示通过交换的参数的名称来与Translator.translate()链接textto—translate=RSS.getDescriptionOfTitle(site—address,title);translated—text=Translator.translate(text—to—translate,srcJang,dest_lang);returntranslated—text。现在,如果回到RSS.getDescriptionOfTitle()的输入(其语义标签是"URL"和"title(标题),,),可以看到,具有语义标签"title"的数据是由操作RSS.getAllTitles()提供的。因此,还可以通过将新操27作调用推入堆栈来连接这两个操作titles=RSS.getRSSTitles(adr—site);text_to—translate=RSS.getDescriptionOfTitle(site—address,title);translated—text=Translator.translate(text_to—translate,src—lang,dest—lang);returntranslatedjext。分配给说明书需求的所有组件SC都被使用并且连接在一起,堆栈目前包含组件组装的总体结构,其形式是几乎可执行的伪代码。然而,优选地,在执行该伪代码之前对其进行细化。下面列出了这些细化中的一些-必须考虑数据类型。例如,RSS.getAllTitle()返回一组String,而不是单个String;-一些参数的名称可以通过其语义进^f于求解,也即,通过其semTag的帮助进行求解。例如,"adr—site"和"site—address"恢复相同的概念,并且具有相同的semTag,-其他一些参数可以利用原始需求中所包含的某些有用信息进行求解。例如,如果需求规定了法文翻译,则操作Translator.translate()的参数"dest—lang"必须设置为"French(法语),,,以及-一些另外的组件SC或者组件操作可以用来求解其他参数。例如,可以通过使用效用组件"LanguageFinder(语言查找器)"或者使用RSS源组件上的操作getSourceLanguage()来设置参数"srcJang",/人而自动确定纟会定文本的源语言。可以提供设备D的另一可选和特定才莫块OSM,以l更执行意在完成伪代码的细化。该模块OSM可以是处理模块PM的一部分,或者耦合至如图1中所示的处理模块PM。例如,该模块OSM可以是例如以下的软件模块VectorComponentAssembly(Stringsite—address){Vectorresult;titles=RSS.getAllTitles(site一address);foreachtitleintitles{textto—translate=RSS.getDescriptionOfTitle(site_address,title);source—lang=LanguageFinder.getLanguage(texttotranslate);translated—text=Translator.Translate(text_to—translate,source_lang,"french");result,add(title+translated—text);returnresult;}。在可能的细化之后,伪代码可以最终转换成可执行的Java文件,以<更例如纟企测由优化处理产生的组件组装的有效性。由于说明书AS的原始文本的语义分析是自动的,并且考虑到软件组件SC的发现和组装是自动的,考虑到应用设计的优化也是自动的,并且最终考虑到有可能根据该最优化设计来生成兼容的、可执行的代码,因此认为本发明是用以直接根据其说明书AS来产生可执行应用AP的一种手4殳。优选地,设备D是软件模块,并且更具体地,该设备的分析模块AM和处理模块PM及可能其存储装置SM都是软件模块。但是它们也可以分别由电子电路或者硬件模块、或者硬件和软件模块的结合来构成。还可以认为本发明是一种用于从软件组件SC来构建应用AP的方法。可以借助于例如上文参考图1描述的设备D来实现这种方法。因此,此后将只提及其主要特性。根据本发明的方法包括,每当接收到说明书AS(描述将要构建的应用AP)时-执行对该说明书AS的语义分析,以便从说明书AS的文本中提取基本需求SR以及这些基本需求SR之间的链接,这些链接的集合称为"说明书的总体结构",继而-对于每个基本需求SR,提取其所包括的相关术语,并且对于每个基本需求SR,基于其提取的相关术语来构建"语义描述",该"语义描述,,表示"该基本需求的语义,,,继而-访问至少一个组件库SM,在SM中,每个组件SC^f皮注册和描述为"语义软件组件"SSC,以便针对每个提取的基本需求SR,通过对该基本需求SR的语义与组件语义描述SD进行比较,来确定哪个(哪些)组件覆盖了所述提取的基本需求SR,以及-最终,按照说明书的总体结构来组装确定的这些软件组件SC,以便构建应用AP。本发明不限于以上仅作为示例描述的方法和设备的实施方式,而是涵盖本领域技术人员认为位于所附权利要求书范围之内的所有备选实施方式。权利要求1.一种用于根据说明书(AS)和软件组件(SC)来构建应用(AP)的方法,其特征在于,该方法包括每当接收到描述将要构建的应用(AP)的说明书(AS)时,i)执行对该说明书(AS)的文本的语义分析,以便提取基本需求(SR)以及这些基本需求(SR)之间的链接,这些链接定义了“说明书的总体结构”,继而,针对每个基本需求(SR)提取其所包括的相关术语,以及针对每个基本需求(SR),基于其提取的相关术语来构建“语义描述”并且该“语义描述”表示“该基本需求的语义”,继而ii)访问至少一个组件库,用于针对每个提取的基本需求(SR),通过对该基本需求(SR)的语义与组件语义描述(SD)进行比较,来确定哪个或哪些组件能够覆盖所述提取的基本需求(SR),其中,所述组件库存储有语义软件组件(SSC),每个语义软件组件(SSC)由与语义描述(SD)相关联的软件组件(SC)构成,其中语义描述(SD)包括用于定义所述软件组件(SC)能够执行的每个公共操作的至少一个相关术语,以及iii)按照说明书的所述总体结构来组装这些确定的软件组件(SC),以便构建应用。2.根据权利要求1所述的方法,其特征在于,软件组件(SC)的所述语义描述(SD)中的至少一些包括i)该软件组件(SC)能够执行的操作的目标;ii)至少一个领域标识符,其指明了一个领域,其中描述所述操作的目标以及所述操作的输入/输出参数的术语定义在该领域,以及iii)与这些输入/输出参数相关联的相关术语和/或特定元数据。3.根据权利要求1和2之一所述的方法,其特征在于,针对每个所述提取的基本需求(SR),确定其语义描述(SD)与每个所述存储的软件组件(SC)的语义描述(SD)之间的语义距离,继而,选择与最小语义距离相对应的存储的软件组件(SC),由此这个选择的软件组件(SC)意在实现所述基本需求(SR)。4.根据权利要求2和3的组合所述的方法,其特征在于,将称为"syn-uplet"的词语的主n-uplet与基本需求(SR)的每个相关术语相关联,继而将该syn-uplet称为"req-uplet";其特征在于,将syn-uplet与每个软件组件(SC)的每个公共操作的目标的每个相关术语相关联,该syn-uplet称为"comp-uplet";以及其特;(正在于,对这些req-uplet中的每一个与这些comp-uplet中的每一个进行比较,以l更确定每个基本需求(SR)和每个存储的软件组件(SC)之间的语义距离。5.根据权利要求4所述的方法,其特征在于i)确定语义接近程度,所述语义接近程度表示每个req-uplet与每个comp-uplet的共同词语的数目,以及ii)针对每个基本需求(SR),构建称为"sem-uplet"的次n-uplet,其表示每个req-uplet和每个comp-uplet的req-uplet之间的语义接近程度,每个次n-叩let定义语义距离,继而选择与定义了最小语义距离的次n-uplet相对应的存储的软件组件(SC)。6.根据权利要求3到5中任一项所述的方法,其特征在于,在所选择的与所述提取的基本需求(SR)相对应的存储的软件组件(SC)之间建立与定义说明书(AS)的所述总体结构的那些相关链接相同的相关链接,以便优化应用(AP)的结构。7.根据权利要求4到6中任一项所述的方法,其特征在于,为了确定说明书的所述总体结构,i)确定语义接近程度,其表示每对基本需求(SR)的req-uplet的共同词语的数目,以及ii)针对每个基本需求(SR),构建称为"sem-uplet"的次n-uplet,次n-uplet包括在所针对的基本需求的req-uplet与其他基本需求(SR)的req-uplet之间的语义接近程度,每个sem-uplet定义语义距离,继而,当两个不同的基本需求(SR)的sem-uplet值最大时,在这两个不同的基本需求(SR)之间建立相关链接。8.—种用于根据说明书(AS)和软件组件(SC)来构建应用(AP)的设备(D),其特征在于,该设备包括i)存储装置(SM),用于存储语义软件组件(SSC),每个语义软件组件(SSC)由与语义描述(SD)相关联的软件组件(SC)构成,所述语义描述(SD)包括用于定义所述软件组件(SC)能够执行的每个公共操作的至少一个相关术语,ii)分析装置(AM),其被设置为用于每当接收到描述将要构建的应用(AP)的说明书(AS)时,执行对所述说明书(AS)的语义分析,以便从所述说明书(AS)的文本中提取基本需求(SR)以及这些基本需求(SR)之间的链接,这些链接定义了"说明书的总体结构",继而用于针对每个基本需求(SR)提取其所包括的相关术语,并且针对每个基本需求(SR)基于其提取的相关术语来构建"语义描述",该"语义描述,,表示"该基本需求的语义",继而用于访问所述存储装置(SM),以便针对每个提取的基本需求(SR),通过对该基本需求(SR)的语义与组件语义描述(SD)进行比较,来确定哪个或哪些组件能够覆盖所述提取的基本需求(SR),以及iii)处理装置(PM),用于按照说明书的所述总体结构来组装确定的软件组件(SC),以便构建所述应用(AP)。9.根据权利要求8所述的设备,其特征在于,软件组件(SC)的所述语义描述(SD)的至少一些语义描述包括i)该软件组件(SC)能够执行的操作的目标;ii)至少一个领域标识符,其指明了一个领域,其中描述所述操作的目标以及所述操作的输入/输出参数的术语定义在该领域,以及iii)与这些输入/输出参数相关联的相关术语和/或特定元lt据。10.根据权利要求8和9之一所述的设备,其特征在于,所述分析装置(AM)被设置为用于针对每个提取的基本需求(SR),确定其语义描述(SD)与每个所述存储的软件组件(SC)的语义描述(SD)之间的语义距离,继而,用于选择与最小语义距离相对应的存储的软件组件(SC),这个选择的软件组件(SC)意在实现所述基本需求(SR)。11.根据权利要求9和IO的组合所述的设备,其特征在于,所述分析装置(AM)被设置为用于将称为"syn-uplet"的词语的主n-uplet与基本需求(SR)的每个相关术语相关联,继而将该syn-uplet称为"req-uplet",并用于对这些req-uplet中的每一个与comp-uplet中的每一个进行比较,其中所述comp-uplet是与每个软件组件(SC)的每个公共操作的目标的每个相关术语相关联的syn-uplet,以便确定每个基本需求(SR)和每个存储的软件组件(SC)之间的语义距离。12.根据权利要求11所述的设备,其特征在于,所述分析装置被设置为i)用于确定语义接近程度,其表示每个req-uplet和每个comp-uplet的共同词语的数目,以及ii)用于针对每个基本需求(SR),构建称为"sem-uplet,,的次n-uplet,其表示每个req-uplet和每个comp-uplet的req-uplet之间的i吾义4矣近禾呈度,每个次n-uplet定义i吾义距离,继而,用于选择与定义了最小语义距离的次n-uplet相对应的存储的软件组件(SC)。13.根据权利要求10到12中任一项所述的设备,其特征在于,所述处理装置(PM)被设置为用于在所选择的与所述提取的基本需求(SR)相对应的存储的软件组件(SC)之间建立与定义说明书(AS)的总体结构的那些相关链接相同的相关链接,以便优化应用(AP)的结构。14.根据权利要求11到13中任一项所述的设备,其特征在于,为了确定说明书的所述总体结构,所述分析装置(AM)被设置为i)用于确定语义接近程度,其表示每对基本需求(SR)的req-uplet的共同词语的数目,以及ii)用于针对每个基本需求(SR),构建次n-uplet,n-uplet包括在所针对的基本需求的req-uplet与其他基本需求(SR)的req-uplet之间的语义接近程度,每个sem-uplet定义语义距离,继而,用于当两个不同的基本需求(SR)的sem-uplet值最大时,在这两个不同的基本需求(SR)之间建立相关链接。全文摘要一种用于根据说明书(AS)和软件组件来构建应用的设备,包括i)存储装置(SM),用于存储语义软件组件,该语义软件组件由与语义描述相关联的软件组件构成;ii)分析模块(AM),被设置为用于每当接收到描述将要构建的应用的说明书(AS)时,执行对该说明书(AS)的语义分析,继而,用于针对每个基本需求,提取其所包括的相关术语,并且用于针对每个基本需求,基于其提取的相关术语来构建“语义描述”,继而用于访问存储装置(SM),以便针对每个提取的基本需求,来确定哪个(哪些)组件能够覆盖所提取的基本需求,以及iii)处理装置(PM),用于按照说明书的总体结构来组装所确定的这些软件组件,以便构建所述应用(AP)。文档编号G06F9/445GK101452392SQ20081017711公开日2009年6月10日申请日期2008年12月5日优先权日2007年12月7日发明者P·拉尔韦申请人:阿尔卡特朗讯
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1