JP2006338399A - プログラム開発装置、プログラム開発ソフトウェア及び記憶媒体 - Google Patents

プログラム開発装置、プログラム開発ソフトウェア及び記憶媒体 Download PDF

Info

Publication number
JP2006338399A
JP2006338399A JP2005163156A JP2005163156A JP2006338399A JP 2006338399 A JP2006338399 A JP 2006338399A JP 2005163156 A JP2005163156 A JP 2005163156A JP 2005163156 A JP2005163156 A JP 2005163156A JP 2006338399 A JP2006338399 A JP 2006338399A
Authority
JP
Japan
Prior art keywords
library
source code
code
mounting information
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
Application number
JP2005163156A
Other languages
English (en)
Inventor
Kunimasa Fujisawa
邦匡 藤澤
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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP2005163156A priority Critical patent/JP2006338399A/ja
Publication of JP2006338399A publication Critical patent/JP2006338399A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】 より品質の高いソースコードの作成を行うことを可能にすることを目的とする。
【解決手段】 開発ターゲットとなる機器を指定する機器指定手段と、機器ごとにライブラリがどこまで実装されているかを記録するライブラリ実装情報を記憶するライブラリ実装情報記憶手段と、機器指定手段で指定された機器のライブラリ実装情報を読み込むライブラリ実装情報読込み手段と、ソースコードを編集するソースコード編集手段と、ソースコード編集手段で入力されたプログラムコードがライブラリ実装情報に実装されていると記録されているか否かを判断するコード評価手段と、入力されたソースコードがライブラリ実装情報に実装されていないと記録されていたときにエラー表示を行うエラー表示手段と、を有することによって上記課題を解決する。
【選択図】 図2

Description

本発明は、プログラム開発装置、プログラム開発ソフトウェア及び記憶媒体に関する。
(ソフトウェア追加可能な組込み機器の増加)
従来の複合複写機やプリンタといった組込み機器のソフトウェアは、製造時に組込み機器にインストールされ、固定されたソフトウェアであり、個々のユーザがユーザの業務に合わせて後からソフトウェアを追加するということはできなかった。しかし、近年、複合複写機やプリンタにJava(登録商標)言語等を搭載し、それらソフトウェアプラットフォーム上で動作するソフトウェアをユーザの用途に応じてインストールし、使用するといったことが可能になっている。代表的なものとしてCanon(登録商標)のMEAP(登録商標)が挙げられる。
(ソフトウェア開発環境)
現在、ソフトウェアの開発は統合開発環境(IDE)と呼ばれるツール上で行われることが多くなっている。IDEはソースコードを作成するエディタ、コンパイラ、デバッガ、GUIの設計をおこなうGUIエディタなどから構成され、一つのIDE上でソースコードの編集、コンパイル、デバッグを統一的に行うことが可能である。
さらに、IDEを構成するエディタの中にはソースコードの補完機能を持つものもある。
補完機能とはユーザが途中まで入力した文字列にマッチするクラス、メソッド(関数)、変数、定数をクラスライブラリから探し出し自動的に入力したり、入力候補をユーザに提示したりする機能である。
さらに、補完機能の一つとしてユーザによって記述されたメソッドが例外を発生するものである場合、例外処理ブロックを付加したり、制御構造を入力する場合に括弧の対応を自動的にとったりする機能を持つエディタもある。
そういった補完機能をもつエディタを含むIDEとしてEclipse(eclipse.orgで開発されているオープンソースの統合開発環境)などが上げられる。
さらに複数の機器向けのソフトウェア開発を支援する従来技術として、特許文献1及び特許文献2がある。特許文献1及び特許文献2の技術は、コードの骨組みとデータベース等に補完されたコード断片からソースコードを自動生成するものである。また、ソースコードのチェックに関する従来技術として、特許文献3がある。
特開平5−158673号公報 特開平9−204302号公報 特開平11−259280号公報
組込み機器のソフトウェア開発において、同一の開発環境上で同時に複数の異なった機器向けのソフトウェアを開発することは多い、その一方、組込み機器では機器ごとのライブラリは、図1にようにAPIで定義されているクラスや、定数、メソッドを実際には実装していないことがある。
ライブラリαは機器iR XXXX、機器iR YYYY、機器iR ZZZZに共通に提供されているライブラリである、ライブラリのAPI部分は共通であるが、機器の機能の差などのため実装部分は異なり、機器によっては実際には実装されていない部分があることを図1は示している。
そのため、従来のIDEを使用してソフトウェアの開発を行うと、コンパイル時にはエラーをださずにコンパイル可能であったソフトウェアが、APIでは定義されているが実際には実装されていない定数やメソッドを使用していた場合、実際に機器で動作させた時にソフトウェアは正常に動作しない問題があった。
そのため、開発者はライブラリがどこまで実装されているかを機器ごとに把握してプログラムを作成しなくてはならず、同一の開発環境上で同時に複数の異なった機器向けのソフトウェアを開発することが困難であった。また、ソフトウェアのテストにおいてもライブラリがどこまで実装されているかを考えてテスト項目を構成する必要があり、テスト工数を増大させる原因になっていた。したがって、品質の高いソースコード(又はプログラム)の作成を行うが困難な問題があった。
本発明は上記の点に鑑みなされたもので、より品質の高いソースコードの作成を行うことを可能にすることを目的とする。
そこで、上記問題を解決するため、本発明は、開発ターゲットとなる機器を指定する機器指定手段と、機器ごとにライブラリがどこまで実装されているかを記録するライブラリ実装情報を記憶するライブラリ実装情報記憶手段と、前記機器指定手段で指定された機器のライブラリ実装情報を読み込むライブラリ実装情報読込み手段と、ソースコードを編集するソースコード編集手段と、前記ソースコード編集手段で入力されたプログラムコードが前記ライブラリ実装情報に実装されていると記録されているか否かを判断するコード評価手段と、入力されたソースコードが前記ライブラリ実装情報に実装されていないと記録されていたときにエラー表示を行うエラー表示手段と、を有することを特徴とするプログラム開発装置等、を提供する。
本発明によれば、開発ターゲットとなる機器を指定する機器指定手段と、機器ごとにライブラリがどこまで実装されているかを記録するライブラリ実装情報を記憶するライブラリ実装情報記憶手段と、前記機器指定手段で指定された機器のライブラリ実装情報を読み込むライブラリ実装情報読込み手段と、ソースコードを編集するソースコード編集手段と、前記ソースコード編集手段で入力されたプログラムコードが前記ライブラリ実装情報に実装されていると記録されているか否かを判断するコード評価手段と、入力されたソースコードが前記ライブラリ実装情報に実装されていないと記録されていたときにエラー表示を行うエラー表示手段と、を有することにより、例えばターゲットとなる機器で実装されていなクラスや変数、定数、メソッドをユーザが入力した場合、エラーを通知したり、実行時に機器ごとの切り分けを行う制御構造をソースコードに追加したり、入力補完のときに補完候補としてターゲットとなる機器で実装されているクラスや変数、定数、メソッドのみをあげることにより、ターゲットとなる機種で使用できないクラスや変数、定数、メソッドをプログラムで使用しないことや、機器によって実行時に使用するクラスや変数、定数、メソッドを制御することが可能になるので、より品質の高いソースコードの作成を行うことを可能にすることができる。
本発明によれば、より品質の高いソースコードの作成を行うことを可能にすることができる。
以下、本発明の実施の形態について図面に基づいて説明する。
本発明の第1の実施例のIDEは図2のように、ターゲットとなる機器を指定する機器指定部(101)、ライブラリ実装情報を記憶しているライブラリ実装情報記憶部(102)、機器指定部(101)で指定された機器用のライブラリ実装情報を読み込む実装情報読込み部(103)、ソースコードの編集を行うコード編集部(104)、ユーザによって入力されたコードがライブラリ実装情報に合致しているかを評価するコード評価部(105)、ユーザによって入力されたコードがライブラリ実装情報に合致していない場合にエラー表示をおこなうエラー表示部(106)から構成される。
以後、開発言語がJava(登録商標)言語であるとして実施例を記述する。但しこのことは、本発明の実施を制限するものではない。
まずライブラリ実証情報について説明する。ライブラリ実装情報記憶部(102)にはライブラリAPIで定義されたクラスや、変数、定数、メソッドがどこまで実装されているかを示すライブラリ実装情報が機器ごとに記憶されている。
ライブラリ実装情報は図3のような、APIで定義されたクラスや、定数、メソッド一つ一つに対して実装されているかどうかを記述したテーブルである。
図3では機器iR XXXX用ライブラリαではクラスAが実装されており、さらにクラスAでは定数CONST_A、定数CONST_B、メソッドmethod_A、メソッドmethod_Cは実装されているが、定数CONST_C、メソッドmethod_Bは実装されておらず、クラスBは実装されていないことを示し、機器iR YYYY用ライブラリαではクラスAが実装されており、さらにクラスAでは定数CONST_A、定数CONST_C、メソッドmethod_A、メソッドmethod_B、メソッドmethod_Cは実装されているが、定数CONST_Bは実装されておらず、クラスBが実装されており、さらにクラスBでは定数CONST_BA、メソッドmethod_BAが実装されていることを示し、機器iR ZZZZ用ライブラリαではクラスAが実装されており、さらにクラスAでは定数CONST_A、メソッドmethod_Aは実装されているが、定数CONST_B、定数CONST_C、メソッドmethod_B、メソッドmethod_Cは実装されておらず、クラスBは実装されていないことを示している。
ライブラリ実装情報の読込み処理について図4を使って説明する。IDEが起動されると、実装情報読込み部(103)はライブラリ実装情報記憶部(102)を検索しライブラリ実装情報の提供されている機器のリストを作成し(ステップ401)、ユーザによって開発ターゲットとなる機器が指定されるのを待つ。
ユーザによって開発ターゲットとなる機器が指定される(ステップ402)と、実装情報読込み部(103)はライブラリ実装情報記憶部(102)から指定された機器のライブラリ実装情報の読み込み(ステップ403)処理を終了する。
ユーザによってコード編集部(104)でソースコードが入力されるとコード評価部(105)では図5のようなフローチャートに従い処理が実行される。
まず、IDEはステップ601でユーザによってコード編集部(104)でソースコードが入力されるのを待っている(ステップ601)。ユーザによってコードが入力されるとコード評価部(105)は、入力行が「aaa.bbb」か「ccc」であるか、つまり「クラス(オブジェクト).メソッド(定数)」か「クラス(オブジェクト)」という形式になっているか、を調べるためコードのパースを行う(ステップ602)。
コード評価部(105)は、入力行が「aaa.bbb」の形式であればステップ613に、「ccc」の形式であればステップ604へ遷移する(ステップ603)。
コード評価部(105)は、ステップ603で「ccc」の形式であれば、クラスライブラリの中に「ccc」というクラスが存在するかを検索する(ステップ604)。コード評価部(105)は、ライブラリに「ccc」というクラスがあればステップ609に、なければステップ606に遷移する(ステップ605)。
コード評価部(105)は、ステップ605でライブラリに「ccc」というクラスが存在しなければ、「ccc」が編集中のソースコードのクラスで定義している変数もしくは定数であるかを調べ、変数もしくは定数であればステップ607に、変数でも定数でもなければステップ628に遷移する(ステップ606)。
コード評価部(105)は、ステップ606で「ccc」が編集中のソースコードのクラスで定義している変数もしくは定数であった場合はその変数、定数のクラスを取得し、取得したクラスがクラスライブラリの中に存在するかを検索する(ステップ607)。
コード評価部(105)は、取得したクラスがクラスライブラリのなかに存在すればステップ609に遷移し、存在しなければステップ628に遷移する(ステップ608)。
コード評価部(105)は、ステップ604、607で決定したクラスをキーにターゲットとなる機器の実装情報を検索する(ステップ609)。
コード評価部(105)は、実装情報が存在しなければステップ630に遷移しユーザの次の入力を待つ、存在すればステップ611に遷移する(ステップ610)。
コード評価部(105)は、ステップ610で実装情報が存在したら、実証情報の内容を調べ実装されていたらステップ630に遷移しユーザの次の入力を待つ、実装されていなかったらステップ612に遷移する(ステップ611)。
ステップ611でクラスが実装されていないとコード評価部(105)が判断した場合、そのクラスはターゲットとなる機器のライブラリでは実装されていないので、エラー表示部(106)は図6のようにユーザに対して未実装であるとエラー表示を行い(ステップ612)、ステップ630に遷移しユーザの次の入力を待つ。
コード評価部(105)は、ステップ606で「ccc」が変数でないと判断した、もしくはステップ608でライブラリに該当するクラスが無かった場合、「ccc」が編集中のソースコードで定義されるクラスまたはそのクラスで定義されるメソッドや内部クラスの型の変数・定数であるかを調べ(ステップ628)、そうであればステップ630に遷移しユーザの次の入力を待つ、そうでなければ定義されていないクラス、定義されていないクラスのメソッド、変数、定数であるとエラー表示部(106)にエラー表示を行わせ(ステップ629)、ステップ630に遷移しユーザの次の入力を待つ。
コード評価部(105)は、ステップ603で入力行が「aaa.bbb」の形式であると判断すると、入力行の「aaa」の部分をクラスであると仮定し、クラスライブラリの中に「aaa」というクラスが存在するかを検索する(ステップ613)。コード評価部(105)は、ライブラリに「aaa」というクラスがあればステップ617に、なければステップ631に遷移する(ステップ614)。
コード評価部(105)は、ステップ614でライブラリに「aaa」というクラスが存在しなければ、「aaa」が編集中のソースコードのクラスで定義しているメソッド、変数もしくは定数であるかを調べ、そうであればステップ615に、そうでなければステップ632に遷移する(ステップ631)。
コード評価部(105)は、ステップ631で「aaa」が編集中のソースコードのクラスで定義しているメソッド、変数もしくは定数であった場合はそのメソッド、変数、定数の定義されているクラスを取得し、取得したクラスがクラスライブラリの中に存在するかを検索する(ステップ615)。
コード評価部(105)は、取得したクラスがクラスライブラリのなかに存在すればステップ617に遷移し、存在しなければステップ632に遷移する(ステップ616)。
コード評価部(105)は、ステップ631で「aaa」が変数でないと判断した、もしくはステップ616でライブラリに該当するクラスが無かった場合、「aaa」が編集中のソースコードで定義されるクラスまたはそのクラスで定義されるメソッドや内部クラスの型の変数・定数であるかを調べ(ステップ632)、そうであればステップ630に遷移しユーザの次の入力を待つ、そうでなければ定義されていないクラス、定義されていないクラスのメソッド、変数、定数であるとエラー表示部(106)にエラー表示を行わせ(ステップ627)、ステップ630に遷移しユーザの次の入力を待つ。
コード評価部(105)は、ステップ613、615で決定したクラスをキーに、ターゲットとなる機器の実装情報のクラスを検索する(ステップ617)。
コード評価部(105)は、実装情報が存在しなければステップ630に遷移しユーザの次の入力を待つ、存在すればステップ619に遷移する(ステップ618)。
コード評価部(105)は、ステップ618で実装情報が存在したら、実証情報の内容を調べ実装されていたらステップ620に遷移する、実装されていなかったらステップ625に遷移する(ステップ619)。
コード評価部(105)は、ステップ620では「bbb」がステップ613、615で決定したクラスで定義されている定数、変数、メソッドであるかを調べる(ステップ620)。
コード評価部(105)は、そうであればステップ622に遷移する、そうでなければステップ626に遷移し定義されない定数、変数、メソッドであるとエラー表示部(106)にエラー表示を行わせ(ステップ626)、ステップ630に遷移しユーザの次の入力を待つ。
コード評価部(105)は、ステップ622では「bbb」をキーに実装情報を検索する(ステップ622)。コード評価部(105)は、「bbb」が検索情報に存在しなければステップ630に遷移しユーザの次の入力を待ち、存在すればステップ624に遷移する(ステップ623)。
コード評価部(105)は、ステップ624では実証情報の内容を調べ実装されていたらステップ630に遷移しユーザの次の入力を待つ、実装されていなかったらステップ625に遷移する(ステップ611)。
ステップ625ではエラー表示部(106)が、図6のようにターゲットとなる機器用ライブラリでは実装されていないクラス、定数、変数、メソッドであるとの表示をおこない(ステップ625)、ステップ630に遷移しユーザの次の入力をまつ。
以上のフローチャートの処理を実行することにより、ユーザの入力したコードをリアルタイムにターゲットとなる機器用のライブラリで実際に実装されているかどうかのチェックを行うことを可能にし、より品質の高いソースコードの作成を行うことが可能になる。
本発明の第2の実施例のIDEは図7のように、ターゲットとなる機器を指定する機器指定部(101)、ライブラリ実装情報を記憶しているライブラリ実装情報記憶部(102)、機器指定部(101)で指定された機器用のライブラリ実装情報を読み込む実装情報読込み部(103)、ソースコードの編集を行うコード編集部(104)、ユーザによって入力されたコードがライブラリ実装情報に合致しているかを評価するコード評価部(105)、ユーザによって入力されたコードがライブラリ実装情報に合致していない場合にエラー表示をおこなうエラー表示部(106)、実行制御ブロックをソースコードに追加する指示を受ける実行制御ブロック追加指示部(1201)、ユーザの指示により実行制御ブロックをソースコードに追加する実行制御ブロック部(1202)から構成される。
以後、開発言語がJava(登録商標)言語であるとして実施例を記述する。但しこのことは、本発明の実施を制限するものではない。なお、ライブラリ実証情報の説明、及びライブラリ実装情報の読込み処理の説明は実施例1と同じなので省略する。
ユーザによってコード編集部(104)でソースコードが入力されるとコード評価部(105)では図8のようなフローチャートに従い処理が実行される。
まず、IDEはステップ701でユーザによってコード編集部(104)でソースコードが入力されるのを待っている(ステップ701)。ユーザによってコードが入力されるとコード評価部(105)は、入力行が「aaa.bbb」か「ccc」であるか、つまり「クラス(オブジェクト).メソッド(定数)」か「クラス(オブジェクト)」という形式になっているか、を調べるためコードのパースを行う(ステップ702)。
コード評価部(105)は、入力行が「aaa.bbb」の形式であればステップ717に、「ccc」の形式であればステップ704へ遷移する(ステップ703)。
コード評価部(105)は、ステップ703で「ccc」の形式であれば、クラスライブラリの中に「ccc」というクラスが存在するかを検索する(ステップ704)。コード評価部(105)は、ライブラリに「ccc」というクラスがあればステップ709に、なければステップ706に遷移する(ステップ705)。
コード評価部(105)は、ステップ705でライブラリに「ccc」というクラスが存在しなければ、「ccc」が編集中のソースコードのクラスで定義している変数もしくは定数であるかを調べ、変数もしくは定数であればステップ707に、変数でも定数でもなければステップ736に遷移する(ステップ706)。
コード評価部(105)は、ステップ706で「ccc」が編集中のソースコードのクラスで定義している変数もしくは定数であった場合はその変数、定数のクラスを取得し、取得したクラスがクラスライブラリの中に存在するかを検索する(ステップ707)。
コード評価部(105)は、取得したクラスがクラスライブラリのなかに存在すればステップ709に遷移し、存在しなければステップ736に遷移する(ステップ708)。
コード評価部(105)は、ステップ704、707で決定したクラスをキーに、ターゲットとなる機器の実装情報を検索する(ステップ709)。
コード評価部(105)は、実装情報が存在しなければステップ738に遷移しユーザの次の入力を待つ、存在すればステップ711に遷移する(ステップ710)。
コード評価部(105)は、ステップ710で実装情報が存在したら、実証情報の内容を調べ実装されていたらステップ738に遷移しユーザの次の入力を待つ、実装されていなかったらステップ712に遷移する(ステップ711)。
ステップ711でコード評価部(105)が、クラスは実装されていないと判断すると、エラー表示部(106)は図9のようにそのクラスはターゲットとなる機器のライブラリでは実装されていないというエラー表示、およびユーザに対してターゲットである機種では入力行のコードが実施されないようにする実行制御ブロック追加メニューの表示を行い(ステップ712)、実行制御ブロック追加指示部(1201)はユーザの入力を待つ(ステップ713)。
実行制御ブロック追加指示部(1201)はユーザの入力が実行制御ブロックの追加指示であるかを判断し(ステップ714)、追加指示でなければエラー表示部(106)は、クラスはターゲットとなる機器のライブラリでは実装されていないというエラー表示を行い(ステップ716)、ステップ738に遷移しユーザの次の入力を待つ。ユーザによって実行制御ブロックの追加指示があった場合は、実行制御ブロック追加部(1202)は図10のようにソースコードに実行制御を追加して(ステップ715)、ステップ738に遷移しユーザの次の入力を待つ。
コード評価部(105)は、ステップ706で「ccc」が変数でないと判断した、もしくはステップ708でライブラリに該当するクラスが無かった場合、「ccc」が編集中のソースコードで定義されるクラスまたはそのクラスで定義されるメソッドや内部クラスの型の変数・定数であるかを調べ(ステップ736)、そうであればステップ738に遷移しユーザの次の入力を待つ、そうでなければ定義されていないクラス、定義されていないクラスのメソッド、変数、定数であるとエラー表示部(106)にエラー表示を行わせ(ステップ737)、ステップ738に遷移しユーザの次の入力を待つ。
コード評価部(105)は、ステップ703で入力行が「aaa.bbb」の形式であると判断すると、入力行の「aaa」の部分をクラスであると仮定し、クラスライブラリの中に「aaa」というクラスが存在するかを検索する(ステップ717)。コード評価部(105)は、ライブラリに「aaa」というクラスがあればステップ721に、なければステップ739に遷移する(ステップ718)。
コード評価部(105)は、ステップ718でライブラリに「aaa」というクラスが存在しなければ、「aaa」が編集中のソースコードのクラスで定義しているメソッド、変数もしくは定数であるかを調べ、そうであればステップ719に、そうでなければステップ740に遷移する(ステップ739)。
コード評価部(105)は、ステップ739で「aaa」が編集中のソースコードのクラスで定義している変数もしくは定数であった場合はその変数、定数のクラスを取得し、取得したクラスがクラスライブラリの中に存在するかを検索する(ステップ719)。
コード評価部(105)は、取得したクラスがクラスライブラリのなかに存在すればステップ721に遷移し、存在しなければステップ740に遷移する(ステップ720)。
コード評価部(105)は、ステップ739で「aaa」が変数でないと判断した、もしくはステップ720でライブラリに該当するクラスが無かった場合、「aaa」が編集中のソースコードで定義されるクラスまたはそのクラスで定義されるメソッドや内部クラスの型の変数・定数であるかを調べ(ステップ740)、そうであればステップ738に遷移しユーザの次の入力を待つ、そうでなければ定義されていないクラス、定義されていないクラスのメソッド、変数、定数であるとエラー表示部(106)にエラー表示を行わせ(ステップ735)、ステップ738に遷移しユーザの次の入力を待つ。
コード評価部(105)は、ステップ718、719で決定したクラスをキーとしてターゲットとなる機器の実装情報を検索する(ステップ721)。
コード評価部(105)は、実装情報が存在しなければステップ738に遷移しユーザの次の入力を待つ、存在すればステップ723に遷移する(ステップ722)。
コード評価部(105)は、ステップ722で実装情報が存在したら、実証情報の内容を調べ実装されていたらステップ724に遷移する、実装されていなかったらステップ729に遷移する(ステップ723)。
コード評価部(105)は、ステップ724では「bbb」がステップ717、719で決定したクラスで定義された定数、変数、メソッドであるかを調べる(ステップ725)。
コード評価部(105)は、そうであればステップ726に遷移する、そうでなければステップ733に遷移し定義されない定数、変数、メソッドであるとエラー表示部(106)にエラー表示を行わせ(ステップ733)、ステップ738に遷移しユーザの次の入力をまつ。
コード評価部(105)は、ステップ726では「bbb」をキーにターゲットとなる機器の実装情報を検索する(ステップ726)。コード評価部(105)は、「bbb」が検索情報に存在しなければステップ738に遷移しユーザの次の入力を待ち、存在すればステップ728に遷移する(ステップ727)。
コード評価部(105)は、ステップ728では実証情報の内容を調べ実装されていたらステップ738に遷移しユーザの次の入力を待つ、実装されていなかったらステップ729に遷移する(ステップ728)。
ステップ729ではエラー表示部(106)は図9のようにそのクラスはターゲットとなる機器のライブラリでは実装されていないというエラー表示、およびユーザに対してターゲットである機種では入力行のコードが実施されないようにする実行制御ブロック追加メニューの表示を行い(ステップ729)、実行制御ブロック追加指示部(1201)はユーザの入力を待つ(ステップ730)。
実行制御ブロック追加指示部(1201)はユーザの入力が実行制御ブロックの追加指示であるかを判断し(ステップ731)、追加指示でなければエラー表示部(106)は、クラスはターゲットとなる機器のライブラリでは実装されていないというエラー表示を行い(ステップ734)、ステップ738に遷移しユーザの次の入力を待つ。ユーザによって実行制御ブロックの追加指示があった場合は、実行制御ブロック追加部(1202)は図10のようにソースコードに実行制御を追加して(ステップ732)、ステップ738に遷移しユーザの次の入力を待つ。
以上のフローチャートの処理を実行することにより、ユーザの入力したコードがターゲットとなる機器用のライブラリで実際に実装されているかどうかのチェックを行い、ターゲットの機器用ライブラリでは実装されていないAPIを使用したときは、ターゲットの機器で実行時は該当コードの部分を実行しないようにする実行制御ブロックを簡単に挿入することを可能にしてより品質の高いソースコードの作成を行うことが可能になる。
本発明の第3の実施例のIDEは図11のように、ターゲットとなる機器を指定する機器指定部(101)、ライブラリ実装情報を記憶しているライブラリ実装情報記憶部(102)、機器指定部(101)で指定された機器用のライブラリ実装情報を読み込む実装情報読込み部(103)、ソースコードの編集を行うコード編集部(104)、ユーザによって入力されたコードがライブラリ実装情報に合致する補完候補リストを生成する補完候補生成部(1301)、補完候補生成部で生成された補完候補を表示する補完候補表示部(1302)とユーザの指示により補完候補を選択する補完候補選択部(1303)補完候補リストから選択されたコードの補完を行うコード補完部(1304)から構成される。
以後、開発言語がJava(登録商標)言語であるとして実施例を記述する。但しこのことは、本発明の実施を制限するものではない。なお、ライブラリ実証情報の説明、及びライブラリ実装情報の読込み処理の説明は実施例1と同じなので省略する。
ユーザによってコード編集部(104)でソースコードが入力されると補完候補生成部(1301)では、図12のようなフローチャートに従い処理が実行される。
まず、IDEはステップ801でユーザによってコード編集部(104)でソースコードが入力されるのを待っている(ステップ801)。ユーザによってコードが入力されると補完候補生成部(1301)は、入力行が「aaa.bbb」か「ccc」であるか、つまり「クラス(オブジェクト).メソッド(定数)」か「クラス(オブジェクト)」という形式になっているか、を調べるためコードのパースを行う(ステップ802)。
補完候補生成部(1301)は、入力行が「aaa.bbb」の形式であればステップ804に、「ccc」の形式であればステップ807へ遷移する(ステップ803)。
補完候補生成部(1301)は、ステップ803で入力行が「aaa.bbb」の形式であると判断すると、入力行の「aaa」の部分をクラスであると仮定し、クラスライブラリの中に「aaa」というクラスが存在するかを検索する(ステップ804)。補完候補生成部(1301)は、ライブラリに「aaa」というクラスがあればステップ809に、なければステップ806に遷移する(ステップ805)。
補完候補生成部(1301)は、ステップ806では「aaa」が、ユーザが編集中のソースコードで定義されているクラスの変数であるかを調べ、そうであればステップ807に遷移する、そうでなければステップ801に遷移しユーザの入力を待つ(ステップ806)。
補完候補生成部(1301)は、「aaa」が、ユーザが編集中のソースコードで定義されているクラスの変数であれば、変数のクラスを取得し、取得したクラスでクラスライブラリの検索を行う(ステップ807)。
補完候補生成部(1301)は、クラスライブラリを検索した結果、クラスがあればステップ809に遷移する、なければステップ801に遷移しユーザの入力を待つ(ステップ808)。
候補リストは図13で示されているように「候補文字列(1401)」、「種別(1402)」、「クラス情報(1403)」から構成されるリストである。
「候補文字列(1401)」にはソースコードを補完する候補文字列が記憶される。「種別(1402)」には候補文字列がクラスであるか、編集中のソースコードで定義されるクラスで定義されるメソッドであるか、ライブラリに含まれるクラスで定義されている変数・定数・メソッドであるかを区別する識別子が記憶される。「クラス情報(1403)」には「種別(1402)」がライブラリに含まれるクラスで定義されている変数・定数・メソッドであった場合にそれらを定義しているクラス名が記憶される。
補完候補生成部(1301)は、ステップ809ではステップ804、807で決定したクラスに「bbb」で始まるメソッド、変数、定数が定義されているかを検索する(ステップ809)。
補完候補生成部(1301)は、メソッド、変数、定数が定義されているかを調べ(ステップ810)、定義されていれば、候補文字列としてメソッド、変数、定数の文字列(1407)と種別情報として「メソッド、変数、定数」(1408)、クラス情報として「aaa」のクラス名またはステップ707で取得したクラス名(1409)を候補リストに追加してステップ812に遷移する(ステップ811)。このとき候補として追加する「bbb」で始まるメソッド、変数、定数は複数であっても良い。補完候補生成部(1301)は、定義されていなければステップ812に遷移する。
補完候補生成部(1301)は、ステップ812では候補リストが空であるかを調べ空ならステップ801に遷移しユーザの入力を待ち、空でなければステップ823に遷移する(ステップ806)。
補完候補生成部(1301)は、ステップ803で入力行が「ccc」の形式であった場合、「ccc」で始まるクラスをクラスライブラリから検索する(ステップ813)。
補完候補生成部(1301)は、ライブラリに該当するクラスがあればステップ815に遷移する。補完候補生成部(1301)は、無ければステップ816に遷移する(ステップ814)。
補完候補生成部(1301)は、ライブラリに該当するクラスがあれば候補リストに候補文字列としてそのクラス名(1404)と種別として「クラス」(1405)を追加する(ステップ815)。このとき追加する候補のクラスは複数あっても良い。
補完候補生成部(1301)は、ライブラリに該当するクラスが無ければ、「ccc」が、ユーザが編集中のソースコードで定義しているローカルなメソッド、であるかを調べる。補完候補生成部(1301)は、ローカルなメソッドでなければステップ801に遷移しユーザの入力を待ち、ローカルなメソッドであればステップ817に遷移する(ステップ816)。
補完候補生成部(1301)は、ステップ817では候補リストに、候補文字列としてメソッド文字列(1410)と種別情報として「ローカルメソッド」(1411)を追加する。
補完候補生成部(1301)は、ステップ818では、「ccc」が、ユーザが編集中のソースコードで定義しているクラスの変数、定数であるかを調べる。補完候補生成部(1301)は、変数、定数でなければステップ801に遷移しユーザの入力を待ち、変数、定数であればステップ819に遷移する(ステップ818)。
補完候補生成部(1301)は、ステップ819では「ccc」を定義するクラスを取得し、そのクラスをキーとしてクラスライブラリの検索を行う(ステップ819)。
補完候補生成部(1301)は、ライブラリに該当するクラスが無ければ、ステップ801に遷移しユーザの入力を待ち、ライブラリに該当するクラスがあればステップ821に遷移する(ステップ820)。
補完候補生成部(1301)は、ステップ821では変数、定数の文字列(1407)と、種別情報として「メソッド、変数、定数」(1408)と、クラス情報としてステップ819で取得したクラス名(1409)とを候補リストに追加する(ステップ821)。
補完候補生成部(1301)は、ステップ822では候補リストが空であるかを調べ空ならステップ801に遷移しユーザの入力を待ち、空でなければステップ823に遷移する(ステップ822)。
次に、補完候補生成部(1301)は、候補リストから順序リストを生成する(ステップ823)。順序リストとは、繰り返し処理で次の要素を返す機能と繰り返し処理でさらに要素があるかを返す機能をもつリストのことである。
補完候補生成部(1301)は、生成した順序リストから次の要素を取得する(ステップ824)。補完候補生成部(1301)は、実装情報を取得する(ステップ825)。実装情報の取得(ステップ825)の詳細な処理を図14で説明する。
補完候補生成部(1301)は、ステップ824で取得した要素の種別がクラスであるかを調べ(ステップ1501)、クラスであれば取得した要素の候補文字列をキーに実装情報を検索し実装情報を取得する(ステップ1502)。補完候補生成部(1301)は、クラスでなければ取得した要素がクラス情報を持っているかを調べ(ステップ1503)、クラス情報を持っていればそのクラス名のクラスの実装情報を候補文字列のメソッド、変数、定数をキーに検索し実装情報を取得する(ステップ1504)。補完候補生成部(1301)は、もっていなければ実装情報の取得はおこなわない。補完候補生成部(1301)は、処理が終了すると図12のステップ826に遷移する。
補完候補生成部(1301)は、ステップ825で実装情報が取得できたかを調べる(ステップ826)。補完候補生成部(1301)は、取得できなかった場合はステップ829に遷移する、取得できた場合はステップ827に遷移する。
補完候補生成部(1301)は、ステップ827ではステップ825で取得した実装情報からターゲットとなっている機器で実装されているかどうかを調べる(ステップ827)。補完候補生成部(1301)は、実装されていればステップ829に遷移する。補完候補生成部(1301)は、実装されていなければ候補リストからステップ824で取得した要素を削除し(ステップ828)、ステップ829に遷移する。
補完候補生成部(1301)は、ステップ829では順序リストに繰り返し処理でさらに要素があるか否かを調べ(ステップ829)、もう要素が無ければステップ830に遷移する、あればステップ824に遷移する。
補完候補表示部(1302)はステップ830で図15に示されるような補完候補リストを表示し(ステップ830)、補完候補選択部(1303)はユーザの入力を待つ(ステップ831)。
補完候補生成部(1301)は、ユーザの入力があると、入力が候補選択指示であるかを調べ(ステップ832)、候補選択指示でなければステップ802に遷移して、新たに入力された文字列のパース及び候補リストの作成をおこなう。
入力が候補選択指示であればコード補完部(1304)はユーザの編集しているソースコードの補完対象文字列を選択された補完候補文字列で置き換え(ステップ833)、ステップ801に遷移して次のユーザの入力を待つ。
以上の処理を実行することにより、IDEがユーザの入力したコードを補完する場合にターゲットの機器で実装されているAPIのみを候補として表示することにより、ターゲットの機器で実装されていないAPIを入力しないようにすることを可能にしてより品質の高いソースコードの作成を行うことが可能になる。
上述したように、本発明によれば、ターゲットとなる機器で実装されていなクラスや変数、定数、メソッドをユーザが入力した場合、エラーを通知したり、実行時に機器ごとの切り分けを行う制御構造をソースコードに追加したり、入力補完のときに補完候補としてターゲットとなる機器で実装されているクラスや変数、定数、メソッドのみをあげることにより、ターゲットとなる機種で使用できないクラスや変数、定数、メソッドをプログラムで使用しない、機器によって実行時に使用するクラスや変数、定数、メソッドを制御することが可能になる。
また、本発明によれば、本発明に係る機能を用いてソフトウェアの開発を行うことにより、同時に複数の異なった機器向けのソフトウェアの開発・テストの工数を削減することができる。
以上、本発明の好ましい実施例について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
なお、上述したIDE等は、例えば情報処理装置(PC(Personal Computer))等に実装され、IDE等の機能を実現する又は上述したフローチャートの処理をCPU(Central Processing Unit)等に実行させるソフトウェア(又はプログラム)は例えば情報処理装置のHD等に保管されている。このようなソフトウェアは、例えばCD−ROM等の記憶媒体によって情報処理装置に提供されるか、ネットワーク等を通じてダウンロードされる。例えば記憶媒体は、情報処理装置の記憶媒体ドライブ部にセットされ、プログラムが記憶媒体から記憶媒体ドライブ部を介してHDにインストールされる。
図1は、機器ごとのライブラリの実装状況の違いを示す図である。 図2は、実施例1のIDEの構成図である。 図3は、ライブラリ実装情報を示す図である。 図4は、ライブラリ実装情報読込み処理のフローチャートである。 図5は、実施例1の処理のフローチャートである。 図6は、実施例1のエラー表示の例を示す図である。 図7は、実施例2のIDEの構成図である。 図8は、実施例2の処理のフローチャートである。 図9は、実施例2の実行制御ブロック追加メニューの例を示す図である。 図10は、実施例2の実行制御ブロック追加の例を示す図である。 図11は、実施例3のIDEの構成図である。 図12は、実施例3の処理のフローチャートである。 図13は、実施例3の補完候補リストを示す図である。 図14は、実施例3のライブラリ実装情報取得処理のフローチャートである。 図15は、実施例3の補完候補表示の例を示す図である。
符号の説明
101 機種指定部
102 ライブラリ実装情報記憶部
103 実装情報読込み部
104 コード編集部
105 コード評価部
106 エラー表示部

Claims (7)

  1. 開発ターゲットとなる機器を指定する機器指定手段と、
    機器ごとにライブラリがどこまで実装されているかを記録するライブラリ実装情報を記憶するライブラリ実装情報記憶手段と、
    前記機器指定手段で指定された機器のライブラリ実装情報を読み込むライブラリ実装情報読込み手段と、
    ソースコードを編集するソースコード編集手段と、
    前記ソースコード編集手段で入力されたプログラムコードが前記ライブラリ実装情報に実装されていると記録されているか否かを判断するコード評価手段と、
    入力されたソースコードが前記ライブラリ実装情報に実装されていないと記録されていたときにエラー表示を行うエラー表示手段と、
    を有することを特徴とするプログラム開発装置。
  2. 開発ターゲットとなる機器を指定する機器指定手段と、
    機器ごとにライブラリがどこまで実装されているかを記録するライブラリ実装情報を記憶するライブラリ実装情報記憶手段と、
    前記機器指定手段で指定された機器のライブラリ実装情報を読み込むライブラリ実装情報読込み手段と、
    ソースコードを編集するソースコード編集手段と、
    前記ソースコード編集手段で入力されたプログラムコードが前記ライブラリ実装情報に実装されていると記録されているか否かを判断するコード評価手段と、
    入力されたソースコードが前記ライブラリ実装情報で実装されていないと記録されていたときに前記入力されたプログラムコードをソフトウェアが実行される機器により実行するか否かの制御を行う条件分岐コードをソースコードに追加する実行制御ブロック追加手段と、
    条件分岐コードをソースコードに追加する指示をうける機種ブロック追加指示手段と、
    を有することを特徴とするプログラム開発装置。
  3. 開発ターゲットとなる機器を指定する機器指定手段と、
    機器ごとにライブラリがどこまで実装されているかを記録するライブラリ実装情報を記憶するライブラリ実装情報記憶手段と、
    前記機器指定手段で指定された機器のライブラリ実装情報を読み込むライブラリ実装情報読込み手段と、
    ソースコードを編集するソースコード編集手段と、
    前記ソースコード編集手段で入力されたソースコードから予測される補完候補のうち前記ライブラリ実装情報で実装されていると記録されている候補のリストを作成する補完候補リスト作成手段と、
    補完候補を表示する補完候補表示手段と
    補完候補を選択する補完候補選択手段と、
    ソースコードに補完文字列を挿入する補完挿入手段と、
    を有することを特徴とするプログラム開発装置。
  4. コンピュータを、
    開発ターゲットとなる機器を指定する機器指定手段と、
    機器ごとにライブラリがどこまで実装されているかを記録するライブラリ実装情報を記憶するライブラリ実装情報記憶手段と、
    前記機器指定手段で指定された機器のライブラリ実装情報を読み込むライブラリ実装情報読込み手段と、
    ソースコードを編集するソースコード編集手段と、
    前記ソースコード編集手段で入力されたプログラムコードが前記ライブラリ実装情報に実装されていると記録されているか否かを判断するコード評価手段と、
    入力されたソースコードが前記ライブラリ実装情報に実装されていないと記録されていたときにエラー表示を行うエラー表示手段と、
    して実行させることを特徴とするプログラム開発ソフトウェア。
  5. コンピュータを、
    開発ターゲットとなる機器を指定する機器指定手段と、
    機器ごとにライブラリがどこまで実装されているかを記録するライブラリ実装情報を記憶するライブラリ実装情報記憶手段と、
    前記機器指定手段で指定された機器のライブラリ実装情報を読み込むライブラリ実装情報読込み手段と、
    ソースコードを編集するソースコード編集手段と、
    前記ソースコード編集手段で入力されたプログラムコードが前記ライブラリ実装情報に実装されていると記録されているか否かを判断するコード評価手段と、
    入力されたソースコードが前記ライブラリ実装情報で実装されていないと記録されていたときに前記入力されたプログラムコードをソフトウェアが実行される機器により実行するか否かの制御を行う条件分岐コードをソースコードに追加する実行制御ブロック追加手段と、
    条件分岐コードをソースコードに追加する指示をうける機種ブロック追加指示手段と、して実行させることを特徴とするプログラム開発ソフトウェア。
  6. コンピュータを、
    開発ターゲットとなる機器を指定する機器指定手段と、
    機器ごとにライブラリがどこまで実装されているかを記録するライブラリ実装情報を記憶するライブラリ実装情報記憶手段と、
    前記機器指定手段で指定された機器のライブラリ実装情報を読み込むライブラリ実装情報読込み手段と、
    ソースコードを編集するソースコード編集手段と、
    前記ソースコード編集手段で入力されたソースコードから予測される補完候補のうち前記ライブラリ実装情報で実装されていると記録されている候補のリストを作成する補完候補リスト作成手段と、
    補完候補を表示する補完候補表示手段と、
    補完候補を選択する補完候補選択手段と、
    ソースコードに補完文字列を挿入する補完挿入手段と、
    として実行させることを特徴とするプログラム開発ソフトウェア。
  7. 請求項4乃至6何れか1項記載のプログラム開発ソフトウェアを記憶するコンピュータ読み取り可能な記憶媒体。
JP2005163156A 2005-06-02 2005-06-02 プログラム開発装置、プログラム開発ソフトウェア及び記憶媒体 Pending JP2006338399A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005163156A JP2006338399A (ja) 2005-06-02 2005-06-02 プログラム開発装置、プログラム開発ソフトウェア及び記憶媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005163156A JP2006338399A (ja) 2005-06-02 2005-06-02 プログラム開発装置、プログラム開発ソフトウェア及び記憶媒体

Publications (1)

Publication Number Publication Date
JP2006338399A true JP2006338399A (ja) 2006-12-14

Family

ID=37558899

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005163156A Pending JP2006338399A (ja) 2005-06-02 2005-06-02 プログラム開発装置、プログラム開発ソフトウェア及び記憶媒体

Country Status (1)

Country Link
JP (1) JP2006338399A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008158846A (ja) * 2006-12-25 2008-07-10 Toshiba Mitsubishi-Electric Industrial System Corp プラントコントローラ
JP2010061296A (ja) * 2008-09-02 2010-03-18 Sharp Corp データ作成装置、データ処理装置、データ供給システム、データ作成方法、データ処理方法、制御プログラムおよび記録媒体
JP2022546636A (ja) * 2019-11-06 2022-11-04 グーグル エルエルシー ソースコード上で動作するソフトウェアツールのための機械学習モデルの自動生成

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008158846A (ja) * 2006-12-25 2008-07-10 Toshiba Mitsubishi-Electric Industrial System Corp プラントコントローラ
JP2010061296A (ja) * 2008-09-02 2010-03-18 Sharp Corp データ作成装置、データ処理装置、データ供給システム、データ作成方法、データ処理方法、制御プログラムおよび記録媒体
JP2022546636A (ja) * 2019-11-06 2022-11-04 グーグル エルエルシー ソースコード上で動作するソフトウェアツールのための機械学習モデルの自動生成
JP7220833B2 (ja) 2019-11-06 2023-02-10 グーグル エルエルシー ソースコード上で動作するソフトウェアツールのための機械学習モデルの自動生成

Similar Documents

Publication Publication Date Title
Karsai et al. Design guidelines for domain specific languages
US6055369A (en) Apparatus for visual programming with screen flow
KR100915762B1 (ko) 통합 개발 환경에서의 의사 번역
JP5350428B2 (ja) 自動プログラム生成装置、方法及びコンピュータプログラム
US20040049768A1 (en) Method and program for compiling processing, and computer-readable medium recoding the program thereof
US20050223363A1 (en) Evaluation of a code segment
JP2007323573A (ja) 機能テスト・スクリプト生成装置
JP2007141173A (ja) コンパイルシステム、デバッグシステムおよびプログラム開発システム
US20120110560A1 (en) Data type provider for a web semantic store
WO2013079006A1 (en) Systems and Methods for Customizing Optimization/Transformation/ Processing Strategies
JP4978233B2 (ja) シミュレータ開発システム及びシミュレータ開発方法
US20120110548A1 (en) Data type provider for an operating system instrumentation store
JP5626333B2 (ja) プログラム作成支援装置、プログラム、および、情報システム
JP2006338399A (ja) プログラム開発装置、プログラム開発ソフトウェア及び記憶媒体
JP2009104252A (ja) デバッグ支援装置およびデバッグ支援方法
JP4328328B2 (ja) ソフトウエア開発ツールプログラム
Pelgrims Gradle for Android
JP2007287025A (ja) 画面遷移プログラム生成方法及び装置
GB2420638A (en) Method of substituting code fragments in Internal Representation
WO2020230241A1 (ja) テスト装置、テスト方法及びプログラム
KR100846203B1 (ko) 모바일 어플리케이션의 생성 방법 및 이를 구현하기 위한프로그램을 기록한 기록매체
JP2006293436A (ja) プログラムコード生成装置および生成方法
CN109117176A (zh) 一种基于主机的版本自动部署方法及系统
JP2007226739A (ja) ソフトウェア開発装置およびプログラム
JP2010020680A (ja) 情報処理装置及びプログラム