CN105765561A - 根据跟踪数据的生产对比开发使用的确定 - Google Patents

根据跟踪数据的生产对比开发使用的确定 Download PDF

Info

Publication number
CN105765561A
CN105765561A CN201480062407.5A CN201480062407A CN105765561A CN 105765561 A CN105765561 A CN 105765561A CN 201480062407 A CN201480062407 A CN 201480062407A CN 105765561 A CN105765561 A CN 105765561A
Authority
CN
China
Prior art keywords
application
data
production
time series
tolerance
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
CN201480062407.5A
Other languages
English (en)
Other versions
CN105765561B (zh
Inventor
R·克莱杰克
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
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 Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN105765561A publication Critical patent/CN105765561A/zh
Application granted granted Critical
Publication of CN105765561B publication Critical patent/CN105765561B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/77Software metrics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3616Software analysis for verifying properties of programs using software metrics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3692Test management for test results analysis
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/73Program documentation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Library & Information Science (AREA)

Abstract

当跟踪数据适合试探法时,可以从所述数据标识出应用的生产或开发使用。试探法可以包括执行运行的长度、执行的数目、在执行运行内重复的模式或其他因子。类似地,应用的原型设计或开发使用可以由频率代码改变、不规则使用、低负载和其他因子来标识。应用的生产和开发使用可以通过使用对比用户图表被显示,其中生产用户可以被显示为那些具有最大数目的使用的用户。可以通过监视整个应用或根据监视应用的功能、模块、子例程、库、接口、服务或其他部分来收集跟踪数据。

Description

根据跟踪数据的生产对比开发使用的确定
相关申请的交叉引用
本专利申请要求于2013年11月13日提交的题为“DeterminationofProductionvs.DevelopmentUsedfromTracerData(根据跟踪数据的生产对比开发利用的确定)”的美国专利申请序列号61/903,727、于2013年11月13日提交的题为“AnalysisofProductionUseTracerDatatoDetermineProduction-RelatedMetrics(分析生产使用跟踪数据以确定与生产相关的度量)”的美国专利申请序列号61/903,733、以及于2013年11月13日提交的题为“ModuleSearchandBrowseSystemwithProduction-RelatedMetrics(利用与生产相关的度量的模块搜索和浏览系统)”的美国专利申请序列号61/903,744的优先权和权益,全部申请均通过援引对其公开和教导的全部内容明确纳入于此。
背景
应用跟踪是一种理解和监视应用的机制。跟踪(tracing)是一种在应用执行时收集数据的机制。在一些使用中,应用跟踪可被用来监视应用的持续执行。在其它使用中,应用跟踪可被开发者用来理解应用、标识任何问题、以及改善该应用。
概述
当跟踪数据适合试探法时,可以从所述数据标识出应用的生产或开发使用。试探法可以包括执行运行的长度、执行的数目、在执行运行内重复的模式或其他因子。类似地,应用的原型设计或开发使用可以由频率代码改变、不规则使用、低负荷和其他因子来标识。应用的生产和开发使用可以通过使用对比用户图表被显示,其中生产用户可以被显示为那些具有最大数目的使用的用户。可以通过监视整个应用或根据监视应用的功能、模块、子例程、库、接口、服务或其他部分来收集跟踪数据。
来自应用的生产使用的跟踪数据可以不同于出于分析目的的开发使用而被处理。针对生产跟踪数据可以执行长期性能分析,但所述分析不针对开发跟踪数据执行,因为开发跟踪数据可以具有显著不同的行为特性。可以分析生产跟踪数据以确定应用或功能的强健性、脆弱性、稳定性、对负荷改变的耐受性或其他在评定应用或生产使用的功能或用于标识对该功能的潜在改进方面中有用的度量。
可以针对个体模块或代码库收集跟踪数据的生产使用,因为那些模块在不同的应用中实践。跨多个应用的经聚集的生产数据可以被呈现为模块参考或选择系统的一部分。生产数据可以被概括为生产价值分数或其他概括度量。这种概括可以指示模块可以适合于或可以不适合于生产使用的条件。模块搜索系统可以基于从生产使用数据导出的它们的各种度量来对模块排名,并且允许用户使用所述度量来搜索或浏览。
提供本发明内容以便以简化形式介绍将在以下的具体实施方式中进一步描述的一些概念。本发明内容并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。
附图简述
在附图中:
图1是示出在软件开发生存周期中的数据收集的实施例的图示。
图2是示出具有可收集、分析和消费生产或开发跟踪数据的设备的网络环境的实施例的图示。
图3是示出数据流和分类操作的实施例的图示。
图4是示出用于分类跟踪数据集的方法的实施例的流程图示。
图5是示出用于分析元数据以确定分类的方法的实施例的流程图示。
图6是示出用于创建与生产和开发相关的度量的方法的实施例的流程图示。
图7是示出用于选择生产等级搜索准则的用户界面的示例实施例的图示。
图8是示出用于选择用于生产等级分析的数据集的用户界面的示例实施例的图示。
图9是示出用于显示具有生产度量的模块的用户界面的示例实施例的图示。
图10是示出具有多个模块和它们的生产性能度量的用户界面的示例实施例的图示。
详细描述
根据跟踪数据的生产对比开发使用的确定
当应用或应用组件可被执行时,跟踪系统可以收集数据。所述执行可以在不同的情形中完成,包括生产使用和开发/开发使用。在生产使用期间所收集的数据可以具有与在原型设计期间所收集的数据不同的使用和特性。这样,可以通过试探法或其他机制来区分所述数据。
术语“生产”可以是指在其预期的最终使用和负荷下使用计算机软件应用或应用组件。相反,术语“开发”使用可以是指在其中计算机软件可以处于正被编写、改进、调试并以其他方式准备用于生产的过程中的使用阶段。在许多情况下,软件应用的生存周期的开发阶段可以包括在调试或测试应用的同时在模拟或真实负荷下实践所述应用。在测试已经被完成之后,应用可以可以被发布成“生产”,其中所述应用可以被部署以处理真实负荷。
生产跟踪数据可以具有与开发跟踪数据不同的使用。例如,生产跟踪可以被用于给出关于强健性、脆弱性、稳定性和其他可能对开发者有用的与生产相关的因子的指示符。通过将生产跟踪数据与开发跟踪数据分隔开,与生产有关的指示符的分析可以不受开发跟踪数据的存在的负面影响。
类似地,当开发和测试发生时,开发跟踪数据可以给出关于应用的改进/回归的指示符。这样的数据可能受到生产跟踪数据的存在的不利影响。
生产跟踪数据可以由几个不同的机制来标识。一种试探法或一组试探法可以被应用以将生产跟踪数据与开发跟踪数据分隔开。正在由应用或应用组件处理的数据可以被分析以标识测试数据并将其与生产数据分隔开。在一些情况中,开发者可能清楚标识一组设备用于生产操作而第二组设备用于原型设计,但是在其他情况中,这样的设备组可能是暗示的。
一种试探法可以通过标识应用的操作行为来标识生产跟踪数据。在典型的生产环境中,应用可以被执行经延长的时间周期,并且还可以被展示给可能具有周期性或其他规则特征的传入数据。在这样的环境中,生产操作可以是那些超过经延长的执行时间的预定最小值的跟踪数据集,并且在一些情况下,当传入负荷可能已经观察到周期性或其他特征时被进一步标识。
开发跟踪数据可以通过分析传入数据或应用所经历的负荷被标识。在许多原型设计和测试环境中,应用的数据负荷可以被设计为应用的测试制度的一部分。这些数据负荷可以具有公知为或被推断为开发数据集的特性。例如,用于负荷测试的一些数据集可以包括在数据自身中的标记或标识符,它们可以通过跟踪器或通过跟踪数据被分析以将执行运行标识为开发执行运行。
开发者可以给出清楚或暗示的关于应用的开发或生产执行的指示。这些指示可以从各种元数据或可以由跟踪器或其他机制收集的操作数据中导出。当应用从开发执行改变为生产执行时,开发者可以设置标志、使用命名约定、遍历生产发布周期、在不同的目录中或用不同的元数据存储应用、将应用移至不同的硬件平台或执行某种其他操作。在一些实施例中,生产对比开发执行的清楚指示可以在收集跟踪数据之前被确定,并且基于所述确定所有后续的跟踪数据可以被分类成生产或开发。
开发者可以通过跟踪器的设置或配置来指示应用的生产或开发操作。一些跟踪器可以被配置为在开发阶段期间提供更大或更加详细的数据集并在生产模式中提供不同的数据集。这样的配置可以被用作关于特定数据集是被分类成生产还是开发数据集的指示符。
通常,开发代码可以比生产代码被更频繁地改变。在开发和开发阶段期间,应用的代码库可以被持续更新和测试。随着时间推移,改变可以较少实质的直到应用可以被发布为生产。一旦在生产中,该应用可经历最小改变。当源代码或其他元数据可以是可用的时,通过分析对所述源代码的任何改变可以做出生产/开发状态的确定。这样的分析可以使用元数据来执行,这样的元数据可以包括在应用中的代码行的数目、版本号,对应用的最后改变的时间戳或某种其他元数据。
一种试探法可以被应用到数据,该数据的生产/开发状态可能并不是已知的,随后,可以分析各种元数据以确定哪些元数据因子可以与跟踪数据的生产/开发状态相关。在这样的实施例中,跟踪器可以收集各种元数据作为数据收集操作的一部分。跟踪数据可以被分析以将一个或多个数据集标识为生产或开发数据集。一旦可做出确定,元数据可以被分析以标识出那些可以与生产或开发操作相关的元数据项。当所述相关性已经满足统计置信度时,可以通过试探法分析和元数据分析两者做出生产/开发确定。在一些情况中,在已经在一个或多个元数据和生产/开发指定之间做出相关性之后,生产/开发确定可以单独通过元数据分析来做出。
可以为整个应用或为应用的子集分析跟踪数据。所述子集可以是应用的单个功能、模块、库、子例程、接口、应用编程接口或某种其他软件组件。在一些实施例中,跟踪器可以被应用到一个或多个软件组件,而非整个应用。其他实施例可以跟踪整个应用。
分析生产使用跟踪数据以确定与生产相关的度量
跟踪数据的生产集可以被用于确定各种与生产相关的度量。通常,与生产相关的度量可以包括任何性能或工作特性,它们可以指示计算机应用或计算机应用组件在生产环境中工作得有多好。
与生产相关的度量的示例可以包括强健性、容错性、在严重或不期望的负荷下的性能和其他度量。这些度量可以指示应用或应用组件可以在生产条件下工作得有多好。所述度量可以被开发者在所述度量是有利的时用于重用组件或者被开发者用于标识应用或其组件可以被改进的方面。
与生产有关的度量可以从生产跟踪数据中导出。在许多情况中,跟踪数据可以在应用或应用的组件的生存周期的开发阶段和生产阶段两者中都被收集。生产阶段的跟踪数据可以与开发阶段分隔开,并且在不使用开发跟踪数据的情况下,生产跟踪数据可以被分析以生成与生产相关的度量。在一些情况中,可以使用开发和生产跟踪数据这两者来生成与生产相关的度量,并且与生产跟踪数据不同的加权可以被应用到开发跟踪数据。通常,这样的加权可以对生产跟踪数据给予更多的强调,并对开发跟踪数据给予更少的强调。
将生产跟踪数据与开发跟踪数据分隔开可以消除开发跟踪数据可能对与生产相关的度量的负面影响。在许多情况中,在改变负荷或条件的情况下,与生产相关的度量可以强调稳定性和长期操作。相反,在原型设计和开发期间收集的跟踪数据可以包括在可能引起应用故障的条件下操作应用。故障可以被复制以标识能改进应用的各方面。在改变了应用代码之后,所述应用可以重新运行以确定所述故障是否可被复制。原型设计阶段的这种示例可以说明开发跟踪数据可以如何包括许多数据集,而这些数据集可能没有说明应用可以在生产环境中执行得有多好。
与应用有关的度量可以趋向于强调在改变负荷的情况下的操作的长久性以及容错性和强健性。通过分析从长期运行的应用收集的数据集并通过丢弃在原型设计期间的较短周期上收集的数据集可以生成更多的有利的度量。当较短的数据集实际上是开发和测试的结果并且不是来自应用的生产使用时,这样的丢弃可以是有效的。
利用与生产相关的度量的模块搜索和浏览系统
基于与生产有关的度量可以搜索和浏览一组计算机应用模块。所述模块可以表示可以从其收集生产跟踪数据的可重用软件组件。所述生产跟踪数据可包括可以指示用于生产使用的模块的稳定性的使用统计和度量。
系统可以包括在生产度量和开发度量之间进行区分的搜索和浏览机制。可以从模块的长期运行示例中或从其中模块可以以模块的最终预期使用被部署的其他情况下收集生产度量。搜索和浏览系统可以包括使得用户输入模块的使用场景,随后基于该使用场景比较模块的机制。
使用场景可以定义用户想要如何在生产中使用模块。由于每个应用可以具有不同的预期使用,系统可以尝试针对用户的使用场景来定制模块的统计。使用场景可以包括在其上可以连同预测使用模式一起使用模块的硬件和软件。
硬件和软件配置可以包括连同操作系统或其他软件组件一起的专用或通用硬件平台。硬件平台可以标识应用是否在专用平台或一组平台上运行。该组平台可以是相当宽泛的,例如移动平台,或可以是专用的,例如专用手持设备或具有专用操作系统的设备。软件配置可以包括操作系统、语言支持或在生产系统中的其他模块。
应用的期望使用模式可以包括描述预期使用的各种参数。一个应用可以旨在针对长时间周期操作,然而另一个应用可以旨在一次操作或可以在其生存周期期间数次操作。
贯穿本说明书和权利要求书,术语“模块”被用于定义可被合并到应用中的一组可重用代码。模块可被知晓为“库”、“子例程”或某种其它概念。出于本说明书和权利要求书的目的,这些术语被认为是同义词。
“模块”可以是按照多个应用可访问代码的方式布置的代码,即便这些应用彼此之间可能没有连接。“模块”可以是按照多个应用可访问代码的方式布置的代码,即便这些应用彼此之间可能没有连接。在一些情况下,模块可在大应用的范围内重用,而在其它情况下,模块可被共享至可在不相干且不连接的应用中使用该模块的其它应用开发者。
许多编程语言和范例具有“模块”或库的概念,其中模块可有被定义的接口,通过该接口应用可调用并使用该模块。一些范例可允许程序员按静态方式合并模块,以使得模块代码在该应用被编写并部署之后不进一步改变。一些范例可允许动态库,其可在运行时或者甚至在执行开始之后被加载和调用。动态库可在该应用可被分发之后被更新和改变,而调用库或模块的方式可保持不变。
模块可以源代码、中间代码、可执行代码或以某种其它形式分发。在一些情况下,模块可以是可通过应用编程接口调用的服务。
在此整个说明书和权利要求书中,术语“剖析器”、“跟踪器”和“仪器”被可互换地使用。这些术语指代可在应用被执行时采集数据的任何机制。在经典定义中,“探测工具”可指代可被插入可执行代码并从而改变该可执行代码的生成方法存根(stub)、挂钩(hook)或其他数据采集机制,而“剖析器”或“跟踪器”可经典地指代不可改变可执行代码的数据采集机制。对这些术语及其派生词中的任一者的使用都可蕴含或暗示彼此。例如,使用“跟踪器”的数据收集可使用“跟踪器”的经典意义中的非接触式数据收集以及用其中可执行代码可被改变的“探测工具”的经典意义的数据收集来执行。类似地,通过“探测工具”收集的数据可包括使用非接触式数据收集机制的数据收集。
此外,通过“剖析”、“跟踪”和“探测工具”收集的数据可包括可被收集的任何类型的数据,包括诸如处理时间、吞吐量、性能计数器等等之类的与性能有关的数据。收集到的数据可包括函数名、传递的参数、存储器对象名和内容、传递的消息、消息内容、寄存器设置、寄存器内容、差错标志、中断、或与正被跟踪的应用有关的任何其他参数或其他可收集的数据。
贯穿本说明书和权利要求书,术语“执行环境”可被用于指代用于执行应用的任何类型的支持软件。执行环境的一示例是操作系统。在一些举例说明中,“执行环境”可被示为与操作系统分开。这可能是为了例示出为应用提供各支持功能的虚拟机,诸如进程虚拟机。在其他实施例中,虚拟机可以是可包括其自己的内部操作系统并可模拟整个计算机系统的系统虚拟机。贯穿本说明书和权利要求书,术语“执行环境”包括操作系统和可具有或可不具有可容易标识的“虚拟机”或其他支持软件的其他系统。
贯穿本说明书和权利要求书,术语“应用”被用来指代可执行期望功能的软件和硬件产品的任何组合。在一些情况下,应用可以是用硬件平台操作的单一软件程序。一些应用可使用多个软件组件,每个软件组件可以是用不同语言编写的或可在不同硬件或软件执行环境内执行。在一些情况下,这些应用可跨多个设备分散并且可使用可由网络或其它通信系统连接的软件和硬件组件。
贯穿本说明书,在对附图的整个描述中,相同的附图标记表示相同的元素。
在本说明书和权利要求书中,对“处理器”的引用包括多个处理器。在某些情况中,可由“一处理器”执行的过程可实际上由同一设备上或不同设备上的多个处理器执行。出于本说明书和权利要求书的目的,对“处理器”的任何引用应包括可能位于同一设备上或不同设备上的多个处理器,除非另外明确指定。
当元素被称为被“相连接”或“相耦合”时,这些元素可被直接连接或耦合在一起,或者也可存在一个或多个中间元素。相反,当元素被称为被“直接连接”或“直接耦合”时,不存在中间元素。
本主题可被体现为设备、系统、方法、和/或计算机程序产品。因此,本主题的部分或全部可以用硬件和/或软件(包括固件、常驻软件、微码、状态机、门阵列等)来具体化。此外,本主题可以采用计算机可使用或计算机可读存储介质上的计算机程序产品的形式,介质中收录了供指令执行系统使用或结合指令执行系统一起使用的计算机可使用或计算机可读的程序代码。在本文档的上下文中,计算机可使用或计算机可读介质可以是可包含、储存、通信、传播、或传输程序以供指令执行系统、装置或设备使用或结合指令执行系统、装置或设备一起使用的任何介质。
计算机可使用或计算机可读介质可以是,例如但不限于,电、磁、光、电磁、红外、或半导体系统、装置、设备或传播介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。
计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术来实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不限于,RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁带盒、磁带、磁盘存储或其他磁性存储设备、或能用于存储所需信息且可以由指令执行系统访问的任何其他介质。注意,计算机可使用或计算机可读介质可以是其上打印有程序的纸张或另一合适的介质,因为程序可以经由例如对纸张或其他介质的光学扫描而电子地捕获,随后如有必要被编译、翻译,或以其他合适的方式处理,并随后存储在计算机存储器中。
当本主题在计算机可执行指令的一般上下文中具体化时,该实施例可包括由一个或多个系统、计算机、或其他设备执行的程序模块。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。通常,程序模块的功能可在各个实施例中按需进行组合或分布。
图1是示出可以发生在应用的生存周期期间的数据收集的实施例100的图示实施例100可以表示应用生存周期102和可以在应用的开发阶段和生产阶段期间被收集的数据。这些数据可以被存储在数据库中并以各种方式被使用。
实施例100示出在其中可以讨论跟踪数据和其使用的一些上下文。跟踪数据可以在应用执行时被收集,并且对于可能正在监视该应用的用户可能立刻有用。然而,当跨多个执行聚集并分析跟踪数据时,开发使用和生产使用的结果可能对这样的分析有不利的影响。而且,这样的分析可以聚集用于跨多个应用的可重用代码模块的度量通过将应用的开发使用与生产使用分隔开,可以生成更多有意义的度量。
应用生存周期102可以表示软件产品的的典型的开发和部署生存周期。在设计104之后,编码106和测试108可以发生。编码106和测试108可以循环许多次,因为代码是在不同的条件和负荷下被实践,同时,可以揭露出隐错并添加特征。在某个点处,可以发生发布110,它可以传送可以被部署在生产112中的软件产品。通常,编码106和测试108的阶段可以被称为“开发”。
从开发到生产的转变在一些情况中可以是正式过程。除了用于将产品发布进入市场的商业逻辑之外,发布过程的正式版本可以涉及成功通过一系列测试,。这样的过程可以涉及来自工程和商业管理者的签收以及其他重要事件。
许多发布过程可能是相当不正式的,在其中开发者做出允许其他人使用应用或代码模块的决策。在许多情况下,这种转变可涉及来自被用于测试的预定义的输入流和未定义的输入流的改变。
在编码106和测试108阶段期间,跟踪器可以收集开发跟踪数据114。开发跟踪数据114可以被存储在跟踪数据库118中。在许多场景中,开发者跟踪数据114可以被显示在开发者跟踪用户界面124上。
开发者跟踪用户界面124可以是一种在其中特定执行运行的跟踪数据可以被分析和显示的机制。典型的使用场景可以是对于开发者,在开发情况下实践软件组件并收集跟踪数据,随后开发者可以显示该特定执行运行的结果。在开发者在开发情况下编写、测试和修改软件组件时,这种场景可以一遍又一遍被重复。
开发跟踪数据114可以包括从在开发情况下的软件组件的不完整版本中生成的结果。不完整性可能是组件没有被完整编码并且其中特征还没有被添加的结果,或者可以是没有成功通过已经针对该软件组件所创建的各种测试的结果。当软件组件经历编码106和测试108循环时,软件组件可以改进并且跟踪数据可以反映该软件组件的改进。
相反,在生产112中正在使用该软件组件的同时,可以收集生产跟踪数据116。在生产112中,在编码106和测试108阶段中遇到的许多隐错或问题可能已经被修复,并且生产跟踪数据116可以反映在“完成”状态中的软件组件的操作。
跟踪数据库118可以包含开发跟踪数据114和生产跟踪数据116两者。通过分析跟踪数据库118,可以创建许多不同类型的有用的度量。例如,一种分析可以聚集在不同的使用情形下的专用软件组件或模块的使用。这样的分析可以生成当被使用在许多不同的应用或使用中的模块的统计。这样的信息对于模块所有者来说可能在确定当被集成到许多不同的应用中时模块执行得有多好时是有用的。相同的信息对于希望对合并到在开发情况下的应用的模块进行评估的应用开发者来说可能是有用的。
聚焦于开发120的度量和统计可以包括在示出贯穿开发过程中的应用或软件组件的进展的度量。这样的度量可以包括反映实际开发过程的报告和度量,例如在一时间周期上所标识和修复的隐错的数目,或反映开发周期继续时在可靠性、稳定性、性能或其他度量方面的改进的统计。
聚焦于生产122的度量和统计可以包括示出软件组件在生产环境中可以操作得多好的度量。这样的度量可包括长期稳定性、捕捉的错误、遇到的故障、以及在组件在生产负荷情况下所捕捉的性能度量。
在许多情况中,如果聚焦于生产的度量是使用在开发期间收集的跟踪数据生成的话,则可以恶化所述度量。在开发阶段中,跟踪数据可以反映出错误、隐错、不完整代码、可能还没有被实现的特征以及可能没有反映出完成的和发布的产品的性能的其他因子。通过标识在跟踪数据库118中的开发跟踪数据114和生产跟踪数据116,并执行对跟踪数据的这些子集的单独分析,可以在不被开发跟踪数据114恶化的情况下生成有意义的生产统计。
图2是示出可在应用执行时收集数据并分析生产和开发跟踪数据的各组件的实施例200的示图。实施例200的示例仅仅是可生成并查看经跟踪器数据的多设备系统的一个示例。其它体系结构可包括单设备和多设备体系结构。
实施例200的架构包括在其上跟踪数据可被收集的设备202,以及用于创建和访问所收集的数据的不同元素的若干个其它设备。在其它实施例中,所示出的功能的一些或全部可被组合到一个或多个设备中。
图2的图示出了系统的功能组件。在一些情况下,组件可以是硬件组件、软件组件、或者硬件和软件的组合。一些组件可以是应用级软件,而其他组件可以是执行环境级组件。在一些情况下,一个组件到另一组件的连接可以是紧密连接,其中两个或更多个组件在单个硬件平台上操作。在其他情况下,连接可通过跨长距离的网络连接来进行。每个实施例都可使用不同的硬件、软件、以及互连架构来实现所描述的功能。
实施例200示出了可具有硬件平台204和各软件组件的设备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上操作。数据库222可以包含被分类为开发的跟踪数据233、被分类为生产的跟踪数据225以及未被分类的跟踪数据227。
入口引擎224可以从跟踪器接收跟踪数据。跟踪器可以位于设备202上或其他设备上。在实施例200的示例中,数据收集系统232可以生成跟踪数据,并将跟踪数据传送到入口引擎224。
分类引擎226可以尝试将传入跟踪数据分类成开发或生产。在一些实施例中,分类引擎226可以能够分析传入数据流并应用分类。在其他实施例中,在数据被接收并存储到数据库222中之后,分类引擎226可以分析该数据。在这样的实施例中,跟踪数据可以由入口引擎224接收,并作为未被分类的跟踪数据227被存储在数据库222中,随后由分类引擎226进行分析以应用一个分类。
查询引擎228可以接收对从数据库222导出的信息的请求,执行分析以生成统计或其他信息,并返回所请求的信息。在许多实施例中,查询引擎228可以包括可执行数据库222中的数据的复杂分析的各种分析引擎。
网络230可将设备202连接到各种其他设备。
数据采集系统232可以是可生成跟踪数据的设备。数据采集系统232可在可与硬件平台204类似的硬件平台234上操作。数据采集系统232被示出有几种不同类型的跟踪器。
应用244可以在数据采集系统232上执行,并且跟踪器可以收集跟踪数据。跟踪器可以将跟踪数据传送到设备202的入口引擎224。
在某些实施例中,应用244可在操作系统236内执行。在这样的情况中,操作系统236可以使得跟踪器238的一些或全部作为操作系统236的部分被嵌入。一些情况可以具有可与嵌入的跟踪器238分开地或结合操作的外部跟踪器246。
在其他实施例中,应用244可在执行环境240内执行。在这样的情况中,执行环境240可以使得跟踪器242的一些或全部作为执行环境240的部分被嵌入。一些情况可以具有可与嵌入的跟踪器242分开地或结合操作的外部跟踪器246。在一些情况中,操作系统236中的嵌入的跟踪器238可以结合执行环境跟踪器242和外部跟踪器246提供跟踪数据的一些或全部。
用户访问设备248可以具有示出从查询引擎228检索到的数据的用户界面。用户访问设备248可具有硬件平台250,其可类似于硬件平台204。浏览器252可在设备248上执行。在浏览器252内,用户界面254可以示出从查询引擎228检索到的信息和数据。
查询引擎228可以具有可对查询进行响应的应用编程接口(API)。应用编程接口可以允许不同的应用向查询引擎228发送请求,并且随后以某种方式处理该响应,例如进一步处理响应、在用户界面中示出数据或其他操作。
储存库设备254可以包含不同版本的软件组件以及可以被用于标识软件组件的开发和生产版本的元数据。储存库设备254可在可与硬件平台204类似的硬件平台256上操作。
储存库258可以是可包括连同测试状态262和其他元数据一起的源代码260的不同版本的数据库。测试状态262和其他元数据可以包括关于应用的开发和发布生存周期的信息。许多复杂的储存库可以包括生存周期管理特征,所述特征可以指示软件组件可能位于相对于其开发和部署生存周期的何处。这样的信息可以由分类引擎226使用以将跟踪数据分类为开发或生产。
图3是示出用于收集和分析跟踪数据的各种序列的示例实施例300。跟踪数据可以在序列期间的各个阶段处被分类。
实施例300示出可以在存储跟踪数据之前执行的分类引擎、以及可以在存储跟踪数据之后且在分析之前执行的分类引擎的示例,和可以作为跟踪数据的分析的部分执行的另一种分类引擎。这些示例意在说明分类引擎的几种不同架构。
在一些架构中,多个分类引擎可以彼此结合操作。在一种这样的架构中,一种分类引擎可以执行可由后续分析验证或确认的初步分析。在另一种这样的架构中,后续分类分析可以推翻或改变先前的分类分析。
多个设备302、304和306可以提供跟踪数据。跟踪器308、312和316可以分别从应用310、314和318收集数据。应用310、314和318可以是相同的应用或不同的应用。在许多情况中,不同的应用可以包含相同的软件组件。
各种跟踪器中的每个可以传送跟踪数据到入口引擎320。入口引擎320可以具有分类引擎,它可以在传入跟踪数据被存储在跟踪器数据库324之前分类所述数据。分类引擎322可以是可处理传入的数据流的轻量进程。在一些情况中,分类引擎322可以执行可由后来的分类分析进行后期验证或确认的初步分类。
在将数据存储在数据库324之后,分类引擎326可以分析所存储的数据,执行分类分析并更新各种跟踪数据集的分类。
一旦数据被存储在数据库324中,分析引擎328就可以执行各种分析并生成可以在用户界面330中显示的数据。在这样的情况中,分类引擎332可以在分析阶段被调用以在各种分析之前或作为各种分析的部分来分类跟踪数据集。类似地,分析引擎334可以使用分类引擎332以通过应用编程接口336来对查询进行响应。
图4是示出用于分类跟踪数据的方法的实施例400的流程图示。
其他实施例可使用不同的排序、更多或更少的步骤、以及不同的命名或术语来完成相似功能。在一些实施例中,各种操作或操作集合可与其他操作以同步或异步方式并行地执行。此处所选的步骤是为了以简化的形式例示出一些操作原理而被选出的。
实施例400可以说明用于分类跟踪数据的高级过程。在许多情况中,跟踪数据集可以是可在监视应用或软件组件的同时被周期性地收集的时间序列数据。在收集时间序列数据集的同时可以执行数据集的分类,或者可在已经收集了完整的数据集之后再执行。
在框402中,可接收跟踪数据和元数据。跟踪数据可以具有一个或多个时间序列数据集的形式。这样的时间序列可以包括可通过使用跟踪器来监视应用所收集的性能和其他数据。这样的数据可以以预定义的周期性间隔来收集。在其他实施例中,可以响应于各种事件或其他条件来收集数据。
元数据可以包括除了实际跟踪数据之外可被收集的任何类型的信息。这样的元数据可以包括关于硬件、软件或应用可以被执行的其他条件的信息、关于源代码、编译、执行的信息、储存库信息或其他信息。
在框404可执行元数据分析。元数据分析的更多详细示例可在本说明书的稍后处说明。
如果在框406中元数据分析产生明确的分类,在框408中可以使用该分类来标记跟踪数据。
在框410中,分析可以将跟踪数据与其他类似跟踪进行比较。块410的分析可以尝试将跟踪数据与其他跟踪数据集相关。如果在框412中存在匹配,并且在框414中已经有其他跟踪数据集被分类,则在框416所述其他跟踪的分类可以被应用到当前的跟踪数据集。如果在框414中不能分类其他跟踪数据集或如果在框412中不存在匹配,则过程可以在框418处继续。
可以以在两个跟踪数据集之间具有统计相关性的任何方式来执行这两个跟踪数据集的比较。当统计类似性被确定并且所述其他数据集具有已知的分类时,该分类可以被应用到新的数据集。
在框418中,一种经分类的数据集的模型可以被用于比较和分类跟踪数据集。当在框420中存在统计上显著的匹配时,在框422中可应用该分类,否则跟踪数据集可被标记为未分类的。
在框418中,可以分析多个数据集以生成用于某个数据集分类的模型,例如用于开发跟踪数据集的模型和用于生产跟踪数据集的第二模型。可以将所述模型与跟踪数据集进行比较以确定相关性或匹配。基于匹配的统计上的显著性,可以做出一种分类。在一些实例中,没有匹配可以被发现是统计上显著的。
图5是示出用于通过分析元数据来分类跟踪数据的方法的实施例500的流程图示。实施例500示出可在实施例400的框404中执行的操作的一个详细示例。
其他实施例可使用不同的排序、更多或更少的步骤、以及不同的命名或术语来完成相似功能。在一些实施例中,各种操作或操作集合可与其他操作以同步或异步方式并行地执行。此处所选的步骤是为了以简化的形式例示出一些操作原理而被选出的。
实施例500是可被用于分类跟踪数据集的各种元数据分析的示例。在实施例500的示例中,当分析每种类型的元数据时分类分数可以被调整,并且通过每个元数据分析的累积聚集可以确定最终的分类。用于进行可对分类分数做出的调整的每个可以被应用特定的数字因子或加权。对于不同的条件和不同的实施例,所述加权可以是不同的。这样的实施例仅仅是如何确定跟踪数据集的分类的一个示例。
在框502中,可接收跟踪数据和元数据。
在框504中可以检查生产/开发标志。如果在框506中标志被设置,则在框508中可调整分类分数。
许多系统可以具有可清楚标识软件版本或执行运行为开发或生产的标志或其他元数据。这样的元数据可以在跟踪器运行之前或期间被收集。当这样的标志存在时,可以根据标志或其他指示符调整分类。
在框510可以分析输入数据流。可以分析输入数据流以确定到正被监视的应用的输入是已知的测试数据还是看上去是测试数据测试输入数据可以被用于在测试情况下以可预期和可重复的方式来实践软件组件,这样,各种条件可以被重复地复制。在一些实施例中,测试数据可以被预先定义,或者可以具有各种可将该输入数据标识为测试数据的标记或其他特性。当存在测试数据时,相比较生产数据而言,跟踪数据更可能是开发数据。
当在框512中输入数据分析可以返回统计上显著的结果时,在框514中可以调整分类分数。当输入数据分析返回含糊结果或统计上不显著的结果时,该过程可以在框516继续。
跟踪数据的操作上行为可在框516中被分析。当在框518中操作上行为分析返回统计上显著的结果时,在框520中可以调整分类分数。当操作上行为分析返回含糊结果或统计上不显著的结果时,该过程可以在框522继续。
操作上行为可以反映应用运转工作的方式,并且可以是与输入数据分析类似的分析,除了所述分析可以使用软件组件的输出或跟踪数据本身作为开发或生产执行的指示符之外。
在生产环境中执行的应用可以具有与在开发环境中执行的应用不同的行为特性。在生产环境中的应用可以针对长时间周期操作,并且可经历操作的重复模式。例如,网站的生产版本可以具有可每日或每周重复的使用模式。相反,开发中的应用可以在持续负荷下操作,直到可以观察到故障条件。在另一个示例中,开发中的应用可以在最大负荷下执行,同时生产中的应用可以是负载平衡的或以其他方式受管,以便所述应用极少经历满负荷情况。
在框522,可以检查储存库元数据。储存库元数据可以指示软件应用或组件的生存周期阶段。一些储存库可以具有标志、状态指示符或可以追踪软件组件从开发到生产的其他机制。储存库元数据可以包括版本号、版本名、命名约定、或可以指示版本是否是生产或开发的其他指示符。这样的指示符可以是跟踪数据分类的有用指示符。
当在框524中储存库元数据指示统计上显著的结果时,在框526中可以调整分类分数。当储存库元数据结果是含糊的时,该过程可以继续到框528。
在框528中可以分析硬件配置,并且可以相应地调整分类分数。生产应用的硬件配置可以不同于许多开发系统。在早期开发中,可以在个人计算机或其他开发平台上构建并测试一些软件组件。在生产中,应用可以被部署在生产级硬件平台上,例如计算机群集或其他硬件平台。在一些情况中,开发可以在虚拟机或硬件模拟器中被执行,而生产应用可以被部署在由模拟器表示的实际硬件上。
通过检查底层硬件,跟踪数据集的开发/生产分类可以通过某种显著性来完成。通过分析硬件平台,分类可能不是明确的,例如,因为某种开发测试可以在生产硬件上执行。
在执行了各种分析之后,在框530中可以分析分类分数。在许多情形中,分类分数可以与预定义的阈值相比较以确定分类是开发还是生产。当在框532中所述确定是明确的时,在框534可应用所选的分类。当在框532中所述确定不是明确的时,在框536可使得分类为“未知”。
图6是示出用于创建开发度量和生产度量的方法的实施例600的流程图示。实施例600可以执行分类,随后执行对生产和开发度量的分析。
其他实施例可使用不同的排序、更多或更少的步骤、以及不同的命名或术语来完成相似功能。在一些实施例中,各种操作或操作集合可与其他操作以同步或异步方式并行地执行。此处所选的步骤是为了以简化的形式例示出一些操作原理而被选出的。
在框602,可以开始度量分析。所述度量分析可以被请求针对特定软件组件。软件组件可以是可重用组件,例如模块或库,或可以是完整的应用或其他独立组件。
与软件组件相关联的跟踪数据集可以在框604中被标识。在一些情况中,跟踪数据集可以是可与所选软件组件相关的任何数据集,包括生产和开发使用以及在不同的应用、硬件和其他配置和设置中的使用。
在框606中,可以分析每个数据集。可在框608中确定数据集的分类。
在一些情况中,用户可能能够标识在其下用户可以定义作为生产设置的条件。例如,用户可以确定预期的硬件配置、性能水平或可以定义生产使用的其他参数。在这样的情况下,在框608中,用户的输入可以确定哪些数据集可以被认为是生产数据集以及哪些可以被认为是开发数据集。在其他情况中,可以使用各种其他方法,例如在实施例400和500中所示的那些方法,来确定生产/开发分类。可在本说明书的稍后处说明选择生产定义的用户界面的示例。
如果在框610中所述分类不是生产的,则在框612中跟踪数据集可以被添加到开发集合中。如果在框610中所述分类是生产的,则在框614中跟踪数据集可以被添加到生产集合中。
在框606中分类并分组了所述跟踪数据集之后,在框616中可以执行分析以生成生产度量,并且在框618中可以执行第二分析以生成开发度量。
图7是示出用于选择生产统计的搜索准则的用户界面的实施例700的示例图示。实施例700示出了用于选择可以定义软件组件的“生产”使用的参数的几种机制的示例。实施例700还示出可以被作为这样的定义的部分被改变的几种参数。
搜索准则可以由一组单选按钮702来部分地定义,所述按钮允许用户在开发704和生产706之间选择。
生产稳定性排名708可以是指示在生产环境中操作的软件组件的能力的参数。生产稳定性排名708可以是可基于各种参数的聚集统计,所述参数例如错误处理、故障、存储器使用分析、网络使用分析、处理器使用分析、正常运行时间和可以指示生产使用的强健性和普遍适用性的其他因子。
生产稳定性排名708可以在0-100范围710中表示。用户可以通过将控件712和714移动到范围710内的一个位置处来选择生产稳定性排名的范围。在一些情况中,用户的选择可以被看作用数字表示的项716和718。在一些用户界面中,用户可以能够将期望的数字键入到项716和718中。
长运行要求720可以定义生产软件组件的预期使用长度。一组选择框722可以是允许用户在小时、天、周、月和年之间选择以用于期望的服务长度的用户界面控件。
部署硬件724可以标识用户可以用选择框726选择的一组生产硬件配置。生产硬件配置可以包括移动设备、独立的个人计算机、云托管的虚拟机、群集和其他配置。一些实施例可以包括可以呈现附加选项以进一步定义关于所选项的某些特性的扩展按钮728。
处理器730可以表示生产系统可以在其上执行的核或处理器的数目。范围732可以示出不同数目的处理器,并且项734和736可以是用户可以移动以选择处理器范围的用户界面控件。在一些实施例中所述范围还可以使用项738和740来输入。
存储器742可以表示对于生产环境中的应用可用的随机存取存储器的量。再次,存储器范围的选择可以由范围744示出并且使用用户控件746和748来输入。结果可以被显示,并且在一些情况中,可使用项750和752来输入。
网络带宽756可以表示应用的生产级使用可用的带宽。如前述,带宽范围的选择可以由范围758示出并且使用用户控件760和762来输入。结果可以被显示,并且在一些情况中,可使用项764和766来输入。
存储I/O带宽768可以表示对于应用的生产使用的存储速度或带宽。再次,存储I/O范围的选择可以由范围770示出并且使用用户控件772来输入。结果可以被显示,并且在一些情况中,可使用项774和776来输入。
图8示出示例实施例800,它显示了示出当选择分析范围时可用的数据集的数目的样本用户界面机制。
图表802可以是堆积条形图或在纵轴上具有可用数据集的数目804而在横轴上具有统计806的其他类型的图表。堆积条形图可以示出在彼此顶部上堆叠的开发808和生产810数据集。
一组选择控件812和814可以由用户移动以选择通过该选择界定的数据集。
实施例800可以在选择生产参数时,例如在其中可以选择几个参数的实施例700中,被使用。在简单示例中,选择统计806可以是生产稳定性排名或某种其他统计。通过使用图表802,用户可以能够可视化对于特定统计的每个级别可以存储多少个数据集,并且随后当很少数据可用时增加该范围或当许多数据集可用时减少该范围。
图9是示出用于显示具有生产级统计的模块的用户界面的示例实施例900。实施例900仅仅是具有生产级统计的用户界面的一个示例。
模块名902可以指示所示出的统计是用于名为“异步”的模块。
一组单选按钮904可以允许用户在典型生产使用906和定制生产使用908之间进行选择。典型生产使用可以通过试探法或其他分析来确定,而定制生产使用908可以通过诸如在实施例700中所示的那样的用户界面来确定。当用户选择对应于定制生产使用908的单选按钮时,用户可以被呈现有一个用户界面(例如实施例700的用户界面)以输入或改变用户的定制的生产定义。
用户的定制的生产定义可以在实施例600的框608中被用于确定用于分析的生产跟踪数据集的集合。这样的分析的结果可以在实施例900中示出。
模块的生产统计可以包括生产稳定性排名910、错误率912以及长久性评定914。这些统计可以反映对于可能正在对用在生产环境中的模块进行评估的用户而言可以是有用的特性。依据用户对不同的与生产相关的度量的期望,用户可以对各种因子中的一个或多个进行加权以确定模块的有用性或可以使用所述统计来比较不同的模块。
表916可以反映模块在不同的硬件平台上的各种性能因子。所述平台可以包括虚拟化群集、非虚拟化群集、单个设备-托管的,和单个设备-非托管的。表916可包含多个与性能相关的因子,例如稳定性918和性能920。用户界面可以允许用户通过各种性能因子中的一个或多个来对列表进行排名或排序。
附加性能因子可以包括CPU使用922和存储器使用924。这样的因子可以给予用户对由模块所消费的资源负荷的期望。
图10是用于显示使用生产统计的多个模块的示例用户界面的示例实施例1000。
一组单选按钮1002可以允许用户在典型生产使用1004和定制生产使用1006之间进行选择。典型生产使用可以通过试探法或其他分析来确定,而定制生产使用1006可以通过诸如在实施例700中所示的那样的用户界面来确定。当用户选择对应于定制生产使用1006的单选按钮时,用户可以被呈现有一个用户界面(例如实施例700的用户界面)以输入或改变用户的定制的生产定义。
用户的定制的生产定义可以在实施例600的框608中被用于确定用于分析的生产跟踪数据集的集合。这样的分析的结果可以在实施例1000中示出。
表格1008可以示出可根据不同的与生产相关的度量被排序的多个模块。所述表格可以包括模块名1010和用于稳定性1012、性能1014和硬件规模1016的数据。各种与生产相关的度量中的每个可以使用定义与生产相关的因子的比较指数的试探法、算法或其他机制来定义。与生产相关的度量可以使用生产数据集来计算,所述生产数据集反映了典型生产应用或用户的定制的生产定义。
对本发明的上述描述是出于图示和描述的目的而呈现的。它不旨在穷举本主题或将本主题限于所公开的精确形式,并且鉴于上述教导其他修改和变型都是可能的。选择并描述实施例来最好地解释本发明的原理及其实践应用,由此使本领域的其他技术人员能够在各种实施例和各种适于所构想的特定用途的修改中最好地利用本发明。所附权利要求书旨在被解释为包括除受现有技术所限的范围以外的其他替换实施例。

Claims (57)

  1. 根据跟踪数据的生产对比开发使用的确定
    1.一种系统,包括:
    至少一个计算机处理器;
    接收从多个执行应用收集的跟踪数据的接口;
    在所述至少一个计算机处理器上执行的分类引擎,所述分类引擎用于:
    分析所述跟踪数据的第一时间序列并确定所述第一时间序列是第一执行应用的生产使用并将所述第一时间序列分类成生产使用;
    分析所述跟踪数据的第二时间序列并确定所述第二时间序列是所述第一执行应用的开发使用并将所述第二时间序列分类成开发使用。
  2. 2.如权利要求1所述的系统,其特征在于,进一步包括:
    数据分析系统,所述数据分析系统对被分类成生产使用的跟踪数据应用第一组统计分析,而对被分类成开发使用的跟踪数据应用第二组统计分析。
  3. 3.如权利要求1所述的系统,其特征在于,进一步包括:
    接口,通过所述接口,具有所述生产使用分类的跟踪数据可以与具有所述开发使用分类的跟踪数据分开地访问。
  4. 4.如权利要求3所述的系统,其特征在于,所述接口是应用编程接口。
  5. 5.如权利要求3所述的系统,其特征在于,所述接口是用户界面。
  6. 6.如权利要求1所述的系统,其特征在于,所述分类引擎通过一组试探法来分析所述第一时间序列和所述第二时间序列。
  7. 7.如权利要求1所述的系统,其特征在于,所述分类引擎基于在所述第一时间序列和所述第二时间序列中所观察到的使用行为进行分类。
  8. 8.如权利要求7所述的系统,其特征在于,所述使用行为是通过分析由所述第一执行应用所经历的传入负荷来标识的。
  9. 9.如权利要求8所述的系统,其特征在于,当所述传入负荷是已知的测试负荷时将所述第二时间序列分类成开发使用。
  10. 10.如权利要求1所述的系统,其特征在于,所述分类引擎基于所述第一执行应用在其上被执行的硬件平台来进行分类。
  11. 11.如权利要求10所述的系统,其特征在于,所述第一时间序列是从被指定为生产硬件平台的第一硬件平台中收集的。
  12. 12.如权利要求10所述的系统,其特征在于,所述第二时间序列是从被指定为原型设计硬件平台的第二硬件平台中收集的。
  13. 13.如权利要求1所述的系统,其特征在于,所述分类引擎基于标识所述第一时间序列数据正从所述第一执行应用的发布版本中收集的元数据来进行分类。
  14. 14.如权利要求13所述的系统,其特征在于,所述分类引擎基于标识所述第二时间序列数据正从所述执行应用的开发版本中收集的元数据来进行分类。
  15. 15.一种在计算机处理器上执行的方法,所述方法包括:接收从第一执行应用收集的跟踪数据的第一时间序列;
    将所述第一时间序列分类为所述第一执行应用的生产使用;
    接收从第一执行应用收集的跟踪数据的第二时间序列;
    将所述第二时间序列分类为所述第一执行应用的开发使用。
  16. 16.如权利要求15所述的方法,其特征在于,所述分类是使用预定义的试探法来执行的。
  17. 17.如权利要求15所述的方法,其特征在于,所述分类是通过分析给所述所述第一执行应用的输入负荷来执行的。
  18. 18.如权利要求15所述的方法,其特征在于,所述分类是通过确定当生成所述第一时间序列时所述第一执行应用被发布来执行的。
  19. 19.如权利要求15所述的方法,其特征在于,所述分类是通过分析与所述第一时间序列和所述第二时间序列相关联的元数据来执行的。
  20. 20.如权利要求19所述的方法,其特征在于,所述元数据包括用于所述第一执行应用的版本号。
    分析生产使用跟踪数据以确定与生产相关的度量
  21. 21.一种在计算机处理器上执行的方法,所述方法包括:接收对与第一应用的生产使用相关的度量的请求;
    标识在监视所述第一应用的同时所收集的第一多个时间序列数据集;
    确定所述第一多个时间序列数据集中的每一个是在所述第一应用的生产使用期间被获取的;以及
    从所述第一多个时间序列数据集中生成所述度量。
  22. 22.如权利要求21所述的方法,其特征在于,还包括:
    标识在监视所述第一应用的同时所收集的第二多个时间序列数据集;
    确定所述第二多个时间序列数据集中的每一个是在所述第一应用的开发使用期间被获取的;
    从所述第一多个时间序列数据集和所述第二多个时间序列数据集中生成所述度量,并且将第一加权应用给所述第一多个时间序列数据集并将第二加权应用给所述第二多个时间序列数据集。
  23. 23.如权利要求22所述的方法,其特征在于,所述度量至少部分表示所述第一应用的故障容错性。
  24. 24.如权利要求22所述的方法,其特征在于,所述度量至少部分表示所述第一应用所生成的错误率。
  25. 25.如权利要求22所述的方法,其特征在于,所述度量至少部分表示对由所述第一应用所经历的负荷的响应。
  26. 26.如权利要求25所述的方法,其特征在于,所述响应为响应时间。
  27. 27.如权利要求25所述的系统,其特征在于,所述响应是响应于负荷的资源利用。
  28. 28.如权利要求27所述的方法,其特征在于,所述资源是存储器资源。
  29. 29.如权利要求27所述的方法,其特征在于,所述资源是网络资源。
  30. 30.如权利要求27所述的方法,其特征在于,所述资源是计算机资源。
  31. 31.一种系统,包括:
    至少一个计算机处理器;
    包括通过监视应用所收集的跟踪数据的数据库,所述跟踪数据是时间序列数据集,每个所述时间序列数据集被分类成生产数据集或非生产数据集;
    在所述至少一个计算机处理器上执行的查询引擎,所述查询引擎用于:
    接收对与第一应用的生产使用相关的度量的请求;
    标识在监视所述第一应用的同时所收集的第一多个时间序列数据集;
    确定所述第一多个时间序列的数据集中的每一个是在所述第一应用的生产使用期间被获取的;以及
    从所述第一多个时间序列数据集中生成所述度量。
  32. 32.如权利要求31所述的系统,其特征在于,所述查询引擎还用于:
    标识在监视所述第一应用的同时所收集的第二多个时间序列数据集;
    确定所述第二多个时间序列数据集中的每一个是在所述第一应用的开发使用期间被获取的;
    从所述第一多个时间序列数据集和所述第二多个时间序列数据集中生成所述度量,并且将第一加权应用给所述第一多个时间序列数据集并将第二加权应用给所述第二多个时间序列数据集。
  33. 33.如权利要求32所述的系统,其特征在于,所述度量至少部分表示所述第一应用的故障容错性。
  34. 34.如权利要求32所述的系统,其特征在于,所述度量至少部分表示所述第一应用所生成的错误率。
  35. 35.如权利要求32所述的系统,其特征在于,所述度量至少部分表示对由所述第一应用所经历的负荷的响应。
  36. 36.如权利要求35所述的系统,其特征在于,所述响应为响应时间。
  37. 37.如权利要求35所述的系统,其特征在于,所述响应是响应于负荷的资源利用。
  38. 38.如权利要求37所述的系统,其特征在于,所述资源是存储器资源。
  39. 39.如权利要求37所述的系统,其特征在于,所述资源是网络资源。
  40. 40.如权利要求37所述的系统,其特征在于,所述资源是计算资源。
    利用与生产相关的度量的模块搜索和浏览系统
  41. 41.一种系统,包括:
    数据库,包括:
    包括通过剖析多个应用所收集的性能数据的跟踪数据,所述多个应用的每个应用被跟踪以供执行运行;以及
    用于每个所述执行运行的元数据;
    接口,用于:
    接收请求,所述请求包括用户场景;检索多个具有匹配所述使用场景的元数据的所述执行运行;以及
    返回表示用于所述多个执行运行的所述跟踪数据的至少一个概括统计。
  42. 42.如权利要求41所述的系统,其特征在于,所述请求包括第一可重用软件组件的标识符。
  43. 43.如权利要求42所述的系统,其特征在于,所述第一可重用软件组件是模块。
  44. 44.如权利要求42所述的系统,其特征在于,所述第一可重用软件组件是应用。
  45. 45.如权利要求41所述的系统,其特征在于,所述使用场景定义了生产使用。
  46. 46.如权利要求45所述的系统,其特征在于,所述生产使用至少部分由期望执行运行长度来定义。
  47. 47.如权利要求45所述的系统,其特征在于,所述生产使用至少部分由期望部署平台来定义。
  48. 48.如权利要求41所述的系统,其特征在于,所述接口是用户界面。
  49. 49.如权利要求41所述的系统,其特征在于,所述接口是应用编程接口。
  50. 50.一种在至少一个计算机处理器上执行的方法,所述方法包括:
    接收对第一可重用软件组件的跟踪数据的请求,所述请求包括定义期望使用场景的元数据描述符;
    检索多个执行运行,每个所述执行运行匹配所述期望使用场景;
    从所述多个执行运行中生成至少一个概括统计;以及
    返回所述至少一个概括统计。
  51. 51.如权利要求50所述的方法,其特征在于,所述请求包括第一可重用软件组件的标识符。
  52. 52.如权利要求51所述的方法,其特征在于,所述第一可重用软件组件是模块。
  53. 53.如权利要求51所述的方法,其特征在于,所述第一可重用软件组件是应用。
  54. 54.如权利要求50所述的方法,其特征在于,所述使用场景定义了生产使用。
  55. 55.如权利要求54所述的方法,其特征在于,所述生产使用至少部分由期望执行运行长度来定义。
  56. 56.如权利要求54所述的方法,其特征在于,所述生产使用至少部分由期望部署平台来定义。
  57. 57.如权利要求54所述的方法,其特征在于,所述生产使用至少部分由期望错误率来定义。
CN201480062407.5A 2013-11-13 2014-03-27 根据跟踪数据的生产对比开发使用的确定 Active CN105765561B (zh)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201361903744P 2013-11-13 2013-11-13
US201361903727P 2013-11-13 2013-11-13
US201361903733P 2013-11-13 2013-11-13
US61/903,744 2013-11-13
US61/903,727 2013-11-13
US61/903,733 2013-11-13
PCT/IB2014/060238 WO2015071776A1 (en) 2013-11-13 2014-03-27 Determination of production vs. development uses from tracer data

Publications (2)

Publication Number Publication Date
CN105765561A true CN105765561A (zh) 2016-07-13
CN105765561B CN105765561B (zh) 2020-06-12

Family

ID=53056856

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480062407.5A Active CN105765561B (zh) 2013-11-13 2014-03-27 根据跟踪数据的生产对比开发使用的确定

Country Status (4)

Country Link
US (1) US10241785B2 (zh)
EP (1) EP3069266B1 (zh)
CN (1) CN105765561B (zh)
WO (1) WO2015071776A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10467000B2 (en) * 2015-03-18 2019-11-05 International Business Machines Corporation Extending the usage of integrated portals for a better user experience
EP3497574A4 (en) 2016-08-09 2020-05-13 Sealights Technologies Ltd. SYSTEM AND METHOD FOR THE CONTINUOUS EXAMINATION AND PROVISION OF SOFTWARE
US11030071B2 (en) * 2018-04-16 2021-06-08 Armory, Inc. Continuous software deployment
US20200073781A1 (en) * 2018-08-29 2020-03-05 Salesforce.Com, Inc. Systems and methods of injecting fault tree analysis data into distributed tracing visualizations
US11086759B2 (en) * 2018-09-27 2021-08-10 SeaLights Technologies LTD System and method for probe injection for code coverage
US11086754B2 (en) * 2019-07-02 2021-08-10 International Business Machines Corporation Automated feedback-based application optimization
US11573885B1 (en) 2019-09-26 2023-02-07 SeaLights Technologies LTD System and method for test selection according to test impact analytics

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7509343B1 (en) * 2004-06-09 2009-03-24 Sprint Communications Company L.P. System and method of collecting and reporting system performance metrics
US20120079456A1 (en) * 2010-09-23 2012-03-29 International Business Machines Corporation Systems and methods for identifying software performance influencers
CN103038752A (zh) * 2010-05-19 2013-04-10 谷歌公司 漏洞清理所
US20130283241A1 (en) * 2013-02-12 2013-10-24 Concurix Corporation Periodicity Optimization in an Automated Tracing System

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5960196A (en) 1996-12-18 1999-09-28 Alcatel Usa Sourcing, L.P. Software release metric reporting system and method
US6813731B2 (en) 2001-02-26 2004-11-02 Emc Corporation Methods and apparatus for accessing trace data
US8863091B2 (en) * 2007-10-19 2014-10-14 Oracle International Corporation Unified tracing service
US20130145350A1 (en) * 2011-12-05 2013-06-06 Microsoft Corporation Efficient, large scale trace storage system
US20130283242A1 (en) 2013-04-20 2013-10-24 Concurix Corporation Tracing Closures in a Callback Environment

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7509343B1 (en) * 2004-06-09 2009-03-24 Sprint Communications Company L.P. System and method of collecting and reporting system performance metrics
CN103038752A (zh) * 2010-05-19 2013-04-10 谷歌公司 漏洞清理所
US20120079456A1 (en) * 2010-09-23 2012-03-29 International Business Machines Corporation Systems and methods for identifying software performance influencers
US20130283241A1 (en) * 2013-02-12 2013-10-24 Concurix Corporation Periodicity Optimization in an Automated Tracing System

Also Published As

Publication number Publication date
EP3069266A4 (en) 2017-07-19
US20160299759A1 (en) 2016-10-13
CN105765561B (zh) 2020-06-12
EP3069266A1 (en) 2016-09-21
WO2015071776A1 (en) 2015-05-21
US10241785B2 (en) 2019-03-26
EP3069266B1 (en) 2024-03-06

Similar Documents

Publication Publication Date Title
Lenarduzzi et al. The technical debt dataset
Mannhardt et al. Decision mining revisited-discovering overlapping rules
Herzig et al. The impact of tangled code changes on defect prediction models
CN105765561A (zh) 根据跟踪数据的生产对比开发使用的确定
CN111832236B (zh) 一种芯片回归测试方法、系统、电子设备及存储介质
US9256422B2 (en) Systems and methods for finding project-related information by clustering applications into related concept categories
US20170193437A1 (en) Method and apparatus for inventory analysis
López et al. ModelSet: a dataset for machine learning in model-driven engineering
Shihab An exploration of challenges limiting pragmatic software defect prediction
CN105765528A (zh) 具有可配置原点定义的应用执行路径跟踪
CN105283848A (zh) 用分布式目标来进行应用跟踪
CN105283851A (zh) 用于选择跟踪目标的成本分析
CN105122234A (zh) 使用成本分析来部署跟踪目标
Lyu et al. An empirical study of the impact of data splitting decisions on the performance of AIOps solutions
CN105122212A (zh) 自动化跟踪系统中的周期性优化
CN105765560A (zh) 基于多次跟踪执行的软件组件推荐
Öztürk Which type of metrics are useful to deal with class imbalance in software defect prediction?
Trautsch et al. Adressing problems with external validity of repository mining studies through a smart data platform
Renggli et al. Ease. ml/ci and ease. ml/meter in action: Towards data management for statistical generalization
CN111949514A (zh) 一种模型预测方法、装置及存储介质
CN113901169A (zh) 信息处理方法、装置、电子设备及存储介质
Ebrahimi et al. Self-admitted technical debt in ethereum smart contracts: a large-scale exploratory study
Gottschalk et al. HapPenIng: happen, predict, infer—event series completion in a knowledge graph
Becker et al. Core technologies for the internet of services
Arcega et al. On the influence of models at run-time traces in dynamic feature location

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant