识别捆绑软件产品组件的方法和系统的制作方法

文档序号:6375633阅读:211来源:国知局
专利名称:识别捆绑软件产品组件的方法和系统的制作方法
技术领域
本发明公开涉及识别诸如捆绑(bundled)软件产品之类的软件产品的组件,更具地说,本发明涉及识别软件产品的软件组件的方法、识别软件产品的软件组件的系统以及相应的计算机程序产品。
背景技术
软件捆绑是指一起进行许可或出售、有时甚至位于一个共同的软件包内以满足特定商业需求的软件组件的集合。例如,企业软件捆绑可以包括应用服务器、数据库、管理控制台组件和报告组件。可构成软件捆绑(例如,用于部署客户应用的应用服务器或数据库)的组件的软件实体可以作为独立的软件产品进行购买。类似地,软件实体可以作为软件捆绑的一部分购买,用于与同一捆绑中的其他组件一起有限地使用。例如,可以作为独立的软件产品出售的应用服务器或数据库同样可以作为捆绑软件产品的一个软件组件来出售,即,用于通过与捆绑软件产品中其他软件组件协作,来提供更复杂的功能。软件实体的价格可取决于该软件实体作为独立的产品出售/许可,还是作为捆绑组件来出售/许可。在某些情况下,当软件实体作为独立的产品使用时,需要收费,而同一软件实体作为捆绑的组件使用,可免费。本发明详细披露了此背景技术。

发明内容
笼统地讲,本公开教授识别软件产品的软件组件的方法。根据第一软件实体构成软件产品的组件的可能性和第二软件实体和第一软件实体两者是共同软件产品的组件的可能性,(间接)评定所述第二软件实体是否构成所述软件产品的组件。这种间接评定可以由直接评定所述第二软件实体是否构成所述软件产品的组件来补充。在一方面,本公开涉及识别软件产品的软件组件(例如识别构成捆绑软件产品的软件组件的各别软件实体)的方法。所述方法可以包括通过计算机确定代表计算机系统中的第一软件组件和所述计算机系统中的第二软件组件中的至少一项的属性和操作中的至少一项的数据。在本公开的上下文中,计算机系统可以被理解为被配置为仅允许一个用户访问的计算环境。例如,此类计算环境可以是膝上型计算机、个人计算机、个人计算机上的用户帐户或计算机网络中的用户帐户。在本公开的上下文中,计算机系统还可以被理解为由单个法人实体(例如,公司、机构、政府机构等)操作的计算环境。此类计算环境可以包括多个连网计算机、服务器等。所述计算环境可以仅允许所述法人实体的雇员/成员访问。所述计算环境另外还可以允许第三方访问,即,所述法人实体的雇员/成员以外的人员访问。所述法人实体,作为计算机环境的操作者,可以承担购买/许可计算环境内采用的部分或全部软件的法律责任。所述计算环境的边界可以通过一个或多个边界定义,在该一个或多个边界处,购买/许可计算机环境内采用的部分或全部软件的法律责任转移到另一法人实体。所述计算环境的边界可以是法人实体的经营地点的财产边界。所述财产边界可以被理解为包括法人实体的雇员/成员在远离法人实体的经营场所的位置使用的移动设备。例如,在外包服务中,法人实体和服务提供者之间的合同可以规定购买/许可计算环境内采用的部分或全部软件的法律责任是该法人实体的责任,尽管部分或全部计算环境由一个或多个不一定附属于该法人实体的服务提供者来操作。在本公开的上下文中,软件组件(也称为软件实体)可以被理解为一定量的能够自包含执行的代码,即,不需要主计算机/服务器的操作系统提供的代码之外的代码而能执行的代码。软件组件可以是应用。上述数据可以包括指示计算机系统中的第一软件组件的位置和计算机系统中的第二软件组件的位置中的至少一项的数据,软件组件的位置是其属性。因此,所述方法可以包括确定指示计算机中的第一软件组件的位置和计算机系统中的第二软件组件的位置中的至少一项的数据。在本公开的上下文中,所述第一 /第二软件组件的位置可以被理解为标识到相应软件组件的路径或到存储相应软件的文件夹的路径的路径名。例如,路径名可以是相对于存储相应软件组件的计算机/服务器/网络的启动卷或相对于用户的主文件夹。所述第一/第二软件组件的位置同样可以被理解为存储相应软件组件的计算机、服务器或文件夹。所述计算机/服务器可以通过IP地址、MAC地址、与所述计算机/服务器关联的序列号、与所述计算机/服务器关联的网络标识符、例如从配置日志或其他机器特定信息等导出的“指纹”在例如局域网中唯一地进行识别。所述第一软件组件和第二软件组件或所述第一软件组件和第二软件组件的各个位置相似度的配置(例如,共同主机(计算机/服务器)的配置或共同文件夹内的配置或嵌套文件夹内的位置)可以指示这两个软件组件相关,即,属于共同软件产品。上述数据可以包括指示计算机系统中第一软件组件和第二软件组件之间通信的发生的数据,所述软件组件的通信是其操作。因此,所述方法可以包括确定指示计算机系统中第一软件组件和第二软件组件之间通信的发生的数据。所述通信可以是直接通信,也可以是间接通信。所述第一软件组件可以将数据传送到所述第二软件组件,所述数据进一步被所述第二软件组件进行处理,反之亦然。进一步处理的数据可以从所述第二软件组件传送到所述第一软件组件,反之亦然。换言之,所述第一软件组件和第二软件组件可以单向或双向传送数据以获取所述第一/第二软件组件无法单独获取的结果。所述第一软件组件和第二软件组件之间的通信可以指示这两个软件组件相关,即,属于共同软件产品。上述数据可以包括指示所述计算机系统中所述第一软件组件和所述第二软件组件之间的配置引用的数据,关于软件组件的配置引用是其(配置)属性。因此,所述方法可以包括确定计算机系统中第一软件组件和第二软件组件之间的配置引用的数据。例如,第一软件组件可以与安装第一软件组件或第二软件组件时自动产生的配置数据关联,所述配置数据包含指定第二软件组件的存在/位置的指针或其他标识符。类似地,第一软件组件可以与用户提供的配置数据关联,所述配置数据同样包含指定第二软件组件的存在/位置的指针或其他标识符。类似地,第二软件组件可以与指定第一软件组件的存在/位置的配置数据关联。第一软件组件和第二软件组件之间存在配置引用指示这两个软件组件相关,即,属于共同软件产品。上述数据可以包括指示计算机系统中的第一软件组件的安装时间和计算机系统中的第二软件组件的安装时间的数据,软件组件的安装时间是其属性。因此,所述方法可以包括确定指示计算机系统中的第一软件组件的安装时间和计算机系统中的第二软件组件的安装时间的数据。在大体相同时间(例如,在一周、一天、一小时或十分钟的时间内)安装第一软件组件和第二软件组件可以指示这两个软件相关,即,属于共同软件产品。所述方法可以包括确定指示第一软件组件属于软件产品的可能性的第一置信值。第一置信值可以是标准化值,例如介于0%和100%之间的百分比值,0%指示第一软件组件属于软件产品的可能性为零,100%指示完全确定第一软件组件属于软件产品。0%和100%之间的百分比值可以指示相应的确定性的线性比。例如,值50%可以指示一半的确定性,即第一软件组件属于软件产品的机会为50/50 (也称为1/2机会)。所述方法可以包括确定指示第一软件组件和第二软件组件之间的关系是否在目录中定义的数据。例如,所述目录可以包括一个部件号和/或组件名称列表,每个部件号/组件名称指定相应软件组件。各个软件产品可以与至少一个这样的部件号和/或组件名称列表关联。至少一个列表所指定的软件组件可以构成相应的(捆绑的)软件产品。因此,在任何此类列表中出现对第一软件组件和第二软件组件的引用可以指示这两个软件组件相关,即,属于共同软件产品。所述方法可以包括根据上述任一数据,确定指示所述第一软件组件和所述第二软件组件是共同软件产品的组件的可能性的第二置信值。所述共同软件产品不需要是针对所述第一置信值提及的软件产品。因此,所述第二置信值可以简单地指示所述第一软件组件和所述第二软件组件是一共同软件产品的软件组件的可能性。与所述第一置信值相同,所述第二置信值可以是标准化值,例如上述百分比值。所述方法可以包括根据所述第一置信值和第二置信值,确定指示所述第二软件组件属于所述软件产品的可能性的第三置信值。因此,所述第三置信值(即,所述第二软件组件属于所述软件产品的可能性)无需根据所述第二软件组件和所述软件产品之间的直接明显关系确定。相反,所述第三置信值(即,所述第二软件组件属于所述软件产品的可能性)可以间接地确定,即,根据所述第一软件组件属于一软件产品的可能性和所述第一软件组件和第二软件组件同时属于任何共同软件产品的可能性确定,即,根据所述第一软件组件和所述第二软件组件之间的明显关系确定。与所述第一置信值相同,所述第三置信值可以是标准化值,例如上述百分比值。所述方法可以包括针对所述第二软件组件,确定指示所述第二软件组件属于所述软件产品的可能性的第四置信值。与所述第一置信值相同,所述第四置信值可以是标准化值,例如上述百分比值。所述第一、第二、第三和第四置信值中的任意一项可初始被设为0%的值。所述确定第三置信值可以基于所述第一、第二和第四置信值进行。因此,所述第三置信值(即,所述第二软件组件属于所述软件产品的可能性)不仅可以间接地确定,即,根据所述第一软件组件属于所述软件产品的可能性以及所述第一软件组件和第二软件组件同时属于一共同软件产品的可能性确定,也可以直接地确定,即,根据所述第二软件组件属于所述软件产品(即,与所述第一软件组件属于同一软件产品)的可能性确定。
所述确定第四置信值可以包括确定所述第二软件组件是否属于与所述软件产品关联的预定软件组件目录集。所述预定目录集可以是部件号和/或组件名称列表,每个部件号/组件名称指定相应的软件组件。多个软件产品中的每个软件产品可以与至少一个这样的部件号和/或组件名称列表关联。至少一个列表所指定的软件组件可以构成相应的(捆绑的)软件产品。特定软件实体可以构成各种软件产品的组件。而且,特定软件实体可以构成独立的应用。因此,软件实体和软件产品之间的目录关系不需要指示完全置信所述软件实体是所述软件产品的组件。所述第四置信值可以增加用百分之百除以已知所述第二软件组件可以构成其可能的组件的不同软件产品数所得的百分比。例如,如果给定软件实体已知可以用作四个不同软件产品的组件,则置信值将为25%。所述确定第四置信值可以包括确定与所述第二软件组件关联的产品号是否包括指示所述第一软件组件捆绑到所述软件产品的部件号分量。所述第二软件组件可以包括表示与所述第二软件组件关联的产品号的数据。所述第二软件组件可以包括可用于在产品号数据库中找到与所述第二软件组件关联的产品号的标识符。如果与所述第二软件产品关联的产品号包括指示所述第一软件组件捆绑到所述软件产品的部件号分量,则所述第四置信值可以增加指示部分置信(中度置信)所述第一软件组件构成所述软件产品的组件(即,部分置信所述第一软件组件捆绑到所述软件产品)的值。前面段落中提及的中度置信处于30%到90%、40%到80%或50%到70%置信所述第一软件组件构成所述软件产品的组件的范围内。例如,所述中度置信可以是70%置信所述第一软件组件构成所述软件产品的组件。所述确定第一置信值可以包括确定所述第一软件组件是否属于与所述软件产品关联的预定软件组件目录集。所述确定所述第一置信值可以包括确定与所述第一软件组件关联的部件号是否包括指示所述第一软件组件捆绑到所述软件产品的部件号分量。上面三个段落的说明经必要变更可以适用。所述确定第二置信值可以包括如果上述任何数据指示所述计算机系统中所述第一软件组件和第二软件组件之间发生通信,则将所述第二置信值增加指示高度置信所述第一软件组件和所述第二软件组件是共同软件产品的软件组件的值。所述高度置信可以是完全置信,即100%置信所述第一软件组件和所述第二软件组件是共同软件产品的软件组件,也可以是90%或95%以上置信所述第一软件组件和所述第二软件组件是共同软件产品的软件组件。所述确定第二置信值可以包括如果上述任何数据指示所述计算机系统中所述第一软件组件和第二软件组件之间的配置引用,则将所述第二置信值增加指示高度置信(例如,如上面定义)所述第一软件组件和所述第二软件组件是共同软件产品的软件组件的值。所述确定第二置信值可以包括如果所述第一软件组件和所述第二软件组件都属于与共同软件产品关联的预定软件组件目录集,则将所述第二置信值增加指示部分置信(例如,上面定义的中度置信)所述第一软件组件和所述第二软件组件是共同软件产品的软件组件的值。前面段落中提及的中度置信处于30%到90%、40%到80%或50%到70%置信所述第一软件组件和所述第二软件组件是共同软件产品的软件组件的范围内。例如,所述中度置信可以是70%置信所述第一软件组件和所述第二软件组件是共同软件产品的软件组件。
所述预定目录集可以是部件号和/或组件名称列表,每个部件号/组件名称指定相应的软件组件。多个软件产品中的每个软件产品可以与至少一个这样的部件号和/或组件名称列表关联。至少一个列表所指定的软件组件可以构成相应的(捆绑的)软件产品。特定软件实体可以构成各种软件产品的组件。而且,特定软件实体可以构成独立的应用。因此,所述软件实体和所述软件产品之间的目录关系不需要指示完全置信所述软件实体是所述软件产品的组件。所述确定第二置信值可以包括如果上述任何数据指示所述第一软件组件和第二软件组件位于共同主机上,则将所述第二置信值增加指示部分置信(例如,低度置信)所述第一软件组件和所述第二软件组件是共同软件产品的软件组件的值。上述低度置信可以处于O到30%、5%到25%或10%到20%置信所述第一软件组件和所述第二软件组件是共同软件产品的软件组件的范围内。例如,所述低度置信可以是10%置信所述第一软件组件和所述第二软件组件是共同软件产品的软件组件。所述确定第二置信值可以包括如果上述任何数据指示所述第一软件组件和第二软件组件的安装路径嵌套,则将所述第二置信值增加指示部分置信(例如,低度置信)所述第一软件组件和所述第二软件组件是共同软件产品的软件组件的值。所述确定第二置信值可以包括如果数据指示所述第一软件组件和第二软件组件的安装时间处于预定时间内(即,相互之间小于预定时间),则将所述第二置信值增加指示部分置信(例如,上面定义的低度置信)所述第一软件组件和所述第二软件组件是共同软件产品的软件组件的值。所述预定时间可以是一周、一天、一小时或十分钟。所述确定第三置信值可以包括将所述第一置信值和第二置信值相乘。所述第三置信值可以是所述第一置信值和所述第二置信值的乘积。如上述特定实施例中描述的那样,确定第一 /第四置信值可以包括根据经验产品捆绑规则增加第一 /第四置信值,所述经验产品捆绑规则确定反映(给定)软件组件在给定情况下是(给定)软件产品的软件组件的可能性的置信值。所述增加第一/第四置信值可以针对多个经验产品捆绑规则重复。因此,所述方法可以包括提供和/或接收多个经验产品捆绑规则。如上述特定实施例中描述的那样,所述确定第二置信值可以包括根据经验组件捆绑规则增加第二置信值,所述经验组件捆绑规则确定反映第一软件组件和第二软件组件在给定情况下是共同软件产品的软件组件的可能性的置信值。所述增加第二置信值可以针对多个经验组件捆绑规则重复。因此,所述方法可以包括提供和/或接收多个经验组件捆绑规则。上面的描述论及根据经验组件/产品捆绑规则增加相应置信值。更具体地说,上面的描述论及将各个置信值增加指示高度、中度和低度置信的值。上面的描述还提及对应于术语高度、中度和低度置信的示例性百分比。在本公开的上下文中,表达式“将...置信值增加指示[特定百分比]置信的值”可以被理解为将先前的置信值增加剩余不确定性的给定百分比。如果例如有70%的可能性满足相应条件并且将置信值增加50%,则将其余30%中的50%增加到所述70%的可能性中。最终的可能性将为85%。通过这种方式,可以达到100%的可能性,即,完全确定,但不会超过这个可能性,即使根据多个经验组件/产品捆绑规则中的每个规则重复增加相应置信值。
所述方法可以包括如果第三置信值超过预定阈值,则输出有关所述第二软件组件捆绑到所述软件产品(即,是所述软件产品的组件)的判定。所述方法可以包括通过本公开中披露的任何方式针对多个软件产品中的任一软件产品确定所述第一置信值和第三置信值,以及可选地确定第四置信值,并且还可以包括如果关于给定软件产品的第三置信值大于关于其他任何软件产品的第三置信值,则输出有关所述第二软件组件捆绑到给定软件产品的判定。所述方法可以包括如果关于给定软件产品的第三置信值不超过预定阈值,则抑制输出有关所述第二软件组件捆绑到给定软件产品的判定。所述方法可以包括通过本公开中披露的任何方式针对相对于多个软件产品中的任一软件产品的多个软件实体中的任一软件实体确定所述第一、第二、第三置信值,以及可选地确定第四置信值。上面两个段落中的教导经必要的更改可适用。上述任何确定操作都可以自动执行,例如无需用户交互,或仅需要有限的用户交互。尽管上面以方法的形式介绍了本公开的教导,但是如本领域技术人员理解的,所述教导经必要的更改可以通过系统或计算机产品的形式来体现。用于识别软件产品的软件组件的系统可以包括像上面那样确定数据的数据确定器。所述数据确定器可以通过包括硬件和/或软件的单个单元的形式来体现,或者通过包括多个硬件/软件单元的系统的形式来体现。此外,用于识别软件产品的软件组件的系统可以包括像上面介绍的那样用于分别确定第一 /第二 /第三/第四置信值的第一置信值确定器、第二置信值确定器、第三置信值确定器和第四置信值确定器中的任意一项。所述各个第一/第二/第三/第四置信值确定器或它们的任何组合可以通过包括硬件和/或软件的单个单元的形式来体现,或者通过包括多个硬件/软件单元的系统的形式来体现。


图1示意性地示出根据本公开用于识别软件产品的软件组件的系统的实施例;图2示出根据本公开用于识别软件产品的软件组件的方法的实施例的流程图。
具体实施例方式图1示出根据本公开用于识别软件产品的软件组件的系统100的实施例(例如,如上所述的)。在所示实施例中,系统100包括确定数据的数据确定器102、确定第一置信值的第一置信值确定器104、确定第二置信值的第二置信值确定器106、确定第三置信值的第三置信值确定器108、确定第四置信值的第四置信值确定器110。数据确定器102确定的数据被传送到第二置信值确定器106、第一、第二和第四置信值确定器104、106和110分别确定的第一、第二和第四置信值传送到第三置信值确定器108。图2示出根据本公开用于识别软件产品的软件组件的方法的实施例的流程图200(例如,如上所述的)。在所示实施例中,流程图200包括数据确定202、第一置信值的确定204、第二置信值的确定206、第三置信值的确定208和第四置信值的确定210。下面将介绍根据本公开用于识别软件产品的软件组件的方法的另一示例性实施例。所述方法可以提供使用3遍(3-pass)算法的自动捆绑检测,其具有以下步骤:1.为组件实例指定可能的目标产品2.检测组件实例关系3.将产品指定传播到相关组件实例(约束传播)在步骤I和2中,应用一组规则以计算捆绑可能性。每个规则可具有(0,100>范围内的分数。与分数100关联的规则为确定性规则。将来自所有应用规则的分数相加并进行归一化,例如通过使用以下公式:Cn+1=Cn+(1-Cn) *Sn/100,其中Cn是通过应用第η个规则计算的置信度,C0的值为O ;并且Sn是第η个规则的分数。最终的置信度始终介于O和I之间。这允许对捆绑结果进行无歧义的比较。下面进一步详细地描述上述三个步骤。在步骤1,针对企业基础结构中的每个实例应用下面的产品捆绑规则。a.以分数100/可能的产品数与软件目录中定义的所有目标产品进行捆绑(软件目录定义可能的产品捆绑,即,组成相应产品的产品和组件)b.以分数70与用于客户购买部件号的所有产品进行捆绑(部件号是客户对特定产品的权利并且定义了客户所已购买的软件。此规则假设产品的安装概率很高)。完成步骤I之后,每个实例具有l-η个可能的目标产品(捆绑)。附加步骤限制这些可能性。在步骤2中,针对基础结构中安装的每对组件实例应用实例捆绑规则(其告知两个组件实例是否位于同一捆绑中)。a.如果发现组件实例进程之间存在通信,则以分数100捆绑。b.如果发现配置引用(例如,如果应用服务器配置包含指向特定数据库实例的数据源定义),则以分数100捆绑。c.如果在软件目录中定义了组件实例之间的关系,则以分数70捆绑。d.如果组件实例位于同一主机上,则以分数10捆绑。e.如果软件组件的安装路径嵌套,则以分数10捆绑。f.如果安装时间相似,则以分数10捆绑。完成步骤2之后,将已获得组件实例关系网,每个关系具有特定的置信度分数。在步骤3中,合并步骤I和2中收集的信息。对于每个组件实例,使用以下公式计算可能的产品捆绑:CC2P1-CC2C1*CC1P1,其中Cc2pi是组件实例C2与产品Pl捆绑的置信度;Cc2ci是组件实例C2与组件实例Cl捆绑的置信度;Ccipi是组件实例Cl与产品Pl捆绑的置信度;C2是正在分析的组件;
Cl是与C2捆绑的组件实例之一;以及Pl是与组件实例Cl捆绑的产品之一。针对每个指定给Cl的产品重复执行上述步骤。使用上面的公式增加和归一化置信度。以这种方式通过捆绑网传播产品指定。完成步骤3之后,组件实例将以通过从其他组件实例传播的信息增强的指定置信级别与目标产品捆绑。下面将介绍根据本公开用于识别软件产品的软件组件的方法的又一示例性实施例。为了方便介绍,假设发现以下组件安装在给定机器上并且每个组件是同一捆绑(即,Product—I)的一部分:Component—IComponent—2Component—3下面介绍如何应用上述3遍算法判定上述三个组件属于Product—I。在上述3遍算法的步骤Ia中,每个实例(即,组件)使用基于软件目录的第一规则进行评分。假设所述目录指示Component—I可以与两个可能的产品中的任意一个进行捆绑,Component—2可以与一百个可能的产品中的任意一个进行捆绑,Component—3可以与三个可能的产品中的任意一个进行捆绑,最终分数将如下所示: Component—1:Comp I—Prodl=0.5Comp l_Prod2=0.5Component—2:Comp2_Prodl=0.01Comp2_Prod2=0.01Comp2_Prod3=0.01Comp2_Prod4=0.01...
Comp2_Prodl00=0.01
Component—3:Comp3_Prodl=0.33Comp3_Prod2=0.33Comp3_Prod3=0.33在上述3遍算法的步骤Ib中,每个组件使用基于部件号的第二规则进行评分。假设Component—I的部件号指示与Product—I的关系,Component—2的部件号指示与Product—I和Product—3两者的关系,以及Component—3的部件号指示与Product—I的关系,最终分数如下所示:Component—1:CompI—Prodl=0.7Comp l_Prod2=0
Component—2:Comp2_Prodl=0.35 (分数为70/2,因为存在两个产品关系)Comp2_Prod2=0Comp2_Prod3=0.35 (分数为70/2,因为存在两个产品关系)Comp2_Prod4=0Comp2—ProdlOO=OComponent—3:Comp3_Prodl=0.7Comp3_Prod2=0Comp3_Prod3=0现在可以使用上面的公式将使用第一规则和第二规则获得的分数进行相加和归一化:cn+1=cn+(1-Cn) *Sn/100完成上述3遍算法的步骤I之后获取的置信值如下所示:Component—1:CompI—Prodl=0.5+(1 - 0.5)*0.7=0.85Compl_Prod2=0.5Component—2:Comp2—Prodl=0.01+(1 - 0.01)*0.35=0.3565Comp2_Prod2=0.01Comp2_Prod3=0.01+(1 - 0.01)*0.35=0.3565Comp2_Prod4=0.01Comp2_Prodl00=0.01Component—3:Comp3—Prodl=0.33+(1 - 0.33) *0.7=0.799Comp3_Prod2=0.33Comp3_Prod3=0.33完成步骤I之后,无法确定Component—2属于Product—I还是Product—3。3遍算法的进一步步骤可以消除此不确定性。在3遍算法的步骤2中,每对组件之间的关系用各种捆绑规则进行评分。假设一个机器/主机上的三个组件的共同位置(规则2d)是它们的唯一关系,得到的分数将如下所示:Comp I_Comp 2=Comp 2_Comp I =0.1Comp I_Comp3=Comp3_Comp I =0.1Comp 2_Comp 3=Comp 3_Comp 2=0.1根据3遍算法的步骤3的规定合并步骤I和2的结果以更好地评估Compnent-2与各个产品的关系将产生以下结果:通过Component—I:
Comp2_ProdI=Comp2_CompI^CompI_ProdI=0.85*0.1=0.085Comp2—Prod2=Comp2—Compl*Compl—Prod2=0.5*0.1=0.05通过Component—3:Comp2_ProdI=Comp2_Comp3^Comp3_ProdI=0.33*0.1=0.033Comp2—Prod2=Comp2—Comp3*Comp3—Prod2=0.33*0.1=0.033Comp2—Prod3=Comp2—Comp3*Comp3—Prod3=0.33*0.1=0.033这些置信值现在可以与步骤I中针对Component—2获取的结果进行相加并进行归一化。首先对通过Component—I获取的额外置信度进行相加和归一化。Comp2—Prodl=0.3565+(1 - 0.3565) *0.085=0.4112Comp2_Prod2=0.01+(1 - 0.01)*0.05=0.0595Comp2_Prod3=0.3565Comp2_Prod4=0.01Comp2_Prodl00=0.01然后对通过Component—2获取的额外置信度进行相加和归一化。Comp2—Prodl=0.4112+(1 - 0.4112)*0.033=0.43Comp2_Prod2=0.0595+(1 - 0.0595)*0.033=0.0905Comp2_Prod3=0.3565+(1 - 0.3565) *0.033=0.378Comp2_Prod4=0.01Comp2_Prodl00=0.01完成3遍算法之后,组件-产品捆绑置信度如下所示:Component—1:CompI—Prodl=0.85Compl_Prod2=0.5Component—2:Comp2_Prodl=0.43Comp2_Prod2=0.0905Comp2_Prod3=0.378Comp2_Prod4=0.01Comp2_Prodl00=0.01Component—3:Comp3_Prodl=0.799Comp3_Prod2=0.33Comp3_Prod3=0.33从上述置信值很容易看出,Component—1、Component—2和Component—3被正确地识别为最有可能属于Product—I。所属技术领域的技术人员知道,本公开的方面可以实现为系统、方法或计算机程序产品。因此,本公开的方面可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、 微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是一但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPR0M或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括一但不限于一无线、电线、光缆、RF等等,或者上述的任意合适的组合。可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言一诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言一诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络一包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instructionmeans)的制造品(manufacture)。也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。在此使用的术语仅出于描述特定实施例的目的,并非对本发明进行限制。正如在此使用的那样,单数形式“一”、“一个”和“所述”旨在同时包括复数形式,除非上下文另外明确指出。将进一步理解的是,当在本说明书中使用时,术语“包括”和/或“包含”指定存在所述特性、整数、步骤、操作、元件和/或组件,但并不排除其中存在或添加一个或多个其他特性、整数、步骤、操作、元件、组件和/或由此构成的组。以下的权利要求中的对应结构、材料、操作以及所有功能性限定的装置或步骤的等同替换,旨在包括任何用于与在权利要求中具体指出的其它元素相组合地执行该功能的结构、材料或操作。所给出的对本公开的描述其目的在于示意和描述,并非是穷尽性的,也并非是要把本公开限定到所表述的形式。对于本领域的普通技术人员来说,在不偏离本公开范围和精神的情况下,显然可以作出许多修改和变型。对实施例的选择和说明,是为了最好地解释本公开的原理和实际应用,使本领域的普通技术人员能够明了,本公开可以有适合所要的特定用途的具有各种改变的各种实施方式。以下权利要求中的所有装置功能元件或步骤功能元件的对应结构、材料、操作和等价物旨在包括用于与如具体声明的那样的其他所声明的元件结合执行所述功能的任何结构、材料或操作。出于说明和描述目的给出了对本发明的描述,但是所述描述并非旨在是穷举的或是将本发明限于所公开的形式。在不偏离本发明的范围和精神的情况下,许多修改和变化对于本领域的技术人员来说都将是显而易见的。实施例的选择和描述是为了最佳地解释本发明的原理和实际应用,并且使得本领域的其他技术人员能够针对具有各种修改的适合于所构想的特定使用的各种实施例理解本发明。
权利要求
1.一种用于识别软件产品的软件组件的方法,包括: 通过计算机,确定代表计算机系统中的第一软件组件和所述计算机系统中的第二软件组件中的至少一项的属性和操作中的至少一项的代表数据; 确定指示所述第一软件组件属于所述软件产品的可能性的第一置信值; 根据所述数据,确定指示所述第一软件组件和所述第二软件组件是共同软件产品的软件组件的可能性的第二置信值;以及 根据所述第 一置信值和第二置信值,确定指示所述第二软件组件属于所述软件产品的可能性的第三置信值。
2.如权利要求1中所述的方法,其中所述代表数据包括指示所述计算机系统中的所述第一软件组件的位置、所述计算机系统中的所述第二软件组件的位置、所述计算机系统中所述第一软件组件和第二软件组件之间通信的发生、所述计算机系统中所述第一软件组件和第二软件组件之间的配置引用、所述计算机系统中的所述第一软件组件的安装时间、以及所述计算机系统中的所述第二软件组件的安装时间中的至少一项的指示数据。
3.如权利要求1或2中所述的方法,包括: 针对所述第二软件组件,确定指示所述第二软件组件属于所述软件产品的可能性的第四置信值,其中 所述确定所述第三置信值是基于所述第一、第二和第四置信值进行的。
4.如权利要求3中所述的方法,其中所述确定所述第四置信值包括以下至少一项: 确定所述第二软件组件是否属于与所述软件产品关联的预定软件组件目录集;以及 确定与所述第二软件组件关联的产品号是否包括指示所述第一软件组件捆绑到所述软件产品的部件号分量。
5.如上述任一权利要求中所述的方法,其中所述确定所述第一置信值包括以下至少一项: 确定所述第一软件组件是否属于与所述软件产品关联的预定软件组件目录集;以及确定与所述第一软件组件关联的产品号是否包括指示所述第一软件组件捆绑到所述软件产品的部件号分量。
6.如上述任一权利要求中所述的方法,其中所述确定所述第二置信值包括以下至少一项: 如果所述代表数据指示所述计算机系统中所述第一软件组件和第二软件组件之间发生通信,则将所述第二置信值增加指示完全置信所述第一软件组件和所述第二软件组件是共同软件产品的软件组件的值; 如果所述代表数据指示所述计算机系统中所述第一软件组件和第二软件组件之间的配置引用,则将所述第二置信值增加指示完全置信所述第一软件组件和所述第二软件组件是共同软件产品的软件组件的值; 如果所述代表数据指示所述第一软件组件和第二软件组件位于共同主机上,则将所述第二置信值增加指示部分置信所述第一软件组件和所述第二软件组件是共同软件产品的软件组件的值; 如果所述代表数据指示所述第一软件组件和第二软件组件的安装路径嵌套,则将所述第二置信值增加指示部分置信所述第一软件组件和所述第二软件组件是共同软件产品的软件组件的值;以及 如果所述代表数据指示所述第一软件组件和第二软件组件的安装时间位于小于一周、小于一天和小于一小时中的任意一项的预定时间段内,则将所述第二置信值增加指示部分置信所述第一软件组件和所述第二软件组件是共同软件产品的软件组件的值。
7.如上述任一权利要求中所述的方法,其中所述第三置信值是所述第一置信值和所述第二置信值的乘积。
8.一种用于识别软件产品的软件组件的系统,包括: 第一置信值确定器,其确定指示所述第一软件组件属于所述软件产品的可能性的第一置信值; 第二置信值确定器,其确定指示所述第一软件组件和所述第二软件组件是共同软件产品的软件组件的可能性的第二置信值;以及 第三置信值确认器,其根据所述第一置信值和第二置信值,确定指示所述第二软件组件属于所述软件产品的可能性的第三置信值。
9.如权利要求8中所述的系统,包括: 第四置信值确定器,其针对所述第二软件组件,确定指示所述第二软件组件属于所述软件产品的可能性的第四置信值,其中 所述第三置信值确定器被配置为并适合于根据所述第一、第二和第四置信值确定所述第三置信值。
10.如权利要求9中所述的系统,其中所述确定所述第四置信值包括以下至少一项: 确定所述第二软件组件是否属于与所述软件产品关联的预定软件组件目录集;以及 确定与所述第二软件组件关联的产品号是否包括指示所述第一软件组件捆绑到所述软件产品的部件号分量。
11.如权利要求8至10中的任一权利要求中所述的系统,其中所述确定所述第一置信值包括以下至少一项: 确定所述第一软件组件是否属于与所述软件产品关联的预定软件组件目录集;以及确定与所述第一软件组件关联的产品号是否包括指示所述第一软件组件捆绑到所述软件产品的部件号分量。
12.如权利要求8至11中的任一权利要求中所述的系统,包括: 数据确定器,其确定指示所述计算机系统中的所述第一软件组件的位置、所述计算机系统中的所述第二软件组件的位置、所述计算机系统中所述第一软件组件和第二软件组件之间通信的发生、所述计算机系统中所述第一软件组件和第二软件组件之间的配置引用、所述计算机系统中的所述第一软件组件的安装时间、以及所述计算机系统中的所述第二软件组件的安装时间中的至少一项的数据,其中 所述第二置信值确定器被配置为和适合于根据所述数据确定所述第二置信值。
13.如权利要求12中所述的系统,其中所述确定所述第二置信值包括以下至少一项: 如果所述数据指示所述计算机系统中所述第一软件组件和第二软件组件之间发生通信,则将所述第二置信值增加指示完全置信所述第一软件组件和所述第二软件组件是共同软件产品的软件组件的值;如果所述数据指示所述计算机系统中所述第一软件组件和第二软件组件之间的配置引用,则将所述第二置信值增加指示完全置信所述第一软件组件和所述第二软件组件是共同软件产品的软件组件的值; 如果所述数据指示所述第一软件组件和第二软件组件位于共同主机上,则将所述第二置信值增加指示部分置信所述第一软件组件和所述第二软件组件是共同软件产品的软件组件的值; 如果所述数据指示所述第一软件组件和第二软件组件的安装路径嵌套,则将所述第二置信值增加指示部分置信所述第一软件组件和所述第二软件组件是共同软件产品的软件组件的值;以及 如果所述数据指示所述第一软件组件和第二软件组件的安装时间位于小于一周、小于一天和小于一小时中的任意一项的预定时间内,则将所述第二置信值增加指示部分置信所述第一软件组件和所述第二软件组件是共同软件产品的软件组件的值。
14.如权利要求8至13中的任一权利要求中所述的系统,其中所述第三置信值是所述第一置信值 和所述第二置信值的乘积。
全文摘要
一种用于识别软件产品的软件组件的方法,包括通过计算机,确定代表计算机系统中的第一软件组件和计算机系统中的第二软件组件中的至少一项的属性和操作中的至少一项的代表数据,确定指示所述第一软件组件属于所述软件产品的可能性的第一置信值,根据所述数据,确定指示所述第一软件组件和所述第二软件组件是共同软件产品的软件组件的可能性的第二置信值,以及根据所述第一置信值和第二置信值,确定指示所述第二软件组件属于所述软件产品的可能性的第三置信值。
文档编号G06F9/40GK103106069SQ20121030559
公开日2013年5月15日 申请日期2012年8月24日 优先权日2011年8月25日
发明者P·戈采克, J·卡尼亚, H·H·马杜里, R·杜德克 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1