JP7351352B2 - プログラム生成装置、プログラム生成方法及びプログラム - Google Patents

プログラム生成装置、プログラム生成方法及びプログラム Download PDF

Info

Publication number
JP7351352B2
JP7351352B2 JP2021570554A JP2021570554A JP7351352B2 JP 7351352 B2 JP7351352 B2 JP 7351352B2 JP 2021570554 A JP2021570554 A JP 2021570554A JP 2021570554 A JP2021570554 A JP 2021570554A JP 7351352 B2 JP7351352 B2 JP 7351352B2
Authority
JP
Japan
Prior art keywords
program
input
output
synthesis
code
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.)
Active
Application number
JP2021570554A
Other languages
English (en)
Other versions
JPWO2021144904A1 (ja
Inventor
利行 倉林
弘之 切貫
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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Publication of JPWO2021144904A1 publication Critical patent/JPWO2021144904A1/ja
Application granted granted Critical
Publication of JP7351352B2 publication Critical patent/JP7351352B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/425Lexical analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/40Processing or translation of natural language
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Stored Programmes (AREA)

Description

本発明は、プログラム生成装置、プログラム生成方法及びプログラムに関する。
近年、社会全体のIT化が進む一方で、IT人材の不足が大きな問題となっている。経済産業省の試算によると、2025年には約36万人のIT人材が不足すると予測されている。特に専門的な知識を必要とする実装工程におけるIT人材の不足は喫緊の課題であり、自動でプログラミングを行う自動プログラミング技術の研究開発が求められている。
従来、自動プログラミング技術として、自然言語を用いた自動プログラミングや入出力例を用いた自動プログラミング等が知られている。
自然言語を用いた自動プログラミングでは、ユーザが自然言語によって記述した仕様からプログラムを自動生成する。例えば、非特許文献1には、自然言語と対応するプログラムの関係を機械翻訳モデルを使用して学習することで、自然言語からプログラムを自動生成することを可能とする技術が開示されている。
入出力例を用いた自動プログラミングでは、ユーザがプログラムの具体的な入出力例を1つ以上与え、その入出力例を満たすようにプログラムの部品を合成する。例えば、非特許文献2には、与えられた入出力例を満たすExcel(登録商標)関数を自動合成する技術が開示されている。
札場 寛之, 小田 悠介, Graham Neubig, 吉野 幸一郎, 中村 哲、"統計的機械翻訳を用いた自然言語からのソースコード生成" 言語処理学会 第22回年次大会 発表論文集 (2016年3月)、[online]、インターネット<URL:https://ahcweb01.naist.jp/papers/conference/2015/201603_NLP_Fudaba_1/201603_NLP_Fudaba_1.paper.pdf> Sumit Gulwani、"Automating String Processing in Spreadsheets Using Input-Output Examples" POPL '11 Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages Pages 317-330、[online]、インターネット<URL:https://dl.acm.org/citation.cfm?id=1926423>
しかしながら、自然言語というあいまいな情報から正しいプログラムを生成することは難しく、プログラム全体の構造は正しい構造に対して近い物ができても、細かい処理の部分について誤ったプログラムが生成されてしまう可能性が高い。
また、入出力例はそのプログラムが満たす仕様の一例にすぎず、情報量が少ないといった欠点がある。そのため、入出力例にオーバーフィッティングしたプログラムが生成されてしまう可能性が高い。
本発明は、上記の点に鑑みてなされたものであって、所望のプログラムが自動生成される可能性を高めることを目的とする。
そこで上記課題を解決するため、プログラム生成装置は、自然言語によって記述されたプログラムの仕様と、前記プログラムとの関係を学習したモデルに対して、生成対象のプログラムについて自然言語によって記述された仕様を入力して第1のプログラムを生成する生成部と、複数のプログラム部品を用いて前記第1のプログラムを変更して、1以上の入力値及び出力値の組を満たす第2のプログラムを生成する変更部と、を有する。
所望のプログラムが自動生成される可能性を高めることができる。
本発明の実施の形態におけるプログラム生成装置10のハードウェア構成例を示す図である。 本発明の実施の形態におけるプログラム生成装置10の機能構成例を示す図である。 プログラム生成装置10が実行する処理手順の一例を説明するためのフローチャートである。 生成モデルの学習処理の処理手順の一例を説明するためのフローチャートである。 学習用データセットの例を示す図である。 雛形コード生成処理の処理手順の一例を説明するためのフローチャートである。 雛形コード生成処理の具体例を示す図である。 プログラム合成処理の処理手順の一例を説明するためのフローチャートである。 入出力例セットの一例を示す図である。 プログラム部品リストの一例を示す図である。 合成コードの変更処理によって生成される合成コードの一例を示す図である。
以下、図面に基づいて本発明の実施の形態を説明する。図1は、本発明の実施の形態におけるプログラム生成装置10のハードウェア構成例を示す図である。図1のプログラム生成装置10は、それぞれバスBで相互に接続されているドライブ装置100、補助記憶装置102、メモリ装置103、CPU104、インタフェース装置105、表示装置106、及び入力装置107等を有する。
プログラム生成装置10での処理を実現するプログラムは、CD-ROM等の記録媒体101によって提供される。プログラムを記憶した記録媒体101がドライブ装置100にセットされると、プログラムが記録媒体101からドライブ装置100を介して補助記憶装置102にインストールされる。但し、プログラムのインストールは必ずしも記録媒体101より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置102は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
メモリ装置103は、プログラムの起動指示があった場合に、補助記憶装置102からプログラムを読み出して格納する。CPU104は、メモリ装置103に格納されたプログラムに従ってプログラム生成装置10に係る機能を実現する。インタフェース装置105は、ネットワークに接続するためのインタフェースとして用いられる。表示装置106はプログラムによるGUI(Graphical User Interface)等を表示する。入力装置107はキーボード及びマウス等で構成され、様々な操作指示を入力させるために用いられる。
図2は、本発明の実施の形態におけるプログラム生成装置10の機能構成例を示す図である。図2において、プログラム生成装置10は、学習部11、雛形コード生成部12、プログラム合成部13、合成プログラム実行部14及び入出力結果判定部15を有する。これら各部は、プログラム生成装置10にインストールされた1以上のプログラムが、CPU104に実行させる処理により実現される。
以下、プログラム生成装置10が実行する処理手順について説明する。図3は、プログラム生成装置10が実行する処理手順の一例を説明するためのフローチャートである。
ステップS10において、学習部11は、RNN(Recurrent Neural Network)等のニューラルネットワークによって構成されるモデル(以下、「生成モデル」という。)に、自然言語で記述された仕様と、プログラム(のソースコード)との関係性を学習させる。
続いて、雛形コード生成部12は、雛形コード生成処理を実行する(S20)。雛形コード生成処理では、ステップS10において学習済みの生成モデルに対して、生成対象のプログラム(以下「対象プログラム」という。)について自然言語によって記述された仕様が入力されて、対象プログラムの初版の(元となる)プログラムのソースコード(以下、「雛形コード」という。)が生成される。なお、ステップS20は、ステップS10に対して非同期に実行されてもよい。また、雛形コード生成処理は、非特許文献1に開示された技術を用いて実行されてもよい。
続いて、プログラム合成部13、合成プログラム実行部14及び入出力結果判定部15は、プログラム合成処理を実行する(S30)。プログラム合成処理では、雛形コード生成処理において生成された雛形コードをベースとして、予め生成された入出力例(1以上の入力値及び出力値の組)を満たすプログラム生成されるまで雛形コードの一部の変更が繰り返される(雛形コードが一部ずつ累積的に変更される)ことで、仕様(作成者の意図)を満たすような対象プログラムが自動生成される。
すなわち、本実施の形態では、自然言語で記述された対象プログラムの仕様と入出力例という2つの情報を用いることで、仕様に沿ったプログラムが生成される可能性が高められる。
続いて、図3のステップS10の詳細について説明する。図4は、生成モデルの学習処理の処理手順の一例を説明するためのフローチャートである。
ステップS101において、学習部11は、学習用データセットに含まれる各学習データに含まれている、自然言語で記述されたプログラムの仕様を単語単位に分解(分割)する。その結果、各仕様は、単語の配列(以下「単語列」という。)に変換される。
図5は、学習用データセットの例を示す図である。図5において、1つの表が1つの学習データに対応する。学習用データセットのデータ構造をBNF(Backus-Naur form)記法に基づく形式によって記すと以下の通りである。
<学習用データセット>::=[仕様 ソースコード]+
すなわち、学習用データセットは、自然言語で記述された仕様とプログラムのソースコードとから構成される1以上の学習データの集合である。このような学習用データセットが予め複数用意され、例えば、補助記憶装置102に記憶されている。
続いて、学習部11は、学習用データセットに含まれる各学習データのソースコードをトークン単位に分解(分割)する(S102)。その結果、各ソースコードは、トークンの配列(以下「トークン列」という。)に変換される。なお、トークンとは、コンパイラなどがプログラムのソースコードを解析する際に、コード上で意味を持つ最小単位の文字の並びをいう。
続いて、学習部11は、学習データごとに、当該学習データに係る単語列及びトークン列の関係を生成モデルに学習させる(S103)。
続いて、図3のステップS20の詳細について説明する。図6は、雛形コード生成処理の処理手順の一例を説明するためのフローチャートである。
ステップS201において、雛形コード生成部12は、対象プログラムの仕様(以下「対象仕様」という。)を入力する。対象仕様は、例えば、予め補助記憶装置102に記憶されている。
続いて、雛形コード生成部12は、対象仕様を単語単位に分解する(S202)。その結果、対象仕様に含まれる単語の配列(単語列)が生成される。
続いて、雛形コード生成部12は、当該単語列を生成モデルに入力することで、対象プログラムのソースコード(雛形コード)を生成する(S203)。すなわち、生成モデルから対象プログラムのトークン列が出力され、当該トークン列に基づいて雛形コードが得られる。
図7は、雛形コード生成処理の具体例を示す図である。図7には、仕様の具体例、仕様に基づく単語列の具体例、当該単語列が生成モデルに入力されることで生成モデルから出力される雛形コードの具体例が示されている。
続いて、図3のステップS30の詳細について説明する。図8は、プログラム合成処理の処理手順の一例を説明するためのフローチャートである。
ステップS301において、プログラム合成部13は、雛形コードを合成コードとする。ステップS301は、単に、呼称の変更に過ぎない。
続いて、合成コードごとにステップS302及びS303を含むループ処理L1が実行される。以下、ループ処理L1において処理対象とされている合成コードを「対象コード」という。但し、最初にループ処理L1が実行される際の合成コードは1つの雛形コードである。
ステップS302において、合成プログラム実行部14は、対象コードをコンパイル及びリンク等することで、実行形式のプログラム(以下「合成プログラム」という。)を生成する。
続いて、合成プログラム実行部14は、当該合成プログラム(以下「対象合成プログラム」という。)に対し、予め用意されている入出力例セットに含まれる各入出力例の入力値を入力して対象合成プログラムを実行し、入出力例ごとに出力値を得る(S303)。入出力例セットは、入出力に関して対象プログラムが満たすべき条件を示す情報であり、例えば、予め設定されて補助記憶装置102に記憶されている。
図9は、入出力例セットの一例を示す図である。図9に示される入出力例セットのデータ構造をBNF記法に基づく形式によって記すと以下の通りである。
<入出力例セット>::=<入出力例>+
<入出力例>::=<入力例><出力例>
<入力例>::=入力値+
<出力例>::=出力値+
すなわち、入出力例セットは1以上の入出力例を含む。1つの入出力例は入力例及び出力例の組である。入力例とは1以上の入力値をいい、出力例とは1以上の出力値をいう。
例えば、入出力例セットに含まれる入出力例がM個である場合、合成プログラム実行部14は、ステップS303において、M個の入力値ごとに当該入力値を入力として対象合成プログラムを実行し、M個の出力値を得る。
ループ処理L1が終了すると、入出力結果判定部15は、全ての出力値が、当該出力値に対応する入力値が属する入出力例の出力例に一致する合成プログラムの有無を判定する(S304)。すなわち、ループ処理L1において処理対象とされた合成プログラムの中で、ステップS303において得られた全ての出力値が期待通りであった(正しかった)合成プログラムの有無が判定される。なお、最初にステップS304が実行される場合、ループ処理L1では雛形コードに基づいて生成された1つの合成プログラムのみが処理対象とされる。したがって、この場合、ステップS304では、当該合成プログラムの入出力の結果について判定が行われる。
該当する合成プログラムが無い場合(S304でNo)、プログラム合成部13は、合成コードの変更処理を実行する(S305)。合成コードの変更処理では、元の合成コードの一部を変更して、複数(N個)の合成コードが生成される。合成コードの一部の変更には、例えば、遺伝的アルゴリズムが用いられてもよい。すなわち、前世代の合成コードに対してN回の遺伝的操作が行われて、N個の次世代の合成コードが生成されてもよい。ここで、Nは、遺伝的アルゴリズムの一世代における個体(ソースコード)の個数である。この際、遺伝的アルゴリズムの適用対象とされる各合成コードは、例えば、演算子を親ノードとし、当該演算子による演算対象である変数、定数、又は演算子を子ノードとする木構造によって表現され、木構造の部分木が遺伝的操作の対象とされる。N回の遺伝的操作において対象とされる個体の選択のための評価には、出力値の合格率(出力値が正解だった割合)が用いられてもよい。
また、突然変異において前世代の合成コードの一部に置き換わる候補として、例えば、予め補助記憶装置102に記憶されているプログラム部品リストに含まれるプログラム部品が用いられる。
図10は、プログラム部品リストの一例を示す図である。図10に示されるプログラム部品リストのデータ構造をBNF記法に基づく形式によって記すと以下の通りである。
<プログラム部品リスト>::=プログラム部品+
すなわち、プログラム部品リストは、1以上のプログラム部品(のソースコード)を含む。図10では、定数とメソッドとにプログラム部品が分類されている。ここで、1つの定数が1つのプログラム部品に相当し、1つのメソッドが1つのプログラム部品に相当する。すなわち、図10において破線で囲まれた単位が、1つのプログラム部品の単位に相当する。
なお、最初にステップS305が実行される場合、前世代の個体(合成コード)は雛形コードの1つである。したがって、この場合、当該雛形コードをコピーすることで、同一のN個の合成コードが生成され、当該N個の合成コードに対して、N回の遺伝的操作が行われればよい。その結果、N個の新たな合成プログラムが生成される。
図11は、合成コードの変更処理によって生成される合成コードの一例を示す図である。図11に示されるように、1回の合成処理によってN個の合成コードが生成される。
なお、遺伝的アルゴリズムを用いたプログラムの合成処理には、DEAP(https://deap.readthedocs.io/en/master/)等、既存のライブラリを用いられてもよい。
続いて、N個の合成コードについてループ処理L1以降が実行される。したがって、この場合、ステップS302及びS303はN回実行される。
一方、ステップS304の条件を満たす合成プログラムが有る場合(S304でYes)、入出力結果判定部15は、当該合成プログラムのソースコード(合成コード)を出力する(S306)。すなわち、当該合成プログラムが、対象プログラムであると判定される。なお、ステップS304の条件を合成プログラムが複数有る場合、それぞれの合成プログラムのソースコードが出力されればよい。
例えば、図9に示される3つの入出力例が入出力例セットを構成する全ての入出力例である場合、図11において左から2番目の合成コードが対象プログラム(のソースコード)として出力される。
上述したように、本実施の形態によれば、自然言語で記述されたプログラムの仕様(文字列)と入出力例という2つの情報を用いて、当該仕様を満たすことが期待されるプログラムが自動生成される。すなわち、プログラムの仕様(作成者の意図)を記述した自然言語と対応するプログラムの関係性を学習した生成モデルを用いて雛形コードが自動生成され、当該雛形コードに基づいて、全ての入出力例を満たすプログラムが生成されるまで、プログラムの修正(変更)が繰り返される。その結果、従来技術と比較して、所望のプログラムが自動生成される可能性を高めることができる。
なお、本実施の形態において、雛形コードは、第1のプログラムの一例である。雛形コード生成部12は、生成部の一例である。プログラム合成部13は、変更部の一例である。対象プログラムは、第2のプログラムの一例である。
以上、本発明の実施の形態について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
10 プログラム生成装置
11 学習部
12 雛形コード生成部
13 プログラム合成部
14 合成プログラム実行部
15 入出力結果判定部
100 ドライブ装置
101 記録媒体
102 補助記憶装置
103 メモリ装置
104 CPU
105 インタフェース装置
106 表示装置
107 入力装置
B バス

Claims (5)

  1. 自然言語によって記述されたプログラムの仕様と、前記プログラムとの関係を学習したモデルに対して、生成対象のプログラムについて自然言語によって記述された仕様を入力して第1のプログラムを生成する生成部と、
    複数のプログラム部品を用いて前記第1のプログラムを変更して、1以上の入力値及び出力値の組を満たす第2のプログラムを生成する変更部と、
    を有することを特徴とするプログラム生成装置。
  2. 前記変更部は、前記第2のプログラムが生成されるまで、前記第1のプログラムの一部の変更を累積的に繰り返す、
    ことを特徴とする請求項1記載のプログラム生成装置。
  3. 自然言語によって記述されたプログラムの仕様と、前記プログラムとの関係を学習したモデルに対して、生成対象のプログラムについて自然言語によって記述された仕様を入力して第1のプログラムを生成する生成手順と、
    複数のプログラム部品を用いて前記第1のプログラムを変更して、1以上の入力値及び出力値の組を満たす第2のプログラムを生成する変更手順と、
    をコンピュータが実行することを特徴とするプログラム生成方法。
  4. 前記変更手順は、前記第2のプログラムが生成されるまで、前記第1のプログラムの一部の変更を累積的に繰り返す、
    ことを特徴とする請求項記載のプログラム生成方法。
  5. 請求項3又は4記載のプログラム生成方法をコンピュータに実行させることを特徴とするプログラム。
JP2021570554A 2020-01-16 2020-01-16 プログラム生成装置、プログラム生成方法及びプログラム Active JP7351352B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2020/001206 WO2021144904A1 (ja) 2020-01-16 2020-01-16 プログラム生成装置、プログラム生成方法及びプログラム

Publications (2)

Publication Number Publication Date
JPWO2021144904A1 JPWO2021144904A1 (ja) 2021-07-22
JP7351352B2 true JP7351352B2 (ja) 2023-09-27

Family

ID=76864575

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021570554A Active JP7351352B2 (ja) 2020-01-16 2020-01-16 プログラム生成装置、プログラム生成方法及びプログラム

Country Status (3)

Country Link
US (1) US20230046961A1 (ja)
JP (1) JP7351352B2 (ja)
WO (1) WO2021144904A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11934801B2 (en) * 2021-12-07 2024-03-19 Microsoft Technology Licensing, Llc Multi-modal program inference
US20240143928A1 (en) * 2022-10-28 2024-05-02 Microsoft Technology Licensing, Llc Generation of interactive utterances of code tasks
CN117055845B (zh) * 2023-10-13 2023-12-29 边无际(北京)科技有限公司 一种基于大语言模型的物联网智能应用方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ES2707230T3 (es) * 2011-01-31 2019-04-03 Tata Consultancy Services Ltd Prueba del ciclo de vida
US20170212829A1 (en) * 2016-01-21 2017-07-27 American Software Safety Reliability Company Deep Learning Source Code Analyzer and Repairer
US11442702B2 (en) * 2018-09-22 2022-09-13 Affirm, Inc. Code completion

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
YIN, Pengcheng et al.,A Syntactic Neural Model for General-Purpose Code Generation,[on line],v1,米国,arXiv.org,2017年04月06日,pages:1-14,[retrieved on 2023.5.31],Retrieved from the Internet:<URL:https://arxiv.org/pdf/1704.01696.pdf>
内藤 圭吾 他,企業におけるソフトウェア開発に対する自動プログラム修正技術,電子情報通信学会技術研究報告,一般社団法人電子情報通信学会,2018年01月11日,第117巻 第381号,第13頁-第18頁
内藤 圭吾 他,企業のソフトウェア開発に対する自動プログラム修正技術適用の試み,情報処理学会 シンポジウム ソフトウェアエンジニアリングシンポジウム 2018 論文集,情報処理学会,2018年08月29日,第139頁-第147頁

Also Published As

Publication number Publication date
US20230046961A1 (en) 2023-02-16
JPWO2021144904A1 (ja) 2021-07-22
WO2021144904A1 (ja) 2021-07-22

Similar Documents

Publication Publication Date Title
JP7351352B2 (ja) プログラム生成装置、プログラム生成方法及びプログラム
KR101279179B1 (ko) 병렬 프로그램 생성 방법
Daelemans et al. Mbt: memory-based tagger
JP5005510B2 (ja) ソフトウェアの設計支援方法、設計支援装置及び設計支援プログラム
JP7355123B2 (ja) プログラム生成装置、プログラム生成方法及びプログラム
JPH0667868A (ja) アルゴリズムを記号評価する方法およびアルゴリズムをトランスレートする装置
US5842205A (en) Method and process of inter-machine communication and generalized method for program preparation therefor
JP7310943B2 (ja) プログラム生成装置、プログラム生成方法及びプログラム
JP2009181446A (ja) プログラム生成装置およびブロック線図生成装置
US11610134B2 (en) Techniques for defining and executing program code specifying neural network architectures
JP4959784B2 (ja) 生成装置、生成方法、および、生成プログラム
JP7375835B2 (ja) プログラム生成装置、プログラム生成方法及びプログラム
JP2017204080A (ja) 情報処理装置、コンパイル方法及びコンパイラプログラム
WO2021161427A1 (ja) プログラム生成装置、プログラム生成方法及びプログラム
Pardo et al. Multiple intermediate structure deforestation by shortcut fusion
Russo et al. A massively parallel Grammatical Evolution technique with OpenCL
JP6175306B2 (ja) 制御プログラム分割装置、制御プログラム分割方法及びその記録媒体
WO2022249255A1 (ja) プログラム生成装置、プログラム生成方法及びプログラム
WO2022230190A1 (ja) プログラム生成装置、プログラム生成方法及びプログラム
JP7468209B2 (ja) プログラム生成装置、プログラム生成方法及びプログラム
WO2022239179A1 (ja) プログラム生成装置、プログラム生成方法及びプログラム
JP6062735B2 (ja) ソフトウェア開発支援装置、ソフトウェア開発支援方法、ソフトウェア開発支援プログラム
Jarzabek Software Similarity Patterns and Clones: A Curse or Blessing?
WO2022249422A1 (ja) コードマッピング装置、コードマッピング方法、及びプログラム
JP2008015665A (ja) プログラム解析方法及びプログラム解析装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220705

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230606

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230804

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230815

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230828

R150 Certificate of patent or registration of utility model

Ref document number: 7351352

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150