基于多次跟踪执行的软件组件推荐的制作方法

文档序号:19042223发布日期:2019-11-05 23:15阅读:159来源:国知局
基于多次跟踪执行的软件组件推荐的制作方法

本申请要求在2013年11月13日提交的名为“Software Component Recommendation Based on Multiple Trace Runs(基于多次跟踪执行的软件组件推荐)”的美国专利申请序列号61/903,755、在2013年11月13日提交的名为“Relationship Graph for Software Component Recommendations(软件组件推荐的关系图)”的美国专利申请序列号61/903,762、以及在2013年11月13日提交的名为“Component Usage Recommendation System with Relationship and Performance Matching(采用关系和性能匹配的组件使用推荐系统)”的美国专利申请序列号61/903,768的优先权和权益,这些申请所公开和教示的所有内容通过引用被明确结合于此。

背景

许多计算机编程语言具有大量可重用的软件组件,其中的许多可能是开源的。这些组件在质量方面可能从很差到优秀,并具有与之对应的性能特性范围。在许多语言中,存在数以十万计或甚至百万计的不同组件。这为开发者带来了一个困难的问题:如何从巨大的库中选择组件呢?

概述

可在根据软件组件的多次使用计算性能度量时生成推荐。跟踪服务可收集来自软件组件的多次使用的跟踪数据,其中每一次使用可以在不同条件下进行。性能度量分析可标识可能影响软件组件的性能的各种因素,随后以不同的递送机制将那些因素呈现给用户。在一个这类机制中,可生成一组推荐的硬件和软件配置,该生成为对软件组件的操作分析的一部分。

推荐系统可通过跨可使用各种模块的多个应用分析模块使用图来标识兼容的和不兼容的软件组件以及其它推荐。该图可标识可被归类为“硬”关系(被定义为被另一模块调用或被并入另一模块)的模块关系,以及可被归类为“软”关系(可被标识为与另一模块一起被并入某应用中)的模块关系。该图可进一步标识潜在的互斥模块,互斥模块可在模块被移除并被第二个模块替代时被标识。该图可被用于为给定使用案例及其它使用推荐相关的模块或模块集合。

使用推荐系统可基于用户提供的信息来建议硬件和软件配置以及其它兼容或有用的模块。在架构软件应用或浏览模块时,可向用户呈现按照其在类似硬件平台上或类似负荷下的性能来看、以及根据其基于可通过分析对各个模块的多次不同使用来收集的模块关系图中的关系的兼容性来看可兼容的模块。

提供本概述以便以简化的形式介绍以下在详细描述中进一步描述的一些概念。本概述并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。

附图简述

在附图中,

图1是示出用于软件组件推荐的系统的实施例的图示。

图2是示出具有可生成组件推荐的设备的网络环境的实施例的图示。

图3是示出带有关系的示例组件图的实施例的图示。

图4是示出带有关系和性能数据两者的推荐的实施例的图示。

图5是示出用于对跟踪数据进行参数分析的方法的实施例的流程图。

图6是示出用于构建组件图的数据源的实施例的图示。

图7是示出用于根据应用储存库来构建组件图的方法的实施例的流程图。

图8是示出用于根据组件储存库来构建组件图的方法的实施例的流程图。

图9是示出用于根据跟踪器数据来构建组件图的方法的实施例的流程图。

图10是示出用于标识互斥关系的方法的实施例的流程图。

图11是示出用于生成建议的方法的实施例的流程图。

图12是示出用于在建议分析之前分析现有应用的方法的实施例的流程图。

详细描述

基于多次跟踪执行的模块推荐系统

模块推荐系统可分析来自软件组件的多次使用的跟踪执行。该分析可标识软件组件在其下执行良好或糟糕的因素,并且这些因素可在推荐系统中被用于软件组件。因素可包括硬件和软件配置、输入参数、常规使用参数、以及其它因素。

因素可通过将不同的跟踪数据集彼此比较并且确定有助于定义各个跟踪数据集之间的区别的主导因素来生成。主导因素可有助于标识对于各个软件组件的操作有利或不利的条件。这些条件可以若干种不同方式被使用来推荐软件组件及执行软件组件的条件。

跟踪数据集可以是可在应用执行的同时被收集的任何类型的数据。在许多情况下,跟踪数据集可以是跟踪数据的时间串联序列,其可包括关于应用的性能和操作信息。这类序列可表示应用及其各个组件在执行和非满负荷期间可如何执行。在许多情况下,跟踪数据集可包括关于应用所感受到的负荷的信息,并且在一些情况下,负荷或其它信息可从对于跟踪数据或其它数据的分析中推导出。

对于软件组件的有利或不利操作起作用的因素可作为软件组件统计用户界面的一部分被呈现给用户。软件组件统计列表可标识在充分利用该软件组件方面哪些因素是主导的,以及在部署该软件组件时要避免的因素。这类信息可对于可能正搜索要执行某个功能的软件组件的开发者而言是有帮助的。

各因素可被实现为组件表现的预测模型。这类预测模型可包括可能影响组件的性能或其它度量的主导因素。在一个简单示例中,预测模型可估计在给定组件可能经历的一组硬件、软件、以及使用参数的情况下该组件用于处理请求的响应时间。

用于软件组件推荐的关系图

软件组件的关系图可标识各个可重用的软件组件之间的不同类型的关系。“硬”关系可存在于一个组件调用或包括另一组件的情形,而“软”关系可存在于开发者在同一应用中使用两个组件的情形。在一些情况下,在一个组件在应用的新修订中被另一组件代替时,可标识互斥关系。

关系图可由多个不同数据来源创建。在一些情况下,可根据包含多个不同应用或组件的储存库中的数据来执行分析。通过分析应用,可标识各个常用组件之间的关系。在一些情况下,对于应用的不同版本的分析可标识其中一个组件可被移除而另一组件被添加,由此指示可能的互斥关系的情形。

关系图可部分通过分析来自多个应用的跟踪器数据来收集。跟踪器数据可包括应用内所使用的组件的性能和操作数据,并且可标识“硬”和“软”关系两者。在一些情况下,关系图可由多个来源生成,包括来自多个储存库的数据以及通过跟踪多个应用而收集的跟踪器数据。

各模块之间的关系可以按许多不同的方式来使用。在一个示例中,组件统计显示可包括到已知其各种关系的其它组件的链接。

采用关系和性能匹配的组件使用推荐系统。

组件使用推荐系统可使用性能匹配和组件关系两者来推荐各种组件或标识要替代的组件。对于各种组件,可标识在被执行时提高或降低组件的有效性的一组影响因素。

此外,各组件之间的关系可通过关系图来标识。影响因素和关系可被用于若干种不同场景以评估组件并协助用户。

在一个使用场景中,可在应用的预期执行环境和预测的执行条件下执行对应用的分析。在一些情况下,分析可导致合适性评级或其它度量。一些系统可标识可能不适合于特定执行环境或条件的某些组件,并且可进一步为应用推荐不同组件。

在另一使用场景中,用户可定义一组部署条件,包括硬件、软件、负荷、以及其它参数。根据这些给定条件,可搜索、排序、排名、或以其它方式推荐可匹配于这些预期部署条件的组件。

贯穿本说明书和权利要求书,术语“组件”被用于定义可被合并到应用中的一组可重用代码。组件可被知晓为“模块”、“库”、“子例程”或某个其它概念。出于本说明书和权利要求书的目的,这些术语被认为是同义词。

“组件”可以是按照多个应用可访问代码的方式布置的代码,即便这些应用彼此之间可能没有连接。一般来说,“组件”可以是被配置成被重用的代码。在一些情况下,组件可在大应用的范围内重用,而在其它情况下,模块可被共享至可在不相干且不连接的应用中使用该模块的其它应用开发者。

许多编程语言和范例具有“组件”或库的概念,其中组件可具有经定义的接口,通过该接口,应用可调用并使用组件。一些范例可允许程序员按静态方式合并模块,以使得组件代码在该应用被编写并部署之后不进一步改变。一些范例可允许动态库,其可在运行时或者甚至在执行开始之后被加载和调用。动态库可在该应用可被分发之后被更新和改变,而调用库或组件的方式可保持不变。

组件可以源代码、中间代码、可执行代码或以某种其它形式分发。在一些情况下,组件可以是可通过应用编程接口调用的服务。

贯穿本说明书和权利要求书,术语“组件”可被应用于单个可重用函数。这一函数可被分发作为库、模块、或其它代码集的一部分,并且可反映可被分发的可重用代码的最小元素。在本说明书和权利要求书中被提及的单个“组件”可以是单个应用编程接口调用或可调用子例程或函数,以及模块、库、或多个可调用函数、应用编程接口调用、或其它更小元素的其它聚集。

在本说明书和权利要求书中,术语“剖析器”、“跟踪器”和“探测工具”可以互换地使用。这些术语指代可在应用被执行时采集数据的任何机制。在经典定义中,“探测工具”可指代可被插入可执行代码并从而改变该可执行代码的生成方法存根(stub)、挂钩(hook)或其他数据采集机制,而“剖析器”或“跟踪器”可经典地指代不可改变可执行代码的数据采集机制。对这些术语及其派生词中的任一者的使用都可蕴含或暗示彼此。例如,使用“跟踪器”的数据收集可使用“跟踪器”的经典意义中的非接触式数据收集以及用其中可执行代码可被改变的“探测工具”的经典意义的数据收集来执行。类似地,通过“探测工具”收集的数据可包括使用非接触式数据收集机制的数据收集。

此外,通过“剖析”、“跟踪”和“探测工具”收集的数据可包括可被收集的任何类型的数据,包括诸如处理时间、吞吐量、性能计数器等等之类的与性能有关的数据。收集到的数据可包括函数名、传递的参数、存储器对象名和内容、传递的消息、消息内容、寄存器设置、寄存器内容、差错标志、中断、或与正被跟踪的应用有关的任何其他参数或其他可收集的数据。收集到的数据还可包括高速缓冲未命中、垃圾收集操作、存储器分派调用、页面未命中、以及其它参数。

贯穿本说明书和权利要求书,术语“执行环境”可被用于指代用于执行应用的任何类型的支持软件。执行环境的一示例是操作系统。在一些举例说明中,“执行环境”可被示为与操作系统分开。这可能是为了例示出为应用提供各支持功能的虚拟机,诸如进程虚拟机。在其他实施例中,虚拟机可以是可包括其自己的内部操作系统并可模拟整个计算机系统的系统虚拟机。贯穿本说明书和权利要求书,术语“执行环境”包括可以或可以不具有容易标识的“虚拟机”或其它支持软件的操作系统和其它系统。

贯穿本说明书和权利要求书,术语应用摂被用来指代可执行期望功能的软件和硬件产品的任何组合。在一些情况下,应用可以是用硬件平台操作的单一软件程序。一些应用可使用多个软件组件,每个软件组件可以是用不同语言编写的或可在不同硬件或软件执行环境内执行。在一些情况下,这些应用可跨多个设备分散并且可使用可由网络或其它通信系统连接的软件和硬件组件。

贯穿本说明书,贯穿对附图的描述,相同的附图标记表示相同的元素。

在本说明书和权利要求书中,对“处理器”的引用包括多个处理器。在某些情况中,可由“一处理器”执行的过程可实际上由同一设备上或不同设备上的多个处理器执行。出于本说明书和权利要求书的目的,对“处理器”的任何引用应包括可能位于同一设备上或不同设备上的多个处理器,除非另外明确指定。

当元素被称为被“相连接”或“相耦合”时,这些元素可被直接连接或耦合在一起,或者也可存在一个或多个中间元素。相反,当元素被称为被“直接连接”或“直接耦合”时,不存在中间元素。

本主题可被体现为设备、系统、方法、和/或计算机程序产品。因此,本主题的部分或全部可以用硬件和/或软件(包括固件、常驻软件、微码、状态机、门阵列等)来具体化。此外,本主题可以采用计算机可使用或计算机可读存储介质上的计算机程序产品的形式,介质中收录了供指令执行系统使用或结合指令执行系统一起使用的计算机可使用或计算机可读的程序代码。在本文的上下文中,计算机可使用或计算机可读介质可以是可包含、存储、通信、传播、或传输程序以供指令执行系统、装置或设备使用或结合其使用的任何介质。

计算机可使用或计算机可读介质可以是,例如但不限于,电、磁、光、电磁、红外、或半导体系统、装置、设备或传播介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。

计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术来实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不限于,RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁带盒、磁带、磁盘存储或其他磁性存储设备、或能用于存储所需信息且可以由指令执行系统访问的任何其他介质。注意,计算机可使用或计算机可读介质可以是其上打印有程序的纸张或另一合适的介质,因为程序可以经由例如对纸张或其他介质的光学扫描而电子地捕获,随后如有必要被编译、翻译,或以其他合适的方式处理,并随后存储在计算机存储器中。

当本主题在计算机可执行指令的一般上下文中具体化时,该实施例可包括由一个或多个系统、计算机、或其他设备执行的程序模块。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。通常,程序模块的功能可在各个实施例中按需进行组合或分布。

图1是示出用于提供针对软件组件的推荐的系统的实施例100的图示。推荐可使用性能数据和/或组件关系图来标识和建议可满足应用的预期使用和架构的不同组件。

推荐系统可使用可从软件组件的多个实例中收集的数据。软件组件可以是模块、库、子例程、或可用于相同应用的许多个实例或许多个不同应用中的其它组件。当来自多个实例的数据被分析时,导致组件以某些方式来表现的那些因素可被标识。在选择可在预期部署条件下最优地运行的组件时,这些起因可能对开发者是非常有用的。

在实施例100的示例中,软件组件可在三个不同应用内被调用并且在三种不同条件下被执行。

不同硬件组件以及不同软件平台可被使用。软件平台可包括操作系统、执行环境、驱动、其它应用、或者任何其它软件变量。

跟踪器数据可在各种条件下执行应用时被收集。对不同跟踪器数据集的对比分析可揭示哪些环境和部署因素是影响性能或其它想要的度量的主导因素。在一个简单示例中,这类分析可揭示某些组件在被布署在单个处理器上时可非常有效地工作,但是在被部署在多个处理器上时性能受到影响。在另一示例中,组件可被确定为在某些类型的负荷下最优地工作,而在其它负荷下不能。

各组件之间的关系图可根据跟踪器数据以及其它来源来生成。该图可标识具有明确关系、隐含关系、互斥关系、以及其它类型的关系的组件。

明确关系可在一个组件调用另一组件时被标识。在这种情况下,第一组件包括第二组件。虽然第二组件可与第一组件分开地使用,但是第一组件不能在缺少第二组件的情况下使用。

隐含关系可在两个组件可被用于同一应用中但是不调用彼此时被标识。这一情形可在应用开发者选择这两个组件并且将两个组件都使用在同一应用中时发生。隐含关系可指示两个组件是彼此互补的。当向开发者作出推荐时,隐含关系可有助于标识开发者在构建应用时很可能会考虑的组件。

互斥关系可指示一个组件可替代另一组件。这类组件可能很少被用在同一应用中,并且可在应用开发者移除一个组件并用另一组件替代该组件时被标识。这一情况下可通过分析应用的不同版本、跟踪组件何时被移除以及另一组件何时被添加来观察。虽然这一分析可能不能得出互斥关系存在的结论,但是这一分析可以是这一关系可能存在的一种指示器。

各组件之间的互斥关系可能对推荐可能是用于替代应用中的一组当前组件的候选的组件有用的。推荐系统可使用互斥关系来建议对应用的改动。当与性能数据分析耦合时,这一推荐可具有支持这一改动的性能或其它数据。

设备102、104和106示出三种不同的软件组件部署。这些设备可运行在三个不同的硬件平台108、110和112上并且可分别具有三个不同软件平台114、116和118。硬件平台可具有不同的处理器速度、处理器数量、存储器、存储、网络接口、外围设备、或其它参数。

类似地,软件平台可具有不同操作系统、执行环境、驱动、应用、或者其它软件变量。

在一些情况下,应用120、122和124可以是不同应用。应用可以是同一应用的不同版本,或者是可具一不同架构、输入流、以及不同功能的完全不同的应用。

组件126、128和130可以是实施例100的示例中感兴趣的组件,这意味着组件126、128和130可被分析以确定影响组件的性能或其它输出的区别因素。

不同应用可以不同方式使用组件126、128和130。应用中的一些可实行组件的一些功能而其它应用可实行其它功能。各个应用中的每一个可具有可由组件处理的不同的输入流,并且可在不同负荷下实行各组件。

在应用120、122和216中可分别存在附件组件132、134和136。附加组件可由开发者选择来在各个应用中执行附加功能,并且这些附加组件的存在可被用于在各个组件之间建立关系。

组件126、128和130中的每一个可分别具有可收集性能和其它数据,随后将跟踪器数据传送给入口引擎144的跟踪器138、140和142。在实施例100的示例中,跟踪器138、140和142被示为分别连接到组件126、128和130。这一例示可示出跟踪器可仅监视其附连到的组件。其它实施例可具有可收集整个应用或应用内的多个组件的跟踪数据的跟踪器。

入口引擎144可以从各个设备接收跟踪器数据。跟踪器数据可被存储在跟踪器数据库146中,跟踪器数据库146可存储来自许多个不同应用和软件组件的跟踪器数据。分析引擎148可处理跟踪数据集来确定许多因素中的哪些因素对于影响给定组件或应用的性能或其它度量是主导的。

从入口引擎144接收的跟踪数据还可由图引擎152处理以创建组件关系图154。组件关系图154可包含各个组件之间的明确和隐含关系。这类关系可从跟踪数据以及其它来源(诸如各个储存库)中生成。

查询引擎150可接收包含输入参数156的请求并返回结果158。在查询的一个示例中,请求可包含可定义应用的预期执行场景的输入参数156,包括使用和架构信息。这些参数可由查询引擎150使用来生成具有性能数据的软件组件列表,作为供开发者考虑的选项。

图2是示出可在应用执行时收集数据并分析数据以标识推荐或其它使用的组件的实施例200的示图。实施例200的示例可例示出一种架构,其中跟踪器数据可从多个设备收集并随后在跟踪器数据库中被分析。组件图可根据从跟踪器数据或其它来源中标识的关系来生成。

图2的示图例示出了系统的功能组件。在一些情况下,组件可以是硬件组件、软件组件、或者硬件和软件的组合。一些组件可以是应用级软件,而其他组件可以是执行环境级组件。在一些情况下,一个组件到另一组件的连接可以是紧密连接,其中两个或更多个组件在单个硬件平台上操作。在其他情况下,连接可通过跨长距离的网络连接来进行。每个实施例可使用不同硬件、软件、以及互联架构来实现所描述的功能。

实施例200例示出可具有硬件平台204和各种软件组件的设备202。所例示出的设备202表示常规计算设备,但是其它实施例可具有不同配置、架构、或组件。

在许多实施例中,设备202可以是服务器计算机。在一些实施例中,设备202仍然还可以是台式计算机、膝上型计算机、上网本计算机、图形输入板或平板计算机、无线手机、蜂窝电话、游戏控制台或任何其他类型的计算设备。在一些实施例中,设备202可被实现在计算设备的群集中,该群集可以是一组物理机或虚拟机。

硬件平台204可以包括处理器208、随机存取存储器210、以及非易失性存储212。硬件平台204还可包括用户接口214和网络接口216。

随机存取存储器210可以是包含可由处理器208快速存取的数据对象和可执行代码的存储。在许多实施例中,随机存取存储器210可具有将存储器210连接到处理器208的高速总线。

非易失性存储212可以是在关闭设备202之后持久保持的存储。非易失性存储212可以是任何类型的存储设备,包括硬盘、固态存储器设备、磁带盒、光学存储、或其他类型的存储。非易失性存储212可以是只读的或能够读/写。在一些实施例中,非易失性存储212可以是基于云的、网络存储、或可通过网络连接访问的其他存储。

用户接口214可以是能够显示输出以及接收来自用户的输入的任何类型的硬件。在许多情况下,输出显示器可以是图形显示监视器,但是输出设备可包括光和其他视觉输出、音频输出、动力致动器输出、以及其他输出设备。

常规输入设备可包括键盘和定点设备,诸如鼠标、指示笔、跟踪球、或其他定点设备。其他输入设备可包括各种传感器,包括生物测定输入设备、音频和视频输入设备、以及其他传感器。

网络接口216可以是到另一计算机的任何类型的连接。在许多实施例中,网络接口216可以是有线以太网连接。其他实施例可包括基于各种通信协议的有线或无线连接。

软件组件206可包括操作系统218,各种软件组件和服务可在该操作系统218上操作。入口引擎220可接收来自其它设备上的跟踪器的跟踪器数据并且可将跟踪器数据存储在跟踪器数据库222中。分析引擎224可标识可影响被跟踪的软件组件的性能的各个区别因素。

图引擎226可标识软件组件之间的关系并且可构建组件图228。图引擎226可使用跟踪数据以及来自其它来源的数据(包括组件储存库、应用储存库、以及其它来源)来标识各组件之间的关系。

查询引擎230可对请求作出响应,响应可使用跟踪器数据库222和组件图228中的一者或两者来生成针对查询的结果。

在实施例200中,网络232可连接可交互的各设备。

部署系统234可执行应用并在应用执行时收集跟踪器数据。在许多情况下,部署系统234可以是应用可在其上执行的生产系统。部署系统234可在各种硬件平台236上操作,硬件平台236可与针对硬件平台204来描述的那些类似。

操作系统238或执行环境240可执行应用242。应用242可包含各个软件组件244,并且各个其它应用246也可在部署系统234上执行。跟踪器248可在执行环境240内工作。在一些情况下,跟踪器250可在操作系统238内执行。

开发系统252可例示开发者可在其上创建和编辑应用的源代码258的设备。开发系统252可在各种硬件平台254上操作,硬件平台254可与针对硬件平台204来描述的那些类似。

集成开发环境256可以是包括开发者所使用的各种工具(诸如编辑器260和编译器262)的应用或应用套件。

分析器264可分析应用的源代码258以生成用于查询引擎230的查询。该查询可定义开发中的应用的特性,并且查询引擎230可返回可被显示在推荐窗口266中的信息。这一信息可包括源代码258中的组件的性能数据,以及可被考虑用于该开发中的应用的替代组件。

储存库系统268可以是包含用于源代码274的储存库272的系统。储存库272可包含应用代码、组件代码、或其它软件。储存库系统268可在各种硬件平台254上执行,硬件平台254可与针对硬件平台204来描述的那些类似。

储存库可由图引擎226分析以构建组件图228。储存库可指示其中两个组件可被频繁地一起使用的隐含关系、其中一个组件调用另一组件的明确关系、以及其中组件可彼此交换的互斥关系。

客户端设备276可以是一个用于显示来自查询引擎230的查询结果的机构。客户端设备276可具有硬件平台278,硬件平台278可与针对硬件平台204来描述的那些类似。浏览器280可在客户端设备276上执行并显示用户界面282。用户界面282可以是网页或可显示查询结果中的一些的其它界面。

图3是示出软件组件关系图的示例实施例300的示图。实施例300是例示出组件302、304、306、以及308以及各种关系的简单的图。

各组件可表示可被部署在各个应用上的可重用软件组件。各组件可能已通过跟踪器数据、源代码分析、储存库分析、或其它机制而被发现,这些机制的示例可在本说明书的后文中找到。

组件302和304被例示为具有明确关系310。明确关系310可以是有向的,指示组件302可被包括在组件304中或从组件304调用。这一关系可以是一个硬编码的关系,其中组件304的源代码可能已调用了组件302。

组件306和308被例示为具有互斥关系314。在互斥关系中,两个组件可通常彼此替代地使用并且很少被一起使用。这类关系可通过分析在许多版本中对应用的改动来标识。当一个组件被移除而另一组件被添加,这一情形可指示互斥关系。

组件302、304、306和308可通过隐含关系312连结。隐含关系可在两个组件可被用于同一应用中时被标识。这类关系可指示两个组件是彼此兼容并互补的。

诸如实施例300之类的图可被用于推荐组件。例如,应用可包含组件306,组件306可具有与关系302和304的隐含关系。在分析期间,组件302和304可被推荐给开发者,因为组件302和304通常与组件306一起使用。另外,由于互斥关系的缘故,组件308可被推荐作为组件306的替代。

图4是示出带有关系和性能数据两者的推荐的实施例400的图示。

实施例400例示出可包括应用的设计参数404和可能组件406的请求402。请求402可由查询引擎408处理来生成一些结果414。在另一场景中,请求416可根据现有应用和跟踪数据来生成。

在两种类型的请求中,查询引擎408都可接收关于操作特性和部署架构的信息。操作特性可以是对于组件可被如何使用的描述。这一描述可包括负荷、请求的频率、输入参数、以及对于预期使用的其它描述。部署架构可定义组件可执行于其上的硬件和软件平台。这类描述可包括处理器速度、处理器数量、存储器、存储容量、存储和网络带宽、吞吐量和等待时间、以及其它参数。

可能的组件406可以是应用的初步架构。这一信息可以是用于遍历组件图并提供架构推荐的起始点。在一个使用案例中,可能的组件406可以是可呈现应用的预期功能的组件。在这一使用案例中,结果414可以是可匹配于该部署架构和预期操作特性的一组组件。这一使用案例可能对于在项目的开始时标识可最优地适用于预期部署的软件组件是有帮助的。

现有应用请求418可分析可能处于部署的某个状态下的应用。在一些情况下,该应用可处于部署中并在测试或开发硬件上执行,而在其它情况下,应用可能已被部署在生产硬件上并在生产负荷下执行。这一应用418可包括若干个组件420。

一组跟踪数据422可被包括在请求416中。跟踪数据422可由分析器424分析以提取实际的操作特性和部署架构信息。这一分析在跟踪数据422可在生产环境中被收集时可能是有用的。在其中跟踪数据422可能不准确地反映预期生产环境和使用的情况下,用户可手动选择这类参数。

查询引擎408可分析生成可包括建议的组件的列表和针对各组件的各种性能度量的结果414的请求。组件图412可被查询以标识与请求中标识的那些组件类似的或相关的组件。可针对跟踪数据库410来分析组件列表以确定性能和其它参数。一旦性能已知,则组件可被排名或排序。推荐可通过将请求中的组件的基本集合与可根据组件图412标识出的其它组件作比较来做出。

图5是示出用于对跟踪数据进行参数分析的方法的实施例500的流程图。实施例500例示出用于从多个跟踪数据集中提取区别因素的简化方法。

其他实施例可使用不同的排序、更多或更少的步骤、以及不同的命名或术语来完成相似功能。在一些实施例中,各种操作或操作集合可与其他操作以同步或异步方式并行地执行。此处所选的步骤是为了以简化的形式例示出一些操作原理而被选出的。

在框502,可接收跟踪数据集。在框504,可标识要被分析的元素。要被分析的元素可以是例如软件组件。

在框506中,可检索包含该元素的所有数据集。在框508,对于每一个数据集,在框510,可创建包含任何可用元数据元素的向量。在为每一个数据集创建向量之后,在框512,可执行多变量分析以确定区别因素,在框514,该区别因素可被存储。

区别因素可以是对于性能或其它度量有最大影响的那些因素。这些因素可指示在什么条件下给定组件可工作良好,而在什么条件下同一组件可工作地较差。这类因素在比较类似组件时可能是有用的。例如,当为一组给定执行条件建议或推荐组件时,可对区别因素执行排序以标识可在被选定的条件下工作良好的组件。

区别因素可以对于可负责所选定的组件的开发者来说是有用的。各因素可指示在特定条件下的性能问题,并且给予开发者改进组件的某些指引。

图6是示出用于生成组件图的机制的示例实施例600的示图。实施例600可例示出从中可标识各组件以及各组件之间的关系的三个不同的数据来源。

应用储存库604、组件储存库606、以及跟踪器数据库608可各自具有可从中提取组件及其关系的数据。在一些情况下,某些类型的关系可从一个来源中找到,而其它来源可具有其它类型的关系。

应用储存库604可包含应用源代码614。应用源代码可包含应用的多个版本。在每一个版本中,可能存在不同的组件集合616、618和620。多个组件在单个应用中的存在可指示这些组件之间的隐含关系。另外,可被移除并由应用的后续版本中的另一组件替代的组件可指示互斥关系。

组件储存库606可包含组件源代码622。在一些情况下,组件源代码622可包含对其它组件624和626的调用。这类调用可指示各组件之间的明确关系,因为第一组件可以硬编码的方式包括或调用其它组件。

跟踪器数据库608可包括可由监视应用收集的跟踪器数据628。在许多情况下,跟踪数据可通过监视许多不同应用630来收集,不同应用630中的许多可包括可重用软件组件632和634。隐含和明确关系有时可从跟踪数据中推断,这取决于跟踪数据可以有多详细。在其中应用的不同版本可被跟踪的情况下,互斥关系可被推断。

图引擎610可获得来自各个来源(诸如应用储存库604、组件储存库606、以及跟踪数据库608)中的任意一个的数据以创建组件图612。可在本说明书的稍后处找出这类处理的示例。

图7是示出用于构建组件图的方法的实施例700的流程图。实施例700可例示出由图引擎在访问应用储存库以标识可重用软件组件以及各组件之间的隐含关系时执行的示例方法。

其他实施例可使用不同的排序、更多或更少的步骤、以及不同的命名或术语来完成相似功能。在一些实施例中,各种操作或操作集合可与其他操作以同步或异步方式并行地执行。此处所选的步骤是为了以简化的形式例示出一些操作原理而被选出的。

在框702,可访问应用储存库。该储存库可以是具有应用的多个版本的传统源代码储存库。

在框704,可标识要被分析的应用。在框706,可分析每一个应用。在许多情况下,对应用的分析可通过对源代码的静态检查来执行。在其它情况下,分析可通过检查中间代码、调用轨迹、或其它信息来执行。

如果在框708中应用没有调用多个组件,则过程可返回到框706。

如果在框708中应用确实调用了多个组件,则在框710,可分析每一个组件。如果在框712中该组件不在组件图中,则在框714,可添加该组件。

在框710中添加了任何新组件之后,在框716,可分析组件。在框716中对于每个组件,可以在框718分析每一个其余组件,并且在框720,可创建隐含关系。在一些情况下,隐含关系可以是有向关系,其中关系的强度或类型对于从第一组件到第二组件和反方向可以是不同的。

在框706中分析了每一个组件之后,在框722,可存储组件图。

图8是示出用于使用来自组件储存库的数据来构建组件图的方法的实施例800的流程图。

实施例800可例示出由图引擎在访问组件储存库以标识可重用软件组件以及这些组件之间的明确关系时执行的示例方法。

其他实施例可使用不同的排序、更多或更少的步骤、以及不同的命名或术语来完成相似功能。在一些实施例中,各种操作或操作集合可与其他操作以同步或异步方式并行地执行。此处所选的步骤是为了以简化的形式例示出一些操作原理而被选出的。

在框802,可访问组件储存库。储存库可以是各个组件的目录,并且可包含元数据、源代码、或关于可重用软件组件的其它信息。在一些情况下,组件储存库可用作为用于搜索组件的目录,并且组件源代码可被放置在不同的储存库中。

在框804,可分析各组件。对于每一个组件,如果在框806中该组件不在图中,则在框808,可将该组件添加到图中。

在框810,可分析该组件以确定从当前组件中是否调用了任何组件。在框812,可处理每一个被调用的组件。如果在框814中被调用的组件不在图中,则在框816,可添加该组件。

在框818,可创建明确关系。

在框812处理了所有被调用的组件之后,则过程可返回到框804。在框804处理了所有组件之后,在框820,可存储组件图。

图9是示出用于根据跟踪数据来构建组件图的方法的实施例900的流程图。实施例900可例示出由图引擎在访问跟踪数据库以标识可重用软件组件以及这些组件之间的隐含关系时执行的示例方法。实施例900例示出对单个跟踪数据集的分析。对于大型数数据库,实施例900可被应用于数据库中的每一个数据集。

其他实施例可使用不同的排序、更多或更少的步骤、以及不同的命名或术语来完成相似功能。在一些实施例中,各种操作或操作集合可与其他操作以同步或异步方式并行地执行。此处所选的步骤是为了以简化的形式例示出一些操作原理而被选出的。

在框902,可接收跟踪数据集。跟踪数据集可表示通过监视单个应用收集到的跟踪数据。在框904,可标识数据集内的每一个组件,并且在框906,分开地分析每一个组件。

在框906,对于每一个组件,如果在框908中该组件不在图中,则在框910,可添加该组件。

在框912,对于每一个组件,在框914,可标识该应用中的所有其它组件。在框916,那些附加组件可被单独处理。

如果在框918中来自框912和916的组件具有预定义的明确关系,则过程可返回框916,而无需改变关系状态。在许多实施例中,明确关系可主导任何隐含关系,使得当明确关系存在时,任何隐含关系可被丢弃。

如果在框920中来自框912和916的组件不具有预定的隐含关系,则在框922,可创建隐含关系。在框924,新创建的或预定义的隐含关系可被加强。

许多实施例可包括针对隐含关系的强度因子。当对同一关系的多次观察被作出时,强度因子可被提高。

图10是示出用于标识互斥关系的方法的实施例1000的流程图。实施例1000可例示出由图引擎在访问应用储存库以标识各组件之间的互斥关系时执行的示例方法。

其他实施例可使用不同的排序、更多或更少的步骤、以及不同的命名或术语来完成相似功能。在一些实施例中,各种操作或操作集合可与其他操作以同步或异步方式并行地执行。此处所选的步骤是为了以简化的形式例示出一些操作原理而被选出的。

互斥关系可通过对应用的不同版本进行分析来隐含表示。这类关系可在开发者在应用的一个版本到另一版本中将一个组件替换为另一组件时被标识。这类关系可通过观察来隐含表示,并且当接收到可确认第二组件替换了第一组件的人工输入时,这类关系可被显著加强。

在框1002,可访问应用储存库。在框1004,可标识要被分析的应用。在框1006,可处理每一个应用。

在框1006,对于每一应用,可在框1008处理应用的每一个版本。在框1008,对于应用的每一个版本,可在框1010生成该版本的组件列表。如果在框1012中不存在对于前一版本的改动,则过程可循环返回到框1008。

如果在框1012发生了对于组件列表的改动,则在框1014,可处理每一个改动。

在框1014,对于每一个改动,在框1016,可进行分析以确定是否一个组件被移除而另一组件被添加。如果在框1018中这一判断不为真,则过程可返回到框1014。

如果在框1018中这一判断为真,则隐含的互斥关系可能存在。在框1020,如果这一关系当前不存在于组件之间,则在框1022,该关系可被创建。在框1024,新创建的或预先存在的关系可被加强。

当在框1014处理了对于框1006中的每一个应用的框1008中的每一个版本的所有改动之后,在框1028,组件图可被存储。

图11是示出用于生成建议的方法的实施例1100的流程图示。实施例1100可例示出由查询引擎执行的用于组合从跟踪数据中推导出的性能数据和组件图两者的示例方法。

其他实施例可使用不同的排序、更多或更少的步骤、以及不同的命名或术语来完成相似功能。在一些实施例中,各种操作或操作集合可与其他操作以同步或异步方式并行地执行。此处所选的步骤是为了以简化的形式例示出一些操作原理而被选出的。

在框1102,可接收应用的使用描述。该使用描述可包括可描述应用可如何被使用的任何参数。这一描述可包括像预期的工作负荷、期望的可靠性、或其它性能度量之类的项。

在框1104,可接收架构描述。架构描述可包括应用可在其上执行的硬件和软件组件。

在一些情况下,使用描述和架构描述可从应用的现有跟踪数据中推导出。这种情况在为生产中的应用生成推荐时可能是有用的。在其它情况下,使用描述和架构描述可以是对应用可在其下执行的预期条件的描述。

在框1106,可分析架构描述以标识可重用软件组件。组件可通过分析源代码或根据应用的常规描述来确定。在框1108,可分析每一个组件。

在框1108,对于每一个组件,可确定该组件的一组性能度量。性能度量可从跟踪器数据库中推导出。

在许多情况下,性能度量可以是基于使用和架构来估计的度量。这类度量可反映给定预期使用和架构情况下的预期性能。

在框1112,可进行对于组件图的搜索以标识相关组件。在框1114,对于每一相关组件,可在框1116确定那些组件的性能度量。

在框1118,可按照性能度量对相关组件的分组排序。在框1120,可进行当前组件对照相关组件的分析。如果在框1122中存在具有更好性能度量的相关组件,则在框1124,可向用户建议该其它组件。如果在框1122不存在更好的组件,则建议可被省略

在框1126,建议可被呈现给用户。

图12是示出用于基于现有应用和跟踪数据来构造查询的方法的实施例1200的流程图。

实施例1200可例示由分析引擎执行的可采用现有应用及其跟踪数据来准备推荐查询的示例方法。

其他实施例可使用不同的排序、更多或更少的步骤、以及不同的命名或术语来完成相似功能。在一些实施例中,各种操作或操作集合可与其他操作以同步或异步方式并行地执行。此处所选的步骤是为了以简化的形式例示出一些操作原理而被选出的。

在框1202,可接收应用以及其跟踪数据。

在框1204,可分析该应用以标识所有其可重用组件。该分析可根据跟踪数据、应用源代码、或其它来源来执行。

在框1206,可分析跟踪数据以标识应用的使用条件。该使用条件可以是在跟踪期间观察到的实际使用条件。

在框1208,使用和架构信息可被呈现给用户,并且在框1210,可收集任何手动作出的对于观察的改动。在框1212,改动可被保存为查询。在框1214,可传送该查询。在一些实施例中,查询可使用类似于实施例1100的方法来处理。

对本发明的上述描述是出于图示和描述的目的而呈现的。它不旨在穷举本主题或将本主题限于所公开的精确形式,并且鉴于上述教导其他修改和变型都是可能的。选择并描述实施例来最好地解释本发明的原理及其实践应用,由此使本领域的其他技术人员能够在各种实施例和各种适于所构想的特定用途的修改中最好地利用本发明。所附权利要求书旨在被解释为包括除受现有技术所限的范围以外的其他替换实施例。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1