CN101473301B - 迭代静态和动态软件分析 - Google Patents
迭代静态和动态软件分析 Download PDFInfo
- Publication number
- CN101473301B CN101473301B CN200780022369.0A CN200780022369A CN101473301B CN 101473301 B CN101473301 B CN 101473301B CN 200780022369 A CN200780022369 A CN 200780022369A CN 101473301 B CN101473301 B CN 101473301B
- Authority
- CN
- China
- Prior art keywords
- analysis
- software entity
- software
- dynamic
- measurement
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3616—Software analysis for verifying properties of programs using software metrics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/77—Software metrics
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
无缝地迭代地执行静态和动态代码分析。软件分析工具集成动态和静态分析的结果并迭代地利用来自先前的一个或多个分析的结果以扩充当前分析。在调试过程期间,将在运行时收集的信息与静态代码分析结果集成在一起。该信息是作为测试和调试过程的结果的一部分来生成和存储的。随后利用所存储的信息来提供经改进的分析结果。该软件分析工具消除了对软件开发者分别执行静态分析和动态分析的需要。
Description
技术领域
本技术领域一般涉及计算系统,且更具体地涉及用于计算系统的软件开发。
背景
典型的软件分析工具提供静态地和动态地独立分析软件代码的能力。通过如数据流分析、值跟踪等技术,静态分析可以标识代码中的正确性问题而不必实际执行该代码。然而,静态分析受到可通过对经编译的二进制代码的静态检查而获得的信息的限制。动态分析可以提供例如,关于时序和分配了多少存储器等信息。在软件开发过程期间,软件开发者通常独立地执行静态分析和动态分析,尝试将一类分析的结果应用到另一类。
概述
提供本概述以便以简化的形式介绍将在以下说明性实施例的详细描述中进一步描述的一些概念。本概述并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
一种软件分析工具无缝地同时提供静态和动态代码分析两者。在静态分析期间,收集、发布并利用通过执行代码所获得的信息以启用新的分析并基于运行时行为将分析的结果集中于可证明有意义的组。该软件分析工具集成动态和静态分析的结果并迭代地利用来自先前的一个或多个分析的结果以扩充当前分析。该软件分析工具消除对软件开发者分别执行静态分析和动态分析的需要。在一示例实施例中,在调试过程期间,执行被分析的代码。集成来自先前的静态和动态分析的结果以扩充该调试过程。该调试过程的结果指示静态分析结果和动态分析结果两者。
附图简述
以上概述以及以下详细描述在结合附图阅读时可被更好地理解。出于示出耦合的、迭代的动态和静态软件分析的目的,在附图中示出了其示例性构造;然而,迭代动态和静态软件分析不限于所公开的具体方法和手段。
图1是用于提供迭代动态和静态软件分析的示例性过程的流程图。
图2是用于提供迭代动态和静态软件分析的另一示例性过程的流程图。
图3是用于迭代地、动态地和静态地分析软件的示例过程的流程图,该过程是调试过程的一部分。
图4是用于迭代地、动态地和静态地分析软件的示例系统的图。
说明性实施例的详细描述
在调试过程期间,集成静态和动态软件分析结果。将在运行时收集的信息与静态代码分析结果集成在一起。该信息作为测试和调试过程的附带结果来生成,且在一示例实施例中被持久存储到盘。随后利用所存储的信息来提供经改进的分析结果。
在一示例实施例中,在构建时,调用静态分析。在其初始状态,调节静态分析来最小化噪声。即,只要信息不足够完整来保证高确定性结果(或完全不存在),则将不会发生分析。作为构建代码的附带结果,对该应用程序进行插装(instrument)来在运行时收集特定度量。该信息是在用户运行应用程序的任何时候(包括调试场景)动态地收集的。在该示例实施例中,在运行时,动态地收集特定数据并将其持久存储到存储。在后续静态分析期间,恢复该信息并用其来将静态分析结果细化为一组低噪声、高价值消息和/或启用全新的静态地发生的分析,但该分析只在动态地收集的度量可用时才是可能的。
例如,在一示例性场景中,静态分析工具包含检测目标代码中,或在托管分析的情况下检查IL(中间语言)中的无效性的检查。该检查不是默认地启用的,因为可能在数百个位置处检测到该无效性模式并且,在大多数情况下,解决任何单个违反都不会产生有意义的性能增益,并且因此不值得花费时间来修补增加引入代码缺陷而增加的风险。在该示例场景中,在构建时,对代码进行插装来记录对各个方法或函数所发生的调用的数量。用户执行该代码,且收集这些度量。在后续分析示意(gesture)中,对一方法激发上述无效性检测检查。静态分析阶段检查储存库中的分析目标方法,并记录其相对于该应用程序中的其它方法/函数是被频繁调用的。该静态分析检查向用户呈现违反,因为现在已确定,如果解决该问题则可能产生有意义的性能增益。
在另一示例场景中,存在验证调用点感兴趣的某些事物的检查。例如,该检查可以尝试确定调用点是否要除去对一参数的引用。如果是,则静态检查器可以警告用户谁可证明地向该调用点传递了可能的空项,这可导致在运行时崩溃。该检查不能分析虚拟调用点,因为调用点只引用方法的虚拟声明。即,IL包含定义的一般化引用;其不引用提供该定义的任何特定具体实现。在运行时期间,检测实现虚拟方法的特定子类并将之与IL中存在的一般性引用进行关联。在后续静态分析期间,上述检查可以检索可证明地与一般性调用点相关联的特定实现,并使该特定实现经受其检查。
图1是用于提供迭代动态和静态软件分析的示例性过程的流程图。在一示例实施例中,如图1所示,执行动态软件分析并用先前存储的静态分析结果来扩充该动态软件分析的结果。在步骤12启动动态软件分析。在步骤14执行动态软件分析(DA)。动态软件分析可以通过任何适当的动态软件分析工具来执行。例如,动态分析可以利用诸如MICROSOFTVISUAL STUDIO等软件开发工具来执行。在动态软件分析期间,执行被分析的软件或其部分并且执行运行时分析。动态软件分析的结果可以包括时序信息,诸如例如执行一操作和/或运行被分析的软件的一部分(片段)所需要的时间量。示例动态软件分析度量包括调用被执行的频率、执行一函数所需要的经验时间、与虚拟调用点相关联的方法的定义和调用在执行时是否分配存储器。
在一示例实施例中,使用调用被执行的频率来细化高确定性的且被频繁激发的静态分析性能检查。在这种情况下,将结果缩小到被频繁调用的分析目标组是有利的。修补不经常调用的项的时间不保证这一好处,因为增量式性能增益很小。代码改变还引入退化的风险,这是将结果集中于最有意义的组的另一原因。
在一示例场景中,用户可能想要指定一方法或函数是性能敏感的。即,该方法或调用需要在特定的时间阈值内执行。可以利用执行函数所需要的实际经验时间来确定在运行时,执行时间是否超过该阈值。并且,可以在后续静态分析运行中发布结果。该静态分析还可以指示什么调用点对执行中所花费的时间负责。
需要访问特定调用点实现的静态分析不能操作虚拟调用点。可以确定与虚拟调用点相关联的特定具体方法的定义并用其来扩充该静态分析。可以向该静态分析提供诸如绑定到虚拟调用点的特定子类等信息。
在一示例场景中,可能需要了解在执行期间是否分配了存储器。静态地确定是否发生了存储器分配可能很困难且在某些情况下是不可能的。例如,经由静态分析不能确定因对虚拟方法的调用而导致的存储器分配。可以动态地收集该信息并将其提供给后续静态分析。
在步骤16,确定是否存储了来自先前的动态软件分析的度量。该度量可以是关于被动态地分析的同一软件实体的,或关于被分析的软件实体的一个版本的。例如,在代码开发期间,可以动态地分析软件组件的第一版本且可以将从中得到的所选择的(或所有)度量存储在存储器中。然后,可以对软件模块做出改变,得到该软件模块的另一版本。在动态地分析该软件的后续版本时(例如,步骤14),可以确定(例如,步骤16)存储了来自对该软件模块的先前版本的动态分析的度量。来自先前的动态分析的度量可以包括来自先前扩充的和/或未扩充的动态分析的度量。即,来自先前的动态分析的度量可以包括来自由静态分析扩充的动态分析的度量、来自由先前的动态分析扩充的动态分析的度量、来自未扩充的动态分析的度量、或其组合。
在一示例实施例中,对访问其自身未被静态地分析的其它二进制代码的代码进行静态分析。然而,如果对那些依赖性存在动态地获得的数据,则目标二进制代码的静态分析利用该信息来验证其客户的使用。
如果存储了来自对同一软件实体或其一个版本的先前的动态软件分析的度量(步骤16),则在步骤18检索所存储的度量。度量可被存储在任何适当的介质上,诸如例如,磁性存储、光学存储、硬盘、半导体存储器、闪存等。在步骤20,将所检索的度量与当前动态分析集成在一起以扩充当前分析。
在一示例实施例中,为了高效起见,实现了基于静态分析来限制运行时收集的机制。例如,用户可以指示该用户对特定类型或某一类型的特定方法感兴趣。在运行时,可以完全禁用动态数据收集,除非证明被执行的代码可从将被静态地分析的目标到达。
在步骤22,存储来自扩充的结果的度量,且该过程前进至步骤24。例如,在代码开发期间,软件实体的第一版本可以包括对在该第一版本被动态地分析时不存在的网络站点的调用。因此,对该站点的调用将被作为虚拟调用来对待,且在对该第一版本的动态分析期间将估计诸如时序和存储器分配等度量。然后,可以完成该站点,并且对该软件实体的后续动态分析将包括诸如时序和存储器分配等与调用该实际网络站点相关联的度量。
如果未存储来自对同一软件实体或其一个版本的先前的动态软件分析的度量(步骤16),则在步骤24,确定是否存储了来自对同一实体或其一个版本的先前的静态软件分析的度量。来自先前的静态分析的度量可以包括来自先前扩充的和/或未扩充的静态分析的度量。即,来自先前的静态分析的度量可以包括来自由动态分析扩充的静态分析的度量、来自由先前的静态分析扩充的静态分析的度量、来自未扩充的静态分析的度量、或其组合。在软件上执行静态分析而不执行该软件。可以在源代码和/或目标代码上执行静态分析。来自静态分析的结果可以包括例如软件中的代码行数、可能的编码错误(例如,不正确的句法)、可维护性度量、程序语义错误、逻辑错误、秩复杂性(cyclomatic complexity)(秩复杂性是对程序的坚固性和信任性的广泛测量。秩复杂性提供可被利用来与其它程序的复杂性进行比较的单个序数。)等等。另一示例静态分析度量可以包括指示是否应为二进制代码、类型、方法启用分析/运行时收集的简单配置细节静态设置。又一示例静态分析度量可以包括代码复杂性。
如果未存储之前的静态分析度量(步骤24),则在步骤32,提供当前动态分析的结果。如果存储了之前的静态分析度量(步骤28),则在步骤26,检索这些度量。在步骤28,将所检索的度量与当前动态分析的结果集成在一起以扩充当前动态分析。在步骤34,存储来自集成的结果的度量,且在步骤32提供这些结果。
图2是用于提供迭代动态和静态软件分析的另一示例性过程的流程图。在一示例实施例中,如图2所示,执行静态软件分析并用先前存储的静态动态结果来扩充该静态软件分析的结果。在步骤34启动静态软件分析。在步骤36执行静态软件分析(SA)。可以通过任何适当的静态软件分析工具来执行静态软件分析。在静态软件分析期间,分析被分析的软件或其部分而不执行该被分析的软件。
在步骤38,确定是否存储了来自先前的静态软件分析的度量。如上所述,来自先前的静态分析的度量可以包括来自先前扩充的和/或未扩充的静态分析的度量。该度量可以是关于被静态地分析的同一软件实体的或关于被分析的软件实体的一个版本的。例如,在代码开发期间,可以静态地分析软件组件的第一版本且可以将从中得到的所选择的(或所有)度量存储在存储器中。然后,可以对软件模块做出改变,得到该软件模块的另一版本。在静态地分析该软件的后续版本时(例如,步骤36),可以确定(例如,步骤38)存储了来自对该软件模块的先前版本的静态分析的度量。
如果存储了来自对同一实体或其一个版本的先前的静态软件分析的度量(步骤38),则在步骤48检索所存储的度量。在步骤50,将所检索的度量与当前静态分析集成在一起以扩充当前静态分析。在步骤52存储来自集成的结果的度量。该过程前进至步骤40。
如果未存储来自对同一软件实体或其一个版本的先前的静态软件分析的度量(步骤38),则在步骤40,确定是否存储了来自对同一软件实体或其一个版本的先前的动态软件分析的度量。如上所述,来自先前的动态分析的度量可以包括来自先前扩充的和/或未扩充的动态分析的度量。如果未存储先前的动态分析度量(步骤40),则在步骤54,提供当前静态分析的结果。如果存储了之前的动态分析度量(步骤40),则在步骤42,检索这些度量。在步骤44,将所检索的度量与当前静态分析的结果集成在一起以扩充当前静态分析。在步骤46,存储来自集成的结果的度量,且在步骤54提供这些结果。
在一示例实施例中,用户/软件开发者可以开始调试过程并且在后台无缝地执行静态和动态分析。图3是用于作为调试过程的一部分迭代地动态地和静态地分析软件的示例过程的流程图。图3中所描绘的过程基本上是图1和图2所描绘的过程的组合。在步骤56启动软件分析。然后,执行静态分析(步骤58)并执行动态分析(步骤80)。响应于启动软件分析,执行静态和动态分析。可以同时地或以任何次序顺序地执行静态和动态分析。在步骤60,确定是否存储了来自先前的静态软件分析的度量。如上所述,来自先前的静态分析的度量可以包括来自先前扩充的和/或未扩充的静态分析的度量。该度量可以是关于被静态地分析的同一软件实体的或关于被分析的软件实体的一个版本的。
如果存储了来自对同一软件实体或其一个版本的先前的静态软件分析的度量(步骤60),则在步骤62检索所存储的度量。在步骤64,将所检索的度量与当前静态分析集成在一起以扩充当前静态分析。在步骤66存储来自集成的结果的度量。在该点处,该过程前进至步骤68。如果未存储来自对同一软件实体或其一个版本的先前的静态软件分析的度量(步骤60),则在步骤68,确定是否存储了来自对同一软件实体或其一个版本的先前的动态软件分析的度量。如上所述,来自先前的动态分析的度量可以包括来自先前扩充的和/或未扩充的动态分析的度量。如果存储了之前的动态分析度量(步骤68),则在步骤70,检索这些度量。在步骤72,将所检索的度量与当前静态分析的结果集成在一起以扩充当前静态分析,并且在步骤74存储来自集成的结果的度量。在该点处,该过程前进至步骤94。同样,如果未存储之前的动态分析度量(步骤68),则该过程前进至步骤94。在步骤94,将静态分析与动态分析集成在一起以协作地扩充各类分析的结果。在步骤96,提供扩充的结果。
在步骤76,执行动态软件分析。在步骤78,确定是否存储了来自先前动的态软件分析的度量。该度量可以是关于被动态地分析的同一软件实体的或关于被分析的软件实体的一个版本的。如果存储了来自先前的动态软件分析的度量(步骤78),则在步骤80检索所存储的度量。在步骤82,将所检索的度量与当前动态分析集成在一起以扩充当前分析。在步骤84,存储来自扩充的结果的度量,且该过程前进至步骤86。如果未存储来自对同一软件实体或其一个版本的先前的动态软件分析的度量(步骤78),则在步骤86,确定是否存储了来自对同一软件实体或其一个版本的先前的静态软件分析的度量。来自先前的静态分析的度量可以包括来自先前扩充的和/或未扩充的静态分析的度量。如果未存储之前的静态分析度量(步骤86),则如上所述,该过程前进至步骤94。如果存储了之前的静态分析度量(步骤86),则在步骤88,检索这些度量。在步骤90,将所检索的度量与当前动态分析的结果集成在一起以扩充当前动态分析。在步骤92存储来自扩充的动态分析的度量且如上所述,该过程前进至步骤94。
图4是用于迭代地动态地和静态地分析软件的示例系统98的图。如上所述,在一示例实施例中,分析系统98将在运行时收集的信息与静态代码分析检查相集成。在启用时,对过渡构建进行插装以收集有用的信息和在运行时可用的执行特征。该信息是作为测试和调试过程的结果来生成和存储的。系统98可被实现为客户机处理器和/或服务器处理器。系统98包括处理部分110、存储器部分102和输入/输出部分104。处理部分100、存储器部分102和输入/输出部分104被耦合在一起(图4中未示出耦合)以允许在其间进行通信。系统98可以包括分布式处理器且系统98的每一部分(例如,处理部分100、存储器部分102和输入/输出部分104)都可以包括分布式处理器。系统98能够执行与经由静态和动态软件分析来迭代地分析软件相关联的各个操作。例如,处理部分100能够执行静态软件分析、执行动态软件分析、从存储中检索静态和动态软件分析度量、存储静态和动态软件分析度量、以及集成动态软件分析和静态软件分析来扩充静态和/或动态软件分析。存储器部分102能够存储与迭代地动态地和静态地分析软件相关联的所有参数。在一示例实施例中,存储器部分102存储得自静态软件分析和动态软件分析和扩充的软件分析的度量。
如上所述,输入/输出部分104能够提供和/或接收被利用来迭代地动态地和静态地分析软件的组件。输入/输出部分104可以向另一系统、存储设备和/或数据流提供或从其接收数据。输入/输出部分104能够接收对各类软件分析的输入和提供各类软件分析的结果。
取决于处理器的精确配置和类型,存储器部分102可以是易失性的(如RAM和/或高速缓存)116、非易失性的(如ROM、闪存等)108、或其组合。系统98可以具有附加特征/功能。例如,系统98可以包括附加存储(可移动存储110和/或不可移动存储112),包括但不限于,磁盘或光盘、磁带、闪存、智能卡或其组合。诸如存储器部分102、106、108、110和112等计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据这样的信息的任意方法或技术来实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁带盒、磁带、磁盘存储或其它磁性存储设备、兼容通用串行总线(USB)的存储器、智能卡、或能用于存储所需信息且可以由系统98访问的任何其它介质。任何这样的计算机存储介质都可以是系统98的一部分。
计算机系统98还可包含允许系统98与其它设备进行通信的通信连接118。通信连接118是通信介质的一个示例。通信介质通常以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,且包含任何信息传递介质。术语“已调制数据信号”指的是其一个或多个特征以在信号中编码信息的方式被设定或更改的信号。作为示例而非限制,通信介质包括有线介质,诸如有线网络或直接线连接,以及无线介质,诸如声学、RF、红外线和其它无线介质。如此处所使用的,术语计算机可读介质包括存储介质和通信介质两者。系统98也可具有输入设备116,诸如键盘、鼠标、笔、语音输入设备、触摸输入设备等。还可包括输出设备114,如显示器、扬声器、打印机等。
尽管预想迭代动态和静态软件分析的多个实施例尤其适用于计算机化的系统,但本文中不旨在限制其范围。相反,此处使用的术语“计算机系统”旨在包括能存储和处理信息和/或能使用存储的信息来控制设备本身的行为或执行的任何和所有设备,而不管那些设备本质上是否为电子的、机械的、逻辑的、或虚拟的。
此处所述的各种技术可结合硬件或软件,或在适当时以其组合来实现。因此,迭代动态和静态软件分析的方法和装置或其某些方面或部分,可以采用包含在有形介质中的程序代码(即,指令)的形式,有形介质诸如软盘、CD-ROM、硬盘驱动器或任何其它机器可读存储介质,其中,当程序代码被加载至诸如计算机等机器并由其执行时,该机器成为用于迭代地动态地和静态地分析软件的装置。
如果需要,程序可以用汇编语言或机器语言来实现。无论如何,该语言可以是编译的或解释的语言,且组合的w迭代动态和静态软件分析也可以经由以通过某种传输介质,比如通过电线或电缆、通过光纤或经由任何其它传输形式传输的程序代码的形式体现的通信来实现,其中,当程序代码由诸如EPROM、门阵列、可编程逻辑器件(PLD)、客户计算机等机器接收、加载并执行时,该机器成为用于迭代动态和静态软件分析的装置。当在通用处理器上实现时,程序代码与处理器相结合来提供一种用于调用迭代动态和静态软件分析的功能的独特装置。另外,结合迭代动态和静态软件分析使用的任何存储技术总是可以是硬件和软件的组合。
尽管已结合各个附图的各示例实施例对迭代动态和静态软件分析进行了描述,但是可以理解,可以使用其它类似的实施例,或可以对所述实施例进行修改或添加,来实现迭代动态和静态软件分析的相同功能而不背离本发明。因此,此处所描述的迭代动态和静态软件分析不应限于任何单个实施例,而是应该根据所附权利要求书的广度和范围来解释。
Claims (9)
1.一种用于分析软件的方法,所述方法包括:
在运行时动态地分析软件实体以获得至少一个动态度量;
检索指示对所述软件实体和所述软件实体的一个版本中的一个的先前的静态分析的结果的至少一个静态度量;
将所检索的至少一个静态度量集成到所述软件实体的动态分析中;以及
存储因将所检索的至少一个静态度量集成到所述软件实体的动态分析中所得的至少一个扩充的度量;
其中存储所述至少一个扩充的度量以供与所述软件实体和所述软件实体的一个版本中的至少一个的后续静态分析一起使用。
2.如权利要求1所述的方法,其特征在于,还包括在集成之前存储来自所述软件实体的动态分析的所述至少一个动态度量。
3.如权利要求2所述的方法,其特征在于,存储所述至少一个动态度量以供与以下的至少一个一起使用:
所述软件实体和所述软件实体的一个版本中的至少一个的后续动态分析;以及
所述软件实体和所述软件实体的一个版本中的至少一个的后续静态分析。
4.如权利要求1所述的方法,其特征在于,存储所述至少一个扩充的度量以供进一步与所述软件实体和所述软件实体的一个版本中的至少一个的后续动态分析一起使用。
5.如权利要求1所述的方法,其特征在于,所述动态度量包括以下中的至少一个:在执行所述软件实体期间所述软件实体的一部分被执行的频率、所述软件实体中的参数的值的范围、执行所述软件实体的一部分所利用的存储器量、以及用于执行所述软件实体的一部分的执行时间。
6.如权利要求1所述的方法,其特征在于,静态分析包括以下中的至少一个:所述软件实体中的代码行数、秩复杂性、和所述软件实体中的参数的值的范围。
7.一种用于分析软件的系统,所述系统包括:
用于在运行时动态地分析软件实体以获得动态度量的装置;
用于检索指示对所述软件实体和所述软件实体的一个版本中的一个的先前的静态分析的结果的至少一个静态度量的装置;
用于将所检索的至少一个静态度量集成到所述软件实体的动态分析中的装置;以及
用于存储因将所检索的至少一个静态度量集成到所述软件实体的动态分析中所得的至少一个扩充的动态度量的装置;
其中存储所述至少一个扩充的度量以供与所述软件实体和所述软件实体的一个版本中的至少一个的后续静态分析一起使用。
8.如权利要求7所述的系统,其特征在于,静态分析包括以下中的至少一个:所述软件实体中的代码行数、秩复杂性、和所述软件实体中的参数的值的范围。
9.如权利要求7所述的系统,其特征在于,动态度量包括以下的至少一个:在执行所述软件实体期间所述软件实体的一部分被执行的频率、所述软件实体中的参数的值的范围、执行所述软件实体的一部分所利用的存储器量、以及用于执行所述软件实体的一部分的执行时间。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/451,851 US7975257B2 (en) | 2006-06-13 | 2006-06-13 | Iterative static and dynamic software analysis |
US11/451,851 | 2006-06-13 | ||
PCT/US2007/011198 WO2007145745A1 (en) | 2006-06-13 | 2007-05-08 | Iterative static and dynamic software analysis |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101473301A CN101473301A (zh) | 2009-07-01 |
CN101473301B true CN101473301B (zh) | 2018-12-11 |
Family
ID=38823409
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200780022369.0A Active CN101473301B (zh) | 2006-06-13 | 2007-05-08 | 迭代静态和动态软件分析 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7975257B2 (zh) |
EP (1) | EP2035922A4 (zh) |
JP (1) | JP2009540464A (zh) |
KR (1) | KR20090017598A (zh) |
CN (1) | CN101473301B (zh) |
WO (1) | WO2007145745A1 (zh) |
Families Citing this family (70)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7644334B2 (en) * | 2006-11-27 | 2010-01-05 | Honeywell International, Inc. | Requirements-based test generation |
US8627287B2 (en) * | 2007-11-29 | 2014-01-07 | Microsoft Corporation | Prioritizing quality improvements to source code |
US8307342B2 (en) * | 2008-05-14 | 2012-11-06 | Honeywell International Inc. | Method, apparatus, and system for automatic test generation from statecharts |
US8423879B2 (en) * | 2008-05-14 | 2013-04-16 | Honeywell International Inc. | Method and apparatus for test generation from hybrid diagrams with combined data flow and statechart notation |
US8782608B2 (en) * | 2008-06-17 | 2014-07-15 | International Business Machines Corporation | System and method of identifying and tracking software pattern metrics |
CN101639804A (zh) * | 2008-07-29 | 2010-02-03 | 国际商业机器公司 | 确定程序中的内存泄漏位置的方法和装置 |
US8782613B2 (en) * | 2008-08-12 | 2014-07-15 | Hewlett-Packard Development Company, L.P. | Optimizing applications using source code patterns and performance analysis |
JP2010061461A (ja) * | 2008-09-04 | 2010-03-18 | Ricoh Co Ltd | ソフトウェアの自動性能評価システム |
US20100192128A1 (en) * | 2009-01-27 | 2010-07-29 | Honeywell International Inc. | System and methods of using test points and signal overrides in requirements-based test generation |
JP5186443B2 (ja) * | 2009-06-30 | 2013-04-17 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 文字列の妥当性を判定するシステム、方法及びプログラム |
KR101412465B1 (ko) * | 2009-07-30 | 2014-06-30 | 에스케이플래닛 주식회사 | 분리 실행 기반의 컨텐츠용 코드 블록의 검증 시스템 및 방법 |
US8549490B2 (en) | 2009-09-29 | 2013-10-01 | International Business Machines Corporation | Static code analysis for packaged application customization |
US8584246B2 (en) * | 2009-10-13 | 2013-11-12 | International Business Machines Corporation | Eliminating false reports of security vulnerabilities when testing computer software |
US8468605B2 (en) * | 2009-11-30 | 2013-06-18 | International Business Machines Corporation | Identifying security vulnerability in computer software |
US9098616B2 (en) | 2009-12-11 | 2015-08-04 | International Business Machines Corporation | Analyzing computer programs to identify errors |
US9098619B2 (en) | 2010-04-19 | 2015-08-04 | Honeywell International Inc. | Method for automated error detection and verification of software |
US20110271258A1 (en) * | 2010-04-30 | 2011-11-03 | Microsoft Corporation | Software Development Tool |
US8443342B2 (en) * | 2010-06-01 | 2013-05-14 | Microsoft Corporation | Static analysis using interactive and integration tools |
US8578344B2 (en) | 2010-06-17 | 2013-11-05 | Microsoft Corporation | Incremental compositional dynamic test generation |
US8412744B2 (en) * | 2010-06-23 | 2013-04-02 | Microsoft Corporation | Visualization of runtime analysis across dynamic boundaries |
US8528095B2 (en) | 2010-06-28 | 2013-09-03 | International Business Machines Corporation | Injection context based static analysis of computer software applications |
US8607191B2 (en) | 2010-06-30 | 2013-12-10 | International Business Machines Corporation | Automated discovery of programmatic resources |
US20120054724A1 (en) * | 2010-08-31 | 2012-03-01 | International Business Machines Corporation | Incremental static analysis |
CN102012814B (zh) * | 2010-11-24 | 2015-07-22 | 中兴通讯股份有限公司 | 软件版本的构建方法和系统 |
US8667584B2 (en) | 2010-12-15 | 2014-03-04 | International Business Machines Corporation | Formal analysis of the quality and conformance of information flow downgraders |
US8984488B2 (en) | 2011-01-14 | 2015-03-17 | Honeywell International Inc. | Type and range propagation through data-flow models |
US8856764B2 (en) * | 2011-01-25 | 2014-10-07 | International Business Machines Corporation | Distributed static analysis of computer software applications |
US8984343B2 (en) | 2011-02-14 | 2015-03-17 | Honeywell International Inc. | Error propagation in a system model |
US8799859B2 (en) * | 2011-05-19 | 2014-08-05 | Siemens Aktiengesellschaft | Augmented design structure matrix visualizations for software system analysis |
US9785470B2 (en) * | 2011-06-20 | 2017-10-10 | Microsoft Technology Licensing, Llc | Memory management model and interface for unmodified applications |
EP2557503B1 (en) * | 2011-07-28 | 2020-04-01 | Tata Consultancy Services Ltd. | Application performance measurement and reporting |
US8769696B2 (en) | 2011-09-29 | 2014-07-01 | International Business Machines Corporation | Automated detection of flaws and incompatibility problems in information flow downgraders |
US10157049B2 (en) * | 2011-10-26 | 2018-12-18 | International Business Machines Corporation | Static analysis with input reduction |
US8930886B2 (en) | 2011-12-15 | 2015-01-06 | Microsoft Corporation | Identifying application resources through implicit application models |
CN102968173B (zh) * | 2012-09-28 | 2015-08-26 | 北京航空航天大学 | 一种基于带宽自适应代码迁移的移动设备节能方法 |
US8959486B2 (en) * | 2013-01-09 | 2015-02-17 | International Business Machines Corporation | Automatic regression testing based on cyclomatic complexity |
US9552285B2 (en) | 2013-05-02 | 2017-01-24 | Microsoft Technology Licensing, Llc | Micro-execution for software testing |
US9904541B2 (en) * | 2013-05-09 | 2018-02-27 | Microsoft Technology Licensing, Llc | Semantic baselining |
US20140372988A1 (en) * | 2013-06-14 | 2014-12-18 | Microsoft Corporation | Using a Static Analysis for Configuring a Follow-On Dynamic Analysis for the Evaluation of Program Code |
US20150033339A1 (en) * | 2013-07-29 | 2015-01-29 | Crowdstrike, Inc. | Irrelevant Code Identification |
US9305279B1 (en) * | 2014-11-06 | 2016-04-05 | Semmle Limited | Ranking source code developers |
US9378013B2 (en) | 2014-11-14 | 2016-06-28 | Semmle Limited | Incremental source code analysis |
US9417985B2 (en) | 2014-11-14 | 2016-08-16 | Semmle Limited | Distributed analysis and attribution of source code |
US10719420B2 (en) | 2015-02-10 | 2020-07-21 | International Business Machines Corporation | System level testing of multi-threading functionality including building independent instruction streams while honoring architecturally imposed common fields and constraints |
KR102461180B1 (ko) * | 2016-06-13 | 2022-11-01 | (주)씽크포비엘 | 소프트웨어 안전성 분석 방법 및 장치 |
KR102426581B1 (ko) * | 2016-06-13 | 2022-07-29 | (주)씽크포비엘 | 전장용 소프트웨어 안전성 분석 방법 및 장치 |
KR101675986B1 (ko) * | 2016-06-13 | 2016-11-23 | (주)씽크포비엘 | 전장용 소프트웨어 안전성 분석 방법 및 장치 |
KR101886203B1 (ko) * | 2016-07-19 | 2018-09-06 | 주식회사 스패로우 | 프로그램 분석 장치 및 방법 |
EP3497574A4 (en) | 2016-08-09 | 2020-05-13 | Sealights Technologies Ltd. | SYSTEM AND METHOD FOR THE CONTINUOUS EXAMINATION AND PROVISION OF SOFTWARE |
US9645817B1 (en) * | 2016-09-27 | 2017-05-09 | Semmle Limited | Contextual developer ranking |
US10545848B2 (en) | 2016-10-11 | 2020-01-28 | International Business Machines Corporation | Boosting the efficiency of static program analysis using configuration tuning |
US10885057B2 (en) | 2016-11-07 | 2021-01-05 | Tableau Software, Inc. | Correlated incremental loading of multiple data sets for an interactive data prep application |
US10242079B2 (en) | 2016-11-07 | 2019-03-26 | Tableau Software, Inc. | Optimizing execution of data transformation flows |
US11853529B2 (en) | 2016-11-07 | 2023-12-26 | Tableau Software, Inc. | User interface to prepare and curate data for subsequent analysis |
US11200144B1 (en) | 2017-09-05 | 2021-12-14 | Amazon Technologies, Inc. | Refinement of static analysis of program code |
US10394691B1 (en) | 2017-10-05 | 2019-08-27 | Tableau Software, Inc. | Resolution of data flow errors using the lineage of detected error conditions |
US10769250B1 (en) * | 2017-10-26 | 2020-09-08 | Amazon Technologies, Inc. | Targeted security monitoring using semantic behavioral change analysis |
US10713145B2 (en) | 2018-01-05 | 2020-07-14 | International Business Machines Corporation | Automated debugging with combined static and dynamic analysis |
US10379849B1 (en) * | 2018-02-01 | 2019-08-13 | Dell Products L.P. | Methods and apparatus for visualization of contextual code execution |
KR102117905B1 (ko) * | 2018-04-09 | 2020-06-03 | 슈어소프트테크주식회사 | 신뢰성 테스트 결과 관리 데이터 자동 생성 방법 및 신뢰성 테스트 결과 관리 데이터 자동 생성 장치 |
US11086759B2 (en) | 2018-09-27 | 2021-08-10 | SeaLights Technologies LTD | System and method for probe injection for code coverage |
JP7046217B2 (ja) * | 2018-10-03 | 2022-04-01 | 三菱電機株式会社 | ソフトウェア解析装置、ソフトウェア解析方法およびソフトウェア解析プログラム |
US10691304B1 (en) | 2018-10-22 | 2020-06-23 | Tableau Software, Inc. | Data preparation user interface with conglomerate heterogeneous process flow elements |
US11250032B1 (en) | 2018-10-22 | 2022-02-15 | Tableau Software, Inc. | Data preparation user interface with conditional remapping of data values |
CN109783383A (zh) * | 2019-01-08 | 2019-05-21 | 郑州云海信息技术有限公司 | 一种代码级软件测试方法、装置、终端及存储介质 |
US11573885B1 (en) | 2019-09-26 | 2023-02-07 | SeaLights Technologies LTD | System and method for test selection according to test impact analytics |
US11100097B1 (en) | 2019-11-12 | 2021-08-24 | Tableau Software, Inc. | Visually defining multi-row table calculations in a data preparation application |
CN111061789A (zh) * | 2019-12-10 | 2020-04-24 | 国家电网有限公司 | 一种智能电网基建信息管理系统 |
US12032994B1 (en) | 2021-10-18 | 2024-07-09 | Tableau Software, LLC | Linking outputs for automatic execution of tasks |
US11782813B2 (en) * | 2021-12-17 | 2023-10-10 | Intel Corporation | Methods and apparatus to determine refined context for software bug detection and correction |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1992009034A1 (en) * | 1990-11-09 | 1992-05-29 | Techforce B.V. | Method for analysis and prediction of a software program development process |
US5655074A (en) * | 1995-07-06 | 1997-08-05 | Bell Communications Research, Inc. | Method and system for conducting statistical quality analysis of a complex system |
US5909577A (en) * | 1994-04-18 | 1999-06-01 | Lucent Technologies Inc. | Determining dynamic properties of programs |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3577760D1 (de) | 1985-12-30 | 1990-06-21 | Ibm Deutschland | Verfahren und einrichtung zur analyse von steuerprogrammen. |
US5317740A (en) | 1991-03-07 | 1994-05-31 | Digital Equipment Corporation | Alternate and iterative analysis of computer programs for locating translatable code by resolving callbacks and other conflicting mutual dependencies |
US5485409A (en) * | 1992-04-30 | 1996-01-16 | International Business Machines Corporation | Automated penetration analysis system and method |
JPH09502034A (ja) * | 1993-05-10 | 1997-02-25 | シンキング・ソフトウエア・インコーポレーテッド | より少ない再コンパイル及び再リンケージ処理を可能にする目標プロセスのオブジェクト・コードの別形式を導入することにより、誤り位置とシステムへの新たな要求に起因する修正位置との自動的な識別を可能にする、コンピュータ・ソフトウェア・プロセスにおける不確実性最小化方法 |
US6789054B1 (en) * | 1999-04-25 | 2004-09-07 | Mahmoud A. Makhlouf | Geometric display tools and methods for the visual specification, design automation, and control of adaptive real systems |
AU6204000A (en) | 1999-06-30 | 2001-01-31 | Sun Microsystems, Inc. | Method and apparatus for static analysis of software code |
US6892297B1 (en) * | 2000-03-16 | 2005-05-10 | International Business Machines Corporation | Method and system for searching an updated version of boot code for updating current running boot code prior to loading an operating system |
US6754612B1 (en) * | 2000-06-29 | 2004-06-22 | Microsoft Corporation | Performance markers to measure benchmark timing of a plurality of standard features in an application program |
US7032214B1 (en) * | 2000-06-29 | 2006-04-18 | Microsoft Corporation | Performance markers to measure performance of features in a program |
JP2002259167A (ja) * | 2000-12-26 | 2002-09-13 | Fujitsu Ltd | 実行性能情報の提示方法、及び記録媒体 |
JP2002278792A (ja) * | 2001-03-21 | 2002-09-27 | Ricoh Co Ltd | ソフトウェア試験装置 |
US6968341B2 (en) | 2001-05-25 | 2005-11-22 | International Business Machines Corporation | System and method for post-analyzing, and sequentially visualizing plurality of predefined metrics in a stored dynamic data values associated identifiers within determined time range |
AU2002316479A1 (en) | 2001-07-03 | 2003-01-21 | Altaworks Corporation | System and methods for monitoring performance metrics |
JP2003114813A (ja) * | 2001-10-03 | 2003-04-18 | Ibm Japan Ltd | 分析サーバ、プログラム分析ネットワークシステム、およびプログラム分析方法 |
US7219341B2 (en) | 2002-10-31 | 2007-05-15 | International Business Machines Corporation | Code analysis for selective runtime data processing |
JPWO2004081788A1 (ja) | 2003-03-10 | 2006-06-15 | カテナ株式会社 | Lyee指向ソフトウェアに関する静的分析方法 |
KR20040080844A (ko) | 2003-03-14 | 2004-09-20 | 주식회사 안철수연구소 | 정적 분석을 이용한 악성 스크립트 감지 방법 |
US20050108562A1 (en) | 2003-06-18 | 2005-05-19 | Khazan Roger I. | Technique for detecting executable malicious code using a combination of static and dynamic analyses |
US20050015752A1 (en) | 2003-07-15 | 2005-01-20 | International Business Machines Corporation | Static analysis based error reduction for software applications |
EP1693745A4 (en) * | 2003-09-22 | 2007-03-07 | Catena Corp | METHOD FOR GENERATING SOFTWARE |
US7032191B2 (en) * | 2004-02-27 | 2006-04-18 | Rapid Bridge Llc | Method and architecture for integrated circuit design and manufacture |
US7383583B2 (en) | 2004-03-05 | 2008-06-03 | Microsoft Corporation | Static and run-time anti-disassembly and anti-debugging |
US7398520B2 (en) | 2004-06-07 | 2008-07-08 | Microsoft Corporation | Efficient construction of pruned SSA form |
US7451439B2 (en) | 2004-12-03 | 2008-11-11 | Palo Alto Research Center Incorporated | System and method for automatically identifying compound refactorings of program code through quantitative metric analysis |
US7558719B1 (en) * | 2005-04-14 | 2009-07-07 | Xilinx, Inc. | System and method for runtime analysis of system models for variable fidelity performance analysis |
US20070283326A1 (en) * | 2006-06-01 | 2007-12-06 | Consolatti Scott M | System for Defining and Evaluating Target Thresholds Against Performance Metrics |
-
2006
- 2006-06-13 US US11/451,851 patent/US7975257B2/en active Active
-
2007
- 2007-05-08 KR KR1020087030428A patent/KR20090017598A/ko not_active IP Right Cessation
- 2007-05-08 WO PCT/US2007/011198 patent/WO2007145745A1/en active Application Filing
- 2007-05-08 JP JP2009515396A patent/JP2009540464A/ja active Pending
- 2007-05-08 CN CN200780022369.0A patent/CN101473301B/zh active Active
- 2007-05-08 EP EP07776918A patent/EP2035922A4/en not_active Ceased
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1992009034A1 (en) * | 1990-11-09 | 1992-05-29 | Techforce B.V. | Method for analysis and prediction of a software program development process |
US5909577A (en) * | 1994-04-18 | 1999-06-01 | Lucent Technologies Inc. | Determining dynamic properties of programs |
US5655074A (en) * | 1995-07-06 | 1997-08-05 | Bell Communications Research, Inc. | Method and system for conducting statistical quality analysis of a complex system |
Also Published As
Publication number | Publication date |
---|---|
EP2035922A1 (en) | 2009-03-18 |
US7975257B2 (en) | 2011-07-05 |
KR20090017598A (ko) | 2009-02-18 |
JP2009540464A (ja) | 2009-11-19 |
EP2035922A4 (en) | 2009-07-22 |
WO2007145745A1 (en) | 2007-12-21 |
CN101473301A (zh) | 2009-07-01 |
US20070288899A1 (en) | 2007-12-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101473301B (zh) | 迭代静态和动态软件分析 | |
CN109426723B (zh) | 使用释放后内存的检测方法、系统、设备及存储介质 | |
US9201632B2 (en) | Systems and methods for incremental software development | |
Sambasivan et al. | Principled workflow-centric tracing of distributed systems | |
Krogmann et al. | Using genetic search for reverse engineering of parametric behavior models for performance prediction | |
US8561024B2 (en) | Developing software components and capability testing procedures for testing coded software component | |
CN109564540B (zh) | 用于jit编译器的调试的系统、方法和设备 | |
EP3234851B1 (en) | A system and method for facilitating static analysis of software applications | |
US9405906B1 (en) | System and method for enhancing static analysis of software applications | |
US20110113288A1 (en) | Generating random sequences based on stochastic generative model having multiple random variates | |
US20130179867A1 (en) | Program Code Analysis System | |
US20150143342A1 (en) | Functional validation of software | |
US10229273B2 (en) | Identifying components for static analysis of software applications | |
Sottile et al. | Semi-automatic extraction of software skeletons for benchmarking large-scale parallel applications | |
Zhong et al. | Scalable compositional static taint analysis for sensitive data tracing on industrial micro-services | |
CN115203061B (zh) | 接口自动化测试方法、装置、电子设备及存储介质 | |
US8756580B2 (en) | Instance-based field affinity optimization | |
US10324822B1 (en) | Data analytics in a software development cycle | |
Fedorova et al. | Performance comprehension at WiredTiger | |
Amico et al. | Defining best practices for quantum benchmarks | |
WO2021019401A1 (en) | Automatic verification of optimization of high level constructs using test vectors | |
JP5093508B2 (ja) | ループ最適化システム、ループ最適化方法、及びループ最適化用プログラム | |
US10534691B2 (en) | Apparatus and method to improve accuracy of performance measurement for loop processing in a program code | |
CN115687158B (zh) | 一种协议软件的测试方法及装置 | |
JP7210917B2 (ja) | 検証情報生成装置、検証情報生成方法、及び検証情報生成プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150803 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20150803 Address after: Washington State Applicant after: Micro soft technique license Co., Ltd Address before: Washington State Applicant before: Microsoft Corp. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |