JPH08314752A - オブジェクト指向システムの開発支援装置 - Google Patents
オブジェクト指向システムの開発支援装置Info
- Publication number
- JPH08314752A JPH08314752A JP7142660A JP14266095A JPH08314752A JP H08314752 A JPH08314752 A JP H08314752A JP 7142660 A JP7142660 A JP 7142660A JP 14266095 A JP14266095 A JP 14266095A JP H08314752 A JPH08314752 A JP H08314752A
- Authority
- JP
- Japan
- Prior art keywords
- behavior
- file
- oriented system
- development support
- class
- 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
Links
Landscapes
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
(57)【要約】
【目的】 オブジェクト指向システムを実際に動作させ
たときのシステムの挙動、すなわち、オブジェクトの振
る舞いなどをユーザが容易に理解することが可能であ
る。 【構成】 この開発支援装置は、オブジェクト指向シス
テムの開発環境において、オブジェクト指向システムを
実際に起動した際に、オブジェクト間でのメッセージの
授受(やりとり)やオブジェクトの生成や削除などのオブ
ジェクトの振る舞い(挙動)を認識するオブジェクト挙動
認識手段1と、オブジェクト挙動認識手段1で認識され
たオブジェクトの振る舞いをファイルFに保存する保存
手段2と、保存手段によってファイルFに保存されたオ
ブジェクトの挙動を読み取り出力する出力手段3とを備
えている。
たときのシステムの挙動、すなわち、オブジェクトの振
る舞いなどをユーザが容易に理解することが可能であ
る。 【構成】 この開発支援装置は、オブジェクト指向シス
テムの開発環境において、オブジェクト指向システムを
実際に起動した際に、オブジェクト間でのメッセージの
授受(やりとり)やオブジェクトの生成や削除などのオブ
ジェクトの振る舞い(挙動)を認識するオブジェクト挙動
認識手段1と、オブジェクト挙動認識手段1で認識され
たオブジェクトの振る舞いをファイルFに保存する保存
手段2と、保存手段によってファイルFに保存されたオ
ブジェクトの挙動を読み取り出力する出力手段3とを備
えている。
Description
【0001】
【産業上の利用分野】本発明は、オブジェクト指向技術
を用いるオブジェクト指向システムの開発支援装置に関
する。
を用いるオブジェクト指向システムの開発支援装置に関
する。
【0002】
【従来の技術】従来、オブジェクト指向システムを開発
するのに、システム開発に必要なオブジェクトモデル
図,事象トレース図,データフロー図などを構築するツ
ールがあった。また、システムの実装を支援するツール
としてはオブジェクトモデル図からクラスの定義をファ
イルに書き出すようなツールがあった。
するのに、システム開発に必要なオブジェクトモデル
図,事象トレース図,データフロー図などを構築するツ
ールがあった。また、システムの実装を支援するツール
としてはオブジェクトモデル図からクラスの定義をファ
イルに書き出すようなツールがあった。
【0003】しかしながら、オブジェクトモデル図,事
象トレース図,データフロー図などを構築するツール
は、システムの実装に入る前のフェーズ、すなわち分
析,設計を支援するためのツールであり、また、オブジ
ェクトモデル図からクラスの定義をファイルに書き出す
ようなツールは、静的なデータやシステムの実行前の開
発段階を支援するものであり、いずれのツールも、シス
テム開発のためのデバッグ,すなわちオブジェクト指向
システムを実際に動作させたときのオブジェクト間の時
間的流れのデバッグ(動的チェック)を行なうようになっ
ていない。
象トレース図,データフロー図などを構築するツール
は、システムの実装に入る前のフェーズ、すなわち分
析,設計を支援するためのツールであり、また、オブジ
ェクトモデル図からクラスの定義をファイルに書き出す
ようなツールは、静的なデータやシステムの実行前の開
発段階を支援するものであり、いずれのツールも、シス
テム開発のためのデバッグ,すなわちオブジェクト指向
システムを実際に動作させたときのオブジェクト間の時
間的流れのデバッグ(動的チェック)を行なうようになっ
ていない。
【0004】また、従来では、オブジェクト指向システ
ムを開発するのに有効なデバッグツールは、存在してい
ない。これは、オブジェクト指向システムでは、従来の
ウォーターフォールのように処理が一方向に流れるのと
は異なって、オブジェクト間のメッセージのやりとりに
より処理が進行し、処理が再び元に戻ることも可能とな
っているので、現在の処理がどこで行われているか、ど
のようなデータを扱っているかが見えにくく、また、処
理がどのように進行していくのかが把握しにくく、全体
としてデバッグ作業が困難であること、また、オブジェ
クト指向システムでは、オブジェクト指向に特有なクラ
ス階層を用いることにより、継承機能を用いて、差分に
よるプログラミングを行うことができるが、その反面、
上位のクラスに記述されていることは下位のクラスで記
述する必要がないため、下位のクラス定義だけを見ただ
けでは、そのクラスの持つすべての属性やメソッドを把
握したことにはならないことなどに起因している。この
ため例えば、C++言語のデバッグをC言語のデバッグ
環境を流用し行なうというような形で、オブジェクト指
向システムのデバッグを行なうための技術は、現在のと
ころ確立されていない。
ムを開発するのに有効なデバッグツールは、存在してい
ない。これは、オブジェクト指向システムでは、従来の
ウォーターフォールのように処理が一方向に流れるのと
は異なって、オブジェクト間のメッセージのやりとりに
より処理が進行し、処理が再び元に戻ることも可能とな
っているので、現在の処理がどこで行われているか、ど
のようなデータを扱っているかが見えにくく、また、処
理がどのように進行していくのかが把握しにくく、全体
としてデバッグ作業が困難であること、また、オブジェ
クト指向システムでは、オブジェクト指向に特有なクラ
ス階層を用いることにより、継承機能を用いて、差分に
よるプログラミングを行うことができるが、その反面、
上位のクラスに記述されていることは下位のクラスで記
述する必要がないため、下位のクラス定義だけを見ただ
けでは、そのクラスの持つすべての属性やメソッドを把
握したことにはならないことなどに起因している。この
ため例えば、C++言語のデバッグをC言語のデバッグ
環境を流用し行なうというような形で、オブジェクト指
向システムのデバッグを行なうための技術は、現在のと
ころ確立されていない。
【0005】
【発明が解決しようとする課題】本発明は、オブジェク
ト指向システムを実際に動作させたときのシステムの挙
動、すなわち、オブジェクトの振る舞いなどをユーザが
容易に理解することの可能なオブジェクト指向システム
の開発支援装置を提供することを目的としている。
ト指向システムを実際に動作させたときのシステムの挙
動、すなわち、オブジェクトの振る舞いなどをユーザが
容易に理解することの可能なオブジェクト指向システム
の開発支援装置を提供することを目的としている。
【0006】
【課題を解決するための手段および作用】上記目的を達
成するために、請求項1乃至請求項9記載の発明では、
オブジェクト指向システムの開発環境において、オブジ
ェクト指向システムを実際に起動した際に、オブジェク
ト間でのメッセージの授受やオブジェクトの生成や削除
などのオブジェクトの振る舞いを認識するオブジェクト
挙動認識手段と、オブジェクト挙動認識手段によって認
識されたオブジェクトの振る舞いをファイルに保存する
保存手段と、前記保存手段によってファイルに保存され
たオブジェクトの振る舞いを読み取り出力する出力手段
とを備えている。これにより、オブジェクト指向システ
ムを実際に動作させたときのシステムの挙動、すなわ
ち、オブジェクトの振る舞いなどをユーザが容易に理解
することができる。
成するために、請求項1乃至請求項9記載の発明では、
オブジェクト指向システムの開発環境において、オブジ
ェクト指向システムを実際に起動した際に、オブジェク
ト間でのメッセージの授受やオブジェクトの生成や削除
などのオブジェクトの振る舞いを認識するオブジェクト
挙動認識手段と、オブジェクト挙動認識手段によって認
識されたオブジェクトの振る舞いをファイルに保存する
保存手段と、前記保存手段によってファイルに保存され
たオブジェクトの振る舞いを読み取り出力する出力手段
とを備えている。これにより、オブジェクト指向システ
ムを実際に動作させたときのシステムの挙動、すなわ
ち、オブジェクトの振る舞いなどをユーザが容易に理解
することができる。
【0007】特に、請求項3記載の発明では、前記オブ
ジェクト挙動認識手段は、特定のオブジェクトに注目
し、該特定のオブジェクトに関する振る舞いのみを認識
するので、必要なデータのみを集中して取り扱うことが
でき、不必要なデータを省くことができる。
ジェクト挙動認識手段は、特定のオブジェクトに注目
し、該特定のオブジェクトに関する振る舞いのみを認識
するので、必要なデータのみを集中して取り扱うことが
でき、不必要なデータを省くことができる。
【0008】また、請求項6記載の発明では、さらに、
前記オブジェクト挙動認識手段,前記データ認識手段
を、オブジェクト指向システムの実行前にファイルに埋
め込む第2の埋込手段を有しており、第2の埋込手段
は、ソースプログラムを解析することによって、オブジ
ェクトの生成や削除,メッセージの送信などの振る舞い
の箇所を自動認識してオブジェクト挙動認識手段を埋め
込むことができる。これにより、ユーザは、オブジェク
ト挙動認識手段をこのオブジェクト指向システムに自ら
設定する必要がなく、ユーザの作業効率を著しく向上さ
せることができる。
前記オブジェクト挙動認識手段,前記データ認識手段
を、オブジェクト指向システムの実行前にファイルに埋
め込む第2の埋込手段を有しており、第2の埋込手段
は、ソースプログラムを解析することによって、オブジ
ェクトの生成や削除,メッセージの送信などの振る舞い
の箇所を自動認識してオブジェクト挙動認識手段を埋め
込むことができる。これにより、ユーザは、オブジェク
ト挙動認識手段をこのオブジェクト指向システムに自ら
設定する必要がなく、ユーザの作業効率を著しく向上さ
せることができる。
【0009】また、請求項7記載の発明では、前記出力
手段は、前記ファイルに保存された内容を視覚化して表
示するようになっており、例えば、システムの振る舞い
をユーザに提示する場合には、オブジェクトを四角や円
などで表示したり、また、メッセージの授受(やりとり)
をユーザに提示する場合には、オブジェクト間にリンク
を表示するなどによって、ユーザは視覚的に容易にシス
テムの振る舞いを把握できる。
手段は、前記ファイルに保存された内容を視覚化して表
示するようになっており、例えば、システムの振る舞い
をユーザに提示する場合には、オブジェクトを四角や円
などで表示したり、また、メッセージの授受(やりとり)
をユーザに提示する場合には、オブジェクト間にリンク
を表示するなどによって、ユーザは視覚的に容易にシス
テムの振る舞いを把握できる。
【0010】また、請求項8記載の発明では、前記出力
手段は、前記ファイルに保存された内容を視覚化して表
示する際に、ユーザの要求に応じて、システムの稼働に
合わせて、逐次、システムの稼働状況を表示する。これ
により、時間の経過によるシステムの振る舞いをユーザ
に提示したり、また、時間をさかのぼってシステムの振
る舞いをユーザに提示すること(すなわち、時間をさか
のぼってシステムの振る舞いをたどること)も可能とな
る。
手段は、前記ファイルに保存された内容を視覚化して表
示する際に、ユーザの要求に応じて、システムの稼働に
合わせて、逐次、システムの稼働状況を表示する。これ
により、時間の経過によるシステムの振る舞いをユーザ
に提示したり、また、時間をさかのぼってシステムの振
る舞いをユーザに提示すること(すなわち、時間をさか
のぼってシステムの振る舞いをたどること)も可能とな
る。
【0011】また、請求項9記載の発明では、オブジェ
クトの振る舞いをシステムの実行と同時に視覚化して表
示する。これにより、ユーザは、リアルタイムに容易に
システムの振る舞いを理解することができる。
クトの振る舞いをシステムの実行と同時に視覚化して表
示する。これにより、ユーザは、リアルタイムに容易に
システムの振る舞いを理解することができる。
【0012】
【実施例】以下、本発明の実施例を図面に基づいて説明
する。図1は本発明に係るオブジェクト指向システムの
開発支援装置の一実施例の構成図である。図1を参照す
ると、この開発支援装置は、オブジェクト指向システム
の開発環境において、オブジェクト指向システムを実際
に起動した際に、オブジェクト間でのメッセージの授受
(やりとり)やオブジェクトの生成や削除などのオブジェ
クトの振る舞い(挙動)を認識するオブジェクト挙動認識
手段1と、オブジェクト挙動認識手段1で認識されたオ
ブジェクトの振る舞いをファイルFに保存する保存手段
2と、保存手段によってファイルFに保存されたオブジ
ェクトの挙動を読み取り出力する出力手段3とを備えて
いる。
する。図1は本発明に係るオブジェクト指向システムの
開発支援装置の一実施例の構成図である。図1を参照す
ると、この開発支援装置は、オブジェクト指向システム
の開発環境において、オブジェクト指向システムを実際
に起動した際に、オブジェクト間でのメッセージの授受
(やりとり)やオブジェクトの生成や削除などのオブジェ
クトの振る舞い(挙動)を認識するオブジェクト挙動認識
手段1と、オブジェクト挙動認識手段1で認識されたオ
ブジェクトの振る舞いをファイルFに保存する保存手段
2と、保存手段によってファイルFに保存されたオブジ
ェクトの挙動を読み取り出力する出力手段3とを備えて
いる。
【0013】ここで、オブジェクト挙動認識手段1によ
ってオブジェクト間でのメッセージの授受が認識される
と、保存手段2は、認識されたメッセージを、オブジェ
クト間で授受がなされた順にファイルに保存し、出力手
段3は、ファイル保存されたメッセージをも出力するよ
うになっている。
ってオブジェクト間でのメッセージの授受が認識される
と、保存手段2は、認識されたメッセージを、オブジェ
クト間で授受がなされた順にファイルに保存し、出力手
段3は、ファイル保存されたメッセージをも出力するよ
うになっている。
【0014】また、オブジェクト挙動認識手段1は、特
定のオブジェクトに注目し、該特定のオブジェクトに関
する振る舞いのみを認識するよう、これを構成すること
ができる。注目する特定のオブジェクトを指定すること
を可能にするよう構成する場合には、必要なデータのみ
を集中して取り扱うことができる。
定のオブジェクトに注目し、該特定のオブジェクトに関
する振る舞いのみを認識するよう、これを構成すること
ができる。注目する特定のオブジェクトを指定すること
を可能にするよう構成する場合には、必要なデータのみ
を集中して取り扱うことができる。
【0015】また、この開発支援装置は、さらに、メッ
セージ間で授受されるメッセージ内のデータを認識する
データ認識手段4を有し、保存手段2は、さらに、デー
タ認識手段で認識されたメッセージ内のデータをもファ
イルFに保存し、出力手段3は、さらに、ファイルFに
保存されたメッセージ内のデータをも出力するようにな
っている。
セージ間で授受されるメッセージ内のデータを認識する
データ認識手段4を有し、保存手段2は、さらに、デー
タ認識手段で認識されたメッセージ内のデータをもファ
イルFに保存し、出力手段3は、さらに、ファイルFに
保存されたメッセージ内のデータをも出力するようにな
っている。
【0016】さらに、本実施例の開発支援装置は、保存
手段2をオブジェクト指向システムの実行前に、オブジ
ェクト指向システムの所定の箇所に埋め込む第1の埋込
手段6と、オブジェクト挙動認識手段1および/または
データ認識手段4を、オブジェクト指向システムの実行
前に、オブジェクト指向システムの所定の箇所に埋め込
む第2の埋込手段7とを有している。
手段2をオブジェクト指向システムの実行前に、オブジ
ェクト指向システムの所定の箇所に埋め込む第1の埋込
手段6と、オブジェクト挙動認識手段1および/または
データ認識手段4を、オブジェクト指向システムの実行
前に、オブジェクト指向システムの所定の箇所に埋め込
む第2の埋込手段7とを有している。
【0017】すなわち、システム実行時のオブジェクト
の挙動(振る舞い)として、オブジェクト間のメッセージ
の授受,オブジェクトの生成,削除などを認識する機能
を有するオブジェクト挙動認識手段1は、第2の埋込手
段7によってオブジェクトの所定の振る舞いの箇所に埋
め込まれて使用されるようになっている。また、メッセ
ージ間でやりとりされるメッセージ内のデータを認識す
る機能を有するデータ認識手段4も、第2の埋込手段7
によってオブジェクト間でメッセージの授受がなされる
箇所に埋め込まれて使用されるようになっている。
の挙動(振る舞い)として、オブジェクト間のメッセージ
の授受,オブジェクトの生成,削除などを認識する機能
を有するオブジェクト挙動認識手段1は、第2の埋込手
段7によってオブジェクトの所定の振る舞いの箇所に埋
め込まれて使用されるようになっている。また、メッセ
ージ間でやりとりされるメッセージ内のデータを認識す
る機能を有するデータ認識手段4も、第2の埋込手段7
によってオブジェクト間でメッセージの授受がなされる
箇所に埋め込まれて使用されるようになっている。
【0018】より詳細には、上記第1および第2の埋込
手段6,7は、ソースプログラムを解析することによ
り、オブジェクトの生成や削除,メッセージの送信など
のオブジェクトの振る舞いの箇所を自動認識して、デー
タ認識手段4,オブジェクト挙動認識手段1を埋め込む
ようになっており、ユーザがオブジェクトの振る舞いの
箇所を教える必要がなく、これらを自動的に埋め込む機
能を備えている。
手段6,7は、ソースプログラムを解析することによ
り、オブジェクトの生成や削除,メッセージの送信など
のオブジェクトの振る舞いの箇所を自動認識して、デー
タ認識手段4,オブジェクト挙動認識手段1を埋め込む
ようになっており、ユーザがオブジェクトの振る舞いの
箇所を教える必要がなく、これらを自動的に埋め込む機
能を備えている。
【0019】また、上記出力手段3は、ファイルFに保
存された内容を視覚化して例えば表示するようになって
いる。より詳しくは、出力手段3は、例えば、オブジェ
クトの振る舞いが書き出されたファイルFを読み込み、
システムの振る舞いをユーザに例えば表示するようにな
っている。例えば、オブジェクトを四角や円などで、ま
たメッセージのやりとりの際にはオブジェクト間にリン
クを表示するなどして、システムの振る舞いをユーザが
視覚的に容易に把握できる形に出力するようになってい
る。
存された内容を視覚化して例えば表示するようになって
いる。より詳しくは、出力手段3は、例えば、オブジェ
クトの振る舞いが書き出されたファイルFを読み込み、
システムの振る舞いをユーザに例えば表示するようにな
っている。例えば、オブジェクトを四角や円などで、ま
たメッセージのやりとりの際にはオブジェクト間にリン
クを表示するなどして、システムの振る舞いをユーザが
視覚的に容易に把握できる形に出力するようになってい
る。
【0020】なお、出力手段3としては、ファイルFに
保存された内容を視覚化して例えば表示する際に、さら
に、ユーザの要求に応じてシステムの稼働に合わせて、
逐次、システムの稼働状況をも表示する機能を有してい
ても良い。これにより、時間の経過によるシステムの振
る舞いをユーザに提示したり、また、時間をさかのぼっ
てシステムの振る舞いを逆にたどることも可能となる。
保存された内容を視覚化して例えば表示する際に、さら
に、ユーザの要求に応じてシステムの稼働に合わせて、
逐次、システムの稼働状況をも表示する機能を有してい
ても良い。これにより、時間の経過によるシステムの振
る舞いをユーザに提示したり、また、時間をさかのぼっ
てシステムの振る舞いを逆にたどることも可能となる。
【0021】また、出力手段3としては、オブジェクト
の振る舞いをシステムの実行と同時に視覚化して表示す
る機能を有していても良い。デバッグ中にデバッグと同
時に視覚化してユーザにオブジェクトの振る舞いを表示
する機能を出力手段3が備えている場合には、デバッグ
中のソースプログラムと視覚化されたオブジェクトの振
る舞いとを同時進行させて表示させることが可能とな
る。
の振る舞いをシステムの実行と同時に視覚化して表示す
る機能を有していても良い。デバッグ中にデバッグと同
時に視覚化してユーザにオブジェクトの振る舞いを表示
する機能を出力手段3が備えている場合には、デバッグ
中のソースプログラムと視覚化されたオブジェクトの振
る舞いとを同時進行させて表示させることが可能とな
る。
【0022】次に、本実施例の開発支援装置の処理動作
例について説明する。図2は、本実施例の開発支援装置
の処理動作の一例を示すフローチャートである。
例について説明する。図2は、本実施例の開発支援装置
の処理動作の一例を示すフローチャートである。
【0023】図2の処理動作例では、先ず、ステップS
1において、ソースプログラムを指定し、開発システム
のファイル構成をチェックする。これにより、この開発
支援装置が次のステップS2以降で行うソースプログラ
ムの解析の範囲を限定する。
1において、ソースプログラムを指定し、開発システム
のファイル構成をチェックする。これにより、この開発
支援装置が次のステップS2以降で行うソースプログラ
ムの解析の範囲を限定する。
【0024】次に、ステップS2では、ソースプログラ
ムを解析する。具体的に、このステップS2では、ソー
スプログラムの解析処理として、ユーザが定義するクラ
スやデータ型などの認識処理を行なう。すなわち、開発
支援環境がオブジェクトの振る舞いを理解するために、
クラスの定義の認識処理を行ない、クラスがどのような
属性およびメソッドを持つかを知得する。また、オブジ
ェクト間でのメッセージのやり取り(メソッドの呼び出
し)の状況も理解する必要があるために、クラスの属性
やメソッドの返り値のデータ型、およびメソッドの持つ
引数の型でユーザ定義の型も認識する。
ムを解析する。具体的に、このステップS2では、ソー
スプログラムの解析処理として、ユーザが定義するクラ
スやデータ型などの認識処理を行なう。すなわち、開発
支援環境がオブジェクトの振る舞いを理解するために、
クラスの定義の認識処理を行ない、クラスがどのような
属性およびメソッドを持つかを知得する。また、オブジ
ェクト間でのメッセージのやり取り(メソッドの呼び出
し)の状況も理解する必要があるために、クラスの属性
やメソッドの返り値のデータ型、およびメソッドの持つ
引数の型でユーザ定義の型も認識する。
【0025】また、ステップS2の解析処理では、プロ
グラム中のオブジェクトの生成,削除やメソッドの呼び
出しおよびその他のオブジェクトの振る舞いを認識する
処理を行なう。また、これと同時に、第1および第2の
埋込手段6,7によって所定の振る舞いの箇所にオブジ
ェクトの振る舞いを書き出す手続きを埋め込む処理を行
なう。この手続きを行なうことにより、ステップS3で
のシステムの実行時に、オブジェクトの生成,削除,メ
ッセージのやり取りなどの振る舞いをファイルに保存さ
せ、また、この時の動的なデータの値も同時にファイル
に書き出させることが可能になる。
グラム中のオブジェクトの生成,削除やメソッドの呼び
出しおよびその他のオブジェクトの振る舞いを認識する
処理を行なう。また、これと同時に、第1および第2の
埋込手段6,7によって所定の振る舞いの箇所にオブジ
ェクトの振る舞いを書き出す手続きを埋め込む処理を行
なう。この手続きを行なうことにより、ステップS3で
のシステムの実行時に、オブジェクトの生成,削除,メ
ッセージのやり取りなどの振る舞いをファイルに保存さ
せ、また、この時の動的なデータの値も同時にファイル
に書き出させることが可能になる。
【0026】このようにして、ステップS1,S2にお
いて、システムを実行するための前処理を行ない、しか
る後、ステップS3でシステムを実行する。システムを
実行するとオブジェクトが種々の振る舞いをするが、こ
の振る舞いの履歴は、ステップS2で埋め込んだオブジ
ェクトの振る舞いをファイルに書き出す手続きにより、
すなわちオブジェクト挙動認識手段1(さらにはデータ
認識手段4),保存手段2によって、ファイルに書き出
され、オブジェクトの振る舞いに関する実データが時系
列にファイルに保存される。
いて、システムを実行するための前処理を行ない、しか
る後、ステップS3でシステムを実行する。システムを
実行するとオブジェクトが種々の振る舞いをするが、こ
の振る舞いの履歴は、ステップS2で埋め込んだオブジ
ェクトの振る舞いをファイルに書き出す手続きにより、
すなわちオブジェクト挙動認識手段1(さらにはデータ
認識手段4),保存手段2によって、ファイルに書き出
され、オブジェクトの振る舞いに関する実データが時系
列にファイルに保存される。
【0027】このようにしてシステムを実行した後、ス
テップS4では、出力手段3を起動し、ステップS3で
オブジェクトの振る舞いの履歴が保存されたファイルか
ら内容を読み込み、ユーザとの対話を行いながらオブジ
ェクトの振る舞いを逐次にまたは一括に例えば表示す
る。
テップS4では、出力手段3を起動し、ステップS3で
オブジェクトの振る舞いの履歴が保存されたファイルか
ら内容を読み込み、ユーザとの対話を行いながらオブジ
ェクトの振る舞いを逐次にまたは一括に例えば表示す
る。
【0028】このように、本実施例の開発支援装置で
は、オブジェクト指向システムを実際に動作させたとき
のシステムの挙動、すなわち、オブジェクトの振る舞い
などをユーザが容易に理解することができ、これによ
り、オブジェクト指向システムを実際に動作させたとき
のオブジェクト間の時間的流れのデバッグ(動的チェッ
ク)を行なうことができて、デバッグ作業を容易に効率
良く行なわせることが可能となる。
は、オブジェクト指向システムを実際に動作させたとき
のシステムの挙動、すなわち、オブジェクトの振る舞い
などをユーザが容易に理解することができ、これによ
り、オブジェクト指向システムを実際に動作させたとき
のオブジェクト間の時間的流れのデバッグ(動的チェッ
ク)を行なうことができて、デバッグ作業を容易に効率
良く行なわせることが可能となる。
【0029】なお、図2の処理例では、システム実行
後、オブジェクトの振る舞いを出力(表示)するようにな
っているが、システムの実行と共にリアルタイムにオブ
ジェクトの振る舞いを出力(表示)することも可能であ
る。
後、オブジェクトの振る舞いを出力(表示)するようにな
っているが、システムの実行と共にリアルタイムにオブ
ジェクトの振る舞いを出力(表示)することも可能であ
る。
【0030】図3は、オブジェクトの振る舞いをシステ
ムの実行と同様にリアルタイムに表示する処理例を示す
フローチャートである。図3の処理例において、ステッ
プS11,S12では、図2のステップS1,S2と同
様に、ソースプログラムを指定し、そのプログラムを解
析してユーザの定義したクラス定義および型を認識し、
オブジェクトの振る舞いを示す手続きを埋め込む。
ムの実行と同様にリアルタイムに表示する処理例を示す
フローチャートである。図3の処理例において、ステッ
プS11,S12では、図2のステップS1,S2と同
様に、ソースプログラムを指定し、そのプログラムを解
析してユーザの定義したクラス定義および型を認識し、
オブジェクトの振る舞いを示す手続きを埋め込む。
【0031】次に、ステップS13でシステムを起動す
るが、この際、図2の処理例と異なり、図3の処理例で
は、システムの実行とともにオブジェクトの振る舞いを
表示するために、この時点で出力手段3を起動する。そ
して、システムの実行に伴ないオブジェクトの振る舞い
を示す手続き,すなわちオブジェクト挙動認識手段1
(さらにはデータ認識手段4),保存手段2が起動され、
オブジェクトの振る舞いが出力手段3によって逐次表示
される。
るが、この際、図2の処理例と異なり、図3の処理例で
は、システムの実行とともにオブジェクトの振る舞いを
表示するために、この時点で出力手段3を起動する。そ
して、システムの実行に伴ないオブジェクトの振る舞い
を示す手続き,すなわちオブジェクト挙動認識手段1
(さらにはデータ認識手段4),保存手段2が起動され、
オブジェクトの振る舞いが出力手段3によって逐次表示
される。
【0032】なお、図2のステップS2では、オブジェ
クトの振る舞いを示す手続きを埋め込む際に、ファイル
にオブジェクトの振る舞いを保存していたが、図3のス
テップS12では、リアルタイムにオブジェクトの振る
舞いを表示する必要があることから、このシステム内に
オブジェクトの振る舞いを管理するクラスまたは機能を
設け、このクラスにオブジェクトの振る舞いを通知する
手続きを用いることもできる。もちろん、ステップS1
2においても、図2のステップS2と同様に、ファイル
にオブジェクトの振る舞いを保存しておき、別のプロセ
スで出力手段3を起動しておいて、その出力手段3にそ
のファイルを随時チェックさせて、オブジェクトの振る
舞いを表示させてもよい。さらにまた、プロセス間通信
などの手法を用いてオブジェクトの振る舞いを別プロセ
スである開発支援装置に通知することにより実現するこ
ともできる。
クトの振る舞いを示す手続きを埋め込む際に、ファイル
にオブジェクトの振る舞いを保存していたが、図3のス
テップS12では、リアルタイムにオブジェクトの振る
舞いを表示する必要があることから、このシステム内に
オブジェクトの振る舞いを管理するクラスまたは機能を
設け、このクラスにオブジェクトの振る舞いを通知する
手続きを用いることもできる。もちろん、ステップS1
2においても、図2のステップS2と同様に、ファイル
にオブジェクトの振る舞いを保存しておき、別のプロセ
スで出力手段3を起動しておいて、その出力手段3にそ
のファイルを随時チェックさせて、オブジェクトの振る
舞いを表示させてもよい。さらにまた、プロセス間通信
などの手法を用いてオブジェクトの振る舞いを別プロセ
スである開発支援装置に通知することにより実現するこ
ともできる。
【0033】また、図2,図3の処理例において、ステ
ップS2,S12でのソースプログラムの解析処理は、
具体的に以下のようにして行なうことができる。
ップS2,S12でのソースプログラムの解析処理は、
具体的に以下のようにして行なうことができる。
【0034】すなわち、ソースプログラムの解析は、上
述したように、各定義の認識と、各オブジェクトの振る
舞いの認識との2つの処理に大きく分けられる。各定義
を認識する理由としては、オブジェクトはユーザ(ソー
スプログラムの創作者)が定義したクラスに基づいてい
るので、オブジェクトの振る舞いを認識するためには、
先ず、定義されているクラスをチェックする必要があ
る。すなわち、クラスがどのような属性やメソッドをも
つかを知る必要がある。また、クラスのもつ属性やメソ
ッドの引き数や返り値などに、システムが定義している
以外のユーザが定義した新たなデータ型を使用している
こともあるので、プログラム内で使用されている全ての
変数、および全てのデータ型をチェックする。
述したように、各定義の認識と、各オブジェクトの振る
舞いの認識との2つの処理に大きく分けられる。各定義
を認識する理由としては、オブジェクトはユーザ(ソー
スプログラムの創作者)が定義したクラスに基づいてい
るので、オブジェクトの振る舞いを認識するためには、
先ず、定義されているクラスをチェックする必要があ
る。すなわち、クラスがどのような属性やメソッドをも
つかを知る必要がある。また、クラスのもつ属性やメソ
ッドの引き数や返り値などに、システムが定義している
以外のユーザが定義した新たなデータ型を使用している
こともあるので、プログラム内で使用されている全ての
変数、および全てのデータ型をチェックする。
【0035】各定義を認識する手順は、データ型表の作
成手順と、クラス表の作成手順と、変数表の作成手順と
に、大別できる。これらの手順の後に、オブジェクトの
振る舞いの認識を行なわせるため、予め用意された振る
舞いに対応したプログラムコードを所定の箇所に埋め込
む。
成手順と、クラス表の作成手順と、変数表の作成手順と
に、大別できる。これらの手順の後に、オブジェクトの
振る舞いの認識を行なわせるため、予め用意された振る
舞いに対応したプログラムコードを所定の箇所に埋め込
む。
【0036】各定義を認識する手順のうち、データ型表
の作成手順では、C++で予め用意されているデータ型
に加えて、ユーザが定義しているデータ型をチェック
し、図4に示すようなデータ型表を作成する。なお、ユ
ーザが定義しているデータ型は、プログラム中のキーワ
ードを検索し、抽出する。そのキーワードとは、ユーザ
が型を定義する時に使用するための予約語であるtypede
fや、定義を宣言するときに使用される予約語#define
や、クラスの宣言であるclassなどであり、それらの構
文にしたがって、データ型の名称をキーワードとして抽
出することができる。
の作成手順では、C++で予め用意されているデータ型
に加えて、ユーザが定義しているデータ型をチェック
し、図4に示すようなデータ型表を作成する。なお、ユ
ーザが定義しているデータ型は、プログラム中のキーワ
ードを検索し、抽出する。そのキーワードとは、ユーザ
が型を定義する時に使用するための予約語であるtypede
fや、定義を宣言するときに使用される予約語#define
や、クラスの宣言であるclassなどであり、それらの構
文にしたがって、データ型の名称をキーワードとして抽
出することができる。
【0037】また、クラス表の作成手順では、クラス内
部の属性やメソッドの抽出を行なう。すなわち、クラス
もユーザ定義のデータ型の一種であり、従って、クラス
はデータ型表の作成手順においても抽出されるが、クラ
ス表の作成手順では、クラス内部の属性やメソッドの抽
出を行なう。すなわち、クラス定義部分の抽出は、前述
のように、C++の予約語であるclassを検索すること
により行なわれ、抽出されたクラス定義部分からそのク
ラスのもつ属性の名称および型,メソッドの名称および
返り値の型をチェックし、図5に示すようなクラス表を
作成する。
部の属性やメソッドの抽出を行なう。すなわち、クラス
もユーザ定義のデータ型の一種であり、従って、クラス
はデータ型表の作成手順においても抽出されるが、クラ
ス表の作成手順では、クラス内部の属性やメソッドの抽
出を行なう。すなわち、クラス定義部分の抽出は、前述
のように、C++の予約語であるclassを検索すること
により行なわれ、抽出されたクラス定義部分からそのク
ラスのもつ属性の名称および型,メソッドの名称および
返り値の型をチェックし、図5に示すようなクラス表を
作成する。
【0038】また、変数表の作成手順では、ソースプロ
グラムを順にチェックし、使用された変数を、グローバ
ル変数とその型、関数と関数内で宣言されている変数と
その型、メソッドとメソッド内で宣言されている変数と
その型、に分けて抽出し、図6に示したような変数表を
作成する。なお、変数の宣言部分は、データ型表の作成
で抽出したデータ型名をプログラム中で検索し、変数宣
言の構文に従って抽出することができる。
グラムを順にチェックし、使用された変数を、グローバ
ル変数とその型、関数と関数内で宣言されている変数と
その型、メソッドとメソッド内で宣言されている変数と
その型、に分けて抽出し、図6に示したような変数表を
作成する。なお、変数の宣言部分は、データ型表の作成
で抽出したデータ型名をプログラム中で検索し、変数宣
言の構文に従って抽出することができる。
【0039】このようにして、データが抽出されると、
抽出したデータに基づいて、デバッグのための情報をプ
ログラムに埋め込んでいく。先ず、ソースプログラムを
順にチェックし、オブジェクトの振る舞いの箇所を検索
し、その箇所にその振る舞いに対応したデバッグ用プロ
グラムコードを予め埋め込んでいく。
抽出したデータに基づいて、デバッグのための情報をプ
ログラムに埋め込んでいく。先ず、ソースプログラムを
順にチェックし、オブジェクトの振る舞いの箇所を検索
し、その箇所にその振る舞いに対応したデバッグ用プロ
グラムコードを予め埋め込んでいく。
【0040】オブジェクトの振る舞いの代表的なものと
しては、オブジェクトの生成と、オブジェクトの削除
と、オブジェクトの持つメソッドの呼び出しと、オブジ
ェクトの持つ属性への値の代入とがあり、これらに対応
したデバッグ用プログラムコードの埋め込みについて、
説明する。
しては、オブジェクトの生成と、オブジェクトの削除
と、オブジェクトの持つメソッドの呼び出しと、オブジ
ェクトの持つ属性への値の代入とがあり、これらに対応
したデバッグ用プログラムコードの埋め込みについて、
説明する。
【0041】先ず、オブジェクトの生成に対応したデバ
ッグ用プログラムコードの埋め込みについて説明する。
C++では、オブジェクトの生成は、予約語であるne
wを用いて行なわれるので、プログラム中でこの予約語
newを検出し、オブジェクトの生成箇所を検索するこ
とができる。
ッグ用プログラムコードの埋め込みについて説明する。
C++では、オブジェクトの生成は、予約語であるne
wを用いて行なわれるので、プログラム中でこの予約語
newを検出し、オブジェクトの生成箇所を検索するこ
とができる。
【0042】このようにしてオブジェクトの生成箇所が
検索されると、オブジェクトの生成箇所には図7に示す
ようなデバッグ用プログラムコードを埋め込むことがで
きる。図7のデバッグ用プログラムコードは、オブジェ
クトの生成の情報として、すべてのオブジェクトの振る
舞いに対する通し番号であるcountを表示するため
のコードと、オブジェクトの生成を示すCREATE,
生成されるクラスの名称(クラス名)を表示するためのコ
ードと、生成されたオブジェクトが格納される変数VA
RIABLEの名称(変数名)を表示するためのコード
と、オブジェクトがどこで生成されたかを示すWHER
E,およびその生成箇所を表示するためのコードと、生
成箇所の名称を表示するためのコードとにより構成され
たものとなっている。なお、オブジェクト指向システム
では、オブジェクトの生成箇所が関数内である場合とメ
ソッド内である場合とがあり、従って、生成箇所の名称
を表示するためのコードとしては、関数名またはメソッ
ド名が用いられる。
検索されると、オブジェクトの生成箇所には図7に示す
ようなデバッグ用プログラムコードを埋め込むことがで
きる。図7のデバッグ用プログラムコードは、オブジェ
クトの生成の情報として、すべてのオブジェクトの振る
舞いに対する通し番号であるcountを表示するため
のコードと、オブジェクトの生成を示すCREATE,
生成されるクラスの名称(クラス名)を表示するためのコ
ードと、生成されたオブジェクトが格納される変数VA
RIABLEの名称(変数名)を表示するためのコード
と、オブジェクトがどこで生成されたかを示すWHER
E,およびその生成箇所を表示するためのコードと、生
成箇所の名称を表示するためのコードとにより構成され
たものとなっている。なお、オブジェクト指向システム
では、オブジェクトの生成箇所が関数内である場合とメ
ソッド内である場合とがあり、従って、生成箇所の名称
を表示するためのコードとしては、関数名またはメソッ
ド名が用いられる。
【0043】次に、オブジェクトの削除に対応したデバ
ッグ用プログラムコードの埋め込みについて説明する。
C++では、オブジェクトの削除は、予約語であるde
leteを用いて行なわれるので、プログラム中でこの
予約語deleteを検出し、オブジェクトの削除箇所
を検索することができる。
ッグ用プログラムコードの埋め込みについて説明する。
C++では、オブジェクトの削除は、予約語であるde
leteを用いて行なわれるので、プログラム中でこの
予約語deleteを検出し、オブジェクトの削除箇所
を検索することができる。
【0044】このようにしてオブジェクトの削除箇所が
検索されると、オブジェクトの削除箇所には、図8に示
すようなデバッグ用プログラムコードを埋め込むことが
できる。図8のデバッグ用プログラムコードは、オブジ
ェクトの削除の情報として、すべてのオブジェクトの振
る舞いに対する通し番号であるcountを表示するた
めのコードと、オブジェクトの削除を示すDELET
E,削除されるクラスの名称(クラス名)を表示するため
のコードと、削除されたオブジェクトが格納されていた
変数VARIABLEの名称(変数名)を表示するための
コードと、オブジェクトがどこで削除されたかを示すW
HERE,およびその削除箇所を表示するためのコード
と、削除箇所の名称を表示するためのコードとにより構
成されたものとなっている。なお、オブジェクト指向シ
ステムでは、削除箇所が関数内である場合とメソッド内
である場合とがあり、従って、削除箇所の名称を表示す
るためのコードとしては、関数名またはメソッド名が用
いられる。
検索されると、オブジェクトの削除箇所には、図8に示
すようなデバッグ用プログラムコードを埋め込むことが
できる。図8のデバッグ用プログラムコードは、オブジ
ェクトの削除の情報として、すべてのオブジェクトの振
る舞いに対する通し番号であるcountを表示するた
めのコードと、オブジェクトの削除を示すDELET
E,削除されるクラスの名称(クラス名)を表示するため
のコードと、削除されたオブジェクトが格納されていた
変数VARIABLEの名称(変数名)を表示するための
コードと、オブジェクトがどこで削除されたかを示すW
HERE,およびその削除箇所を表示するためのコード
と、削除箇所の名称を表示するためのコードとにより構
成されたものとなっている。なお、オブジェクト指向シ
ステムでは、削除箇所が関数内である場合とメソッド内
である場合とがあり、従って、削除箇所の名称を表示す
るためのコードとしては、関数名またはメソッド名が用
いられる。
【0045】次に、オブジェクトの持つメソッドの呼び
出しに対応したデバッグ用プログラムコードの埋め込み
について説明する。C++では、オブジェクトの持つメ
ソッドの呼び出しは、“->”または“.”で表わされる
ので、プログラム中でこの語を検出し、オブジェクトの
持つメソッドの呼び出し箇所を検索することができる。
ただし、“->”または“.”のすべてがメソッドの呼び
出しとは限らないので、“->”または“.”の左部の変
数を変数表にてチェックして、その型がクラス型である
ことを確認し、また、右部をクラス表でチェックしてメ
ソッドであることを確認する必要がある。
出しに対応したデバッグ用プログラムコードの埋め込み
について説明する。C++では、オブジェクトの持つメ
ソッドの呼び出しは、“->”または“.”で表わされる
ので、プログラム中でこの語を検出し、オブジェクトの
持つメソッドの呼び出し箇所を検索することができる。
ただし、“->”または“.”のすべてがメソッドの呼び
出しとは限らないので、“->”または“.”の左部の変
数を変数表にてチェックして、その型がクラス型である
ことを確認し、また、右部をクラス表でチェックしてメ
ソッドであることを確認する必要がある。
【0046】オブジェクトの持つメソッドの呼び出し箇
所には、図9に示すようなデバッグ用プログラムコード
を埋め込むことができる。図9のデバッグ用プログラム
コードは、オブジェクトの持つメソッドの呼び出しの情
報として、すべてのオブジェクトの振る舞いに対する通
し番号であるcountを表示するためのコードと、オ
ブジェクトの持つメソッドの呼び出しを示すMETHO
D,メソッドの名称(メソッド名)を表示するためのコー
ドと、オブジェクトの持つメソッドがどこから呼び出さ
れたかを示すFROM,メソッドの呼び出し箇所を表示
するためのコードと、メソッドの呼び出し箇所の名称を
表示するためのコードと、どのクラスの持つメソッドが
呼び出されたかを示すクラス名(呼び出し先クラス名)を
表示するためのコードと、呼び出されたメソッドの引き
数の数を表示するためのコードと、呼び出されたメソッ
ドの引き数の値を表示するためのコードとにより構成さ
れたものとなっている。なお、オブジェクト指向システ
ムでは、メソッドの呼び出し箇所が関数内である場合と
メソッド内である場合とがあり、従って、メソッドの呼
出し箇所の名称を表示するためのコードとしては、関数
名またはメソッド名が用いられる。
所には、図9に示すようなデバッグ用プログラムコード
を埋め込むことができる。図9のデバッグ用プログラム
コードは、オブジェクトの持つメソッドの呼び出しの情
報として、すべてのオブジェクトの振る舞いに対する通
し番号であるcountを表示するためのコードと、オ
ブジェクトの持つメソッドの呼び出しを示すMETHO
D,メソッドの名称(メソッド名)を表示するためのコー
ドと、オブジェクトの持つメソッドがどこから呼び出さ
れたかを示すFROM,メソッドの呼び出し箇所を表示
するためのコードと、メソッドの呼び出し箇所の名称を
表示するためのコードと、どのクラスの持つメソッドが
呼び出されたかを示すクラス名(呼び出し先クラス名)を
表示するためのコードと、呼び出されたメソッドの引き
数の数を表示するためのコードと、呼び出されたメソッ
ドの引き数の値を表示するためのコードとにより構成さ
れたものとなっている。なお、オブジェクト指向システ
ムでは、メソッドの呼び出し箇所が関数内である場合と
メソッド内である場合とがあり、従って、メソッドの呼
出し箇所の名称を表示するためのコードとしては、関数
名またはメソッド名が用いられる。
【0047】次に、オブジェクトの持つ属性への値の代
入に対応したデバッグ用プログラムコードの埋め込みに
ついて説明する。C++では、オブジェクトの持つ属性
は、クラス内での属性は、そのまま名称で、クラス外で
の属性は、“->”または“.”で表わされるので、プロ
グラム中でこの語を検出し、オブジェクトの持つ属性へ
の値の代入箇所を検索することができる。ただし、“-
>”または“.”のすべてが値の代入箇所とは限らないの
で、“->”または“.”の左部の変数を変数表にチェッ
クしてその型がクラス型であることを確認し、また、右
部をクラス表でチェックして属性名であることを確認す
る必要がある。
入に対応したデバッグ用プログラムコードの埋め込みに
ついて説明する。C++では、オブジェクトの持つ属性
は、クラス内での属性は、そのまま名称で、クラス外で
の属性は、“->”または“.”で表わされるので、プロ
グラム中でこの語を検出し、オブジェクトの持つ属性へ
の値の代入箇所を検索することができる。ただし、“-
>”または“.”のすべてが値の代入箇所とは限らないの
で、“->”または“.”の左部の変数を変数表にチェッ
クしてその型がクラス型であることを確認し、また、右
部をクラス表でチェックして属性名であることを確認す
る必要がある。
【0048】このようにしてオブジェクトの持つ属性へ
の値の代入箇所が検索されると、オブジェクトの持つ属
性への値の代入箇所には、図10に示すようなデバッグ
用プログラムコードを埋め込むことができる。図10の
デバッグ用プログラムコードは、オブジェクトの持つ属
性への値の代入の情報として、すべてのオブジェクトの
振る舞いに対する通し番号であるcountを表示する
ためのコードと、オブジェクトの持つ属性への値の代入
を示すATTRIBUTE,属性の名称(属性名)を表示
するためのコードと、値をどこで代入しているかを示す
WHERE,値の代入箇所を表示するためのコードと、
値の代入箇所の名称を表示するためのコードと、どのク
ラスの持つ属性に値が代入されたかを示すクラス名(呼
び出し先クラス名)を表示するためのコードと、どんな
値が代入されたかを示す変数VARIABLEの名称
(変数名)を表示するためのコードとにより構成されてい
る。なお、オブジェクト指向システムでは、属性への値
の代入箇所が関数内である場合とメソッド内である場合
とがあり、従って、属性への値の代入箇所の名称を表示
するためのコードとしては、関数名またはメソッド名が
用いられる。
の値の代入箇所が検索されると、オブジェクトの持つ属
性への値の代入箇所には、図10に示すようなデバッグ
用プログラムコードを埋め込むことができる。図10の
デバッグ用プログラムコードは、オブジェクトの持つ属
性への値の代入の情報として、すべてのオブジェクトの
振る舞いに対する通し番号であるcountを表示する
ためのコードと、オブジェクトの持つ属性への値の代入
を示すATTRIBUTE,属性の名称(属性名)を表示
するためのコードと、値をどこで代入しているかを示す
WHERE,値の代入箇所を表示するためのコードと、
値の代入箇所の名称を表示するためのコードと、どのク
ラスの持つ属性に値が代入されたかを示すクラス名(呼
び出し先クラス名)を表示するためのコードと、どんな
値が代入されたかを示す変数VARIABLEの名称
(変数名)を表示するためのコードとにより構成されてい
る。なお、オブジェクト指向システムでは、属性への値
の代入箇所が関数内である場合とメソッド内である場合
とがあり、従って、属性への値の代入箇所の名称を表示
するためのコードとしては、関数名またはメソッド名が
用いられる。
【0049】このようにして、本実施例では、ソースプ
ログラムにおいて、オブジェクトの振る舞いの箇所を自
動検索し、検索した箇所に所定のデバッグ用プログラム
コードを自動的に埋め込むことができる。なお、このよ
うな検索,埋め込み処理を、上述のように、例えば、オ
ブジェクトの生成箇所,オブジェクトの削除箇所,オブ
ジェクトの持つメソッドの呼び出し箇所,オブジェクト
の持つ属性への値の代入箇所ごとに、各々別個のルーチ
ンで行なっても良いが、これらの各検索,埋め込み処理
を1つのルーチンで1パスで実行することもできる。
ログラムにおいて、オブジェクトの振る舞いの箇所を自
動検索し、検索した箇所に所定のデバッグ用プログラム
コードを自動的に埋め込むことができる。なお、このよ
うな検索,埋め込み処理を、上述のように、例えば、オ
ブジェクトの生成箇所,オブジェクトの削除箇所,オブ
ジェクトの持つメソッドの呼び出し箇所,オブジェクト
の持つ属性への値の代入箇所ごとに、各々別個のルーチ
ンで行なっても良いが、これらの各検索,埋め込み処理
を1つのルーチンで1パスで実行することもできる。
【0050】また、上記例では、ソースプログラム中へ
のオブジェクト挙動認識手段1の埋め込みについて具体
的に説明したが、データ認識手段4,保存手段2のソー
スプログラム中への埋め込み処理についても、同様にし
て、自動的に行なうことができる。
のオブジェクト挙動認識手段1の埋め込みについて具体
的に説明したが、データ認識手段4,保存手段2のソー
スプログラム中への埋め込み処理についても、同様にし
て、自動的に行なうことができる。
【0051】このようにして、ソースプログラムを解析
し、ユーザが定義したクラスの定義(属性およびメソッ
ド)やユーザ定義のデータタイプ(型)などを取り出し、
プログラム中のメッセージの呼び出し箇所およびその時
のデータとデータタイプを認識し、さらにその他のオブ
ジェクトの振る舞いを自動認識して、その振る舞いを行
う箇所に、所定のデバッグ用プログラムコードを自動的
に埋め込むことができる。
し、ユーザが定義したクラスの定義(属性およびメソッ
ド)やユーザ定義のデータタイプ(型)などを取り出し、
プログラム中のメッセージの呼び出し箇所およびその時
のデータとデータタイプを認識し、さらにその他のオブ
ジェクトの振る舞いを自動認識して、その振る舞いを行
う箇所に、所定のデバッグ用プログラムコードを自動的
に埋め込むことができる。
【0052】いま、例えば図11に示すようなソースプ
ログラム(サンプルプログラム)が指定されたとし、この
サンプルプログラムを用いてオブジェクトの振る舞いが
どのように本実施例の開発支援装置で処理されるかを図
2の処理を例にとって具体的に説明する。
ログラム(サンプルプログラム)が指定されたとし、この
サンプルプログラムを用いてオブジェクトの振る舞いが
どのように本実施例の開発支援装置で処理されるかを図
2の処理を例にとって具体的に説明する。
【0053】図2のステップS1の処理においては、図
11に示すようなソースプログラムが与えられるとき、
これをファイル名がtest.ccであるものとして指
定する。次に、ステップS2におけるソースプログラム
(test.cc)の解析処理では、まず、ファイルの先
頭に、オブジェクトの履歴を書き出すファイルを宣言し
ておく。さらに、ソースプログラムからmain関数を
検索し、main関数の先頭にこの履歴を保存するファ
イルをオープンする関数を挿入する。また、main関
数の最後にこのファイルをクローズする関数を挿入す
る。次にファイルを順次解析していき、ファイル内で定
義されているクラスおよびデータ型を認識する。図11
のソースプログラムの場合には、クラス定義として、c
lassBおよびclassAが定義されており、ユー
ザ定義のデータ型はない。また、クラス定義の中でcl
assBはメソッドmethodBをもち、また、cl
assAは属性ptrとメソッドmethodAをも
ち、methodBの引数はcで、charであり、c
lassAの属性ptrのタイプはclassBへのポ
インターであり、また、methodAの引数はa,b
の2つで、ともにintegerであることが認識され
る。またmain関数内で変数a,bがそれぞれクラス
のclassA型,classB型であることなどの変
数の型も認識される。このようにして、図4,図5,図
6に示したようなデータ型表,クラス表,変数表を作成
し、これらの情報を基に再びソースプログラムを順次解
析していき、オブジェクトが振る舞う箇所を検出し、そ
こにオブジェクトの振る舞いを書き出す手続きを埋め込
む。すなわち、図7,図8,図9あるいは図10に示す
ようなデバッグ用プログラムコードを埋め込む。
11に示すようなソースプログラムが与えられるとき、
これをファイル名がtest.ccであるものとして指
定する。次に、ステップS2におけるソースプログラム
(test.cc)の解析処理では、まず、ファイルの先
頭に、オブジェクトの履歴を書き出すファイルを宣言し
ておく。さらに、ソースプログラムからmain関数を
検索し、main関数の先頭にこの履歴を保存するファ
イルをオープンする関数を挿入する。また、main関
数の最後にこのファイルをクローズする関数を挿入す
る。次にファイルを順次解析していき、ファイル内で定
義されているクラスおよびデータ型を認識する。図11
のソースプログラムの場合には、クラス定義として、c
lassBおよびclassAが定義されており、ユー
ザ定義のデータ型はない。また、クラス定義の中でcl
assBはメソッドmethodBをもち、また、cl
assAは属性ptrとメソッドmethodAをも
ち、methodBの引数はcで、charであり、c
lassAの属性ptrのタイプはclassBへのポ
インターであり、また、methodAの引数はa,b
の2つで、ともにintegerであることが認識され
る。またmain関数内で変数a,bがそれぞれクラス
のclassA型,classB型であることなどの変
数の型も認識される。このようにして、図4,図5,図
6に示したようなデータ型表,クラス表,変数表を作成
し、これらの情報を基に再びソースプログラムを順次解
析していき、オブジェクトが振る舞う箇所を検出し、そ
こにオブジェクトの振る舞いを書き出す手続きを埋め込
む。すなわち、図7,図8,図9あるいは図10に示す
ようなデバッグ用プログラムコードを埋め込む。
【0054】図11のサンプルプログラムでは、部分P
1,P2,P3,P4,P5,P6がオブジェクトの振
る舞いの箇所として検出される。
1,P2,P3,P4,P5,P6がオブジェクトの振
る舞いの箇所として検出される。
【0055】すなわち、サンプルプログラム(tes
t.cc)を上から順に見ていくと、まず、class
AのメソッドmethodAの中でmethodBを呼
び出しているのが検出される(図11の部分P1)。そこ
で、ここにメソッド呼び出しの情報をファイルに書き出
す手続き,すなわち図9に示すようなデバッグ用プログ
ラムコードを埋め込む。
t.cc)を上から順に見ていくと、まず、class
AのメソッドmethodAの中でmethodBを呼
び出しているのが検出される(図11の部分P1)。そこ
で、ここにメソッド呼び出しの情報をファイルに書き出
す手続き,すなわち図9に示すようなデバッグ用プログ
ラムコードを埋め込む。
【0056】次に、newでclassAを生成してい
る部分が検出される(図11の部分P2)。そこで、ここ
にはオブジェクト生成の情報をファイルに書き出す手続
き,すなわち図7に示すようなデバッグ用プログラムコ
ードを埋め込む。
る部分が検出される(図11の部分P2)。そこで、ここ
にはオブジェクト生成の情報をファイルに書き出す手続
き,すなわち図7に示すようなデバッグ用プログラムコ
ードを埋め込む。
【0057】次に、classBを生成している部分が
検出され(図11の部分P3)、この部分P3について
も、部分P2と同様にして、図7に示すようなデバッグ
用プログラムコードを埋め込む。
検出され(図11の部分P3)、この部分P3について
も、部分P2と同様にして、図7に示すようなデバッグ
用プログラムコードを埋め込む。
【0058】次に、プログラム内からのメソッドの呼び
出しの部分が検出され(図11の部分P4)、この部分P
4についても、先程のmethodA内からのmeth
odBの呼び出しと同様な情報をファイルに書き出す手
続き,すなわち図9に示すようなデバッグ用プログラム
コードを埋め込む。
出しの部分が検出され(図11の部分P4)、この部分P
4についても、先程のmethodA内からのmeth
odBの呼び出しと同様な情報をファイルに書き出す手
続き,すなわち図9に示すようなデバッグ用プログラム
コードを埋め込む。
【0059】そして、最後に、オブジェクトa、bを削
除している部分が検出され(図11の部分P5,P6)、
これらの部分P5,P6にオブジェクト削除の情報をフ
ァイルに書き出す手続き,すなわち図8に示すようなデ
バッグ用プログラムコードを埋め込む。
除している部分が検出され(図11の部分P5,P6)、
これらの部分P5,P6にオブジェクト削除の情報をフ
ァイルに書き出す手続き,すなわち図8に示すようなデ
バッグ用プログラムコードを埋め込む。
【0060】このようにしてソースプログラム(サンプ
ルプログラム)の解析を終了する。図12乃至図14
は、図11のソースプログラムの解析が終了し、図11
のソースプログラムのデバッグに必要な手続き,すなわ
ち所定のデバッグ用プログラムコードが埋め込まれた状
態を示す図である。
ルプログラム)の解析を終了する。図12乃至図14
は、図11のソースプログラムの解析が終了し、図11
のソースプログラムのデバッグに必要な手続き,すなわ
ち所定のデバッグ用プログラムコードが埋め込まれた状
態を示す図である。
【0061】なお、図12乃至図14のソースプログラ
ムにおいて、本実施例の開発支援装置によって図11の
ソースプログラムに付け加えられた(埋め込まれた)デバ
ッグ用プログラムコードの部分は、すべて、#ifde
f OO_TOOLと#endifとで挾まれている。
ムにおいて、本実施例の開発支援装置によって図11の
ソースプログラムに付け加えられた(埋め込まれた)デバ
ッグ用プログラムコードの部分は、すべて、#ifde
f OO_TOOLと#endifとで挾まれている。
【0062】図12乃至図14を参照すると、図12の
(Q1)の部分では、オブジェクトの振る舞いを書き出す
ファイルを定義し、そのためのファイルポインターを宣
言している。また、このファイルポインターの宣言に必
要なFILE型のために<stdio.h>をインクル
ードしている。countの変数は、オブジェクトの振
る舞いをカウントするためのグローバル変数である。
(Q1)の部分では、オブジェクトの振る舞いを書き出す
ファイルを定義し、そのためのファイルポインターを宣
言している。また、このファイルポインターの宣言に必
要なFILE型のために<stdio.h>をインクル
ードしている。countの変数は、オブジェクトの振
る舞いをカウントするためのグローバル変数である。
【0063】また、図12の(Q2)の部分(図11のソ
ースプログラムの部分P1に対応)には、classA
の持つメソッドmethodA内での他のクラスの持つ
メソッドの呼び出しをファイルに保存する手続き,すな
わち図9に示すようなデバッグ用プログラムコードが埋
め込まれている。すなわち、図11のソースプログラム
の部分P1では、classAのメソッドmethod
Aからの呼び出しであるので、図9のデバッグ用プログ
ラムコードにおいて、メソッドの呼び出し箇所は(FRO
M)、classAであり、関数名は(FUNCTION)、met
hodAとなる。
ースプログラムの部分P1に対応)には、classA
の持つメソッドmethodA内での他のクラスの持つ
メソッドの呼び出しをファイルに保存する手続き,すな
わち図9に示すようなデバッグ用プログラムコードが埋
め込まれている。すなわち、図11のソースプログラム
の部分P1では、classAのメソッドmethod
Aからの呼び出しであるので、図9のデバッグ用プログ
ラムコードにおいて、メソッドの呼び出し箇所は(FRO
M)、classAであり、関数名は(FUNCTION)、met
hodAとなる。
【0064】これにより、図12の(Q2)の部分が実行
されると、先ず、オブジェクトの振る舞いのカウンター
countが出力され、次にメソッドの呼び出しである
ことを示す”METHOD”とメソッドの名称meth
odBが出力される。次に、どこからどこへ(どのクラ
スの)メソッドが呼ばれたかがFROMとTOで出力さ
れる。なお、これらの間の”FUNCTION”は、ど
の関数から呼び出されたかを示すものである。この場合
は、メソッドmethodAであるので、この名称me
thodAが出力される。次いで、引数について、ま
ず、引数の数“1”が出力され、次に引数の値“a”が
出力される。
されると、先ず、オブジェクトの振る舞いのカウンター
countが出力され、次にメソッドの呼び出しである
ことを示す”METHOD”とメソッドの名称meth
odBが出力される。次に、どこからどこへ(どのクラ
スの)メソッドが呼ばれたかがFROMとTOで出力さ
れる。なお、これらの間の”FUNCTION”は、ど
の関数から呼び出されたかを示すものである。この場合
は、メソッドmethodAであるので、この名称me
thodAが出力される。次いで、引数について、ま
ず、引数の数“1”が出力され、次に引数の値“a”が
出力される。
【0065】また、図13,図14はmain関数につ
いてのプログラムコードであり、図13の(Q3)の部分
(図11のソースプログラムの部分P2に対応)には、プ
ログラムの最初に呼ばれるメイン関数の先頭にオブジェ
クトの振る舞いを書き出す為のファイルをオープンする
手続きが埋め込まれている。また、(Q4)の部分では、
オブジェクトの生成を示す内容をファイルに保存する手
続き,すなわち、図7に示すようなデバッグ用プログラ
ムコードが埋め込まれている。すなわち、図11のソー
スプログラムの部分P2では、mainという関数内で
の生成であるので、ともに生成箇所は(WHERE)は、FU
NCTIONであり、関数名は、(FUNCTION)、mainとな
る。
いてのプログラムコードであり、図13の(Q3)の部分
(図11のソースプログラムの部分P2に対応)には、プ
ログラムの最初に呼ばれるメイン関数の先頭にオブジェ
クトの振る舞いを書き出す為のファイルをオープンする
手続きが埋め込まれている。また、(Q4)の部分では、
オブジェクトの生成を示す内容をファイルに保存する手
続き,すなわち、図7に示すようなデバッグ用プログラ
ムコードが埋め込まれている。すなわち、図11のソー
スプログラムの部分P2では、mainという関数内で
の生成であるので、ともに生成箇所は(WHERE)は、FU
NCTIONであり、関数名は、(FUNCTION)、mainとな
る。
【0066】これにより、(Q4)の部分が実行される
と、まずオブジェクトの振る舞いのカウンターcoun
tが出力され、次に生成を示す”CREATE”と生成
されるクラスの名称classAが出力される。次に、
生成されたオブジェクトを示すポインターが格納されて
いる変数の名称“a”が出力され、次にどこで生成され
たかが出力される。いまの場合は、関数内で生成されて
いるので”FUNCTION”と出力されるが、あるク
ラスの持つメソッド内で生成される場合には、そのクラ
ス名が出力される。次いで、関数の名称またはメソッド
の名称が出力される。いまの場合、関数の名称main
が出力される。
と、まずオブジェクトの振る舞いのカウンターcoun
tが出力され、次に生成を示す”CREATE”と生成
されるクラスの名称classAが出力される。次に、
生成されたオブジェクトを示すポインターが格納されて
いる変数の名称“a”が出力され、次にどこで生成され
たかが出力される。いまの場合は、関数内で生成されて
いるので”FUNCTION”と出力されるが、あるク
ラスの持つメソッド内で生成される場合には、そのクラ
ス名が出力される。次いで、関数の名称またはメソッド
の名称が出力される。いまの場合、関数の名称main
が出力される。
【0067】また、(Q5)の部分(図11のソースプロ
グラムの部分P3に対応)にも、(Q4)と同様に、オブ
ジェクトの生成を示す内容をファイルに保存する手続き
が埋め込まれており、(Q5)の部分が実行されると、ク
ラスclassBに関して、(Q4)の部分と同様の出力
がなされる。
グラムの部分P3に対応)にも、(Q4)と同様に、オブ
ジェクトの生成を示す内容をファイルに保存する手続き
が埋め込まれており、(Q5)の部分が実行されると、ク
ラスclassBに関して、(Q4)の部分と同様の出力
がなされる。
【0068】また、図13の(Q6)の部分(図11のソ
ースプログラムの部分P4に対応)には、図12の(Q
2)とほぼ同様の手続きが埋め込まれている。但し、(Q
2)の部分と異なり、(Q6)の部分は、メソッドの呼び
出し元がオブジェクトではないので”FROM”が”F
UNCTION”であり、呼び出している関数が”ma
in”となる。すなわち、図11のソースプログラムの
部分P4では、mainという関数内でのメソッドの呼
び出しであるので、メソッドの呼び出し箇所は(FROM)、
FUNCTIONであり、関数名は(FUNCTION)、mai
nとなる。
ースプログラムの部分P4に対応)には、図12の(Q
2)とほぼ同様の手続きが埋め込まれている。但し、(Q
2)の部分と異なり、(Q6)の部分は、メソッドの呼び
出し元がオブジェクトではないので”FROM”が”F
UNCTION”であり、呼び出している関数が”ma
in”となる。すなわち、図11のソースプログラムの
部分P4では、mainという関数内でのメソッドの呼
び出しであるので、メソッドの呼び出し箇所は(FROM)、
FUNCTIONであり、関数名は(FUNCTION)、mai
nとなる。
【0069】また、図14の(Q7)の部分(図11のソ
ースプログラムの部分P5に対応)には、オブジェクト
の削除を示す内容を書き出す手続き,すなわち図8に示
すようなデバッグ用プログラムコードが埋め込まれてい
る。(Q7)の部分が実行されると、最初にオブジェクト
の振る舞いのカウンターcountが出力され、次に削
除を示す”DELETE”および削除されるクラスの名
称(ここでは”classA”)が出力される。次にこの
オブジェクトを示す変数名“a”が出力され、次いで、
削除される場所”WHERE”、ここではクラス内では
なく、関数内なので、”FUNCTION”が出力さ
れ、次にその関数名”main”が出力される。
ースプログラムの部分P5に対応)には、オブジェクト
の削除を示す内容を書き出す手続き,すなわち図8に示
すようなデバッグ用プログラムコードが埋め込まれてい
る。(Q7)の部分が実行されると、最初にオブジェクト
の振る舞いのカウンターcountが出力され、次に削
除を示す”DELETE”および削除されるクラスの名
称(ここでは”classA”)が出力される。次にこの
オブジェクトを示す変数名“a”が出力され、次いで、
削除される場所”WHERE”、ここではクラス内では
なく、関数内なので、”FUNCTION”が出力さ
れ、次にその関数名”main”が出力される。
【0070】また、図14の(Q8)の部分(図11のソ
ースプログラムの部分P6に対応)には、(Q7)と同様
の手続きが埋め込まれている。
ースプログラムの部分P6に対応)には、(Q7)と同様
の手続きが埋め込まれている。
【0071】また、図14の(Q9)の部分は、図13の
(Q3)のファイルのオープンに呼応する処理で、オブジ
ェクトの振る舞いを書き出すファイルを閉じる処理を行
なっている。
(Q3)のファイルのオープンに呼応する処理で、オブジ
ェクトの振る舞いを書き出すファイルを閉じる処理を行
なっている。
【0072】このようにして、埋め込み処理がなされた
後、図2のステップS3に進み、システムを実行する。
システムを実行すると、ステップS2で埋め込んだプリ
ント文により、ファイル(OO_TOOL_FILE
=”OO_tool.file”)にオブジェクトの振
る舞いが書き出され、時系列に保存される。その保存さ
れた内容を図15に示す。すなわち、図15は、図12
乃至図14のプログラムをコンパイルし、システムを実
行した結果書き出されたオブジェクトの振る舞いに関す
る情報を含んでいるファイルの内容である。
後、図2のステップS3に進み、システムを実行する。
システムを実行すると、ステップS2で埋め込んだプリ
ント文により、ファイル(OO_TOOL_FILE
=”OO_tool.file”)にオブジェクトの振
る舞いが書き出され、時系列に保存される。その保存さ
れた内容を図15に示す。すなわち、図15は、図12
乃至図14のプログラムをコンパイルし、システムを実
行した結果書き出されたオブジェクトの振る舞いに関す
る情報を含んでいるファイルの内容である。
【0073】図15には、6つのオブジェクトの振る舞
いが書き出されており、P1’およびP2’はオブジェ
クトの生成で、図12乃至図14の(Q4)および(Q5)
にそれぞれ対応している。また、P3’およびP4’は
メソッドの呼び出しであり、図12乃至図14の(Q6)
および(Q2)にそれぞれ対応している。また、P5’お
よびP6’はオブジェクトの削除であり、図12乃至図
14の(Q7)および(Q8)にそれぞれ対応している。
いが書き出されており、P1’およびP2’はオブジェ
クトの生成で、図12乃至図14の(Q4)および(Q5)
にそれぞれ対応している。また、P3’およびP4’は
メソッドの呼び出しであり、図12乃至図14の(Q6)
および(Q2)にそれぞれ対応している。また、P5’お
よびP6’はオブジェクトの削除であり、図12乃至図
14の(Q7)および(Q8)にそれぞれ対応している。
【0074】このようにして、保存手段2によりオブジ
ェクトの振る舞いがファイルに保存されると、図2のス
テップS4に進み、システムの実行を視覚的に見るため
に、出力手段3を起動する。これにより、出力手段3
は、ファイルの内容を読み込み、ユーザの指定に従って
視覚的にシステム内でのオブジェクトの振る舞いを表示
する。ここで、ユーザの指定として、1)自動的に一定
時間でオブジェクトの振る舞いを出力手段が進行してい
く、2)ユーザが逐次指示を行い、オブジェクトの振る
舞いの表示を行なっていくなどの指定を選択して行なう
ことができる。
ェクトの振る舞いがファイルに保存されると、図2のス
テップS4に進み、システムの実行を視覚的に見るため
に、出力手段3を起動する。これにより、出力手段3
は、ファイルの内容を読み込み、ユーザの指定に従って
視覚的にシステム内でのオブジェクトの振る舞いを表示
する。ここで、ユーザの指定として、1)自動的に一定
時間でオブジェクトの振る舞いを出力手段が進行してい
く、2)ユーザが逐次指示を行い、オブジェクトの振る
舞いの表示を行なっていくなどの指定を選択して行なう
ことができる。
【0075】実際に、図15のファイル内容(履歴)に基
づいて、オブジェクトの振る舞いを表示した出力手段3
の様子の一例を図16乃至図18に示す。すなわち、図
16乃至図18は、本実施例の開発支援装置が図15の
ファイル内容を読み込んで、オブジェクトの振る舞いを
表示している状態を示す図である。
づいて、オブジェクトの振る舞いを表示した出力手段3
の様子の一例を図16乃至図18に示す。すなわち、図
16乃至図18は、本実施例の開発支援装置が図15の
ファイル内容を読み込んで、オブジェクトの振る舞いを
表示している状態を示す図である。
【0076】図16乃至図18を参照すると、まず、図
16(a)は出力手段起動時の画面であり、この時点では
何も表示されていない。次に、出力手段3が起動される
と、図16(b)のように、画面上にプログラムボックス
が表示される。ここで、プログラムボックスが表示され
るのは、出力手段3ではオブジェクトの振る舞いおよび
オブジェクト間の振る舞いを表示する一方で、オブジェ
クトではなく関数からオブジェクトが作成されたり、メ
ソッドが呼び出されたりする場合に、これらに対応した
表示領域を確保するためである。なお、図16(b)の例
では、便宜上、1つのプログラムボックスしか表示され
ていないが、ユーザの要求に応じて関数毎にあるいはモ
ジュール毎にプログラムボックスを複数表示しても良
い。
16(a)は出力手段起動時の画面であり、この時点では
何も表示されていない。次に、出力手段3が起動される
と、図16(b)のように、画面上にプログラムボックス
が表示される。ここで、プログラムボックスが表示され
るのは、出力手段3ではオブジェクトの振る舞いおよび
オブジェクト間の振る舞いを表示する一方で、オブジェ
クトではなく関数からオブジェクトが作成されたり、メ
ソッドが呼び出されたりする場合に、これらに対応した
表示領域を確保するためである。なお、図16(b)の例
では、便宜上、1つのプログラムボックスしか表示され
ていないが、ユーザの要求に応じて関数毎にあるいはモ
ジュール毎にプログラムボックスを複数表示しても良
い。
【0077】次に、画面上には、図16(c)のように、
図15のP1’に対応する処理、すなわちclassA
型のオブジェクトaが作成される処理が表示される。す
なわち、画面上にはクラス型Aと変数名aとがボックス
の中に表示される。次いで、画面上には、図16(d)の
ように、図15のP2’に対応するclassB型のオ
ブジェクトbが作成される処理が表示される。すなわ
ち、図16(c)と同様に、クラス型Bと変数名bとがボ
ックスの中に表示される。
図15のP1’に対応する処理、すなわちclassA
型のオブジェクトaが作成される処理が表示される。す
なわち、画面上にはクラス型Aと変数名aとがボックス
の中に表示される。次いで、画面上には、図16(d)の
ように、図15のP2’に対応するclassB型のオ
ブジェクトbが作成される処理が表示される。すなわ
ち、図16(c)と同様に、クラス型Bと変数名bとがボ
ックスの中に表示される。
【0078】次いで、画面上には、図17(e)のよう
に、図15のP3’に対応する処理が表示される。すな
わち、P3’の処理は、メイン関数からのオブジェクト
aの持つメソッドの呼び出しであるので、プログラムボ
ックスからclassA型のオブジェクトaボックスに
矢印が表示される。ここで、オペレータが矢印を選択す
ることにより、どのようなデータが渡されたかなどのメ
ソッドに関する情報を表示することが可能である。次い
で、画面上には、図17(f)のように、図15のP4’
に対応する処理が表示される。すなわち、P4’の処理
では、P3’と同様にしてメソッドmethodAから
classB型のオブジェクトの持つメソッドが呼び出
されているので、オブジェクトaからオブジェクトbに
対して矢印が表示される。
に、図15のP3’に対応する処理が表示される。すな
わち、P3’の処理は、メイン関数からのオブジェクト
aの持つメソッドの呼び出しであるので、プログラムボ
ックスからclassA型のオブジェクトaボックスに
矢印が表示される。ここで、オペレータが矢印を選択す
ることにより、どのようなデータが渡されたかなどのメ
ソッドに関する情報を表示することが可能である。次い
で、画面上には、図17(f)のように、図15のP4’
に対応する処理が表示される。すなわち、P4’の処理
では、P3’と同様にしてメソッドmethodAから
classB型のオブジェクトの持つメソッドが呼び出
されているので、オブジェクトaからオブジェクトbに
対して矢印が表示される。
【0079】メソッドの処理が終了すると、メソッドの
呼び出しを示す矢印が消去されるので、画面上では、図
17(g)のように、オブジェクトaからのメソッドを示
す矢印が消去され、また、図17(h)のように、プログ
ラムからオブジェクトaのメソッドを呼び出すことを示
す矢印が順次消去される。
呼び出しを示す矢印が消去されるので、画面上では、図
17(g)のように、オブジェクトaからのメソッドを示
す矢印が消去され、また、図17(h)のように、プログ
ラムからオブジェクトaのメソッドを呼び出すことを示
す矢印が順次消去される。
【0080】次に、画面上では、図15のP5’の処理
でオブジェクトbが削除されるので、画面上では、図1
8(i)のように、オブジェクトbを示すオブジェクトb
ボックスが消去される。次いで、同様にして図15のP
6’の処理でオブジェクトaが削除されるので、画面上
では、図18(j)のように、オブジェクトaボックスが
削除され、一連のオブジェクトの振る舞いを示す処理が
終了する。
でオブジェクトbが削除されるので、画面上では、図1
8(i)のように、オブジェクトbを示すオブジェクトb
ボックスが消去される。次いで、同様にして図15のP
6’の処理でオブジェクトaが削除されるので、画面上
では、図18(j)のように、オブジェクトaボックスが
削除され、一連のオブジェクトの振る舞いを示す処理が
終了する。
【0081】上述の例では、一連の画面(図16(a)〜
図18(j))によるオブジェクトの振る舞いを表示した
が、この処理はリアルタイム処理ではなく、ファイルに
オブジェクトの振る舞いがすべて保存されている。従っ
て、処理の実行を後戻りすることも可能である。すなわ
ち、図16(a)〜図18(j)に示した一連の画面を途中
から元に戻したり、また、図18(j)から逆に始めて図
16(a)に戻すことも可能である。
図18(j))によるオブジェクトの振る舞いを表示した
が、この処理はリアルタイム処理ではなく、ファイルに
オブジェクトの振る舞いがすべて保存されている。従っ
て、処理の実行を後戻りすることも可能である。すなわ
ち、図16(a)〜図18(j)に示した一連の画面を途中
から元に戻したり、また、図18(j)から逆に始めて図
16(a)に戻すことも可能である。
【0082】
【発明の効果】以上に説明したように、請求項1乃至請
求項9記載の発明では、オブジェクト指向システムの開
発環境において、オブジェクト指向システムを実際に起
動した際に、オブジェクト間でのメッセージの授受やオ
ブジェクトの生成や削除などのオブジェクトの振る舞い
を認識するオブジェクト挙動認識手段と、オブジェクト
挙動認識手段によって認識されたオブジェクトの振る舞
いをファイルに保存する保存手段と、前記保存手段によ
ってファイルに保存されたオブジェクトの振る舞いを読
み取り出力する出力手段とを備えているので、オブジェ
クト指向システムを実際に動作させたときのシステムの
挙動、すなわち、オブジェクトの振る舞いなどをユーザ
が容易に理解することができる。
求項9記載の発明では、オブジェクト指向システムの開
発環境において、オブジェクト指向システムを実際に起
動した際に、オブジェクト間でのメッセージの授受やオ
ブジェクトの生成や削除などのオブジェクトの振る舞い
を認識するオブジェクト挙動認識手段と、オブジェクト
挙動認識手段によって認識されたオブジェクトの振る舞
いをファイルに保存する保存手段と、前記保存手段によ
ってファイルに保存されたオブジェクトの振る舞いを読
み取り出力する出力手段とを備えているので、オブジェ
クト指向システムを実際に動作させたときのシステムの
挙動、すなわち、オブジェクトの振る舞いなどをユーザ
が容易に理解することができる。
【0083】特に、請求項3記載の発明によれば、前記
オブジェクト挙動認識手段は、特定のオブジェクトに注
目し、該特定のオブジェクトに関する振る舞いのみを認
識するので、必要なデータのみを集中して取り扱うこと
ができ、不必要なデータを省くことができる。
オブジェクト挙動認識手段は、特定のオブジェクトに注
目し、該特定のオブジェクトに関する振る舞いのみを認
識するので、必要なデータのみを集中して取り扱うこと
ができ、不必要なデータを省くことができる。
【0084】また、請求項6記載の発明では、さらに、
前記オブジェクト挙動認識手段,前記データ認識手段
を、オブジェクト指向システムの実行前にファイルに埋
め込む第2の埋込手段を有しており、第2の埋込手段
は、ソースプログラムを解析することによって、オブジ
ェクトの生成や削除,メッセージの送信などの振る舞い
の箇所を自動認識してオブジェクト挙動認識手段を埋め
込むことができるので、ユーザは、オブジェクト挙動認
識手段をこのオブジェクト指向システムに自ら設定する
必要がなく、ユーザの作業効率を著しく向上させること
ができる。
前記オブジェクト挙動認識手段,前記データ認識手段
を、オブジェクト指向システムの実行前にファイルに埋
め込む第2の埋込手段を有しており、第2の埋込手段
は、ソースプログラムを解析することによって、オブジ
ェクトの生成や削除,メッセージの送信などの振る舞い
の箇所を自動認識してオブジェクト挙動認識手段を埋め
込むことができるので、ユーザは、オブジェクト挙動認
識手段をこのオブジェクト指向システムに自ら設定する
必要がなく、ユーザの作業効率を著しく向上させること
ができる。
【0085】また、請求項7記載の発明では、前記出力
手段は、前記ファイルに保存された内容を視覚化して表
示するようになっており、例えば、システムの振る舞い
をユーザに提示する場合には、オブジェクトを四角や円
などで表示したり、また、メッセージの授受(やりとり)
をユーザに提示する場合には、オブジェクト間にリンク
を表示するなどによって、ユーザは視覚的に容易にシス
テムの振る舞いを把握できる。
手段は、前記ファイルに保存された内容を視覚化して表
示するようになっており、例えば、システムの振る舞い
をユーザに提示する場合には、オブジェクトを四角や円
などで表示したり、また、メッセージの授受(やりとり)
をユーザに提示する場合には、オブジェクト間にリンク
を表示するなどによって、ユーザは視覚的に容易にシス
テムの振る舞いを把握できる。
【0086】また、請求項8記載の発明では、前記出力
手段は、前記ファイルに保存された内容を視覚化して表
示する際に、ユーザの要求に応じて、システムの稼働に
合わせて、逐次、システムの稼働状況を表示するので、
時間の経過によるシステムの振る舞いをユーザに提示し
たり、また、時間をさかのぼってシステムの振る舞いを
ユーザに提示すること(すなわち、時間をさかのぼって
システムの振る舞いをたどること)も可能となる。
手段は、前記ファイルに保存された内容を視覚化して表
示する際に、ユーザの要求に応じて、システムの稼働に
合わせて、逐次、システムの稼働状況を表示するので、
時間の経過によるシステムの振る舞いをユーザに提示し
たり、また、時間をさかのぼってシステムの振る舞いを
ユーザに提示すること(すなわち、時間をさかのぼって
システムの振る舞いをたどること)も可能となる。
【0087】また、請求項9記載の発明によれば、オブ
ジェクトの振る舞いをシステムの実行と同時に視覚化し
て表示するので、ユーザは、リアルタイムに容易にシス
テムの振る舞いを理解することができる。
ジェクトの振る舞いをシステムの実行と同時に視覚化し
て表示するので、ユーザは、リアルタイムに容易にシス
テムの振る舞いを理解することができる。
【図1】本発明に係るオブジェクト指向システムの開発
支援装置の一実施例の構成図である。
支援装置の一実施例の構成図である。
【図2】図1の開発支援装置の処理動作の一例を示すフ
ローチャートである。
ローチャートである。
【図3】図1の開発支援装置の処理動作の他の例を示す
フローチャートである。
フローチャートである。
【図4】データ型表の一例を示す図である。
【図5】クラス表の一例を示す図である。
【図6】変数表の一例を示す図である。
【図7】オブジェクト生成に対応したデバッグ用プログ
ラムコードの一例を示す図である。
ラムコードの一例を示す図である。
【図8】オブジェクト削除に対応したデバッグ用プログ
ラムコードの一例を示す図である。
ラムコードの一例を示す図である。
【図9】オブジェクトのもつメソッドの呼び出しに対応
したデバッグ用プログラムコードの一例を示す図であ
る。
したデバッグ用プログラムコードの一例を示す図であ
る。
【図10】オブジェクトのもつ属性への値の代入に対応
したデバッグ用プログラムコードの一例を示す図であ
る。
したデバッグ用プログラムコードの一例を示す図であ
る。
【図11】ソースプログラム(サンプルプログラム)の一
例を示す図である。
例を示す図である。
【図12】図11のソースプログラムにデバッグ用プロ
グラムコードが埋め込まれた状態を示す図である。
グラムコードが埋め込まれた状態を示す図である。
【図13】図11のソースプログラムにデバッグ用プロ
グラムコードが埋め込まれた状態を示す図である。
グラムコードが埋め込まれた状態を示す図である。
【図14】図11のソースプログラムにデバッグ用プロ
グラムコードが埋め込まれた状態を示す図である。
グラムコードが埋め込まれた状態を示す図である。
【図15】図12乃至図14のプログラムをコンパイル
し、システムを実行した結果書き出されたオブジェクト
の振る舞いに関する情報を含んでいるファイルの内容を
示す図である。
し、システムを実行した結果書き出されたオブジェクト
の振る舞いに関する情報を含んでいるファイルの内容を
示す図である。
【図16】図15のファイル内容を読み込んで、オブジ
ェクトの振る舞いを表示している状態を示す図である。
ェクトの振る舞いを表示している状態を示す図である。
【図17】図15のファイル内容を読み込んで、オブジ
ェクトの振る舞いを表示している状態を示す図である。
ェクトの振る舞いを表示している状態を示す図である。
【図18】図15のファイル内容を読み込んで、オブジ
ェクトの振る舞いを表示している状態を示す図である。
ェクトの振る舞いを表示している状態を示す図である。
1 オブジェクト挙動認識手段 2 保存手段 3 出力手段 4 データ認識手段 6 第1の埋込手段 7 第2の埋込手段 F ファイル
Claims (9)
- 【請求項1】 オブジェクト指向システムの開発環境に
おいて、オブジェクト指向システムを実際に起動した際
に、オブジェクトの振る舞いを認識するオブジェクト挙
動認識手段と、オブジェクト挙動認識手段によって認識
されたオブジェクトの振る舞いをファイルに保存する保
存手段と、前記保存手段によってファイルに保存された
オブジェクトの振る舞いを読み取り出力する出力手段と
を備えていることを特徴とするオブジェクト指向システ
ムの開発支援装置。 - 【請求項2】 請求項1記載のオブジェクト指向システ
ムの開発支援装置において、前記オブジェクト挙動認識
手段によりオブジェクトの振る舞いとしてオブジェクト
間でのメッセージの授受が認識されると、前記保存手段
は、認識されたメッセージを、オブジェクト間で授受が
なされた順にファイルに保存し、前記出力手段は、ファ
イル保存されたメッセージをも出力するようになってい
ることを特徴とするオブジェクト指向システムの開発支
援装置。 - 【請求項3】 請求項1記載のオブジェクト指向システ
ムの開発支援装置において、前記オブジェクト挙動認識
手段は、特定のオブジェクトに注目し、該特定のオブジ
ェクトに関する振る舞いのみを認識することを特徴とす
るオブジェクト指向システムの開発支援装置。 - 【請求項4】 請求項1記載のオブジェクト指向システ
ムの開発支援装置において、さらに、メッセージ間で授
受されるメッセージ内のデータを認識するデータ認識手
段を有し、前記保存手段は、さらに、データ認識手段で
認識されたメッセージ内のデータをもファイルに保存
し、前記出力手段は、さらに、ファイルに保存されたメ
ッセージ内のデータをも出力するようになっていること
を特徴とするオブジェクト指向システムの開発支援装
置。 - 【請求項5】 請求項1乃至請求項4のいずれか一項に
記載のオブジェクト指向システムの開発支援装置におい
て、さらに、前記保存手段をオブジェクトの指向システ
ムの実行前にファイルに埋め込む第1の埋込手段を有し
ていることを特徴とするオブジェクト指向システムの開
発支援装置。 - 【請求項6】 請求項1乃至請求項4のいずれか一項に
記載のオブジェクト指向システムの開発支援装置におい
て、さらに、前記オブジェクト挙動認識手段,前記デー
タ認識手段を、オブジェクト指向システムの実行前にフ
ァイルに埋め込む第2の埋込手段を有していることを特
徴とするオブジェクト指向システムの開発支援装置。 - 【請求項7】 請求項1乃至請求項4のいずれか一項に
記載のオブジェクト指向システムの開発支援装置におい
て、前記出力手段は、前記ファイルに保存された内容を
視覚化して表示することを特徴とするオブジェクト指向
システムの開発支援装置。 - 【請求項8】 請求項7記載のオブジェクト指向システ
ムの開発支援装置において、前記出力手段は、前記ファ
イルに保存された内容を視覚化して表示する際に、ユー
ザの要求に応じて、システムの稼働に合わせて、逐次、
システムの稼働状況を表示することを特徴とするオブジ
ェクト指向システムの開発支援装置。 - 【請求項9】 請求項7記載のオブジェクト指向システ
ムの開発支援装置において、前記出力手段は、オブジェ
クトの振る舞いをシステムの実行と同時に視覚化して表
示することを特徴とするオブジェクト指向システムの開
発支援装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP7142660A JPH08314752A (ja) | 1995-05-17 | 1995-05-17 | オブジェクト指向システムの開発支援装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP7142660A JPH08314752A (ja) | 1995-05-17 | 1995-05-17 | オブジェクト指向システムの開発支援装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH08314752A true JPH08314752A (ja) | 1996-11-29 |
Family
ID=15320535
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP7142660A Pending JPH08314752A (ja) | 1995-05-17 | 1995-05-17 | オブジェクト指向システムの開発支援装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH08314752A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002108651A (ja) * | 2000-09-27 | 2002-04-12 | Hitachi Software Eng Co Ltd | オブジェクト指向開発用デバッグ支援装置 |
WO2006043480A1 (ja) * | 2004-10-19 | 2006-04-27 | Winz Corporation | コンピュータプログラム、プログラム実行装置、プログラム生成処理プログラム、状況表示処理プログラム等 |
US7478282B2 (en) | 2003-04-02 | 2009-01-13 | Canon Kabushiki Kaisha | Log acquisition method and its control program and storage medium |
JP2010204955A (ja) * | 2009-03-03 | 2010-09-16 | Internatl Business Mach Corp <Ibm> | プログラム中のオブジェクトの割り付け場所を追跡する方法、並びにそのコンピュータ・システム及びコンピュータ・プログラム |
WO2019077738A1 (ja) * | 2017-10-20 | 2019-04-25 | 三菱電機株式会社 | データ検証装置、データ検証方法及びデータ検証プログラム |
-
1995
- 1995-05-17 JP JP7142660A patent/JPH08314752A/ja active Pending
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002108651A (ja) * | 2000-09-27 | 2002-04-12 | Hitachi Software Eng Co Ltd | オブジェクト指向開発用デバッグ支援装置 |
US7478282B2 (en) | 2003-04-02 | 2009-01-13 | Canon Kabushiki Kaisha | Log acquisition method and its control program and storage medium |
WO2006043480A1 (ja) * | 2004-10-19 | 2006-04-27 | Winz Corporation | コンピュータプログラム、プログラム実行装置、プログラム生成処理プログラム、状況表示処理プログラム等 |
JP2010204955A (ja) * | 2009-03-03 | 2010-09-16 | Internatl Business Mach Corp <Ibm> | プログラム中のオブジェクトの割り付け場所を追跡する方法、並びにそのコンピュータ・システム及びコンピュータ・プログラム |
US8555255B2 (en) | 2009-03-03 | 2013-10-08 | International Business Machines Corporation | Method of tracing object allocation site in program, as well as computer system and computer program therefor |
US8782610B2 (en) | 2009-03-03 | 2014-07-15 | International Business Machines Corporation | Method of tracing object allocation site in program, as well as computer system and computer program therefor |
WO2019077738A1 (ja) * | 2017-10-20 | 2019-04-25 | 三菱電機株式会社 | データ検証装置、データ検証方法及びデータ検証プログラム |
JPWO2019077738A1 (ja) * | 2017-10-20 | 2020-04-02 | 三菱電機株式会社 | データ検証装置、データ検証方法及びデータ検証プログラム |
GB2580830A (en) * | 2017-10-20 | 2020-07-29 | Mitsubishi Electric Corp | Data verification device, data verification method, and data verification program |
US11288171B2 (en) | 2017-10-20 | 2022-03-29 | Mitsubishi Electric Corporation | Data verification apparatus, method and medium for determining whether referring parts of source code are executed |
GB2580830B (en) * | 2017-10-20 | 2022-04-13 | Mitsubishi Electric Corp | Data verification apparatus, data verification method, and data verification program |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Gruhn | Validation and verification of software process models | |
Systä et al. | Shimba—an environment for reverse engineering Java software systems | |
US5956479A (en) | Demand based generation of symbolic information | |
Wilde et al. | A comparison of methods for locating features in legacy software | |
JPH02272645A (ja) | プログラム・デバツグ支援方法 | |
Bousse et al. | Omniscient debugging for executable DSLs | |
Systa | On the relationships between static and dynamic models in reverse engineering java software | |
US20090150420A1 (en) | Generating debug information | |
Deransart et al. | Analysis and visualization tools for constraint programming: constraint debugging | |
US20050060685A1 (en) | Program generator | |
US7086033B2 (en) | Software debugger having a monitor for monitoring conditional statements within a software program | |
Bandener et al. | Extending DMM behavior specifications for visual execution and debugging | |
Chang et al. | Visualization of exception propagation for Java using static analysis | |
Dupriez et al. | Sindarin: A versatile scripting api for the pharo debugger | |
Wilde et al. | A case study of feature location in unstructured legacy fortran code | |
EP3635561B1 (en) | Asynchronous operation query | |
Zeller | The future of programming environments: Integration, synergy, and assistance | |
JPH08314752A (ja) | オブジェクト指向システムの開発支援装置 | |
Laffra et al. | HotWire-A Visual Debugger for C++. | |
Rahman et al. | A DSL for importing models in a requirements management system | |
Jukks et al. | Transformations debugging transformations | |
Löwe et al. | Software comprehension-integrating program analysis and software visualization | |
Panas et al. | Towards the Unified Recovery Architecture for Reverse Engineering. | |
Yuan et al. | Automatic extraction of abstract-object-state machines based on branch coverage | |
JPH02275539A (ja) | デバッグ処理方式 |