专利名称:软件开发支持系统中的显示方法
本发明涉及软件(如程序)开发支持系统中校验软件的一种显示方法。
如果要对软件产品如程序、程序设计说明书等(以下统称为程序)作某些改动,则必须把老程序和新程序加以比较以校验所作的改动是不是所希望的。在现有的软件开发支持系统中,改动前和改动后的程序间的比较是对文本中的每行都进行的,目的在于校验所作的改动(增加,删除和更新)。比较结果以文本的形式显示出来或打印出来,结果中带有多个标识符,各个标识符指示出加入的行,删除的行和更新的行。碰巧的是,“信息处理(Information Processing)”1983年4月的第4期第24册514页至520页中披露了一个在两个文件(如源程序等)之间进行比较的例子。
一般说来,为了测试整个程序,变体的变化在测试过程中应加以检查。目前用于上述目的的传统系统包括下列两种类型第一种是在预置于程序中的每个中断点上中断程序的运行,以便显示出预先选定的变量在中断点上的值;第二种类型是,当一个预定变量的几个预定条件(数值变化,达到一预定值等)都满足时,中断程序的运行,显示出预先指定的变量在中断点上的值。碰巧的是,在“HITACHI HY ORON”1984年3月3日第3期第66册第33页至36页上有一个常规的测试支持系统的例子。
以文本方式显示比较结果这种常规的显示方法使人难于直观地、综合地了解改动内容,这样就延迟了对改动的确认,错误也很可能被遗漏,导致改动程序(调试,更新版本等)的效率和可靠性恶化。
因此,本发明的第一个目的在于提供一种能以图表形式显示程序改动的位置和类型的显示方法,从而使操作人员能直观地综合地了解改动内容,提高改动程序的效率和可靠性。
此外,上面提到的显示一个变量值的常规方法并不显示该变量在中断前或中断后的值,所以,它并不显示变量值的变化,从而也就不能发现在程序执行过程中可能出现的意外的变化。因此,对错误的检测就可能不完全,其调试工作就可能变得很困难。设置更密的中断点或中断条件可以在一定程度上解决上述问题。但是,如果要密集设置中断点或中断条件的话,其设置步骤就相应地变得复杂起来,所以这个解决方案作用是有限的,此外还可以采取把运行中每一步的变体的值都进行显示的方法,但是这一方法需要一种特殊的显示方式。在上述两种常规技术中,显示每次更新时变量的名称和数值依次逐行加在原有显示上。这样使同一变体被分离地显示在许多位置上,从而使密切注视变体变得很困难。此外,如果显示的更新次数也大,变量显示将被“卷”了起来,这是因为要显示的内容不能在一个屏幕上显示出来,这样使得显示不明瞭。如果要显示的数据量大量增加时,要取出有用信息就很难。
本发明的第二个目的是提供一种通过简单操作,以简明的方式显示执行程序测试过程中的变量值的显示方法,从而使程序调试工作简便易行。
本发明的第一个特征在于本发明包括下列步骤第一步,分析改动前的软件产品和改动后的软件产品,根据诸产品各自的软件结构形成含有相互有关的软件元信息的改动前结构信息和改动后结构信息;第二步,从上述两个结构信息形成一个新的结构信息,该结构信息构成了上面两个结构信息的并集,其中包括了改动前和改动后的所有软件单元,还加入了指示每个软件单元变动的标识符;第三步,把至少是构成一个并集的结构信息一部分转换成图表形式并输出,并输出由上述标识符表示的改动。
本发明的第二个特征在于本发明包括下列步骤为待测试程序中的给定变量指定显示位置;随着程序的每步运行同步地在指定位置上显示出给定变量在这一步上得到的值。
根据本发明的第一个特征,改动前和改动后的软件产品的结构信息形成为(比方说)树形结构信息,由树形结构信息构成的并集结构信息中包括了未改动和已改动(增加、删去或更新)的软件元的所有信息和软件结构信息。把改动前的结构信息和改动后的结构信息相比较,或把改动前的文本和改动后的文本相比较,就可得到指示每个软件元的改动方式(是否改动及其形式)的信息。在这样得到的构成并集的结构信息和改动指示标识符的基础上,就可以图表形式在图形显示器上显示软件元的改动内容,这样可容易地了解软件的变动内容。
根据本发明的第二个特征,每个待显示变量的数值显示位置是固定的,这些显示值的更新或加入是在和更新这些数值的程序步的执行过程中同步地实时进行的,这样,可在固定位置上观察到给定变量的连续变化。
图1是实施本发明的第一个特征的第一个实施例的功能方框图。
图2示出了一例改动前的源程序。
图3示出了一例改动后的源程序。
图4A和4B示出了图2中的程序的树形结构信息及其PAD表示。
图5A和5B示出了图3中的程序的树形结构信息及其PAD表示。
图6A和6B示出了构成一个并集的结构信息,它是由图4A和4B中的树形结构信息及其PAD表示引出的。
图7是实现本发明的第一个特征的第二个实施例的功能方框图。
图8示出了构成一个并集的结构信息的PAD表示,它是本发明的第一个特征的第二个实施例提供的。
图9是实现本发明的第一个特征的第三个实施例的功能方框图。
图10和11示出了本发明的第一个特征的第三个实施例中改动前和改动后程序的PAD表示。
图12是实现本发明的第二个特征的第一个实施例的功能方框图。
图13是图12中的第一实施例的流程图。
图14A和图14B是本发明的第二个特征的第一个实施例提供的显示屏幕图形。
图15是本发明的第二个特征的第二个实施例的功能方框图。
图16是图15中的第二个实施例的流程图。
图17是本发明的第二个特征的第二个实施例所提供的显示屏幕图形。
图18是本发明的第三个实施例的功能方框图。
图19是图18中的第三个实施例的流程图。
图20是本发明的第二个特征的第三个实施例提供的显示屏蔽图图。
图21是本发明的第二个特征的第四个实施例的功能方框图。
图22是本发明的第二个特征的第四个实施例提供的显示屏幕图形。
首先,将结合几个实施例解释本发明的第一个特征。在下面的实施例中,源程序的改动均以PAD(问题分析图Problem Analysis Diagram)形式来表示。有关PAD的详细解释参见“日本信息处理协会条约(Treaties in Infromation Processing Society of Japan)”第四期第21册259页至267页。
图1以功能方框图的形式示出了实现本发明的第一个特征的第一个实施例的数据处理装置。图1中所示的功能块除存贮部分以外都可由一个处理器上的或由多个处理器上分担的软件实现。改动前程序存贮部分1是用来存贮改动前的源程序的文本的存贮器,改动后程序存贮部分2是用于存贮改动后的源程序的文本的存贮器。图2中示出了改动前的源程序文本的一个例子,而图3中示出了改动后的源程序文本的一个例子。
改动前程序树结构转换部分3把改动前源程序从它的文本形式转换成树结构形式,并把转换结果存贮在改动前程序树结构存贮部分5中。改动后程序树结构转换部分4把改动后的源程序从它的文本形式转换成树结构形式,并把转换结果存贮在转换后程序树结构存贮部分6中。图4A示出了这样得到的改动前源程序(图2)的树结构,而图4B示出了它的PAD表示。图5A示出了这样得到的改动后源程序(图3)树结构,图5B示出了它的PAD表示。
回到图1上来。程序树结构比较部分7把存贮在存贮部分5中的改动前源程序树结构信息与存贮在存贮部分6中的改动后源程序树结构信息加以比较,并给已改动的程序元添加上代表其改动类型的标识符,把改动前程序的树结构信息和改动后程序的树结构信息加以合成以形成它们的并集程序树结构信息,并把该信息存入并集程序树结构存贮部分8中。上述的这些处理是以下列的方式进行的把改动前的程序树结构和改动后的程序树结构从根至枝再至叶的方向加以互相比较,以识别出改动(这一概念包括增加,删除和更新)过的程序元,给这些改动过的程序元加上能表示其改动类型的标识符。这样,将形成一颗既包括改动过的程序元也包括没改动过的程序元的树,至于更新过的程序元,并集树结构中既包括更新前的单元也包括更新后的单元。
图6A示出了用上面所述的方法从图4所示的改动前源程序的树结构信息和图5所示的改动后源程序的树结构信息得到的并集树结构信息,图6B示出了其PAD表示。显示改动前程序的图4A和4B中的一个语句13被删除,该语句在显示改动后的树结构的图5A和5B中没有出现,因此,在显示并集树结构的图6A和6B中的语句13上应加上表示删除的标识符。图5中的语句18是在图4所示的改动前树结构上所加的一句语句,所以在图6所示的并集树结构中它作为带有插入标识符的一个语句24存在。图4中的语句17在图5中更新为语句22,所以图6中的并集树结构中既包括改动前的语句也包括由25表示的改动后的语句,这二个语句上分别加有表示“更新前”和“更新后”的标识符。同样,图4中的语句14在图5中更新为语句19,在图6的并集树结构中同时包含了分别加有“更新前”和“更新后”标识符的改动前语句和改动后语句,如数字26所表示。在这样的情况下,语句14和19之后作为树结构的枝和叶的语句(图4中的语句15,16和图5中的语句20,21)也包括在图6A和6B所示的并集树结构中,并且还都带有更新前和更新后标识符,如图6A和6B中的27,28,29和30所示。
再回到图1上来,输出位置计算部分9从并集树存贮部分8中读出并集程序树结构信息,计算出各个程序单元在显示屏上的显示位置(on-display display position),把这样得到的位置信息加到并集树程序树结构信息中相应的程序单元上,并把这样得到的带有位置信息的并集程序树结构信息存贮在带位置信息的树结构存贮器10中。PAD图形显示部分11对存贮部分10中带有位置信息的并集程序树结构信息加以分析,并根据其PAD表示法编辑PAD显示信息,还把改动类型信息转换成相应的显示信息(字符、颜色、图形等等)。这样得到的显示信息被送至显示部分12,显示部分12以图6中所示的方式把上述显示信息显示在屏幕。改动内容和/或改动类型可由颜色、闪烁、色度变化、图形符号等来表示。
在上述的实施例中,如果某一程序元有枝和叶,也就是有选择和迭代,那末,当改动该程序单元时,同样的改动标识符必须无条件地加给所有属于这些枝和叶的程序元。这是因为程序树结构间的比较(图1中的方框7)是沿着从树根至树枝至树叶的方向进行的,因此即使属于这些枝和叶的程序元并没有改动,它们也被显示成好象已被改动。举例来说,对应于图5中语句21的图4中的语句16完全没有改动,但是由于该语句相对于它的根(起始结点)而言其选择(枝)条件已经改动(从图4中的14改成图5中的19),因此同样的语句(16、21)在并集树结构中表现为一个更新前程序单元(图6中的28)和一个更新后程序单元(图6中的30)。这使理解改动的实际条件不很方便。
图7中的另一个实施例旨在除了树结构信息的比较结果之外还使用程序文本的直接比较结果来克服上面的那种不便。本实施例在图1所示实施例的基础上加上了源程序比较部分40和源程序改动信息存贮部分41,存贮部分41中的源程序改动信息和改动前、后的树结构信息一起送入程序树结构比较部分42中。
源程序比较部分40把来自存贮单元1的改动前源程序文本和来自存贮单元2的改动后源程序文本直接逐一比较,检测出被改动(加入、删除和更新)过的程序单元,并将结构存入源程序改动信息存贮部分41中。在这个比较中,只进行如前面说过的“信息处理”中描述的平面型(planelike)比较而不管程序的结构如何。这种比较法使我们能够检测出每个程序元本身的改变方式,而不管作为我们关心的程序元的板的那个程序元是否变动。
程序树结构比较部分42采用与图1中的程序树结构比较部分7同样的方式形成并集树结构,然后参照存贮部分41中的源程序改动信息来决定该加给各个程序元什么样的标识符。特别要指出的是,如果属于已改动程序的枝和叶的程序元本身也已被改动,那末应给它们加上表示它们已被改动的类型标识符;反之,如果这些属于已改动程序的枝和叶的程序元本身并未被改动,那末应给它们加上表示未改动的标识符和表示互相对应的一双程序元标识符。图8与图6B相对应,图中示出了用上面提到的方式从图2中的改动前程序的图3中的改动后程序得到的并集树结构信息的PAD表示。从已改动的语句45(对应于图6B中的语句2b)开始分枝,在属于这两个树枝的语句中,改动前程序中的语句43和改动后程序中的语句44互相对应,它们之间不存在任何变动。因此,这些句子上加有表示未被改动的标识符和表示它们的对应关系的标识符(在这种情况下是“1”)。与此相反,语句46本身更新为语句47,因此,语句46和47上加有分别表示改动前和改动后的标识符。后续的处理跟图1中一样。
如果除了用图形显示改动前的和改动后的程序元的并集之外,还单独显示出只包括改动前的程序元的一部分和只包括改动后的程序元的一部分,那末,改动的实际状态就更容易理解。为了实现这样一个显示,图9中又示出了一个实施例。这个实施例在图7所示的装置上又增加了改动前信息摄取部分50和改动后信息摄取部分51。改动前信息摄取部分50从存贮在存贮部分10中的带有位置信息的并集树结构信息中通过校验标识符的方法只取出有关改动前程序元的信息,并把取出的信息送至PAD图形显示部分11。同样,改动后信息摄取部分51只取出有关改动后的程序元的信息,并也把该信息送入PAD图形显示部分11中。
图10是由并集树信息按上述方式提供的改动前程序信息的PAD表示,它与图8所示的PAD表示相对应。图11示出了以同样方法得到的改动后程序信息的PAD表示。在图10和11中,原封不动地采用了图8中的带位置信息的并集树结构中的对应部分,这样可以用与图8中相同的方式来显示改动的位置和类型,而且各个程序单元的位置也与图8中相同。这样,通过比较图8、10和11中所示的显示,就可更容易地了解改动的实际状态。这三种显示可通过操作员的操作一一更换,否则随意选定的二个或全部显示可能混杂或重叠。在后一种情况下,使用一种带多窗口功能的显示是方便的。
在上面提到的几个实施例中,都采用了树形结构来表达一个程序。然而需指出的是也可以采用任何别的表示形式,只要它能表示程序元之间的逻辑关系。而且,只要能产生图形除上述显示方法以外的任何别的显示手段都可以采用(举个例子来说,点阵打印机不管它是冲击式的还是非冲击式的都可以采用)。
现在来解释实现本发明的第二个特征的几个实施例。图12以功能方框图的形式示出了一台实现第一个实施例的数据处理装置。虽然图12中的几个终端T实际上只是一个单独的部件,把它们重复地画出是为了阐明和其它功能块的关系。被显示的变量读入部分61从终端T中读入指定的变量名以便使它的值显示在屏幕上。显示位置确定部分62根据一个预定的规则(举个例子,按读入顺序以上到下排列)确定由显示变量读入部分61读入的各个变量在屏上显示位置。显示变量/显示位置存贮部分63以相互相关的方式存贮由显示变量读入部分61读入的变量的名称以及它们的由显示位置确定部分62所确定的显示位置。程序运行控制部分64控制着变量名称显示部分65、程序运行部分66和变体值显示部分68的动作,变体名称显示部分65读出有关待显示的变量名称和它们的显示位置的信息,并在终端T的屏幕上的指定位置上显示这些变量名。程序执行部分66一步一步地执行待测试的程序,同时访问或者更新保存在变量表存贮部分67中的变体。变量表存贮部分67以表的形式存贮程序中所有的变量在各个时间点上的值。变量值显示部分68把待显示变量(存贮在显示变量/显示位置存贮部分63中)的值(存贮在变量表存贮部分67中)根据存贮部分63中的显示位置把它们显示出来。
图13示出了一张实现本实施例的流程图。在第69步,图12中的显示变量读入部分61从终端T中读入待显示的变量。在第70步,显示位置确定部分62确定这些变量的显示位置(比方说按读入顺序由上向下排定)。在第71步,变量名显示部分65在第70步中确定的显示位置上显示出第69步中指定的变量名。在第72步,程序执行部分66执行一步程序。在第73步,变量值显示部分68在显示位置上显示出第69步中指定的变量在目前时刻的值。在第74步,判断程序是否已结束。如果程序已抵达结尾,那末程序的执行也告结束。如果不是,整个过程再回到第72步,执行下一步程序。
图14A和14B根据上面的实施例示出了程序执行时显示屏的几个例子,其中变量X,Y和一个数组Z的各个元素Z〔1〕到Z〔6〕被选为待显示变量。图14A示出了程序刚开始运行时的显示,而图14B则示出了程序执行了一段时间后的显示情况。
图15以功能方框图的形式又示出了一个实施例,在实施例中除了能指定待显示的变量之外,还能指定这些变量的显示位置或称显示区域。图16示出了它的流程图,图17显示了它的显示屏的一个例子。在图15中,由显示位置读入部分75代替了图12中的显示位置确定部分62。显示位置读入部分75从终端T中读入已由显示量读入部分62读入的那些变量的指定显示位置。在图16中,由第76步代替了图13中的第70步。在第76步,图15中的显示位置读入部分75从终端T中读入待显示变量的显示位置。
图17示出了根据这个实施例的一个屏幕例子。在这个例子中,屏幕的左半边同时显示出了待显示的变量和它们的位置。特别要指出的是,待显示变量的名称是指定的,而且还可以指定它们在屏幕上的显示行号。在数组的情况下,可以指定同一行上要被显示的各个元素的列号,诸元素用<>号中的分号隔开。在图17的例子中,对于数组Z作了这样的规定,变量名显示在第一行上,元素Z〔1〕至Z〔6〕的名称和值依次显示在后续两行中从第2列、第10列和第18列起始的位置上。
在上面描述的几个实施例中,虽然在程序运行过程中可以观察到变量的变化,但却不可能知道这些数值或变化位于程序中哪个位置。这个问题由图18至20中表示的另一实施例来解决,这个实施例除了显示变量之外,还在同一屏幕上显示程序的内容和执行位置。图18是该实施例的功能方框图,这个框图在图12中所示的功能框图中又加入了程序内容显示部分77和程序执行位置显示部分78。程序内容显示部分77以一种规定的形式显示出正在执行期间的程序内容。举例来说,源程序可以用文本形式原样显示出来,或用前面说过的那种PAD形式用图形显示出来。程序执行位置显示部分80在程序内容显示部分77形成的程序内容的显示数据的基础上显示出已显示出的程序内容中的执行位置。
图19所示的流程图是在图13中的流程图的基础上又增加了步骤79和80。在第79步,程序内容显示部分77以规定的形式(如PAD)在屏幕上显示程序内容。在第80步,作为第79步的结果,把被显示出的程序内容中的执行位置以规定的形式被显示出来。
图20A示出了根据本实施例的显示屏幕的例子。程序内容以PAD的形式表示,把正在执行着的操作相对应的PAD框(图20A中用隐影线表示)用一种与别的PAD框不同的颜色显示出来。图2B示出了另一个例子,其中在每个变量值的右边还显示出了正在加工的PAD框的编号其内部变量的值在显示期间这个PAD框中的变量已被我们感兴趣的变量所取代。把执行过的PAD框的号码显示在处理过的变量值的右边即可实现上面这种形式的显示。在图20B的显示形式中,也可以象图20A中那样用不同的颜色来显示正在执行的PAD框。除了改变颜色之外,还可以采用别的增强显示方式,如色度变化,闪烁等等。
在上面所述的几个实施例中,显示的只是变量的最新值,而不显变量的变化过程。因此,为了了解变量值的变化过程,必须一直监视着屏幕。下面将描述一个能显示变量值变化过程的实施例。它的功能方框图与图18中的相同。除了变量值显示部分之外,其它功能块的功能均与图18中的相同。特别要指出的是,本实施例中的变量值显示部分68对存贮在显示变量/显示位置存贮部分63中的变量的值(存贮在变量表存贮部分67中)加以检查。只要这些值与已经显示的值不同,显示部分68除了已经显示的值之外还显示出更新值。图21示出了这个实施例的流程图,该图中的第81步和第82步代替了图19中所示流程图中的第73步。在图19中的第73步,即变量值显示处理中,原变量值被取消,新变量值显示在原来显示原变量值的相同位置上;而在图21中的第81步,判断变量值是否已变化,如果是的话,就把新变量值显示在原变量值的右边(第82步)。图22示出了根据本实施例的一个屏幕例子。在这个例子中,显示出来的原变量值和新变量值由箭头链成一串。如果变量值是连续变化的,那就不把所有的各个显示都包括在显示屏幕中,此时移出原变量值,使得屏幕中只留有一定数量的新显示。
根据本发明的第一个特征,软件产品中的改动内容可以很容易地直观地理解,这样也提高了软件改动工作(这在软件的开展和维护中是经常进行的)的效率和改动后软件的可靠性。
根据本发明的第二个特征,可以免除了在程序的测试过程中设置中断时间和中断条件的麻烦,另外还可以了解变量值的变化过程而不是在几个间断的中断点上的变量值。只要在预定的显示位置上显示指定的变量值就可以很容易地监视它们,很少会漏过。这样,程序的调试工作的效率可得以提高。
权利要求
1.带有信息处理装置的软件开发支持系统中的一种显示方法,包括如下步骤把软件产品的改动前的结构信息和改动后的结构信息加以比较,以形成一种新的结构信息,它是改动前信息和改动后信息的并集;以图形方式产生至少是一部分属于上述并集结构信息。
2.一种根据权利要求
1的显示方法,其中在形成结构信息这一步中还包括形成表示软件产品中各单元的改动方式的识别信息这一步。
3.一种根据权利要求
1的显示方法,其中所述的形成结构信息这一步中还包括分析改动前软件产品和改动后软件产品以便分别形成由软件元信息组成的改动前结构信息和改动后结构信息。
4.作为支持软件开发用的信息处理装置中的一种显示方法,包括如下步骤分析改动前的软件产品和改动后的软件产品,根据各个软件产品的结构分别形成由互相相关的程序元信息组成的改动前结构信息和改动后结构信息,形成上述改动前结构信息和改动后结构信息的并集作为一个新的结构信息,该信息中包括了改动前和改动后的所有软件元信息;并在并集结构信息中加入表示各程序元的改动类型的识别信息;以及把至少一部分并集结构信息转换成图形格式,同时产生的还有由上述识别信息表示的改动类型展现。
5.一种依据权利要求
4的显示方法,其中包括比较改动前结构信息和改动后结构信息以形成识别信息这一步。
6.一种根据权利要求
4的显示方法,包括直接比较改动前软件产品的文本和改动后软件产品的文本以提供上述识别信息这一步。
7.一种根据权利要求
4的显示方法,其中所述的第三个步骤中包括选出至少一个象上述并集那样的结构信息、并选出与其相应的改动前软件产品的信息和相应的改动后软件产品信息这一步骤。
8.一种根据权利要求
7的显示方法,其中在上述的选择这一步中,选出上述的并集结构信息并选出相应的改动前软件产品信息和改动后软件产品信息两个中的至少一个,在上述的第三步中,所选出的信息是同时产生的。
9.带有显示终端的用于软件开发支持系统中的一种显示方法,包括下列步骤为待测试程序中的给定变量指定显示位置,在上述显示终端的指定位置上显示出上述给定变量的值,这些值是与每一步程序的执行同步地提供的。
10.一种根据权利要求
9的显示方法,其中的第一步根据一种规定的表示法指定显示位置。
11.一种根据权利要求
9的显示方法,上述的显示步骤根据每个给定变量提供的位置信息确定显示位置。
12.一种根据权利要求
9的显示方法,其中的显示步骤除了显示上述给定变量的原变量值之外,还显示出该变量的更新值。
13.一种根据权利要求
9的显示方法,其中上述显示步骤在同一显示屏幕上除了显示变量值之外,还显示出了在各个时刻的程序执行位置。
14.一种根据权利要求
13的显示方法,其中上述的执行位置显示在变量值之后,在屏幕上还以图形的方式显示出上述程序。
专利摘要
本发明是支持软件开发用的信息处理装置中的显示方法,包括下列步骤分析改动前的软件产品和改动后的软件产品,根据各个软件产品的结构形式改动前结构信息和改动后结构信息(由相互关联的软件元信息组成);形成由改动前结构信息和改动后结构信息的并集组成的一个结构信息;在并集结构信息中加上表示各个软件元的改动类型的识别信息;至少把一部分并集结构信息转换成图形格式,使它和由识别信息代表的改动类型表示一起被显示出来。
文档编号G06F11/36GK87107925SQ87107925
公开日1988年7月20日 申请日期1987年11月20日
发明者内藤一郎沢前, 裕行, 山口淳子, 胜间田英利, 大塩竹志 申请人:株式会社日立制作所, 日立计算机工程株式会社, 日立西部软件株式会社导出引文BiBTeX, EndNote, RefMan