(57)【特許請求の範囲】
【請求項１】
プログラムに含まれる変数及び関数に対する拡張言語仕様を指定する、コンピュータが実行する拡張言語仕様指定方法であって、
前記プログラムでの拡張言語仕様の指定と前記プログラムを複数含むプロジェクトでの拡張言語仕様の指定とコンパイラのオプション設定での拡張言語の指定とに基づいて前記変数及び関数夫々に対する拡張言語仕様の指定状態の一覧を記憶し、該指定状態の一覧と、前記関数に対する指定と前記変数に対する指定との優先度に関する情報に基づいて、前記変数及び関数に対して重複しない拡張言語仕様の指定状態を決定する解析ステップと、
該解析ステップで決定された指定状態に基づいて、前記関数又は変数に対して拡張言語仕様を指定する指定ステップと
を前記コンピュータが実行することを特徴とする、拡張言語仕様指定方法。
【請求項２】
該解析ステップは、プログラム構造解析と拡張言語解析を行い、
前記プログラム構造解析は、関数解析、変数解析及びプロジェクト解析を含み、プログラム構造解析の結果は、関数、変数、及びソースプログラムの一覧として保存し、
前記拡張言語解析は、構文解析及びオプション解析を含み、拡張言語解析の結果は、指定済箇所及び候補箇所の一覧として保存することを特徴とする、請求項１記載の拡張言語仕様指定方法。
【請求項３】
該解析ステップは、前記指定状態の一覧に対して言語仕様条件、候補箇所、関数、変数、ソースプログラムのいずれか１つを選択する設定条件の付け合わせを行うことを特徴とする、請求項２記載の拡張言語仕様指定方法。
【請求項４】
コンピュータが実行する、プログラムを作成するプログラム開発方法であって、
前記プログラムでの拡張言語仕様の指定と前記プログラムを複数含むプロジェクトでの拡張言語仕様の指定とコンパイラのオプション設定での拡張言語の指定とに基づいて前記変数及び関数夫々に対する拡張言語仕様の指定状態の一覧を記憶し、該指定状態の一覧と、前記関数に対する指定と前記変数に対する指定との優先度に関する情報に基づいて、前記変数及び関数に対して重複しない拡張言語仕様の指定状態を決定する解析ステップと、
該解析ステップで決定された指定状態に基づいて、前記関数又は変数に対して拡張言語仕様を指定する指定ステップと、
指定された拡張言語仕様を含むプログラムを作成するステップ
を前記コンピュータが実行することを特徴とする、プログラム開発方法。
【請求項５】
前記指定状態の一覧は、変数名、関数、変数、コマンド、及び警告を含み、
ある変数は、関数としても、変数としても、プログラムとしても拡張言語仕様の指定が可能であることを特徴とする、請求項４記載のプログラム開発方法。
【請求項６】
前記警告は拡張言語仕様の指定の重複を示す重複情報を含むことを特徴とする、請求項５記載のプログラム開発方法。
【請求項７】
該指定ステップは、前記指定状態の一覧に対して言語仕様条件、候補箇所、関数、変数、ソースプログラムのいずれか１つを選択する設定条件を適用することを特徴とする、請求項４〜６のいずれか１項記載のプログラム開発方法。
【請求項８】
該プログラムを実行して性能測定を行う測定ステップ
を前記コンピュータが更に実行し、
該指定ステップは、該測定ステップの測定結果が許容性能以上となるように該拡張言語仕様を指定する関数又は変数を変更することを特徴とする、請求項４〜７のいずれか１項記載のプログラム開発方法。
【請求項９】
コンピュータに、プログラムに含まれる変数及び関数に対する拡張言語仕様を指定する拡張言語仕様指定処理を行わせる処理プログラムであって、
前記プログラムでの拡張言語仕様の指定と前記プログラムを複数含むプロジェクトでの拡張言語仕様の指定とコンパイラのオプション設定での拡張言語の指定とに基づいて前記変数及び関数夫々に対する拡張言語仕様の指定状態の一覧を記憶し、該指定状態の一覧と、前記関数に対する指定と前記変数に対する指定との優先度に関する情報に基づいて、前記変数及び関数に対して重複しない拡張言語仕様の指定状態を決定する解析手順と、
該解析手順で決定された指定状態に基づいて、前記関数又は変数に対して拡張言語仕様を指定する指定手順
を前記コンピュータに実行させることを特徴とする、処理プログラム。
【請求項１０】
請求項９記載の処理プログラムを格納したことを特徴とする、コンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、拡張言語仕様指定方法、プログラム開発方法、プログラム及びコンピュータ読み取り可能な記憶媒体に係り、特にプログラム中の任意のオブジェクトに対する拡張言語仕様を指定する拡張言語仕様指定方法、そのような拡張言語仕様指定方法を用いるプログラム開発方法、コンピュータにこれらの拡張言語仕様指定方法やプログラム開発方法を実行させるプログラム、及びそのようなプログラムを格納したコンピュータ読み取り可能な記憶媒体に関する。
【背景技術】
【０００２】
Ｃ言語等の高級言語プログラムのコンパイラには、ＣＰＵ等のプロセッサやメモリ等のプログラム実行環境に適した実行プログラムを生成するための拡張言語仕様が用意されている。拡張言語仕様をプログラムの特定の箇所で指定することにより、プログラムを格納するのに要するメモリ容量を減少させることができる。
【０００３】
しかし、近年のプログラム規模の増大に伴い、拡張言語仕様を指定するべきプログラムの該当個所も広範囲に渡って散在するため、プログラム全体として効果 的で適切な指定が行われているのか否かを確認することは難しい。
【０００４】
又、拡張言語仕様の指定方法には、ソースプログラム中に記述する方法、コマンドラインオプションとして特定のソースプログラムに指定する方法や、全てのソースプログラム全体に対して指定する方法等があり、どのオブジェクトに対して実際に拡張言語仕様の指定を行ったのか、更には、正しく拡張言語仕様の指定通りにプログラムがコンパイルされたのか否かを確認することは難しい。
【０００５】
上記に加えて、既にプログラム中で拡張言語仕様を指定している部分や、これから拡張言語仕様を指定する部分とのトレードオフを考えると、常に特定の拡張言語仕様に対して全てのプログラム中の全ての指定部分を把握することが望ましい。
【０００６】
図１は、従来のプログラム開発方法の一例を説明するフローチャートである。図１において、プログラム開発が開始されると、ステップＳ１０１は、新たなプロジェクトを作成する。ステップＳ１０２は、プログラム開発環境の各種設定を行う。ステップＳ１０３は、ステップＳ１２１によりユーザ（プログラム開発者）から手動で指定される拡張言語仕様を用いてソースプログラムを作成する。ステップＳ１０４は、ステップＳ１２１によりユーザから手動で指定される拡張言語仕様を用いてオプションの設定を行う。ステップＳ１０５は、拡張言語仕様の指定に従いプログラムをビルド、即ち、コンパイルを行ってターゲットとなるプログラムを作成する。
【０００７】
ステップＳ１０６は、拡張言語仕様の指定によるビルドエラーが発生したか否かを判定する。ビルドエラーは、例えば拡張言語仕様の指定の重複等により発生する。ステップＳ１０６の判定結果がＹＥＳであると、ステップＳ１０７は、ビルドエラー発生の原因がソースプログラムにあるか否かを判定する。ステップＳ１０７の判定結果がＹＥＳであると、ステップＳ１０８は、ソースプログラムを修正し、処理はステップＳ１０２へ戻る。他方、ステップＳ１０７の判定結果がＮＯであると、ステップＳ１０９は、ビルドエラー発生の原因がオプションあるか否かを判定する。ステップＳ１０９の判定結果がＹＥＳであると、ステップＳ１１０は、オプションを変更し、処理はステップＳ１０２へ戻る。ステップＳ１０９の判定結果がＮＯであると、処理はステップＳ１０２へ戻る。
【０００８】
ステップＳ１０６の判定結果がＮＯであると、ステップＳ１１１は、プログラムをシミュレータ又はエミュレータを用いて実行する。ステップＳ１１２は、実行したプログラムの実行性能を測定する。ステップＳ１１３は、実行したプログラムの実行性能が良いか（即ち、許容性能以上であるか）否かを判定する。ステップＳ１１３の判定結果がＮＯであると、ステップＳ１１４は、プログラムの実行性能が悪い原因がソースプログラムにあるか否かを判定する。ステップＳ１１４の判定結果がＹＥＳであると、ステップＳ１１５は、ソースプログラムを修正し、処理はステップＳ１０２へ戻る。他方、ステップＳ１１４の判定結果がＮＯであると、ステップＳ１１６は、プログラムの実行性能が悪い原因がオプションあるか否かを判定する。ステップＳ１１６の判定結果がＹＥＳであると、ステップＳ１１７は、オプションを変更し、処理はステップＳ１０２へ戻る。ステップＳ１１６の判定結果がＮＯであると、処理はステップＳ１０２へ戻る。ステップＳ１１３の判定結果がＹＥＳであると、プログラム開発は終了する。
【０００９】
ソースプログラム、オプション及びプログラム開発環境は、互いに作用するため、ユーザは互いの影響を考慮しながら手動で調整する必要がある。このため、ユーザは、拡張言語仕様等の知識のある熟練したユーザであることが望ましい。
【００１０】
特許文献１には、拡張言語のイベント取得命令によってイベントが取得できるグラフィックユーザインタフェース機能カスタマイズ方式が提案されている。
【特許文献１】特開平６−１１０６７０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
従来は、常に特定の拡張言語仕様に対して全てのプログラム中の全ての指定部分を把握可能とする手段が存在せず、拡張言語仕様を有効に活用することは難しかった。
【００１２】
又、拡張言語仕様の指定の方法には、プロジェクト全体又はソースプログラムに適用する翻訳オプションの指定、#pragma前処理指令等によるソースプログラム又はソースプログラム内ローカルスコープ、型修飾子等による特定オブジェクトに対する指定等があり、これらの指定が重複した場合、文法エラー、リンケージエラー、実行時エラー等が発生する可能性があった。
【００１３】
このように、従来は、拡張言語仕様の効率的な指定が難しく、拡張言語仕様の指定状況を把握することが難しいために指定の重複等を抑制することが難しいので、拡張言語仕様を有効に活用することは難しいという問題があった。
【００１４】
そこで、本発明は、拡張言語仕様の効率的な指定を可能とし、拡張言語仕様の指定状況を把握可能として指定の重複等を抑制することができ、拡張言語仕様を有効に活用することのできる拡張言語仕様指定方法、プログラム開発方法、プログラム及びコンピュータ読み取り可能な記憶媒体を提供することを目的とする。
【課題を解決するための手段】
【００１５】
上記の課題は、プログラムのオブジェクトに対する拡張言語仕様を指定する拡張言語仕様指定方法であって、拡張言語仕様の候補を解析する解析ステップと、該解析ステップの解析結果に基づいて、オブジェクトに対して拡張言語仕様を自動的に指定する指定ステップとを含むことを特徴とする拡張言語仕様指定方法によって達成できる。
【００１６】
上記の課題は、拡張言語仕様の候補を解析する解析ステップと、該解析ステップの解析結果に基づいて、オブジェクトに対して拡張言語仕様を自動的に指定する指定ステップと、指定された拡張言語仕様を含むプログラムを作成するステップとを含むことを特徴とするプログラム開発方法によっても達成できる。
【００１７】
上記の課題は、コンピュータに、上記拡張言語仕様指定方法又は上記プログラム開発方法を実行させることを特徴とするプログラムによっても達成できる。
【００１８】
上記の課題は、上記プログラムを格納したことを特徴とするコンピュータ読み取り可能な記憶媒体によっても達成できる。
【発明の効果】
【００１９】
本発明によれば、拡張言語仕様の効率的な指定を可能とし、拡張言語仕様の指定状況を把握可能として指定の重複等を抑制することができ、拡張言語仕様を有効に活用することができる拡張言語仕様指定方法、プログラム開発方法、プログラム及びコンピュータ読み取り可能な記憶媒体を実現できる。
【発明を実施するための最良の形態】
【００２０】
本発明では、予め拡張言語仕様が指定され得る個所を特定しておき、その優先度や包含関係を定義しておくことで、拡張言語仕様の指定があった場合に常にプロジェクト全体から効率的な指定か否かを判断する機構を作成する。
【００２１】
又、拡張言語仕様の指定状況を分かり易く表示する等して、プロジェクト全体として拡張言語仕様の指定の妥当性が理解し易いものとする。
以下に、本発明になる拡張言語仕様指定方法、プログラム開発方法、プログラム及びコンピュータ読み取り可能な記憶媒体の各実施例を、図２以降と共に説明する。
【実施例】
【００２２】
図２は、拡張言語仕様の指定を説明する図である。図２では変数を主体として表現しているが、関数等の拡張言語仕様の指定も可能であることは言うまでもない。
【００２３】
ある特定の変数に拡張言語仕様の指定を行う場合、その方法として（Ｍ１）〜（Ｍ６）のようなインタフェースを用いた指定方法が考えられる。ここでは、説明の便宜上、拡張言語仕様の指定は、「＿spec」なる性能向上に繋がる修飾化、又は、「−spec」なるコンパイルオプション指定であり、以下の説明では「SPEC」指定と呼ぶ。
【００２４】
方法（Ｍ１）では、図２に示すプロジェクトウィンドウで特定のソースプログラム全体に対して−spec指定をすることで、特定ソースプログラムに含まれる変数全てがSPEC指定の対象となっている。
【００２５】
方法（Ｍ２）では、図２に示すプロジェクトウィンドウで特定プロジェクト全体に対して−spec指定をすることで、特定プロジェクトに含まれる変数全てがSPEC指定の対象となっている。
【００２６】
方法（Ｍ３）では、図２に示すプロジェクトウィンドウ（又は、設定ウィンドウ）で全てのプロジェクトに対して−spec指定をすることで、全てのプロジェクトに含まれる変数全てがSPEC指定の対象となっている。
【００２７】
方法（Ｍ４）では、図２に示すエディタウィンドウで特定ソースプログラム全体に対してソースプログラム中を指定をすることで、特定ソースプログラムに含まれる変数全てがSPEC指定の対象となっている。
【００２８】
方法（Ｍ５）では、図２に示すエディタウィンドウで特定ソースプログラム中の特定関数又はブロックに対して指定をすることで、特定関数又はブロックに含まれる変数全てがSPEC指定の対象となっている。
【００２９】
方法（Ｍ６）では、図２に示すエディタウィンドウで特定ソースプログラム内の特定変数に対して直接指定をすることで、指定した変数がSPEC指定の対象となっている。
【００３０】
図２の場合、コンパイルオプションとして、或いは、ソースプログラム中での拡張言語仕様の指定に集約されるが、このままでは拡張言語仕様の指定のための手段が混沌としており、最終的にどの変数や関数等のオブジェクトに拡張言語仕様が指定されたのかが分かり難い。又、例えばあるソースプログラムb,c中の変数int  iを＿spec修飾しようとする場合、既に特定ソースプログラム全体、特定オブジェクト全体、或いは、全プロジェクトに対して＿spec修飾が指定されているかも知れない。
【００３１】
このような場合、既に拡張言語仕様が指定されているにも関わらず重複指定を行う、或いは、意図しない変数まで指定してしまう等の副作用が生じる可能性がある。又、どこでどの様な形でSPEC指定がなされているのかが分かり難い。更に、プログラム規模の増大に伴い拡張言語仕様を指定するべきプログラムの該当個所も広範囲に渡って散在すると、オプションの絶対数に制約がある場合等であっても制約を超えているか否かを確認することは難しい。
【００３２】
そこで、本発明の一実施例では、方法（１）〜（３）までのプログラム開発環境内のSPEC指定情報を共有すると共に、方法（４）〜（６）まではプロジェクト内のソースプログラムを解析し、候補となる変数情報を事前に収集することで、全指定個所を把握可能とする。
【００３３】
図３は、拡張言語仕様候補の解析、最適化及び適用を説明する図である。例えば、図３に示すように、変数領域サイズや指定数等の条件で最大５個(MAX  5)の変数のみ＿specなる拡張指定可能な条件下において、コンパイル前のソースプログラムのコマンドラインの解析を行い、特定の変数に対する関数、変数(直接修飾)、コマンドオプションでの指定状況の一覧を表示する。図３に示す＿spec指定候補一覧では、関数、変数、コマンド、変数名、ファイル名（ソースプログラム名）が示されている。
【００３４】
これに加え、各変数情報に対するSPEC指定状況を確認することで、重複指定を把握することができる。更に解析後を見ると、ソースプログラムa.cの変数iは変数としてもコマンドとしてもSPEC指定されているが冗長である。ソースプログラムe.cの変数mは関数、変数及びコマンドとして指定されているが冗長である。この様な重複指定された変数を強調表示する等することで、ユーザに警告することができる。
【００３５】
更に、事前に重複した場合の優先度や指定パターンを規定しておくことで、解析結果である＿spec一覧を最適化することができる。関数としてピンポイント指定する方が、副作用も少なく、他の変数への影響が無い等、拡張言語仕様の性質に応じた条件を事前に設定しておけば、最適化することで最低限の変数にのみSPEC指定が可能となる。最適化後を見ると、ソースプログラムa.cの変数iは変数のみとして指定されており、ソースプログラムe.cの変数mは関数のみとして指定されているので、重複指定がない。
【００３６】
又、全てのSPEC指定方法のうち、特定の方法のみで実現する機能を用意することも可能である。品質や保守等の条件を付け、コマンドのみを許す等のソースプログラムの編集をしない条件等があってもよい。
【００３７】
拡張言語仕様候補の解析結果の最適化の後、最適化された拡張言語仕様の候補を適用、即ち、ソースプログラムやオプションに対して指定する。
【００３８】
本実施例では、拡張言語仕様の候補の解析結果に基づいて自動的に拡張言語仕様を指定することで、無駄な拡張言語仕様の指定を抑止し、重複指定によるエラーを抑制すると共に、効果が適正である拡張言語仕様の指定のみを有効にできる。これにより、プログラムの保守性、及び拡張言語仕様の指定の一貫性を高めることができる。特に拡張言語仕様の指定数が有限である場合や、拡張言語仕様の指定によりプログラム性能やプログラムサイズに制約が発生するような場合等に、拡張言語仕様の効率的な指定を可能とする。更に、特定の拡張言語仕様の指定が可能な全てのプログラムのオブジェクト、或いは、特定の拡張言語仕様が指定済のプログラムのオブジェクトも一意に把握することができるため、拡張言語仕様の指定に対する漏れや抜けの回避にも繋がる。
【００３９】
これにより、ソースプログラム中で指定した拡張言語仕様の指定やプログラム開発環境としてオプション指定した拡張言語仕様の指定の競合を避けることができる。或いは、無駄な拡張言語仕様の指定を削減するばかりでなく、拡張言語仕様の指定対象を漏れなく把握でき、効率的に、且つ、確実に拡張仕様言語仕様の指定が可能となる。更に必要に応じて、ソースプログラムは修正しない、或いは、全てソースプログラム中に埋め込む等といった保守や構成管理上の条件も容易に実現可能となる。
【００４０】
図４は、本発明になるプログラム開発方法の一実施例を説明するフローチャートである。プログラム開発方法の本実施例は、本発明になる拡張言語仕様指定方法の一実施例を採用する。
【００４１】
本発明になるプログラムは、拡張言語仕様指定方法又はプログラム開発方法をコンピュータに実行させるものであり、本発明になるコンピュータ読み取り可能な記憶媒体は、そのようなプログラムを格納した記録媒体からなる。記録媒体は、光記録媒体、光磁気記録媒体、磁気記録媒体、半導体記憶装置等の、プログラムをコンピュータ読み取り可能に格納可能な媒体であれば良い。
【００４２】
図４に示す処理は、ＣＰＵ等のプロセッサ、メモリ等の記憶装置、キーボード等の入力部及び表示部等から構成される汎用コンピュータシステムにより実行可能である。
【００４３】
図５は、コンピュータシステムを示す斜視図である。図５に示すように、コンピュータシステム１００は、ＣＰＵ、ディスクドライブやメモリ等の記憶装置を内蔵する本体部１０１と、表示部１０２と、キーボード１０３と、マウス１０４と、モデム１０５からなる。表示部１０２は、本体部１０１からの指示により表示画面１０２ａに画面、画像、メニュー等を表示する。キーボード１０３は、コンピュータシステム１００に種々の情報や命令を入力する際にユーザにより操作される。マウス１０４は、表示画面１０２ａ上の任意の位置を指定する際等にユーザにより操作される。モデム１０５は、外部のデータベース等にアクセスして他のコンピュータシステムに記憶されているプログラム等をダウンロードする際等に用いられる。ＣＰＵが実行するプログラムは、ディスク１１０等の可搬型記録媒体に格納されるか、モデム１０５等の通信装置を用いて他のコンピュータシステムの記録媒体（又は、記憶部）１０６からダウンロードされる。
【００４４】
図４において、プログラム開発が開始されると、ステップＳ１は、新たなプロジェクトを作成する。ステップＳ２は、プログラム開発環境の各種設定を行う。プログラム開発環境の各種設定には、例えばプロセッサの種類、コンパイラのオプション等の設定が含まれる。ステップＳ３は、後述するステップＳ１１により指定される拡張言語仕様の候補を用いてソースプログラムを作成する。ステップＳ４は、後述するステップＳ１１により指定される拡張言語仕様の候補を用いてオプションの設定を行う。ステップＳ５は、拡張言語仕様候補の解析を行う。
【００４５】
ステップＳ６は、拡張言語仕様を指定するか否かを判定し、判定結果がＹＥＳであると、ステップＳ７は、拡張言語仕様の指定に従いプログラムをビルド、即ち、コンパイルを行ってターゲットとなるプログラムを作成する。ステップＳ８は、プログラムをシミュレータ又はエミュレータを用いて実行する。ステップＳ９は、実行したプログラムの実行性能を測定する。測定される実行性能には、何サイクルでプログラムが実行されたか、何％の占有率でプログラムが実行されたか等が含まれる。ステップＳ１０は、実行したプログラムの実行性能が良いか（即ち、許容性能以上であるか）否かを判定し、判定結果がＹＥＳであると、プログラム開発は終了する。
【００４６】
ステップＳ６又はＳ１０の判定結果がＮＯであると、処理はステップＳ１１へ進む。ステップＳ１１は、ステップＳ５による拡張言語仕様候補の解析結果及びステップＳ９による実行したプログラムの実行性能の測定結果（実行性能が良くない場合）に基づいて拡張言語仕様の候補を選択し、上記ステップＳ３及びＳ４に対して指定する。つまり、プログラムの実行性能が許容性能未満でありステップＳ１０の判定結果がＮＯであると、ステップＳ１１は拡張言語仕様の候補の選択を、プログラムの実行性能が許容性能以上となるように候補の選択を変更又は修正する。
【００４７】
本実施例では、ソースプログラム、オプション、プログラム開発環境の選択肢が、図４中破線で囲まれたステップＳ２〜Ｓ５，Ｓ１１により統合管理される。又、拡張言語仕様の候補選択及び選択された候補による拡張言語仕様の指定が、図４中破線で囲まれたステップＳ２〜Ｓ５，Ｓ１１により自動的に行われる。尚、拡張言語仕様の候補選択を自動的に行った後に、ユーザにより候補選択を手動で変更するようにしても良いが、このような場合も最初の候補選択は自動的に行われるので、本明細書ではこれらを含めて「拡張言語仕様の候補の自動的な選択」、「拡張言語仕様の自動的な指定」と呼ぶものとする。
【００４８】
事前に拡張言語仕様の候補の解析を行うため、ビルドエラーは発生しない。又、拡張言語仕様の候補選択及び拡張言語仕様の指定が自動的に行われるので、拡張言語仕様の指定方法に矛盾が生じない。
【００４９】
実行したプログラムの実行性能の良し悪しから拡張言語仕様の候補選択をやり直す場合も、拡張言語仕様の候補選択及び拡張言語仕様の指定が自動的に行われるので、この場合にも拡張言語仕様の指定方法に矛盾が生じない。
【００５０】
図６は、ステップＳ５による拡張言語仕様候補の解析を説明する図である。図６に示すように、拡張言語仕様候補の解析は、プログラム構造解析、拡張言語解析及び設定条件の付け合わせを含む。プログラム構造解析は、既存のツールでも実現でき、関数解析、変数解析及びプロジェクト解析を含む。プログラム構造解析の結果は、関数、変数及びソースプログラムの一覧として記憶部に保存される。拡張言語解析は、既存のツールでも実現でき、構文解析及びオプション解析を含む。拡張言語解析の結果は、指定済箇所及び候補箇所の一覧として記憶部に保存される。設定条件の付合わせは、既存のツールでも実現でき、言語仕様条件、候補箇所、関数、変数、ソースプログラム等の付け合わせを含む。プログラム構造解析及び拡張言語解析は、図６に示すように別々のルーチンで実現しても、１つのルーチンで実現しても良い。
【００５１】
拡張言語仕様候補の解析は、既存の統合開発環境内にある機構で対応可能であり、解析の結果の状況をＧＵＩ化したり、指定の重複をチェックしたり、最適化したり、条件設定をしたりすることができる。
【００５２】
図７は、ステップＳ５による拡張言語仕様候補の解析を説明するフローチャートである。図７は、プログラム構造解析及び拡張言語解析を１つのルーチンで実現する場合を示す。
【００５３】
図７において、拡張言語仕様候補の解析が開始されると、コンパイラによる構文解析及び拡張言語解析を用いることにより、ステップＳＴ５１は関数解析を行い、ステップＳＴ５２は変数解析を行う。これにより、解析結果である関数及び変数の一覧が、指定済箇所及び候補箇所の一覧を含む形で図８に示す如き記号表として記憶部に保存される。図８に示す記号表は、関数、変数名及びファイル名（プログラム名）を含む。ステップＳＴ５３はプロジェクト解析を行う。これにより、解析結果が指定済箇所及び候補箇所の一覧を含む形で図９に示す如きソースプログラムの一覧として記憶部に保存される。図９に示すソースプログラムの一覧は、プロジェクト名及びファイル名を含む。図８、図９及び後述する図１０において、「拡張指定」とは、拡張言語仕様の指定を意味する。
【００５４】
ステップＳＴ５４は、記号表とソースプログラムの一覧を変数名でマージし、図１０に示す如きマージ結果を得る。ステップＳＴ５５は、図１０に示す如きマージ結果を表示部に表示することで状況表示を行う。図１０に示すマージ結果は、関数、変数名及びファイル名を含む。
【００５５】
ステップＳＴ５６は、マージ結果に基づき拡張言語仕様の候補を検索し、図１１に示す如き検索結果を表示部に表示する。図１１に示す検索結果は、変数名、関数、変数、コマンド及び警告を含む。例えば、ある変数ｌは、関数としても、変数としても、ファイル（プログラム）としても拡張言語仕様の指定が可能である。図１１では、楕円で示される空いている箇所が候補を示す。又、例えば「３重複」、「２重複」等の重複情報が警告欄に示されていれば、拡張言語仕様の指定の重複を認識することができる。
【００５６】
ステップＳＴ５７は、言語仕様条件、候補箇所、関数、変数、ソースプログラム等の設定条件の付合わせを行う。この場合、例えば図１２に示すように、表示部の画面上で関数だけを選択する条件設定を予め行っておいても良い。図１２は、条件設定として、「関数だけ」、「変数だけ」又は「コマンドだけ」が選択可能な場合の表示画面を示す。
【００５７】
ステップＳＴ５８は、最終的な拡張言語仕様の指定を決定する。これにより、図１１に示す検索結果が、図１２に示す条件設定により、図１３に示す如く最適化され、拡張言語仕様候補の解析は終了する。図１３は、最適化された拡張言語仕様の候補である変数名及び関数を示す。
【００５８】
図１４〜図１６は、拡張言語仕様候補の解析時に表示部に表示される画面の例を示す図である。
【００５９】
図１４は、拡張言語仕様候補の解析を選択可能な画面を示す。図１４において、sampleはプロジェクト名、INIT.C,  LEXSTRC等はソースプログラム名を示す。この画面上で、＿direct検査のメニューを選択すると、図１５に示す＿direct検査ウィンドウが表示部に表示される。
【００６０】
図１５に示す＿direct検査ウィンドウには、設定、候補、Static（静的）属性、型、変数名、ファイル名（プログラム名）、パス名等が含まれる。設定の欄が「＊」であると、オプションで指定されていることを示す。候補の欄が「推奨」であるとオプションの指定が推奨されていることを示し、候補の欄が「ソース」であるとソースプログラム中の指定であることを示す。＿direct検査ウィンドウ内の表示から、特定の変数に対して、ソースプログラムとして指定されているのか、及び／又は、オプションとして指定されているのかを知ることができる。
【００６１】
図１６に示す表示条件オプション選択画面では、右上の数値を設定することで、図１５に示す指定可能範囲を設定することができる。指定可能範囲は、＿direct変数の領域（トータルサイズ）の目安を示し、指定可能範囲外の部分は＿direct変数とは無関係である。又、「ソース（ソースプログラム）中の＿direct宣言を無効にする」を選択することで、ソースプログラムを拡張言語仕様候補の対象から外すことができる。
【００６２】
尚、本発明は、以下に付記する発明をも包含するものである。
（付記１）  プログラムのオブジェクトに対する拡張言語仕様を指定する拡張言語仕様指定方法であって、
拡張言語仕様の候補を解析する解析ステップと、
該解析ステップの解析結果に基づいて、オブジェクトに対して拡張言語仕様を自動的に指定する指定ステップとを含むことを特徴とする、拡張言語仕様指定方法。
（付記２）  該解析ステップは、該拡張言語仕様の候補に対して、プログラム構造解析と拡張言語解析を行うことを特徴とする、付記１記載の拡張言語仕様指定方法。
（付記３）  該解析ステップは、解析結果に対して言語仕様条件、候補箇所、関数、変数、ソースプログラムを含む設定条件の付け合わせを行うことを特徴とする、付記２記載の下記長言語仕様指定方法。
（付記４）  該指定ステップは、拡張言語仕様が指定されたオブジェクトが認識可能となるように、拡張言語仕様を指定することを特徴とする、付記１〜３のいずれか１項記載の拡張言語仕様指定方法。
（付記５）  該指定ステップは、重複指定されたオブジェクトが認識可能となるように、拡張言語仕様を指定することを特徴とする、付記１〜４のいずれか１項記載の拡張言語仕様指定方法。
（付記６）  該指定ステップは、解析結果に基づいて拡張言語仕様の指定を最適化することを特徴とする、付記１〜５のいずれか１項記載の拡張言語仕様指定方法。
（付記７）  拡張言語仕様の候補を解析する解析ステップと、
該解析ステップの解析結果に基づいて、オブジェクトに対して拡張言語仕様を自動的に指定する指定ステップと、
指定された拡張言語仕様を含むプログラムを作成するステップとを含むことを特徴とする、プログラム開発方法。
（付記８）  該解析ステップは、該拡張言語仕様の候補に対して、プログラム構造解析と拡張言語解析を行うことを特徴とする、付記７記載のプログラム開発方法。
（付記９）  該解析ステップは、解析結果に対して言語仕様条件、候補箇所、関数、変数、ソースプログラムを含む設定条件の付け合わせを行うことを特徴とする、付記８記載のプログラム開発方法。
（付記１０）  該指定ステップは、拡張言語仕様が指定されたオブジェクトが認識可能となるように、拡張言語仕様を指定することを特徴とする、付記７〜９のいずれか１項記載のプログラム開発方法。
（付記１１）  該指定ステップは、重複指定されたオブジェクトが認識可能となるように、拡張言語仕様を指定することを特徴とする、付記７〜１０のいずれか１項記載のプログラム開発方法。
（付記１２）  該指定ステップは、解析結果に基づいて拡張言語仕様の指定を最適化することを特徴とする、付記７〜１１のいずれか１項記載のプログラム開発方法。
（付記１３）  該プログラムを実行して性能測定を行う測定ステップを更に含み、
該指定ステップは、該測定ステップの測定結果が許容性能未満であると、該拡張言語仕様の候補の選択を変更することを特徴とする、付記７〜１２のいずれか１項記載のプログラム開発方法。
（付記１４）  コンピュータに、付記１〜６のいずれか１項記載の拡張言語仕様指定方法を実行させることを特徴とする、プログラム。
（付記１５）  コンピュータに、付記７〜１３のいずれか１項記載のプログラム開発方法を実行させることを特徴とする、プログラム。
（付記１６）  付記１４又は１５記載のプログラムを格納したことを特徴とする、コンピュータ読み取り可能な記憶媒体。
【００６３】
以上、本発明を実施例により説明したが、本発明は上記実施例に限定されるものではなく、本発明の範囲内で種々の変形及び改良が可能であることは言うまでもない。
【図面の簡単な説明】
【００６４】
【図１】従来のプログラム開発方法の一例を説明するフローチャートである。
【図２】拡張言語仕様の指定を説明する図である。
【図３】拡張言語仕様の指定の解析、最適化及び適用を説明する図である。
【図４】本発明になるプログラム開発方法の一実施例を説明するフローチャートである。
【図５】コンピュータシステムを示す斜視図である。
【図６】拡張言語仕様候補の解析を説明する図である。
【図７】拡張言語仕様候補の解析を説明するフローチャートである。
【図８】記号表を示す図である。
【図９】ソースプログラムの一覧を示す図である。
【図１０】マージ結果を示す図である。
【図１１】拡張言語仕様の候補の検索結果を示す図である。
【図１２】条件設定を説明する図である。
【図１３】最適化された候補の検索結果を示す図である。
【図１４】拡張言語仕様候補の解析を選択可能な画面を示す図である。
【図１５】＿direct検査ウィンドウを示す図である。
【図１６】表示条件オプション選択画面を示す図である。
【符号の説明】
【００６５】
１００      コンピュータシステム
１０１      本体部
１０２      表示部
１０３      キーボード
１０４      マウス
１０５      モデム
１０６      記録媒体
１１０      ディスク
【図１】
0004783612.tif 000002
【図２】
0004783612.tif 000003
【図３】
0004783612.tif 000004
【図４】
0004783612.tif 000005
【図５】
0004783612.tif 000006
【図６】
0004783612.tif 000007
【図７】
0004783612.tif 000008
【図８】
0004783612.tif 000009
【図９】
0004783612.tif 000010
【図１０】
0004783612.tif 000011
【図１１】
0004783612.tif 000012
【図１２】
0004783612.tif 000013
【図１３】
0004783612.tif 000014
【図１４】
0004783612.tif 000015
【図１５】
0004783612.tif 000016
【図１６】
0004783612.tif 000017