(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2025-06-12
(45)【発行日】2025-06-20
(54)【発明の名称】実行時間見積装置、実行時間見積方法及び実行時間見積プログラム
(51)【国際特許分類】
G06F 8/30 20180101AFI20250613BHJP
G06F 8/77 20180101ALI20250613BHJP
G06F 11/34 20060101ALI20250613BHJP
【FI】
G06F8/30
G06F8/77
G06F11/34 119
(21)【出願番号】P 2025511438
(86)(22)【出願日】2024-10-18
(86)【国際出願番号】 JP2024037226
【審査請求日】2025-02-20
(31)【優先権主張番号】P 2024126052
(32)【優先日】2024-08-01
(33)【優先権主張国・地域又は機関】JP
【早期審査対象出願】
(73)【特許権者】
【識別番号】000006013
【氏名又は名称】三菱電機株式会社
(74)【代理人】
【識別番号】110002491
【氏名又は名称】弁理士法人クロスボーダー特許事務所
(72)【発明者】
【氏名】津村 雄太
(72)【発明者】
【氏名】山下 雄也
(72)【発明者】
【氏名】外山 正勝
(72)【発明者】
【氏名】松浦 陽平
【審査官】松平 英
(56)【参考文献】
【文献】特開2024-61591(JP,A)
【文献】特許第7370467(JP,B2)
【文献】特開2017-199253(JP,A)
【文献】特開2021-64087(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/00-8/38
8/60-8/77
9/44-9/445
9/451
11/07
11/28-11/3698
(57)【特許請求の範囲】
【請求項1】
自然言語で記述されたソフトウェアの1つ以上の機能を示す機能記述から、前記1つ以上の機能を実現するソースコードの生成を指示するコード生成用のプロンプトを生成して、学習モデルであるコード生成モデルに入力するフロントエンド部と、
前記フロントエンド部によって入力された前記プロンプトに対して前記コード生成モデルによって生成されたソースコードの実行時間を見積もる実行時間見積部と
、
過去に生成されたソースコードから、前記1つ以上の機能のうち一部の機能についてのソースコードを取得する検索部と
を備え
、
前記フロントエンド部は、前記検索部によってソースコードが取得されなかった機能を実現するソースコードの生成を指示するコード生成用のプロンプトを生成して、前記コード生成モデルに入力し、
前記実行時間見積部は、前記検索部によって検索されたソースコードと、前記プロンプトに対して前記コード生成モデルによって生成されたソースコードとを結合して得られたソースコードの実行時間を見積もる実行時間見積装置。
【請求項2】
自然言語で記述されたソフトウェアの
複数の機能を示す機能記述から、前記
複数の機能を実現するソースコードの生成を指示するコード生成用のプロンプトを生成して、学習モデルであるコード生成モデルに入力するフロントエンド部と、
前記フロントエンド部によって入力された前記プロンプトに対して前記コード生成モデルによって生成されたソースコードの実行時間を見積もる実行時間見積部と
を備え
、
前記フロントエンド部は、前記実行時間見積部によって見積もられた前記実行時間が制約条件を満たすか否かを判定し、前記実行時間が前記制約条件を満たさないと判定された場合に、前記実行時間見積部によって見積もられた前記実行時間を参照して、前記複数の機能のうち実行時間が最も長い機能を特定し、特定した前記実行時間が最も長い機能について、前記ソフトウェアの機能の緩和条件に従い、実行時間が改善されるように前記コード生成用のプロンプトを再生成して、前記コード生成モデルに入力し、
前記実行時間見積部は、再生成された前記プロンプトに対して前記コード生成モデルによって生成されたソースコードの実行時間を見積もる実行時間見積装置。
【請求項3】
前記フロントエンド部は、
前記機能記述の入力を受け付ける入力処理部と、
前記実行時間を出力する情報出力部と
を備える請求項1
又は2に記載の実行時間見積装置。
【請求項4】
コンピュータが、自然言語で記述されたソフトウェアの1つ以上の機能を示す機能記述から、前記1つ以上の機能を実現するソースコードの生成を指示するコード生成用のプロンプトを生成して、学習モデルであるコード生成モデルに入力し、
コンピュータが、前記プロンプトに対して前記コード生成モデルによって生成されたソースコードの実行時間を見積も
り、
コンピュータが、過去に生成されたソースコードから、前記1つ以上の機能のうち一部の機能についてのソースコードを取得し、
コンピュータが、ソースコードが取得されなかった機能を実現するソースコードの生成を指示するコード生成用のプロンプトを生成して、前記コード生成モデルに入力し、
コンピュータが、検索されたソースコードと、前記プロンプトに対して前記コード生成モデルによって生成されたソースコードとを結合して得られたソースコードの実行時間を見積もる実行時間見積方法。
【請求項5】
コンピュータが、自然言語で記述されたソフトウェアの
複数の機能を示す機能記述から、前記
複数の機能を実現するソースコードの生成を指示するコード生成用のプロンプトを生成して、学習モデルであるコード生成モデルに入力し、
コンピュータが、前記プロンプトに対して前記コード生成モデルによって生成されたソースコードの実行時間を見積も
り、
コンピュータが、見積もられた前記実行時間が制約条件を満たすか否かを判定し、前記実行時間が前記制約条件を満たさないと判定された場合に、見積もられた前記実行時間を参照して、前記複数の機能のうち実行時間が最も長い機能を特定し、特定した前記実行時間が最も長い機能について、前記ソフトウェアの機能の緩和条件に従い、実行時間が改善されるように前記コード生成用のプロンプトを再生成して、前記コード生成モデルに入力し、
コンピュータが、再生成された前記プロンプトに対して前記コード生成モデルによって生成されたソースコードの実行時間を見積もる実行時間見積方法。
【請求項6】
自然言語で記述されたソフトウェアの1つ以上の機能を示す機能記述から、前記1つ以上の機能を実現するソースコードの生成を指示するコード生成用のプロンプトを生成して、学習モデルであるコード生成モデルに入力するフロントエンド処理と、
前記フロントエンド処理によって入力された前記プロンプトに対して前記コード生成モデルによって生成されたソースコードの実行時間を見積もる実行時間見積処理と
、
過去に生成されたソースコードから、前記1つ以上の機能のうち一部の機能についてのソースコードを取得する検索処理と
を行う実行時間見積装置としてコンピュータを機能させ
、
前記フロントエンド処理では、前記検索処理によってソースコードが取得されなかった機能を実現するソースコードの生成を指示するコード生成用のプロンプトを生成して、前記コード生成モデルに入力し、
前記実行時間見積処理では、前記検索処理によって検索されたソースコードと、前記プロンプトに対して前記コード生成モデルによって生成されたソースコードとを結合して得られたソースコードの実行時間を見積もる実行時間見積プログラム。
【請求項7】
自然言語で記述されたソフトウェアの
複数の機能を示す機能記述から、前記
複数の機能を実現するソースコードの生成を指示するコード生成用のプロンプトを生成して、学習モデルであるコード生成モデルに入力するフロントエンド処理と、
前記フロントエンド処理によって入力された前記プロンプトに対して前記コード生成モデルによって生成されたソースコードの実行時間を見積もる実行時間見積処理と
を行う実行時間見積装置としてコンピュータを機能させ
、
前記フロントエンド処理では、前記実行時間見積処理によって見積もられた前記実行時間が制約条件を満たすか否かを判定し、前記実行時間が前記制約条件を満たさないと判定された場合に、前記実行時間見積処理によって見積もられた前記実行時間を参照して、前記複数の機能のうち実行時間が最も長い機能を特定し、特定した前記実行時間が最も長い機能について、前記ソフトウェアの機能の緩和条件に従い、実行時間が改善されるように前記コード生成用のプロンプトを再生成して、前記コード生成モデルに入力し、
前記実行時間見積処理では、再生成された前記プロンプトに対して前記コード生成モデルによって生成されたソースコードの実行時間を見積もる実行時間見積プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ソフトウェアの実行時間を見積もる技術に関する。
【背景技術】
【0002】
組み込みソフトウェアの開発では、リアルタイム制約を満たすために開発対象のソフトウェアの実行時間を見積もることが重要である。
実行時間を把握する方法として、動作環境でのソフトウェア実行する方法と、エミュレータ及びシミュレーションを用いた方法とがある。しかし、動作環境でのソフトウェア実行する方法には、開発の早期段階で動作環境が手元にないという問題がある。また、エミュレータ及びシミュレーションを用いた方法には、シミュレーション実行に時間がかかるという問題がある。
【0003】
特許文献1では、この問題を解決するために、コンパイラによるプログラム解析技術を活用してソフトウェアの実行時間を見積もる技術を提示している。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1で提示された技術により、見積対象プログラムの構成命令列から柔軟に実行時間の見積もりができるようになる。しかし、特許文献1で提示された技術では、ソフトウェアのソースコードの実装が完了していることが前提である。そのため、実装工程終了後でないと実行時間の見積をすることができない。したがって、実行時間の目標を達成できなかった場合には、実装工程から設計工程までの手戻りが発生してしまう。
本開示は、設計工程で実行時間を見積もりできるようにすることを目的とする。
【課題を解決するための手段】
【0006】
本開示に係る実行時間見積装置は、
自然言語で記述されたソフトウェアの1つ以上の機能を示す機能記述から、前記1つ以上の機能を実現するソースコードの生成を指示するコード生成用のプロンプトを生成して、学習モデルであるコード生成モデルに入力するフロントエンド部と、
前記フロントエンド部によって入力された前記プロンプトに対して前記コード生成モデルによって生成されたソースコードの実行時間を見積もる実行時間見積部と
を備える。
【発明の効果】
【0007】
本開示では、自然言語で記述されたソフトウェアの機能記述からコード生成用のプロンプトを生成してコード生成モデルに入力し、コード生成モデルによって生成されたソースコードの実行時間が見積もられる。これにより、設計工程で実行時間を見積もりすることが可能である。
【図面の簡単な説明】
【0008】
【
図1】実施の形態1に係る実行時間見積装置10の機能構成図。
【
図2】実施の形態1に係るフロントエンド部13の機能構成図。
【
図3】実施の形態1に係る実行時間見積装置10のハードウェア構成図。
【
図4】実施の形態1に係る実行時間見積装置10の処理の流れを示すフローチャート。
【
図5】実施の形態1に係るユーザによって入力されるデータの説明図。
【
図6】実施の形態1に係るユーザに提示される情報の説明図。
【
図7】実施の形態1に係るユーザに提示される情報の説明図。
【
図8】実施の形態2に係る実行時間見積装置10の機能構成図。
【
図9】実施の形態2に係るデータベース部16に記憶される情報の説明図。
【
図10】実施の形態2に係るフロントエンド部13の機能構成図。
【
図11】実施の形態2に係る実行時間見積装置10の処理の流れを示すフローチャート。
【
図12】実施の形態2に係る実行時間見積装置10の処理の流れを示すフローチャート。
【発明を実施するための形態】
【0009】
実施の形態1.
***構成の説明***
図1を参照して、実施の形態1に係る実行時間見積装置10の機能構成を説明する。
実行時間見積装置10は、機能構成要素として、コード生成モデル11と、実行時間見積部12と、フロントエンド部13とを備える。
コード生成モデル11は、コード生成用のプロンプトを入力として受け取り、ソフトウェアのソースコードを生成する学習モデルである。実行時間見積部12は、ソースコードを入力として受け取り、ソースコードの実行時間を見積もる機能である。フロントエンド部13は、ユーザとのデータのやり取りを行うとともに、コード生成モデル11及び実行時間見積部12とデータの送受信を行う機能である。
フロントエンド部13は、通信ネットワーク14を介して、ユーザ端末30等の外部の装置と接続される。通信ネットワーク14は、データの送受信を行うためのネットワークである。また、コード生成モデル11と実行時間見積部12とフロントエンド部13とは、伝送パス15を介して接続されている。伝送パス15は、コード生成モデル11と実行時間見積部12とフロントエンド部13との間でのデータの伝送を行うためのパスである。
【0010】
学習モデルは、いわゆる生成AIである。AIは、Artificial Intelligenceである。学習モデルは、具体例としては、BERT、GPT等のアルゴリズムを用いて構成されてもよい。BERTは、Bidirectional Encoder Representations from Transformersの略である。GPTは、Generative Pretrained Transformerの略である。学習モデルは、これらのアルゴリズムを含む複数のアルゴリズムを組み合わせて構成されてもよい。
図1では、実行時間見積装置10が学習モデルであるコード生成モデル11を備える構成が示されている。しかし、コード生成モデル11は、実行時間見積装置10の外部に設けられていてもよい。
【0011】
図2を参照して、実施の形態1に係るフロントエンド部13の機能構成を説明する。
フロントエンド部13は、機能構成要素として、入力処理部131と、情報出力部132と、データ送信部133と、プロンプト生成部134と、妥当性判定部135と、データ受信部136とを備える。これらの機能構成要素は、伝送パス137を介して接続されている。
入力処理部131は、ユーザ端末30からの入力を分割する機能である。情報出力部132は、実行時間の見積結果に関する情報を出力する機能である。データ送信部133は、コード生成用のプロンプトをコード生成モデル11に送信するとともに、コード生成モデル11によって生成されたソースコードを実行時間見積部12に送信する機能である。プロンプト生成部134は、コード生成モデル11に送信するコード生成用のプロンプトを生成する機能である。妥当性判定部135は、実行時間見積部12の見積結果とユーザ端末30から入力された実行時間に関する制約条件とを比較し、見積結果が制約条件を満たすか否かを判定する機能である。データ受信部136は、コード生成モデル11及び実行時間見積部12から出力された情報を受信する機能である。伝送パス137は、各機能構成要素の間でデータの伝送を行うためのパスである。
【0012】
図3を参照して、実施の形態1に係る実行時間見積装置10のハードウェア構成を説明する。
実行時間見積装置10は、ストレージ21と、プロセッサ22と、メモリ23と、ネットワークインターフェース24とを備える。
ストレージ21は、SSDといった記憶媒体である。SSDは、Solid State Driveの略である。ストレージ21は、SD(登録商標)メモリカード、CompactFlash(登録商標)、NANDフラッシュ、フレキシブルディスク、光ディスク、コンパクトディスク、Blu-ray(登録商標)ディスク、DVDといった可搬記録媒体であってもよい。SDは、Secure Digitalの略である。DVDは、Digital Versatile Diskの略である。
【0013】
プロセッサ22は、プロセッシングを行うICである。ICはIntegrated Circuitの略である。プロセッサ22は、具体例としては、CPUである。CPUは、Central Processing Unitの略である。
【0014】
メモリ23は、データを一時的に記憶する記憶装置である。メモリ23は、具体例としては、SRAM、DRAMである。SRAMは、Static Random Access Memoryの略である。DRAMは、Dynamic Random Access Memoryの略である。
【0015】
ネットワークインターフェース24は、外部の装置と通信するためのインタフェースである。ネットワークインターフェース24は、具体例としては、Ethernet(登録商標)、USBのポートである。USBは、Universal Serial Busの略である。
【0016】
ストレージ21には、各機能構成要素を実現するプログラムが記憶されている。このプログラムは、プロセッサ22によってメモリ23に読み出され、実行される。これにより、各機能構成要素の機能が実現される。また、ストレージ21には、各機能構成要素が扱うデータが格納される。
【0017】
***動作の説明***
図4から
図7を参照して、実施の形態1に係る実行時間見積装置10の動作を説明する。
実施の形態1に係る実行時間見積装置10の動作手順は、実施の形態1に係る実行時間見積方法に相当する。また、実施の形態1に係る実行時間見積装置10の動作を実現するプログラムは、実施の形態1に係る実行時間見積プログラムに相当する。
【0018】
図4を参照して、実施の形態1に係る実行時間見積装置10の処理の流れを説明する。
(ステップS100:入力処理)
入力処理部131は、ユーザによって入力されたデータをユーザ端末30から受け付ける。入力処理部131は、受け付けたデータをストレージ21に書き込む。
ユーザによって入力されたデータは、自然言語で記述したソフトウェアを構成する1つ以上の機能からなる機能群を示す機能記述と、その機能群の実行時間の制約条件と、実行時間の制約条件を満たせなかった場合の機能の緩和条件とを含む。
【0019】
例えば、ユーザによって入力されたデータは、
図5に示すテンプレートに従ったデータである。
ソースコードの機能(func)の欄に、実現する1つ以上の機能が自然言語で記述される。例えば、ソースコードの機能(func)の欄に、フーリエ変換を行う関数と記載される。関数の入力値(input)の欄に、ソースコードの機能(func)の欄に記述された機能を実現する関数に必要な引数が自然言語で記述される。例えば、関数の入力値(input)の欄に、2つのdouble型のメンバ(入力と出力)を持つ構造体と記述される。関数の出力値(output)の欄に、ソースコードの機能(func)の欄に記述された機能を実現する関数の戻り値が自然言語で記述される。例えば、関数の出力値(output)の欄に、2つのdouble型のメンバ(データAとデータB)を持つ構造体と記述される。制約事項(constraint)の欄に、ソースコードの機能(func)の欄に記述された機能を実現する関数の実行環境に関する制約内容が自然言語で記述される。例えば、制約事項(constraint)の欄に、Xilinx製の評価ボードZedboardを対象にする、Linux(登録商標)OSを使用する、FPGAを使用すると記述される。緩和条件の欄には、機能の緩和内容が自然言語で記述される。実行時間の制約条件(X)の欄に、満たすべき実行時間が記述される。例えば、実行時間の制約条件(X)の欄に、100μs(マイクロ秒)と記述される。
【0020】
(ステップS101:プロンプト生成処理)
プロンプト生成部134は、ストレージ21から自然言語で記述されたソフトウェアの1つ以上の機能の機能記述を読み出す。プロンプト生成部134は、機能記述から、1つ以上の機能を実現するソースコードの生成を指示するコード生成用のプロンプトを生成する。プロンプト生成部134は、コード生成用のプロンプトをデータ送信部133を介してコード生成モデル11に入力する。
すると、コード生成モデル11は、入力されたプロンプトに対してソフトウェアのソースコードを生成する。コード生成モデル11は、ソースコードをフロントエンド部13に出力する。データ受信部136は、コード生成モデル11によって出力されたソースコードを受信する。
【0021】
(ステップS102:ソースコード出力処理)
情報出力部132は、受信されたソースコードをユーザ端末30に出力する。
【0022】
(ステップS103:ソースコード判定処理)
ユーザ端末30は、ソースコードを表示して、ソースコードをユーザに提示する。そして、ユーザ端末30は、ユーザからソースコードを受け入れるか否かの入力を受け付ける。
ユーザ端末30は、ユーザがソースコードを受け入れる場合には、処理をステップS104に進める。一方、ユーザ端末30は、ユーザがソースコードを受け入れない場合には、処理をステップS100に戻し、ソースコードの修正案等を含むデータをユーザに入力させる等する。そして、コード生成モデル11にソースコードを再生成させる。
【0023】
(ステップS104:実行時間見積処理)
データ送信部133は、ステップS102で受信されたソースコードを実行時間見積部12に送信して、実行時間見積部12にソースコードの実行時間の見積もりをさせる。実行時間見積部12は、特許文献1に記載された方法等によりソースコードの実行時間を見積もる。ここでは、実行時間見積部12は、ソースコードの合計の実行時間とともに、1つ以上の機能それぞれについて実行時間を見積もるものとする。
【0024】
(ステップS105:見積結果受信処理)
データ受信部136は、実行時間見積部12によって見積もりされた結果を受信する。妥当性判定部135は、ストレージ21から実行時間の制約条件を読み出す。妥当性判定部135は、見積もりされた結果が示す合計の実行時間が、実行時間の制約条件を満たすか否かを判定する。妥当性判定部135は、合計の実行時間が、実行時間の制約条件が示す時間以内の場合には、制約条件を満たすと判定する。
妥当性判定部135は、実行時間が、実行時間の制約条件を満たす場合には、処理をステップS106に進める。一方、妥当性判定部135は、実行時間が、実行時間の制約条件を満たさない場合には、処理をステップS107に進める。
【0025】
(ステップS106:結果提示処理)
情報出力部132は、ステップS105で受信された見積もりされた結果をユーザ端末30に出力して、ユーザに提示させる。この際、情報出力部132は、見積もりされた結果とともに、実行時間の制約条件と、ソースコードと等も出力して提示させてもよい。
【0026】
(ステップS107:緩和条件判定処理)
プロンプト生成部134は、ストレージ21から、実行時間の制約条件を満たせなかった場合の各機能の緩和条件を読み出す。プロンプト生成部134は、見積もりされた結果が示す機能毎の実行時間を参照して、実行時間が最も長い機能を特定する。プロンプト生成部134は、特定された機能について緩和条件が設定されているか否かを判定する。
プロンプト生成部134は、緩和条件が設定されている場合には、処理をステップS108に進める。一方、プロンプト生成部134は、緩和条件が設定されていない場合には、処理をステップS106に進める。つまり、緩和条件が設定されていない場合には、情報出力部132は、ステップS105で受信された、制約条件を満たしていない結果をユーザ端末30に出力する。
【0027】
(ステップS108:プロンプト再生成処理)
プロンプト生成部134は、実行時間が最も長い機能についての緩和条件に沿って、実行時間が最も長い機能についての実行時間が改善するように、コード生成用のプロンプトを再生成する。そして、プロンプト生成部134は、処理をステップS101に戻して、再生成したプロンプトをコード生成モデル11に入力して、ソースコードを再生成させる。
【0028】
ステップS106では、例えば、
図6に示すような情報がユーザに提示される。
図6では、機能毎の実行時間が示されるとともに、合計の実行時間が、実行時間の制約条件を示す目標実行時間と対比されて示されている。また、ソースコードをダウンロードするためのリンクが示されている。
また、1度目に生成されたソースコードでは制約条件を満たせず、機能の緩和がされてソースコードが再生成された場合には、例えば、
図7に示すような情報がユーザに提示される。
図7では、1回目の見積もりとは別のタブで、2回目の見積もりとして再生成されたソースコードについての見積もりが提示されている。提示されている内容として、ソースコードについて1回目との変更点が加えられている。
【0029】
***実施の形態1の効果***
以上のように、実施の形態1に係る実行時間見積装置10は、自然言語で記述されたソフトウェアの機能記述からコード生成用のプロンプトを生成してコード生成モデル11に入力し、コード生成モデル11によって生成されたソースコードの実行時間が見積もられる。これにより、設計工程で実行時間を見積もりすることが可能である。
【0030】
また、実施の形態1に係る実行時間見積装置10は、見積もりされた実行時間が制約条件を満たさない場合には、緩和条件を適用してソースコードが再生成される。そして、再生成されたソースコードについて実行時間を見積もる。これにより、制約条件を満たす機能構成を特定することが可能である。
【0031】
また、実施の形態1に係る実行時間見積装置10は、実行時間が最も長い機能について緩和条件を適用する。これにより、効率的に実行時間を削減したソースコードを再生成可能である。
【0032】
***他の構成***
<変形例1>
実施の形態1では、実行時間が最も長い機能に緩和条件が設定されていない場合には、緩和条件の適用を行わなかった。しかし、プロンプト生成部134は、緩和条件が設定されている機能のうち、最も実行時間が長い機能に対して緩和条件を適用するようにしてもよい。これにより、実行時間が最も長い機能に緩和条件が設定されていない場合であっても、2番目に実行時間が最も長い機能に対して緩和条件を適用するといったことが可能になる。
但し、実行時間が短い機能に対して緩和条件を適用しても効果があまり得られない。そこで、合計の実行時間のうち基準割合以上の実行時間となっている機能だけを緩和条件の適用対象としてもよい。
【0033】
実施の形態2.
実施の形態2は、過去に生成されたソースコードを利用する点が実施の形態1と異なる。実施の形態2では、この異なる点を説明し、同一の点については説明を省略する。
【0034】
***構成の説明***
図8を参照して、実施の形態2に係る実行時間見積装置10の機能構成を説明する。
実行時間見積装置10は、機能構成要素として、データベース部16を備える点が
図1に示す実行時間見積装置10と異なる。データベース部16は、過去に生成されたソースコードを機能と対応付けて記憶する。データベース部16は、ストレージ21によって実現される。
【0035】
図9を参照して、実施の形態2に係るデータベース部16に記憶される情報を説明する。
データベース部16には、関数名毎に、機能と、作成者と、ソースと、等級と、プロンプトとが記憶される。関数名は、ソースコードに付与された関数の名称である。機能は、ソースコードの機能を自然言語で記述したものである。作成者は、ソースコードの作成者である。ソースは、ソースコードがコード生成モデル11によって生成されたか、組織員の誰かが作成したかを示す。
図9では、組織員の誰かが作成した場合には、ハンドコードと設定されている。等級は、ソースコードが公知であるか、組織内で秘匿されるかが設定される。プロンプトは、ソースコードがコード生成モデル11によって生成された場合に、生成時にコード生成モデル11に与えられたプロンプトである。
【0036】
図10を参照して、実施の形態2に係るフロントエンド部13の機能構成を説明する。
フロントエンド部13は、検索部138と、結合部139とを備える点が
図3に示すフロントエンド部13と異なる。検索部138は、データベース部16からソースコードを検索する機能である。結合部139は、データベース部16から検索されたソースコードと、コード生成モデル11によって生成されたソースコードとを結合する機能である。
【0037】
***動作の説明***
図11及び
図12を参照して、実施の形態2に係る実行時間見積装置10の動作を説明する。
ステップS200の処理は、
図4のステップS100の処理と同じである。
【0038】
(ステップS201:検索処理)
検索部138は、ストレージ21から自然言語で記述されたソフトウェアの1つ以上の機能の機能記述を読み出す。検索部138は、1つ以上の機能それぞれを対象として、対象の機能のソースコードをデータベース部16から検索する。具体的には、検索部138は、データベース部16の機能に対象の機能が設定されたレコードを特定し、そのレコードのソースコードを取得する。
検索部138は、ソースコードが存在する機能があった場合には、処理をステップS202に進める。一方、ソースコードが存在する機能がなかった場合には、処理をステップS203に進める。
【0039】
(ステップS202:第1プロンプト生成処理)
プロンプト生成部134は、ソースコードが存在しなかった機能を実現するソースコードの生成を指示するコード生成用のプロンプトを生成する。プロンプト生成部134は、コード生成用のプロンプトをデータ送信部133を介してコード生成モデル11に入力する。
すると、コード生成モデル11は、入力されたプロンプトに対してソフトウェアのソースコードを生成する。コード生成モデル11は、ソースコードをフロントエンド部13に出力する。データ受信部136は、コード生成モデル11によって出力されたソースコードを受信する。
【0040】
(ステップS203:第2プロンプト生成処理)
プロンプト生成部134は、
図4のステップS101と同様に、1つ以上の機能全てを実現するソースコードの生成を指示するコード生成用のプロンプトを生成する。プロンプト生成部134は、コード生成用のプロンプトをデータ送信部133を介してコード生成モデル11に入力する。
すると、コード生成モデル11は、入力されたプロンプトに対してソフトウェアのソースコードを生成する。コード生成モデル11は、ソースコードをフロントエンド部13に出力する。データ受信部136は、コード生成モデル11によって出力されたソースコードを受信する。
【0041】
(ステップS204:結合処理)
結合部139は、ステップS201で取得されたソースコードと、ステップS202で生成されたソースコードとを結合して、1つ以上の機能全てを実現するソースコードを生成する。
【0042】
(ステップS205:ソースコード出力処理)
情報出力部132は、ステップS203で受信されたソースコード、又は、ステップS204で生成されたソースコードをユーザ端末30に出力する。
【0043】
ステップS206からステップS210の処理は、
図4のステップS103からステップS107の処理と同じである。
【0044】
(ステップS211:ソース判定処理)
プロンプト生成部134は、実行時間が最も長い機能のソースコードがコード生成モデル11によって生成されたものであるか否かを判定する。
プロンプト生成部134は、コード生成モデル11によって生成されたものである場合には、処理をステップS213に進める。プロンプト生成部134は、コード生成モデル11によって生成されたものでない場合には、処理をステップS212に進める。
【0045】
(ステップS212:等級判定処理)
プロンプト生成部134は、実行時間が最も長い機能のソースコードが公知のものであるか否かを判定する。
プロンプト生成部134は、公知のものである場合には、処理をステップS213に進める。一方、プロンプト生成部134は、公知のものでない場合には、処理をステップS209に進める。
【0046】
ステップS213の処理は、
図4のステップS108の処理と同じである。
【0047】
(ステップS214:ソースコード生成処理)
プロンプト生成部134は、ステップS213で生成されたプロンプトをコード生成モデル11に入力して、ソースコードを再生成させる。そして、処理をステップS205に戻す。
【0048】
***実施の形態2の効果***
以上のように、実施の形態2に係る実行時間見積装置10は、過去に生成されたソースコードを利用する。これにより、実績があるソースコードの利用が可能になるため、見積もり結果の信頼性を高くすることが可能である。
【0049】
また、実施の形態2に係る実行時間見積装置10は、過去に生成されたソースコードをコード生成モデル11に記憶させず、データベース部16を用いて管理する。これにより、過去に生成されたソースコードを組織内で秘匿することが可能になる。そのため、情報流出を気にせず、ハンドコードのソースコードを利用することが可能になる。
【0050】
***他の構成***
<変形例2>
実施の形態1では、各機能構成要素がソフトウェアで実現された。しかし、変形例2として、各機能構成要素はハードウェアで実現されてもよい。この変形例2について、実施の形態1と異なる点を説明する。
【0051】
各機能構成要素がハードウェアで実現される場合には、実行時間見積装置10は、ストレージ21とプロセッサ22とメモリ23とに代えて、電子回路を備える。電子回路は、各機能構成要素と、ストレージ21と、メモリ23との機能とを実現する専用の回路である。
【0052】
電子回路としては、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックIC、GA、ASIC、FPGAが想定される。GAは、Gate Arrayの略である。ASICは、Application Specific Integrated Circuitの略である。FPGAは、Field-Programmable Gate Arrayの略である。
各機能構成要素を1つの電子回路で実現してもよいし、各機能構成要素を複数の電子回路に分散させて実現してもよい。
【0053】
<変形例3>
変形例3として、一部の各機能構成要素がハードウェアで実現され、他の各機能構成要素がソフトウェアで実現されてもよい。
【0054】
ストレージ21とプロセッサ22とメモリ23と電子回路とを処理回路という。つまり、各機能構成要素の機能は、処理回路により実現される。
【0055】
また、以上の説明における「部」を、「回路」、「工程」、「手順」、「処理」又は「処理回路」に読み替えてもよい。
【0056】
以下、本開示の諸態様を付記としてまとめて記載する。
(付記1)
自然言語で記述されたソフトウェアの1つ以上の機能を示す機能記述から、前記1つ以上の機能を実現するソースコードの生成を指示するコード生成用のプロンプトを生成して、学習モデルであるコード生成モデルに入力するフロントエンド部と、
前記フロントエンド部によって入力された前記プロンプトに対して前記コード生成モデルによって生成されたソースコードの実行時間を見積もる実行時間見積部と
を備える実行時間見積装置。
(付記2)
前記フロントエンド部は、
前記実行時間見積部によって見積もられた前記実行時間が制約条件を満たすか否かを判定する付記1に記載の実行時間見積装置。
(付記3)
前記フロントエンド部は、前記妥当性検証部によって前記実行時間が前記制約条件を満たさないと判定された場合に、前記ソフトウェアの機能の緩和条件に従い、前記コード生成用のプロンプトを再生成して、前記コード生成モデルに入力し、
前記実行時間見積部は、再生成された前記プロンプトに対して前記コード生成モデルによって生成されたソースコードの実行時間を見積もる
付記2に記載の実行時間見積装置。
(付記4)
前記フロントエンド部は、前記1つ以上の機能のうち実行時間が最も長い機能について、実行時間が改善されるように前記コード生成用のプロンプトを再生成する
付記3に記載の実行時間見積装置。
(付記5)
前記実行時間見積装置は、さらに、
過去に生成されたソースコードから、前記1つ以上の機能のうち一部の機能についてのソースコードを取得する検索部
を備え、
前記フロントエンド部は、前記検索部によってソースコードが取得されなかった機能を実現するソースコードの生成を指示するコード生成用のプロンプトを生成して、前記コード生成モデルに入力し、
前記実行時間見積部は、前記検索部によって検索されたソースコードと、前記プロンプトに対して前記コード生成モデルによって生成されたソースコードとを結合して得られたソースコードの実行時間を見積もる
付記1から4までのいずれか1項に記載の実行時間見積装置。
(付記6)
前記フロントエンド部は、
前記機能記述の入力を受け付ける入力処理部と、
前記実行時間を出力する情報出力部と
を備える付記1から5までのいずれか1項に記載の実行時間見積装置。
(付記7)
コンピュータが、自然言語で記述されたソフトウェアの1つ以上の機能を示す機能記述から、前記1つ以上の機能を実現するソースコードの生成を指示するコード生成用のプロンプトを生成して、学習モデルであるコード生成モデルに入力し、
コンピュータが、前記プロンプトに対して前記コード生成モデルによって生成されたソースコードの実行時間を見積もる実行時間見積方法。
(付記8)
自然言語で記述されたソフトウェアの1つ以上の機能を示す機能記述から、前記1つ以上の機能を実現するソースコードの生成を指示するコード生成用のプロンプトを生成して、学習モデルであるコード生成モデルに入力するフロントエンド処理と、
前記フロントエンド処理によって入力された前記プロンプトに対して前記コード生成モデルによって生成されたソースコードの実行時間を見積もる実行時間見積処理と
を行う実行時間見積装置としてコンピュータを機能させる実行時間見積プログラム。
【0057】
以上、本開示の実施の形態及び変形例について説明した。これらの実施の形態及び変形例のうち、いくつかを組み合わせて実施してもよい。また、いずれか1つ又はいくつかを部分的に実施してもよい。なお、本開示は、以上の実施の形態及び変形例に限定されるものではなく、必要に応じて種々の変更が可能である。
【符号の説明】
【0058】
10 実行時間見積装置、11 コード生成モデル、12 実行時間見積部、13 フロントエンド部、131 入力処理部、132 情報出力部、133 データ送信部、134 プロンプト生成部、135 妥当性判定部、136 データ受信部、137 伝送パス、138 検索部、139 結合部、14 通信ネットワーク、15 伝送パス、16 データベース部、21 ストレージ、22 プロセッサ、23 メモリ、24 ネットワークインターフェース、30 ユーザ端末。
【要約】
フロントエンド部(13)は、自然言語で記述されたソフトウェアの1つ以上の機能を示す機能記述から、1つ以上の機能を実現するソースコードの生成を指示するコード生成用のプロンプトを生成して、学習モデルであるコード生成モデル(11)に入力する。実行時間見積部(12)は、フロントエンド部(13)によって入力されたプロンプトに対してコード生成モデル(11)によって生成されたソースコードの実行時間を見積もる。