在软件应用程序中进行错误报告的系统和方法

文档序号:6614579阅读:229来源:国知局
专利名称:在软件应用程序中进行错误报告的系统和方法
技术领域
本发明涉及一种在软件应用程序中进行错误报告的系统和方法。
背景技术
错误报告是面向终端用户的软件应用程序中的常见的子系统。例
如操作系统Windows具有支持其自身和在其上运行的应用程序的错 误报告系统。当发生错误、例如冲突事件时,应用程序将弹出一个对 话框,以提示用户是否将错误报告发送给软件制造商。制造商所收集 的错误报告在软件客户服务和产品改进方面是很重要的,尤其是当错 误报告能够再现用户情景下的固定缺陷时其价值是很高的。
图1示出了 MS Word中发生问题时所显示的一个错误报告对话 框,其中可以由用户选择是否发送错误报告。
错误报告从用户系统发送到远端站点,以帮助制造商再现该错误 并更新他们的产品。这些错误报告通常包括
-在软件或硬件的何处出现问题。有时可包括空文件(empty file),作为对发生问题的初始指示;
-如果知道的话,还包括问题的类型或严重程度; -有助于描述该问题的文件(通常是关于问题发生之前或之后 的软件行为的系统文件或报告生成文件);
-基本软件和硬件信息(如操作系统版本和语言、设备单元及 制造商、或者内存及硬盘大小);
-应用程序的内存转储(Memory Dump)。 正如已经知道的,内存转储对于开发者找出问题是非常有帮助 的。但是另一方面,全部内存转储很可能在其中包含用户敏感信息。 如来自Office应用程序的内存转储可能生成包含文档内容的信息,从而在错误报告系统中不能对机密数据进行保护。目前的错误报告解决 方案中用户隐私泄漏的可能性使得用户不愿意冒泄漏敏感信息的风 险,因而更倾向于不发送错误报告。从用户和技术人员那里已经得到
许多关于错误报告中的信息泄漏的反馈,如"Office XP调试特性可能 会把敏感文档发给微软"、"最好不要向微软报告错误"等等。这种解 决方案已经对软件服务造成了负面的影响。

发明内容
本发明的目的是提供一种用于在错误报告中从用户环境收集有 用信息以帮助改善客户服务、同时能够在某种程度上保护用户隐私的 系统和方法。
本发明的上述目的通过一种在软件应用程序中使用的错误报告 系统来实现。该错误报告系统包括伪文档生成单元和伪文档报告单 元,其中所述伪文档生成单元用于由原始文档生成伪文档,在所述伪 文档中保留原始文档的框架信息,并包含伪数据作为内容,所述伪文 档报告单元将所生成的伪文档作为错误报告的全部或一部分发送。
根据本发明,所述伪文档生成单元主要包括
文档解析器,被配置为把原始文档解析成一种反映了该文档的框
架信息和内容在内存中的结构描述的内部格式;以及
文档内容替换器,被配置为在所述内部格式下根据文档对象类型 采用不同策略生成没有语义联系的伪数据,并用所生成的伪数据来替 换文档内容,然后将替换后得到的伪文档从内部格式还原成支持文档 存储和显示的格式。
当所述文档内容替换器需要扩展处理能力时,例如当需要替换的 内容包含很长的字符串时,可以在伪文档生成单元中提供一个附加的 伪数据生成器,被配置为应文档内容替换器的请求生成伪数据,并将 所生成的伪数据返回给文档内容替换器进行内容替换。
根据本发明的一种实施方式,当需要构造复杂的伪数据(如图片
对象或OLE对象)时,还可以提供一个保存有伪数据素材的伪数据仓库。典型地,在伪数据仓库中可以保存有不同的OLE对象、不同 大小的图片等。当需要时,由所述伪数据生成器从该伪数据仓库中取 得符合所需伪数据生成策略的伪数据,将其返回给文档内容替换器以 进行替换。
根据本发明的所述错误报告系统既可以由用户通过一个启动用 户接口单元主动启动,也可以当检测到软件应用程序出错时由软件应 用程序自动启动。
另外,本发明的任务还通过一种用于在软件应用程序中实现错误 报告的方法来解决。该错误报告方法包括以下步骤
把原始文档从原先的描述格式解析成一种反映了该文档的框架 信息和内容在内存中的结构描述的内部格式;
在所述内部格式下检查文档对象的类型,并根据文档对象类型确 定不同的伪数据生成策略,
根据所确定的伪数据生成策略生成伪数据; 用所生成的伪数据来替换文档内容,同时保留原始文档的框架信
息;
将替换后得到的伪文档从内部格式还原成原来的描述格式;并且 将所生成的伪文档作为错误报告的全部或一部分发送。 通常可认为文档由两种类型的素材构成,即文档框架(document skeleton)和文档内容(document content)。其中文档框架描述了一 个文档的结构,而文档内容往往包含了比较敏感的语义信息。当需要 再现错误时,文档框架的描述是最为重要的,而在大多数情况下文档 内容可以被替换掉。
例如在"Bob earns 5000 dollars per month,,这个句子中,它的内 容是名字叫Bob的这个人的月收入是5000美元,其内容的载体是一 个带有28个字符和4个数字的字符串。对于一个文档编辑软件应用 程序而言,"Bob earns 5000 dollars per month,,这个字符串等同于一 个在存储、表现形式和格式方面显现出相同属性的随机生成的字符 串,例如"Odh htels 8263 tiahtloa elw oihgfo"。用户可能会把"Bobearns 5000 dollars per month"这句话视为机密信息,但对于"Odh htels 8263 tiahtloa elw oihgfo"这个字符串来说不会有同样的感觉,因 为它对阅读者而言没有表现出任何语义。因此,可以用上述的第二个 字符串来代替第一个包含语义的字符串,其中所述第二个字符串具有 "伪(dummy),,内容,即尽管保留了原有的框架结构,但其内容对于 阅读者来说是无意义的。
根据技术人员的开发经验和对引起错误的基本原因的统计,需要 通过样本文档来再现的错误中有超过一半的错误可以用一个具有和 原始文档一样的文档框架但仅具有"伪"内容的替代文档来再现。因 此,在错误报告中具有相同文档框架的伪文档同样有助于客户服务, 同时在某种程度上保护了用户隐私。
在本发明中,将替换了包含语义的原始内容、并具有和原始文档 基本一样的文档框架的这类文档定义为"伪文档"。从技术的角度来 看,伪文档是对于具有基本相同的文档框架的原始文档的第二个实 例。当发生错误或者由用户调用时,可以在原始文档的基础上自动生 成一个伪文档,并通过错误报告子系统发送这个伪文档,从而保护用 户隐私。


图l示出了 MS Word应用程序中发生问题时所显示的错误报告 对话框。
图2示出了根据本发明的错误报告系统的结构框图。
图3示出了根据本发明的生成伪文档的错误报告系统的启动用 户接口的一个例子。
图4示出了为用户提供观看和/或发送该伪文档的选项的发送选 择用户接口的一个例子。
图5示出了根据本发明的通过伪文档来发送错误报告的流程图。在本发明中,将文档信息分成两类,即文档内容和文档框架。文 档内容是指有语义联系的实质信息,其形式为字符串、数字、图片、
OLE对象、绘图对象中的文本等。文档框架是指文档结构信息,包括 字体、属性、布局、表结构、图表属性、图片元数据、OLE元数据、 分段、对象的位置信息、电子数据表单元格式、文档中的引用等。此 外,文档设置也可被视为文档框架,如显示设置、改变跟踪设置、视 图设置、拼写检查设置等。
在图2中示出了根据本发明的错误报告系统的结构框图。图中的 原始文档l表示源文档数据模型,它可以是硬盘中的一个文件,也可 以是内存中的一个数据结构,其格式可以是ODF格式、MS Office XML格式、MS Office Bin格式等各种支持文档存储和显示的格式。 这个原始文档1包含了源文档的所有信息,包括该文档的元数据(作 者、编辑日期等)、文档框架(分段、字体和属性、数据关系等)以
及文档设置(字符集设置、文档显示设置、改变跟踪配置等)等。
伪文档生成单元2从原始文档1取得必要的数据信息,并利用该 信息生成一个伪文档。伪文档生成单元2大体上包括以下部分
文档解析器21,其用于把保存在存储介质中的原始文档解析成 一种内部格式,这种内部格式反映了该文档的框架信息和内容在内存 中的描述。例如,所述内部格式可以是基于XML的格式、基于bin 的格式、目标文档格式、DOM树或某种类型的内存数据结构。文档 解析器21可以看作是一种语义分析器,它是由软件制造商(诸如美 国的微软公司)所提供的标准工具,是本领域技术人员所公知的。
文档内容替换器22,其用于在所述内部格式下用无语义联系的 伪数据来替换文档内容,同时使文档框架尽可能保持不变,然后将替 换后得到的伪文档从内部格式还原成支持文档存储和显示的格式,从 而生成一个伪文档。这里针对不同的对象类型可以有不同的伪数据生 成策略,例如对于字符串对象,可以随机生成一个字符串作为伪数据 来替换。作为伪数据的字符串最好与原字符串对象属于相同的字符 集,它们最好还具有相同的长度.伪文档生成单元2将文档内容替换器22所生成的伪文档提供给 一个伪文档报告单元3,伪文档报告单元3将伪文档作为错误报告的 全部或一部分,经由错误报告通道发送给软件制造商。这个伪文档报 告单元3可以作为一个独立的功能单元,也可以作为子系统被集成在 整个错误报告系统中。
可选地,根据本发明的伪文档的生成功能可以通过以下两种方式 来启动。在第一种方式中,由用户主动调用伪文档生成功能,例如当 文档被加载时在文档中发布执行命令。在第二种方式中,当检测到应 用程序出错时,由应用程序自动调用伪文档生成功能。因此,最好在 错误报告系统中设置一个用来向用户提供启动伪文档生成功能选项 的启动用户接口4。这种用户接口的例子在图3中示出。
当生成一个伪文档后,根据本发明的错误报告系统可通过另外一 个发送选择用户接口 5为用户提供观看和/或发送该伪文档的选项。这 种发送选择用户接口 5的例子在图4中示出,其中可以由用户选择发 送整个错误报告、仅发送包含文档框架的伪文档、还是根本不发送错 误报告。
例如当需要替换的内容包含很长的字符串时,或者要构造诸如图 片对象或OLE对象这样的复杂伪数据时,伪文档生成单元2中还可 包括一个伪数据生成器23,作为文档内容替换器22的功能扩展,承 担伪数据生成功能,并将所生成的伪数据返回给文档内容替换器22 进行替换。
在所要替换的内容包含图片对象或OLE对象的情况下,在伪文 档生成单元2中还提供了一个用于保存伪数据素材的伪数据仓库24。 在伪数据仓库24中可以保存有不同的OLE对象、不同大小的图片等。 当需要替换这类内容时,由伪数据生成器23从该伪数据仓库24中取 得符合相应要求的伪数据素材,将其作为伪数据返回给文档内容替换 器22。
图5中的流程图示出了根据本发明的通过伪文档来发送错误报 告的步骤。当接收到一个通过引用源文档来启动伪文档生成的消息时(这类 消息既可以由用户调用,也可以由应用程序在检测到错误时自动调
用),在步骤Sl开始对原始文档进行解析,把原始文档解析成一种
反映该文档的框架信息和内容在内存中的描述的内部格式。在这里以
ODF格式的文档为例,使用了 SAX (—种标准XSL解析器)作为文 档解析器。当然,采用其它已知解析器也是完全可以的。
当解析过程完成后,在步骤S2,在所得到的内部格式下对文档 对象的类型进行检查,获知对象的内容和属性,从而确定内容数据的 替换策略。然后,在步骤S3根据所确定的替换策略生成相应的伪数 据。在步骤S4用该伪数据替换原始文档对象的内容部分,同时尽可 能保留原始文档对象的框架信息。之后,在步骤S5将替换后的文档 对象从内部格式还原成支持文档存储和显示的格式。最后,在步骤S6 将所得到的伪文档作为错误报告的一部分或全部发送给软件制造商。
这里仍然以一个短文档为例,它包含一句话"Bob earns 5000 dollars per month",以及Bob本人的图片格式的照片。文档解析器 21读取"Bob earns 5000 dollars ■ month,,这句话,其中"Bob,,用加 黑字体来表示,"5卯0,,用斜体来表示,"per"为粉红色并加有下划线。 其XML标记段如下
<text:p text:style-name=,,P2">
<text:span text:style-name=,,T3">Bob</text:span> earns<text:span text:style-name=,,T4,,>5000</text:span> dollars<text:span text:style-name-〈T5〉per〈/text:span〉 month
</text:p>
<draw:frame draw:style-name="frl,, draw:name=,,graphicsl,,
text:anchor-type=,,paragraph,, svg:width=,,4.897cm,, svg:height=,,4.925cm,, draw:z-index=,,0,,>
<draw:image xlink:href="Pictures/20000008000013210000133D250E5514.wmP,xlink:type="simple,, xlink:show-,,embed,, xlink:actuate=,,onLoad,,/> </draw:frame>
首先,文档解析器21得到"Bob",检查到它的对象类型为"text", 具有缺省字体和缺省大小以及加粗属性。然后,文档内容替换器22 根据预定的伪数据生成策略随机生成一个具有英文字符集中的三个 字符的字符串,例如"odh,,,并用"odh"来替换"Bob",而原先的所 有属性都被保留。这样,在所得到的伪文档中"Bob"将变为"odh"。此 后继续对XML文档中的文档对象进行解析,检查对象类型并重复类 似的过程,直至遇到XML标签为"draw,,的新的对象类型。此时,文 档内容替换器22例如向附加的伪数据生成器23发出一个生成图片的 请求,该图片的svg尺寸为"4.897cm * 4.925cm",其物理尺寸为380K。 由附加的伪数据生成器23从伪数据仓库24取得一个符合要求的样本 伪数据(例如具有相同svg尺寸和物理尺寸的图片),并将其提供给 文档内容替换器22,以替换Bob本人的照片。
这里仅仅是给出了一个样本的例子,其中示出了伪文档生成单元 2是如何工作的。当然,用来替换文本内容的随机字符串既可以通过 文档内容替换器22自身生成,也可以由附加的伪数据生成器23生成。 另外,也可以由文档内容替换器22或伪文档生成器23生成一个具有 相同svg尺寸和物理尺寸的空白图片或黑图片来替换原有图片,而不 必从伪数据仓库24获取素材。
在比较简单的情况下,伪数据的生成也可以不通过上述伪数据生 成器23和伪数据仓库24来实现。例如,当文档内容替换器22遇到 一个文档中的字符串对象时,它也可以直接在一段固定的字符串中截 取相同长度的字符串作为伪数据。在上面的例子中,当文档内容替换 器22发现"Bob"是一个长度为三个字符的字符串时,它也可以直接用 "aaa"来替换"Bob"。类似地,如果文档中出现了 "中国,,这两个中文字 符,文档内容替换器22可以简单地忽略文字字符集信息,而直接用 英文字符"aaaa"来替换"中国"。
下面给出了当文档内容替换器22遇到不同类型的文档对象时的一些优选的内容替换策略
当原始文档对象是字符串或超链接时,在伪文档中该对象的内容 最好被替换为相同字符集中具有相同长度的随机生成的字符串,其中 甚至"单词,,的数目最好也是相同的。
当原始文档对象是由该应用程序本身合成的本族对象(如用于文 档编辑器、文本框、图、表等的绘图对象)时,保留原始对象的结构、 属性、位置信息、以及(如果有多个对象的话)多个对象间的关系, 并根据字符串对象的规则来替换文本内容(如果有的话)。
当原始文档对象是由其它应用程序合成的内嵌对象,如OLE对 象、图片等时,如上面的例子所示,可以从伪数据仓库获取最为接近 原始对象的样本对象,用该样本对象来替换原始对象,并保持替换后 的对象具有和原始对象尽可能相同的属性(相同的显示大小,相同的 显示属性等)。
但在某些情况下,数据仓库中的样本对象和原始对象可能是完全 不同的,对这种对象生成替换内容是比较困难的。因此另外一种方式 是由文档内容替换器22简单地从伪文档中移除这些对象,并在原来 的对应位置上插入一个占位符(placeholder),用来保留该对象的元 数据记录。这里所述的占位符可以是一个图片,也可以是其它的文档 对象,甚至可以仅仅是一段描述性文字。但所述占位符必须包含对于 被移除的对象的元数据信息的描述,如被移除的对象的类型、大小等 信息。在这种解决方案中,错误报告服务器一侧应当能够根据附加到 占位符上的元数据信息对作为替代的伪数据进行处理。
当原始文档对象是表格时,在伪文档中保留原来的表结构和属 性,并根据单元格中的内容类型按照上述策略进行替换。
本领域技术人员可以理解,只要保留了原始文档的基本结构,并 使伪文档中包含的内容对于观看者来说没有语义上的联系,就可以在 保护用户隐私的同时实现正常的错误报告。因此,本领域技术人员可 以在上述优选实施方式的基础上做出各种变化和改进,仅仅是在再现 错误的能力上可能存在差异。
权利要求
1. 一种在软件应用程序中使用的错误报告系统,该系统包括伪文档生成单元(2)和伪文档报告单元(3),其中所述伪文档生成单元(2)用于由原始文档(1)生成伪文档,在所述伪文档中保留原始文档(1)的框架信息,并包含伪数据作为内容,所述伪文档报告单元(3)用于通过一个将所生成的伪文档作为错误报告的全部或一部分发送。
2. 如权利要求l所述的错误报告系统,其特征在于,所述伪文 档生成单元(2)包括文档解析器(21),被配置为把原始文档(1)解析成一种反映 了该文档的框架信息和内容在内存中的结构描述的内部格式;以及文档内容替换器(22),被配置为在所述内部格式下根据文档对 象类型釆用不同策略生成没有语义联系的伪数据,并用所生成的伪数 据来替换文档内容,然后将替换后得到的伪文档从内部格式还原成支 持文档存储和显示的格式。
3. 如权利要求2所述的错误报告系统,其特征在于,所述伪文 档生成单元(2)还包括一个附加的伪数据生成器(23),被配置为 应所述文档内容替换器(22)的请求生成所述伪数据,并将所生成的 伪数据返回给文档内容替换器(22)以进行内容替换。
4. 如权利要求3所述的错误报告系统,其特征在于,所述伪文 档生成单元(2)还包括一个保存有各种伪数据素材的伪数据仓库(24),所述伪数据生成器(23)从该伪数据仓库(24)中取得所需 的伪数据,返回给文档内容替换器(22)以进行内容替换。
5. 如权利要求1至4中任一项所述的错误报告系统,其特征在 于,当原始文档对象是字符串或超链接时,用随机生成的字符串来替 换原始文档的内容。
6. 如权利要求1至4中任一项所述的错误报告系统,其特征在 于,当原始文档对象是字符串或超链接时,用与原始文档对象相同的字符集中的字符所组成的字符串和/或用与相同原始文档对象具有长 度的字符串来替换原始文档的内容。
7. 如权利要求4所述的错误报告系统,其特征在于,当要替换 的原始文档对象是图片和/或OLE对象时,伪数据生成器(23)从伪 数据仓库(24)中取得与原始文档对象最接近的对象,作为伪数据返回 给文档内容替换器(22)以进行内容替换。
8. 如权利要求2的错误报告系统,其特征在于,所述文档内容 替换器(22)从伪文档中删除这些内容数据,并在原来的对应位置上 插入一个保留了原始文档对象的元数据记录的占位符,。
9. 如权利要求1所述的错误报告系统,其特征在于,该错误报 告系统由用户通过一个启动用户接口 (5)主动启动,或者当检测到 软件应用程序出错时由软件应用程序自动启动。
10. 如权利要求1所述的错误报告系统,其特征在于,该系统 还包括一个供用户观看和/或选择是否发送错误报告的发送选择用户 接口 (5)。
11. 如权利要求1或2所述的错误报告系统,其特征在于,所 述伪文档报告单元(3)是一个独立的外部单元或者被集成在所述错 误报告系统中。
12. —种用于在软件应用程序中实现错误报告的方法,该方法 包括以下步骤把原始文档从原先的描述格式解析成一种反映了该文档的框架 信息和内容在内存中的结构描述的内部格式(Sl);在所述内部格式下检查文档对象的类型,并根据文档对象类型确 定不同的伪数据生成策略(S2),根据所确定的伪数据生成策略生成伪数据(S3);用所生成的伪数据来替换文档内容,同时保留原始文档的框架信 息(S4 );将替换后得到的伪文档从内部格式还原成支持文档存储和描述 的格式(S5);并且将所生成的伪文档作为错误报告的全部或一部分发送(S6)。
13. 如权利要求12所述的方法,其特征在于,从一个保存有 各种伪数据素材的伪数据仓库中取得所需的伪数据,用来替换原始文 档的内容。
14. 如权利要求13所述的方法,其特征在于,当所述原始文 档对象是图片和/或OLE对象时,从所述伪数据仓库中取得与原始文 档对象最接近的对象作为伪数据来替换原始文档的内容。
15. 如权利要求12所述的方法,其特征在于,当替换文档内 容时,从伪文档中直接移除这些对象,并在原来的对应位置上插入一 个保留了原始文档对象的元数据记录的占位符。
16. 如权利要求12或13所述的方法,其特征在于,当原始文 档对象是字符串或超链接时,用随机生成的字符串来替换原始文档的 内容。
17. 如权利要求12或13所述的错误报告系统,其特征在于, 当原始文档对象是字符串或超链接时,用与原始文档对象相同的字符集中的字符所组成的字符串和/或用与相同原始文档对象具有长度的 字符串来替换原始文档的内容。
18. 如权利要求12所述的方法,其特征在于,由用户主动调 用伪文档生成步骤,或者当检测到软件应用程序出错时由软件应用程 序自动调用伪文档生成步骤。
全文摘要
本发明涉及一种用于在软件应用程序中进行错误报告的系统和方法,其中用伪数据来替换原始文档的内容,同时保留原始文档的框架信息,从而生成伪文档,然后将所采集的伪文档作为错误报告的全部或一部分发送。本发明有助于改善客户服务,同时在某种程度上保护了用户隐私。
文档编号G06F11/07GK101452408SQ200710192869
公开日2009年6月10日 申请日期2007年11月28日 优先权日2007年11月28日
发明者岳治宇, 俐 张, 王守慧, 芮苏英 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1