JPH04181436A - デバック方式 - Google Patents

デバック方式

Info

Publication number
JPH04181436A
JPH04181436A JP2310643A JP31064390A JPH04181436A JP H04181436 A JPH04181436 A JP H04181436A JP 2310643 A JP2310643 A JP 2310643A JP 31064390 A JP31064390 A JP 31064390A JP H04181436 A JPH04181436 A JP H04181436A
Authority
JP
Japan
Prior art keywords
class
error
variable
information
executed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2310643A
Other languages
English (en)
Inventor
Tatsuo Kondo
近藤 竜生
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2310643A priority Critical patent/JPH04181436A/ja
Publication of JPH04181436A publication Critical patent/JPH04181436A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔目 次] 概要 産業上の利用分野 従来の技術 発明が解決しようとする課題 課題を解決するための手段 作用 実施例(第1図) 発明の効果 [概 要] オブジェクト指向型プログラミング言語によるソフトウ
ェア開発におけるデバック方式に関し、オブジェクト指
向型プログラミング言語におけるデバックを容易に行う
デバック方式を提供することを目的とし、 オブジェクト指向型プログラミング言語において、各オ
ブジェクトのメソッド実行時にオブジェクトの識別子、
実クラスおよびメソッド名からなるエラー探索標識を登
録し、実行中エラー発生時に前記エラー探索標識を参照
するよう構成する。
[産業上の利用分野] 本発明は、オブジェクト指向型プログラミング言語によ
るソフトウェア開発におけるデハ、タ方式に関する。
(従来の技術〕 従来の計算メカニズムでは、ある演算を行う物体にデー
タを送ると、あらかしめ定義しである演算が行われ、結
果値としてデータが返ってくるという考え方であった8
例えば、加算を行う物体に整数データ2と3を送ると5
が返されてくる。つまり、プログラムは何らかの動作を
行う演算物体とその動作に対して常に受動的なデータか
らなると考えられていた。オブジェクト指向言語(ob
ject oriented language)では
計算はオブジェクトとよばれる能動的な物体と、その間
の通信によって行われると考える。これらの言語では、
整数などのデータもすべて能動的な計算を行う物体と考
える。つまり、2というオブジェクトムこr3を加算せ
よJというメツセージ(膳essage)を送ることに
より、2というオブジェクト内で加算が行われ、その結
果(a5がメソセージの送り元へ送り返される。ここで
重要なことはr〜を加算せよ」というメツセージを解釈
できるのはある特定の性質をもったオブジェクトのみで
ある。このような特定の性質を持ったオブジェクトの集
まりをクラス(class)と呼ぶ。オブジェクトは内
部状態を持っており、あるメツセージを受は取るたびに
内部状態を変化させてゆく。つまり、オブジェクトは過
去に行った計算の履歴を保持している。メソセージが解
釈されて、どのように内部で計算が進められるかはオブ
ジェクト自身の問題で、メツセージの送り手は一切知る
必要がない。送り手は、メツセージのインタフェース、
つまりメツセージにはどういう情報(パラメータ)が必
要か、そしてどのような結果が返ってくるか(もしあれ
ば)ということを知っていればよい、また送り手は、予
め外部インタフェースとして用意されているメツセージ
の形式のみを使ってしかそのオブジェクトLこアクセス
することができない。もちろん、オブジェク1の内部状
態を変化させたり、参照したりすることもメツセージ形
式のみを使ってしか行えない。
このように情報隠蔽(information hid
ing)の考え方は、抽象データ型の考え方と同じであ
るが、オブジェクト指向型言語では、それをさらに押し
進めて、プログラム中の計算を行う要素をもオブジェク
トという一つの統一的な捉え方をする。この考え方では
、一つのクラスも一つのオブジェクトとして捉えられる
オブジェクト指向言語のきわだった特徴の一つは、クラ
ス概念である。ある共通の性質をもったオブジェクト同
士まとめられて一つのクラスとして定義される。従って
オブジェクト指向言語によるプロゲラ1.は、クラスの
定義からなる。クラスに属するオブジェクトは、そのク
ラスのインスタンス(instance)とよばれ、そ
れらは全て同し形式のメンセージを受は付け、そのメツ
セージで示された計算を行う。メソセージを受信したと
きに、どのような計算を行うかを規定した部分は、メソ
ッド(method)とよばれる。メソッドは、各クラ
ス毎に記述され、そのクラスのインスタンスとなってい
るオブジェクト内部の振る舞いを規定する。
クラスは、いわゆる集合概念の拡張であるから、クラス
間にも包含関係、つまりスーパークラス(Super 
clasS) /サブクラス(sub eiassll
の関係が存在する。例えば、整数は実数のサブクラスで
あり、整数のインスタンスは、全て実数のインスタンス
である。従って、あるクラスのインスタンスはそのスー
パークラスのインスタンスのもつ性質を受は継ぐことが
ある。つまり、受信可能なメンセージの形式とその処理
手続きであるメソッドが、そのままサブクラスに継承(
inheritance)される。
オブジェクト指向型言語では、抽象データ型言語と異な
り、クラス自身も一つのオブジェクト(C1ass o
bjectとよぶ)として捉えている。クラス自身も能
動的な物体であり、それにメソセージを送ることによっ
てクラス自身が計算を行うことができる。このようなメ
ツセージに対する処理の記述は、クラスメソソI’(c
iass s+eLhod)とよばれる。
これに対し、これまでのオブジェクトに対するメソッド
は、インスタンスメソッド(instance mes
hod)と呼ばれる。クラスは、クラスのクラス、メタ
クラス(metactass)のインスタンスであり、
クラスメソッドはメタクラスが所有するメソッドである
オブジェクト指向型言語の代表例は、SmailtaI
k−80(米国Xerox社のWM標)で、この言語は
ゼロツクPARCのケイ(A−Kay)等によって高解
像度デイスプレィとマウスといった高度の入出力機能を
備えたワークステージジン上で動く、子供の教育用言語
として設計された。その後改良が加えられ1980年に
オブジェクト指向型言語として整備された。
現在、オブジェクト指向型言語の分野の研究。
開発は、既存の言語にオブジェクト指向的な要素を導入
した言語の開発、例えば、C言語から発展したO bj
ective CやC++などの言語の開発、言語処理
系の効率的な実現方法の研究、オブジェクトの潜在的な
並列性を用いた4C列言語の開発が行われている。
[発明が解決しようとする課!!] 従来、使用されている手続き型言語や関数型言語では、
そのプログラム中のエラー(バグ)の位置や原因を特定
するために、実行状況を出力する命令をプログラム中に
挿入するなどの方法をとっている。しかし、手続き型言
語に代わる、高い情報抽象能力と記述を持ったオブジェ
クト指向型言語が登場し、頻繁に使用されるようになっ
てきているが、その利点である情報抽象能力は、記述に
際しては有効に働くが、バグの発生時にはその位1や原
因をわかりにくくするという欠点になる。
特にわかりにく・くなる原因として次の3点が挙げられ
る。
(1)オブジェクト指向パラダイムの重要な構成要素の
一つに継承というものがある。変数はあるクラスのオブ
ジェクトを格納するものとして宣言されるが、宣言時に
示されたクラスだけではなく、そのクラスと継承関係に
あるクラスのオブジェクトを格納することができる。す
なわち、変数宣言の部分だけを見ても、変数にどのクラ
スのオブジェクトが格納されているかを決定できない。
(2)クラス継承関係の活用により、オブジェクトが属
するのではないクラスのメソッドを呼び出すことができ
る。クラスが異なる時、異なる働きをするメソッドに同
じ名前を与えることができる。このため(1)項と関係
するが、現在格納されているオブジェクトのクラスを特
定できない限り、どのような機能を持つメソッドが呼ば
れているかを知ることができない。
(3)オブジェクトは、他のオブジェクトを属性の一部
として包含することができる。包含されている方のオブ
ジェクトのメソッドを実行する際は、包含する側から必
要なパラメータを与えることがあるが、このような包含
関係が多数に渡る場合には、手動で実行過程を追うのは
、大変な困難を伴うものである。
本発明は、上述の問題点に鑑みてなされたもので、オブ
ジェクト指向型プログラミング言語におけるデバックを
容易に行うデバック方式を提供することを目的とする。
〔課題を解決するための手段〕
発明の詳細な説明するのに先立ち、この構成を表現する
のに用いる用語を説明する。
宣言クラス オブジェクト識別子(以降オブジェクトIDと称する)
を格納する変数を宣言する時、そのオブジェクトのクラ
スを明示する必要がある。これを第13図を用いて説明
する。同図においてクラスParentにサブクラス(
導出クラス)としてクラスChtldlがあり、メソッ
ド−etlはクラスParenLで実現されている。ク
ラスChildlはメソッドmetlをクラスPare
ntから継承しており、クラスChiIdlでは実現さ
れていない、この場合クラスParentのオブジェク
トの10を格納する変数Xはプログラミング言語C++
では Parent ” x というように記述する。
このとき、変数Xの宣言クラスがParer+tである
と言う。また、オブジェクトlを生成しそのオブジェツ
トIDを変数Xに格納する場合衣のように表す。
x=new Parent  (); このとき、変数Xには他のクラスのオブジェク)TDを
格納することは一般にはできない。
実クラス 宣言クラスの説明で変数Xには他のクラスのオブジェク
トIDを格納することは一般にはできないとしたが、例
外があり、クラスChildlがクラスp aren 
tのサブクラスであるとき、前述の変数XはクラスCh
ildlのオブジェクトIDを格納することができる。
寅クラスとは、変数Xに格納されているオブジェクトI
Dによって示されるオブジェクトが属するクラスを言う
。第14図を用いて説明すると、クラスparentと
クラスChildlの関係は第13図で説明した場合と
同しである。
Parent ” X; は第13図で示したように変数XはクラスParer+
LのオブジェクトのIDを格納する変数を表す。
x −new Childl  () ;は りうスC
hildlのオブジェク1を一つ生成(オブジェクト2
)し、そのオブジェクl□ I +)を変数Xに入れる
ことを表す。
変数XはクラスparentのオブンエクLID格納用
に宣言されたものであるが(Jild 1はP are
ntのサブクラスなのでこのような代入が可能である。
現時点では、宣言クラスがParentである変数Xは
、実際にはクラスChildlのオブジェクトIDを保
有している。このとき変数Xの実クラスがChildl
であるという。なお、宣言クラスはプログラムの実行中
不変であるが、実クラスは変化する可能性があり、これ
がオブジェクト指向プログラミング言語でのデバックを
困難とする一要因となっている。
実現クラス オブジェクトはその属するクラスのメソッドを実行でき
るが、メソッドの中には、クラスの継承関係を利用する
ことによって、そのクラス固有のメソ、ドとして実現さ
れていないものもある。これを第15図を用いて説明す
る。クラスParentとクラスChild lの関係
は第14図と同しである。
x−>5etl ()  ; は、変数Xに格納されているオブジェクトIDによって
示されるオブジェクト(現在はオブジェクト2)のメソ
ッドである醋atlを実行することを表ず。しかし、こ
のとき、オブジェクト2が属するクラスChild l
ではsie目は実現されておらず、実際に実行されるの
は親クラスであるParentのメソッドmatlとな
る。このような場合、クラスCh11dlのメソッドa
+etlの実現クラスがParentであると言う。
r宣言クラスjと1実クラスJはオブジェクトIDを格
納している変数に対するものであるが、「実現クラスj
は呼ばれるメソッドに対するものである。
なお、デバックとは、ハゲの発生位置および発生原因を
特定し、その原因を解消することであると定義し、本発
明は、このデバ、りの内、発生位置を特定するものであ
る。
次に本発明の構成について説明する。
に記目的を達成するため、本発明のYハック方式は、オ
ブジェクト指向型プログラミング3語ζこおいて、各オ
ブジェクトのメソッド実行時にオブジェクトの識別子、
実クラスおよびメソ71′名からなるエラー探索4!1
mを登録し、実行中エラー発生時に前記エラー探索標識
を参照するようにしたものである。また、前記エラー探
索標識に、宣言クラスを加えたものである。また、前記
エラー探索標識に、メソッドの実現クラスと関係するク
ラス全てを含むクラス階層を加えたものである。
また、オブジェクトの一属性として包含されるオブジェ
クトのメソッドの実行時に、前記エラー探索標識に、そ
れらオブジェクトの包含関係も加えたものである。
〔作 用〕 ハゲの発生位置の情報として、まずどのオブジェクトの
どのメソッドを実行中であったかという情報が必要にな
る。このため、メソッドが起動される際に、まずそのメ
ソ・71′を保有するオブジェクトの識別子を登録する
ことが必要となる。さらに、メソッド名およびメソッド
の実体特定のため、オブジェクトの実クラスがわかる必
要がある。このオブジェクト識別子、メソッド名、実ク
ラスが必要不可欠な情報となる。
また、当該実クラスのオブジェクトの識別子を保存する
ように宣言した変数がなく、親および祖先クラスの識別
子格納用として宣言された変数によって当該オブジェク
トの識別子が保有されている場合、該当する変数がない
ということで、ユーザに混乱を来す恐れがある。変数の
宣言クラスを登録することにより、ソースプログラム中
でどの変数によって保持されているオブジェクト内のエ
ラーであるかをユーザに知らせることによりこの混乱の
発生を排除することができる。
また、第15図において、x −>+*etl ()を
実行中にエラーが発生した場合、オブジェクト2が属す
るクラスChildlではmetlは実現されておらず
、実際に実行されるのは、親クラスであるParent
のメソッド5etlである。この場合、クラスChil
dlを調べてもmetlはこのクラスでは実現されてい
ないということがわかるだけである。実際のエラーの発
生原因は、クラスChildlは継承によって親クラス
Parentのメソッド■etlを呼んでいるという知
識があって初めて、クラスParentのメソッド−e
tlに原因があると特定できる。このため、実現クラス
とクラス階層を登録しておくとよい。
また、オブジェクトは他のクラスのオブジェクトを属性
の一部として包含することができる。包含されている方
のオブジェクトのメソッドを実行する際には、包含する
側から必要なパラメータを与えることがあり、この包含
関係も登録することによりバグを特定しやすくなる。
〔実 施 例〕
以下、本発明の実施例を図面を参照して説明する。
第1図は、本発明の実施例の基本フロー図で、コンパイ
ラ2におけるコード生成部は、従来のコンパイラではソ
ースプログラム1に対応するコードを生成するだけであ
るが、本実施例では同時にメソッド実行時にオブジェク
トのオブジェクトID等のデハノク情報を登録するコー
ドを生成する。
このように生成された実行形式のプログラム3は実行さ
れると、情報処理装置4の記憶部にメソッド実行毎にデ
バック情報を登録する。バグ発生時にはデバック5は、
この登録されたデハノク情報を参照しながら実行過程を
再現することができるのでエラーのトレースが可能とな
る。
第3図はコンパイル時における情報登録のアルゴリズム
を示す図であり、第3図は第2図の実行状態登録命令の
挿入のステンブ詳細フロー図である。
第2図において、コンパイルしようとしている処理がオ
ブジェクトのメソッド呼び出しか調べ(ステップ20)
、呼び出しであれば、実行状態登録命令の挿入をする(
ステップ21)。この詳細は第3図に示すように呼び出
されるメソッドは、−番外側のオブジェクト(包含関係
がある場合の一番外側から包含しているオブジェクト)
が所有するものか否か判断しくステップ210)、所有
するものであればオブジェク)TD、IDを保持する変
数名、宣言クラス、実クラス、開始/終了を表に登録す
るコードを生成する(ステップ211)。また所存する
ものでなければ、呼び出されたメソッドに至るまでの全
てのメンバーのオブジェクト[D。
メンバ御名5宣言クラス、実クラス、開始/終了を表に
登録するコードを生成する(ステップ212)。
第2図に戻って、ステップ20でNoであれば、処理が
変数宣言か否か調べ(ステップ22)、Yesであれば
変数の型はクラスで1つか否か調べ(ステップ23)、
Yesであればクラス(−宣言クラス)と変数の組を変
数リストに登録する(ステップ24)、ステップ21.
ステップ24の終了後、およびステップ22.ステップ
23でNoの場合、通常のコンパイル処理を行い(ステ
ップ25)、すべての行を処理し終わったか調べ(ステ
、ブ26)、終わらない場合はステップ20に戻り、終
わった場合は終了する。
次に登録される情報についての具体例を第4図〜第12
図を用いて説明する。
第4図は、クラスAのメソッド中で別のクラスBのメソ
ッドを呼んでいる場合を示す。メソッドA  wetl
()は、同図右上側に定義されているように、クラスB
のメソッドBmetl ()を包含している。なお、網
点部のa、  bは他のメソッドの呼び出しを含まない
ものとする6以下、第5図〜第12図にメソッドA−腸
etl()の実行状態と登録されている情報の変化の関
係を示す。
第5図はメソッドA−■etl()の実行前の状態を示
す、オブジェクトTD、実クラス、メソッド名、開始/
終了の状態を示す表にはまだ登録されている情報はない
第6図はr6Jの実行前の状態で、変数Xに格納されて
いるオブジェクトID、そのオブジェクトの実クラス、
メソッド名が登録されメソッドの実行が始まる。
第7図はralの実行後の状態を示す。「aJを実行し
ても、他のメソッドの呼び出しを含まないので、登録状
況は変化しない。
第8図は)3  metlに入った直後の状態を表す。
クラスBのメソ、ドであるB  whe目の実行直前に
は、そのメソッドを持つオブジェク1−ID、およびオ
ブジェクトの実クラス、メソッド名を登録する。実クラ
スがA−BとなっているのはrクラスBのオブジェクト
がクラスAのオブジェクトに包含された形で使用されて
いるJの意味である。AとBに包含関係がない場合には
、Bだけ記述されることになる。
第9図はB  metlの実行中の状態を示す。B−m
etlがメソッドを呼んでいない限り、情報は変化しな
い、(ここでは呼んでいないと仮定する。)第10図は
B  metlの終了後の状態を示す。B−setlが
正常に終了したことが記録されている。
第11図はrblの終了後の状態を示す。rb。
には他のメソッド呼び出しがないので、情報は変化しな
い。
第12図は全体終了時の状態を示す。A〜me目の正常
終了を示す情報が記録されA  5ealが終了する。
以上は全て正常に動作した場合を示したがエラーが発生
すれば、その動作のところで止まるので、そのときの表
を調べることにより容易にエラー発生位置を特定するこ
とができる。
〔発明の効果] 以上の説明から明らかなように、本発明は、各オブジェ
クトのメソッド実行時にエラー探索Inkを登録し、実
行中エラー発生時にこのエラー探索標識を参照すること
によりエラー発生位置を特定することができる。
【図面の簡単な説明】
第1図は本発明の実施例の基本動作フロー図、第2図は
コンパイル時における情報登録のアルゴリズム、第3図
は第2図の実行状態登録命令の挿入ステップの詳細を説
明する図、第4図は本実施例において登録される情報の
説明図、第5回〜第12図は実施例においてメソ・ンド
を実施した場合の登録情報の変化を説明する図、第13
図は宣言クラスの説明図、第14図は実クラスの説明図
、第15図は実現クラスの説明図である。 図において、 ■−ソースプログラム、  2 コンパイラ。 3−実行形式プログラム、 4−情報処理装置、 5 デハノカ。 特許出願人 富士通株式会社         −−−
ニーイ、、□□□□□j  ’X−H□。、2SS\、
=・′ 第1図 コンパイル時における情報登録のアルゴリズム第2図 アルゴリズム詳細0ひ賢鵡シb1捨令の挿ん第3図 第4図 A::A metlo( 第5図 aの前 第6図 aの後 第7図 B−metlに入った直後 第8図 A::A−rne+10( B−me t lの実行中 第9図 A::A−me川)( B−metlの終了後 第10図 A::A−me電1()( bの終了後 第11図 A::A−me宜1()( 禰皓− 第12図 Parent ”x; X m n@W Parent01 宣言クラスの説明 第13図 Parent  ’x; x−newchitcHOo 実クラスの説明

Claims (1)

  1. 【特許請求の範囲】 1)オブジェクト指向型プログラミング言語において、
    各オブジェクトのメソッド実行時にオブジェクトの識別
    子、実クラスおよびメソッド名からなるエラー探索標識
    を登録し、実行中エラー発生時に前記エラー探索標識を
    参照するようにしたことを特徴とするデバック方式。 2)前記エラー探索標識に、宣言クラスを加えたことを
    特徴とする請求項1記載のデバック方式。 3)前記エラー探索標識に、メソッドの実現クラスと関
    係するクラス全てを含むクラス階層を加えたことを特徴
    とする請求項1または2記載のデバック方式。 4)オブジェクトの一属性として包含されるオブジェク
    トのメソッドの実行時に、前記エラー探索標識に、それ
    らオブジェクトの包含関係も加えたことを特徴とする請
    求項1、2、3のいずれかに記載のデバック方式。
JP2310643A 1990-11-16 1990-11-16 デバック方式 Pending JPH04181436A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2310643A JPH04181436A (ja) 1990-11-16 1990-11-16 デバック方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2310643A JPH04181436A (ja) 1990-11-16 1990-11-16 デバック方式

Publications (1)

Publication Number Publication Date
JPH04181436A true JPH04181436A (ja) 1992-06-29

Family

ID=18007719

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2310643A Pending JPH04181436A (ja) 1990-11-16 1990-11-16 デバック方式

Country Status (1)

Country Link
JP (1) JPH04181436A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07146848A (ja) * 1993-06-25 1995-06-06 Microsoft Corp 基底システムオブジェクトモデルを備えたシステム管理サービスの統合
WO2009104658A1 (ja) * 2008-02-19 2009-08-27 日本電気株式会社 情報表示装置、方法及びプログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07146848A (ja) * 1993-06-25 1995-06-06 Microsoft Corp 基底システムオブジェクトモデルを備えたシステム管理サービスの統合
WO2009104658A1 (ja) * 2008-02-19 2009-08-27 日本電気株式会社 情報表示装置、方法及びプログラム

Similar Documents

Publication Publication Date Title
US5737609A (en) Method and apparatus for testing object-oriented programming constructs
US5740440A (en) Dynamic object visualization and browsing system
Garcia et al. A comparative study of exception handling mechanisms for building dependable object-oriented software
Boyapati et al. Ownership types for safe programming: Preventing data races and deadlocks
US6272672B1 (en) Dataflow processing with events
Brockschmidt et al. Automated detection of non-termination and NullPointerException s for Java Bytecode
Reiss The Field programming environment: A friendly integrated environment for learning and development
US6199198B1 (en) Computer system, method, and article of manufacture for visualizing differences between design artifacts and object-oriented code
Andrews et al. Zing: Exploiting program structure for model checking concurrent software
WO1999046689A1 (en) Execution of extended activity diagrams by code generation
JP2006107477A (ja) コンポーネント化された拡張可能なワークフローモデル
JPH08504526A (ja) コンピュータにてオブジェクト指向プログラムの少なくとも1つのクラスのテストをする方法
Reimer et al. Saber: Smart analysis based error reduction
US20060101420A1 (en) Programming language support for integrating undo and exception handling
Kolahdouz-Rahimi et al. A comparison of quality flaws and technical debt in model transformation specifications
Kundu et al. An approach to convert XMI representation of UML 2. x interaction diagram into control flow graph
Sampaio et al. A trusted infrastructure for symbolic analysis of event-driven web applications
JPH04181436A (ja) デバック方式
Sharp et al. Static analysis of object references in RMI-based Java software
Crane et al. Towards a formal account of a foundational subset for executable UML models
Boyapati et al. A type system for preventing data races and deadlocks in Java programs
Burnett et al. Exception handling in the spreadsheet paradigm
Li et al. Sheep cloning with ownership types
Attali et al. Graphical visualization of Java objects, threads, and locks
Nonaka et al. A run-time deadlock detector for concurrent Java programs