CN101452392A - 自动构建应用的设备和方法 - Google Patents

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

Info

Publication number
CN101452392A
CN101452392A CNA2008101771133A CN200810177113A CN101452392A CN 101452392 A CN101452392 A CN 101452392A CN A2008101771133 A CNA2008101771133 A CN A2008101771133A CN 200810177113 A CN200810177113 A CN 200810177113A CN 101452392 A CN101452392 A CN 101452392A
Authority
CN
China
Prior art keywords
uplet
semantic
primary demand
primary
demand
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.)
Granted
Application number
CNA2008101771133A
Other languages
English (en)
Other versions
CN101452392B (zh
Inventor
P·拉尔韦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alcatel Lucent SAS
Alcatel Optical Networks Israel Ltd
Original Assignee
Alcatel Optical Networks Israel Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alcatel Optical Networks Israel Ltd filed Critical Alcatel Optical Networks Israel Ltd
Publication of CN101452392A publication Critical patent/CN101452392A/zh
Application granted granted Critical
Publication of CN101452392B publication Critical patent/CN101452392B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Machine Translation (AREA)

Abstract

一种用于根据说明书(AS)和软件组件来构建应用的设备,包括:i)存储装置(SM),用于存储语义软件组件,该语义软件组件由与语义描述相关联的软件组件构成;ii)分析模块(AM),被设置为用于每当接收到描述将要构建的应用的说明书(AS)时,执行对该说明书(AS)的语义分析,继而,用于针对每个基本需求,提取其所包括的相关术语,并且用于针对每个基本需求,基于其提取的相关术语来构建“语义描述”,继而用于访问存储装置(SM),以便针对每个提取的基本需求,来确定哪个(哪些)组件能够覆盖所提取的基本需求,以及iii)处理装置(PM),用于按照说明书的总体结构来组装所确定的这些软件组件,以便构建所述应用(AP)。

Description

自动构建应用的设备和方法
技术领域
本发明涉及应用的设计,并且更具体地涉及用于根据现用(off-the-shelf)软件组件来构建应用的方法和设备。
背景技术
按照在面向对象以及基于组件的应用开发范围中被用作参考的可接受的定义,术语“设计”在此表示应用的一个阶段,该阶段在代码之上的逻辑层描述应用将如何实现。对于设计而言,进行策略性和战术性决策,以便满足应用所需的功能性需求和质量需求。按照例如Grady Booch在其著作“Object-Oriented Analysis and Design withApplication”,第三版,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中的每一个进行比较,以确定每个基本需求与每个存储的软件组件之间的语义距离;
Figure A200810177113D00081
可以确定语义接近程度,其表示每个req-uplet和每个comp-uplet共同词语的数目,以及,针对每个基本需求,可以构建次n-uplet,其例如称为“sem-uplet”,并且其表示每个req-uplet与每个comp-uplet的req-uplet之间的语义接近程度,每个次n-uplet定义语义距离,继而可以选择与定义最小语义距离的次n-uplet相对应的存储的软件组件;
-可以在与提取的基本需求相对应的、所选择的存储的软件组件之间建立与定义说明书总体结构的那些链接相同的相关链接,以便优化应用的结构;
-确定说明书的该总体结构,可以确定语义接近程度,其表示每对基本需求的req-uplet的共同词语的数目,并且针对每个基本需求,可以构建次n-uplet(所述“sem-uplet”),其包括其req-uplet和其他基本需求的req-uplet之间的语义接近程度,每个sem-uplet定义语义距离,继而可以在两个不同基本需求的sem-uplet值最大时在这两个不同基本需求之间建立相关链接。
本发明还提供一种用于根据说明书和软件组件来构建应用的设备,该设备包括:
-存储装置,用于存储语义软件组件,每个语义软件组件由与语义描述相关联的软件组件构成,所述语义描述包括用于定义该软件组件能够执行的每个公共操作的至少一个相关术语,
-分析装置,其被设置为:每当接收到描述将要构建的应用的说明书时,i)执行对该说明书的语义分析,以便从说明书文本提取基本需求以及这些需求之间的链接,以下将这些链接的集合称为“说明书的总体结构”,继而ii)用于针对每个基本需求,提取其所包含的相关术语,以及,针对每个基本需求,基于其提取的相关术语来构建“语义描述”,该“语义描述”表示“该基本需求的语义”,继而iii)用于访问存储装置,以便针对每个提取的基本需求,通过对该基本需求的语义与组件语义描述进行比较,来确定(选择)哪些组件能够覆盖该提取的基本需求,以及
-处理装置,用于按照说明书的总体结构来组装所确定的软件组件,以便构建应用。
根据本发明的设备可以包括单独的或者组合的附加特性,并且具体地:
-分析装置可被设置为:用于针对每个提取的基本需求,确定其语义描述与每个所存储的软件组件的语义描述之间的距离,继而用于选择与最小语义距离相对应的存储的软件组件,由此该选择的软件组件意在实现该基本需求;
-分析装置可被设置为:用于将词语的主n-uplet(例如,同义词,此后将该n-uplet称为“syn-uplet”)与基本需求的每个相关术语相关联,此后将该syn-uplet称为“req-uplet”;以及用于将这些req-uplet中的每一个与每个comp-uplet(与每个软件组件的每个公共操作的目标的每个相关术语相关联的syn-uplet)进行比较,以确定每个基本需求与每个存储的软件组件之间的语义距离;
分析装置可被设置为:i)用于确定语义接近程度,其表示每个req-uplet和每个comp-uplet的共同词语的数目,ii)用于针对每个基本需求构建次n-uplet,其例如称为“sem-uplet”,并且表示每个req-uplet与每个comp-uplet的req-uplet之间的语义接近程度,每个次n-uplet定义语义距离,以及iii)用于选择与定义最小语义距离的次n-uplet相对应的存储的软件组件。
-处理装置可被设置为:用于在与提取的基本需求相对应的、所选择的存储的软件组件之间建立与定义说明书的总体结构的那些链接相同的相关链接,以便优化应用的结构;
-为了确定说明书的总体结构,分析装置可被设置为:i)用于确定语义接近程度,其表示每对基本需求的req-uplet的共同词语的数目,ii)用于针对每个需求,构建次n-uplet(或者“sem-uplet”),该次n-uplet包括针对的基本需求的req-uplet和其他基本需求的req-uplet之间的语义接近程度,每个sem-uplet定义了语义距离,继而用于在两个不同基本需求的sem-uplet值最大时在这两个不同基本需求之间建立相关链接。
附图说明
在阅读此后的详细说明以及附图时,本发明的其他特征和优点将变得易见,其中,图1示意性地示出了根据本发明的设备的实施方式的示例。
附图不仅可以用来使本发明完整,如果需要,其还可以对本发明的定义有所贡献。
具体实施方式
本发明旨在提供一种这样的设备及关联方法,其意在通过使用现用软件组件、根据应用说明书的文本来自动地构建应用。
本发明适用于由说明书所描述的任意类型的应用,并且可以通过现用软件组件的组装来构建所述应用。
术语“应用”在此表示一组互相关联的(软件)组件,每个组件都具有功能性,所述功能性表示为至少一个公共功能(称之为操作)的集合,并且所述功能性封装和管理其自己的数据。该定义是从面向对象得出的组件范式,并且是当今的开发标准。
此外,表述“现用软件组件”在此表示一段旨在实现某个精确的基本功能(即,功能性的原子)的可执行代码,所述基本功能诸如文件管理机制、数据库访问、GUI显示机制、文本翻译、转换模块、根据URL读取HTML页面、用于文本处理的基本功能、等等。
如图1示意性示出的那样,根据本发明的设备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的语义分析,以便:
Figure A200810177113D00121
例如借助于语法分析器从说明书AS的文本中提取基本需求SR以及这些基本需求SR之间的链接,以下将这些链接的集合称为“说明书的总体结构(或者逻辑组装)”,继而
Figure A200810177113D00122
针对每个基本需求SR,提取其所包括的相关术语,并且针对每个基本需求SR,基于其提取的相关术语来构建“语义描述”,该“语义描述”表示“该基本需求的语义”,继而
-访问存储装置SM,以便针对每个提取的基本需求SR,通过对该基本需求SR的语义与组件语义描述SD进行比较,来确定哪个(哪些)组件能够覆盖所述提取的基本需求SR。
重点注意,分析模块AM可以划分为两个子模块,第一子模块用于执行语义分析,以及第二子模块用于在存储装置(或者组件库)SM中确定哪个(哪些)组件能够覆盖第一子模块提取的基本需求SR。
换言之,分析模块AM确定表示基本需求SR的每个语句的含义(也即,其语义),并且按照适当的可计算的数据结构来表示它。思想是:通过适当的语义数据结构来对功能性的每个语义原子进行标记,以便稍后将该结构与所存储的软件组件SC的等效语义数据结构进行比较,以确定哪个组件能够覆盖哪个(基本)需求SR。实际上,可以对每个语句(需求的原子)进行评价和标记,以便接收其自己的语义数据。重点注意,该过程不同于基于本体的需求分析方法,在基于本体的需求分析方法中,软件需求分析方法是基于领域本体技术,其中可以在软件需求说明书与若干领域本体之间建立映射。注意,本体是对在给定领域内操控的概念以及这些概念之间的关系的形式化描述。在本发明中,没有使用外部本体来帮助需求分析,因为语义是从文本本身中提取的。
优选地,利用精确的规则来定义操作目标的语义,所述规则例如以下:
-使用特定的词语、通过自然语言来表达目标;
-这些特定词语属于“概念列表”,该“概念列表”嵌入在语义卡SD中,并且总结了用于书写目标的相关词语;以及
-这些“概念列表”例如可以在语义卡SD中引用的外部本体中(也即在相关领域的形式化描述中)描述,或者可以是对外部字典或者词典的定义的简单引用。
这种规则有助于书写简捷、明了的操作目标。
下面给出与RSS-feed-accessor(RSS源存取器)组件相关联的语义卡SD的非限制性示例:
<semCard>
<URL>http://xxx.xx.xxx.x/components/RSS/RSS_Component.asmx</URL>
 <component name="RSS">
   <domains>
    <domain name="RSS">
      <concepts list="RSS,RSS_feed,URL,news"/>
     </domain>
     <domain name="News">
       <concepts list="news,title,titles,description,article,text,News
Agency"/>
     </domain>
    </domains>
    <operation name="getAllTitles">
      <goal>Deliver the titles of all the news of the RSS feed addressed by
a given URL.</goal>
      <inputs>
       <input name="URL_RSS"concept="RSS#URL"semTag="URL"
/>
     </inputs>
     <output name="titles"concept="News#title"semTag="text"/>
   </operation>
   <operation name="getDescriptionOfTitle">
     <goal>Deliver the description of the title of one news of the RSS
feed addressed by a given URL.</goal>
     <inputs>
       <input name="URL_RSS"concept="RSS#URL"semTag="URL"
/>
       <input name="title"concept="News#title"semTag="short_text"/>
      </inputs>
      <output name="description_of_title"concept="News#description"
semTag="text"/>
    </operation>
  </component>
</semCard>。
需求SR的相关术语的逻辑组装(或者总体结构)包含在相关术语之间的相关链接以及其间的逻辑顺序中。例如,在语句“应用必须访问互联网,以根据文件‘Parameters.txt’生成脚本并且执行该脚本”中,表示需求的相关术语(或者概念)是“访问互联网”、“生成脚本”、“文件‘Parameters.txt’”以及“执行脚本”,这些相关术语的逻辑顺序是“访问互联网”、“读取文件‘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必须对从应用说明书AS中提取的需求的含义与每个组件的目标进行比较,其中每个组件的目标是该组件的语义卡SD的一部分。这么做是为了能够选择该组件SC,因为其意在满足该需求。
如前所述,该比较需要确定说明书文本的含义。这里,认为含义是由组成说明书文本的每个语句的所有相关术语的基本含义的连结(concatenation)构成的。因此,对两个不同文本的含义进行比较意味着对不同的术语或者概念(两两地)进行比较,以确定其是否是语义上接近的。
因此,需要具有用来表示基本术语含义的方法,以便能够进行该比较。为此,可以利用可在词典中找到的术语的同义词来建立主n-uplet。此后将这种主n-uplet称为“syn-uplet”。
例如,术语“battle”、“war”和“peace”的syn-uplet可以分别是:
-battle={fight,clash,combat,encounter,skirmish,scuffle,
Figure A200810177113D0016135236QIETU
,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,
-N1指明“word1”的syn-uplet,而N2指明“word2”的syn-uplet:N1=syn(word1)并且N2=syn(word2),
-card(N1)是syn-uplet N1的基数,也即,N1中同义词的数目,
-common(N1,N2)是N1和N2共同的同义词的数目,以及
-avg(N1,N2)是N1的基数和N2的基数的平均值,
继而,对于上文提到的syn-uplet的示例,card(common(syn(“battle”),syn(“war”)))=9。换言之,“battle”和“war”有9个共同的同义词。
还可以定义两个术语T1和T2之间的语义接近程度,这例如是通过将两个syn-uplet syn(T1)和syn(T2)内的共同的同义词考虑在内来计算比率而进行的。
例如可以通过以下公式来给出这种语义接近程度(例如称为“semProx”):
semProx(T1,T2)=100*card(common(synT1),synT2)))/avg(synT1),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的语义接近程度由semProx(“war”,“peace”)=0给出,这是逻辑上的。
语义接近程度表示两个术语之间的接近程度比率。例如,如果语义接近程度大于第一所选阈值A(例如,50)或者接近100,则认为两个术语是语义上接近的。反之,如果语义接近程度小于第二所选阈值(例如10)或者接近0,则认为两个术语是语义上不同的。阈值A和B的值可以根据将要处理的文本的类别来“调节”。
例如,可以如下确定给定语句的含义。
在第一步骤中,分析语句并且提取相关术语(词语)。忽略冠词、介词、连词等不相关的词语。
在第二步骤中,对于每个相关术语(词语),构建对应的syn-uplet。
最后,在第三步骤中,通过对语句中所包含的相关词语的所有syn-uplet进行组装,来构建整句的全局n-uplet。可以将这种全局n-uplet称为“phrase-uplet”(可以将其认为是超级n-uplet,也即,n-uplet的n-uplet)。
作为例子,如果从呼叫管理系统的说明书AS中提取的需求SR是“The caller makes a call to a receiver by creating a message thatcontains the call subject,submitted to the receiver at the same time(呼叫者通过创建包含呼叫主题的消息来对接收者进行呼叫,该消息同时提交给接收者)”,则相关术语是:caller(呼叫者)、call(呼叫)、make a call(进行呼叫)、receiver(接收者)、message(消息)、subject(主题)以及submit(提交)。该需求SR的phrase-uplet可以是以下syn-uplet的连结:
-caller={phone caller,telephone caller,visitor,guest,company},
-call={phone call,telephone call,buzz,bell,ring;demand,request,plea,appeal,bid,invitation},
-make a call={phone,make a demand,send a request},
-receiver={recipient,heir,addressee,beneficiary,inheritor,heritor},
-message={communication,memo,memorandum,note,letter,missive,dispatch},
-subject={topic,theme,focus,subject matter,area under discussion,question,issue,matter,business,substance,text;field,study,discipline,area},
-submit={offer,present,propose,suggest,tender}。
可以通过比较其phrase-uplet来对说明书AS的一个语句S1与软件组件SC所关联的语义描述(或者卡)SD的两个其他语句S2和S3进行比较。如下所述,该比较提供了可以用来计算两个语句之间的语义距离的结果。phrase-uplet比较步骤可以如下:
-对两个phrase-uplet的内部syn-uplet两两地进行比较。换言之,将S1的phrase-uplet的每个syn-uplet与S2和S3的phrase-uplet的每个syn-uplet进行比较,
-针对每对syn-uplet计算语义接近程度(semProx),
-构建有序的次n-uplet,例如称之为“sem-uplet”。每个语义n-uplet(或者sem-uplet)包括S1的每个syn-uplet与S2或者S3的syn-uplet之间的语义接近程度,并且定义了语义距离。
-保持提供最小语义距离的语义n-uplet,并且认为该语义n-uplet所涉及的语句S2或者S3在语义上与S1接近,由此选择其对应的已存储的软件组件SC。
此后给出的表格是搜索需求SR“The caller makes a call to areceiver by creating a message that contains the call subject,submitted tothe receiver at the same time”与组件库SM中存储的组件集合的样本之间的对应关系的非限制性示例。需求的相关术语是:{caller,call,make call,receiver,message,subject,submit}。下表中最右列示出的sem-uplet是这些相关术语的syn-uplet与根据组件目标计算得到的syn-uplet之间的比较结果。这些sem-uplet的快速阅览有助于容易地确定能够满足要求的组件SC。
 
组件名称 组件目标 sem-uplet
AL Stock 返回欧元和美元的Alcatel-Lucent股票值 {0,0,0,0,0,0,0}
AnDiscOrGeX 响应于给定用户请求来分析、发现、协调、生成以及执行合成服务             {24,15,0,0,0,0,0,0,0}                         
Calculator 返回四个基本术语之中的双术语操作的结果       {12,0,0,0,0,0,0}
ContactInfoSearcher 返回涉及在给定的X500字典中注册的人员的有用信息                     {21,15,0,0,0,0,0,0}                      
DateTime 返回当前的日期和时间 {0,0,0,0,0,0,0}
Definition 返回给定词语的英文字典定义                   {13,0,0,0,0,0,0}
FaxSender 将给定的传真文本发送至给定的传真号码         {35,28,0,0,0,0,0}
LanguageFinder 确定书写给定文本的语言 {12,0,0,0,0,0,0}
MakeCall 在两个给定的电话号码之间进行呼叫             {100,100,0,0,0,0,0}                     
Meteo 返回指定的法国城市的天 {12,0,0,0,0,0,0}
 
气信息
MessageSender 向给定接收者发送消息文本                     {100,80,80,0,0,0,0}                     
PhraseVectorBuilder 返回根据两个不同的给定语句而构建的phrase-uplet {10,0,0,0,0,0,0}
RSS_Titles 返回RSS源的给定URL的所有RSS标题          {0,0,0,0,0,0,0}
RSS_Description 返回RSS源的给定URL的给定RSS标题的描述    {0,0,0,0,0,0,0}
SemanticDiscovery 返回与给定的概念列表相匹配的已发现服务的列表 {0,0,0,0,0,0,0}
SemanticQueryAnalyzer               返回从以自然语言书写的给定短语中提取的相关概念的列表               {10,0,0,0,0,0,0}
SMSSender 将消息作为SMS发送至给定的移动电话号码      {100,80,0,0,0,0,0}
Synonyms 返回给定词语的同义词的列表                   {0,0,0,0,0,0,0}
SynVectorBuilder 返回给定语句的syn-uplet {10,0,0,0,0,0,0}
TermExtractor 返回从给定文本中提取的相关术语               {12,0,0,0,0,0,0}
Translator 返回被翻译为给定目标语言的给定文本的版本     {10,0,0,0,0,0,0}
处理模块PM被设置为按照说明书的逻辑组装(也即,已经由分析模块AM确定的总体说明书结构)来对所确定的语义软件组件SSC的软件组件SC进行组装,以便构建希望的应用AP。
如前所述,该组装是基于以下假设:应用说明书AS(或者问题)的需求之间的相关链接与所确定的软件组件SSC(解的块)之间的链接具有类似的对应关系。
因此,处理模块PM对其与需求的语义原子之间的语义距离最小的所选组件SC进行组织,以便构成应用AS的初始架构。该初始架构是通过复制问题结构(或者需求网络)以及使用解原子(或者组件SC)而不是问题原子(或者需求)完成的。
如前所述,对说明书需求之间的相关链接进行总结和表示的需求网络是由分析模块AM确定的。为此目的,分析模块AM可以使用上面提到的sem-uplet(次n-uplet)方法来发现需求(或者需求原子)之间的相关链接。通过使用phrase-uplet加sem-uplet方法,在语义上对说明书AS的语句两两地进行语义比较。更具体地,在说明书AS的需求R1与相同说明书AS的其他两个需求R2和R3之间进行比较的情况下:
-对两个phrase-uplet的内部syn-uplet两两地进行比较。换言之,将R1的phrase-uplet的每个syn-uplet与R2和R3的phrase-uplet的每个syn-uplet进行比较,
-针对每对计算语义接近程度(semProx),
-构建有序的次n-uplet(语义n-uplet,称为sem-uplet)。每个sem-uplet包括R1的每个syn-uplet与R2或者R3的syn-uplet之间的语义接近程度,并且定义语义距离。因此,得到了一个n-uplet集合,其按照语义距离表示每个需求关于其他需求的链接。可以对语义距离的级别进行“调节”,以便仅仅保留语义接近程度方面的“最佳”sem-uplet,也即,给定需求的语义上最为相关的链接。这意味着,假设每个需求具有有限数目的语义上最接近的其他需求。因此,可以认为,在整个说明书AS的上下文内,通过一个表示语义上最为接近的其他需求的sem-uplet的有限集合可以形式化地描述一个需求。
例如,如果R2与R1和R3链接,但是sem-uplet(R2,R3)>sem-uplet(R2,R1),则在最终模型上仅保留链接R2-R3。这是优化问题。可以通过确定两个sem-uplet之间的最大可接受间隙来调节模型。例如,可以认为,如果diff(sem-uplet(R2,R3),sem-uplet(R2,R1))>10,则仅保留链接R2-R3,其中“diff()”是功能差(或者相减)。在变形中,功能“diff()”的限度(或者阈值)可以等于5或者15,这取决于问题类别或者需求类型。在另一变形中,可以在问题模型(或者需求网络)中保留与大于最小临界级别的功能diff()相对应的所有链接,并由此将其复制到解模型中。
解“分子”具有与问题“分子”相同的空间结构,尽管其没有包含和使用相同类型的原子:问题原子是需求,解原子是组件SC。问题原子因为它们共享相同的概念并且涉及相同的需求而链接在一起;而解原子因为它们共享或者交换相同的数据而链接在一起。然而,包括需求之间的相关链接的需求网络(或者问题分子)包含与应用架构(或者解)相同的链接。
这两种类型的原子是不同的,并且没有完全相同的特性,在需求网络中相关的链接在初始组件结构中可能是不相关的。实际上,两个需求共享同一概念这一事实未必意味着两个对应的组件也具有交互。因此,需要对处理模块PM进行设置,以便优化应用AS的初始架构,更具体地,以便确定最佳组件交互模型。
优化过程旨在仅保留从问题结构继承的最有用的链接,也即,对应于两个组件SC(Comp1和Comp2)之间的实际数据交换的关联,其中组件Comp1的输出是组件Comp2的输入,反之亦然。
该优化过程可以使用作为语义元数据附加至组件操作的数据描述(更准确地,附加至其输入和输出)的语义标签,以便确定和优化所选组件SC之间的交互。
如果这些语义标签是恰当选择和设置的,可以连接组件SC,并且可以形式化地表示其连接。例如,如果Comp1.operation_A()的输出在语义上适合Comp2.operation_B()的输入,则可以通过从“A的输出”到“B的输入”的链接来连接Comp1和Comp2,并且可以写为:
out_A=Comp1.operation_A(A_parameters);
out_B=Comp2.operation_B(out_A);
或者更直接地:
out_B=Comp2.operation_B(Comp1.operation_A(A_parameters))。
这表示:两个连接的数据具有相同的语义“维度”,也即,其在语义上彼此适合(或者说它们是处理兼容的),因为它们不仅共享相同的数据类型,而且还共享相同的数据特性。可以通过参数“semTag”来表示该语义数据类型,其中参数“semTag”与UML标记的值相类似并且附加至语义描述(或者语义卡)SD内的输入和输出。
由于Comp1的输出与Comp2的输入在语义上彼此适合(例如,Comp1产生文本,而Comp2处理文本),因此可以将Comp1的输出连接至Comp2的输入这一事实未必意味着Comp2实际上在等待Comp1的输出而不是在等待例如Comp4(产生文本的另一组件)的输出。事实上,Comp1-Comp2连接性得以证明是因为:交互是在解结构中存在的链接之后被建立的。即使Comp4产生文本,其并不直接链接至Comp2。因此,不必尝试结合其输入-输出。
SemTag确保组件接口的一致性,出于此原因,它们是用于优化组件交互的重要元素。回想:在UML含义中,组件SC的接口是由其公共操作(具有各操作的参数)的集合构成的。例如,假设Comp1.operation_A()提供文本,而Comp2.operation_B()是组件Translator(翻译器)的操作translate()。由于翻译文本是有意义的,因此Comp1.operation_A()的输出必须适合Translator.translate()的输入。但是假设Comp1.operation_A()提供给定公司的股票符号,该符号与Translator.translate()用作输入的文本可以具有相同的数据类型(String(字符串)),但是其在语义上是不相同的,因为试图翻译股票符号是没有意义的。因此,附接至这两个数据的语义信息必须是不同的,由此,两个操作及其两个组件SC是不可连接的(或不可链接的)。
下面给出了组件Translator的语义卡SD的非限制性示例,以示出semTag的作用:
<semCard>
<URL>http://xxx.xx.xxx.x/components/Translation/Translator.asmx</URL>
  <component name="Translator">
    <domains>
      <domain name="Translation">
    <conceptslist="translation,version,language,source language,target
language,result"/>
        </domain>
        <domain name="Text">
      <conceptslist="text,chapter,paragraph,sentence,phrase,word,
language"/>
        </domain>
      </domains>
      <operation name="translate">
      <inputs>
        <input name="text_to_translate"concept="Text#Text"semtag="text"
/>
        <input name="source_language"
concept="Translation#SourceLanguage"semtag="language"/>
        <input name="target_language"
concept="Translation#TargetLanguage"semtag="language"/>
    </inputs>
    <output name="translated_text"concept="Text#Text"semtag="text"/>
<goal>The goal of the operation is to provide a translated_text written ina given target_language as a result of the translation of a giventext_to_translate written in a source_language.
    </goal>
    </operation>
  </component>
</semCard>。
当组件SC是web服务时,例如可以根据该服务的WSDL(Web服务描述语言)来生成其语义描述(语义卡)SD。但是,为了自动设置语义标签,如图1所示,可以使用设备D的可选的和特定的语义模块SSM。该模块SSM可以是处理模块PM的一部分。
该语义模块SSM可以分析操作的参数的名称和类型(其以WSDL进行描述),并且可以搜索特定本体中的语义对应关系。
该特定的本体包含如程序员经常使用的输入数据和输出数据的当前名称和类型的语义之间的链接以及对应的语义标签。
例如,具有类型“String”的、命名为“text”或者“content”或者“translated_page”或者“description”的数据可以具有语义标签“text(文本)”,因为数据具有文本的“维度”。具有类型“Date(日期)”或者“String”的、命名为“date”或者“current_date”的数据可以具有语义标签“date(日期)”,等等。
这种意在自动地设置语义卡SD内的语义标签的特定本体可以表示为简单的对应关系表。下面给出了这种对应关系表的一个示例。
 
数据名称 类型 语义标签
text,content,page,description...        String text(文本)
date,current_date... String|Date date(日期)
phone_number, String telephone_number
 
mobile_phone,... (电话号码)
lang,language,dest_lang,srce_lang,...                      String language(语言)
postal_code,zip_code,city_code,...         String zip_code(邮政编码)
...
本领域的技术人员可以容易地构建这种特定本体,并且该特定本体可以通过对示出了程序员实践的已发布组件接口的内容进行分析、并继而通过总结其良好使用性来逐渐改进。
下面给出一个示例,其示出了如何将语义标签考虑在内来构建自动组件交互模型。
在该非限制性示例中,假设说明书AS的需求(以自然语言表示)指明:应用AP意在产生新闻源的翻译版本。而且,假设sem-uplet加组件发现方法已经为该需求分配了两个组件SC:RSS-accessor(RSS存取器)组件和Translator(翻译器)组件(上文已经给出了Translator组件的语义卡的示例)。
例如,RSS-accessor组件旨在从可经由互联网访问的RSS源收集信息,并且其接口包含两个操作:getAllTitle()得到给定URL的源的所有主要标题,而getDescriptionOfTitle()得到该标题的短文的文本。
例如,Translator组件是经典组件,其操作translate()将通过给定源语言(输入参数)书写的文本(作为输入参数给出)翻译为通过目标语言(输入参数)书写的翻译文本(输出)。
现在,问题在于如何自动地且符合逻辑地组装这两个组件(也即,其三个操作),以便实现说明书需求(也即,提供新闻源的翻译版本)。为此目的,必须考虑两点。
第一点在于将语义标签而不是数据作为组件操作的输入和输出。这允许展现出一些可能的连接,而不是足够准确到产生完全一致的合成。
第二点在于考虑目标组件组装的主要输出,以便找到哪些组件操作可以提供其输入,并且迭代针对这些操作的处理:搜索哪些其他操作可以提供其输入。继而,从主要输出逐渐回到产生该输出所需的输入数据,这样,通过链接其输入和输出,自动地对不同的组件操作进行了组装。
同时,可以按照表示操作调用的伪代码的形式将链接存储在FILO(先进后出)堆栈中。在此过程的结尾,堆栈的内容表示所选组件之间的正确交互。
组件组装的主要输出由说明书需求的表示给出。在这个希望翻译版本的示例中,主要输出是翻译文本,也即操作Translator.translate()的输出。因此,可以将该主要输出推入堆栈,表示为目标组件组装所代表的功能的“返回”:
translated_text=Translator.translate(text_to_translate,src_lang,dest_lang);
return translated_text。
如果现在回到该操作的输入(其语义标签分别是“language”、“language”和“text”),可以看到,具有语义标签“text”的数据是由操作RSS.getDescriptionOfTitle()提供的。因此,可以将该操作连接到Translator.translate(),并且可以在堆栈中添加对操作RSS.getDescriptionOfTitle()的调用,按照如下所示通过交换的参数的名称来与Translator.translate()链接:
text_to_translate=RSS.getDescriptionOfTitle(site_address,title);
translated_text=Translator.translate(text_to_translate,src_lang,dest_lang);
return translated_text。
现在,如果回到RSS.getDescriptionOfTitle()的输入(其语义标签是“URL”和“title(标题)”),可以看到,具有语义标签“title”的数据是由操作RSS.getAllTitles()提供的。因此,还可以通过将新操作调用推入堆栈来连接这两个操作:
titles=RSS.getRSSTitles(adr_site);
text_to_translate=RSS.getDescriptionOfTitle(site_address,title);
translated_text=Translator.translate(text_to_translate,src_lang,dest_lang);
return translated_text。
分配给说明书需求的所有组件SC都被使用并且连接在一起,堆栈目前包含组件组装的总体结构,其形式是几乎可执行的伪代码。然而,优选地,在执行该伪代码之前对其进行细化。下面列出了这些细化中的一些:
-必须考虑数据类型。例如,RSS.getAllTitle()返回一组String,而不是单个String;
-一些参数的名称可以通过其语义进行求解,也即,通过其semTag的帮助进行求解。例如,“adr_site”和“site_address”恢复相同的概念,并且具有相同的semTag,
-其他一些参数可以利用原始需求中所包含的某些有用信息进行求解。例如,如果需求规定了法文翻译,则操作Translator.translate()的参数“dest_lang”必须设置为“French(法语)”,以及
-一些另外的组件SC或者组件操作可以用来求解其他参数。例如,可以通过使用效用组件“Language Finder(语言查找器)”或者使用RSS源组件上的操作getSourceLanguage()来设置参数“src_lang”,从而自动确定给定文本的源语言。
可以提供设备D的另一可选和特定模块OSM,以便执行意在完成伪代码的细化。该模块OSM可以是处理模块PM的一部分,或者耦合至如图1中所示的处理模块PM。例如,该模块OSM可以是例如以下的软件模块:
Vector ComponentAssembly(String site_address){
Vector result;
titles=RSS.getAllTitles(site_address);
foreach title in titles{
    text_to_translate=RSS.getDescriptionOfTitle(site_address,title);
    source_lang=LanguageFinder.getLanguage(text_to_translate);
    translated_text=Translator.Translate(text_to_translate,source_lang,
    "french");
    result.add(title+translated_text);
    }
return result;
}。
在可能的细化之后,伪代码可以最终转换成可执行的Java文件,以便例如检测由优化处理产生的组件组装的有效性。
由于说明书AS的原始文本的语义分析是自动的,并且考虑到软件组件SC的发现和组装是自动的,考虑到应用设计的优化也是自动的,并且最终考虑到有可能根据该最优化设计来生成兼容的、可执行的代码,因此认为本发明是用以直接根据其说明书AS来产生可执行应用AP的一种手段。
优选地,设备D是软件模块,并且更具体地,该设备的分析模块AM和处理模块PM及可能其存储装置SM都是软件模块。但是它们也可以分别由电子电路或者硬件模块、或者硬件和软件模块的结合来构成。
还可以认为本发明是一种用于从软件组件SC来构建应用AP的方法。
可以借助于例如上文参考图1描述的设备D来实现这种方法。因此,此后将只提及其主要特性。
根据本发明的方法包括,每当接收到说明书AS(描述将要构建的应用AP)时:
-执行对该说明书AS的语义分析,以便从说明书AS的文本中提取基本需求SR以及这些基本需求SR之间的链接,这些链接的集合称为“说明书的总体结构”,继而
-对于每个基本需求SR,提取其所包括的相关术语,并且对于每个基本需求SR,基于其提取的相关术语来构建“语义描述”,该“语义描述”表示“该基本需求的语义”,继而
-访问至少一个组件库SM,在SM中,每个组件SC被注册和描述为“语义软件组件”SSC,以便针对每个提取的基本需求SR,通过对该基本需求SR的语义与组件语义描述SD进行比较,来确定哪个(哪些)组件覆盖了所述提取的基本需求SR,以及
-最终,按照说明书的总体结构来组装确定的这些软件组件SC,以便构建应用AP。
本发明不限于以上仅作为示例描述的方法和设备的实施方式,而是涵盖本领域技术人员认为位于所附权利要求书范围之内的所有备选实施方式。

Claims (14)

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中的每一个进行比较,以便确定每个基本需求(SR)和每个存储的软件组件(SC)之间的语义距离。
5.根据权利要求4所述的方法,其特征在于:i)确定语义接近程度,所述语义接近程度表示每个req-uplet与每个comp-uplet的共同词语的数目,以及ii)针对每个基本需求(SR),构建称为“sem-uplet”的次n-uplet,其表示每个req-uplet和每个comp-uplet的req-uplet之间的语义接近程度,每个次n-uplet定义语义距离,继而选择与定义了最小语义距离的次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)与这些输入/输出参数相关联的相关术语和/或特定元数据。
10.根据权利要求8和9之一所述的设备,其特征在于,所述分析装置(AM)被设置为:用于针对每个提取的基本需求(SR),确定其语义描述(SD)与每个所述存储的软件组件(SC)的语义描述(SD)之间的语义距离,继而,用于选择与最小语义距离相对应的存储的软件组件(SC),这个选择的软件组件(SC)意在实现所述基本需求(SR)。
11.根据权利要求9和10的组合所述的设备,其特征在于,所述分析装置(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之间的语义接近程度,每个次n-uplet定义语义距离,继而,用于选择与定义了最小语义距离的次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)之间建立相关链接。
CN2008101771133A 2007-12-07 2008-12-05 自动构建应用的设备和方法 Expired - Fee Related CN101452392B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP07301646.1 2007-12-07
EP07301646A EP2071452A1 (en) 2007-12-07 2007-12-07 Device and method for automatically building applications from specifications and from off-the-shelf components selected by semantic analysis

Publications (2)

Publication Number Publication Date
CN101452392A true CN101452392A (zh) 2009-06-10
CN101452392B CN101452392B (zh) 2012-09-05

Family

ID=39272928

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008101771133A Expired - Fee Related CN101452392B (zh) 2007-12-07 2008-12-05 自动构建应用的设备和方法

Country Status (12)

Country Link
US (1) US8453105B2 (zh)
EP (1) EP2071452A1 (zh)
JP (1) JP5319694B2 (zh)
KR (1) KR101584972B1 (zh)
CN (1) CN101452392B (zh)
AU (1) AU2008333378B2 (zh)
BR (1) BRPI0820905A2 (zh)
IL (1) IL205865A (zh)
MX (1) MX2010006118A (zh)
RU (1) RU2495480C2 (zh)
TW (1) TWI446263B (zh)
WO (1) WO2009071440A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102236556A (zh) * 2011-08-01 2011-11-09 苏州万图明电子软件有限公司 一种软件产品的快速构建方法
CN103154905A (zh) * 2010-10-11 2013-06-12 国际商业机器公司 组合应用的自动化分析
CN104156202A (zh) * 2014-05-20 2014-11-19 杨圣泽 一种软件需求分析的方法

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10671698B2 (en) * 2009-05-26 2020-06-02 Microsoft Technology Licensing, Llc Language translation using embeddable component
US10282419B2 (en) * 2012-12-12 2019-05-07 Nuance Communications, Inc. Multi-domain natural language processing architecture
CN104346152B (zh) * 2013-07-31 2018-10-30 国际商业机器公司 用于代码开发的方法及其系统
CN108139893B (zh) * 2015-07-16 2021-08-06 山东程序元软件有限公司 基于组件的软件系统及开发方法
EP3862871A1 (en) * 2016-12-19 2021-08-11 (Un)Manned N.V. Method and apparatus for real-time control loop application execution from a high-level description
TWI648682B (zh) * 2017-05-05 2019-01-21 如如研創股份有限公司 軟體的自動化產生系統
RU2691837C1 (ru) * 2018-09-20 2019-06-18 Юрий Михайлович Акаткин Способ автоматизированного проектирования приложений
RU2711003C1 (ru) * 2018-11-19 2020-01-14 Федеральное государственное унитарное предприятие "18 Центральный научно-исследовательский институт" Министерства обороны Российской Федерации Способ формирования технологической цепочки фотограмметрической обработки космических изображений местности
JP6929475B1 (ja) * 2020-06-01 2021-09-01 三菱電機株式会社 需要分析装置、需要分析プログラムおよび記憶媒体

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63226730A (ja) * 1987-03-17 1988-09-21 Mitsubishi Electric Corp プログラム自動作成方法
US5699507A (en) * 1995-01-17 1997-12-16 Lucent Technologies Inc. Method of identifying similarities in code segments
EP1122640A1 (en) * 2000-01-31 2001-08-08 BRITISH TELECOMMUNICATIONS public limited company Apparatus for automatically generating source code
WO2002029618A1 (en) * 2000-09-30 2002-04-11 Intel Corporation (A Corporation Of Delaware) A method and apparatus for determining text passage similarity
KR20020045343A (ko) * 2000-12-08 2002-06-19 오길록 표준화된 문장 구문구조 및 의미구조에 기반한 정보생성/검색 장치 및 그 방법
US20020152206A1 (en) * 2001-04-12 2002-10-17 International Business Machines Corporation Synonym-enabled enhancements for matching and registering internet domain names
US7149734B2 (en) * 2001-07-06 2006-12-12 Logic Library, Inc. Managing reusable software assets
US7484225B2 (en) * 2002-08-08 2009-01-27 Sun Microsystems, Inc. System and method for describing and identifying abstract software modules in peer-to-peer network environments
US8676853B2 (en) * 2003-02-27 2014-03-18 Hewlett-Packard Development Company, L.P. System and method for software reuse
US7707566B2 (en) * 2003-06-26 2010-04-27 Microsoft Corporation Software development infrastructure
US7890540B2 (en) * 2003-07-22 2011-02-15 Sap Ag Browsing meta data for an enterprise service framework
US7761320B2 (en) * 2003-07-25 2010-07-20 Sap Aktiengesellschaft System and method for generating role templates based on skills lists using keyword extraction
US7761858B2 (en) * 2004-04-23 2010-07-20 Microsoft Corporation Semantic programming language
US7676791B2 (en) * 2004-07-09 2010-03-09 Microsoft Corporation Implementation of concurrent programs in object-oriented languages
US8050907B2 (en) * 2004-07-30 2011-11-01 Microsoft Corporation Generating software components from business rules expressed in a natural language
US7640532B2 (en) * 2004-08-25 2009-12-29 International Business Machines Corporation Mapping software code to business logic
JP2006350729A (ja) * 2005-06-16 2006-12-28 Hitachi Ltd アプリケーションソフトウェア構築方法、アプリケーションソフトウェア構築処理プログラム及びアプリケーションソフトウェア構築装置
EP1818816A1 (fr) * 2006-01-24 2007-08-15 Alcatel Lucent Procédé de création de service, produit de programme d'ordinateur et système informatique de mise en oeuvre de ce procédé
CN100432930C (zh) * 2006-12-06 2008-11-12 武汉大学 一种软构件资源管理方法
US7783659B2 (en) * 2007-02-07 2010-08-24 International Business Machines Corporation Method and system for assessing and refining the quality of web services definitions

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103154905A (zh) * 2010-10-11 2013-06-12 国际商业机器公司 组合应用的自动化分析
CN103154905B (zh) * 2010-10-11 2016-06-01 国际商业机器公司 用于组合应用的自动化分析的装置和方法
CN102236556A (zh) * 2011-08-01 2011-11-09 苏州万图明电子软件有限公司 一种软件产品的快速构建方法
CN104156202A (zh) * 2014-05-20 2014-11-19 杨圣泽 一种软件需求分析的方法

Also Published As

Publication number Publication date
TWI446263B (zh) 2014-07-21
KR101584972B1 (ko) 2016-01-13
EP2071452A1 (en) 2009-06-17
CN101452392B (zh) 2012-09-05
AU2008333378B2 (en) 2013-01-31
WO2009071440A1 (en) 2009-06-11
MX2010006118A (es) 2010-07-01
IL205865A (en) 2014-02-27
AU2008333378A1 (en) 2009-06-11
US20090150853A1 (en) 2009-06-11
JP5319694B2 (ja) 2013-10-16
BRPI0820905A2 (pt) 2015-06-23
RU2010128102A (ru) 2012-01-20
IL205865A0 (en) 2010-11-30
RU2495480C2 (ru) 2013-10-10
JP2011507061A (ja) 2011-03-03
KR20100091209A (ko) 2010-08-18
US8453105B2 (en) 2013-05-28
TW200939121A (en) 2009-09-16

Similar Documents

Publication Publication Date Title
CN101452392B (zh) 自动构建应用的设备和方法
Hogenboom et al. A survey of event extraction methods from text for decision support systems
CN102955697B (zh) 基于面向方面的构件库构建方法
EP1835417A1 (en) Web service with associated lexical tree
WO2008054331A1 (en) System and method for processing language independent natural language statements
Merten et al. Requirements Communication in Issue Tracking Systems in Four Open-Source Projects.
Kerremans et al. Representing multilingual and culture-specific knowledge in a VAT regulatory ontology: Support from the termontography method
Fiorelli et al. CODA: Computer-aided ontology development architecture
Lam et al. Thingtalk: an extensible, executable representation language for task-oriented dialogues
Choe et al. Building Korean Abstract Meaning Representation corpus
Fiorelli et al. Assessing VocBench custom forms in supporting editing of lemon datasets
Jordanov et al. Knowledge-based and intelligent information and engineering systems
Hellmann et al. TowardsWeb-Scale Collaborative Knowledge Extraction
Ed-Douibi et al. APIComposer: Data-driven composition of REST APIs
Chiarcos et al. Building a Linked Open Data cloud of linguistic resources: Motivations and developments
Sulger et al. Towards identifying hindi/urdu noun templates in support of a large-scale lfg grammar
Mou et al. Visual orchestration and autonomous execution of distributed and heterogeneous computational biology pipelines
Musham et al. Visual SBVR
Thompson et al. Promoting interoperability of resources in META-SHARE
US20090222790A1 (en) System and method for processing resource description framework data
Chitchyan Semantics-based composition for textual requirements
Sarma et al. Enhanced Thesaurus Framework Using Service-Oriented Architecture
CN118170386A (zh) 一种术语编译方法、术语编译系统、存储介质和电子设备
LARVET APPLICATION DESIGN BY ASSEMBLY OF SEMANTIC SOFTWARE COMPONENTS
Hladky et al. Discover Shadow Groups from the Dark Web

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120905

Termination date: 20161205