(57)【特許請求の範囲】
【請求項１】
演算処理装置で実行する実行コードをソースコードから生成する実行コード生成装置において、
ソースコードに記載された前記実行コードの処理時間に関し、処理時間が所定値以内か否かを判定する性能検証処理を実行するコードを、前記実行コードに付与する機能を有するアサーション機能を設け、
実行コードの生成時に前記アサーション機能ごとの有効・無効を設定するアサーション指定情報が入力され、
当該アサーション指定情報がアサーション機能の有効を示す場合は、前記アサーション指定情報に従いソースコードに記載された性能検証処理を実行するコードを付与して、前記実行コードを生成することを特徴とする実行コード生成装置。
【請求項２】
請求項１に記載の実行コード生成装置において、
前記実行コードの実行における実行処理時間を性能項目とする性能検証処理を実行するコードを、仕様機能を実行する実行コードに付与することを特徴とする実行コード生成装置。
【請求項３】
請求項１記載の実行コード生成装置において、
前記実行コードの実行における必要メモリ量または空きメモリ量に関し、メモリ使用量が所定値以内か否かを判定する性能検証処理を実行するコードを、前記実行コードに付与する機能を有するアサーション機能を設けたことを特徴とする実行コード生成装置。
【請求項４】
請求項１記載の実行コード生成装置において、
前記実行コードの実行における演算処理装置の利用率に関し、利用率が所定値以内か否かを判定する性能検証処理を実行するコードを、前記実行コードに付与する機能を有するアサーション機能を設けたことを特徴とする実行コード生成装置。
【請求項５】
演算処理装置で実行する実行コードをソースコードから生成する実行コード生成方法において、
ソースコードに記載された前記実行コードの処理時間に関し、処理時間が所定値以内か否かを判定する性能検証処理を実行するコードを、前記実行コードに付与する機能を有するアサーション機能を設け、
実行コードの生成時に前記アサーション機能ごとの有効・無効を設定するアサーション指定情報を入力するステップと、
前記アサーション指定情報がアサーション機能の有効を示す場合に、前記アサーション指定情報に従い、ソースコードに記載された、前記実行コードの処理時間、あるいは、前記実行コードの実行における必要メモリ量または空きメモリ量、あるいは、前記実行コードの実行における演算処理装置の利用率のいずれかに関する性能検証処理を実行するコードを、前記実行コードに付与するステップを設けたことを特徴とする実行コード生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はソフトウェアの仕様検証に関する技術を提供するものである。
【背景技術】
【０００２】
従来から、ソフトウェアの仕様検証に関しては機能仕様に関する検証をおこなう方法や検証装置が広く用いられている。例えばJava(登録商標)言語では、アサーション機能とよばれる仕様検証処理を記述・実行するための機能をもち、機能仕様に関する検証をおこなう枠組みを言語レベルで提供している。当該アサーションに関する検証に関して、例えば、特許文献１に開示があるものである。
【０００３】
【特許文献１】特開２００７−１１４６７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ソフトウェアの機能仕様の検証に関しては、実行するプログラムの処理を記述するソースコードに機能仕様検証のための検証処理記述を追記し、該当部分のソースコード実行時に、実行結果が検証処理記述と合致しているかの判定をおこなう。
【０００５】
例えば変数「n」が、処理のある段階で「１５」となることが機能仕様で規定されているとする。このような場合にはソースコードの該当箇所に変数「n」が「１５」かの判定をおこなう機能検証処理の記述を追加する。
【０００６】
コンパイラなどの実行コード生成装置で前記ソースコードを実行可能なコードに変換する際に、実行コード生成装置に対して機能検証処理を有効にするか否かの指定が可能となっており、機能検証処理を有効に設定して実行コードを生成し、該当コードを実行した場合には先の機能検証処理が実行され、変数「n」が機能仕様値である「１５」を満足しているか否かの判定が可能となる。
【０００７】
上記方法は機能仕様の検証に有効であるが、処理時間・要求メモリ量などの性能仕様の検証に関しては考慮されておらず、上記機能検証の枠組みとは別に性能確認のための性能測定用コードをソースコードに追加し、性能仕様の確認をおこなうことなどが必要となる。
【０００８】
上記方法では仕様検証のための手法が、機能仕様の検証と性能仕様の検証とで異なってしまい、仕様検証作業を一元化できないことで、信頼性低下・作業工数増大などの問題があった。
【０００９】
さらに上記方法では、複数の測定用コードをソースコードに追加した場合に、測定対象となる処理の中に他の測定用コード処理が含まれてしまう場合があり、測定値に他の測定用コードの処理時間が含まれてしまい、測定精度が低下するという問題がある。
【００１０】
これに対しては、複数の測定用コード相互の測定精度に関する影響を考慮し、個々の測定用コードを個別にソースコードに追加するなどの工夫を利用者が個別におこなう必要がある。
【００１１】
ところで、性能仕様の確認は、ソースコードに変更が加わる度に実施する場合が多く、このような測定用コードの追加・削除作業が繰り返し必要となることが一般的である。
【００１２】
この対策としてコンパイル条件記述などによって測定用コードの追加・削除をコンパイル条件で指定することも考えられるが、コンパイル条件の設定や測定用コードとの対応は利用者が個別に実施する必要があるという点に関しては変わらない。
【００１３】
これらの方法では作業工数の増加に加えて、測定用コードの追加・削除作業誤りなどの可能性を内包しており、測定精度低下の問題がある。
【００１４】
従って、本発明では、これらの問題を改善することを課題とする。
【課題を解決するための手段】
【００１５】
コンパイル手段などの実行コード生成装置に、性能仕様検証処理の記述を追加可能なアサーション機能を設けた。該アサーション機能はアサーションの有効・無効を利用者が指定可能な構成とした。
【００１６】
更に、特定の性能検証処理のアサーション機能のみを有効・無効設定可能なアサーション指定情報に基づいて、特定の性能検証処理のアサーション機能の有効・無効設定が可能なアサーション機能を設けた
本発明の目的は性能仕様検証処理を実行可能なコードを、仕様機能の実行コードに付与するアサーション機能をもつ実行コード生成装置を提供することである。
更に、特定の性能検証処理のアサーション機能のみを有効・無効設定可能なアサーション指定情報に基づいて、特定の性能検証処理のアサーション機能の有効・無効設定が可能なアサーション機能をもつ実行コード生成装置を提供することである。
【００１７】
このために、本発明では性能仕様検証処理を実行コードに付加可能なアサーション機能を設けた。
【００１８】
本発明の実行コード生成装置により、性能仕様検証処理のためのコードを、仕様機能を実装した実行コードに付加可能となる。また、機能仕様検証処理と性能仕様検証処理を同じアサーション機能を用いた仕様検証処理として一元化することが可能となり、検証の信頼性向上が可能となる。
【００１９】
更に本発明の実行コード生成装置によれば、複数個所で性能仕様検証処理のためのコードをソースコードに追加したために、測定対象となる処理の中に他の性能仕様検証処理が含まれてしまう場合でも、測定値に他の性能仕様検証処理の時間が含まれないよう、特定の性能仕様検証処理のアサーション機能のみを有効とすることが可能となり、測定精度の低下を防止可能となる。
【発明の効果】
【００２０】
本発明によれば、従来よりもソフトウェアの仕様検証を改善するものである。
【発明を実施するための最良の形態】
【００２１】
以下、本発明の実施例を図１から図４を用いて説明する。
【実施例１】
【００２２】
図１は本実施例の実行コード生成装置の構成を示す機能ブロック図、図２は従来の仕様機能と機能仕様検証処理を記述したソースコードの例、図３は本発明の実施例について、性能仕様検証処理のための記述を追記したソースコードの例、図４は本実施例の性能仕様検証処理の追加機能（以下、性能仕様検証アサーション機能と称する）の動作を示すフローチャートである。
【００２３】
図１において、１０１は要求される仕様機能などを記述したソースコード、１０２はコード生成の対象となるソースコードの指定や、実行コード生成時の最適化指定など実行コード生成に必要な設定情報を記述した実行手順スクリプト、１０３はソースコード１０１から実行手順スクリプト１０２の設定情報に応じて実行コード１０７を生成する実行コード生成装置、１０４はソースコードをバイナリ形式に変換するコンパイル手段、１０５はコンパイラ１０４が生成したバイナリ形式の情報を実行可能なコードに変換するリンク手段、１０６は性能仕様検証処理を追加可能な性能仕様検証アサーション機能、１０７はソースコードを実行可能な形式に変換した実行コードである。
【００２４】
図２に、機能仕様を検証する処理を追記した従来のソースコード例を示す。図２において、２０２行目から２０５行目までと、２０７行目から２０９行目までは仕様機能の記述部分となる。２０６行目が機能仕様の検証処理の記述となる。２０６行目では、変数「ｉ」が１００以下であることを検証しており、性能仕様検証アサーション機能を有効として実行コードを生成・実行した場合に、前記変数「ｉ」の値の合否が検証される。
【００２５】
図２のソースコードは、図示していない従来の実行コード生成装置の機能仕様検証アサーション機能で機能仕様検証処理の追加・実行が可能となる。
【００２６】
以下、本実施例の動作を図１・図３・図４を用いて説明する。
【００２７】
図３は、本発明の性能仕様を検証する処理を追記したソースコードの例である。図３において、３０３行目から３０８行目までは仕様機能の記述部分となる。３０２行目、３０９行目が性能仕様の検証処理の記述となる。
【００２８】
３０２行目で時刻変数「ｔ３０２」を用いて処理時間の測定を開始することを記述し、３０９行目で処理時間の測定を終了することを記述している。３０９行目では合わせて、時刻変数「ｔ３０２」が示す３０３行目から３０８行目までの処理に要した時間が５００[ｍＳ]未満であるか否かを検証する。
【００２９】
図４に本実施例の性能仕様検証アサーション機能の処理を示す。処理４０１で実行手順スクリプト１０２から性能仕様検証アサーション機能の設定情報を取得する。
【００３０】
処理４０２で性能仕様検証アサーション機能に関する設定が有効か否かを判定し、性能仕様検証アサーション機能が有効である場合には処理４０３を実行、それ以外の場合には処理４０４を実行する。
【００３１】
性能仕様検証アサーション機能が有効である場合には、処理４０３でソースコード１０１に記載されている性能仕様の検証処理のための記述を有効とする。この条件でコンパイル手段１０４はソースコード１０１をコンパイルし、リンク手段１０５で性能仕様の検証処理が有効となった実行コード１０７を生成する。この実行コード１０７を実行することで、３０２行目に相当する処理で時刻変数「ｔ３０２」が「０」に初期化されるとともに、時刻変数「ｔ３０２」を用いた時刻計測が開始される。
【００３２】
次に処理３０３から処理３０８に応答する処理が実行され、この処理完了直後に３０９行目で時刻計測が終了し、終了時点での時刻変数「ｔ３０２」の値が保持される。
【００３３】
次にこの時刻変数「ｔ３０２」の値が５００[ｍＳ]未満であるかの判定が実行され、判定結果が通知される。以上の処理が性能仕様検証アサーション機能が有効である場合の実施例である。
【００３４】
一方、実行手順スクリプトで性能仕様検証アサーション機能に関する設定が無効と設定されている場合には、処理４０２の判定で処理４０４が起動され、性能仕様検証アサーション処理が無効となり、ソースコードに記載されている性能仕様の検証処理のための記述を無効とする。
【００３５】
この条件でコンパイル手段１０４はソースコード１０１をコンパイルし、リンク手段１０５から性能仕様の検証処理が無効となった実行コード１０７が生成される。この実行コード１０７を実行すると、処理３０２に対応する処理はなく、処理３０３から処理３０８に対応した処理が実行される。
【００３６】
さらに処理３０９に対応する処理は無く、全体の処理が完了する。以上の処理で性能仕様検証アサーション機能が無効な場合には、ソースコードに記載された性能仕様検証処理に関する記述は無視され、本来の仕様機能を記述した処理の部分のみが実行可能となる。以上の処理が性能仕様検証アサーション機能が無効である場合の実施例とである。
【００３７】
以上、本実施例の処理によれば特定処理の処理時間を、性能仕様検証処理記述を追記することで検証可能となる。
【００３８】
また、機能仕様検証処理と性能仕様検証処理を同じアサーション機能を用いた仕様検証処理として一元化することが可能となり、検証の信頼性向上が可能となる。
【００３９】
また本実施例によれば、実行手順スクリプトに記載した性能仕様検証アサーション機能の有効・無効設定に応じて、ソースコードに記載された性能仕様検証処理のための記述を実行または無視することが可能となり、性能仕様検証処理を仕様機能の実行コードに適宜追加することで、性能仕様の検証が容易に可能となる。
【００４０】
なお、本実施例においては性能仕様検証アサーション機能の有効・無効設定を実行手順スクリプトに記載する構成としたが、有効・無効設定を実行コード生成装置の起動時に直接指定する構成など他の構成も可能であり、性能仕様検証アサーション機能の有効・無効設定の指定方法は特にこれを限定しない。
【００４１】
また、本実施例においては実行コード生成装置１０３にコンパイラ手段１０４とリンク手段１０５をもつ構成としたが、ソースコードがインタプリタ型言語で記述される場合には、実行コード生成装置は実行コードを実行する情報処理装置上で動作するインタプリタ処理機能ももつ装置となる。実行コード生成装置の構成は利用するソースコードに応じた構成が可能であり、構成に関しては特にこれを限定しない。
【００４２】
また、本実施例においては性能検証アサーション機能を機能検証アサーション機能と別にもつ構成としたが、本実施例の性能仕様検証アサーション機能に従来の機能仕様検証アサーション機能を含める構成など他の構成も可能であり、アサーション機能の構成は特にこれを限定しない。
【実施例２】
【００４３】
以下、本発明の他の実施例を、図５・６を用いて説明する。図５は本発明の性能仕様検証処理を追記したソースコードの例、図６は本実施例の性能仕様検証アサーション機能の動作を示すフローチャートである。
【００４４】
以下、本実施例の動作を、図５・６を用いて説明する。図５において、５０３行目から５０８行目までと、５１０行目、５１２行目は本来の仕様機能の記述部分となる。５０２行目、５０９行目、５１１行目、５１３行目が性能仕様検証処理の記述となる。図５に示したソースコードに対する実行コード生成装置の処理を、性能仕様検証アサーション機能に関する設定が有効な場合に関して説明する。５０２行目で時刻変数「ｔ５０２」を用いた時刻計測を開始する。この計測の終了ポイントは５１３行目で５０３行目から５１２行目までの処理に要する時間の性能資料検証を目的としている。同様に５０９行目で時刻変数「ｔ５０９」を用いた時刻計測を開始する。この計測の終了ポイントは５１１行目で、５１０行目の処理に要する時間の性能仕様検証を目的としている。
【００４５】
先の実施例で示したように、全ての性能仕様検証アサーション機能に関する設定を有効にした場合には、前述のように５０２行目、５１３行目で性能仕様を検証している処理時間の中に、５０９行目、５１１行目の性能機能検証のための処理時間が含まれており、測定精度が低下している。
【００４６】
本実施例の性能仕様検証アサーション機能では、特定の性能仕様検証処理のみを有効にすることができる。例えば先の実施例の図１と同様の構成において、実行手順スクリプトに「-epa」と記述すると、すべての性能仕様検証関連の処理が有効となる。同様に実行手順スクリプトに「-epa t1,t2」と記載すると時刻変数「t1」、「t2」を使用している性能仕様検証処理のみが有効となる。
【００４７】
本実施例の性能仕様検証アサーション機能の処理を、図６を用いて説明する。処理６０１で実行手順スクリプトから性能仕様検証アサーション機能の設定情報を取得する。
【００４８】
処理６０２で性能仕様検証アサーション機能に関する設定が有効か否かを判定し、性能仕様検証アサーション機能が有効である場合には処理６０４を実行、それ以外の場合には処理６０３を実行する。性能仕様検証アサーション機能が有効である場合には、処理６０４で性能仕様検証アサーション機能指定が「-epa t1,t2」といった特定の時刻変数を伴って指定されているか否かを判定する。
【００４９】
特定の時刻変数指定で有効となっている場合には、処理６０５で指定された時刻変数を使用している性能仕様検証処理のみを有効とする。処理６０４の判定で、特定の時刻変数の指定がない場合には、すべての性能仕様検証処理を有効とする。
【００５０】
例えば、実行手順スクリプトに「-epa t502」という設定がある場合、本実施例の性能仕様検証アサーション機能により５０２行目と５１３行目の性能仕様検証処理が有効となり、５０９行目と５１１行目の性能仕様検証処理は無効となる。これにより５０２行目と５１３行目の性能仕様検証処理が対象とする処理に、他の性能仕様検証処理が含まれてしまうことを防止でき、性能仕様検証のために精度のよい処理時間が計測可能となる。
【００５１】
本実施例によれば、複数個所で性能仕様検証処理のためのコードをソースコードに追加したために、測定対象となる処理の中に他の性能仕様検証処理が含まれてしまう場合においても、測定値に他の性能仕様検証処理の時間が含まれないよう、特定の性能仕様検証処理のアサーション機能のみを有効とすることが可能となり、測定精度の低下を防止可能となる。
【実施例３】
【００５２】
以上の実施例では性能仕様検証処理の測定項目を処理時間としたが、処理を実行するのに必要メモリ量または、処理実行時点で利用可能な空きメモリ量を性能仕様項目として指定可能な性能仕様検証処理を実行可能な実行コード生成装置の性能仕様検証アサーション機能も可能である。
【００５３】
この場合は、ソースコード上に例えば「assertUsedMemory mem < 1024」といった性能仕様検証処理を記述することで、この例では該当箇所実行時点で実行コードが消費するメモリ量が１[KB]未満であることを検証可能となる。さらに使用メモリ量の計測を実行コード領域・スタック領域などに分けて検証する構成や、使用メモリ量の代わりに、空きメモリ量を検証する構成なども可能である。
【００５４】
以上本実施例によれば、処理時間に加えてメモリ量を性能仕様検証の測定項目に利用可能となり、性能仕様検証で検証できる性能項目が拡充され検証の信頼性が向上可能となる。
【実施例４】
【００５５】
以上の実施例では性能仕様検証処理の測定項目を処理時間やメモリ容量としたが、処理を実行するのに必要なCPUリソースを性能仕様項目として指定可能な性能仕様検証処理を実行可能な実行コード生成装置の性能仕様検証アサーション機能も可能である。
【００５６】
この場合は、ソースコード上に例えば「assertCPUusage cpu < 0.6」といった性能仕様検証処理を記述することで、この例では該当箇所実行時点で実行コードが消費するCPUリソースが０．６未満（６０％未満）であることを検証可能となる。
【００５７】
以上本実施例によれば、処理時間に加えてCPUリソースを性能仕様検証の測定項目に利用可能となり、性能仕様検証で検証できる性能項目が拡充され検証の信頼性が向上可能となる。
【００５８】
なお、以上の実施例では処理時間・メモリ量・CPUリソースなどを性能仕様検証処理の測定項目としたが、例えばネットワーク転送速度など他の測定項目を用いた性能仕様検証処理も可能であり、測定項目は特にこれを限定しない。
【００５９】
また、以上の実施例において性能仕様検証処理を含んだソースコードと含まないソースコードを別々に管理することや、別々の部品としてコンパイル手段でコンパイルすることも可能である。これにより性能仕様検証処理を含んだシステムコードの管理・再利用が容易となる。更に管理の単位に関しては、例えば性能仕様検証処理の処理時間・必要メモリ量など測定項目毎にソースコードやバイナリを管理・部品化する構成も可能であり、性能仕様検証処理に着目した管理・部品化の分類方法は特にこれを限定しない。
【産業上の利用可能性】
【００６０】
本発明の実行コード生成手段のもつアサーション機能により、性能仕様検証処理のコードを、仕様機能を実装した実行コードに付加可能となる。また、機能仕様検証処理と性能仕様検証処理を同じアサーション機能を用いた仕様検証処理として一元化することが可能となる
更に、複数の測定用コードをソースコードに追加した場合に、測定対象となる処理の中に他の測定用コード処理が含まれてしまう場合でも、測定値に他の測定用コードの処理時間が含まれないように特定の性能検証処理のアサーション機能のみを有効とすることが可能となる。
【００６１】
これにより、性能仕様の検証処理において信頼性向上と、測定精度の低下防止が可能となる。
【図面の簡単な説明】
【００６２】
【図１】実行コード生成装置の構成を示す機能ブロック図
【図２】従来のソースコード例
【図３】本発明の実施例におけるソースコード例
【図４】性能仕様検証アサーション機能の動作を示すフローチャート
【図５】本発明の実施例におけるソースコード例
【図６】性能仕様検証アサーション機能の動作を示すフローチャート
【符号の説明】
【００６３】
１０１  ソースコード
１０２  実行手順スクリプト
１０３  実行コード生成装置
１０４  コンパイル手段
１０５  性能仕様検証アサーション機能
１０６  リンク手段
１０７  実行コード
【図１】
0004887256.tif 000002
【図２】
0004887256.tif 000003
【図３】
0004887256.tif 000004
【図４】
0004887256.tif 000005
【図５】
0004887256.tif 000006
【図６】
0004887256.tif 000007