一种提高程序运行信息可理解性的实现方法及系统的制作方法

文档序号:6446203阅读:183来源:国知局
专利名称:一种提高程序运行信息可理解性的实现方法及系统的制作方法
技术领域
本发明涉及计算机及通信的信息处理技术,尤其涉及提高程序运行信息可理解性的实现方法及系统。
背景技术
在软件运行过程中,为了调试、跟踪、测试、了解系统运行状态和定位故障等目的,常常需要输出大量的运行信息。例如打印信息、调试信息、日志信息、跟踪信息和告警信息等。软件使用者、维护人员等需要依靠这些运行信息来了解软件运行状态,并完成相关的活动。例如定位软件缺陷(bug),调优软件性能,分析软件运行情况等。因此,输出信息的可理解性对于软件相关人员的工作效率和效果有着较大的影响。
在现有软件中,各种运行信息中往往存在大量的数值型信息,例如“Thetype of the car is 1.”(1表示这辆汽车是奔驰牌的)。这些数值型信息的可理解性相对来说,是较低的。阅读者只有通过以下方法才能理解其含义(1)记住各种输出信息中的数字表示什么含义;(2)查询用户手册、帮助手册或者软件源代码等;要记住大量数值型信息是非常困难的,一般人只能记住常见的、或者是取值稳定的数字;而查询手册或者源代码又比较耗时,并且手册也不能保证总在身边,其携带也不一定方便。
目前,为了提高运行信息的可理解性,往往在软件输出数值型信息前,或者在显示输出信息前,将数值型信息转换成文字信息。在输出前转换的转换过程如下步骤1、软件运行过程中,得出汽车类型为1;步骤2、查询汽车类型信息,得知1表示“奔驰牌汽车”;
步骤3、输出运行信息“The type of the car is BENZ.”。
而显示前的转换,往往需要一个阅读工具软件来实现(该软件和输出信息的软件不是同一个),其过程如下步骤1、得到运行软件的输出信息为“The type of the car is 1.”;步骤2、查询事先配置好的汽车类型信息,得知1表示“奔驰牌汽车”;步骤3、将输出信息显示为“The type of the car is BENZ.”。
上述两种实现方式都存在一定的缺陷1、输出前转换,往往是由需要输出信息的软件完成的。其中,步骤2的处理占用了软件处理的时间性能,步骤3将数值型信息转换为文字信息之后,对软件通讯带宽的占用大大增加,占用了软件处理的空间性能。因此,输出前转换会降低软件的整体性能,而且需要额外的编码实现各种数值型信息的查询。
2、对于显示前转换,由于阅读运行信息是在另外一个软件上,因此不影响原软件的性能。但是需要开发人员编写查询代码,和人工编写数值型信息与文字信息的对应关系(一般以对应表的形式存在)。这样的编码量往往是相当大的对于一个百万行级数的源代码,数值型信息与文字信息的对应关系的条目往往达到数千、数万条,靠人工方式编写,需要付出极大的工作量。而且,如果数值的取值不稳定,那么每个版本都要更新这种对应关系,人工维护的工作量特别大。因此,一般软件往往只是对部分关键的数值型信息提供转换功能(例如,将错误原因ErrID转换为错误消息ErrMsg),而对于其他大量的数值型信息,是不转换的,以节省开发人力。

发明内容
本发明提供一种提高程序运行信息可理解性的实现方法及系统,以解决现有技术在提高运行信息的可理解性存在工作量大和升级维护困难的问题。
一种提高程序运行信息可理解性的实现方法,用于将程序运行过程中输出的数值型信息解码为该数值型信息所表示的文字信息;该方法包括如下步骤A、在源程序中标记所有对数值型信息进行解释的文字信息,和在输出数值型信息的语句中指定需要解释该数值型信息的文字信息;B、扫描所述源程序,根据所述标记建立数值型信息与其表示的文字信息之间的对应关系;C、接收程序运行过程中输出的运行信息,并从该运行信息中获取所述数值型信息;D、利用获取的数值型信息查询所述对应关系得到对应的文字信息,将该文字信息代替所述运行信息中的数值型信息并最终输出信息。
步骤A中,通过在输出数值型信息的语句中设置一个唯一标识来指定解释该数值型信息的文字信息。
步骤C中,步骤C中,将数值型信息作为数值型数据直接输出,通过从运行信息中提取该数值型数据来获取所述数值型信息;或者,将数值型信息作为文本方式输出,将输出的运行信息与代码中的原始信息比较来提取数值型信息。
在利用数值型信息查询不到对应的文字信息时,在最终端输出信息中提示输出错误。
一种提高程序运行信息可理解性的系统,至少包括用于信息处理的处理器;该系统还包括存储装置,用于存储程序运行需要输出的数值型信息与该数值型信息表示的文字之间的对应关系;扫描装置,用于扫描源程序,根据源程序设置的标记在所述存储装置中建立数值型信息与其表示的文字信息之间的对应关系;转换装置,用于从程序运行输出的运行信息中获取数值型信息,从所存储装置中查询到对应的文字信息并替换所述运行信息中的数值型信息;输出装置,用于输出转换装置处理后的运行信息。
本发明具有以下有益效果1、在不影响软件的运行性能的情况下增强信息可理解性,即使数值型信息的取值不稳定(如2个版本中取值不同),也不影响阅读者的理解。
2、利用工具自动完成数值型信息的转换,减少人工开发工作量。
3、信息阅读者无需记忆数值型信息的含义。
4、可以检查数值型信息的正确性、有效性,是否超出预定义的取值范围。


图1为本发明的系统结构示意图;图2为本发明的流程图。
具体实施例方式
本发明为了提高输出的程序运行信息的可理解性和减少工作量,在源程序中标记出所有对数值型信息进行解释的文字信息,通过扫描源程序来自动生成数值型信息和文字信息之间的对应关系,在输出程序运行信息时,查询对应关系来将数值型信息解码成文字信息。
参阅图1所示,本发明的系统包括存储装置、扫描装置、转换装置和输出装置。对于构成计算机装置的其他必要的部件,如用于信息处理的处理器等虽未在图中示出,但本领域的普通技术员应当知悉该系统包含了这些部件。
存储装置,用于存储数据。
扫描装置,用于扫描源程序,根据源程序设置的标记建立数值型信息与其表示的文字信息之间的对应关系,并保存在所述存储装置中。该对应关系独立于源程序。
转换装置,用于从程序运行时输出的运行信息中获取数值型信息,从所存储装置中查询到对应的文字信息并替换所述运行信息中的数值型信息。
输出装置,用于输出转换装置处理后的运行信息。该输出装置可是显示器和/或打印机。
以下以实际的代码为例来说明如何在程序中增加注释标记以及这些注释标记的作用。假设软件中有如下代码enum CarType{
TOYOTA,//丰田牌汽车,取值为0BENZ,//奔驰牌汽车,取值为1BMW,//宝马牌汽车,取值为2HONDA,//本田牌汽车,取值为3BUTT//定义结束}TRACE(“The type ofthe car is%d.”,cartype);//假设当前cartype取值为1由于计算机的特性是处理数值型信息比处理文字信息更加快速、有效。因此,在程序运算时处理的都不是文字信息,而是数值型信息。如上面的代码中,都是用“cartype=1”表示“车类型为奔驰牌汽车”的。
在输出TRACE语句时,实际上输出的是数值型信息。它在显示时被格式化为字符串“The type of the car is 1.”。如果不知道“1”到底表示什么含义,就必须查询源代码或者手册来获知其表示“奔驰牌汽车”。因此,不记得每种汽车品牌的代码,或者手头没有源代码或查询手册,将会难于理解输出信息到底表示什么含义,而这种情况又是相当普遍的。
实际上,软件产品的源代码中已经定义了大量的数值型信息对应的文字信息,只是没有有效的利用起来。在程序中定义枚举类型CarType时,给出了每一个枚举值的名称和含义,它们的可读性是非常好的,也易于理解;只是在输出时,使用的是枚举值的取值(它是一个数值型信息),导致输出信息的可理解性较差。
以上述例子为例,在源程序中增加注释标记如下1、定义一种文字信息类型,如下面的CARTYPEenum CarType{//tmlinfo start CARTYPETOYOTA,//丰田牌汽车,取值为0
BENZ,//奔驰牌汽车,取值为1BMW, //宝马牌汽车,取值为2HONDA, //本田牌汽车,取值为3BUTT //定义结束//tml info end}2、定义一个数值信息应该采用哪个文字信息类型进行解释//tml info use CARTYPETRACE(uniqueID,“The type of the car is%d.”,cartype);其中(1)uniqueID表示唯一标识,通过它可以知道每一条输出信息中的数值型信息,应该用什么文字信息来解释。uniqueID的取值必须保证唯一性(即每一个TRACE调用都使用一个不同的值)。该参数的实现方法有很多种,例如使用文件名、行号来确定uniqueID的取值等,这里不再赘述。例如,上面的TRACE调用中,uniqueID等于100,它对应的数值型信息需要使用CARTYPE类型的文字信息来解释。
(2)//tml info start CARTYPE和//tml info end表示这一段为文字信息CARTYPE内的所有可能取值和每一种取值的名称、含义。
(3)//tml info use CARTYPE表示紧接其后的输出语句中有1个参数,该参数对应的文字信息类型为CARTYPE。
使用//tml info use注释时,可以将“RAW”作为保留字,表示该数值型信息无需解析成文字信息。例如对于输出信息为电话号码的情况下,就无需将其转化为文字信息,举例如下//tml info use RAW CARTYPETRACE(uniqueID,“Car SerialNo%d,Car Type%d.”,sn,cartype);第一个变量sn表示汽车的流水号,无需翻译成文字信息。
扫描装置一般和编译环境整合在一起。它在扫描源代码之后,记录如下信息
文字信息CARTYPE的记录

转换装置(或称阅读工具),通过查询uniqueID得知该数值型信息的文字信息为CARTYPE。然后通过查询文字信息CARTYPE的所有记录,得知取值为1表示的名称为BENZ,解释为“奔驰牌汽车”,即可最终输出如下信息“The typeof the car is BENZ.”另外,转换装置还可以检查数值型信息的正确性,例如,源代码中只定义了4种牌子的汽车,但是输出信息却是“The type of the car is 6.”。可以看出,6并不是一个有效的枚举值,说明软件在某处处理时肯定有错误,导致最终输出有误。此时可以将输出信息“The type of the car is 6.”显示为“The type of the caris Undefined(6).”参阅图2所示,本发明的具体流程如下步骤1、采用标记语言,在源程序中标记出所有需要进行解释的数值型信息的文字信息,同时在输出数值型信息语句中标记该数值应该使用哪一个文字信息进行解释。
步骤2、扫描源程序,获得所有标记出来的“数值信息-文字信息”对应关系,并获得针对每一个输出语句的每个数值,应该用哪个文字信息解释。
步骤3、在所述源程序的可执行程序运行时,接收输出的程序运行信息并从该运行信息中获取所述数值型信息。
步骤4、利用获取的数值型信息查询所述对应关系得到对应的文字信息。
步骤5、将文字信息代替所述运行信息中的数值型信息并最终输出信息。
步骤3中,将数值型信息作为数值型数据直接输出,通过从运行信息中提取该数值型数据来获取所述数值型信息;或者,将数值型信息作为文本方式输出,将输出的运行信息与代码中的原始信息比较来提取数值型信息。
从上可知,本发明在不影响软件性能的情况下,只需增加较少的额外编程工作量(在写代码的同时,增加注释标记,工作量增加微乎其微),即增加的编码量只是在源代码中增加一些注释标记语言,就能实现将数值型信息显示为能清晰表达其含义的文字信息,从而增强程序运行信息的可理解性。本发明克服了现有方法的缺点和局限性,使得软件输出信息的可理解性大大增强,而采用该技术所投入的工作量却相对大大减少。
权利要求
1.一种提高程序运行信息可理解性的实现方法,用于将程序运行过程中输出的数值型信息解码为该数值型信息所表示的文字信息;其特征在于包括如下步骤A、在源程序中标记所有对数值型信息进行解释的文字信息,和在输出数值型信息的语句中指定需要解释该数值型信息的文字信息;B、扫描所述源程序,根据所述标记建立数值型信息与其表示的文字信息之间的对应关系;C、接收程序运行过程中输出的运行信息,并从该运行信息中获取所述数值型信息;D、利用获取的数值型信息查询所述对应关系得到对应的文字信息,将该文字信息代替所述运行信息中的数值型信息并最终输出信息。
2.如权利要求1所述的方法,其特征在于,步骤A中,通过在输出数值型信息的语句中设置一个唯一标识来指定解释该数值型信息的文字信息。
3.如权利要求1所述的方法,其特征在于,步骤C中,将数值型信息作为数值型数据直接输出,通过从运行信息中提取该数值型数据来获取所述数值型信息;或者,将数值型信息作为文本方式输出,将输出的运行信息与代码中的原始信息比较来提取数值型信息。
4.如权利要求1、2或3所述的方法,其特征在于,在利用数值型信息在指定的对应关系中查询不到对应的文字信息时,在最终端输出信息中提示输出错误。
5.如权利要求4所述的方法,其特征在于,最终输出信息是指显示和/或打印信息。
6.一种提高程序运行信息可理解性的系统,至少包括用于信息处理的处理器;其特征在于还包括存储装置,用于存储程序运行需要输出的数值型信息与该数值型信息表示的文字之间的对应关系;扫描装置,用于扫描源程序,根据源程序设置的标记在所述存储装置中建立数值型信息与其表示的文字信息之间的对应关系;转换装置,用于从程序运行输出的运行信息中获取数值型信息,从所存储装置中查询到对应的文字信息并替换所述运行信息中的数值型信息;输出装置,用于输出转换装置处理后的运行信息。
7.如权利要求6所述的系统,其特征在于,所述输出装置为打印机或显示器;或者,输出装置包括打印机和显示器。
全文摘要
本发明公开了一种提高程序运行信息可理解性的实现方法,用于将程序运行过程中输出的数值型信息解码为该数值型信息所表示的文字信息;该方法为在源程序中标记所有对数值型信息进行解释的文字信息,和在输出数值型信息的语句中指定需要解释该数值型信息的文字信息;扫描所述源程序,根据所述标记建立数值型信息与其表示的文字信息之间的对应关系;接收程序运行过程中输出的运行信息,并从该运行信息中获取所述数值型信息;利用获取的数值型信息查询所述对应关系得到对应的文字信息,将该文字信息代替所述运行信息中的数值型信息并最终输出信息。
文档编号G06F17/30GK1797330SQ20041010268
公开日2006年7月5日 申请日期2004年12月29日 优先权日2004年12月29日
发明者龙纲 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1