基于程序执行不稳定性状态为软件程序提供自定义产品支持的方法、系统和设备转让专利

申请号 : CN200510075466.9

文献号 : CN1755644B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : A·E·埃兰德森B·E·康宁C·C·怀特E·A·勒维恩S·M·格林伯格T·S·库恩

申请人 : 微软公司

摘要 :

提供一种基于执行不稳定性的级别为计算机程序提供自定义产品支持的方法和设备。通过一段时间监视软件程序的执行,确定程序的执行稳定性。基于监视和基于一个或多个不稳定性阈值级别,分类程序的执行稳定性。基于分类为执行程序的计算机系统的用户提供自定义产品支持。例如,可基于分类提供免费或者减少费用的产品支持。

权利要求 :

1.一种基于程序执行不稳定性的状态为软件程序提供自定义产品支持的方法,其特征在于,所述方法包括:周期性地接收一远程控制文件,所述远程控制文件包含识别程序执行不稳定性的一个或多个阈值的数据及其每个阈值的有效期,所述有效期定义一个时间;

通过一段时间监视软件程序的执行,以确定程序的执行稳定性;

在所述有效期定义的所述时间之内,基于一个或多个不稳定性阈值级别,分类程序的执行稳定性;以及基于所述分类,为执行所述软件程序的计算机系统的用户提供自定义产品支持,包括在执行所述软件程序的计算机系统上执行一个基于分类的诊断程序,并将诊断状态注册表关键字存储在注册表中,识别所述用户与所述监视的先前交互。

2.如权利要求1所述的方法,其特征在于,通过一段时间监视软件程序的执行包括:每次执行程序时在日志中生成一个会话条目,所述会话条目包括识别程序、执行程序的时间长度,以及指示程序的执行是正常还是异常终止的数据。

3.如权利要求2所述的方法,其特征在于,异常终止包括程序崩溃和程序挂起中的任一项。

4.如权利要求3所述的方法,其特征在于,确定程序的执行稳定性包括分析日志以生成描述程序执行稳定性的一个或多个统计信息。

5.如权利要求4所述的方法,其特征在于,所述统计信息包括每若干次程序执行中的异常终止的次数。

6.如权利要求5所述的方法,其特征在于,所述统计信息还包括程序执行每若干分钟中的异常终止数量。

7.如权利要求6所述的方法,其特征在于,基于一个或多个不稳定性阈值级别分类程序的执行稳定性包括:将每个统计信息与对应的阈值比较以将程序的执行不稳定性分类到程序执行不稳定性的多个状态之一中。

8.如权利要求7所述的方法,其特征在于,所述远程控制文件包含识别程序的一个或多个版本的程序执行不稳定性的一个或多个阈值的数据,并且其中,所述方法还包括在分类程序的执行稳定性之前确定远程控制文件是否包含所述程序的版本的阈值。

9.如权利要求8所述的方法,其特征在于,为软件程序提供自定义产品支持包括将计算机程序的用户引向一个信息资源,所述信息资源具有基于分类对软件程序的免费或者减少费用的产品支持。

10.如权利要求8所述的方法,其特征在于,为软件程序提供自定义产品支持包括将计算机程序的用户引向一个基于分类识别的信息资源。

11.一种基于程序执行不稳定性的阈值级别为软件程序提供自定义产品支持的系统,其特征在于,所述系统包括:一客户机计算机,用于从一服务器计算机接收一远程控制文件,所述远程控制文件包含识别软件程序的一个或多个版本的程序执行不稳定性的一个或多个阈值的数据及其每个阈值的有效期,所述有效期定义一个时间;用于通过一段时间监视软件程序的执行来确定程序的执行稳定性;用于在所述有效期定义的所述时间之内,基于包含在远程控制文件中的程序执行不稳定性的阈值来分类程序的执行稳定性;以及用于基于分类为执行所述软件程序的计算机系统的用户提供自定义产品支持,包括在客户机计算机上执行诊断程序以诊断与程序有关的问题,并将诊断状态注册表关键字存储在注册表中,识别所述用户与所述监视的先前交互。

12.如权利要求11所述的系统,其特征在于,通过一段时间监视软件程序的执行包括:每次执行程序时在存储在客户机计算机处的日志中生成一个会话条目,所述会话条目包括识别程序、执行程序的时间长度,以及指示程序的执行是正常还是异常终止的数据。

13.如权利要求12所述的系统,其特征在于,异常终止包括程序崩溃和程序挂起中的任一项。

14.如权利要求13所述的系统,其特征在于,确定程序的执行稳定性包括分析在客户机计算机处的日志以产生描述程序的执行稳定性的一个或多个统计信息。

15.如权利要求14所述的系统,其特征在于,所述统计信息包括程序执行每若干次数中的异常终止次数。

16.如权利要求15所述的系统,其特征在于,所述统计信息还包括程序执行每若干分钟中的异常终止次数。

17.如权利要求16所述的系统,其特征在于,基于一个或多个不稳定性阈值级别分类程序的执行稳定性包括将每个统计信息与对应的阈值比较以将程序的执行不稳定性分类到程序执行不稳定性的多个状态之一中。

18.如权利要求16所述的系统,其特征在于,为软件程序提供自定义产品支持包括将用户引向一个信息资源,所述信息资源提供取决于程序执行不稳定性的等级的免费或者减少费用的产品支持。

19.如权利要求16所述的系统,其特征在于,为软件程序提供自定义产品支持包括将所述客户机计算机的用户引向一个信息资源,所述信息资源是基于程序执行不稳定性的等级确定的。

说明书 :

背景技术

软件开发周期中最重要的阶段之一是调试阶段,它在软件产品已经被发货到客户之后发生。这个阶段很重要,因为软件产品的用户的实际经验可在这个阶段期间被利用以查出程序错误,识别常用和不常用的特征,并且总体地使软件产品更好和更稳定。

在发布后调试阶段中分析的主要焦点一般是识别最常发生的程序错误(在本文也称为“故障(bug)”)。通过识别最常发生的故障并排除它们,可以改进许多用户的可用性体验。然而,还有另一类别的分析,通常不能由前面的发布后调试系统解决。这个类别包括识别在一个应用程序执行期间最常遭遇问题的计算机系统。这些问题可包括或者可不包括在所有用户中最常发生的程序错误。

统计显示少数用户经历了整个问题全部数量的高百分比。这类问题可包括程序崩溃、程序挂起、突发程序终止和其它类型的异常程序终止。表现出这些类型问题的应用程序在本文通常认为是“不稳定的(unstable)”或具有“程序执行不稳定性(program execution instability)”。一个不稳定的程序对于在使用该程序时经常遭遇问题的计算机用户可以是特别令人受挫的。

先前的发布后调试系统没有提供识别具有最高频率的程序执行不稳定性的计算机系统的方法,并且因此没有为软件开发者提供一种协助用户经历这些问题的机制。因此,存在对一种方法、系统和设备的需求,用于识别具有高频率的程序执行不稳定性的计算机系统并且用于提供为这样一种计算机系统的用户提供自定义产品支持。

正是基于这些和其它考虑作出了本发明的各种实施例。

发明内容

按照本发明的实施例,上面和其它问题是由一种方法和设备解决的,该方法和设备基于执行不稳定性的状态为计算机程序提供自定义产品支持。通过识别具有各不相同等级的程序执行不稳定性的计算机系统,可以将自定义产品支持提供给具有最高频率的程序执行错误的用户。因为自定义产品支持的供应基于根据阈值分类成程序不稳定性的状态,所以可调整阈值为不定数量的用户提供自定义产品支持。
按照本发明的一个方面,提供一种基于程序执行不稳定性的状态为软件程序提供自定义产品支持的方法。按照该方法,监视软件程序的执行在一段时间来确定程序的执行稳定性。基于监视并且基于一个或多个不稳定性阈值级别,程序的执行稳定性被分类到一个状态之中。例如,程序的稳定性可被分类成“好”、“差”或“很差”。基于分类,可为执行程序的计算机系统用户提供自定义产品支持。例如,基于分类可提供免费或减少费用的产品支持。可供替换地,可将计算机的用户引向一个信息资源诸如一个网页,它是根据状态确定的。同样,可执行诊断程序来基于分类识别和修理与计算机系统和应用程序有关的问题。
按照该方法的各个方面,在一段时间上监视软件程序的执行可通过每次执行程序时在日志中生成一个会话条目来完成。会话条目包括识别程序的数据,执行程序的时间长度,和表示程序是正常还是异常终止的数据。异常终止可包括程序崩溃、程序挂起(其中程序继续执行,但显得不响应于用户)或者任何其它类型的异常终止(诸如在程序正在执行时将计算机切断电源)。
程序的执行稳定性可基于对日志的分析来确定。具体地说,可产生一个或多个统计信息来描述程序的执行稳定性。例如,可计算出每一定程序执行次数中的异常终止的次数。同样,可计算出程序执行每若干分钟其中的异常终止的次数。也可产生其它类型的统计信息。
为了将程序的执行稳定性分类到一个状态之中,可使用一个或多个不稳定性阈值级别。阈值级别可存储在计算机系统上并且可在一个远程控制文件中从服务器计算机周期地更新阈值级别。各阈值级别定义了应当用于分类程序执行的稳定性的值。将阈值级别与统计信息比较,将程序的稳定性分类到程序执行不稳定性的一个或多个状态之中。可在远程控制文件中为不同版本的程序提供阈值。可周期地修改远程控制文件的内容以改变阈值级别。
可将本发明实现为计算机过程、计算设备或系统或者制造品诸如计算机程序产品或计算机可读介质。计算机程序产品可以是由计算机系统可读的并且编码执行计算机过程的指令的计算机程序的计算机存储介质。计算机程序产品也可以是由计算系统可读的并且编码执行计算机过程的指令的计算机程序的载体上的传播信号。
作为本发明实施例的特征的这些和各种其它特征以及优点,通过阅读下面的详细描述和审阅相关联的附图将是显而易见的。

附图说明

图1是一个网络图,例示用于实现本发明各种方面的计算机网络的情景;
图2是一个计算机系统体系结构图,例示在本发明各种实施例中使用和由它们提供的计算机系统;
图3-7是流程图,例示由本发明各种实施例提供和在它们中使用的过程
详细说明
现在参考附图,其中相同的数字表示相同的元素,描述本发明的各种方面。具体地说,图1和相应的讨论是要提供一个适合于在其中实现本发明实施例的简短、一般的描述。尽管在结合个人计算机的操作系统上运行的程序模块执行的程序模块的一般上下文中描述本发明,但本领域熟练技术人员将认识到,本发明也可结合其它类型的计算机系统和程序模块来实现。
通常,程序模块包括例程、程序、组件、数据结构和其它类型的执行特定任务或实现特定抽象数据类型的结构。而且,本领域熟练技术人员将意识到,本发明可在其它计算机系统配置下实施,包括手持设备、多处理器系统、基于微处理器或可编程消费电子产品、小型机、大型机等等。本发明也可在分布式计算环境中实施,其中任务是由通过通信网络链接的远程处理设备执行的。在分布式计算环境中,程序模块可定位在本地和远程两者的存储器存储设备中。现在参考附图,其中在这几个附图中相同的数字表示相同的元素,描述本发明和示例性操作环境的方面。
图1示出用于本发明各种实施例的说明性操作环境。如图1所示,客户机计算机2在本发明各种实施例中使用。客户机计算机包括一个标准的台式或服务器计算机,它可用于执行一个或多个程序模块。客户机计算机2也配备了用于监视应用程序的执行和用于确定程序的执行稳定性的程序模块。客户机计算机2也用于基于一个或多个阈值分类程序的稳定性并且基于该分类为应用提供自定义的产品支持。
为了分类在客户机计算机2处执行的程序的稳定性,客户机计算机2也可用于周期性地从一个由软件程序的开发者操作的错误汇报服务器计算机10接收一个远程控制文件。错误汇报服务器计算机10包括一个通过LAN或互联网8维护和可访问的常规服务器计算机。错误汇报服务器计算机10是由感兴趣的应用程序的开发者操作的。有关内容和远程控制文件的使用的其它细节将在下面相对于图2-7提供。产品支持服务器计算机6也可由开发者操作以提供自定义产品支持。例如,产品支持服务器可提供基于用户经历的程序不稳定性的等级的网页或其它信息。
现在参考图2,描述在本发明各种环境中使用的客户机计算机2的说明性计算机体系结构。图2所示的计算机体系结构例示一个常规的台式或膝上型计算机,包括中央处理单元5(“CPU”)、系统存储器7(包括随机存取存储器9(“RAM”)和只读存储器(“ROM”)11)和将存储器耦合到CPU5的系统总线12。包含如在启动时帮助计算机内元件之间传送信息的基本例程的基本输入/输出系统存储在ROM11之中。计算机2还包括大容量存储器14用于存储操作系统16、应用程序18和将在下面详细描述的其它程序模块。
大容量存储设备14通过连接到总线12的大容量存储控制器(未示出)连接到CPU5。大容量存储设备14及其相关联的计算机可读介质为计算机2提供非易失性存储。尽管本文中包含的计算机可读介质的描述指大容量存储设备,诸如硬盘或CD-ROM驱动器,但本领域熟练技术人员应当意识到,计算机可读介质可以是可以由计算机2访问的任何可用的介质。
作为例子,且非限制性地,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以任何用于存储信息诸如计算机可读指令、数据结构、程序模块或其它数据的任何方法或技术实现的易失性和非易失性、可移动和不可移动的介质。计算机存储介质包括,但不限于,RAM、ROM、EPROM、EEPROM、闪存或其它固态存储器技术、CD-ROM、数字多功能盘(“DVD”)或其它光存储、磁盒、磁带、磁盘存储或其它磁存储设备,或者任何可以用于存储想要的信息且可以由计算机2访问的任何其它介质。
按照本发明各种方面,计算机2可在使用通过网络8如互联网逻辑连接到远程计算机的网络化环境中运行。客户机计算机2可通过连接到总线12的网络接口单元20连接到网络8。应当意识到,网络接口单元20也可用于连接到其它类型的网络和远程计算机系统。计算机2也可包括一个输入/输出控制器22用于从许多其它设备(包括键盘、鼠标或电子输入笔(图1中未示出))接收和处理输入。同样,输入/输出控制器22可提供输出至显示屏幕、打印机或其它类型的输出设备。
如上面简要所述,许多程序模块和数据文件可存储在大容量存储设备14和计算机2的RAM9之中,包括适合于控制网络化个人计算机的操作的操作系统16诸如来自华盛顿(Washington)的雷德蒙德(Redmond)的MICROSOFT公司的WINDOWS XP操作系统。大容量存储设备14和RAM9也可存储一个或多个程序模块。具体地说,大容量存储设备14和RAM9可存储应用稳定性监视程序24,用于监视一个或多个应用程序18的执行稳定性并且如果程序变成超过某个可设置的阈值而不稳定则为应用程序18提供自定义产品支持。可响应于用于捕捉和处理客户机计算机2内的程序执行异常的异常处理程序32的执行来执行应用稳定性监视程序24。也可由客户机计算机2的用户人工地执行应用稳定性监视程序24。
为了监视应用程序18的稳定性,应用稳定性监视24使用事件服务26的服务。事件服务16是由操作系统26为将在客户机计算机2处发生的事件记录到事件日志28的功能程序。例如,事件服务26可记录安全相关事件(例如,未经授权的登入企图)、系统相关事件(例如,经历故障的盘驱动器)和应用相关事件。如下面将更详细描述的,关于应用程序28的执行和故障的事件记录在事件日志18中。具体地说,每次执行应用程序时可在事件日志28中生成一个会话条目。会话条目包括识别程序的数据,执行程序的时间长度和表示程序是正常还是异常终止的数据。异常终止可包括程序崩溃、程序挂起(其中程序继续执行,但显得不响应于用户)或者任何其它类型的异常终止(诸如如果在程序正在执行的同时从计算机切断电源)。
如下面将更详细地描述的,可周期性地分析事件日志28并且产生描述应用程序18的稳定性的统计信息。统计信息可包括计算定义每若干次程序执行中的异常终止次数、程序执行每若干钟数中的异常终止次数的数据,或者表示应用程序18的稳定性的其它类型的统计信息。
一旦产生了统计信息,可基于统计信息和存储在远程控制文件36中的一个或多个阈值将程序的执行稳定性分类到诸状态之中。阈值定义程序不稳定性的各种等级。例如,可定义将程序模块的执行分类为“好”、“差”或“非常差”的阈值。按照本发明的一个实施例,“好”阈值表示应用程序足够稳定,不应当采取动作。“差”阈值表示应用程序在某种程度上不稳定,但其不稳定还不足以批准向用户提供免费或减少费用的产品支持。可将用户引到诊断或其它信息。“非常差”阈值表示应用稳定性如此之差,使得批准免费或减少费用的产品支持。应当意识到,可定义三个以上的阈值并且这些阈值的定义可按照软件产品及其开发者变化。应当意识到,应用程序的性能的监视和自定义支持的提供可由应用程序的开发者在一个一个应用的基础上来进行。
可周期性地更新远程控制文件36的内容并从错误汇报服务器计算机10发送到客户机计算机2。远程控制文件36也可存储每个阈值的有效期,它们定义一个时间,在这个时间之后不应当使用这些阈值。远程控制文件36也可存储每个阈值的应用版本数字。应用版本数字允许将不同的阈值分配给可能安装并在客户机计算机2处使用的不同版本应用程序。应当意识到,远程控制文件36可存储其它数据,并且可用于以其它方式控制客户机计算机2的操作。有关远程控制文件的内容和使用的更多信息可以在共同待批的美国专利申请号10/304,282中找到,其标题为“Method and System for Remotely Controllingthe Reporting of Events Occurring within a Computer System(远程控制计算机系统内发生事件的汇报的方法和系统)”,并且通过引用明确地将它包括在本文中。
基于所分配的阈值,可由应用稳定性监视24为执行程序的计算机系统的用户提供自定义产品支持。例如,基于分类,可将用户引到免费或减少费用的产品支持。可供替换地,可将计算机的用户引到一个信息资源诸如一个网页,它是基于分类确定的。同样,可执行诊断程序34以基于分类来识别和修理与计算机系统和应用程序有关的问题。
按照本发明的实施例,操作系统16用于在注册表30中存储数据。注册表30是一个用于存储配置客户机计算机2用于一个或多个用户、应用和硬件设备所需的信息的中心分层数据库。例如,注册表30用于存储“最后调整时间(lastfix time)”注册表关键字,它识别由诊断程序34对客户机计算机上的软件组件进行修理的最后时间。注册表30还用于存储“诊断状态”注册表关键字,它识别当前用户与应用稳定性监视24的先前交互。用于诊断状态注册表关键字的可能值是“新的(new)”(用户先前还没有使用过应用稳定性监视24)、“改变的(altered)”(先前执行了诊断程序34并且对客户机计算机2作出了改变)、“识别的(identified)”(执行了诊断程序34并且确定引起不稳定性的问题在应用程序18的外部(例如,诸如硬件故障))和“帮助(help)”(执行了诊断程序34并且将用户引到产品支持专用程序(“PSS”)形式的客户支持)。如下面将更详细地描述的,“诊断状态”注册表关键字的值用于确定应当如何为用户处理一个新遭遇问题。关于事件日志28的创建的其它细节、异常处理程序32的操作和应用稳定性监视24的操作可在下面参考图3-7更详细地提供。
现在参考图3,描述一个说明性例程300,它例示用于在事件日志28中创建记录所执行的过程。当阅读在本文提供的例程的讨论时,应当意识到,将本发明的各种实施例的逻辑操作实现(1)为一系列计算机实现的在计算系统上运行的行为或程序模块和/或实现(2)为在计算系统内互连的机器逻辑电路或电路模块。实现是一个选择问题,取决于实现本发明的计算系统的性能要求。因此,图3-7中例示的并且构成本文所述的本发明的实施例的逻辑操作被不同地称为操作、结构设备、行为或模块。本领域熟练技术人员将认识到,这些操作、结构设备、行为和模块可用软件、固件、专用数字逻辑和它们的任何组合可在不脱离本文的权利要求书所述的本发明的精神和范围的情况下来实现。
例程300在操作302处开始,其中由事件服务26作出关于应用程序18之一是否已经启动的判定。如果还没有启动应用程序,则例程300返回到判定操作302,其中作出另一个判定。如果应用程序已经启动了,则例程300继续至操作306,其中将启动应用的时间存储在存储器。
从操作306,例程300继续至操作308,其中事件服务26判定应用程序是否是正常退出的,诸如响应于用户请求。如果应用程序正常退出,则例程300转移到操作310,其中在存储器内储存表示应用正常退出的数据。例程300随后继续至操作312,其中在会话期间执行应用的时间长度被记录在存储器中。例程300随后从操作312继续到操作304,其中在事件日志28中为当前应用会话创建一个新的条目(“一个会话条目”)。记录在存储中关于程序的执行的数据随后被存储在会话条目中。这些操作可在异常处理程序内执行。从操作304,例程300继续至操作320,并在该处结束。
如果在操作308处,事件服务26判定应用程序没有正常地终止它的执行,则例程300从操作308继续至操作314。在判定操作314处,作出关于应用程序是否已经挂起的判定。挂起的应用是看起来显得正在执行但不响应于用户输入的应用。应当意识到,关于一个程序是否已经挂起的判定可以由操作系统或由其它程序来作出。如果应用显得已经挂起,则例程300从操作314转移至操作316。如果应用还没有挂起,则例程300从操作314继续至判定操作322。在判定操作322处,作出关于应用程序是否崩溃的判定。程序崩溃指程序不能正确执行的故障,导致程序操作中止。如果在操作322处检测到崩溃,则例程300转移至操作316。如果没有检测到崩溃,则操作300继续至操作320,并在该处结束。应当意识到,在程序崩溃的情况下,操作系统可以强制一个崩溃的应用程序自动地关闭。在挂起程序的情况下,通知程序被挂起并重新启动程序取决于用户。
在操作316处,在适当时候将表示在崩溃或挂起中结束的会话的数据写到存储器中。例程300随后继续至操作318,其中将在崩溃或挂起之前执行应用的长度记录在存储器中。例程300随后从操作318继续至操作319,其中由操作系统处理异常。有关异常处理程序32的操作方面下面相对于图5提供。例程300随后继续操作至操作304,其中在事件日志28中创建一个新的条目用于当前应用会话。记录在存储器关于程序的执行的数据随后被存储在会话条目中。从操作319,例程300继续至操作320,并在该处结束。
现在参考图4,提供用于完成事件日志中会话条目的例程400的结节。按照本发明的实施例,例程400在客户机计算机2上在启动时执行,以完成事件日志28中还没有完成的会话条目。未完成的会话条目可以发生,例如,如果应用正在执行时将计算机2切断电源,如果一个崩溃导致操作系统16的崩溃,或者在不能将终止类型和会话长度写到事件日志28中的任何其它情况下。
例程400在操作402处开始,其中作出关于先前的会话条目是否完整的判定。如果会话条目是完整的,则不需要在会话条目上执行任何进一步的处理。因此,如果会话条目是完整的,则例程400从操作402转移到操作412并结束。如果会话条目不是完整的,则例程400继续至操作406,其中在会话条目中作出应用程序异常终止的指示。例程400随后继续至操作412并结束。
现在参考图5,描述关于异常处理程序32操作的其它细节。如上面简要地讨论的,在应用程序的异常终止之后调用异常处理程序32。应当意识到,异常处理程序32执行比图5所示的那些多得多的功能用于捕捉和处理异常。只有与应用稳定性监视24操作的讨论有关的异常处理程序执行的那些功能才在图5中示出并在本文讨论。
例程500在操作502处开始,其中作出关于在客户机计算机2处实现的政策或表示用户不要被汇报打扰的注册表条目是否阻止应用稳定性监视24的执行的判定。如果是,则例程500转移到操作512并结束。如果否,例程500继续至操作504,其中作出关于用户界面(“UI”)烦扰节制(pester throttle)是否阻止应用稳定性监视24执行。UI烦扰节制防止用户被与应用性能监视有关的UI太频繁地打扰。如果UI烦扰节制阻止应用稳定性监视24的执行,则例程500转移到操作512并结束。否则,例程500继续至操作506,其中作出关于审查烦扰节制(audit pester throttle)是否阻止应用稳定性监视24的执行。审查烦扰节制使应用稳定性监视24不要太频繁地执行并且不要影响客户机计算机2的性能。如果审查烦扰节制阻止了应用稳定性监视24的执行,则例程50转移到操作512并结束。否则例程500从操作506继续至操作508。关于UI烦扰节制和审查烦扰节制的操作的其它细节可以在共同待批的美国专利申请序列号10/305,215中找到,其标题为“Queued Mode Transmission ofEvent Reports(事件报告的队列化方式传输)”,并且通过引用将它明确地包括在本文中。
现在参考图6,提供有关应用稳定性监视24操作的其它细节。具体地说,描述执行应用稳定性监视24的例程600。例程600在操作602处开始,其中执行事件日志28的分析。分析事件日志28以将应用程序的稳定性分类到一个稳定性的状态之中。如上所述,按照本发明的一个实施例,可将稳定性分类为“好”,“差”和“很差”。下面相对于图7描述执行事件日志分析的说明性例程700。
从操作602,例程600继续至操作604,其中作出关于应用程序的稳定性是否被事件日志分析分类为“好”的判定。如果应用程序的稳定性是“好”,则例程600转移到操作606,其中作出关于应用稳定性监视24是否由用户人工地启动的判定。如果应用稳定性监视24不是人工启动的,则例程600转移到操作620并结束。如果应用稳定性监视24是人工启动的,则例程600从操作606继续至操作608。这允许用户与应用稳定性监视24交互,如果即使在程序的稳定性是“好”的情况下它们也人工地启动程序。
如果在操作604处,判定应用程序的稳定性由事件日志分析分类为“差”或“非常差”,则例程600从操作604继续至操作608。在操作608处,例程600基于如上面描述的诊断状态注册表关键字的当前值所定义的用户与应用稳定性监视的预检交互转移到任一操作610、612、614、616或616。如果诊断状态注册表关键字的值是“新的”,则例程600转移到操作610。这意味着用户先前没有使用过应用稳定性监视24。因此,可向用户呈现一个对话框用于执行诊断程序34。取决于诊断的结果,诊断状态注册表关键字的值可设置为“帮助”、“改变的”或“识别的”。
如果诊断状态注册表关键字的值是“诊断改变(diagnostics altered)”,则例程600从操作608转移至操作612。这表示先前执行了诊断并且在试图改进它的稳定性时对应用程序的配置作出了改变。在这点上,可将用户引向对产品的免费或减少费用的产品支持。取决于被选择的过程,诊断状态注册表关键字的值可设置为“帮助”,“改变的”或“识别的”。
如果诊断状态注册表关键字的值是“诊断外部(diagnosticsexternal)”,则例程600转移到操作614。这表示先前执行了诊断程序34并且检测到一个除应用程序以外的问题。在这种情况下,用户不被任何用户界面通知打扰。
如果诊断状态注册表关键字的值是“帮助”,则例程600转移到操作618。这表示已经向用户提供了减少费用或免费的产品支持的信息。可再次给用户这个信息。例如,可将用户引向可获得产品支持的产品支持网站。从操作610、612、614和618,例程600继续至操作620并结束。
现在转到图7,描述分析事件日志28的例程700。例程700在操作700处开始,其中作出关于要使用哪个版阈的判定。如上所述,要将阈值分配给一个相应于客户机计算机2上的应用程序的版本的版本数字的判定。这允许将不同的阈值分配给同一应用程序的不同版本。要使用的阈值版本是基于要对其执行分析的应用程序的版本确定的。
一旦已经识别了应用程序的版本数字,例程700就继续至操作704,其中作出关于阈值在该应用程序版本的远程控制文件36中是否存在。如果对于该版本不存在阈值,则例程700转移到操作722,其中返回“好”的阈值。然而,如果适当的阈值存在,则例程700继续至操作706。
在操作706处,确定在会话分析中应当使用的、在事件日志中条目的适当时间段。时间段可包括当前时间与对加以程序应用修理的最后时间之间的时间段。可供替换地,如果没有作出过修理,则时间段可包括当前时间与较佳时间窗口之间的时间段(例如30天)。如此,在分析中考虑的日志条目总体是有限的。
从操作706,例程700继续至操作708,其中作出关于在统计上有效的最少数量的会话在事件日志28中对于所计算的时间段是否存在的判定。如果必要的最少数量会话不存在,则例程700转移到操作722,其中返回“好”的阈值。如果必要的最少数量会话存在,则例程700从操作708继续至操作710。
在操作710处,基于事件日志28的内容生成多个统计信息,用于时间段和用于描述应用程序的稳定性的特定应用程序。例如,可基于程序执行每若干次数中的异常终止次数生成统计信息。可生成的另一个统计信息基于程序执行每若干分钟中的异常终止次数。表示应用程序的稳定性的其它类型统计信息也可基于在时间段内的事件日志28的内容生成。应当意识到,可为单独的应用生成某些统计信息,并且可为应用分组诸如应用集生成其它统计信息。
一旦生成了统计信息,就将统计信息与包含在远程控制文件36中的阈值比较。基于比较,应用程序的稳定性可被分类为“好”、“差”或“非常差”。一旦应用程序的稳定性被分类,例程700就继续至操作712,其中作出关于程序的稳定性是否已被分类成非常差的判定。如果稳定性还没有被分类为非常差,则例程700转移到操作714,其中作出关于稳定性是否已被分类为差的判定。如果稳定性已被分类为差,则例程700继续操作700,其中返回“差”阈值。如果稳定性已被分类为“差”,则例程转移到操作722,其中返回“好”。
如果在操作712处,确定阈值已经被分类为“非常差”,则例程700继续至操作716。在操作716,作出关于阈值是否已经期满的判定。如上面简要地讨论的,阈值可包括截止期。如果阈值已经期满了,则例程700转移到操作720,其中返回“差”。否则例程700继续至操作718,其中返回“非常差”。
基于上述内容,应当意识到,本发明的各种实施例包括一种方法、系统、设备和计算机可读介质,用于基于执行不稳定性的等级为计算机程序提供自定义产品支持。上面的描述、例子和数据提供制造的完整描述和本发明的合成的使用。由于可以在不脱离本发明的精神和范围的情况下作出本发明的许多实施例,因此本发明驻留在本文所附的权利要求书中。