Dynamic program analysis

Dynamic program analysis

Dynamic program analysis is the analysis of computer software that is performed by executing programs built from that software system on a real or virtual processor. For dynamic program analysis to be effective, the target program must be executed with sufficient test inputs to produce interesting behavior. Use of software testing techniques such as code coverage helps ensure that an adequate slice of the program's set of possible behaviors has been observed. Also, care must be taken to minimize the effect that instrumentation has on the execution (including temporal properties) of the target program. Inadequate testing can lead to catastrophic failures similar to the maiden flight of the Ariane 5 rocket launcher where dynamic execution errors (run time error) resulted in the destruction of the vehicle[1].

Contents

Examples of Tools

  • Avalanche is an open source tool that generates input data demonstrating crashes in the analysed program.
  • BoundsChecker: Memory error detection for Windows based applications. Part of Micro Focus DevPartner.
  • ClearSQL: is a review and quality control and a code illustration tool for PL/SQL.
  • Daikon (system) is an implementation of dynamic invariant detection. Daikon runs a program, observes the values that the program computes, and then reports properties that were true over the observed executions, and thus likely true over all executions.
  • Dmalloc, library for checking memory allocation and leaks. Software must be recompiled, and all files must include the special C header file dmalloc.h.
  • DynInst is a runtime code-patching library that is useful in developing dynamic program analysis probes and applying them to compiled executables. Dyninst does not require source code or recompilation in general, however, non-stripped executables and executables with debugging symbols are easier to instrument.
  • HP Security Suite is a suite of Tools at various stages of development. QAInspect and WebInspect are generally considered Dynamic Analysis Tools, while DevInspect is considered a static code analysis tool.
  • IBM Rational AppScan is a suite of application security solutions targeted for different stages of the development lifecycle. The suite includes two main dynamic analysis products - IBM Rational AppScan Standard Edition, and IBM Rational AppScan Enterprise Edition. In addition, the suite includes IBM Rational AppScan Source Edition - a static analysis tool.
  • Intel Thread Checker is a runtime threading error analysis tool which can detect potential data races and deadlocks in multithreaded Windows or Linux applications.
  • Intel Parallel Inspector performs run time threading and memory error analysis in Windows.
  • Parasoft Insure++ is runtime memory analysis and error detection tool. Its Inuse component provides a graphical view of memory allocations over time, with specific visibility into overall heap usage, block allocations, possible outstanding leaks, etc.
  • Parasoft Jtest uses runtime error detection to expose defects such as race conditions, exceptions, resource & memory leaks, and security attack vulnerabilities.
  • Polyspace uses abstract interpretation to detect and prove the absence of certain run time errors in source code.
  • Purify: mainly memory corruption detection and memory leak detection.
  • Valgrind runs programs on a virtual processor and can detect memory errors (e.g., misuse of malloc and free) and race conditions in multithread programs.
  • VB Watch injects dynamic analysis code into Visual Basic programs to monitor their performance, call stack, execution trace, instantiated objects, variables and code coverage.

Most performance analysis tools use dynamic program analysis techniques.[citation needed]

Historical examples

See also

References

  1. ^ Dowson, M. (March 1997). "The Ariane 5 Software Failure". Software Engineering Notes 22 (2): 84. doi:10.1145/251880.251992. 



Wikimedia Foundation. 2010.

Игры ⚽ Поможем сделать НИР

Look at other dictionaries:

  • Program analysis — For other uses, see Program analysis (disambiguation). In computer science, program analysis is the process of automatically analysing the behavior of computer programs. Two main approaches in program analysis are static program analysis and… …   Wikipedia

  • Program analysis (computer science) — Computer program analysis is the process of automatically analysing the behavior of computerprograms.Two main approaches in program analysis are static program analysisand dynamic program analysis.Main applications of program analysis are program …   Wikipedia

  • Static program analysis — This article is about certain software quality assessment methods. For the statistical method, see Static analysis. Static program analysis (also Static code analysis or SCA) is the analysis of computer software that is performed without actually …   Wikipedia

  • Dynamic scoring — Dynamic analysis redirects here. For the software technique, see dynamic program analysis. Dynamic scoring predicts the impact of fiscal policy changes by forecasting the effects of economic agents reactions to policy. It is an adaptation of… …   Wikipedia

  • Dynamic testing — (or dynamic analysis) is a term used in software engineering to describe the testing of the dynamic behavior of code. That is, dynamic analysis refers to the examination of the physical response from the system to variables that are not constant… …   Wikipedia

  • Analysis — (from Greek ἀνάλυσις , a breaking up ) is the process of breaking a complex topic or substance into smaller parts to gain a better understanding of it. The technique has been applied in the study of mathematics and logic since before Aristotle,… …   Wikipedia

  • Program slicing — In computer programming, program slicing is the computation of a program slice. The program slice consists of the parts of a program that may affect the values computed at some point of interest, referred as a slicing criterion. Program slicing… …   Wikipedia

  • Performance analysis — In software engineering, performance analysis, more commonly today known as profiling, is the investigation of a program s behavior using information gathered as the program executes (i.e. it is a form of dynamic program analysis, as opposed to… …   Wikipedia

  • Dynamic stochastic general equilibrium — modeling (abbreviated DSGE or sometimes SDGE or DGE) is a branch of applied general equilibrium theory that is influential in contemporary macroeconomics. The DSGE methodology attempts to explain aggregate economic phenomena, such as economic… …   Wikipedia

  • Dynamic Diagrams — is an information design consultancy based in Providence, Rhode Island, USA. Its services include information architecture and design for web sites and applications, as well as diagramming complex processes, systems, and data to help clients… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”