JP2009540464A - 反復的な静的および動的ソフトウェア分析 - Google Patents

反復的な静的および動的ソフトウェア分析 Download PDF

Info

Publication number
JP2009540464A
JP2009540464A JP2009515396A JP2009515396A JP2009540464A JP 2009540464 A JP2009540464 A JP 2009540464A JP 2009515396 A JP2009515396 A JP 2009515396A JP 2009515396 A JP2009515396 A JP 2009515396A JP 2009540464 A JP2009540464 A JP 2009540464A
Authority
JP
Japan
Prior art keywords
analysis
software entity
static
dynamic
software
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.)
Pending
Application number
JP2009515396A
Other languages
English (en)
Inventor
シー.ファニング マイケル
ゲレーラ ニコラス
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 Corp
Original Assignee
Microsoft Corp
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 Corp filed Critical Microsoft Corp
Publication of JP2009540464A publication Critical patent/JP2009540464A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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/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

静的コード分析および動的コード分析が、シームレスかつ反復的に実施される。ソフトウェア分析ツールが、動的分析と静的分析の結果を統合し、前の1つまたは複数の分析からの結果を反復的に使用して、現在の分析を増強する。デバッグプロセス中に、実行時に収集された情報が静的コード分析結果と統合される。この情報は、生成されて、テストおよびデバッグプロセスの結果の一部として記憶される。記憶された情報は、改善された分析結果を提供するために後で利用される。このソフトウェア分析ツールは、ソフトウェア開発者が静的分析と動的分析とを別々に実施する必要をなくす。

Description

本発明は一般に、コンピューティングシステムに関し、より具体的には、コンピューティングシステムのためのソフトウェアの開発に関する。
典型的なソフトウェア分析ツールは、ソフトウェアコードを静的に、また動的に、独立して分析する能力を提供する。静的分析は、データフロー分析やバリュートラッキング(value tracking)などの技法を介して、コードを実際に実行することなくそのコード中の正当性問題を識別することができる。しかし、静的分析は、コンパイルされたバイナリコードの静的検査を介して入手可能な情報によって制限される。動的分析は、たとえば、タイミングに関する情報、およびメモリがどのくらい割り振られるかに関する情報を提供することができる。ソフトウェア開発者はしばしば、ソフトウェア開発プロセス中に静的分析と動的分析とを独立して実施し、一方のタイプの分析の結果を他方に適用しようとする。
本発明の目的とするところは、反復的な動的および静的ソフトウェア分析を提供することにある。
以下に、「発明を実施するための最良の形態」でさらに後述する概念の精選を、単純化した形で紹介する。この説明は、本発明の主題の鍵となる特徴または本質的な特徴を識別することを意図するものではなく、また、本発明の主題の範囲を限定するために使用されることを意図するものでもない。
ソフトウェア分析ツールが、静的と動的の両方のコード分析をシームレスに提供する。コードを実行することによって得られた情報が、収集され、発行され、新しい分析を可能にするため、および実行時の挙動に基づいておそらくは意味のあるセットに分析結果の焦点を合わせるために静的分析の間に利用される。このソフトウェア分析ツールは、動的分析と静的分析の結果を統合し、前の1つまたは複数の分析からの結果を反復的に利用して、現在の分析を増強する。このソフトウェア分析ツールは、ソフトウェア開発者が静的分析と動的分析とを別々に実施する必要をなくす。例示的な一実施形態では、デバッグプロセス中に、分析対象であるコードが実行される。前の静的分析および動的分析からの結果が統合されて、デバッグプロセスが増強される。デバッグプロセスの結果は、静的分析結果と動的分析結果の両方を示す。
前述の概要ならびに以下の詳細な説明は、添付の図面と共に読めば、よりよく理解されるだろう。結合された反復的な動的および静的ソフトウェア分析を例証する目的で、図面には、その例示的な構造を示す。しかし、反復的な動的および静的ソフトウェア分析は、開示する特定の方法および手段には限定されない。
デバッグプロセス中に、静的ソフトウェア分析結果と動的ソフトウェア分析結果が統合される。実行時に収集された情報が、静的コード分析結果と統合される。この情報は、生成されて、例示的な一実施形態ではテストおよびデバッグプロセスの付帯結果としてディスクに維持される。記憶された情報は、改善された分析結果を提供するために後で利用される。
例示的な一実施形態では、ビルド時に静的分析が呼び出される。静的分析は、その初期状態では、ノイズを最小限に抑えるように調節される。すなわち、情報が確実性の高い結果を保証するには十分に揃っていない(またはまったくない)場合には、分析は行われない。コードをビルドした際の付帯結果として、アプリケーションは、いくつかのメトリクスを実行時に収集するように装備される。この情報は、デバッグのシナリオを含めてユーザがアプリケーションを実行するときはいつでも、動的に収集される。この例示的な実施形態では、実行時に、いくらかのデータが動的に収集されて記憶装置に維持される。後続の静的分析の間、この情報は回復されて、静的分析結果を低ノイズかつ高価値のメッセージのセットに精緻化するのに使用され、かつ/あるいは、動的に収集されたメトリクスが利用可能な場合にのみ可能な、静的に行われる、完全に新しい分析を可能にするのに使用される。
たとえば、ある例示的なシナリオでは、静的分析ツールは、オブジェクトコード中の、またはマネージド分析の場合にはIL(中間言語)中の無効性を検出するチェックを含む。このチェックは、デフォルトではイネーブルでない。というのは、無効性のパターンは何百もの個所で検出される可能性が高く、大多数の場合、いずれかの個別の違反を解決することは、結果として意味のある性能利得にならず、したがって修復する時間に見合う価値がないか、あるいはコード欠陥を招くリスクが増大するからである。この例示的なシナリオでは、ビルド時に、コードが、個々のメソッドまたは関数に対して行われる呼出し(call)の回数を記録するように装備される。ユーザはコードを実行し、これらのメトリクスが収集される。後続の分析動作の間、前述の無効性検出チェックがメソッドに対して実施される。静的分析段階は、リポジトリ中で分析ターゲットメソッドを捜し、この分析ターゲットメソッドがアプリケーション中の他のメソッド/関数と比較して頻繁に呼び出されることを指摘する。静的分析チェックは、この違反をユーザに対して明るみにする。というのは、ここで、この問題に対処すれば意味のある性能利得になる可能性が高いことが決定されているからである。
別の例示的なシナリオでは、呼出し場所に対して興味深いものを検証するチェックが存在する。たとえば、このチェックは、呼出し場所がパラメータをデリファレンス(de-reference)することになるかどうか判定することを試みることができる。そうである場合は、静的チェッカは、ヌルである可能性のあるアイテムをこの呼出し場所におそらく渡す(これは実行時にクラッシュという結果になる可能性がある)ユーザに、警告することができる。このチェックは、仮想呼出し場所を分析することはできない。というのは、呼出し場所はメソッドの仮想宣言を参照するだけだからである。すなわち、ILは、定義への一般化された参照を含み、定義を提供するどんな特定の具体的実装も参照しない。実行中に、仮想メソッドを実装する特定のサブクラスが検出され、IL中に存在する一般的な参照と関連付けられる。後続の静的分析の間、前述のチェックは、一般的な呼出し場所におそらく関連付けられていた特定の実装を取り出し、この特定の実装をそのチェックにかけることができる。
図1は、反復的な動的および静的ソフトウェア分析を提供するための例示的なプロセスの流れ図である。例示的な一実施形態では、図1に示すように、動的ソフトウェア分析が実施され、動的分析の結果が、前に記憶された静的分析結果で増強される。ステップ12で、動的ソフトウェア分析が開始される。ステップ14で、動的ソフトウェア分析(DA)が実行される。動的ソフトウェア分析は、任意の適切な動的ソフトウェア分析ツールによって実施することができる。たとえば、動的分析は、MICROSOFT(登録商標)VISUAL STUDIOなどのソフトウェア開発ツールを利用して実施することができる。動的ソフトウェア分析の間、分析対象であるソフトウェアまたはその一部が実行され、実行時分析が実施される。動的ソフトウェア分析からの結果は、たとえば、操作の実施および/または分析対象であるソフトウェアの一部(セグメント)の実行に必要とされた時間量など、タイミング情報を含むことができる。例示的な動的ソフトウェア分析メトリクスは、呼出しが実行される頻度、関数の実行に必要とされる経験的時間、仮想呼出し場所に関連付けられたメソッドの定義、および、実行の際に呼出しがメモリを割り振るかどうかを含む。
例示的な一実施形態では、呼出しが実行される頻度を用いて、高確実性であり頻繁に実施する静的分析性能チェックが精緻化される。この場合、頻繁に呼び出される分析ターゲットのセットに結果を絞り込むことが有利である。頻繁に呼び出されないアイテムのための修復時間は、利益を保証しない。というのは、インクリメンタルな性能利得が小さいことになるからである。コード変更は、回帰(regression)のリスクも招く。これは、最も意味のあるセットに結果の焦点を合わせるもう1つの理由である。
ある例示的なシナリオでは、ユーザが、メソッドまたは関数が性能の影響を受けやすいと指定したい場合がある。すなわち、メソッドまたは呼出しは、ある時間しきい値内で実行されることが望まれる。関数を実行するための実際の経験的時間を利用して、実行時に実行時間がこのしきい値を超えるかどうか判定することができる。そして、結果を後続の静的分析実行において発行することができる。静的分析はまた、どの呼出し場所(call site)が、実行において費やされた時間の原因であったかを示すことができる。
特定の呼出し場所実装へのアクセスを必要とする静的分析は、仮想呼出し場所に対して作用することはできない。仮想呼出し場所に関連付けられた特定の具体的なメソッド定義を決定し、これを使用して静的分析を増強することができる。仮想呼出し場所にバインドされた特定のサブクラスなどの情報を静的分析に提供することができる。
ある例示的なシナリオでは、実行中にメモリが割り振られるかどうかを知ることが望まれる場合がある。メモリ割振りが行われるかどうかは、静的に決定するのが困難であり場合によっては不可能である可能性がある。たとえば、仮想メソッドへの呼出しの結果として生じるメモリ割振りは、静的分析を介して決定することはできない。この情報は、動的に収集して、後続の静的分析に提供することができる。
ステップ16で、前の動的ソフトウェア分析からのメトリクスが記憶されているかどうかが判定される。メトリクスは、動的分析されている同じソフトウェアエンティティ、または分析されているソフトウェアエンティティのバージョンに関するものとすることができる。たとえば、コード開発中に、ソフトウェアコンポーネントの第1のバージョンを動的分析することができ、それから得られる選択された(またはすべての)メトリクスをメモリに記憶することができる。その後、ソフトウェアモジュールに変更を加えることができ、その結果、ソフトウェアモジュールの別のバージョンが得られる。ソフトウェアの後続バージョンが動的分析されたとき(たとえばステップ14)、ソフトウェアモジュールの前バージョンに対する動的分析からのメトリクスが記憶されていると判定することができる(たとえばステップ16)。前の動的分析からのメトリクスは、増強された、かつ/または増強されていない前の動的分析からのメトリクスを含むことができる。すなわち、前の動的分析からのメトリクスは、静的分析によって増強された動的分析からのメトリクス、前の動的分析によって増強された動的分析からのメトリクス、増強されていない動的分析からのメトリクス、またはこれらの組合せを含むことができる。
例示的な一実施形態では、静的分析は、それら自体は静的分析されていない他のバイナリ中に呼び出すコードに対して行われる。しかし、これらの依存関係について動的に獲得されたデータが存在する場合は、ターゲットバイナリの静的分析は、この情報を利用してそのクライアント使用を検証する。
同じソフトウェアエンティティまたはそのバージョンに対する前の動的ソフトウェア分析からのメトリクスが記憶されている場合は(ステップ16)、ステップ18で、記憶されているメトリクスが取り出される。メトリクスは、たとえば磁気記憶装置、光学記憶装置、ハードディスク、半導体メモリ、フラッシュメモリなど、任意の適切な記憶媒体に記憶することができる。ステップ20で、取り出されたメトリクスが現在の動的分析と統合されて、現在の分析が増強される。
例示的な一実施形態では、効率のために、静的分析に基づいて実行時収集を制限するための機構が実装される。たとえば、ユーザは、特定のタイプを、またはあるタイプ中の特定のメソッドを分析することに関心があることを示すことができる。実行時には、静的分析されることになるターゲットから実行中のコードに到達可能であることが証明されない限り、動的データ収集を完全に無効にすることができる。
ステップ22で、増強された結果からのメトリクスが記憶され、プロセスはステップ24に進む。たとえば、コード開発中に、ソフトウェアエンティティの第1のバージョンは、第1のバージョンが動的分析された時点では存在しないネットワーク場所への呼出しを含むことができる。したがって、この場所への呼出しは仮想呼出しとして扱われることになり、第1のバージョンの動的分析の間、タイミングやメモリ割振りなどのメトリクスが推定されることになる。その後、この場所が完成されるものとすることができ、このソフトウェアエンティティの後続の動的分析は、実際のネットワーク場所への呼出しに関連するタイミングやメモリ割振りなどのメトリクスを含むことになる。
同じソフトウェアエンティティまたはそのバージョンに対する前の動的ソフトウェア分析からのメトリクスが記憶されていない場合は(ステップ16)、ステップ24で、同じソフトウェアエンティティまたはそのバージョンに対する前の静的ソフトウェア分析からのメトリクスが記憶されているかどうかが判定される。前の静的分析からのメトリクスは、増強された、かつ/または増強されていない前の静的分析からのメトリクスを含むことができる。すなわち、前の静的分析からのメトリクスは、動的分析によって増強された静的分析からのメトリクス、前の静的分析によって増強された静的分析からのメトリクス、増強されていない静的分析からのメトリクス、またはこれらの組合せを含むことができる。静的分析は、ソフトウェアに対して、そのソフトウェアを実行することなく実施される。静的分析は、ソースコードおよび/またはオブジェクトコードに対して実施することができる。静的分析からの結果は、たとえば、ソフトウェア中のコードの行数、可能性のあるコーディングエラー(たとえば誤った構文)、保守性メトリクス、プログラムセマンティックエラー、論理エラー、サイクロマティック複雑度(サイクロマティック複雑度は、プログラムの健全性および信頼性の幅広い尺度である。サイクロマティック複雑度は、他のプログラムの複雑度との比較に利用できる単一の序数を提供する。)などを含むことができる。別の例示的な静的分析メトリクスは、バイナリ、タイプ、メソッドに対して分析/実行時収集を有効にすべきかどうかを示す単純な構成詳細静的設定を含むことができる。さらに別の例示的な静的分析メトリクスは、コードの複雑度を含むことができる。
前の静的分析メトリクスが記憶されていない場合は(ステップ24)、ステップ32で、現在の動的分析の結果が提供される。前の静的分析メトリクスが記憶されている場合は(ステップ24)、ステップ26でメトリクスが取り出される。ステップ28で、取り出されたメトリクスが現在の動的分析の結果と統合されて、現在の動的分析が増強される。ステップ30で、統合された結果からのメトリクスが記憶され、ステップ32で結果が提供される。
図2は、反復的な動的および静的ソフトウェア分析を提供するための別の例示的なプロセスの流れ図である。例示的な一実施形態では、図2に示すように、静的ソフトウェア分析が実施され、静的分析の結果が、前に記憶された動的分析結果で増強される。ステップ34で、静的ソフトウェア分析が開始される。ステップ36で、静的ソフトウェア分析(SA)が実行される。静的ソフトウェア分析は、任意の適切な静的ソフトウェア分析ツールによって実施することができる。静的ソフトウェア分析の間、分析対象であるソフトウェアを実行することなく、分析対象であるソフトウェアまたはその一部が分析される。
ステップ38で、前の静的ソフトウェア分析からのメトリクスが記憶されているかどうかが判定される。前述のように、前の静的分析からのメトリクスは、増強された、かつ/または増強されていない前の静的分析からのメトリクスを含むことができる。メトリクスは、静的分析されている同じソフトウェアエンティティ、または分析されているソフトウェアエンティティのバージョンに関するものとすることができる。たとえば、コード開発中に、ソフトウェアコンポーネントの第1のバージョンを静的分析することができ、それから得られる選択された(またはすべての)メトリクスをメモリに記憶することができる。その後、ソフトウェアモジュールに変更を加えることができ、その結果、ソフトウェアモジュールの別のバージョンが得られる。ソフトウェアの後続バージョンが静的分析されたとき(たとえばステップ36)、ソフトウェアモジュールの前バージョンに対する静的分析からのメトリクスが記憶されていると判定することができる(たとえばステップ38)。
同じソフトウェアエンティティまたはそのバージョンに対する前の静的ソフトウェア分析からのメトリクスが記憶されている場合は(ステップ38)、ステップ48で、記憶されているメトリクスが取り出される。ステップ50で、取り出されたメトリクスが現在の静的分析と統合されて、現在の静的分析が増強される。ステップ52で、統合された結果からのメトリクスが記憶される。プロセスはステップ40に進む。
同じソフトウェアエンティティまたはそのバージョンに対する前の静的ソフトウェア分析からのメトリクスが記憶されていない場合は(ステップ38)、ステップ40で、同じソフトウェアエンティティまたはそのバージョンに対する前の動的ソフトウェア分析からのメトリクスが記憶されているかどうかが判定される。前述のように、前の動的分析からのメトリクスは、増強された、かつ/または増強されていない前の動的分析からのメトリクスを含むことができる。前の動的分析メトリクスが記憶されていない場合は(ステップ40)、ステップ54で、現在の静的分析の結果が提供される。前の動的分析メトリクスが記憶されている場合は(ステップ40)、ステップ42でメトリクスが取り出される。ステップ44で、取り出されたメトリクスが現在の静的分析の結果と統合されて、現在の静的分析が増強される。ステップ46で、統合された結果からのメトリクスが記憶され、ステップ54で結果が提供される。
例示的な一実施形態では、ユーザ/ソフトウェア開発者がデバッグプロセスを開始することができ、静的分析および動的分析がバックグラウンドでシームレスに実施される。図3は、デバッグプロセスの一部としてソフトウェアを動的および静的に反復分析するための例示的なプロセスの流れ図である。図3に示すプロセスは基本的に、図1と図2に示したプロセスの結合である。ステップ56で、ソフトウェア分析が開始される。その後、静的分析が実施され(ステップ58)、動的分析が実施される(ステップ76)。静的分析および動的分析は、ソフトウェア分析を開始するのに応答して実施される。静的分析および動的分析は、同時に実施されてもよく、任意の順序で連続して実施されてもよい。ステップ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は、処理部100、メモリ部102、および入出力部104を含む。処理部100、メモリ部102、および入出力部104は、共に結合されて(図4には結合は示されていない)、それらの間の通信が可能になる。システム98は分散プロセッサを備えることができ、システム98の各部分(たとえば処理部100、メモリ部102、および入出力部104)が分散プロセッサを備えることができる。システム98は、静的および動的ソフトウェア分析を介してソフトウェアを反復的に分析することに関連する操作を実施することができる。たとえば、処理部100は、静的ソフトウェア分析を実行すること、動的ソフトウェア分析を実行すること、静的および動的ソフトウェア分析メトリクスを記憶装置から取り出すこと、静的および動的ソフトウェア分析メトリクスを記憶すること、ならびに動的ソフトウェア分析と静的ソフトウェア分析とを統合して、静的および/または動的ソフトウェア分析を増強することができる。メモリ部102は、ソフトウェアを反復的に動的および静的分析することに関連するすべてのパラメータを記憶することができる。例示的な一実施形態では、メモリ部102は、静的ソフトウェア分析および動的ソフトウェア分析、ならびに増強ソフトウェア分析から得られるメトリクスを記憶する。
入出力部104は、前述のような、ソフトウェアを反復的に動的および静的分析するのに利用されるコンポーネントを提供し、かつ/または受領することができる。入出力部104は、別のシステム、記憶デバイス、および/またはデータストリームにデータを提供すること、ならびにそれらからデータを受け取ることができる。入出力部104は、さまざまなタイプのソフトウェア分析への入力を受け取ること、およびさまざまなタイプのソフトウェア分析の結果を提供することができる。
プロセッサの正確な構成およびタイプに応じて、メモリ部102は、揮発性(RAMおよび/またはキャッシュなど)106、不揮発性(ROM、フラッシュメモリ、その他など)108、あるいはこれらの組合せとすることができる。システム98は、追加の機構/機能を有することもできる。たとえば、システム98は、追加の記憶装置(取外し可能記憶装置110および/または取外し不可能記憶装置112)を備えることができ、これらの記憶装置は、磁気または光学ディスク、テープ、フラッシュ、スマートカード、あるいはこの組合せを含むが、これらに限定されない。メモリ部102、106、108、110、および112などのコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を記憶するための任意の方法または技術で実現された、揮発性および不揮発性、取外し可能および取外し不可能な媒体を含む。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリ、または他のメモリ技術、CD−ROM、ディジタル多用途ディスク(DVD)、または他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、または他の磁気記憶デバイス、ユニバーサルシリアルバス(USB)互換メモリ、スマートカード、あるいは、所望の情報を記憶できシステム98によってアクセスできる他の任意の媒体を含むが、これらに限定されない。こうしたどんなコンピュータ記憶媒体も、システム98の一部とすることができる。
システム98はまた、システム98が他のデバイスと通信できるようにする通信接続(1つまたは複数)118を備えることができる。通信接続(1つまたは複数)118は、通信媒体の一例である。通信媒体は通常、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを、搬送波や他のトランスポート機構などの被変調データ信号に組み入れるものであり、任意の情報送達媒体を含む。用語「被変調データ信号」は、信号中の情報を符号化するようにしてその特性の1つまたは複数が設定または変更される信号を意味する。限定ではなく例として、通信媒体は、有線ネットワークや直接有線接続などの有線媒体と、音響、無線周波数、赤外線などのワイヤレス媒体および他のワイヤレス媒体とを含む。本明細書におけるコンピュータ可読媒体という用語は、記憶媒体と通信媒体の両方を含む。システム98はまた、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイスなどの入力デバイス(1つまたは複数)116を有することができる。表示装置、スピーカ、プリンタなどの出力デバイス(1つまたは複数)114を備えることもできる。
反復的な動的および静的ソフトウェア分析の多くの実施形態が、コンピュータ化されたシステムに特によく適合することが想定されるが、本文書中のいかなるものも、その範囲を限定するものではない。反対に、本明細書における用語「コンピュータシステム」は、情報を記憶および処理することのできる、かつ/あるいは記憶された情報を使用してデバイス自体の挙動または実行を制御することのできるあらゆるデバイスを、そのようなデバイスが電子的、機械的、論理的、または仮想的な性質であるかにかかわらず、包含するものとする。
本明細書に述べたさまざまな技法は、ハードウェアまたはソフトウェア、あるいは適切な場合にはこの両方の組合せに関して、実施することができる。したがって、反復的な動的および静的ソフトウェア分析のための方法および装置、あるいはそのいくつかの態様または部分は、フロッピー(登録商標)ディスク、CD−ROM、ハードドライブ、または他の任意の機械可読記憶媒体などの有形媒体に組み入れられたプログラムコード(すなわち命令)の形をとることができ、プログラムコードがコンピュータなどのマシンにロードされてマシンによって実行されたとき、このマシンは、ソフトウェアを反復的に動的および静的分析するための装置になる。
プログラム(1つまたは複数)は、望むならアセンブリ言語または機械言語で実現することができる。いずれの場合でも、言語は、コンパイラ型言語またはインタープリタ型言語とすることができ、結合された反復的な動的および静的ソフトウェア分析は、電気的な配線またはケーブリング、光ファイバ、あるいは他の任意の形の伝送を介するなど、何らかの伝送媒体を介して伝送されるプログラムコードの形で具体化される通信を介して実施することもでき、プログラムコードがEPROM、ゲートアレイ、プログラマブルロジックデバイス(PLD)、クライアントコンピュータなどのマシンによって受信されてマシンにロードされ、マシンによって実行されたとき、このマシンは、反復的な動的および静的ソフトウェア分析のための装置になる。プログラムコードは、汎用プロセッサ上で実施されたとき、プロセッサと結合して、反復的な動的および静的ソフトウェア分析の機能を呼び出すように動作する固有の装置を提供する。さらに、反復的な動的および静的ソフトウェア分析と共に使用されるどんな記憶技法も、必ずハードウェアとソフトウェアの組合せとすることができる。
さまざまな図の例示的な実施形態との関連で反復的な動的および静的ソフトウェア分析について述べたが、反復的な動的および静的ソフトウェア分析のための同じ機能を実施するために、それから逸脱することなく、他の同様の実施形態を用いることもできること、または述べた実施形態に修正および追加を行うこともできることを理解されたい。したがって、本明細書に述べた反復的な動的および静的ソフトウェア分析は、どんな単一の実施形態にも限定すべきではなく、特許請求の範囲の記載により解釈すべきである。
反復的な動的および静的ソフトウェア分析を提供するための例示的なプロセスの流れ図である。 反復的な動的および静的ソフトウェア分析を提供するための別の例示的なプロセスの流れ図である。 デバッグプロセスの一部としてソフトウェアを反復的に動的および静的分析するための例示的なプロセスの流れ図である。 ソフトウェアを反復的に動的および静的分析するための例示的なシステムの図である。

Claims (18)

  1. ソフトウェアを分析する方法であって、
    ソフトウェアエンティティを動的に分析すること、
    前記ソフトウェアエンティティと前記ソフトウェアエンティティのバージョンとのうちの一方に対する前の静的分析の結果を示す少なくとも1つの静的メトリクスを取り出すこと、
    前記取り出された少なくとも1つの静的メトリクスを前記ソフトウェアエンティティの前記動的分析に統合すること、および
    前記取り出された少なくとも1つの静的メトリクスを前記ソフトウェアエンティティの前記動的分析に統合することによって得られる少なくとも1つの増強されたメトリクスを記憶することを含むことを特徴とする方法。
  2. 前記統合することの前に、前記ソフトウェアエンティティの前記動的分析からの少なくとも1つの動的メトリクスを記憶することをさらに含むことを特徴とする請求項1に記載の方法。
  3. 前記少なくとも1つの動的メトリクスは、
    前記ソフトウェアエンティティと前記ソフトウェアエンティティのバージョンとのうちの少なくとも一方に対する後続の動的分析と、
    前記ソフトウェアエンティティと前記ソフトウェアエンティティのバージョンとのうちの少なくとも一方に対する後続の静的分析と
    のうちの少なくとも一方と共に使用するために記憶されることを特徴とする請求項2に記載の方法。
  4. 前記少なくとも1つの増強されたメトリクスは、
    前記ソフトウェアエンティティと前記ソフトウェアエンティティのバージョンとのうちの少なくとも一方に対する後続の動的分析と、
    前記ソフトウェアエンティティと前記ソフトウェアエンティティのバージョンとのうちの少なくとも一方に対する後続の静的分析と
    のうちの少なくとも一方と共に使用するために記憶されることを特徴とする請求項1に記載の方法。
  5. 動的メトリクスは、前記ソフトウェアエンティティの一部が前記ソフトウェアエンティティの実行中にどのくらい頻繁に実行されるかと、前記ソフトウェアエンティティ中のパラメータの値の範囲と、前記ソフトウェアエンティティの一部の実行によって利用されるメモリの量と、前記ソフトウェアエンティティの一部を実行するための実行時間とのうちの少なくとも1つを含むことを特徴とする請求項1に記載の方法。
  6. 静的メトリクスは、前記ソフトウェアエンティティ中のコードの行数と、サイクロマティック複雑度と、前記ソフトウェアエンティティ中のパラメータの値の範囲とのうちの少なくとも1つを含むことを特徴とする請求項1に記載の方法。
  7. ソフトウェアを分析する方法であって、
    ソフトウェアエンティティを静的に分析すること、
    前記ソフトウェアエンティティと前記ソフトウェアエンティティのバージョンとのうちの一方に対する前の動的分析の結果を示す少なくとも1つの動的メトリクスを取り出すこと、
    前記取り出された少なくとも1つの動的メトリクスを前記ソフトウェアエンティティの前記静的分析に統合すること、および
    前記取り出された少なくとも1つの動的メトリクスを前記ソフトウェアエンティティの前記静的分析に統合することによって得られる少なくとも1つの増強されたメトリクスを記憶することを含むことを特徴とする方法。
  8. 前記統合することの前に、前記ソフトウェアエンティティの前記静的分析の結果からの少なくとも1つの静的メトリクスを記憶することをさらに含むことを特徴とする請求項7に記載の方法。
  9. 前記少なくとも1つの静的メトリクスは、
    前記ソフトウェアエンティティと前記ソフトウェアエンティティのバージョンとのうちの少なくとも一方に対する後続の動的分析と、
    前記ソフトウェアエンティティと前記ソフトウェアエンティティのバージョンとのうちの少なくとも一方に対する後続の静的分析と
    のうちの少なくとも一方と共に使用するために記憶されることを特徴とする請求項8に記載の方法。
  10. 前記少なくとも1つの増強されたメトリクスは、
    前記ソフトウェアエンティティと前記ソフトウェアエンティティのバージョンとのうちの少なくとも一方に対する後続の動的分析と、
    前記ソフトウェアエンティティと前記ソフトウェアエンティティのバージョンとのうちの少なくとも一方に対する後続の静的分析と
    のうちの少なくとも一方と共に使用するために記憶されることを特徴とする請求項7に記載の方法。
  11. 動的メトリクスは、前記ソフトウェアエンティティの一部が前記ソフトウェアエンティティの実行中にどのくらい頻繁に実行されるかと、前記ソフトウェアエンティティ中のパラメータの値の範囲と、前記ソフトウェアエンティティの一部の実行によって利用されるメモリの量と、前記ソフトウェアエンティティの一部を実行するための実行時間とのうちの少なくとも1つを含むことを特徴とする請求項7に記載の方法。
  12. 静的メトリクスは、前記ソフトウェアエンティティ中のコードの行数と、サイクロマティック複雑度と、前記ソフトウェアエンティティ中のパラメータの値の範囲とのうちの少なくとも1つを含むことを特徴とする請求項7に記載の方法。
  13. ソフトウェアを分析するためのシステムであって、
    ソフトウェアエンティティを動的に分析し、
    前記ソフトウェアエンティティと前記ソフトウェアエンティティのバージョンとのうちの一方に対する前の静的分析の結果を示す少なくとも1つの静的メトリクスをメモリ部から取り出し、
    前記取り出された少なくとも1つの静的メトリクスを前記ソフトウェアエンティティの前記動的分析に統合し、
    前記取り出された少なくとも1つの静的メトリクスを前記ソフトウェアエンティティの前記動的分析に統合することによって得られる少なくとも1つの増強された動的メトリクスを前記メモリ部に記憶する処理部と、
    前記前の静的分析の前記結果を示す前記少なくとも1つの静的メトリクスを記憶し、
    前記少なくとも1つの増強された動的メトリクスを記憶する前記メモリ部とを備えることを特徴とするシステム。
  14. 前記処理部はさらに、
    前記ソフトウェアエンティティを静的に分析し、
    前記ソフトウェアエンティティと前記ソフトウェアエンティティのバージョンとのうちの一方に対する前の動的分析の結果を示す少なくとも1つの動的メトリクスを前記メモリ部から取り出し、
    前記取り出された少なくとも1つの動的メトリクスを前記ソフトウェアエンティティの前記静的分析に統合し、
    前記取り出された少なくとも1つの動的メトリクスを前記ソフトウェアエンティティの前記静的分析に統合することによって得られる少なくとも1つの増強された静的メトリクスを前記メモリ部に記憶し、
    前記メモリ部はさらに、
    前記前の動的分析の前記結果を示す前記少なくとも1つの動的メトリクスを記憶し、
    前記少なくとも1つの増強された静的メトリクスを記憶することを特徴とする請求項13に記載のシステム。
  15. 前記処理部はさらに、
    前記取り出された少なくとも1つの動的メトリクスを前記静的分析に統合する前の、前記ソフトウェアエンティティの前記静的分析の結果からの少なくとも1つの静的メトリクスと、
    前記取り出された少なくとも1つの静的メトリクスを前記動的分析に統合する前の、前記ソフトウェアエンティティの前記動的分析の結果からの少なくとも1つの動的メトリクスと
    のうちの少なくとも一方を前記メモリ部に記憶することを特徴とする請求項14に記載のシステム。
  16. 前記記憶される静的メトリクス、前記記憶される動的メトリクス、前記記憶される増強された静的メトリクス、および前記記憶される増強された動的メトリクスのうちの少なくとも1つは、
    前記ソフトウェアエンティティと前記ソフトウェアエンティティのバージョンとのうちの少なくとも一方に対する後続の動的分析と、
    前記ソフトウェアエンティティと前記ソフトウェアエンティティのバージョンとのうちの少なくとも一方に対する後続の静的分析と
    のうちの少なくとも一方と共に使用するために記憶されることを特徴とする請求項15に記載のシステム。
  17. 静的メトリクスは、前記ソフトウェアエンティティ中のコードの行数と、サイクロマティック複雑度と、前記ソフトウェアエンティティ中のパラメータの値の範囲とのうちの少なくとも1つを含むことを特徴とする請求項13に記載のシステム。
  18. 動的メトリクスは、前記ソフトウェアエンティティの一部が前記ソフトウェアエンティティの実行中にどのくらい頻繁に実行されるかと、前記ソフトウェアエンティティ中のパラメータの値の範囲と、前記ソフトウェアエンティティの一部の実行によって利用されるメモリの量と、前記ソフトウェアエンティティの一部を実行するための実行時間とのうちの少なくとも1つを含むことを特徴とする請求項13に記載のシステム。
JP2009515396A 2006-06-13 2007-05-08 反復的な静的および動的ソフトウェア分析 Pending JP2009540464A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/451,851 US7975257B2 (en) 2006-06-13 2006-06-13 Iterative static and dynamic software analysis
PCT/US2007/011198 WO2007145745A1 (en) 2006-06-13 2007-05-08 Iterative static and dynamic software analysis

Publications (1)

Publication Number Publication Date
JP2009540464A true JP2009540464A (ja) 2009-11-19

Family

ID=38823409

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009515396A Pending JP2009540464A (ja) 2006-06-13 2007-05-08 反復的な静的および動的ソフトウェア分析

Country Status (6)

Country Link
US (1) US7975257B2 (ja)
EP (1) EP2035922A4 (ja)
JP (1) JP2009540464A (ja)
KR (1) KR20090017598A (ja)
CN (1) CN101473301B (ja)
WO (1) WO2007145745A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010061461A (ja) * 2008-09-04 2010-03-18 Ricoh Co Ltd ソフトウェアの自動性能評価システム
JP2013030151A (ja) * 2011-07-28 2013-02-07 Tata Consultancy Services Ltd アプリケーションの性能測定および報告
JP2014523022A (ja) * 2011-06-20 2014-09-08 マイクロソフト コーポレーション コンピュータにより実行される方法及びコンピュータシステム
WO2020070817A1 (ja) * 2018-10-03 2020-04-09 三菱電機株式会社 ソフトウェア解析装置、ソフトウェア解析方法およびソフトウェア解析プログラム

Families Citing this family (65)

* 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
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
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
EP3021216A1 (en) * 2014-11-14 2016-05-18 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
KR102426581B1 (ko) * 2016-06-13 2022-07-29 (주)씽크포비엘 전장용 소프트웨어 안전성 분석 방법 및 장치
KR101675986B1 (ko) * 2016-06-13 2016-11-23 (주)씽크포비엘 전장용 소프트웨어 안전성 분석 방법 및 장치
KR102461180B1 (ko) * 2016-06-13 2022-11-01 (주)씽크포비엘 소프트웨어 안전성 분석 방법 및 장치
KR101886203B1 (ko) * 2016-07-19 2018-09-06 주식회사 스패로우 프로그램 분석 장치 및 방법
WO2018029668A1 (en) 2016-08-09 2018-02-15 Sealights Technologies Ltd. System and method for continuous testing and delivery 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
US11853529B2 (en) 2016-11-07 2023-12-26 Tableau Software, Inc. User interface to prepare and curate data for subsequent analysis
US10242079B2 (en) 2016-11-07 2019-03-26 Tableau Software, Inc. Optimizing execution of data transformation flows
US10885057B2 (en) 2016-11-07 2021-01-05 Tableau Software, Inc. Correlated incremental loading of multiple data sets for an interactive data prep application
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
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 国家电网有限公司 一种智能电网基建信息管理系统
US11782813B2 (en) * 2021-12-17 2023-10-10 Intel Corporation Methods and apparatus to determine refined context for software bug detection and correction

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09502034A (ja) * 1993-05-10 1997-02-25 シンキング・ソフトウエア・インコーポレーテッド より少ない再コンパイル及び再リンケージ処理を可能にする目標プロセスのオブジェクト・コードの別形式を導入することにより、誤り位置とシステムへの新たな要求に起因する修正位置との自動的な識別を可能にする、コンピュータ・ソフトウェア・プロセスにおける不確実性最小化方法
JP2002259167A (ja) * 2000-12-26 2002-09-13 Fujitsu Ltd 実行性能情報の提示方法、及び記録媒体
JP2002278792A (ja) * 2001-03-21 2002-09-27 Ricoh Co Ltd ソフトウェア試験装置
JP2003114813A (ja) * 2001-10-03 2003-04-18 Ibm Japan 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

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0228480B1 (de) 1985-12-30 1990-05-16 Ibm Deutschland Gmbh Verfahren und Einrichtung zur Analyse von Steuerprogrammen
NL9002460A (nl) * 1990-11-09 1992-06-01 Tech Force B V Werkwijze voor het analyseren en voorspellen van een programmatuurontwikkelingsproces.
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
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
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
WO2001001256A1 (en) 1999-06-30 2001-01-04 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
AU2002316479A1 (en) 2001-07-03 2003-01-21 Altaworks Corporation System and methods for monitoring performance metrics
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
KR20060121880A (ko) * 2003-09-22 2006-11-29 카테나 가부시키가이샤 소프트웨어 생성방법
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 (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09502034A (ja) * 1993-05-10 1997-02-25 シンキング・ソフトウエア・インコーポレーテッド より少ない再コンパイル及び再リンケージ処理を可能にする目標プロセスのオブジェクト・コードの別形式を導入することにより、誤り位置とシステムへの新たな要求に起因する修正位置との自動的な識別を可能にする、コンピュータ・ソフトウェア・プロセスにおける不確実性最小化方法
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
JP2003114813A (ja) * 2001-10-03 2003-04-18 Ibm Japan Ltd 分析サーバ、プログラム分析ネットワークシステム、およびプログラム分析方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010061461A (ja) * 2008-09-04 2010-03-18 Ricoh Co Ltd ソフトウェアの自動性能評価システム
JP2014523022A (ja) * 2011-06-20 2014-09-08 マイクロソフト コーポレーション コンピュータにより実行される方法及びコンピュータシステム
US9785470B2 (en) 2011-06-20 2017-10-10 Microsoft Technology Licensing, Llc Memory management model and interface for unmodified applications
JP2013030151A (ja) * 2011-07-28 2013-02-07 Tata Consultancy Services Ltd アプリケーションの性能測定および報告
WO2020070817A1 (ja) * 2018-10-03 2020-04-09 三菱電機株式会社 ソフトウェア解析装置、ソフトウェア解析方法およびソフトウェア解析プログラム

Also Published As

Publication number Publication date
US7975257B2 (en) 2011-07-05
CN101473301B (zh) 2018-12-11
EP2035922A1 (en) 2009-03-18
US20070288899A1 (en) 2007-12-13
KR20090017598A (ko) 2009-02-18
EP2035922A4 (en) 2009-07-22
WO2007145745A1 (en) 2007-12-21
CN101473301A (zh) 2009-07-01

Similar Documents

Publication Publication Date Title
JP2009540464A (ja) 反復的な静的および動的ソフトウェア分析
US8352921B2 (en) Static analysis defect detection in the presence of virtual function calls
Safi et al. Detecting event anomalies in event-based systems
US9645912B2 (en) In-place function modification
US9442717B2 (en) Techniques for automatically identifying input files used to generate output files in a software build process
EP3234851B1 (en) A system and method for facilitating static analysis of software applications
JP5396979B2 (ja) ソフトウェア開発支援装置、システム、ソフトウェア開発支援装置の機能拡張方法、及びプログラム
Arzt et al. Using targeted symbolic execution for reducing false-positives in dataflow analysis
US7721250B2 (en) System and method for interactive and integrated software development process and phases
WO2017015071A1 (en) Incremental interprocedural dataflow analysis during compilation
US20080307397A1 (en) Program Analysis by Partial Emulation
US9779014B2 (en) Resilient mock object creation for unit testing
Zeng et al. Deltapath: Precise and scalable calling context encoding
Molitorisz Pattern-based refactoring process of sequential source code
Fedorova et al. Performance comprehension at WiredTiger
Pasala et al. Selection of regression test suite to validate software applications upon deployment of upgrades
US9396239B2 (en) Compiling method, storage medium and compiling apparatus
US20060101418A1 (en) Apparatus and method for automatic generation of event profiles in an integrated development environment
US20150007139A1 (en) Optimizing error parsing in an integrated development environment
JP7410269B2 (ja) テスト・ベクタを使用した高水準コンストラクトの最適化の自動検証
US11593249B2 (en) Scalable points-to analysis via multiple slicing
Wang MPIRace: A Static Data Race Detector for MPI Programs
KR101225577B1 (ko) 어셈블리 언어 코드의 분석 장치 및 방법
Arora JShrink: Debloating Modern Java Applications
Pasala et al. An approach to select regression tests to validate. NET applications upon deployment of components upgrades

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100329

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111028

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120727

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20121221