CN101473301B - 迭代静态和动态软件分析 - Google Patents

迭代静态和动态软件分析 Download PDF

Info

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
Application number
CN200780022369.0A
Other languages
English (en)
Other versions
CN101473301A (zh
Inventor
M·C·范宁
N·奎热拉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN101473301A publication Critical patent/CN101473301A/zh
Application granted granted Critical
Publication of CN101473301B publication Critical patent/CN101473301B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3616Software analysis for verifying properties of programs using software metrics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/77Software 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所述的系统,其特征在于,动态度量包括以下的至少一个:在执行所述软件实体期间所述软件实体的一部分被执行的频率、所述软件实体中的参数的值的范围、执行所述软件实体的一部分所利用的存储器量、以及用于执行所述软件实体的一部分的执行时间。
CN200780022369.0A 2006-06-13 2007-05-08 迭代静态和动态软件分析 Active CN101473301B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
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