CN105723357B - 共享模块环境中的因模块而异的跟踪 - Google Patents
共享模块环境中的因模块而异的跟踪 Download PDFInfo
- Publication number
- CN105723357B CN105723357B CN201480049023.XA CN201480049023A CN105723357B CN 105723357 B CN105723357 B CN 105723357B CN 201480049023 A CN201480049023 A CN 201480049023A CN 105723357 B CN105723357 B CN 105723357B
- Authority
- CN
- China
- Prior art keywords
- module
- data
- application
- tracking
- different
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3466—Performance evaluation by tracing or monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3409—Recording 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/88—Monitoring involving counting
Abstract
一种因模块而异的跟踪机制可代表模块开发者跟踪模块的使用。模块可被多个应用开发者使用,且该跟踪系统可收集并概述不同应用中的每个应用中的模块的数据。该数据可包括使用数据以及性能数据。使用数据可包括每当该模块可被调用和呼叫时的匿名化数据,而性能数据可包括处理时间、存储器消耗以及其它度量。因模块而异的跟踪可被应用开发者启用和禁用。
Description
相关申请的交叉引用
本专利申请要求于2013年9月4日提交的题为“Module Specific Tracing in aShared Module Environment(共享模块环境中的因模块而异的跟踪)”的美国临时专利申请序列号61/873,773、于2013年9月6日提交的题为“Tracing System for Applicationand Module Tracing(用于应用和模块跟踪的跟踪系统)”的美国临时专利申请序列号61/874,929、以及于2013年9月6日提交的题为“Module Database with Tracing Options(带跟踪选项的模块数据库)”的美国临时专利申请序列号61/873,773的优先权和权益,全部申请均通过援引对其公开和教导的全部内容明确纳入于此。
背景
应用跟踪是一种理解和监视应用的机制。跟踪(tracing)是一种在应用执行时收集数据的机制。在一些使用中,应用跟踪可被用来监视应用的持续执行。在其它使用中,应用跟踪可被开发者用来理解应用、标识任何问题、以及改善该应用。
在许多计算机语言和社区中,一些代码可作为模块、库或某种其它可重用组件分发。这些模块可作为源代码、中间代码、可执行代码、或某种其它形式被分发,但是可均共享该模块可在许多不同应用中由其它程序员重用的特征。
概述
一种因模块而异的跟踪机制可代表模块开发者跟踪模块的使用。模块可被多个应用开发者使用,且该跟踪系统可收集并概述不同应用中的每个应用中的模块的数据。该数据可包括使用数据以及性能数据。使用数据可包括每当该模块可被调用和呼叫时的匿名化数据,而性能数据可包括处理时间、存储器消耗以及其它度量。因模块而异的跟踪可被应用开发者启用和禁用。
跟踪系统可跟踪应用及其模块,且可使得因模块而异的数据通过各种界面可用。跟踪系统可在应用执行时收集跟踪器数据,且可将数据预处理到因应用而异的和因模块而异的数据库中。分析引擎可进一步分析和处理这些数据库来创建对该数据的因应用而异的视图和因模块而异的视图。因应用而异的视图可旨在用于应用的开发者,而因模块而异的视图可具有所有人均可访问的公开版本和可包含可对模块开发者有用的附加细节的模块开发者版本。
模块性能的数据库可通过向应用添加跟踪组件、以及通过向模块本身添加跟踪组件来生成。模块可以是可使得可用于跨多个应用重用的可重用代码。当在应用级上执行跟踪时,从每个模块收集的数据可被概述到因模块而异的数据库中。因模块而异的数据库可以是可帮助应用开发者选择用于各任务的模块的公开数据库。因模块而异的数据库可包括使用和性能数据,以及稳定性和稳健性度量、错误日志、以及类似模块的分析。该数据库可通过模块描述页面以及资源库中的链接来访问,以及通过网站或其它资源库来访问。
提供本概述以便以简化的形式介绍以下在详细描述中进一步描述的一些概念。本概述并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。
附图简述
在附图中,
图1是示出用于跟踪应用和模块的系统的实施例的图示。
图2是示出具有可收集和查看应用和模块跟踪数据的设备的网络环境的实施例的图示。
图3是示出用于模块跟踪数据的输出的用户界面的示例实施例的图示。
图4是示出示例跟踪覆盖图的实施例的图示。
图5是示出示例模块拓扑图的实施例的图示。
图6是示出用于创建应用的方法的实施例的流程图示。
图7是示出用于具有模块跟踪的应用执行的方法的实施例的流程图示。
图8是示出用于具有应用跟踪的应用执行的方法的实施例的流程图示。
图9是示出用于预处理跟踪器数据的方法的实施例的流程图。
图10是示出用于处理模块跟踪的方法的实施例的流程图。
图11是示出用于处理对模块数据的请求的方法的实施例的流程图。
详细描述
因模块而异的跟踪系统
跟踪系统可收集关于可被合并到多个应用的模块的数据。所述模块可以是可在开发者间分发的共享代码集,且所述开发者可选择要被合并到其应用中的各种模块。
一些模块可包含跟踪机制,该跟踪机制可跟踪模块的操作并存储跟踪器数据。跟踪器数据可包括使用数据,其可包括使用次数、使用时间戳、该模块被使用的条件、以及其它使用数据。跟踪器数据还可包括性能数据,诸如执行所花的时间量、计算资源量、存储器资源、网络资源、或在执行期间消耗的其它资源。
因模块而异的跟踪系统可针对模块开发者以及针对其它用户巩固原始数据。一些实施例可包括针对模块开发者的数据的详细视图以及针对其它用户的较不详细的视图。模块开发者可使用跟踪器数据来标识可能正不良地执行或具有某种其它问题的模块部分。其它用户可检查模块跟踪数据来确定该模块的性能的大致概念并使用跟踪数据作为比较和选择一个模块而不选择另一个模块的准则的一部分。
在一个使用场景中,模块开发者可将跟踪机制合并在模块中。跟踪机制可在模块的界限内操作并仅跟踪该模块内的代码。在许多情况中,跟踪机制可能够采集一些关于该模块在其中执行的环境的元数据。
跟踪机制可在模块在应用中执行时采集跟踪数据。跟踪机制可将跟踪数据传送给数据库以进行分析。在许多情况下,应用开发者可具有关闭跟踪机制的选项或为跟踪机制设置各种选项,尽管跟踪机制可能已经初始地被合并且由模块开发者配置。
在该使用场景中,跟踪机制可采集使用和性能数据,模块开发者可使用该数据来改善该模块。这些跟踪器数据可帮助模块开发者理解该模块的哪些部分比其它部分更频繁地使用,这可以帮助模块开发者排定优先级,从而提升使用最多的部分。跟踪器数据还可帮助标识比其它代码更不可靠的代码,且该数据可被用于生成对各个函数的稳健性或脆弱性测量。
在另一使用场景中,应用开发者可访问因模块而异的数据来估计是否要在特定应用中使用该模块。开发者可能已标识了可用于特定用途的若干模块,并随后可使用跟踪器数据作为在各模块间进行选择的一个度量。应用开发者可通过查看性能和使用数据来调查模块的可靠性和稳健性。
用于应用和模块跟踪的跟踪系统
跟踪系统可使用类似但具有一些差异的技术和机制来提供针对应用和模块的跟踪。跟踪系统可在应用执行时采集跟踪数据,且该数据可与应用开发者、模块开发者以及潜在模块用户的更广泛受众。在一些情况下,该更广泛受众可以是整个公众。
这三种受众中的每一个可对于跟踪器数据具有不同用途和不同的安全顾虑。应用开发者可能将该应用视为商业秘密,且可能不希望某些跟踪器信息在开发该应用的团队之外共享。模块开发者可能希望收集关于该模块执行得如何的数据,但是可能不希望操作的某些细节被披露给一般公众。整个公众可包括可构造其自己的应用的开发者,且这些开发者可能希望查看因模块而异的数据以确定该模块是否适合其使用。
应用开发者可请求对其应用执行跟踪。这种跟踪数据可包括可能是专有的跟踪信息,诸如该应用所处理的数据元素的值、应用架构和功能、应用的源代码、以及其它信息。因为应用开发者可能将此认为是秘密或专有的,所以这些信息可被处理并存储在与被与模块开发者和整个工作共享的数据分开的数据库中。
针对每个模块收集的数据可在该应用被执行时收集。如此,因模块而异的数据收集可以是可用数据的子集,因为因模块而异的数据可与可能是应用开发团队之外的另一方的模块开发者共享。在一些情况下,模块开发者可以是第三方,该第三方可创建并散布一模块而不知道谁可能在其应用中使用该模块。
因模块而异的数据可作为执行应用的一部分来收集,但是仅应用开发者可准许收集的那些数据子集可实际上被收集。在许多情况下,应用开发者可具有配置设置集合,其可启用或禁用特定类型的数据被收集。在一些情况下,可完全不针对因模块而异的跟踪来收集某些数据元素。
在一些情况下,应用开发者可禁用或不安装应用级跟踪,但是可准许模块开发者在模块在该应用内执行时收集跟踪器数据。在这些情形中,应用可不带跟踪地执行,但是当该模块被执行时,跟踪可仅在该模块内发生。这样的因模块而异的跟踪可被处理并使得对模块开发者(且在一些情况下对更广泛受众)可用。在这样的情况下,因模块而异的跟踪可能比应用开发者已经针对整个应用启用跟踪时在范围上受限得多。
当应用开发者针对整个应用启用跟踪并且准许针对特定模块的跟踪时,应用开发者可能够查看与每个模块有关的完整数据集,其中该数据的子集按照因模块而异的方式被传送并处理。在这种情形下,应用开发者可以能够访问模块开发者将能够访问的之外的特定模块的数据的超集。
具有跟踪选项的模块数据库
模块数据库可使用跟踪数据来修饰对模块的描述。模块数据库可列出可被合并到应用中的各模块。修饰可包括性能和使用数据,以及可能对于评估模块并将模块彼此比较有用的概述和其它数据。
模块数据库可通过分析在应用执行模块时采集的跟踪器数据来被构造。跟踪器可在执行期间采集模块的性能和使用数据,且这些数据可被聚集、概述、并显示给用户供浏览。
跟踪器数据可包括第三方对模块的实际使用,以及该模块被合并到各应用中的方式。应用开发者可选择并使用一模块但是可仅实施该模块的功能的一子集。在许多情况下,模块可具有许多不同功能、方法、对象或其它组件,而应用开发者可使用这些组件的一个小子集。
第三方使用可在该应用被最终用户使用时采集。例如,应用可由在移动设备上运行的应用以及在数据中心中的服务器上执行的后端组件一起构成。最终用户可按许多不同方式实施该应用,一些方式可实施该模块而一些方式可不实施该模块。
使用数据可反映该模块的各组件的流行度和有用度。当这些数据可被呈现给模块开发者或其它应用开发者时,该数据可被布置成流行度得分或百分比。
使用数据可被随时间跟踪以确定哪些应用继续使用该模块而哪些模块被包括以及从各应用移除。在许多情况下,应用开发者可选择一模块,在一短时间段内使用该模块,随后切换到另一模块。在这种情形中,应用开发者可做出从一个模块切换到另一模块的有意识决定,从而指示该应用开发者对第二模块而不是第一模块的偏好。此偏好可能对可能正考虑使用第一模块的另一应用开发者是有价值的。
针对模块内的各函数或组件的性能数据可被用于开发每个函数的可靠性或稳健性度量。可靠性或稳健性度量可以是一函数可能有多脆弱的指示器,且可能在选择特定函数来合并到其应用中时对应用开发者有用。可靠性或稳健性度量可基于性能度量或其它因素。
模块数据库可包括该模块的架构的图形或其它指示器。在许多情况下,模块可包括若干其它模块,每个其它模块可在应用执行时被调用。这种复杂交互可能通过阅读源代码或从其它源并不显而易见。该模块的图形表示可以给予应用开发者该模块的复杂度和各种依赖关系的视觉指示。
模块数据库可累积或聚集关于模块的依赖关系的各种度量来生成针对给定模块的数据。模块的各种使用和性能数据可被分派给实际执行底层函数的各模块。例如,一个模块可调用第二模块来执行某些任务,且这些任务之一可由第三模块执行。在这种情况下,第一模块的函数可与第二和第三模块的函数以及从每个依赖关系收集的数据一起显示。
贯穿本说明书和权利要求书,术语“模块”被用于定义可被合并到应用中的一组可重用代码。模块可被知晓为“库”、“子例程”或某种其它概念。出于本说明书和权利要求书的目的,这些术语被认为是同义词。
“模块”可以是按照多个应用可访问代码的方式布置的代码,即便这些应用彼此之间可能没有连接。“模块”可以是按照多个应用可访问代码的方式布置的代码,即便这些应用彼此之间可能没有连接。在一些情况下,模块可在大应用的范围内重用,而在其它情况下,模块可被共享至可在不相干且不连接的应用中使用该模块的其它应用开发者。
许多编程语言和范例具有“模块”或库的概念,其中模块可有被定义的接口,通过该接口应用可调用并使用该模块。一些范例可允许程序员按静态方式合并模块,以使得模块代码在该应用被编写并部署之后不进一步改变。一些范例可允许动态库,其可在运行时或者甚至在执行开始之后被加载和调用。动态库可在该应用可被分发之后被更新和改变,而调用库或模块的方式可保持不变。
模块可以源代码、中间代码、可执行代码或以某种其它形式分发。在一些情况下,模块可以是可通过应用编程接口调用的服务。
贯穿本说明书和权利要求书,术语“探查器”(profiler)、“跟踪器”和“探测工具(instrumentation)”被可互换地使用。这些术语指代可在应用被执行时采集数据的任何机制。在经典定义中,“探测工具”可指代可被插入可执行代码并从而改变该可执行代码的生成方法存根(stub)、挂钩(hook)或其他数据采集机制,而“探查器”或“跟踪器”可经典地指代不可改变可执行代码的数据采集机制。对这些术语及其派生词中的任一者的使用都可蕴含或暗示彼此。例如,使用“跟踪器”的数据收集可使用“跟踪器”的经典意义中的非接触式数据收集以及用其中可执行代码可被改变的“探测工具”的经典意义的数据收集来执行。类似地,通过“探测工具”收集的数据可包括使用非接触式数据收集机制的数据收集。
此外,通过“探查”、“跟踪”和“探测工具”收集的数据可包括可被收集的任何类型的数据,包括诸如处理时间、吞吐量、性能计数器等等之类的与性能有关的数据。收集到的数据可包括函数名、传递的参数、存储器对象名和内容、传递的消息、消息内容、寄存器设置、寄存器内容、差错标志、中断、或与正被跟踪的应用有关的任何其他参数或其他可收集的数据。
贯穿本说明书和权利要求书,术语“执行环境”可被用于指代用于执行应用的任何类型的支持软件。执行环境的一示例是操作系统。在一些举例说明中,“执行环境”可被示为与操作系统分开。这可能是为了例示出为应用提供各支持功能的虚拟机,诸如进程虚拟机。在其他实施例中,虚拟机可以是可包括其自己的内部操作系统并可模拟整个计算机系统的系统虚拟机。贯穿本说明书和权利要求书,术语“执行环境”包括操作系统和可具有或可不具有可容易标识的“虚拟机”或其他支持软件的其他系统。
贯穿本说明书和权利要求书,术语“应用”被用来指代可执行期望功能的软件和硬件产品的任何组合。在一些情况下,应用可以是用硬件平台操作的单一软件程序。一些应用可使用多个软件组件,每个软件组件可以是用不同语言编写的或可在不同硬件或软件执行环境内执行。在一些情况下,这些应用可跨多个设备分散并且可使用可由网络或其它通信系统连接的软件和硬件组件。
贯穿本说明书,贯穿对附图的描述,相同的附图标记表示相同的元素。
在本说明书和权利要求书中,对“处理器”的引用包括多个处理器。在某些情况中,可由“一处理器”执行的过程可实际上由同一设备上或不同设备上的多个处理器执行。出于本说明书和权利要求书的目的,对“处理器”的任何引用应包括可能位于同一设备上或不同设备上的多个处理器,除非另外明确指定。
当元素被称为被“相连接”或“相耦合”时,这些元素可被直接连接或耦合在一起,或者也可存在一个或多个中间元素。相反,当元素被称为被“直接连接”或“直接耦合”时,不存在中间元素。
本主题可被体现为设备、系统、方法、和/或计算机程序产品。因此,本主题的部分或全部可以用硬件和/或软件(包括固件、常驻软件、微码、状态机、门阵列等)来具体化。此外,本主题可以采用计算机可使用或计算机可读存储介质上的计算机程序产品的形式,介质中收录了供指令执行系统使用或结合指令执行系统一起使用的计算机可使用或计算机可读的程序代码。在本文档的上下文中,计算机可使用或计算机可读介质可以是可包含、储存、通信、传播、或传输程序以供指令执行系统、装置或设备使用或结合指令执行系统、装置或设备一起使用的任何介质。
计算机可使用或计算机可读介质可以是,例如但不限于,电、磁、光、电磁、红外、或半导体系统、装置、设备或传播介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。
计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术来实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不限于,RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁带盒、磁带、磁盘存储或其他磁性存储设备、或能用于存储所需信息且可以由指令执行系统访问的任何其他介质。注意,计算机可使用或计算机可读介质可以是其上打印有程序的纸张或另一合适的介质,因为程序可以经由例如对纸张或其他介质的光学扫描而电子地捕获,随后如有必要被编译、翻译,或以其他合适的方式处理,并随后存储在计算机存储器中。
当本主题在计算机可执行指令的一般上下文中具体化时,该实施例可包括由一个或多个系统、计算机、或其他设备执行的程序模块。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。通常,程序模块的功能可在各个实施例中按需进行组合或分布。
图1是示出跟踪器数据收集系统的示例实施例100的图示。实施例100可以是从应用收集跟踪器数据的过程的概览。跟踪器数据可落入因应用而异或因模块而异的分类,且可基于该分类被不同地处理。
跟踪器可作为整体被合并到个体模块或应用中。跟踪器输出可被用于填充模块数据库,该模块数据库可被应用开发者使用来评估、比较以及为其应用选择模块。模块数据库可包括跟踪系统已收集其数据的每个模块的记录。
在一个用例中,模块开发者可将跟踪机制合并在模块中。在该例中,每当该模块被合并到应用中且被执行时,嵌入的跟踪器可收集该模块的数据。除非跟踪器被另行配置,否则跟踪器可收集该模块的数据但不收集该应用的剩余部分的数据。
可按多种方式访问跟踪器数据。模块开发者可访问其模块的跟踪器数据并查看比一般公众更详细的跟踪器数据,一般公众可能够访问该模块的跟踪器数据的子集。
应用开发者可访问因应用而异的数据,该因应用而异的数据可比模块开发者或一般公众可用的数据更详细。
如上所述,三种受众类可具有不同的数据用途和不同的安全考虑。对于应用开发者,应用可能是可包括商业秘密或应用开发者可能不希望共享的其它信息的专有项目。此因应用而异的数据可包括例如该应用的控制和序列、该应用所处理的数据类型、该应用所处理的原始数据、以及可能是私有的其它信息。因此,因应用而异的数据可被存储在与因模块而异的数据分开的数据库中且对因应用而异的数据的访问可限于授权用户。
在许多情况下,模块开发者可能创建并分发了模块以使得应用开发者可重用该模块。模块开发者可能是商业软件公司以及开源软件开发者。这些开发者可能期望看到其模块被使用,要么出于商业目的,要么为了对社区做贡献的满足感。
可从应用收集但是使得对模块开发者可用的跟踪器数据可被清洗、匿名化、或以其它方式擦洗以从该数据中移除私有信息。这些操作可将因应用而异的信息限于模块踪迹中,但是可使得模块开发者能够访问因模块而异的数据。
模块开发者可以访问因应用而异的数据来监视该模块的部署和使用,以及标识该模块的性能问题。该因模块而异的数据还可被使得对更广泛的受众(如一般公众)可用。一般公众可利用该因模块而异的数据来比较和选择模块。
模块开发者102可贡献模块104,该模块可被应用开发者106用来构建应用108。跟踪模块110可被合并到个体模块104中或应用108中。当跟踪模块110被合并到一个或多个模块104中时,那些模块可被跟踪。当跟踪模块110被合并到应用108中时,应用108的全部可被跟踪,包括应用108中包括的任何模块。
应用108可在执行环境112中执行。在执行期间,跟踪器114可采集数据,该数据可被传递至预处理器116。在许多情况下,跟踪器114可采集数据并周期性地将那些数据传递至预处理器116。
预处理器116可执行轻量分析、格式化、或其它处理,随后将因应用而异的数据存储在应用数据库118中并将因模块而异的数据存储在各模块数据库120中。在许多情况下,模块数据库120可被配置成对于可被跟踪的每个模块具有单独的数据库。
分析引擎122可对所存储的数据执行进一步分析以分别产生经分析的应用数据124或经分析的模块数据126。分析引擎122可执行许多不同类型的分析,包括分析历史数据、概述使用和性能统计数据、对数据制作图和图表、以及其它分析。在一些情况下,分析引擎122可按需执行分析,这意味着一些分析可在已分析数据可被请求时执行。在其它情况下,分析引擎122可提前执行分析以使得经分析的数据在被请求时已准备好可用。
模块开发者102可具有对已分析模块数据128的私有访问130。模块开发者对因模块而异的数据的私有访问可包括关于性能和使用的细节。相反,应用开发者106可具有对分析的模块数据128的公开访问132,其可包含更少的细节且仅是通过模块开发者102的私有访问130可用的数据的子集。
公开访问132可包括为该模块收集的跟踪器数据的概述,包括性能和使用统计数据。可在本说明书的稍后处找出这样的用户界面的示例。
应用开发者106可具有对分析的应用数据124的私有访问126。此访问可包括关于该应用作为整体的性能的广泛数据,包括各模块的性能。在一些情况下,应用开发者106可以能够访问与模块开发者104相比更多的数据或不同的数据集。例如,应用开发者106可以能够访问被传递至模块的参数值,其中参数值可以是私有的且对模块开发者104不可用。
应用开发者106可对使得哪些数据类型被使得对模块数据库120可用具有控制。例如,应用开发者106可完全关闭因模块而异的数据的任何共享,但是这些数据可仍旧被收集、存储且通过应用开发者106的私有访问126变得可用。
应用开发者106可对可在模块数据库中共享的数据施加各种限制。例如,应用开发者106可准许收集使用统计数据,但是可能不准许收集变量值。应用开发者106可规定:该数据在被包括到模块数据集120之前可被混淆或匿名化。
图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可在操作系统218中或在执行环境220中执行。执行环境220可具有存储器管理、进程调度、以及可按与操作系统218类似的方式管理应用执行的其它组件。
跟踪采集器222和224可与操作系统218或执行环境220一起操作。跟踪采集器224可包括跟踪器226和通信管理器228。跟踪器226可监视应用222的操作,而通信管理器228可将跟踪器数据传送到预处理器系统240。
跟踪器226和通信管理器228可以是可被包括在应用222中的跟踪器的组件。应用222可具有跟踪器230,该跟踪器可跟踪整个应用222,包括全部模块234。当模块开发者希望跟踪其模块时,跟踪器236可被包括在要跟踪的特定模块234中。
应用222可包括跟踪器配置232,该配置可定义跟踪器的不同参数。在一些情况下,跟踪器配置232可定义哪些数据元素可被收集、被收集的数据的精度、哪些数据元素可与模块开发者共享、以及其它项。在一些情况下,跟踪器配置232可针对一个模块定义一个配置且针对另一模块定义一不同配置。
通信管理器228可打包并传送跟踪器数据到预处理器系统240,该预处理器系统可通过网络238访问。预处理器器系统240可具有硬件平台242,该硬件平台可类似于硬件平台204,预处理器244可在该硬件平台上执行。
预处理器244可接收跟踪器数据并在将数据存储在应用数据库服务器246或模块数据库服务器254之前执行某种初步处理。在许多情况下,预处理器244可被设计成处理大量跟踪器数据。
应用数据库服务器246可具有硬件平台248,该硬件平台148可以类似于硬件平台204,两个数据库可在该硬件平台上操作。应用数据库250可包含原始或预处理形式的因应用而异的跟踪器数据。已分析应用数据库252可包含已分析应用数据,该已分析应用数据可准备好由应用开发者查看。
应用数据库服务器254可具有硬件平台256,该硬件平台148可以类似于硬件平台204,两个数据库可在该硬件平台上操作。模块数据库258可包含原始或预处理形式的因模块而异的跟踪器数据。已分析模块数据库260可包含已分析模块数据,该已分析模块数据可准备好由模块开发者或第三方查看。
分析系统262可具有硬件平台264,该硬件平台可类似于硬件平台204,分析引擎266可在该硬件平台上执行。分析引擎266可对应用跟踪器数据或模块跟踪器数据执行各种分析。分析可包括概述该数据、将跟踪器数据与其它数据源组合、可视化该数据、或对该数据执行其它操作。
访问门户系统268可具有硬件平台270,该硬件平台可类似于硬件平台204,访问门户272可在该硬件平台上执行。访问门户272可以是可从已分析应用数据库252或已分析模块数据库260采集数据以在客户端系统274上显示的web服务或其它应用。访问门户272可包括认证系统、用户帐户和登录系统、计费和会计系统、以及其它功能。
客户端系统274可具有硬件平台276,该硬件平台可类似于硬件平台204,浏览器278可在该硬件平台上执行。浏览器278可被用来访问该访问门户272并生成用户界面280。基于用户和用户的凭证,用户界面280可以不同。例如,应用开发者可以能够查看针对其应用的应用数据,以及针对第三方或一般公众的模块数据库。类似地,模块开发者可以能够看到其模块的详细的因模块而异的数据,但是不能看到其它模块或应用的数据。第三方可以能够查看被准许用于公众消费的模块信息,但是或许不能访问应用数据或详细的因模块而异的数据。
图3是示出用于模块跟踪数据的用户界面的示例实施例300。实施例300是用户界面302,其可以是名字为CONFIG的模块的公开可用的因模块而异的用户界面的示例。
用户界面302可表示在从跟踪器采集之后可公开可用的数据类型。跟踪器可以是因模块而异的跟踪器或可以是因应用而异的跟踪器。实施例300的示例中解说的数据类型可以仅说明可能数据类型和用于聚集和显示该数据的可能方法。其它实施例可具有不同的数据类型和用于传递该数据的机制。
名称304可将该模块标识为CONFIG。概述打分306的集合可向用户给出该模块的可靠性、流行度、以及该模块的趋势如何的高级别概述。可靠性可以是从使用和性能数据得出反映该模块作为整体的稳健性或脆弱性的度量。
流行度可以是反映社区对该模块的使用的度量。在一些情况下,流行度可反映该模块与该社区作为整体相比的流行度、与相当的模块相比的流行度、或在某个其它上下文中的流行度。
趋势指示器可指示该模式在整体流行度和稳健性上是在提升还是降低。如果该模块被使用得越来越少或如果该模块的后续发布比先前发布执行得更差,则趋势指示器可以是向下的。相反,如果该模块正在收获用户且该模块的每个发布增加可靠性,则趋势可以是向上的。
可靠性、流行度以及趋势指示器仅是对于描述特定模块的用户界面而言可能有用的高级别概述指示器的三个示例。
数据集信息集合308可显示所显示数据代表的数据的质量。在该示例中,所分析的数据集的数量可以是252000且使用该模块的应用的数量可以是15000。这些数字可给予整体数据可信度,从而所述视图该性能和使用数据是基于统计上显著的数据群体的置信度。
因函数而异的数据集310可显示对模块内的个体函数的观察。许多模块可包括多个函数、对象或其它组件,其中每一个可被单独地调用或呼叫。在该示例中,行314、316、318和230可分别解说config.foo、config.bar、config.baz以及config.qux的概述数据。
因函数而异的数据类型可包括使用百分比,该使用百分比可指示哪些函数被使用得最多。在config.qux的情况下,使用百分比可以是0,这可在该函数不存在跟踪数据时出现。在分析例程的一个示例中,config模块的源代码可被读取以标识每个可用函数。可将函数列表与跟踪器数据进行比较以生成因函数而异的数据310的一部分。
可确定每个函数的错误率,以及CPU消耗和存储器消耗。CPU和存储器的资源消耗可作为具有标准偏差的平均值给出。标准偏差可以是函数的稳定性或可靠性的一个度量。还可包括函数的可靠性得分可靠性得分可使用可捕捉资源消耗中的变化的算法或试探法来确定。
使用趋势320的图可以是显示该函数随时间的使用的一种机制。在使用趋势图320的情况下,该图的上半部分322可显示添加该模块的新应用,而下半部分324可显示不再使用该模块的应用。
在一些情况下,模块可在初始阶段被添加至应用,随后在应用开发者选择用另一模块替换该模块时后来被移除。此使用模式以可指示第二模块可能比当前模块更适于该应用的一种机制。当跟踪系统可捕捉或推断该行为时,第二模块的期望性可被强烈指示而第一模块的不期望性也可被强烈指示。这些类型的模式可能是极有价值的反馈,该反馈可被传递给可研究并改进其模块的模块开发者,以及可能正搜索模块的应用开发者。
该图可以是交互式的,且示例交互框326可在用户悬停或点击该图中的一个柱时被置于该用户界面上。交互式框326可显示所选柱的底层数据。
覆盖图328可视觉地解说存在其跟踪数据的组件。可在本说明书的稍后处找出覆盖图的示例。
类似地,模块拓扑图330可视觉地显示当前模块和当前模块可调用的其它模块之间的链接。可在本说明书的稍后处找出模块拓扑的示例。
竞争模块区域332可列出与当前模块类似或竞争的模块。所列出的模块可具有可使得该用户界面改变到该模块的热链接、按钮或其它机制。竞争模块可包括显示其它模块的相对强度、该模块的趋势、或某个其它指示器的指示器。
图4是显示跟踪覆盖图的实施例400的示例图示。图402可将模块的各函数或组件显示为图的节点。图的各边可反映节点的连接或执行序列,并且可被绘制以反映被用来生成覆盖图的数据量。
在许多实施例中,图402中的每个节点可用对每个节点所标识的可执行代码的引用来标记。为了使附图简单,这些标记已被移除。
在实施例400的示例中,节点404、406、408和410可用厚的、重的线连接。这些线可指示对该执行序列存在大量跟踪数据。相对来说,节点404、412、414和416的序列可具有少得多的支持数据。在节点418、420、422和424的情况下,虚线可指示可能没有跟踪数据可用。在这种情况下,与节点418、420、422和424相关联的代码可能从来未被应用实施。
图402可以是交互式图。作为交互的示例,用户可悬停、点击、选择或以其它方式指示节点404且交互式组件426可被显示。交互式组件426可显示关于该节点的附加底层数据。
图5是显示模块拓扑图的实施例500的示例图示。图502可显示模块及其依赖,该依赖可以是可被包括在基础模块中或从基础模块调用的其它模块。该图的节点可反映基础模块及其依赖。图的各边可反映对依赖模块的连接或函数调用。
图502可以是模块的调用结构的视觉图像,且可被用来给予用户模块的复杂度和依赖的图形视图。
模块config(配置)504可被解说为带阴影的或突出显示的节点。此节点可表示该图的基础节点。节点506,508,510,510,512,514,516和518可分别表示模块alpha,beta,gamma,delta,epsilon,zeta和eta。互连解说了模块间的函数调用或其它依赖。
在实施例500的示例中,模块配置504被显示为调用节点510(模块gamma),节点510进而调用节点514(模块epsilon)。模块epsilon(节点514)调用模块zeta和eta,如由节点516和518所表示的。此结构可向查看者传达节点518上的模块eta与模块config 514如何相关。
图6是示出用于创建应用的方法的实施例600的流程图示。实施例600解说了应用开发者可用来创建包括一个或多个模块或库的一般方法。
开发者可在框602开始编写应用代码。在编写代码时,开发者可在框604中标识函数,该函数可在框606中提示对可执行该函数的模块的搜索。从框606中的候选模块列表,开发者可在框608评估每个候选。
开发者可在框610中检查每个候选模块的因模块而异的跟踪数据。这种数据的示例可在实施例300的用户界面中找到。从这些数据中,开发者可以能够在框612中选择合适模块并在框614中将该模块合并到该应用中。
如果模块开发者已在框616中添加了跟踪,则应用开发者可以能够在框618中配置该模块的各跟踪参数。所述跟踪参数可允许应用开发者选择跟踪器的不同选项。
跟踪参数可按许多不同方式配置以允许应用开发者控制该模块可如何被跟踪。模块跟踪可由模块开发者请求以模块开发者可具有的实现特定目标,而应用开发者可对模块跟踪可如何进行具有最终批准权和控制。在许多情况下,应用开发者可以能够完全禁用模块的跟踪,以及限制或者扩展跟踪器和收集的一些参数。
跟踪频率可以是跟踪器配置的一部分。在许多实施例中,跟踪可消耗处理和存储器资源。因此,跟踪可在采样基础上执行或可具有限制跟踪所消耗的资源量的其它架构。
应用开发者可被激励以准许模块的跟踪,因为模块跟踪数据可被反馈给模块开发者以帮助改善该模块,以及进一步填充该模块的公开数据库。在此时,应用开发者可能已经在框610中访问了公开公开数据库并可能希望通过准许模块跟踪来回馈社区。
如果应用开发者在框620中标识可在模块中实现的另一函数,则该过程可返回至框604,否则该过程可继续至框622。
在框622,应用开发者可希望添加因应用而异的跟踪。如果如此,则可在框624中添加跟踪模块且可在框626中配置因应用而异的跟踪。
应用开发者可在框628中编译代码并在框630中执行代码。
图7是示出用于执行具有模块跟踪的应用的方法的实施例700的流程图示。
其他实施例可使用不同的排序、更多或更少的步骤、以及不同的命名或术语来完成相似功能。在一些实施例中,各种操作或操作集合可与其他操作以同步或异步方式并行地执行。此处所选的步骤是为了以简化的形式例示出一些操作原理而被选出的。
实施例700解说了可如何带因模块而异的跟踪地执行应用。因模块而异的跟踪可仅在模块执行时进行且在应用执行的其它部分可不操作。
应用可在框702中接收且可在框704中开始执行。在执行期间,模块可在框706中被遇到。模块可在框708中被加载并在框710中开始执行。
如果在框712中模块包括跟踪,则可在框714中可开启跟踪。跟踪可由独立的线程或进程执行,或可与该模块本身合并到单一线程中。如果跟踪不被包括在该模块中,则可不开启跟踪。
当在框716中模块执行时,框718中的模块跟踪器操作可被执行。模块跟踪器可在框720中收集跟踪数据并在框722中将跟踪器数据发送给预处理器。在许多实施例中,跟踪器数据可周期性地被发送给预处理器,诸如每秒、每几秒、每分钟、或某种其它频率。
模块处理可在框724中通过循环回框716继续。当在框724中该模块完成时,处理可继续至框726。当在框726中没有遇到另一模块时,过程可循环回到框706。当处理完成时,应用可在框728中结束。
图8是示出用于执行具有应用和模块跟踪的应用的方法的实施例800的流程图示。
其他实施例可使用不同的排序、更多或更少的步骤、以及不同的命名或术语来完成相似功能。在一些实施例中,各种操作或操作集合可与其他操作以同步或异步方式并行地执行。此处所选的步骤是为了以简化的形式例示出一些操作原理而被选出的。
实施例800解说了可如何带因应用而异以及因模块而异的跟踪地执行应用。因应用而异的跟踪可在应用执行时进行,而因模块而异的跟踪可在各模块执行时进行。实施例800可与实施例700相比较,其中因模块而异的跟踪可不带因模块而异的跟踪地进行。
应用可在框802中被接收且可在框804中开始执行。当在框806中应用包括跟踪时,应用跟踪可在框808中开始。跟踪器的操作可在框810中解说。
应用可在框814被执行。当应用在框814中被执行时,跟踪器可在框812中收集因应用而异的跟踪器数据。
当应用在框816中遇到模块时,该模块可在框818中被执行。当模块在框818中执行时,跟踪器可在框820中收集跟踪器数据。
在框810的跟踪器操作期间,跟踪器可在框822中将跟踪器数据发送至预处理器。跟踪器数据可例如周期性地被传送。
更多代码将在框824中被执行,该过程可循环回框814,否则应用可在框826中结束。
图9是示出用于预处理跟踪器数据的方法的实施例900的流程图。实施例900可被执行以采集跟踪器数据并将该数据分派到适当的数据库。一旦数据处于数据库中,则该数据可被分析引擎进一步处理和分析。
其他实施例可使用不同的排序、更多或更少的步骤、以及不同的命名或术语来完成相似功能。在一些实施例中,各种操作或操作集合可与其他操作以同步或异步方式并行地执行。此处所选的步骤是为了以简化的形式例示出一些操作原理而被选出的。
实施例900是预处理器的一个示例。在许多实施例中,预处理器可处理大量数据。因此,预处理器可执行有限量的分析并可按轻量方式操作。实施例900的操作可对每个分组或从跟踪器发送的消息执行。
在框902中,可接收跟踪数据。在许多情况下,跟踪数据可按包含由跟踪器采集的观察组、元数据和其它信息的分组、消息或其它形式进入。
如果在框904中跟踪数据是应用跟踪数据,因模块而异的数据可在框906中执行、在框908中被匿名化、且在框910中被发送至模块预处理器。如果跟踪数据是框904中的模块跟踪数据,则该跟踪数据被发送至模块预处理器。
框906和908中的因模块而异的数据的提取和匿名化可移除数据,该数据可标识该应用、该应用所处理的数据、或可与该应用有关的其它信息。在一些情况下,该数据可被认为是专有数据且因此在被添加至模块数据库之前被移除。
在框912中解说了模块预处理器的操作。在框914中可执行因模块而异的数据的初始分析。在框916中新数据可被聚集到现有模块数据中,且在框918中模块数据库可被更新。模块数据库中的数据可由分析引擎进一步处理以生成模块开发者以及更广泛受众(其可包括一般公众)可查看的数据。
如框920中解说的,因应用而异的数据可在应用预处理器中被处理。应用预处理器可在框922中对应用数据执行初始分析、在框924中将新数据聚集到现有应用数据中,以及在框926中更新应用数据库。
图10是示出用于分析跟踪器数据的方法的实施例1000的流程图。实施例1000可由分析引擎执行以将模块跟踪数据合并到已分析模块数据库中。从已分析模块数据库,数据可被用诸如实施例300的用户界面的用户界面呈现给用户。
其他实施例可使用不同的排序、更多或更少的步骤、以及不同的命名或术语来完成相似功能。在一些实施例中,各种操作或操作集合可与其他操作以同步或异步方式并行地执行。此处所选的步骤是为了以简化的形式例示出一些操作原理而被选出的。
在框1002,可接收经预处理的跟踪数据。模块元数据可在框1004中从该数据提取。
如果在框1006中该模块不在已分析模块数据库中,则可执行在框1008中开始的过程以将该模块添加到模块数据库中。
在框1008中,可在已分析模块数据库中创建一条目。该模块的源代码可在框1010中被检索且在框1012中被解析以定位到处的函数和其它对象。
对于框1014中的每个导出函数或其它可用对象,该函数或对象可在框1016中被添加到已分析跟踪数据库。该过程可在框1018继续。
如果在框1006中该模块处于该数据库中,则模块级数据元素可在框1018中被从该数据提取且已分析模块数据库可在框1020中被更新。
在框1022中可标识数据中的函数或其它对象。对于框1024中的每个函数,与该函数有关的统计数据可在框1026中被更新且在该统计数据可在框1028中被用来更新已分析模块数据库。
该模块作为整体的任何分析可在框1030中被更新且所述更新可在框1032中被发布在已分析模块数据库中。
图11是示出用于从所分析的跟踪数据服务请求的方法的实施例1100的流程图示。实施例1100可响应于来自客户端设备的请求由门户服务器执行。
其他实施例可使用不同的排序、更多或更少的步骤、以及不同的命名或术语来完成相似功能。在一些实施例中,各种操作或操作集合可与其他操作以同步或异步方式并行地执行。此处所选的步骤是为了以简化的形式例示出一些操作原理而被选出的。
在框1102中可接收对特定模块的概述数据的请求。如果在框1104中用户不是认证用户,则该模块的一般性数据可在框1106中被检索且在框1108中被传送给该用户。如果在框1104中该用户是认证用户,则模块开发者数据可在框1110中被检索且在框1108中被传送。
在实施例1100的示例中,被作为“页面”递送的数据的概念可指代以网页形式的数据递送的示例。一些实施例可以其它方式传送数据以在用户界面中被呈现或展示给用户。
对本发明的上述描述是出于图示和描述的目的而呈现的。它不旨在穷举本主题或将本主题限于所公开的精确形式,并且鉴于上述教导其他修改和变型都是可能的。选择并描述实施例来最好地解释本发明的原理及其实践应用,由此使本领域的其他技术人员能够在各种实施例和各种适于所构想的特定用途的修改中最好地利用本发明。所附权利要求书旨在被解释为包括除受现有技术所限的范围以外的其他替换实施例。
Claims (52)
1.一种用于应用跟踪的系统,包括:
至少一个处理器;
跟踪数据库;
预处理器系统,所述预处理器系统:
从多个应用收集跟踪输出,所述应用中的每个应用包括第一可重用模块和跟踪机制,所述跟踪机制被配置成从所述第一可重用模块采集跟踪数据;
将所述跟踪数据存储在所述跟踪数据库中;
跟踪数据服务器,所述跟踪数据服务器:
接收对模块跟踪数据的请求;以及
响应于所述请求返回所述跟踪数据的至少一部分,所述跟踪数据的所述至少一部分能显示在多个用户界面中的一个用户界面上;
模块开发者能访问的第一用户界面,所述第一用户界面在接收到来自所述模块开发者的认证之后能被访问,所述第一用户界面是所述多个用户界面中的一个用户界面;
第三方能访问的第二用户界面,所述第二用户界面能在无认证的情况下访问,所述第二用户界面是所述多个用户界面中的一个用户界面;
所述第一用户界面包括第一跟踪数据集;以及
所述第二用户界面包括所述第一跟踪数据集的子集;
其中所述第一跟踪数据集是因应用而异的,而所述第一跟踪数据集的子集是因模块而异的。
2.如权利要求1所述的系统,所述跟踪机制被从所述模块内调用。
3.如权利要求1所述的系统,所述跟踪机制被从所述模块外部调用。
4.如权利要求1所述的系统,所述跟踪机制能根据所述多个应用中的每个应用内的设置来配置。
5.如权利要求1所述的系统,所述跟踪数据被匿名化。
6.如权利要求5所述的系统,所述跟踪数据在所述跟踪数据被收集时被所述预处理器系统匿名化。
7.如权利要求1所述的系统,所述跟踪数据包括性能数据。
8.如权利要求7所述的系统,所述性能数据包括资源使用。
9.如权利要求8所述的系统,所述跟踪数据进一步包括使用数据。
10.如权利要求9所述的系统,所述使用数据包括所述模块内的多个函数中的每个函数的使用数据。
11.如权利要求10所述的系统,所述使用数据包括已合并了所述模块的不同应用的数目的计数。
12.如权利要求1所述的系统,所述第二用户界面包括徽章,所述徽章包括从所述模块跟踪数据得到的至少一个度量。
13.如权利要求12所述的系统,所述至少一个度量是所述模块跟踪数据内的观察的数量。
14.如权利要求13所述的系统,所述观察是所述模块的执行。
15.如权利要求13所述的系统,所述观察是包括所述模块的所述应用的数量。
16.一种在至少一个计算机处理器上执行的方法,所述方法包括:
从多个应用收集跟踪输出,所述应用中的每个应用包括第一可重用模块和跟踪机制,所述跟踪机制被配置成从所述第一可重用模块采集跟踪数据;
将所述跟踪数据存储在跟踪数据库中;
接收对模块跟踪数据的第一请求;
确定所述第一请求被认证;
响应于所述第一请求,返回第一用户界面,所述第一用户界面包括所述跟踪数据的第一子集;
接收对模块跟踪数据的第二请求;
确定所述第二请求未被认证;以及
响应于所述第二请求返回第二用户界面,所述第二用户界面包括所述跟踪数据的第二子集,所述跟踪数据的所述第一子集大于所述跟踪数据的所述第二子集;
其中所述跟踪数据的第一子集是因应用而异的,而所述跟踪数据的第二子集是因模块而异的。
17.如权利要求16所述的方法,进一步包括:
在显示在所述第二用户界面上时将数据的所述第二子集的至少一部分匿名化。
18.如权利要求17所述的方法,数据的所述第一子集包括非匿名化的数据。
19.如权利要求16所述的方法,进一步包括:
从应用开发者接收收集所述跟踪输出的许可。
20.如权利要求19所述的方法,进一步包括:
在收集所述跟踪输出之前确定来自所述应用中的每个应用的跟踪配置。
21.一种用于应用跟踪的系统,包括:
至少一个处理器;
应用跟踪数据库;
模块跟踪数据库;
在所述至少一个处理器上执行的数据预处理器,所述数据预处理器:
从应用收集跟踪数据,所述应用包括因应用而异的代码和可重用模块代码;
标识模块跟踪数据并将所述模块跟踪数据存储在所述模块跟踪数据库中;
标识应用跟踪数据并将所述应用跟踪数据存储在所述应用跟踪数据库中;
分析引擎,所述分析引擎:
创建所述应用跟踪数据的第一因应用而异的视图;以及
创建所述模块跟踪数据的第一因模块而异的视图。
22.如权利要求21所述的系统,所述因模块而异的视图包括从多个应用收集的模块跟踪数据。
23.如权利要求22所述的系统,其特征在于,所述因模块而异的视图包括所述模块的性能度量。
24.如权利要求23所述的系统,所述性能度量包括所述模块的资源使用。
25.如权利要求24所述的系统,所述性能度量被针对所述模块中包含的多个函数中的每个函数定义。
26.如权利要求22所述的系统,其特征在于,所述因模块而异的视图包括所述模块的使用度量。
27.如权利要求26所述的系统,所述使用度量是针对所述模块中包含的多个函数中的每个函数而定义的。
28.如权利要求27所述的系统,所述使用度量是针对所述多个应用中的每个应用而定义的。
29.如权利要求21所述的系统,其特征在于,所述因模块而异的视图包括可靠性度量。
30.如权利要求29所述的系统,所述可靠性度量是所述模块的单一度量。
31.如权利要求29所述的系统,所述因模块而异的视图包括所述模块中的多个函数中的每个函数的可靠性度量。
32.一种由至少一个计算机处理器执行的方法,所述方法包括:
接收从应用采集的跟踪数据,所述应用包括因应用而异的代码和可重用模块代码;
标识模块跟踪数据并将所述模块跟踪数据存储在模块跟踪数据库中;
标识应用跟踪数据并将所述应用跟踪数据存储在应用跟踪数据库中;
创建所述应用跟踪数据的第一因应用而异的视图;以及
创建所述模块跟踪数据的第一因模块而异的视图。
33.如权利要求32所述的方法,进一步包括:
在存储所述模块跟踪数据之前匿名化所述模块跟踪数据。
34.如权利要求33所述的方法,所述匿名化通过混淆所述模块跟踪数据的至少一部分来执行。
35.如权利要求34所述的方法,进一步包括:
接收所述应用跟踪数据的所述第一因应用而异的视图的第一请求;
确定所述第一请求是经认证的请求;以及
用所述应用跟踪数据的所述第一因应用而异的视图来对所述第一请求做出响应。
36.如权利要求35所述的方法,所述第一请求是应用开发者所作出的经认证的请求。
37.如权利要求35所述的方法,进一步包括:
接收所述模块跟踪数据的所述第一因模块而异的视图的第二请求;以及
用所述模块跟踪数据的所述第一因模块而异的视图来对所述第二请求做出响应。
38.一种用于应用跟踪的系统,包括:
因模块而异的数据库,所述因模块而异的数据库包括被合并到应用中的模块的使用数据和性能数据,所述模块包括在资源库中可用的可重用代码;
因应用而异的数据库,所述因应用而异的数据库包括所述应用的使用数据和性能数据;
访问门户,所述访问门户被配置成:接收对因模块而异的数据的第一请求,所述第一请求包括对第一模块的请求;
确定所述第一请求不是认证请求并返回所述第一模块的统计数据的第一概述集;
接收对因模块而异的数据的第二请求,所述第二请求包括对所述第一模块的请求;
确定所述第二请求时授权请求并返回所述第一模块的统计数据的详细集合。
39.如权利要求38所述的系统,所述访问门户被进一步配置成:
接收对因应用而异的数据的第三请求,所述第三请求标识第一应用;以及
确定所述第三请求是认证请求并返回所述第一应用的统计数据的详细集合。
40.如权利要求39所述的系统,统计数据的所述详细集合包括函数列表以及所述函数列表中的每个函数的统计数据集合。
41.如权利要求40所述的系统,每个函数的所述统计数据集合包括每个函数的使用统计数据。
42.如权利要求41所述的系统,每个函数的所述统计数据集合包括每个函数的性能统计数据。
43.如权利要求42所述的系统,统计数据的所述详细集合包括所述第一模块的拓扑图。
44.如权利要求42所述的系统,统计数据的所述详细集合包括所述第一模块的使用统计数据。
45.如权利要求40所述的系统,统计数据的所述详细集合包括可靠性因子。
46.如权利要求45所述的系统,统计数据的所述详细集合包括所述函数列表中的每个函数的所述可靠性因子。
47.如权利要求46所述的系统,统计数据的所述详细集合包括所述模块的单一可靠性因子。
48.如权利要求47所述的系统,统计数据的所述详细集合包括所述模块的流行度因子。
49.如权利要求48所述的系统,统计数据的所述详细集合包括所述模块的趋势因子。
50.如权利要求49所述的系统,统计数据的所述详细集合包括数据集信息。
51.如权利要求50所述的系统,所述数据集信息包括被分析以生成统计数据的所述详细集合的数据集的数量。
52.如权利要求51所述的系统,所述数据集信息包括被分析以生成统计数据的所述详细集合的应用的数量。
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361873773P | 2013-09-04 | 2013-09-04 | |
US61/873,773 | 2013-09-04 | ||
US201361874931P | 2013-09-06 | 2013-09-06 | |
US201361874927P | 2013-09-06 | 2013-09-06 | |
US61/874,927 | 2013-09-06 | ||
US61/874,931 | 2013-09-06 | ||
PCT/IB2014/060233 WO2015033235A1 (en) | 2013-09-04 | 2014-03-27 | Module specific tracing in a shared module environment |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105723357A CN105723357A (zh) | 2016-06-29 |
CN105723357B true CN105723357B (zh) | 2019-06-28 |
Family
ID=52627860
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480049023.XA Active CN105723357B (zh) | 2013-09-04 | 2014-03-27 | 共享模块环境中的因模块而异的跟踪 |
Country Status (4)
Country | Link |
---|---|
EP (1) | EP3042314B1 (zh) |
KR (1) | KR102202923B1 (zh) |
CN (1) | CN105723357B (zh) |
WO (1) | WO2015033235A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110831030B (zh) * | 2018-08-13 | 2021-09-14 | 华为技术有限公司 | 一种信号覆盖效果图的获取方法及网络设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103038752A (zh) * | 2010-05-19 | 2013-04-10 | 谷歌公司 | 漏洞清理所 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020087949A1 (en) * | 2000-03-03 | 2002-07-04 | Valery Golender | System and method for software diagnostics using a combination of visual and dynamic tracing |
US7640459B2 (en) * | 2006-09-30 | 2009-12-29 | Sap Ag | Performing computer application trace with other operations |
US8037471B2 (en) * | 2006-11-16 | 2011-10-11 | International Business Machines Corporation | Systems and methods for constructing relationship specifications from component interactions |
US8117602B2 (en) * | 2008-04-01 | 2012-02-14 | Kaspersky Lab, Zao | Method and system for monitoring execution performance of software program product |
US8844042B2 (en) * | 2010-06-16 | 2014-09-23 | Microsoft Corporation | System state based diagnostic scan |
US8972940B2 (en) * | 2010-09-23 | 2015-03-03 | International Business Machines Corporation | Systems and methods for identifying software performance influencers |
US20130145350A1 (en) * | 2011-12-05 | 2013-06-06 | Microsoft Corporation | Efficient, large scale trace storage system |
US9043788B2 (en) * | 2012-08-10 | 2015-05-26 | Concurix Corporation | Experiment manager for manycore systems |
-
2014
- 2014-03-27 CN CN201480049023.XA patent/CN105723357B/zh active Active
- 2014-03-27 KR KR1020167005793A patent/KR102202923B1/ko active IP Right Grant
- 2014-03-27 EP EP14843127.3A patent/EP3042314B1/en not_active Not-in-force
- 2014-03-27 WO PCT/IB2014/060233 patent/WO2015033235A1/en active Application Filing
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103038752A (zh) * | 2010-05-19 | 2013-04-10 | 谷歌公司 | 漏洞清理所 |
Also Published As
Publication number | Publication date |
---|---|
EP3042314B1 (en) | 2018-06-27 |
KR20160058768A (ko) | 2016-05-25 |
EP3042314A1 (en) | 2016-07-13 |
CN105723357A (zh) | 2016-06-29 |
EP3042314A4 (en) | 2017-05-17 |
WO2015033235A1 (en) | 2015-03-12 |
KR102202923B1 (ko) | 2021-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Bonawitz et al. | Towards federated learning at scale: System design | |
US11797595B2 (en) | Method, apparatus, and computer program product for user-specific contextual integration for a searchable enterprise platform | |
Merino et al. | A data quality in use model for big data | |
CN105283849B (zh) | 针对性能和细节的并行跟踪 | |
CN109542791B (zh) | 一种基于容器技术的程序大规模并发评测方法 | |
US9864672B2 (en) | Module specific tracing in a shared module environment | |
CN105283852B (zh) | 一种模糊跟踪数据的方法及系统 | |
CN105103147B (zh) | 用工作负载分发器来跟踪的方法及系统 | |
Loshin | Big data analytics: from strategic planning to enterprise integration with tools, techniques, NoSQL, and graph | |
US9298588B2 (en) | Tracing system for application and module tracing | |
Choudhary et al. | Crawling rich internet applications: the state of the art | |
US9311213B2 (en) | Module database with tracing options | |
CN105122234A (zh) | 使用成本分析来部署跟踪目标 | |
CN105122212A (zh) | 自动化跟踪系统中的周期性优化 | |
CN105283866A (zh) | 使用相似频率的优化分析 | |
Trautsch et al. | Adressing problems with external validity of repository mining studies through a smart data platform | |
Raja | All complaints are not created equal: text analysis of open source software defect reports | |
Ali et al. | A hybrid DevOps process supporting software reuse: A pilot project | |
CN105723357B (zh) | 共享模块环境中的因模块而异的跟踪 | |
CN112559343A (zh) | 测试路径生成方法及相关设备 | |
Liang et al. | Mystique: Enabling Accurate and Scalable Generation of Production AI Benchmarks | |
Reynolds et al. | Towards automated provenance collection for runtime models to record system history | |
Wienke et al. | Performance regression testing and run-time verification of components in robotics systems | |
CN109582560A (zh) | 测试文件编辑方法、装置、设备及计算机可读存储介质 | |
Emilsson | Container performance benchmark between Docker, LXD, Podman & Buildah |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20170516 Address after: Washington State Applicant after: Micro soft technique license Co., Ltd Address before: Washington State Applicant before: CONCURIX CORP. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |