JP2014211864A - 未完成ソフトウェアの分析 - Google Patents
未完成ソフトウェアの分析 Download PDFInfo
- Publication number
- JP2014211864A JP2014211864A JP2014050448A JP2014050448A JP2014211864A JP 2014211864 A JP2014211864 A JP 2014211864A JP 2014050448 A JP2014050448 A JP 2014050448A JP 2014050448 A JP2014050448 A JP 2014050448A JP 2014211864 A JP2014211864 A JP 2014211864A
- Authority
- JP
- Japan
- Prior art keywords
- software code
- level software
- function
- incomplete
- low
- 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.)
- Granted
Links
Images
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/3608—Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
-
- 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/3668—Software testing
- G06F11/3672—Test management
- G06F11/3676—Test management for coverage analysis
-
- 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/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
【解決手段】未完成ソフトウェアプログラムを分析するシステム200は、複数の関数を含むソフトウェアプログラムの高レベルソフトウェアコード202を受信するステップを有する。複数の関数は、少なくとも1つの未完成関数及び少なくとも1つの完成関数を有する。コンパイラ230は、高レベルソフトウェアコードの少なくとも一部をコンパイルして、完成関数をコンパイルし及び未完成関数を除外することにより低レベルソフトウェアコード208を生成するステップを更に有する。記号実行部250は、低レベルソフトウェアコードを変更して、低レベルソフトウェアコード内の未完成関数の呼び出しを不具にするステップと、低レベルソフトウェアコードを記号実行するステップと、を更に有する。
【選択図】図2
Description
110 高レベルソフトウェアコードビューア
120 状態ウインドウ
130 分析モジュール
202 高レベルソフトウェアコード
204 変更された高レベルソフトウェアコード
206 パースされた高レベルソフトウェアコード
208 低レベルソフトウェアコード
220 検出モジュール
230 コンパイラ
232 パーサ
234 低レベルコード生成部
250 記号実行部
252 コード変更モジュール
260 レポート
262 テストケース
Claims (20)
- 未完成ソフトウェアプログラムを分析する方法であって、
複数の関数を含むソフトウェアプログラムの高レベルソフトウェアコードを受信するステップであって、前記複数の関数は、少なくとも1つの未完成関数と少なくとも1つの完成関数とを含む、ステップと、
前記高レベルソフトウェアコードの少なくとも一部をコンパイルするステップであって、前記完成関数をコンパイルし及び前記未完成関数を除外することにより、低レベルソフトウェアコードを生成する、ステップと、
前記低レベルソフトウェアコード内の前記未完成関数の呼び出しを不具にするよう前記低レベルソフトウェアコードを変更するステップと、
を有する方法。 - 前記変更するステップは、前記ソフトウェアコードが記号実行される前又はその間に生じる、請求項1に記載の方法。
- 前記変更するステップは、前記未完成関数の前記呼び出しを記号変数で代用するステップを有する、請求項1に記載の方法。
- 前記記号変数の種類は、前記未完成関数の戻り値の種類と関連する、請求項3に記載の方法。
- 前記変更された低レベルソフトウェアコードの前記記号実行に基づきレポートを生成するステップであって、前記レポートは前記ソフトウェアプログラム内の1又は複数のエラーを示す、ステップ、を更に有する請求項1に記載の方法。
- 前記変更された低レベルソフトウェアコードの前記記号実行に基づき前記ソフトウェアプログラムのための1又は複数のテストケースを生成するステップであって、前記1又は複数のテストケースは、前記変更された低レベルソフトウェアコードを記号実行することにより識別された前記ソフトウェアプログラム内のエラーを生成するよう構成される、ステップ、を更に有する請求項1に記載の方法。
- 前記高レベルソフトウェアコードをコンパイルするステップは、前記高レベルソフトウェアコードをパースするステップであって、前記複数の関数のうちの前記完成関数を識別し、前記複数の関数のうちの前記未完成関数を識別する、ステップを有し、前記高レベルソフトウェアコードをパースするステップは、前記未完成関数を識別した後、継続する、請求項1に記載の方法。
- システムに未完成ソフトウェアプログラムを分析する動作を実行させるため、コンピュータ可読媒体からのコンピュータ命令を実行するよう構成されるプロセッサであって、前記動作は、
複数の関数を含むソフトウェアプログラムの高レベルソフトウェアコードを受信するステップであって、前記複数の関数は、少なくとも1つの未完成関数と少なくとも1つの完成関数とを含む、ステップと、
前記高レベルソフトウェアコードの少なくとも一部をコンパイルするステップであって、前記完成関数をコンパイルし及び前記未完成関数を除外することにより、低レベルソフトウェアコードを生成する、ステップと、
前記低レベルソフトウェアコード内の前記未完成関数の呼び出しを不具にするよう前記低レベルソフトウェアコードを変更するステップと、
を有する、プロセッサ。 - 前記変更するステップは、前記ソフトウェアコードが記号実行される前又はその間に生じる、請求項8に記載のプロセッサ。
- 前記変更するステップは、前記未完成関数の前記呼び出しを記号変数で代用するステップを有する、請求項8に記載のプロセッサ。
- 前記記号変数の種類は、前記未完成関数の戻り値の種類と関連する、請求項10に記載のプロセッサ。
- 前記高レベルソフトウェアコードをコンパイルするステップは、前記高レベルソフトウェアコードをパースするステップであって、前記複数の関数のうちの前記完成関数及び前記複数の関数のうちの前記未完成関数を識別する、ステップを有し、前記高レベルソフトウェアコードをパースするステップは、前記未完成関数を識別した後、継続する、請求項8に記載のプロセッサ。
- 未完成ソフトウェアプログラムを分析する方法であって、
ソフトウェアプログラムの高レベルソフトウェアコードが記述されている間、前記高レベルソフトウェアコードに関連付けられたトリガを検出するステップであって、前記高レベルソフトウェアコードは、少なくとも1つの未完成関数と少なくとも1つの完成関数を含む、ステップと、
前記トリガが検出されると、前記高レベルソフトウェアコードを分析するステップと、
を有し、前記分析するステップは、
前記高レベルソフトウェアコードの一部をコンパイルするステップであって、前記完成関数をコンパイルし及び前記未完成関数を除外することにより、低レベルソフトウェアコードを生成する、ステップと、
前記低レベルソフトウェアコード内の前記未完成関数の呼び出しを不具にするよう、前記低レベルソフトウェアコードを変更するステップと、
前記変更された低レベルソフトウェアコードを記号実行するステップと、
を有する、方法。 - 前記変更するステップは、前記ソフトウェアコードが記号実行される前又はその間に生じる、請求項13に記載の方法。
- 前記変更するステップは、前記未完成関数の前記呼び出しを記号変数で代用するステップを有する、請求項13に記載の方法。
- 前記記号変数の種類は、前記未完成関数の戻り値の種類と関連する、請求項15に記載の方法。
- 前記トリガは、前記高レベルソフトウェアコード内の変更、タイマ、又は前記高レベルソフトウェアコードに追加された変更の数に基づく、請求項13に記載の方法。
- 前記検出するステップ及び前記分析するステップは、前記高レベルソフトウェアコードが記述され及び/又は編集されている間、繰り返される、請求項13に記載の方法。
- 前記分析するステップは、前記高レベルソフトウェアコードの最後の分析以来、変更された前記高レベルソフトウェアコードの一部を識別するステップであって、コンパイルされた前記高レベルソフトウェアコードの前記一部は、前記識別された部分である、請求項18に記載の方法。
- 前記分析するステップは、
前記変更された低レベルソフトウェアコードの前記記号実行に基づきレポートを生成するステップであって、前記レポートは、前記ソフトウェアプログラム内の1又は複数のエラーを示す、ステップと、及び/又は
前記変更された低レベルソフトウェアコードの前記記号実行に基づき前記ソフトウェアプログラムのための1又は複数のテストケースを生成するステップであって、前記1又は複数のテストケースは、前記変更された低レベルソフトウェアコードを記号実行することにより識別された前記ソフトウェアプログラム内のエラーを生成するよう構成される、ステップと、
を有する、請求項13に記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/830,292 | 2013-03-14 | ||
US13/830,292 US9454347B2 (en) | 2013-03-14 | 2013-03-14 | Analyzing incomplete software |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2014211864A true JP2014211864A (ja) | 2014-11-13 |
JP6357814B2 JP6357814B2 (ja) | 2018-07-18 |
Family
ID=51534670
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014050448A Active JP6357814B2 (ja) | 2013-03-14 | 2014-03-13 | 未完成ソフトウェアの分析 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9454347B2 (ja) |
JP (1) | JP6357814B2 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015133031A (ja) * | 2014-01-15 | 2015-07-23 | 株式会社日立製作所 | プログラム分析装置及びプログラム分析方法 |
US9619375B2 (en) * | 2014-05-23 | 2017-04-11 | Carnegie Mellon University | Methods and systems for automatically testing software |
US9697018B2 (en) * | 2015-05-29 | 2017-07-04 | International Business Machines Corporation | Synthesizing inputs to preserve functionality |
US9632921B1 (en) * | 2015-11-13 | 2017-04-25 | Microsoft Technology Licensing, Llc | Validation using scenario runners |
US11269626B2 (en) | 2020-04-23 | 2022-03-08 | International Business Machines Corporation | Quality analysis of source code |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS61127044A (ja) * | 1984-11-27 | 1986-06-14 | Fujitsu Ltd | プログラムの単体テスト方式 |
JPS6365542A (ja) * | 1986-09-05 | 1988-03-24 | Nec Corp | デバツグ方式 |
JP2003337709A (ja) * | 2002-05-21 | 2003-11-28 | Hitachi Ltd | コンパイル方法 |
US20080196014A1 (en) * | 2007-02-13 | 2008-08-14 | Microsoft Corporation | Partial methods |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE19650293C1 (de) * | 1996-12-04 | 1998-04-09 | Siemens Ag | Verfahren zum Testen von Systemkomponenten eines objektorientierten Programms |
US8434099B2 (en) * | 1998-09-09 | 2013-04-30 | Microsoft Corporation | Efficient linking and loading for late binding and platform retargeting |
US6895578B1 (en) * | 1999-01-06 | 2005-05-17 | Parasoft Corporation | Modularizing a computer program for testing and debugging |
US7340726B1 (en) | 2003-08-08 | 2008-03-04 | Coverity, Inc. | Systems and methods for performing static analysis on source code |
US7367019B2 (en) * | 2004-09-16 | 2008-04-29 | International Business Machines Corporation | Parameter management using compiler directives |
US7478367B2 (en) | 2005-01-11 | 2009-01-13 | International Business Machines Corporation | Dynamic source code analyzer |
US7587636B2 (en) * | 2005-08-04 | 2009-09-08 | Microsoft Corporation | Unit test generalization |
US20080082969A1 (en) * | 2006-04-04 | 2008-04-03 | The Board Of Trustees Of The University Of Illinois | Software Testing Technique Supporting Dynamic Data Structures |
US7971182B1 (en) * | 2006-05-09 | 2011-06-28 | Vmware, Inc. | Application environment specifications for provisioning application specific runtime environments using undefined symbols |
US8352923B2 (en) * | 2006-09-25 | 2013-01-08 | Typemock Ltd. | Method and system for isolating software components |
US8032877B2 (en) * | 2006-10-20 | 2011-10-04 | International Business Machines Corporation | Compiler neutral linking solution for C++ code |
US8387020B1 (en) * | 2007-07-25 | 2013-02-26 | Google Inc. | Verifying that a method has been implemented for a program written in a dynamic programming language |
US8745587B2 (en) * | 2007-10-03 | 2014-06-03 | International Business Machines Corporation | System and method for testing computer programs |
US8954929B2 (en) * | 2010-03-29 | 2015-02-10 | Microsoft Corporation | Automatically redirecting method calls for unit testing |
US8626484B1 (en) * | 2010-12-15 | 2014-01-07 | Emc Corporation | Light-weight and flexible feature simulator |
US8683430B2 (en) * | 2011-01-07 | 2014-03-25 | International Business Machines Corporation | Synchronizing development code and deployed executable versioning within distributed systems |
US8789018B2 (en) * | 2011-05-31 | 2014-07-22 | Microsoft Corporation | Statically derived symbolic references for dynamic languages |
-
2013
- 2013-03-14 US US13/830,292 patent/US9454347B2/en active Active
-
2014
- 2014-03-13 JP JP2014050448A patent/JP6357814B2/ja active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS61127044A (ja) * | 1984-11-27 | 1986-06-14 | Fujitsu Ltd | プログラムの単体テスト方式 |
JPS6365542A (ja) * | 1986-09-05 | 1988-03-24 | Nec Corp | デバツグ方式 |
JP2003337709A (ja) * | 2002-05-21 | 2003-11-28 | Hitachi Ltd | コンパイル方法 |
US20080196014A1 (en) * | 2007-02-13 | 2008-08-14 | Microsoft Corporation | Partial methods |
Also Published As
Publication number | Publication date |
---|---|
US20140282432A1 (en) | 2014-09-18 |
US9454347B2 (en) | 2016-09-27 |
JP6357814B2 (ja) | 2018-07-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Gal et al. | Trace-based just-in-time type specialization for dynamic languages | |
Prähofer et al. | Opportunities and challenges of static code analysis of IEC 61131-3 programs | |
US9235433B2 (en) | Speculative object representation | |
JP5893038B2 (ja) | ユーザ定義型のコンパイル時境界検査 | |
JP6357814B2 (ja) | 未完成ソフトウェアの分析 | |
US9367423B1 (en) | Methods, systems, and articles of manufacture for using multiple modes during execution of a program | |
JP4806060B2 (ja) | コンパイラ・プログラム、コンパイル方法及びコンピュータ・システム | |
US20180032320A1 (en) | Computer-implemented method for allowing modification of a region of original code | |
US8387020B1 (en) | Verifying that a method has been implemented for a program written in a dynamic programming language | |
Konat et al. | Scalable incremental building with dynamic task dependencies | |
Hills et al. | Enabling PHP software engineering research in Rascal | |
US8127282B2 (en) | Recompilation of a class with a java static variable | |
Cachera et al. | Certified memory usage analysis | |
JPH0748182B2 (ja) | プログラム・エラー検出方法 | |
US8918772B1 (en) | Statically analyzing program correctness for a dynamic programming language | |
Campbell | An executable semantics for CompCert C | |
Gaikwad et al. | Performance analysis for languages hosted on the truffle framework | |
US20210096892A1 (en) | Snapshot for compiler optimization | |
CN105786465A (zh) | 一种脚本语言执行方法及装置 | |
US20170206068A1 (en) | Program optimization based on directives for intermediate code | |
Sankaranarayanan et al. | Source-to-source refactoring and elimination of global variables in c programs | |
EP2309386A1 (en) | Notation enhancement system, compiler and method | |
US20100077384A1 (en) | Parallel processing of an expression | |
WO2016070694A1 (zh) | 基于GCC和Chromium的代码跟踪方法及系统 | |
JP2009258796A (ja) | プログラム開発装置及びプログラム開発方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20161206 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20171024 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20171031 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20171215 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20180522 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20180604 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6357814 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |