软件自动分析的方法与装置制造方法及图纸

技术编号:2891380 阅读:145 留言:0更新日期:2012-04-11 18:40
一种提取出目标过程的算法放入算法的XPD构架中的方法,其中算法的XPD构架是用“下一最小期望”规则,或相反用“下一最大期望”规则建立的一种确定的普通形式,该方法具有: 一过程单元的“算法期望”是用其二进制地址(BA)确定的,该二进制地址是由二进制0和1组成的,它们是在-“t-经过”的即将产生的部分上的一个“精减逻辑条件”的解,该“t-经过”通过该单元; “t-经过”是一从过程入口至-“过程终结”的经过; LC的否定解(NO解)被赋予-“低期望”或“0-期望”,而LC的肯定解(YES解)被赋予-“高期望”或“1-期望”; 将具有多于两个输出的逻辑条件(LC)减少为只具有两个逻辑输出的两个或两个以上精减LC; 在构造主分枝过程中,消除向前的“GO TO”; 在“过程终结”退出目标过程时,将其标识成“退出终结”,而在“过程终结”将控制返回到过程单元时将其标识为“重绕终结”,该过程单元已在过程段中以较低的二进制地址表示; 标识一过程段; 将两个不同二进制地址间的关系进行量化。(*该技术在2014年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术的背景专利
本专利技术与一种静态和动态分析计算机程序的方法有关,本专利技术能将造成程序出现故障的错误的位置以及在改变需要的情况下需要对程序进行修改的位置等的不确定性减至最小。所专利技术的过程也在目标计算机软件系统的用户与其内部过程之间提供了一个有独创性的和非常高级的接口,这种接口允许以一种十分有效的方法去激活该目标软件的分析。该接口也为系统修改和前期开发引入了一个非常高级的编程语言,称作面向结果的编程(Result OrientedProgramming-ROP)。下面的描述也通过提出一种XPD目标码(XPD ObjectCode)为传统形式的计算机软件过程目标码提供了一种替换形式,其中XP D代表专家程序诊断(expert Program diagnosis)。XPD目标码更适合于静态和动态程序分析以及程序维护。作为这种过程修改的结果,它方便了以及有时消除了目标过程代码的重新编译与重新链结。相关技术的描述计算机软件工程的几十年发展显示出a.还没有一种自动方式能证明计算机程序过程将总是产生正确的或期望的结果;b.因此,没有“无任何错误”的软件,即软件对于它所测试的程度只是“正确”,同时假设该测试是正确的;c.除了最简单的软件外,穷尽测试是不可行的;d.当前的软件工程没有提供类似于硬件安全边际(hardwaresafety margin)的任何方法,而且一个错误常常使整个系统停止下来;e.在测试或者生产期间,在认识到存在错误时,对原因(错误)进行定位常常是极其困难的。这就是说软件在本质上不同于硬件,因为它不遵循同样的因果规律。即软件错误并不与其表现(故障)相接近,但是它可以位于系统中的几乎任何位置。对于已经过测试并进行生产的系统,其工业上平均是每1000行代码有5~10个错误。由于难以确定错误,许多故障悬而未决。程序员和他们的管理人员害怕接触代码,因为在试图改进或修改代码时可能会引进新的错误,并且进一步打乱系统。下面的引用是在1988年提出后,在1993年仍然正确“原则上它可以那样工作。对于仔细编制的程序其出错率大约是每1000行5个错误,因此一个一兆行的程序可能有5000个问题。即使假设需要一个测试点以暴露一个问题,数千次的尝试也不是不现实。这种谬误是含糊的,但对于测试我们的直觉而不是我们乐于承认的是这种测试点可以是十分少,但是我们不知道如何找到这些点。更槽糕的是,我们知道没有一种语义方式去寻找,没有一种方式去评判所选择的点,而且没有方法决定何时停止。因此在尝试了5000个点之后而没有发现错误,我们并不知道是否已无错误,是否还剩10个错误,或5000个错误”……,从技术方面测试最需要的是一个正确的基本理论…”Special section on Software testing”Communication of the ACM,1988年6月软件的“再工程”成为1990年的一个时髦词。在IBM SystemJournal(VOL 28,1989年第2期)上有一个标题“ProgramunderstandingChallenge for 1990′s”。根据IBM的研究,全世界在软件维护上花费大约300亿美元,而且随着新软件系统的累积和旧软件的“老化”,这个数字也在上升。根据MIT(麻省理工学院)的研究,每1美元用于新软件项目,就要花费9美元用于该项目的维护。Software Magazine1990年11月,第95页提到PriceWaterhouse的研究表明对于能够对现有系统进行纠错的系统估计一年有1000亿美元的市场。软件调试的当前技术是基于“控制断点”(control Break)技术。这就是它如何工作的通过使用下列方法之一通过设置“控制断点”激活对源程序的分析a.程序员研究源程序,通过将光标或其它指点设备定位在特定源代码行上手工设定控制断点;或b.程序员命令一个调试工具通过自动地加亮源代码的当前活动行而激活(跟踪)该代码,这种跟踪是以一种足够慢的速度对代码进行解释从而能够可视地追踪其执行。以这种方式时,在每一被执行源指令之后要有一断点;或c.命令将一控制断点设置在每一特定类型的指令处,比如在每一输入语句之后,或在每一调用(执行)语句之前。一个控制断点的目的是暂时暂停一个执行过程从而手动地检查程序变量的值。在使用“控制断点”时采取了下列假设(i)程序员在源代码有关位置处设置控制中断;(ii)假设(i),程序员知道要查看什么变量;(iii)假设(i)和(ii),程序员对故障的原因做出正确的判断。因此正确手工分析的概率是上述(i)(ii)(iii)的概率的乘积。也就是说,比如上述每一步骤的正确判断结果的概率是1%,则手工分析的正确结果的概率是0.1%。正如我们所理解的,传统的“控制断点”技术试着去确定一个故障的原因是完全不能自动的,它在认识判期间引入了人为出错的可能—要检查吗?—检查什么?—它说明什么?在自断确定在测试过程期间什么源代码已被覆盖什么源代码未被覆盖的领域中,人们已经做了一些工作。授于Horsch的美国专利(第4853851)公开了标题为“Systemfor Determing The Code Coverage of a Tested Program BasedUpon Static and Dynamic Analysis Recording”的专利技术,其方法是测量在测试期间计算机程序被执行的指令数与该程序的总的指令数的比值。尽管一般来讲在测试期间覆盖的语句越多越好,但事实是被执行的过程步骤并不提供其正确性信息—首先所构造的特定的被执行的语句可能是错误,—该特定语句可能是在一个错误的地方或在一个错误的时刻被执行;—另外,该特定语句可能是一个不改变过程结果或对过程结果没有影响的语句;授予Ward等人的美国专利(专利号为4 802 116)公开了一个名称为“Programmed Controller”的专利技术,该专利技术控制一个机器过程并方便其调试。它们的应用程序通过组织成一个或多个独立的循环而被明确地设计成以模拟机器的各部分的特定控制策略。嵌入进的控制机制记录下这些循环的状态,以及影响在这些状态之间转移的条件。这一技术仅仅限于这样一些应用程序它们按照非常特殊的语法规则被编码为多个独立的循环,其中跟踪这些循环的状态的方式被预先编码进控制该过程的程序中。通过记录下代表每一语句块的一个序列和连接不同块的每一逻辑条件语句而进行对该过程历史的记录。对系统错误的分析没有自动到XPD机所提供的程度,因为它并不是参考实际的过程结果而进行的(而在XPD机却能做到),而是通过对所记录的程序状态序列进行分析,由此它不象XPD机那样提供一个高级的推理和用户接口。现有技术并没有提供一般的过程,能自动地确定计算机软件中的逻辑错误的位置,甚至是在一被定义区域内不确定的程度。这是因为根据下列理由一般认为这种自动化是不可行的1.正如前面所提及,软件不象硬件那样遵循同样的因果规律,而且造成特定故障的软件错误可以在软件系统中几乎任何位置;2.软件系统不知道它所预计的结果是什么,因此,除非所预计的结果被编码进该系统中,否则软件系统并不能认识到一个故障(未预料的结果)。这一工作首先显示出预先编码程序规范的任务在复杂性本文档来自技高网...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:本杰文·V·夏皮罗
申请(专利权)人:思想软件公司
类型:发明
国别省市:

相关技术
    暂无相关专利
网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1