CN101013365A - 用于描述软件组件的方法和系统 - Google Patents
用于描述软件组件的方法和系统 Download PDFInfo
- Publication number
- CN101013365A CN101013365A CNA2007100044508A CN200710004450A CN101013365A CN 101013365 A CN101013365 A CN 101013365A CN A2007100044508 A CNA2007100044508 A CN A2007100044508A CN 200710004450 A CN200710004450 A CN 200710004450A CN 101013365 A CN101013365 A CN 101013365A
- Authority
- CN
- China
- Prior art keywords
- software
- component
- assembly
- piece
- application
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/36—Software reuse
Abstract
提供了一种针对用户或者企业的计算需要生成按需的自定义运行时解决方案的方法。创建对应于商务情形的不同计算任务的软件组件的库。把每一个软件组件与一个或多个元描述符相关联。所述软件组件和相关的元描述符通过软件组件元管理系统(SCMMS)来管理。依照反映实际使用情况的方式,将元描述符设计成自适应的。元描述符描述了组件的静态和动态属性。
Description
技术领域
本发明总体上涉及计算机应用开发,更具体地说,涉及用于对软件组件进行选择、汇编和打包的系统和方法。
背景技术
纽约Armonk的国际商业机器公司(IBM)已经处于商务计算方面的新典范的最前沿。数十年间,商务计算的典范在于:为每一种商务需要具体设计并且构造自定义商务应用。当然,大部分自定义商务应用得益于通常可利用的、标准化的应用。例如,需要数据库管理系统(DBMS)的商务具有多个供应商可供选择,并且每一选项通常向应用开发者提供许多相同的必要特征和接口。然而,DBMS仅仅是可以实现商务解决方案所需的多个可能组件之一。
随着互联网(有时也称为“web”)的出现,商务通信也已得到发展。企业和消费者具有多种先前不可利用的通信手段,其中包括但不限于:企业对企业(B2B)的链接和企业对消费者(B2C)的链接。由于企业试图充分利用web,所以某些公司具备在特定环境下工作的特定应用,将其称为“电子商务”应用。另外,诸如纽约Armonk的国际商业机器公司(IBM)之类的公司已经开发出了便于电子商务应用的开发、整合、执行和管理的产品。一种这样的IBM产品是“WebSphere”,其包括用于开发电子商务应用的工具以及用于运行基于web的应用的中间件(middleware)。WebSphere的一个部分是WebSphere Application Server(WebSphere应用服务器,WAS),其是WebSphere系列产品的运行时组件。基本上,WAS是采用Java虚拟机(JVM)的Java进程。
存在多种方法来开发用于特定企业的商务软件解决方案。一种方法涉及把软件组件集成为“应用包”的独立软件供应商(ISV)。另一种方法涉及集成软件和硬件组件以及应用包的系统集成商(SI)。SI确定所需要的功能,选择用于实现部分所需功能并且生成最终的“解决方案包”的市场上可以买到的硬件和软件组件。除了通过SI执行任何任务以外,解决方案供应商(SP)可以生成自定义软件来集成并且增强市场上可以购买到的硬件和软件组件以及基础设施软件。术语SI和SP往往可互换地使用。由ISV或者SP将其与软件组件集成的那些软件组件被称为自定义代码(有时也称为“应用”或者“粘结(glue)”代码)。典型的软件组件的示例包括但不局限于:IBM HTTP Server和相关联的插件、WebServer Application Server-Express运行时应用和IBM DB2 Universal Database(UDB)组件。所要求保护的主题可以由SI、SP或者ISV采用,因此,在整个说明书中,SI、SP和ISV将全部被称为“开发商”或者“用户”(就所要求保护的主题而言,作为所提供的工具的用户)。
澄清以下两个术语、即术语“应用(application)”和“解决方案(solution)”是有益的。在某些情况下,一个应用解决了多个问题,并且因此可以被认为是一个解决方案。然而,因为解决方案可解决问题的目标集,所以术语“解决方案”通常指的是应用,不过某些开发商也将其应用称为解决方案。解决方案通常比应用的范围更宽,这是因为,它解决或者致力于解决横向以及纵向的商务问题。为了端对端地运行商务,通常要递送解决方案,而不仅仅是集中在一个局部(或者商务应用)上。应用可被用于解决商务问题的集合,并且还可以被用于解决其它客户的同类问题的其它集合。
需要这样的一种方法和系统、或者软件组件元管理系统(SCMMS),用于使开发商(例如,ISV、SP或者SI)能够基于客观计分(scoring)系统来查看并且选择可利用的用于特定应用或解决方案的组件。理论上,客观计分系统可以被调整以便反映关于客户的具体需求和改进的知识,并且包括反馈,以便使特定应用或者解决方案的生成提供更加准确的计分,并且就后续的应用和解决方案的生成而言,能由此提供更好的结果。
发明内容
提供了一种针对用户或者企业的计算需要生成按需的(on-demand)自定义运行时解决方案的方法。开发商通常必须集成多个软件元件或者组件来产生商务解决方案。组件可以包括诸如产品、应用、自定义代码以及其它资产之内的项目。
创建对应于商务情形的不同计算任务的软件组件的库。把每一软件组件与一个或多个元描述符(meta descriptor)相关联。所述软件组件和相关的元描述符通过软件组件元管理系统(SCMMS)来管理。以用于反映实际使用情况的方式,将元描述符设计成自适应的。
SCMMS使用户能够基于与组件一起存储的元描述符来选择、汇编和打包软件组件。开发商使用所述组件的精选或基本子集来创建在特定运行时环境下执行的完整解决方案或应用。
元描述符描述了组件的静态和动态属性。与每一组件相关联的静态属性的示例包括但不局限于:对组件进行表征的ID、相互依赖性、外部依赖性、版本信息、与组件相关联的日期、组件之间的关系、取决于供应商的分类、生命周期信息、价格信息和关键字。与每一组件相关联的动态属性的示例包括但不局限于:应用信息,即,之前如何使用所述组件,以及关联信息,即,所述组件与其它组件一起使用的频率如何。
附图说明
当结合如下附图考虑如下对所公开的实施例的详细说明时,可以获得对本发明的更彻底的理解,其中:
图1是包括所要求保护的主题的示例性计算系统的框图。
图2是采用所要求保护的主题并且包括分布元件的示例性应用开发体系结构的框图。
图3是举例说明与所要求保护的主题一起采用的层级结构的层级树的框图。
图4是在所要求保护的主题的一种实现方式中采用的一个示例性MetaDataDescriptorObject(MDDO)存储器对象。
图5是结合所要求保护的主题执行的选择组件处理过程的流程图。
图6是举例说明图5的选择组件处理过程中的对组件进行计分方面的流程图。
图7是举例说明图5的选择组件处理过程中的集成组件方面的流程图。
图8是举例说明图5的选择组件处理过程中的计算关键字得分(S_k)方面的流程图。
图9是举例说明图5的选择组件处理过程中的计算应用得分(S_app)方面的流程图。
图10是举例说明图5的选择组件处理过程中的计算关联得分(S_ass)方面的流程图。
具体实施方式
虽然是参考基于WebSphere的系统来描述的,但是所要求保护的主题可以在希望组件重新使用的任何信息技术(IT)系统中实现。所公开的主题还可适用于异构系统。计算领域的技术人员将会意识到的是,除了下面将描述的那些方面之外,所公开的实施例还与各式各样的计算环境有关。另外,所公开的发明中的方法可以依照软件、硬件、或软件和硬件的组合来实现。硬件部分可以使用专门的逻辑来实现;软件部分可以被存储在存储器中并且由适当的指令执行系统来执行,其中所述指令执行系统诸如是微处理器、个人计算机(PC)或者大型机。
在此文的上下文中,“存储器”或者“记录介质”可以是用于包含、存储、传递、传送或运送程序和/或数据的任何手段,所述程序和/或数据可供指令执行系统、设备或装置使用或与其结合使用。存储器和记录介质可以是但不局限于:电子的、磁性的、光学的、电磁的、红外的或者半导体系统、设备或装置。存储器和记录介质还包括但不局限于如下装置,例如:便携式计算机磁碟、随机存取存储器(RAM)、只读存储器(ROM)、可擦可编程序只读存储器(EPROM或者闪速存储器)和便携式光盘只读存储器或其它适当的可以在其上存储程序和/或数据的介质。
按照所要求保护的主题,一个实施例致力于提供一种用于针对用户或者企业的计算需要生成按需的自定义运行时解决方案的编程方法。正如此处使用的那样,术语“编程方法”被定义为指的是目前执行的一个或多个处理步骤;或者,作为选择,指的是能够在将来的一个时间点上执行的一个或多个处理步骤。术语“编程方法”预期有三种替代形式。第一,编程方法包括目前执行的处理步骤。第二,编程方法包括包含计算机指令的计算机可读介质,当该计算机指令由计算机执行时,可执行一个或多个处理步骤。最后,编程方法包括通过软件、硬件、固件或者它们的任意组合被编程用以执行一个或多个处理步骤的计算机系统。应该理解的是,术语“编程方法”不应当被解释为同时具有一个以上的替代形式,而是应当按照替代形式的真实意义来解释,其中,在任何给定的时间点上,仅仅存在多个替代形式之一。
现在转向附图,图1是包括所要求保护的主题的示例性计算系统体系结构100的框图。中央处理单元(CPU)102耦合至监视器104、键盘106和鼠标108,这些部件合起来便于人与计算系统100的交互。附属于CPU102的数据存储组件110,可以被并入到CPU102中,即,作为内部装置,或者可以通过各种通常可利用的连接装置从外部附连到CPU102,所述连接装置诸如为但不局限于通用串行总线(USB)端口(未示出)。如图所示,数据存储设备110用于存储多个示例性计算机编程模块,即,“模块_1”112、“模块_2”114和“模块_3”116。应该注意的是,典型的应用或者系统往往包括比三(3)个模块更多的模块,但是,为了简单起见,只示出了三个。模块_1112、模块_2114和模块_3116表示由开发商从中选择对应于商务情形的不同计算任务的特定组件的软件组件库中的组件。
数据存储设备110上还存储有软件组件元管理系统(SCMMS)118。SCMMS118是一种针对用户或者企业的计算需要生成按需的自定义运行时解决方案的系统。每一软件组件112、114和116均与一个或多个元描述符(未示出)相关联,这些元描述符被存储在SCMMS数据区域120中。软件组件112、114和116以及存储在数据区域120中的相关元描述符由SCMMS118来管理。
CPU102与互联网122相连,互联网122还连接至服务器计算机124。虽然在此例子中CPU102和服务器124经由互联网122可通信地耦合,但是它们还可以通过任意数目的通信介质来耦合,所述通信介质诸如为但不局限于局域网(LAN)(未示出)。此外,应当注意的是,存在许多可能的计算系统配置,计算系统100仅仅是其中一个简单的示例。
图2是采用了所要求保护的主题的解决方案或应用开发系统130的框图。在开发商递送了自定义商务解决方案的特定软件市场中,处理可以被划分为至少三(3)个不同的阶段:解决方案浏览132、解决方案开发或解决方案编制134、和解决方案打包136。解决方案测试(未示出)是解决方案开发134的子集。解决方案配置(deployment)阶段138可以被认为是第四阶段。
虽然主要就解决方案浏览阶段132进行描述,但是如通过SCMMS118(图1)所举例说明的那样,所要求保护的主题也可应用于解决方案开发134、解决方案打包136和解决方案配置138。
在解决方案浏览132期间,开发商访问SCMMS118以选择组件,诸如模块_1112(图1)、模块_2114(图1)和模块_3116(图1),这些组件是开发商确定需要包括在所提出的商务解决方案(在此例子中,是应用142)中的。应该注意的是,可以存在任意数目的所选组件,每个组件均可由技术专家或者现成的产品来创建。下面结合图5-10来比较详细地描述用于选择要包含到应用142中的组件的处理过程。
在此例子中,在解决方案浏览132期间,开发商选择自定义软件以及其它组件以便提供专用于特定商务问题的功能。SCMMS118通过提供查看可用组件的名称、相关联的特性和排名,来有助于此处理过程。
在解决方案开发134期间,核心组件诸如为但不局限于HTTP服务器和相关联的插件144、Websphere应用服务器快速运行时模块146和DB2通用数据库(UDB)快速运行时模块148。组件144、146和148向应用142提供必要的功能。如上文所解释的那样,SCMMS118用于使开发商能在用于组件144、146和148的每一个的各种选项当中进行选择。正如在解决方案浏览132中那样,在解决方案开发134期间所添加的各种组件可以是自定义设计的或者是现成的模块、应用和/或装置。
在解决方案打包136期间,开发商通常在SCMMS118的帮助下根据需要提供附加组件以便产生配置包152。例如,除应用112和组件144、146和148以外,开发商可能还需要提供诸如安装模块150之类的组件,在此例子中,所述安装模块150用于解压缩计算机存储器文件并且在诸如客户系统156之类的目标系统上安装解决方案打包136。SSMMS118可以由开发商采用以便在多个可利用的安装模块当中做出理性决定。在解决方案打包136中,生成配置包152,以便经由此例中的CD154和/或诸如服务器124(图1)之类的分段运送服务器(staging server)来递送。
解决方案配置138举例说明了用于向最终客户端或者客户分送解决方案包152的某些方法。这种分送技术的示例包括但不局限于光盘(CD)154和服务器124(图1),其中所述光盘154可以被邮寄或者递送给客户以便安装在客户系统156上,并且客户系统156可以从服务器124下载产品或者解决方案,诸如配置包152。计算领域的技术人员应该意识到的是,除CD154和服务器124以外,还存在许多可能的递送选择。
图3是举例说明在所要求保护的主题的这个描述中采用的层级结构的示例性层级树160的框图。树160开始于供应商软件161这最上一级,其表示用于特定客户端的商务解决方案。当然,树160仅仅是层级结构的一种示例,并且供应商软件161仅仅是树160中的条目的一种示例。在供应商软件161的下面是两个示例性应用,即,IBM软件组件162和供应商应用163。换言之,在此例子中,客户端的软件解决方案161包括IBM软件162和由供应商自身开发的软件或者应用163。
IBM软件162由以下两个组件组成,即,WebSphere组件165和DB2组件166。另外,在此例子中,供应商应用163被显示为由WebSphere165的组件构成。在树160中,在WebSphere165下面一级所包括的是两个组件,即,WebSphere门户服务器(WebSpherePortal Server)168和WebSphere应用服务器(WAS)170。第二供应商应用164也由与WebSphere门户服务器168相关联的组件组成。
WAS 170包括图形用户接口(GUI)176和安全组件178。GUI176包括WAS管理控制台184。安全组件178包括安全服务器186、安全协作器(collaborator)188和安全插件模块190。
DB2组件166包括更低级别的DB2通用数据库(DB2UDB)组件172和DB2信息积成器(Information Integrator,II)组件174。DB2UDB172包括可扩展标记语言(XML)使能器组件180,其包括XML扩展器组件192。DB2II组件174包括适配器组件182,其包括Oracle适配器组件194。
在此例子中,供应商软件161处于最上一级,并且树160中的其它每一个组件处于比供应商软件161更低的级别上。依照类似的方式,WebSphere165处于比Websphere门户服务器168和WAS170高的级别,而Websphere门户服务器168和WAS170都处于较低级别。树160中特定组件的位置的重要性可确定应用于一个组件的特定规则如何影响其它组件。应用于树160的规则类型的示例包括但不局限于生命周期规则、版本控制(versioning)规则、相互关系规则和访问控制规则。
某些示例性的规则如下:
生命周期规则
·注册/创建:注册在多个级别上发生。当注册在较高级别上发生时,利用该较高级别的元描述符200中的信息来自动填充较低级别的组件的元描述符200(参见图4)。
·修改/更新:较低级别的节点可以覆盖继承的元描述符200以便更好地描述它们自己。倘若如此配置,那么较高级别的节点的更新会填充孩子节点。换言之,存在可选的传播。
·删除:删除操作传播至较低级别的节点。
版本控制
·相同软件或者组件的多个版本可以由SCMMS118(图1)维护并且按要求进行检索。
·查询:当查询不包括版本控制专用信息时,检索当前版本。
·创建/注册新版本:版本控制在不同级别上发生。把当前版本标记从先前版本组件移动到较新的版本组件。
·版本标记:版本标记被用来跨越版本将组件分组为虚拟组,以便易于检索。例如,“稳定的版本(Stable Version)”可以包括Websphere门户服务器168的1.0版本和WAS170的1.2版本等。在此例子中,稳定的版本组表示已经被测试或者被证明能够一起工作的一组组件。
相互关系
·定义了三种基本的相互关系:包含;依赖;和互斥,其中包含和依赖具有方向。
·如果从组件A(诸如DB2166)向组件B(诸如DB2UDB172)创建了包含关系,那么从组件A的所有先辈组件(诸如供应商软件161和IBM软件162)以及组件B的所有后辈组件(诸如XML使能器180和XML扩展器192)中创建了相同的关系。
·如果从组件A(诸如DB2166)向组件B(诸如DB2UDB172)创建了依赖关系,那么从组件A的所有先辈组件(诸如IBM软件162和供应商软件161)中创建了相同的关系。
·如果在组件A(诸如XML扩展器192)和组件B(诸如Oracle适配器194)之间创建了互斥关系,那么在组件A的所有先辈(诸如XML使能器180和DB2UDB172)以及组件B的所有先辈(诸如适配器182和DB2II174)之间创建了相同的关系。
访问控制
·对较高级别的组件的访问许可传播至后辈的较低级别的组件。
·对较低级别的组件的访问拒绝传播至先辈的较高级别的组件。
应该注意的是,上文列出的规则和特定组件仅仅是为了举例说明的目的而给出的。所要求保护的主题的任何具体实现方式中的规则集可以包括这些示例的添加、减少或修改了的版本。另外,有关组件兼容性的特定示例未必反映出示例性组件的实际兼容性。
图4是在所要求保护的主题的一种实现方式中采用的示例性MetaDataDescriptorObject(MDDO)存储器对象200。MDDO存储器对象200包括标题部分202、属性部分204和方法部分206,其中标题部分仅仅说明对象200的名称,即,“MetaDataDescriptorObject”,属性部分包含与MDDO存储器对象200相关联的存储器元件或属性,而方法部分206包括可以结合MDDO存储器对象200一起执行的功能或者方法。应该注意的是,所描述的属性和方法仅仅是为了举例说明的目的而使用的。还可以采用额外的和/或不同的属性和方法来实现所要求保护的主题。
属性部分202包括“mddID”属性208、“componentID(组件ID)”属性210、“interDependencies(相互依赖性)”属性212、“extemalDependencies(外部依赖性)”属性214、“version(版本)”属性216、“dates(日期)”属性218、“relationships(关系)”属性220、“classifications(分类)”属性222、“lcStatus”属性224、“pricing(定价)”属性226、“keywords(关键字)”属性228、“applications(应用)”属性230和“associations(关联)”属性232。对象200的例示(instantiation)被存储在数据存储设备110(图1)的SCMMS数据120(图1)中。
mddID属性208是包含对对象200的特定实例(instance)的引用的MDDObjectID类型的变量。对象200的每一实例均具有用于属性208的唯一值,其允许每一实例被唯一地标识。ComponentID属性210是ComponentID类型的变量,其存储对与对象200的特定例示相关联的特定组件的引用。mddID属性208和componentID属性210都由选择组件处理过程300采用(参见图5-10),以便在选择资源之前定位涉及特定组件的信息。
interDependencies属性212是Vector(矢量)类型的变量,其存储由对象200的这个例示所引用的组件所依赖的组件和依赖于此特定例示的组件的记录。换言之,属性212是componentID210类型的变量列表,这些变量引用与对象200的特定例示相关的组件。
externalDependencies属性214是Vector类型的变量,其存储由对象200的此例示所引用的组件所依赖的外部软件或系统的记录。某些示例包括但不局限于特定操作系统、中间件平台、适配器等。
version属性216是VersionInfo类型的变量,其标识特定的数据结构(未示出),所述特定的数据结构存储如下信息,其诸如为但不局限于:由对象200引用的组件的版本号,多个最新版本和标记信息,例如“Beta,”、“GA,”、“test,”等。
dates属性218是DateInfo类型的变量,其用于标识特定的数据结构(未示出),所述特定的数据结构存储如下信息,其中包括但不限于:创建对象200的特定例示的日期、对象200的例示被修改的日期、和例示期满或者不再可供选择的日期。
relationships属性220是Vector类型的变量,其用于存储对象200的特定例示与其具有某一关系的其它组件的记录。例如,某些组件可以是其它组件的子组件、超级组件、“父母”、“孩子”或者“同胞”。
classifications属性222是Vector类型的变量,其用于存储预定的取决于供应商的分类的记录。lcStatus属性224是Integer(整数)类型的变量,其用于存储涉及相应对象200的生命周期状态的信息。例如,特定的对象200可能是“废弃的”、“不赞成的”、“释放的”、“撤销的”等。
pricing属性226是PriceID类型的变量,其标识特定的数据结构(未示出),所述特定的数据结构存储对应于相应组件的定价信息。例如,定价数据结构可以包括有关特定组件的批发价和零售价的信息,或者用于根据结合其它组件使用所述组件的方式来确定价格的公式。
keywords属性228是Vector类型的变量,其存储通常与相应组件的核心功能相关的关键字。在“搜索关键字”块310期间对属性228进行搜索,下面将结合图5来解释此部分内容。
applications属性230是Vector类型的变量,其存储涉及在以前其它用户或开发商如何使用相应组件的记录。属性230随时间而改变,以便把用户需求动态地反馈至相应组件,由此通过提供基于经验的智能来补充SCMMS118(图1)。存储在属性230中的用户反馈的某些示例是当选择了相应组件时由先前开发商使用的分类和关键字。
associations属性232是Vector类型的变量,其存储涉及已经结合相应组件一起使用的其它组件的记录。例如,模块_1112(图1)和模块_2114(图1)通常可以彼此结合使用,因此,对应于模块_1112的属性232列出了模块_2114,以及两个模块112和114已经彼此结合使用的次数。当然,在此例子中,对应于模块_2114的属性232也存储涉及模块_1112的相应信息。
对象200的方法部分206包括两个示例性的功能或者方法。为了简单起见,仅仅举例说明了两个方法。编程领域的技术人员应该意识到的是,诸如对象200之类的对象往往通常包括许多额外的方法,其中包括但不限于构造器、毁坏器和用于设置并获得各种属性的值的方法。
在下面结合图5和7来比较详细地解释的集成组件块316期间,调用“updateApplications”方法234。方法234被调用以便更新相应组件的属性230,从而如上文所解释的那样,使SCMMS118能够学习过去的经验。在此例子中,利用两个参数“classifications”和“keywords”来调用方法234,其中“classifications”是Vector类型的变量,用于存储在“检查分类”308(参见图5)期间所采用的各种分类,而“keywords”是Vector类型的变量,用于存储在搜索关键字块310期间所采用的各种关键字。
在下面结合图5和7来比较详细地解释的集成组件块316期间,调用“updateAssociations”方法236。方法236被调用以便更新相应组件的属性232,从而如上文所解释的那样,使SCMMS118能够学习过去的经验。在此例子中,利用一个参数“associations”来调用方法236,“associations”是Vector类型的变量,用于存储在“确定关联”块358(参见图7)期间所发现的、与相应组件相关联的组件的componentID。
应该理解的是,MDDO对象200仅仅是可用来实现所要求保护的主题的存储器对象的一个示例。还可以采用具有更少、更多和/或不同的属性和方法的其它存储器对象。另外,除了采用对象200之外,还存在许多方式来实现所要求保护的主题的功能和数据存储。例如,可以结合关系型数据库通过计算机程序来实现所要求保护的主题。
图5是由图1的SCMMS118所执行的选择组件处理过程300的流程图。下面结合图6-10来比较详细地描述处理过程300中的多个部分。在此例子中,处理过程300在CPU102(图1)上执行,并且由开发商或者用户借助于键盘106(图1)、鼠标108(图1)和显示在监视器104上的图形用户接口(GUI)(未示出)的交互来进行总体控制。
处理过程300开始于“开始选择组件”块302,并且控制立即进行到“输入需求”块304。在块304期间,操作者、例如用户或者开发商经由GUI或者依照文本格式输入对应于所需组件的需求,所述需求通常采用关键字的形式。例如,如果需要某种类型的数据库组件来实现应用或者商务解决方案,那么输入数据库描述符。还可以包括其它描述符,以便进一步限制诸如数据库的类型、成本等之类的因素。可以输入的各种描述符是映射的外部条件、分类和关键字。
在“检查依赖性”块306期间,相对于潜在的组件,诸如,在此例子中是模块_1(图1)、模块_2(图1)和模块_3(图1),处理过程300检查映射至在块304期间输入的描述符的外部依赖性。如果一个特定的组件具有无法满足的外部依赖性,那么把所述组件从潜在组件的列表中移除或者“过滤掉”。在“检查分类”块308期间,处理过程300采用由操作者定义的分类来进一步过滤可能组件的列表。在“搜索关键字”块310期间,处理过程300把在块304期间由操作者输入的关键字与元描述符中包括的关键字进行匹配,其中所述元描述符与潜在组件列表中的每一个组件相关联。把不包含关键字的组件从潜在组件列表中过滤掉。
在“计数>N?”块312期间,处理过程300确定潜在组件列表在块306、308和310中的过滤处理之后所剩余的组件数目是大于还是小于用户预先定义的数目N。数目N表示操作者将要浏览以便手动选择特定组件的最大组件数目。如果计数超出了数目N,那么处理过程300返回到输入需求块304,在输入需求块304期间,操作者输入附加需求以便进一步过滤潜在组件列表。然后,处理如上所述那样继续进行。
如果在块312期间列表中的组件数目没有超过数目N,那么处理过程300进行到“对组件进行计分”块314。在块314期间,处理过程300为列表中剩余的每个组件计算关键字得分、应用得分、关联得分和最后得分。下面结合图6-10来比较详细地解释对组件进行计分块。下面分别结合图8-10详细解释计算关键字得分、应用得分和关联得分的措施。
在“集成组件”块316期间,处理过程300使操作者能够从潜在组件列表中剩余的组件中选择一个特定组件,并且所选的组件被集成到正在生成的商务解决方案的应用中。下面结合图7比较详细地解释块316。
在“更多组件?”块318期间,给予操作者一个选择更多组件或者利用早已选择的组件继续进行的选项。如果操作者决定选择更多组件,那么处理过程300进行到“重置列表”块320,在“重置列表”块320期间,处理过程300把潜在组件列表恢复为初始的未经过滤的状态。然后,处理过程300返回到输入需求块304,并且处理如上所述那样继续进行,以便选择额外的组件。如果在块318期间操作者决定利用早已选择的组件继续进行,那么处理过程300继续到“结束选择组件”块329,在该块中处理过程300完成。
图6是比较详细地举例说明图5的选择组件处理过程300中的对组件进行计分块314的流程图。与块314相关联的处理开始于“开始对组件进行计分”块332,并且立即进行到“检索组件”块334。在块334期间,处理过程300扫描存储在SCMMS数据120(图1)中的组件列表(未示出),其中这些组件在选择组件处理过程300的其它块期间被选择,诸如为模块_1112、模块_2114和模块_3116,处理过程300从列表中检索涉及第一组件或目标组件的信息,并且检索对应于该特定组件的MDDO存储器对象200。
然后,处理过程300进行到“计算关键字得分(S_k)”块336,在该块期间,处理过程300根据在输入需求块304(图5)期间所输入的关键字和与组件相关联并且结合SCMMS数据120一起被存储为元描述符的关键字之间的匹配程度,来计算关键字得分。下面结合图8比较详细地解释为每个组件计算S_k得分的处理过程。
在“计算应用得分(S_app)”块338期间,处理过程300把在输入需求块304期间所输入的输入需求与应用动态属性进行比较,所述应用动态属性结合SCMMS数据120一起被存储为元描述符。为潜在组件列表中剩余的每个组件计算S_app得分。下面结合图9比较详细地解释为每个组件计算S_app得分的处理过程。
在“计算关联得分(S_ass)”块340期间,处理过程300把结合SCMMS数据120一起被存储为元描述符的关联属性与先前在处理过程300期间已被选择用于包含在所期望的应用或者商务解决方案中的组件进行比较。为潜在组件列表中剩余的每个组件计算S_ass得分。下面结合图10比较详细地解释为每个组件计算S_ass得分的处理过程。
在“计算S_final”块342期间,在块336、338和340期间生成的得分被用于生成来自潜在组件列表的目标组件的S_final得分。用于生成S_final得分的公式的一个示例具有如下形式:
S_final=A*S_k+B*S_app+C*S_ass,
其中,对于SCMMS118(图1)来说,A、B和C是由系统管理员根据所期望的应用和/或商务解决方案的背景知识所定义的常量。换言之,选择常量A、B和C以便最大化SCMMS118的结果。用于选择常量A、B和C的某些示例性的一般规则如下所示:
·在没有优良的知识库、例如组件不是众所周知的应用的新系统中,S_final更加严重地取决于关键字匹配,即,A>>B和C;
·在已经存在了相对较长时间并且具有良好基础的知识库、例如组件的应用的系统中,计分主要基于先前已经使用了哪些组件以及组件共同地有哪些需求,即,B>>A和C;并且
·在所选组件高度相关、即经常一起选择相同或者类似的组件集、或者兼容性是一个关注的问题的系统中,定义了常量A、B和C的,以便使C>>A和B。
在“更多组件?”块344期间,处理过程300确定在块334期间访问的组件列表中是否存在必须被计分的任何组件。倘若如此,则控制返回到块334,在块334期间,检索对应于列表中的下一组件的MDDO存储器对象200,并且处理如上所述那样继续进行。如果在块344期间处理过程300确定没有更多组件要计分,那么处理过程300进行到“对结果进行排名”块346,在块346期间,把在块334期间检索的所有组件的所有得分按照相应的S_final得分来进行排名。在“显示结果”块348期间,处理过程300显示潜在组件列表中的剩余组件,在此例子中,它们是在监视器104(图1)上的GUI中按照相应的S_final得分列出的。最后,与处理过程300中的对组件进行计分块314相关联的处理在“结束对组件进行技术”块349中完成。
图7是比较详细地举例说明图5的选择组件处理过程300中的集成组件块316的流程图。与块316相关联的处理开始于“开始集成组件”块352,并且立即进行到“选择组件”块354。在块354期间,操作者浏览在对组件进行计分块314(图5和6)和相关块332、334、336、338、340、342、344和349(图6)期间所生成并显示在监视器104(图1)上的已排名的列表中的组件。此外,操作者从列表中选择将包含在所提出的应用或者商务解决方案中的组件。就特定组件的浏览和选择而言,计算领域的技术人员应该能够想到GUI的使用与功能。
在“导入应用”块356期间,处理过程300检索在块354期间所选的用于包含在所提出的应用或商务解决方案中的组件。应该注意的是,组件自身可以是一个应用。在“确定关联”块358期间,确定作为包含在块354期间所选组件的结果而创建的与任何先前所选组件的任何新关联。
在“更新SCMMS数据”块360期间,处理过程300利用在块358期间检测到的新关联来更新SCMMS数据120(图1)。依照此方式,SCMMS118能够使处理过程300的以后的迭代更加精确并且更加容易,换言之,SCMMS118通过存储关联信息以供日后参考来进行学习。最后,控制进行到“结束集成组件”块369,其中,与集成组件块316相关联的处理完成。
图8是比较详细地举例说明与图5的选择组件处理过程300中的对组件进行计分块314相关联的计算S_k块336(图5)的流程图。与块336相关联的处理开始于“开始计算S_k”块372,并且立即进行到“计算需求关键字组件匹配(RKCM)”块374。在块374期间,处理过程300确定在输入需求块304(图4)期间所输入的关键字与在检索组件块334(图6)期间所检索的MDDO存储器对象200的关键字属性228中存储的关键字之间的相关程度。
在“计算S_k”块376期间,处理过程300根据在输入需求块304(图5)期间所输入的关键字和存储在关键字属性228中的关键字之间的匹配程度,来计算数值得分。在计算S_final块342(图6)期间采用此得分来确定综合得分、或S_final,该综合得分或S_final用在处理过程300中的对结果进行排名块346(图6)中。
在“存储S_k”块378期间,将在块376期间所计算的得分结合对相应组件的参考来进行存储。最后,处理过程300进行到“结束计算S_k”块379,其中,处理过程300中的块336完成。
图9是比较详细地举例说明与图5的选择组件处理过程300中的对组件进行计分块314相关联的计算S_app块338(图6)的流程图。与块336相关联的处理开始于“开始计算S_app”块382,并且立即进行到“检索组件应用元描述符(CAMD)”块384。在块384期间,处理过程300检索与检索组件块334(图6)期间所检索的存储器对象(图4)相关联的应用属性230(图4)。
在“计算CAMD和描述符需求(RQD)之间的匹配”块386期间,处理过程300确定在输入需求块304(图5)期间所输入的关键字与在检索组件块334期间检索的MDDO存储器对象200的关联属性232中所存储的关联之间的相关程度。
在“计算S_app”块388期间,处理过程300根据在输入需求块304(图5)期间所输入的关键字和在检索组件块334期间检索的MDDO存储器对象200的关联属性232中所存储的关联之间的匹配程度,来计算数值得分。在计算S_final块342(图6)期间采用此得分来确定综合得分、或S_final,该综合得分或S_final用在处理过程300的对结果进行排名块346(图6)中。
在“存储S_app”块390期间,把在块388期间所计算的得分结合对相应组件的参考来进行存储。最后,处理过程300进行到“结束计算S_app”块399,其中,处理过程300的块338完成。
图10是比较详细地举例说明与图5的选择组件处理过程300中的对组件进行计分块314相关联的计算S_ass块340(图6)的流程图。与块340相关联的处理开始于“开始计算S_ass”块402,并且立即进行到“初始化S_ass”块404。在块404期间,处理过程300初始化S_ass的值,该值在块340的其余部分期间被采用来为正在计分的特定组件计算S_ass得分。特定组件来自于在以上结合图5所述的处理过程300中的块304、306、308、310和312期间过滤了的组件列表。
在“检索关联”块406期间,处理过程300检索在关联属性232(图4)中列出的第一关联。在“计算得分”块410期间,处理过程300根据类似关联的数目来计算得分,所述类似关联是在块406期间检索到的关联所具有的与在集成组件块316(图4)期间已经选择的组件的关联。在“更新S_ass”块410中,处理过程300根据在块408期间计算的得分,来更新最初在块404期间被初始化的S_ass的相应值。
在“更多关联?”块412期间,处理过程300确定在属性232中是否存储了必须被计算为S_ass得分的更多关联。倘若如此,则处理过程300返回到块408,在此块408期间,选择属性232中的下一关联,并且处理如上所述那样继续进行。如果在块412期间处理过程300确定属性232中存储的所有关联在S_ass的计算过程中都已经被采用了,则处理过程300继续到“存储S_ass”块414,在此块414期间,处理过程300结合目标组件存储所计算的S_ass得分。最后,在“结束计算S_ass”块419期间,处理过程300的块340完成。
虽然已经参考本发明的特定实施例示出并且描述了本发明,但是本领域技术人员将会理解的是,在不脱离本发明的精神和范围的情况下,可以在形式和细节方面做出上述以及其它改变,这些改变包括但不限于:元素的添加、减少或修改,和/或依照相同或不同顺序执行的块的添加、减少或修改。
Claims (20)
1.一种用于描述软件组件的方法,包括:
创建一个或多个组件描述符,每一个组件描述符均包含与多个软件组件中的相应软件组件有关的信息;
创建一个或多个聚集描述符,每一个聚集描述符均包含与特定软件组件和至少一个其它软件组件之间的关系有关的信息;
基于软件组件和聚集组件间的层级相互关系来定义组件层级;并且
管理软件和聚集组件的生命周期、访问控制、相互关系和版本控制,以便保持组件层级。
2.如权利要求1所述的方法,其中,与特定软件组件有关的信息涉及结合软件应用来使用该特定软件组件的频率。
3.如权利要求1所述的方法,其中,与特定软件组件和至少一个其它软件组件之间的关系有关的信息涉及彼此结合来使用各个软件组件的频率。
4.如权利要求1所述的方法,还包括:
基于组件层级对软件组件进行计分;并且
基于软件组件的计分,来选择用于包含到应用中的软件组件。
5.如权利要求4所述的方法,还包括:基于对所述软件组件的选择来修改组件层级。
6.如权利要求4所述的方法,还包括:基于对所述软件组件的选择、以及对用于包含在应用中的其它软件组件的选择,来修改组件层级。
7.如权利要求1所述的方法,其中,所述组件描述符描述了相应软件组件的静态和动态属性。
8.一种用于描述软件组件的系统,包括:
一个或多个组件描述符,每一个组件描述符均包含与多个软件组件中的相应软件组件有关的信息;
一个或多个聚集描述符,每一个聚集描述符均包含与特定软件组件和至少一个其它软件组件之间的关系有关的信息;
基于软件组件和聚集组件间的层级相互关系的组件层级;以及
用于管理软件和聚集组件的生命周期、访问控制、相互关系和版本控制以便保持组件层级的逻辑。
9.如权利要求8所述的系统,其中,与特定软件组件有关的信息涉及结合软件应用来使用该特定软件组件的频率。
10.如权利要求8所述的系统,其中,与特定软件组件和至少一个其它软件组件之间的关系有关的信息涉及彼此结合来使用各个软件组件的频率。
11.如权利要求8所述的系统,还包括:
基于组件层级对软件组件进行计分;以及
用于包括基于计分所选择的软件组件以便将其包含到软件应用中的逻辑。
12.如权利要求11所述的系统,还包括:基于对所述软件组件的选择来修改组件层级。
13.如权利要求11所述的系统,还包括:用于基于对软件组件的选择以及对用于包含在软件应用中的其它软件组件的选择来修改组件层级的逻辑。
14.如权利要求15所述的系统,其中,所述组件描述符描述了相应软件组件的静态和动态属性。
15.一种用于描述软件组件的计算机编程产品,包括:
存储器;
存储在所述存储器上的一个或多个组件描述符,每一个组件描述符均包含与多个软件组件中的相应软件组件有关的信息;
存储在所述存储器上的一个或多个聚集描述符,每一个聚集描述符均包含与特定软件组件和至少一个其它软件组件之间的关系有关的信息;
存储在所述存储器上的基于软件组件和聚集组件间的层级相互关系的组件层级;以及
存储在所述存储器上的、用于管理软件和聚集组件的生命周期、访问控制、相互关系和版本控制以便保持组件层级的逻辑。
16.如权利要求15所述的计算机编程产品,其中,与特定软件组件有关的信息涉及结合软件应用来使用该特定软件组件的频率。
17.如权利要求15所述的计算机编程产品,其中,与特定软件组件和至少一个其它软件组件之间的关系有关的信息涉及彼此结合来使用各个软件组件的频率。
18.如权利要求15所述的计算机编程产品,还包括:
存储在所述存储器上的、用于基于组件层级对软件组件进行计分的逻辑;以及
存储在所述存储器上的、用于包括基于计分所选择的软件组件以便将其包括到软件应用中的逻辑。
19.如权利要求18所述的计算机编程产品,还包括:存储在所述存储器上的、用于基于对所述软件组件的选择来修改组件层级的逻辑。
20.如权利要求18所述的计算机编程产品,还包括:存储在所述存储器上的、用于基于对所述软件组件的选择以及对用于包含在应用中的其它软件组件的选择来修改组件层级的逻辑。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/343,186 US7478093B2 (en) | 2006-01-30 | 2006-01-30 | Design of self-adapting meta descriptors based on real use scenarios and experiences |
US11/343,186 | 2006-01-30 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101013365A true CN101013365A (zh) | 2007-08-08 |
Family
ID=38323643
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2007100044508A Pending CN101013365A (zh) | 2006-01-30 | 2007-01-23 | 用于描述软件组件的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (2) | US7478093B2 (zh) |
CN (1) | CN101013365A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102831338A (zh) * | 2012-06-28 | 2012-12-19 | 北京奇虎科技有限公司 | 一种Android应用程序的安全检测方法及系统 |
CN102866911A (zh) * | 2012-09-12 | 2013-01-09 | 北京航空航天大学 | Mashup应用建立方法及装置 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080201705A1 (en) | 2007-02-15 | 2008-08-21 | Sun Microsystems, Inc. | Apparatus and method for generating a software dependency map |
CN101387956B (zh) * | 2007-09-14 | 2012-08-29 | 国际商业机器公司 | 可扩展地实现非功能逻辑的方法和设备及其系统 |
US8645939B2 (en) * | 2007-12-04 | 2014-02-04 | Oracle International Corporation | Use of aliasing in an installer |
US9477462B2 (en) * | 2008-01-16 | 2016-10-25 | Oracle International Corporation | System and method for software product versioning packaging, distribution, and patching |
US20100293149A1 (en) * | 2009-05-15 | 2010-11-18 | Easy Soft LLC | System and Method for Providing Simultaneous, Multiple Case Scenario Analysis |
US8607191B2 (en) | 2010-06-30 | 2013-12-10 | International Business Machines Corporation | Automated discovery of programmatic resources |
US9491238B2 (en) * | 2010-07-22 | 2016-11-08 | Sap Se | Rapid client-side component processing based on component relationships |
US9733901B2 (en) * | 2011-07-26 | 2017-08-15 | International Business Machines Corporation | Domain specific language design |
US10628578B2 (en) | 2013-03-15 | 2020-04-21 | Imagine Communications Corp. | Systems and methods for determining trust levels for computing components using blockchain |
US9785767B2 (en) | 2013-03-15 | 2017-10-10 | Imagine Communications Corp. | Systems and methods for determining trust levels for computing components |
US9471642B2 (en) | 2013-10-10 | 2016-10-18 | Sap Se | Automatic flagging of frequently accessed data objects for business application |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5933646A (en) * | 1996-05-10 | 1999-08-03 | Apple Computer, Inc. | Software manager for administration of a computer operating system |
US6031990A (en) * | 1997-04-15 | 2000-02-29 | Compuware Corporation | Computer software testing management |
US6775829B1 (en) * | 1998-06-04 | 2004-08-10 | Gateway, Inc. | Method for configuring software for a build to order system |
US6381742B2 (en) | 1998-06-19 | 2002-04-30 | Microsoft Corporation | Software package management |
US6185734B1 (en) * | 1998-07-21 | 2001-02-06 | Hewlett-Packard Company | Hierarchical registry structure for managing multiple versions of software components |
US6993771B1 (en) * | 1999-02-03 | 2006-01-31 | William H. Gates, III | Method and system for managing software components |
US6784346B1 (en) * | 1999-03-29 | 2004-08-31 | The Regents Of The University Of California | Value-added traits in grain and seed transformed with thioredoxin |
US6550062B2 (en) | 1999-04-30 | 2003-04-15 | Dell Usa, Lp | System and method for launching generic download processing in a computer build-to-order environment |
US6411724B1 (en) | 1999-07-02 | 2002-06-25 | Koninklijke Philips Electronics N.V. | Using meta-descriptors to represent multimedia information |
SG102555A1 (en) | 1999-11-25 | 2004-03-26 | Kim Seng Holdings Pte Ltd | Method for using a data flow net to specify and assemble computer software |
AUPQ998100A0 (en) * | 2000-09-08 | 2000-10-05 | Frostbyte Consulting Pty Ltd | Application development |
US20040015831A1 (en) | 2001-01-31 | 2004-01-22 | Bowhill Allan J.C. | Method and apparatus for building software packages |
US7131123B2 (en) * | 2001-04-30 | 2006-10-31 | Opsware Inc. | Automated provisioning of computing networks using a network database model |
US20040031015A1 (en) * | 2001-05-24 | 2004-02-12 | Conexant Systems, Inc. | System and method for manipulation of software |
US7350207B2 (en) | 2001-05-25 | 2008-03-25 | Tellabs Operations, Inc. | Rule-based system and method for downloading computer software over a network |
US20030172367A1 (en) | 2002-01-24 | 2003-09-11 | Robert Kannenberg | Method of modifying software via a network |
US20050021348A1 (en) * | 2002-07-19 | 2005-01-27 | Claribel Chan | Business solution management (BSM) |
US7188331B2 (en) * | 2003-06-30 | 2007-03-06 | Hewlett-Packard Development Company, L.P. | Firmware development within a framework from different design centers depositing component(s) with related contextual and genealogy information in an accessible repository |
US20060174216A1 (en) * | 2005-01-28 | 2006-08-03 | Trenten Peterson | Providing additional hierarchical information for an object displayed in a tree view in a hierarchical relationship with other objects |
US20060218528A1 (en) * | 2005-03-22 | 2006-09-28 | Microsoft Corporation | Software explorer |
-
2006
- 2006-01-30 US US11/343,186 patent/US7478093B2/en not_active Expired - Fee Related
-
2007
- 2007-01-23 CN CNA2007100044508A patent/CN101013365A/zh active Pending
-
2009
- 2009-01-12 US US12/352,102 patent/US8055632B2/en not_active Expired - Fee Related
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102831338A (zh) * | 2012-06-28 | 2012-12-19 | 北京奇虎科技有限公司 | 一种Android应用程序的安全检测方法及系统 |
CN102866911A (zh) * | 2012-09-12 | 2013-01-09 | 北京航空航天大学 | Mashup应用建立方法及装置 |
CN102866911B (zh) * | 2012-09-12 | 2015-03-25 | 北京航空航天大学 | Mashup应用建立方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US20090125520A1 (en) | 2009-05-14 |
US20070180426A1 (en) | 2007-08-02 |
US8055632B2 (en) | 2011-11-08 |
US7478093B2 (en) | 2009-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101013365A (zh) | 用于描述软件组件的方法和系统 | |
US7617224B2 (en) | System and method for managing hierarchically related software components | |
US6330569B1 (en) | Method for versioning a UML model in a repository in accordance with an updated XML representation of the UML model | |
CN100585589C (zh) | 用以支持用户定义类型的继承的系统和方法 | |
KR101307711B1 (ko) | 소프트웨어 자산 기반 솔루션을 개발하기 위한 일관된 방법, 시스템 및 컴퓨터 프로그램 | |
US8812966B2 (en) | Configurator using structure and rules to provide a user interface | |
US7523077B2 (en) | Knowledge repository using configuration and document templates | |
US20160306896A1 (en) | Extending graph traversals with application logic | |
US7552151B2 (en) | System, method and program product for adding, updating and removing RDF statements stored on a server | |
US7133871B2 (en) | Schema for sharing relational database types | |
US20040181771A1 (en) | Framework for supporting business software applications | |
US8126937B2 (en) | Visual database modeling | |
US8001159B2 (en) | Using viewtypes for accessing instance data structured by a base model | |
EP1027666A1 (en) | A system, method, and medium for retrieving, organising, and utilizing networked data | |
CN104412227A (zh) | 基于查询的软件系统设计表示 | |
CN100568175C (zh) | 从分层目录中选择软件组件的方法和系统 | |
Maslakowski et al. | Sams teach yourself MySQL in 21 days | |
Moreno et al. | Addressing new concerns in model-driven web engineering approaches | |
FR2838217A1 (fr) | Procede et dispositif de generation de logiciels executables sur mesure et evolutifs sans programmation informatique | |
Rossi et al. | Object-oriented Web applications modeling | |
US8676618B2 (en) | Systems and methods for automatic detection and processing of instances of business rules | |
Aguirre | IPSComp—Intelligent Portal for Searching Components | |
Tenny et al. | Entity framework 4.0 recipes: A problem-solution approach | |
Hess | Evaluating Domain-Driven Design for Refactoring Existing Information Systems | |
Hanafi | Hand phone packages system advisor/Hanafi Muhamad |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |