JPWO2014184896A1 - プログラム解析装置、プログラム解析方法およびプログラム解析プログラム - Google Patents

プログラム解析装置、プログラム解析方法およびプログラム解析プログラム Download PDF

Info

Publication number
JPWO2014184896A1
JPWO2014184896A1 JP2015516813A JP2015516813A JPWO2014184896A1 JP WO2014184896 A1 JPWO2014184896 A1 JP WO2014184896A1 JP 2015516813 A JP2015516813 A JP 2015516813A JP 2015516813 A JP2015516813 A JP 2015516813A JP WO2014184896 A1 JPWO2014184896 A1 JP WO2014184896A1
Authority
JP
Japan
Prior art keywords
program
source code
variable
new
partial
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
Application number
JP2015516813A
Other languages
English (en)
Other versions
JP5976209B2 (ja
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Application granted granted Critical
Publication of JP5976209B2 publication Critical patent/JP5976209B2/ja
Publication of JPWO2014184896A1 publication Critical patent/JPWO2014184896A1/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/3612Software analysis for verifying properties of programs by runtime analysis
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)

Abstract

アプリケーションリスト読み込み部220はアプリケーションリスト122を読み込む。アプリケーション収集部230はアプリケーションリスト122に示される搭載アプリケーションのソースコード111を取得する。また、アプリケーション収集部230は追加アプリケーションのソースコード111を取得する。プログラム解析部240は各ソースコード111を用いて新たな実行プログラム123に関するプログラム解析を行う。新たな実行プログラム123に不具合が生じない場合、プログラム作成部250は新たな実行プログラム123を作成する。そして、プログラム更新部260は新たな実行プログラム123を電子制御装置121に書き込み、追加アプリケーション名をアプリケーションリスト122に追加する。

Description

本発明は、プログラム解析装置、プログラム解析方法およびプログラム解析プログラムに関するものである。
開発されたプログラムの問題箇所を検出するために、プログラムのソースコードまたは実行形式のプログラムに対して解析ツールが実行される。
プログラムの設計者は、プログラムの不具合の有無を解析結果に基づいて判断し、判断結果をプログラムの設計にフィードバックする。
しかし、プログラムを構成する全てのソースコードが揃っていなければ、十分なプログラム解析を行うことができない。
つまり、追加機能を提供するためのプログラムを既存のプログラムにアドオンする場合、アドオンするプログラムと既存のプログラムとの全ての組み合わせに対してプログラム解析を実施する必要がある。
そのため、アドオンするプログラムが増えると解析対象の組み合わせが膨大になり、プログラム解析に非常に多くの工数がかかってしまう。
また、プログラムの解析ツールが出力する警告内容には、プログラムの不具合につながる内容の他に、設計者が意図した内容、つまり、プログラムの不具合につながらない内容が含まれる。しかし、プログラムの不具合につながる内容とプログラムの不具合につながらない内容とを自動的に切り分けることはできなかった。
特開平7−210424号公報
本発明は、例えば、新たな部分プログラムを追加後の新たな実行プログラムに関するプログラム解析を容易に行うことができるようにすることを目的とする。
本発明のプログラム解析装置は、
実行する実行プログラムと、前記実行プログラムを構成する部分プログラムを示す部分プログラムリストと、を記憶するプログラム実行装置から、前記部分プログラムリストを取得するリスト取得部と、
前記リスト取得部によって取得された前記部分プログラムリストに示される前記部分プログラムのソースコードと、前記実行プログラムに追加する新たな部分プログラムのソースコードと、を取得するソースコード取得部と、
前記ソースコード取得部によって取得された前記部分プログラムの前記ソースコードと前記新たな部分プログラムの前記ソースコードとを用いて、前記新たな部分プログラムを含む新たな実行プログラムに不具合が生じるか否かを判定するプログラム解析部とを備える。
本発明によれば、部分プログラムのソースコードと新たな部分プログラムのソースコードとを取得することにより、新たな部分プログラムを追加後の新たな実行プログラムに関するプログラム解析を容易に行うことができる。
実施の形態1におけるプログラム管理システム100の構成図である。 実施の形態1における外部端末200の機能構成図である。 実施の形態1におけるプログラム管理方法の処理の流れを示すフローチャートである。 実施の形態1における外部端末200のハードウェア構成の一例を示す図である。 実施の形態2におけるアプリケーションサーバ110の機能構成図である。 実施の形態2におけるプログラム管理方法の処理の流れを示すフローチャートである。 実施の形態3におけるプログラム管理システム100の機能構成図である。 実施の形態3におけるプログラム管理方法の処理の流れを示すフローチャートである。 実施の形態4におけるアプリケーションファイル118の構成図である。 実施の形態4における外部端末200の機能構成図である。 実施の形態4におけるプログラム管理方法の処理の流れを示すフローチャートである。 実施の形態4におけるプログラム解析処理(S200)のフローチャートである。 実施の形態4におけるメインルーチン作成処理(S210)のフローチャートである。 実施の形態4における第一の構造設計ファイル291の一例を示す図である。 実施の形態4における第二の構造設計ファイル292の一例を示す図である。 実施の形態4におけるアプリケーションのテスト方法を示す概要図である。 実施の形態5におけるプログラム解析処理(S200)のフローチャートである。 実施の形態6における第一の構造設計ファイル291の一例を示す図である。 実施の形態6における第二の構造設計ファイル292の一例を示す図である。 実施の形態6における第三の構造設計ファイル293の一例を示す図である。 実施の形態7におけるメインルーチン作成処理(S210)のフローチャートである。 実施の形態7における第一の構造設計ファイル291の一例を示す図である。 実施の形態7における第一の構造設計ファイル291の一例を示す図である。 実施の形態7における第一の構造設計ファイル291の一例を示す図である。
実施の形態1.
新たな部分プログラムを追加後の新たな実行プログラムに関するプログラム解析を行う形態について説明する。
図1は、実施の形態1におけるプログラム管理システム100の構成図である。
実施の形態1におけるプログラム管理システム100の構成について、図1に基づいて説明する。
プログラム管理システム100は、アプリケーションサーバ110と、車両120と、外部端末200(プログラム解析装置の一例)とを備える。また、車両120は、車両120を制御する電子制御装置121(プログラム実行装置の一例)を備える。但し、電子制御装置121は、車両制御以外の情報処理を行う装置であっても構わない。
外部端末200は、有線または無線で、アプリケーションサーバ110および車両120と通信する。
電子制御装置121は、アプリケーションリスト122(部分プログラムリストの一例)と実行プログラム123とを記憶する。
実行プログラム123は、例えば、車両120を制御するための実行形式のプログラムである。
アプリケーションリスト122は、実行プログラム123を構成するアプリケーションプログラム(部分プログラムの一例)の名称を示すデータである。
以下、実行プログラム123を構成するアプリケーションプログラムを「搭載アプリケーション」という。
電子制御装置121にアプリケーションプログラムを追加する場合、つまり、アプリケーションプログラムをアドオンまたはプラグインする場合、外部端末200は次のように動作する。
以下、追加するアプリケーションプログラムを「追加アプリケーション」といい、アプリケーションプログラムを追加後の実行プログラム123を「新たな実行プログラム123」という。
(1)外部端末200は、電子制御装置121からアプリケーションリスト122を取得する。
(2)外部端末200は、アプリケーションリスト122に示されているアプリケーション名で識別される搭載アプリケーションのソースコード111をアプリケーションサーバ110から取得する。
また、外部端末200は、追加アプリケーションのソースコード111をアプリケーションサーバ110から取得する。
(3)外部端末200は、追加アプリケーションのソースコード111と搭載アプリケーションのソースコード111とを用いて、新たな実行プログラム123に関するプログラム解析を行う。プログラム解析では、新たな実行プログラム123に不具合が生じるか否かを判定する。
(4)新たな実行プログラム123に不具合が生じないと判定した場合、外部端末200は、新たな実行プログラム123を作成し、電子制御装置121に記憶されている実行プログラム123を新たな実行プログラム123で更新する。また、外部端末200は、追加アプリケーションのアプリケーション名をアプリケーションリスト122に追加する。
以上の動作により、アプリケーションプログラムを追加した際に新たな実行プログラム123に不具合が生じるか否か、を判定することができる。
図2は、実施の形態1における外部端末200の機能構成図である。
実施の形態1における外部端末200の機能構成について、図2に基づいて説明する。
外部端末200は、追加アプリケーション受付部210と、アプリケーションリスト読み込み部220(リスト取得部の一例)と、アプリケーション収集部230(ソースコード取得部の一例)とを備える。
外部端末200は、プログラム解析部240と、プログラム作成部250と、プログラム更新部260と、端末記憶部290とを備える。
追加アプリケーション受付部210は、電子制御装置121に対するアプリケーションプログラムの追加要求を受け付ける。
アプリケーションリスト読み込み部220は、電子制御装置121からアプリケーションリスト122を読み込む。
アプリケーション収集部230は、アプリケーションリスト122に示されているアプリケーション名で識別される搭載アプリケーションのソースコード111をアプリケーションサーバ110からダウンロードする。また、アプリケーション収集部230は、追加アプリケーションのソースコード111をアプリケーションサーバ110からダウンロードする。
プログラム解析部240は、追加アプリケーションのソースコード111と搭載アプリケーションのソースコード111とを用いて、新たな実行プログラム123に関するプログラム解析を行う。
プログラム作成部250は、新たな実行プログラム123に不具合が生じないと判定された場合に、新たな実行プログラム123を作成する。
プログラム更新部260は、電子制御装置121に記憶されている実行プログラム123を新たな実行プログラム123に更新する。また、プログラム更新部260は、追加アプリケーションのアプリケーション名をアプリケーションリスト122に追加する。
端末記憶部290は、外部端末200で使用するデータを記憶する。
例えば、端末記憶部290は、アプリケーションリスト122、追加アプリケーションのソースコード111、搭載アプリケーションのソースコード111および新たな実行プログラム123などを記憶する。
図3は、実施の形態1におけるプログラム管理方法の処理の流れを示すフローチャートである。
実施の形態1におけるプログラム管理方法について、図3に基づいて説明する。
ここで、開発されたアプリケーションのソースコード111がアプリケーションサーバ110に予め記憶されているものとする。
ソースコード111がC言語で記述されている場合、ソースコード111が記述されたファイルの拡張子は“.c”または“.h”である。
S110において、ユーザは、電子制御装置121に対するアプリケーションの追加要求を外部端末200に入力する。例えば、車両120のディーラー(ユーザの一例)がアプリケーションの追加要求を外部端末200に入力する。
そして、外部端末200の追加アプリケーション受付部210は、アプリケーションの追加要求を受け付ける。
なお、アプリケーションの追加要求には、電子制御装置121に追加したい追加アプリケーションのアプリケーション名(識別子の一例)が含まれる。
S110の後、処理はS120に進む。
S120において、アプリケーションリスト読み込み部220は、電子制御装置121と通信する。そして、アプリケーションリスト読み込み部220は、電子制御装置121からアプリケーションリスト122を読み込む。
S120の後、処理はS130に進む。
S130において、アプリケーション収集部230は、アプリケーションサーバ110と通信する。
そして、アプリケーション収集部230は、S110で入力された追加要求に含まれるアプリケーション名で識別される追加アプリケーションのソースコード111をアプリケーションサーバ110からダウンロードする。
また、アプリケーション収集部230は、S120で読み込まれたアプリケーションリスト122に示されるアプリケーション名で識別される搭載アプリケーションのソースコード111をアプリケーションサーバ110からダウンロードする。
S130の後、処理はS140に進む。
S140において、プログラム解析部240は、S130でダウンロードされた追加アプリケーションのソースコード111および搭載アプリケーションのソースコード111を用いて、新たな実行プログラム123に関するプログラム解析を行う。そして、プログラム解析部240は、新たな実行プログラム123に不具合が生じるか否かを示す解析結果を得る。
例えば、プログラム解析部240は、従来のプログラム解析ツールを実行することによって、静的または動的にプログラム解析を行う。
オーバーフロー、アンダーフロー、ゼロ除算またはアクセス例外の有無、モジュール(ルーチンともいう)の再帰呼び出しの有無、割り込みの制限の不整合などは、解析内容の一例である。
S140の後、処理はS150に進む。
S150において、S140の解析結果に従って処理が分岐する。
新たな実行プログラム123に不具合が生じるという解析結果が得られた場合(YES)、追加アプリケーション受付部210がアプリケーションを追加できない旨のエラーメッセージを表示し、プログラム管理方法の処理は終了する。
新たな実行プログラム123に不具合が生じないという解析結果が得られた場合(NO)、処理はS160に進む。
S160において、プログラム作成部250は、新たな実行プログラム123を作成する。
例えば、プログラム作成部250は、追加アプリケーションのソースコード111と搭載アプリケーションのソースコード111とをコンパイルする。そして、プログラム作成部250は、コンパイルによって作成された各オブジェクトファイルをリンクする。各オブジェクトファイルをリンクすることによって、新たな実行プログラム123が作成される。
S160の後、処理はS170に進む。
S170において、プログラム更新部260は電子制御装置121と通信する。
そして、プログラム更新部260は、電子制御装置121に記憶されている実行プログラム123を、S160で作成された新たな実行プログラム123に更新する。
また、プログラム更新部260は、追加アプリケーションのアプリケーション名を、電子制御装置121に記憶されているアプリケーションリスト122に追加する。
追加アプリケーション受付部210は、アプリケーションの追加が終了したことを示す終了メッセージを外部端末200の表示部に表示する。
S170の後、プログラム管理方法の処理は終了する。
図4は、実施の形態1における外部端末200のハードウェア構成の一例を示す図である。
実施の形態1における外部端末200のハードウェア構成の一例について、図4に基づいて説明する。
外部端末200は、演算装置901、補助記憶装置902、主記憶装置903、通信装置904および入出力装置905を備えるコンピュータである。
演算装置901、補助記憶装置902、主記憶装置903、通信装置904および入出力装置905はバス909に接続している。
演算装置901は、プログラムを実行するCPU(Central Processing Unit)である。
補助記憶装置902は、例えば、ROM(Read Only Memory)、フラッシュメモリまたはハードディスク装置である。
主記憶装置903は、例えば、RAM(Random Access Memory)である。
通信装置904は、有線または無線でインターネット、LAN(ローカルエリアネットワーク)、電話回線網またはその他のネットワークを介して通信を行う。
入出力装置905は、例えば、マウス、キーボード、ディスプレイ装置である。
プログラムは、通常は補助記憶装置902に記憶されており、主記憶装置903にロードされ、演算装置901に読み込まれ、演算装置901によって実行される。
例えば、オペレーティングシステム(OS)が補助記憶装置902に記憶される。また、「〜部」として説明している機能を実現するプログラム(プログラム解析プログラムの一例)が補助記憶装置902に記憶される。そして、OSおよび「〜部」として説明している機能を実現するプログラムは主記憶装置903にロードされ、演算装置901によって実行される。
「〜の判断」、「〜の判定」、「〜の抽出」、「〜の検知」、「〜の設定」、「〜の登録」、「〜の選択」、「〜の生成」、「〜の入力」、「〜の出力」等の処理の結果を示す情報、データ、信号値または変数値が主記憶装置903または補助記憶装置902にファイルとして記憶される。また、外部端末200が使用するその他のデータが主記憶装置903または補助記憶装置902に記憶される。
また、図4は実施の形態1における外部端末200のハードウェア構成の一例を示すものであり、外部端末200のハードウェア構成は図4に示す構成と異なる構成であってもよい。
なお、実施の形態1に係る方法(プログラム解析方法の一例)はフローチャート等を用いて説明している手順または一部異なる手順によって実現することができる。
実施の形態1により、搭載アプリケーションのソースコード111と追加アプリケーションのソースコード111とを収集することにより、新たな実行プログラム123に関するプログラム解析を容易に行うことができる。
また、新たな実行プログラム123の実装に必要なソースコードが揃った状態でプログラム解析を行うため、プログラム解析が1回で済む。つまり、プログラム解析の工数を削減することができる。
実施の形態2.
過去のプログラム解析の結果を利用する形態について説明する。
以下、実施の形態1と異なる事項について主に説明する。説明を省略する事項については実施の形態1と同様である。
図5は、実施の形態2におけるアプリケーションサーバ110の機能構成図である。
実施の形態2におけるアプリケーションサーバ110の機能構成について、図5に基づいて説明する。
アプリケーションサーバ110は、ソースコード要求受信部113、解析結果検索部114、ソースコード応答部115およびサーバ記憶部119を備える。
サーバ記憶部119は、アプリケーションサーバ110で使用するデータを記憶する。
例えば、サーバ記憶部119は、ソースコード111と解析結果テーブル112とを記憶する。
解析結果テーブル112は、プログラムの解析結果とプログラムを構成する複数のアプリケーションのそれぞれのアプリケーション名とを対応付けるテーブルである。
ソースコード要求受信部113と、解析結果検索部114と、ソースコード応答部115とのそれぞれの動作については、以降で説明する。
図6は、実施の形態2におけるプログラム管理方法の処理の流れを示すフローチャートである。
実施の形態2におけるプログラム管理方法について、図6に基づいて説明する。
外部端末200は、実施の形態1(図3参照)で説明したS130の代わりに、S131およびS132を実行する。
S131において、外部端末200のアプリケーション収集部230は、追加アプリケーションと搭載アプリケーションとのそれぞれのソースコード111を要求するためのソースコード要求をアプリケーションサーバ110に送信する。ソースコード要求は、新たな実行プログラム123を構成する追加アプリケーションと搭載アプリケーションとのそれぞれのアプリケーション名を含む。
アプリケーションサーバ110のソースコード要求受信部113は、外部端末200からソースコード要求を受信する。
アプリケーションサーバ110の解析結果検索部114は、ソースコード要求から追加アプリケーションのアプリケーション名と搭載アプリケーションのアプリケーション名とを取得する。そして、解析結果検索部114は、追加アプリケーションのアプリケーション名と搭載アプリケーションのアプリケーション名とに対応付けられた解析結果が解析結果テーブル112に設定されているか否かを判定する。
該当する解析結果が解析結果テーブル112に設定されている場合、アプリケーションサーバ110のソースコード応答部115は、該当する解析結果と、追加アプリケーションのソースコード111と、搭載アプリケーションのソースコード111とを外部端末200に送信する。そして、外部端末200のアプリケーション収集部230は、アプリケーションサーバ110から送信された解析結果およびソースコード111を受信する。但し、不具合が生じることを解析結果が示す場合、ソースコード111の通信は行わなくてもよい。
該当する解析結果が解析結果テーブル112に設定されていない場合、アプリケーションサーバ110のソースコード応答部115は、追加アプリケーションのソースコード111と搭載アプリケーションのソースコード111とを外部端末200に送信する。そして、外部端末200のアプリケーション収集部230は、アプリケーションサーバ110から送信されたソースコード111を受信する。
S131の後、処理はS132に進む。
S132において、外部端末200のプログラム解析部240は、S131で解析結果を取得できたか否かを判定する。
解析結果を取得できた場合(YES)、処理はS150に進む。
解析結果を取得できなかった場合(NO)、処理はS140に進む。
S140において、外部端末200のプログラム解析部240は、S131で取得したソースコード111を用いてプログラム解析を行う(実施の形態1と同様)。
S140の後、処理はS150に進む。
S150において、S140で得られた解析結果またはS131で得られた解析結果に従って処理が分岐する。
その他の処理は、実施の形態1と同様である。
実施の形態2により、重複するプログラム解析を省略し、外部端末200の負荷を軽減することができる。
なお、アプリケーションサーバ110の代わりに外部端末200が解析結果テーブル112を記憶しても構わない。そして、該当する解析結果が解析結果テーブル112に設定されている場合、外部端末200はプログラム解析(S140)を行わず、解析結果テーブル112に設定されている解析結果を利用する。
実施の形態3.
外部端末200の代わりにアプリケーションサーバ110がプログラム解析およびプログラムの作成を行う形態について説明する。
以下、実施の形態1と異なる事項について主に説明する。説明を省略する事項については実施の形態1と同様である。
図7は、実施の形態3におけるプログラム管理システム100の機能構成図である。
実施の形態3におけるプログラム管理システム100の機能構成について、図7に基づいて説明する。
アプリケーションサーバ110(プログラム解析装置の一例)は、外部端末200の代わりに、アプリケーション収集部230とプログラム解析部240とプログラム作成部250とを備える。
アプリケーションサーバ110は、新たな実行プログラム123を外部端末200に提供するプログラム提供部116を備える。
アプリケーションサーバ110は、アプリケーションサーバ110で使用するデータ(例えば、ソースコード111)を記憶するサーバ記憶部119を備える。
外部端末200は、新たな実行プログラム123をアプリケーションサーバ110から取得するプログラム取得部270を備える。
図8は、実施の形態3におけるプログラム管理方法の処理の流れを示すフローチャートである。
実施の形態3におけるプログラム管理方法について、図8に基づいて説明する。
外部端末200は、実施の形態1(図3参照)で説明したS130からS160の代わりに、S133およびS134を実行する。
S133において、外部端末200のプログラム取得部270は、新たな実行プログラム123を要求するためのプログラム要求をアプリケーションサーバ110に送信する。プログラム要求は、新たな実行プログラム123を構成する追加アプリケーションと搭載アプリケーションとのそれぞれのアプリケーション名を含む。
アプリケーションサーバ110のプログラム提供部116は、外部端末200からプログラム要求を受信する。
アプリケーションサーバ110のアプリケーション収集部230は、プログラム要求に含まれる各アプリケーション名に基づいて、追加アプリケーションのソースコード111と搭載アプリケーションのソースコード111とをサーバ記憶部119から収集する。
アプリケーションサーバ110のプログラム解析部240は、収集されたソースコード111を用いて、新たな実行プログラム123に関するプログラム解析を行う(実施の形態1と同様)。
新たな実行プログラム123に不具合が生じないという解析結果が得られた場合、アプリケーションサーバ110のプログラム作成部250は新たな実行プログラム123を作成する(実施の形態1と同様)。そして、アプリケーションサーバ110のプログラム提供部116は新たな実行プログラム123を送信し、外部端末200のプログラム取得部270は新たな実行プログラム123を受信する。
新たな実行プログラム123に不具合が生じるという解析結果が得られた場合、アプリケーションサーバ110のプログラム提供部116は新たな実行プログラム123を提供できない旨のエラーメッセージを送信し、外部端末200のプログラム取得部270はエラーメッセージを受信する。
S133の後、処理はS134に進む。
S134において、S133の処理結果に従って処理が分岐する。
新たな実行プログラム123が取得できた場合(YES)、処理はS170に進む。
新たな実行プログラム123が取得できなかった場合、つまり、エラーメッセージを取得した場合(NO)、外部端末200の追加アプリケーション受付部210がアプリケーションを追加できない旨のエラーメッセージを表示し、プログラム管理方法の処理は終了する。
その他の処理は、実施の形態1と同様である。
実施の形態3により、プログラム解析およびプログラム作成をアプリケーションサーバ110で実行し、外部端末200の負荷を軽減することができる。
なお、プログラム解析とプログラム作成とのいずれか一方の処理をアプリケーションサーバ110で実行し、他方の処理を外部端末200で実行しても構わない。
実施の形態4.
新たな実行プログラム123を構成する各アプリケーションの変数情報に基づいて、新たな実行プログラム123に関するプログラム解析を行う形態について説明する。
以下、実施の形態1と異なる事項について主に説明する。説明を省略する事項については実施の形態1と同様である。
図9は、実施の形態4におけるアプリケーションファイル118の構成図である。
実施の形態4におけるアプリケーションファイル118の構成について、図9に基づいて説明する。
アプリケーションサーバ110は、アプリケーション毎にアプリケーションファイル118を記憶する。
アプリケーションファイル118は、アプリケーションのソースコード111と、アプリケーションの構造設計情報117(変数情報の一例)とを含む。構造設計情報117はアプリケーションで使用される変数に関する情報である。
実施の形態4において、構造設計情報117は、アプリケーションのソースコード111に含まれるサブルーチン(関数ともいう)の名称と、サブルーチン内で使用される変数の名称と、変数が有する属性の値と、を対応付けて示す。
実施の形態4において、アプリケーションサーバ110は、アプリケーション(a)(b)(c)のそれぞれのアプリケーションファイル118を記憶するものとする。
アプリケーション(a)のソースコード111は変数Xを使用するサブルーチン(a)を含み、アプリケーション(a)の構造設計情報117はサブルーチン(a)で使用される変数Xの属性値として属性(3)を示す。
アプリケーション(b)のソースコード111は変数Xを使用するサブルーチン(b)を含み、アプリケーション(b)の構造設計情報117はサブルーチン(b)で使用される変数Xの属性値として属性(2)を示す。
アプリケーション(c)のソースコード111は変数Xを使用するサブルーチン(c)を含み、アプリケーション(c)の構造設計情報117はサブルーチン(c)で使用される変数Xの属性値として属性(1)を示す。
例えば、変数Xは、電子制御装置121の内部状態の変化または電子制御装置121に入力される入力信号の変化を確認するための状態変数(フラグともいう)である。
属性(1)は「一周期遅れ読み出し属性(更新前読み出し属性ともいう)」を意味し、属性(2)は「書き込み属性」を意味し、属性(3)は「通常周期読み出し属性(更新後読み出し属性ともいう)」を意味する。
一周期遅れ読み出し属性は、更新周期が経過する前の変数値が読み出されることを示す。言い換えると、一周期遅れ読み出し属性は、更新前の変数値を読み出すための属性である。
書き込み属性は、変数値が書き込まれることを示す。言い換えると、書き込み属性は、変数値を更新するための属性である。
通常周期読み出し属性は、更新周期が経過した後の変数値が読み出されることを示す。言い換えると、通常周期読み出し属性は、更新後の変数値を読み出すための属性である。
図10は、実施の形態4における外部端末200の機能構成図である。
実施の形態4における外部端末200の機能構成について、図10に基づいて説明する。
外部端末200は、実施の形態1(図2参照)で説明したように、プログラム解析部240を備える。
プログラム解析部240は、メインルーチン作成部241と、プログラム組み立て部242と、プログラム解析実行部243とを備える。
メインルーチン作成部241は、新たな実行プログラム123のメインルーチンのソースコードを作成する。
プログラム組み立て部242は、メインルーチンのソースコードと追加アプリケーションのソースコード111と搭載アプリケーションのソースコード111とを用いて、新たな実行プログラム123のソースコードを作成する。
プログラム解析実行部243は、新たな実行プログラム123のソースコードに対してプログラム解析を実行する。
図11は、実施の形態4におけるプログラム管理方法の処理の流れを示すフローチャートである。
実施の形態4におけるプログラム管理方法について、図11に基づいて説明する。
外部端末200は、実施の形態1(図3参照)で説明したS130およびS140の代わりに、S135およびS200を実行する。
S135において、アプリケーション収集部230は、新たな実行プログラム123を構成する各アプリケーションのソースコード111の代わりに、各アプリケーションのアプリケーションファイル118(ソースコード111を含む)を収集する。
S135の後、処理はS200に進む。
S200において、プログラム解析部240は、各アプリケーションのソースコード111の代わりに各アプリケーションのアプリケーションファイル118を用いて、新たな実行プログラム123に関するプログラム解析を行う。
その他の処理は、実施の形態1と同様である。
図12は、実施の形態4におけるプログラム解析処理(S200)のフローチャートである。
実施の形態4におけるプログラム解析処理(S200)について、図12に基づいて説明する。
S210において、メインルーチン作成部241は、新たな実行プログラム123を構成する各アプリケーションのアプリケーションファイル118に基づいて、新たな実行プログラム123のメインルーチンのソースコードを作成する。
新たな実行プログラム123のメインルーチンは、各アプリケーションに含まれるサブルーチンを適切な順番で呼び出すための関数である。
メインルーチン作成処理(S210)の詳細については後述する。
S210の後、処理はS220に進む。
S220において、プログラム組み立て部242は、S210で作成されたメインルーチンのソースコードと各アプリケーションファイル118に含まれるソースコード111とを用いて、新たな実行プログラム123のソースコードを作成する。
例えば、新たな実行プログラム123のソースコードは、メインルーチンのソースコードと追加アプリケーションのソースコード111と搭載アプリケーションのソースコード111とを含む。
S220の後、処理はS230に進む。
S230において、プログラム解析実行部243は、S220で作成された新たな実行プログラム123のソースコードに対してプログラム解析を実行する。
例えば、プログラム解析実行部243は、新たな実行プログラム123のソースコードをプログラム解析ツールに入力し、プログラム解析ツールを実行する。
S230の後、プログラム解析処理(S200)は終了する。
図13は、実施の形態4におけるメインルーチン作成処理(S210)のフローチャートである。
実施の形態4におけるメインルーチン作成処理(S210)について、図13に基づいて説明する。
S211において、メインルーチン作成部241は、新たな実行プログラム123を構成する各アプリケーションのアプリケーションファイル118から、未選択の変数を一つ選択する。
例えば、メインルーチン作成部241は、各アプリケーションファイル118に含まれる構造設計情報117から、未選択の変数を一つ選択する。
S211の後、処理はS212に進む。
S212において、メインルーチン作成部241は、各アプリケーションファイル118に含まれる構造設計情報117のうち、S211で選択した変数の属性値が設定されている構造設計情報117を選択する。
そして、メインルーチン作成部241は、S211で選択した変数の属性値を構造設計情報117から取得する。
例えば、アプリケーション(a)のサブルーチン(a)で使用される変数XがS211で選択された場合、メインルーチン作成部241は、アプリケーション(a)のアプリケーションファイル118に含まれる構造設計情報117を選択する。そして、メインルーチン作成部241は、サブルーチン(a)と変数Xとに対応付けられている属性値を構造設計情報117から取得する。
S212の後、処理はS213に進む。
S213において、メインルーチン作成部241は、サブルーチン名と変数名と属性値とを対応付けて第一の構造設計ファイル291に設定する。
例えば、S211でサブルーチン(a)の変数Xが選択され、S212で属性(3)が取得された場合、メインルーチン作成部241は、図14の(1)に示すように、第一の構造設計ファイル291の設定を行う。
図14は、実施の形態4における第一の構造設計ファイル291の一例を示す図である。
S213の後、処理はS214に進む。
S214において、メインルーチン作成部241は、S211で選択していない変数が有るか否かを判定する。
未選択の変数が有る場合(YES)、処理はS211に戻る。
未選択の変数が無い場合(NO)、処理はS215に進む。
S211からS214が繰り返されることにより、例えば、図14の(2)に示す第一の構造設計ファイル291が作成される。
S215において、メインルーチン作成部241は、第一の構造設計ファイル291に基づいて第二の構造設計ファイル292を作成する。
第二の構造設計ファイル292は、変数毎に変数名と変数の属性値と変数が使用されるサブルーチンの名称とを対応付けるデータである。
例えば、メインルーチン作成部241は、図14の(2)に示す第一の構造設計ファイル291に基づいて、図15に示す第二の構造設計ファイル292を作成する。
図15は、実施の形態4における第二の構造設計ファイル292の一例を示す図である。
S215の後、処理はS216に進む。
S216において、メインルーチン作成部241は、S215で作成した第二の構造設計ファイル292に基づいて、各サブルーチンを呼び出す順序を決定する。
例えば、メインルーチン作成部241は、属性(1)の変数が使用されるサブルーチン、属性(2)の変数が使用されるサブルーチン、属性(3)の変数が使用されるサブルーチンの順序で、サブルーチンの呼び出し順序を決定する。
例えば、メインルーチン作成部241は、図15に示す第二の構造設計ファイル292に基づいて、サブルーチンの呼び出し順序「(c)→(b)→(a)」を決定する。
S216の後、処理はS217に進む。
S217において、メインルーチン作成部241は、S216で決定した呼び出し順序で各サブルーチンを呼び出すためのメインルーチンのソースコードを作成する。
例えば、メインルーチン作成部241は、サブルーチン(a)(b)(c)を(c)(b)(a)の順番で呼び出すためのメインルーチンのソースコードを作成する。
S217の後、メインルーチン作成処理(S210)は終了する。
図16は、実施の形態4におけるアプリケーションのテスト方法を示す概要図である。
実施の形態4におけるアプリケーションのテスト方法の概要について、図16に基づいて説明する。
まず、アプリケーションの仕様が決定され、アプリケーション仕様書131が作成される。
アプリケーション仕様書131には、アプリケーションに含まれるサブルーチンに関する情報として、サブルーチンで使用される変数の情報が含まれる。
次に、アプリケーションのソースコード111がアプリケーション仕様書131に基づいて作成される。
また、アプリケーションをテストするためのテスト仕様書132がアプリケーション仕様書131に基づいて作成される。テスト仕様書132が作成される際、アプリケーション仕様書131からサブルーチンの変数情報が抽出される。このときに抽出されるサブルーチンの変数情報は構造設計情報117として使用することができる。
次に、アプリケーションをテストするためのテスト用プログラム133がテスト仕様書132に基づいて作成される。
そして、テスト用プログラム133が実行されることによってアプリケーションのソースコード111(またはソースコード111をコンパイルして得られるオブジェクトコード)がテストされる。なお、テスト用プログラム133は開発用プラットフォーム134で実行される。
以上のように、アプリケーションがテストされる際にソースコード111および構造設計情報117が得られる。つまり、アプリケーションファイル118は、アプリケーションがテストされる際に得られるソースコード111および構造設計情報117を用いて作成することができる。
実施の形態4により、新たな実行プログラム123を構成する各アプリケーションの変数情報に基づいて新たな実行プログラム123のメインルーチンのソースコードを作成し、新たな実行プログラム123の全体のソースコードを作成することができる。そして、新たな実行プログラム123の全体のソースコードを用いて、新たな実行プログラム123に関するプログラム解析を行うことができる。
実施の形態5.
新たな実行プログラム123を構成する各アプリケーションの変数情報に基づいて、新たな実行プログラム123に関するプログラム解析を行う形態について説明する。
以下、実施の形態4と異なる事項について主に説明する。説明を省略する事項については実施の形態4と同様である。
図17は、実施の形態5におけるプログラム解析処理(S200)のフローチャートである。
実施の形態5におけるプログラム解析処理(S200)について、図17に基づいて説明する。
プログラム解析処理(S200)は、実施の形態4(図12参照)で説明したS230の具体的な処理としてS231からS235を含む。
S231において、プログラム解析実行部243は、新たな実行プログラム123のソースコードに対して解析ツールを実行する。
属性(1)(一周期遅れ読み出し属性)を有する変数が新たな実行プログラム123のソースコードに含まれる場合、解析ツールは属性(1)を有する変数を新たな実行プログラム123の不具合として検出(警告)する。
S231の後、処理はS232に進む。
S232において、プログラム解析実行部243は、解析ツールの実行結果に基づいて属性(1)を有する変数以外の不具合が検出されたか否かを判定する。
属性(1)を有する変数だけが不具合として検出された場合、処理はS233に進む。
属性(1)を有する変数以外の不具合が検出された場合、処理はS234に進む。
不具合が検出されなかった場合、処理はS235に進む。
S233において、プログラム解析実行部243は、不具合として検出された変数が、新たな実行プログラム123を構成する少なくともいずれかのアプリケーションの構造設計情報117に、属性(1)を有する変数として定義されているか否かを判定する。
不具合として検出された変数が属性(1)を有する変数として定義されている場合(YES)、処理はS235に進む。この場合、不具合として検出(警告)された変数は設計通りの変数であって不具合ではないと考えられる。
不具合として検出された変数が属性(1)を有する変数として定義されていない場合(NO)、処理はS234に進む。この場合、不具合として検出(警告)された変数は設計ミスの変数であって不具合であると考えられる。
S234において、プログラム解析実行部243は、新たな実行プログラム123に不具合が有ると判定する。
S234の後、プログラム解析処理(S200)は終了する。
S235において、プログラム解析実行部243は、新たな実行プログラム123に不具合が無いと判定する。
S235の後、プログラム解析処理(S200)は終了する。
実施の形態5により、解析ツールの解析結果と構造設計情報117とを組み合わせて新たな実行プログラム123の不具合の有無を判定することができる。
実施の形態6.
異なる属性を有する複数の変数が使用されるサブルーチンが有り、そのサブルーチンが新たな実行プログラム123に含まれる形態について説明する。
以下、実施の形態4、5と異なる事項について主に説明する。説明を省略する事項については実施の形態4、5と同様である。
外部端末200は、実施の形態4(図10参照)で説明したように、メインルーチン作成部241を備える。
メインルーチン作成部241は、実施の形態4(図13参照)で説明したように、新たな実行プログラム123のメインルーチンのソースコードを作成する。
但し、メインルーチン作成部241は、メインルーチンで呼び出すサブルーチンの順序を以下のように決定する(S216)。
図18は、実施の形態6における第一の構造設計ファイル291の一例を示す図である。
図19は、実施の形態6における第二の構造設計ファイル292の一例を示す図である。
図20は、実施の形態6における第三の構造設計ファイル293の一例を示す図である。
第三の構造設計ファイル293は、変数毎に変数名と1つまたは複数の属性値と変数が使用されるサブルーチンの名称とを対応付けるデータである。
S211からS214(図13参照)で、図18に示す第一の構造設計ファイル291が作成されたものとする。
S215において、メインルーチン作成部241は、図18に示す第一の構造設計ファイル291に基づいて、図19に示す第二の構造設計ファイル292を作成する。
図19に示す第二の構造設計ファイル292は、変数Xおよび変数Yがサブルーチン(e)で使用され、変数Xの属性(2)と変数Yの属性(3)とが異なることを示している。
S216(図13参照)において、メインルーチン作成部241は、第二の構造設計ファイル292を参照し、属性が異なる複数の変数が使用されるサブルーチンが有るか否かを判定する。
図19に示す第二の構造設計ファイル292において、サブルーチン(e)は、属性が異なる複数の変数が使用されるサブルーチンに該当している。
該当するサブルーチンが無い場合、メインルーチン作成部241は、第二の構造設計ファイル292に基づいてサブルーチンの呼び出し順序を決定する(実施の形態4と同様)。
該当するサブルーチンが有る場合、メインルーチン作成部241は、第二の構造設計ファイル292に基づいて第三の構造設計ファイル293を作成する。そして、メインルーチン作成部241は、第三の構造設計ファイル293に基づいてサブルーチンの呼び出し順序を決定する。
例えば、メインルーチン作成部241は、図19に示す第二の構造設計ファイル292に基づいて、図20に示す第三の構造設計ファイル293を作成する。
つまり、メインルーチン作成部241は、サブルーチン(e)を属性(2)と属性(3)との組み合わせ「属性(2)/(3)」に対応付けることによって、第三の構造設計ファイル293(図20参照)を作成する。サブルーチン(e)が属性(2)と属性(3)とのそれぞれに対応付けて第二の構造設計ファイル292(図19参照)に設定されているためである。
そして、メインルーチン作成部241は、属性(1)に対応付けられたサブルーチン、属性(1)/(2)に対応付けられたサブルーチン、属性(2)に対応付けられたサブルーチン、属性(2)/(3)に対応付けられたサブルーチン、属性(3)に対応付けられたサブルーチンの順序で、サブルーチンの呼び出し順序を決定する。
つまり、メインルーチン作成部241は、サブルーチンの呼び出し順序「(c)→(d)→(b)→(e)→(a)」を決定する。但し、サブルーチン(c)およびサブルーチン(d)は共に属性(1)に対応付けられているため、サブルーチン(c)(d)の順番が入れ替わっても構わない。
実施の形態6により、サブルーチンが異なる属性を有する複数の変数を使用する場合であってもサブルーチンの呼び出し順序を決定することができる。
実施の形態7.
サブルーチンの呼び出しが論理的に成立しない形態について説明する。
以下、実施の形態4、5と異なる事項について主に説明する。説明を省略する事項については実施の形態4、5と同様である。
図21は、実施の形態7におけるメインルーチン作成処理(S210)のフローチャートである。
実施の形態7におけるメインルーチン作成処理(S210)について、図21に基づいて説明する。
メインルーチン作成処理(S210)は、実施の形態4(図13)で説明した処理に加えて、S214−2を備える。
S211からS214において、メインルーチン作成部241は、新たな実行プログラム123の第一の構造設計ファイル291を作成する。
S214の後、処理はS214−2に進む。
S214−2において、メインルーチン作成部241は、第一の構造設計ファイル291に基づいて、呼び出し順序が矛盾するサブルーチンの組み合わせが有るか否かを判定する。
ここで、呼び出し順序が矛盾するサブルーチンの組み合わせは、以下のような2つのサブルーチンを含んだ組み合わせである。
2つのサブルーチンは、第一の変数と第二の変数とを使用する。
一方のサブルーチンで使用される第二の変数は、一方のサブルーチンで使用される第一の変数の属性よりも「低い」呼び出し順序に対応付けられる属性を有する。
他方のサブルーチンで使用される第二の変数は、他方のサブルーチンで使用される第一の変数の属性よりも「高い」呼び出し順序に対応付けられる属性を有する。
呼び出し順序が矛盾するサブルーチンの組み合わせが有る場合、メインルーチン作成部241はメインルーチンを作成せず、メインルーチン作成処理(S210)は終了する。この場合、プログラム解析実行部243は、プログラム解析を行わず、新たな実行プログラム123に不具合が有ると判定する。
呼び出し順序が矛盾するサブルーチンの組み合わせが無い場合、処理はS215に進む。S215からS217は実施の形態4と同様である。
図22、図23および図24は、実施の形態7における第一の構造設計ファイル291の一例を示す図である。
図22から図24に示すような第一の構造設計ファイル291が作成された場合、メインルーチン作成部241は、呼び出し順序が矛盾するサブルーチンの組み合わせが有ると判定する。図22から図24の第一の構造設計ファイル291において、属性(1)に対応する呼び出し順序が1番であり、属性(2)に対応する呼び出し順序が2番であり、属性(3)に対応する呼び出し順序が3番である。
図22に示す第一の構造設計ファイル291において、サブルーチン(e)は属性(2)の変数Yと属性(3)の変数Xとを使用する。つまり、変数Xは、変数Yの属性(2)よりも「低い」呼び出し順序に対応付けられる属性(3)を有する。
また、サブルーチン(f)は属性(3)の変数Yと属性(2)の変数Xとを使用する。つまり、変数Xは、変数Yの属性(3)よりも「高い」呼び出し順序に対応付けられる属性(2)を有する。
したがって、サブルーチン(e)およびサブルーチン(f)は呼び出し順序が矛盾する。なお、サブルーチン(f)で使用される変数Xの属性が属性(1)である場合も呼び出し順序は矛盾する。
図23または図24の第一の構造設計ファイル291についても同様である。
実施の形態7において、メインルーチン作成部241は、第一の構造設計ファイル291に基づいて第二の構造設計ファイル292を作成し(S215)、第二の構造設計ファイル292に基づいて矛盾するサブルーチンの組み合わせの有無を判定しても構わない(S214−2)。
実施の形態7により、呼び出し順序が矛盾するサブルーチンの組み合わせを検出することができる。
各実施の形態は、プログラム管理システム100および外部端末200の形態の一例である。
つまり、プログラム管理システム100および外部端末200は、各実施の形態で説明した機能または構成の一部を備えなくても構わない。
また、プログラム管理システム100および外部端末200は、各実施の形態で説明していない機能または構成を備えても構わない。
さらに、各実施の形態は、矛盾が生じない範囲で一部または全てを組み合わせても構わない。
100 プログラム管理システム、110 アプリケーションサーバ、111 ソースコード、112 解析結果テーブル、113 ソースコード要求受信部、114 解析結果検索部、115 ソースコード応答部、116 プログラム提供部、117 構造設計情報、118 アプリケーションファイル、119 サーバ記憶部、120 車両、121 電子制御装置、122 アプリケーションリスト、123 実行プログラム、131 アプリケーション仕様書、132 テスト仕様書、133 テスト用プログラム、134 開発用プラットフォーム、200 外部端末、210 追加アプリケーション受付部、220 アプリケーションリスト読み込み部、230 アプリケーション収集部、240 プログラム解析部、241 メインルーチン作成部、242 プログラム組み立て部、243 プログラム解析実行部、250 プログラム作成部、260 プログラム更新部、270 プログラム取得部、290 端末記憶部、291 第一の構造設計ファイル、292 第二の構造設計ファイル、293 第三の構造設計ファイル、901 演算装置、902 補助記憶装置、903 主記憶装置、904 通信装置、905 入出力装置、909 バス。

Claims (10)

  1. 実行プログラムを構成する部分プログラムを示す部分プログラムリストを取得するリスト取得部と、
    前記リスト取得部によって取得された前記部分プログラムリストに示される前記部分プログラムのソースコードと、前記実行プログラムに追加する新たな部分プログラムのソースコードと、を取得するソースコード取得部と、
    前記ソースコード取得部によって取得された前記部分プログラムの前記ソースコードと前記新たな部分プログラムの前記ソースコードとを用いて、前記新たな部分プログラムを含む新たな実行プログラムに不具合が生じるか否かを判定するプログラム解析部と
    を備えることを特徴とするプログラム解析装置。
  2. 前記ソースコード取得部は、前記部分プログラムで使用される変数に関する変数情報と、前記新たな部分プログラムで使用される変数に関する変数情報とを取得し、
    前記プログラム解析部は、前記部分プログラムの前記ソースコードと、前記部分プログラムの前記変数情報と、前記新たな部分プログラムの前記ソースコードと、前記新たな部分プログラムの前記変数情報とを用いて、前記新たな実行プログラムのソースコードを作成し、
    前記プログラム解析部は、前記新たな実行プログラムの前記ソースコードに対してプログラム解析ツールを実行することによって、前記新たな実行プログラムに不具合が生じるか否かを判定する
    ことを特徴とする請求項1に記載のプログラム解析装置。
  3. 前記部分プログラムの前記変数情報は、前記部分プログラムを構成するサブルーチンで使用される変数が、更新前の変数値を読み出すための更新前読み出し属性と、変数値を更新するための書き込み属性と、更新後の変数値を読み出すための更新後読み出し属性と、のいずれの属性を有する変数であるかを示し、
    前記新たな部分プログラムの前記変数情報は、前記新たな部分プログラムを構成するサブルーチンで使用される変数が、前記更新前読み出し属性と、前記書き込み属性と、前記更新後読み出し属性と、のいずれの属性を有する変数であるかを示し、
    前記プログラム解析部は、前記部分プログラムの前記変数情報と前記新たな部分プログラムの前記変数情報とに基づいて、前記部分プログラムの前記サブルーチンと前記新たな部分プログラムの前記サブルーチンとを呼び出す順序を決定し、
    前記プログラム解析部は、決定した順序で前記部分プログラムの前記サブルーチンと前記新たな部分プログラムの前記サブルーチンとを呼び出すメインルーチンのソースコードを作成し、
    前記プログラム解析部は、前記メインルーチンの前記ソースコードと、前記部分プログラムの前記ソースコードと、前記新たな部分プログラムの前記ソースコードとを用いて、前記新たな実行プログラムの前記ソースコードを作成する
    ことを特徴とする請求項2に記載のプログラム解析装置。
  4. 前記メインルーチンは、前記更新前読み出し属性を有する変数を使用するサブルーチン、前記書き込み属性を有する変数を使用するサブルーチン、前記更新後読み出し属性を有する変数を使用するサブルーチンの順序で、前記部分プログラムの前記サブルーチンと前記新たな部分プログラムの前記サブルーチンとを呼び出す
    ことを特徴とする請求項3に記載のプログラム解析装置。
  5. 前記プログラム解析部は、前記プログラム解析ツールを実行することによって、前記実行プログラムの前記ソースコードから前記更新前読み出し属性を有する変数を抽出し、
    前記プログラム解析部は、抽出した前記変数が前記部分プログラムの前記変数情報と前記新たな部分プログラムの前記変数情報との少なくともいずれかに前記更新前読み出し属性を有する変数として示されていない場合、前記新たな実行プログラムに不具合が生じると判定する
    ことを特徴とする請求項3または請求項4記載のプログラム解析装置。
  6. 前記部分プログラムの前記変数情報は、前記部分プログラムを構成するサブルーチンで使用される変数毎に変数の属性を示し、
    前記新たな部分プログラムの前記変数情報は、前記新たな部分プログラムを構成するサブルーチンで使用される変数毎に変数の属性を示し、
    前記プログラム解析部は、前記部分プログラムの前記サブルーチンと前記新たな部分プログラムの前記サブルーチンとが第一の変数と第二の変数とを使用し、一方のサブルーチンで使用される前記第二の変数が前記一方のサブルーチンで使用される前記第一の変数の属性よりも低い呼び出し順序に対応付けられる属性を有し、他方のサブルーチンで使用される前記第二の変数が前記他方のサブルーチンで使用される前記第一の変数の属性よりも高い呼び出し順序に対応付けられる属性を有する場合、前記新たな実行プログラムの前記ソースコードの作成の有無に関わらず、前記新たな実行プログラムに不具合が生じると判定する
    ことを特徴とする請求項2から請求項5のいずれかに記載のプログラム解析装置。
  7. 前記プログラム解析部は、前記部分プログラムと前記新たな部分プログラムと同じ部分プログラムの組み合わせによって構成される過去の実行プログラムを判定済みである場合、前記過去のプログラムの判定結果に基づいて前記新たな実行プログラムを判定する
    ことを特徴とする請求項1から請求項6のいずれかに記載のプログラム解析装置。
  8. 前記プログラム解析部が前記新たな実行プログラムに不具合が生じないと判断した場合に、前記新たな実行プログラムを作成するプログラム作成部と、
    前記実行プログラムを前記プログラム作成部によって作成された前記新たな実行プログラムに更新すると共に、前記部分プログラムリストに前記新たな部分プログラムのプログラム名を追加するプログラム更新部と
    を備えることを特徴とする請求項1から請求項7のいずれかに記載のプログラム解析装置。
  9. リスト取得部とソースコード取得部とプログラム解析部とを備えるプログラム解析装置を用いるプログラム解析方法であって、
    前記リスト取得部が、実行プログラムを構成する部分プログラムを示す部分プログラムリストを取得し、
    前記ソースコード取得部が、前記リスト取得部によって取得された前記部分プログラムリストに示される前記部分プログラムのソースコードと、前記実行プログラムに追加する新たな部分プログラムのソースコードと、を取得し、
    前記プログラム解析部が、前記ソースコード取得部によって取得された前記部分プログラムの前記ソースコードと前記新たな部分プログラムの前記ソースコードとを用いて、前記新たな部分プログラムを含む新たな実行プログラムに不具合が生じるか否かを判定する
    ことを特徴とするプログラム解析方法。
  10. 請求項1から請求項8のいずれかに記載のプログラム解析装置としてコンピュータを機能させるためのプログラム解析プログラム。
JP2015516813A 2013-05-15 2013-05-15 プログラム解析装置、プログラム解析方法およびプログラム解析プログラム Expired - Fee Related JP5976209B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/063549 WO2014184896A1 (ja) 2013-05-15 2013-05-15 プログラム解析装置、プログラム解析方法およびプログラム解析プログラム

Publications (2)

Publication Number Publication Date
JP5976209B2 JP5976209B2 (ja) 2016-08-23
JPWO2014184896A1 true JPWO2014184896A1 (ja) 2017-02-23

Family

ID=51897912

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015516813A Expired - Fee Related JP5976209B2 (ja) 2013-05-15 2013-05-15 プログラム解析装置、プログラム解析方法およびプログラム解析プログラム

Country Status (5)

Country Link
US (1) US9760470B2 (ja)
JP (1) JP5976209B2 (ja)
CN (1) CN105210044B (ja)
DE (1) DE112013007083B4 (ja)
WO (1) WO2014184896A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10127035B2 (en) * 2014-02-25 2018-11-13 Flexion Mobile Limited System and method to modify run-time behavior of an application by modification of machine-readable instructions
CN107783892A (zh) * 2016-08-25 2018-03-09 平安科技(深圳)有限公司 一种代码分析方法及终端
CN107562463B (zh) * 2017-09-11 2020-10-27 上海航天控制技术研究所 一种Ada编程语言的子程序规格化定义及调用方法
CN108009084B (zh) * 2017-11-29 2021-07-30 北京中电普华信息技术有限公司 一种混合移动应用的测试方法、装置及系统
WO2021161523A1 (ja) * 2020-02-14 2021-08-19 三菱電機株式会社 駆動制御装置および駆動制御システム
CN116756048B (zh) * 2023-08-16 2023-10-31 北京安普诺信息技术有限公司 一种代码分析方法、装置、计算机设备及存储介质

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0444176A (ja) * 1990-06-11 1992-02-13 Mitsubishi Electric Corp ソフトウエア開発支援ツール
JPH0659871A (ja) * 1992-08-12 1994-03-04 Unisia Jecs Corp ソフトウェア開発装置
JPH07210424A (ja) 1994-01-14 1995-08-11 Toshiba Corp ソフトウェアテスト支援システム
CA2147036A1 (en) 1994-05-16 1995-11-17 Yih-Farn Robin Chen System and method for selective regression testing
JPH1063536A (ja) 1996-08-16 1998-03-06 Hitachi Software Eng Co Ltd プログラム開発支援装置及びプログラム開発支援方法及びプログラム開発支援用記憶媒体
JPH11296406A (ja) 1998-04-14 1999-10-29 Kawasaki Steel Systems R & D Corp プログラム修正支援方法
JP2000284952A (ja) * 1999-03-30 2000-10-13 Mitsubishi Electric Corp ソフトウェア生成試験連携機構
US20040025083A1 (en) * 2002-07-31 2004-02-05 Murthi Nanja Generating test code for software
JP2004272830A (ja) * 2003-03-12 2004-09-30 Hitachi Ltd ソフトウェア開発支援装置
US7594219B2 (en) * 2003-07-24 2009-09-22 International Business Machines Corporation Method and apparatus for monitoring compatibility of software combinations
US20060041864A1 (en) * 2004-08-19 2006-02-23 International Business Machines Corporation Error estimation and tracking tool for testing of code
CA2504333A1 (en) * 2005-04-15 2006-10-15 Symbium Corporation Programming and development infrastructure for an autonomic element
JP4745728B2 (ja) * 2005-06-21 2011-08-10 富士通株式会社 デバッグ支援のためのプログラム
JP2007172269A (ja) 2005-12-21 2007-07-05 Internatl Business Mach Corp <Ibm> プログラムのテスト方法、テスト装置
JP2007249495A (ja) 2006-03-15 2007-09-27 Nec Corp ソフトウェア検証方法、情報処理装置およびプログラム
JP2007257478A (ja) 2006-03-24 2007-10-04 Ricoh Co Ltd 情報処理装置、機能検査方法、およびプログラム
US8561024B2 (en) * 2007-01-23 2013-10-15 International Business Machines Corporation Developing software components and capability testing procedures for testing coded software component
JP2008191963A (ja) 2007-02-06 2008-08-21 Nec Corp ソースコード検証システム、ソースコード検証方法、およびソースコード検証用プログラム
WO2010028395A1 (en) * 2008-09-08 2010-03-11 Credit Suisse Securities (Usa) Llc Apparatuses, methods and systems for providing a virtual development and deployment environment including real and synthetic data
JP5208635B2 (ja) * 2008-09-12 2013-06-12 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラミングを支援するための情報処理装置、情報処理システム、プログラミング支援方法およびプログラム
JP5374146B2 (ja) 2008-12-26 2013-12-25 キヤノン株式会社 ソフトウエア評価方法及びそれを実現する情報処理装置
CN102023918A (zh) * 2009-09-17 2011-04-20 英业达股份有限公司 对服务器产品进行测试的方法
US8645936B2 (en) * 2009-09-30 2014-02-04 Zynga Inc. Apparatuses, methods and systems for an a API call abstractor
JP2011113296A (ja) 2009-11-26 2011-06-09 Canon Inc ソース管理プログラムにおけるコーディング規約チェックシステム
US8856724B2 (en) * 2011-06-20 2014-10-07 Ebay Inc. Systems and methods for incremental software development

Also Published As

Publication number Publication date
CN105210044B (zh) 2018-11-13
DE112013007083T5 (de) 2016-01-28
US9760470B2 (en) 2017-09-12
US20160055074A1 (en) 2016-02-25
CN105210044A (zh) 2015-12-30
WO2014184896A1 (ja) 2014-11-20
JP5976209B2 (ja) 2016-08-23
DE112013007083B4 (de) 2020-02-27

Similar Documents

Publication Publication Date Title
JP5976209B2 (ja) プログラム解析装置、プログラム解析方法およびプログラム解析プログラム
US9152731B2 (en) Detecting a broken point in a web application automatic test case
CN106598612B (zh) 一种数据库中数据表的操作方法及系统
CN112394942B (zh) 基于云计算的分布式软件开发编译方法及软件开发平台
US7536678B2 (en) System and method for determining the possibility of adverse effect arising from a code change in a computer program
US9424168B2 (en) System and method for automatic generation of software test
JP2010067188A (ja) プログラミングを支援するための情報処理装置、情報処理システム、プログラミング支援方法およびプログラム
CN110716874A (zh) 一种国产操作系统硬件兼容性测试方法
CN115167831A (zh) 基于autosar的软件集成方法、设备和使用方法
CN116431520A (zh) 测试场景确定方法、装置、电子设备和存储介质
CN110069455B (zh) 一种文件合并方法及装置
JP6107455B2 (ja) テストスケジュール決定装置、プログラム
US10599424B2 (en) Committed program-code management
US9396239B2 (en) Compiling method, storage medium and compiling apparatus
CN113821496B (zh) 数据库迁移方法、系统、设备及计算机可读存储介质
CN113656318A (zh) 软件版本测试方法、装置及计算机设备
US20220206934A1 (en) Test apparatus, test method and program
CN112241262A (zh) 一种面向软件定义卫星的可复用代码提取、分析与检索方法与装置
CN111813749A (zh) 文件过滤方法及装置、电子设备、存储介质
CN113704020B (zh) 固态硬盘的出错现场数据的解析方法以及装置
JPWO2015029242A1 (ja) ライセンス管理装置、ライセンス管理方法、及びプログラム
US11782682B2 (en) Providing metric data for patterns usable in a modeling environment
CN114780109B (zh) Python项目第三方库依赖自动化解析与安装方法
CN115543227B (zh) 跨系统数据迁移方法、系统、电子设备及存储介质
CN117215965B (zh) 基于测试用例识别的测试方法、装置、电子设备和介质

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160531

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: 20160621

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160719

R150 Certificate of patent or registration of utility model

Ref document number: 5976209

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees