JP6482362B2 - ソースコード生成システム、ソースコード生成装置、ソースコード生成方法及びプログラム - Google Patents

ソースコード生成システム、ソースコード生成装置、ソースコード生成方法及びプログラム Download PDF

Info

Publication number
JP6482362B2
JP6482362B2 JP2015081441A JP2015081441A JP6482362B2 JP 6482362 B2 JP6482362 B2 JP 6482362B2 JP 2015081441 A JP2015081441 A JP 2015081441A JP 2015081441 A JP2015081441 A JP 2015081441A JP 6482362 B2 JP6482362 B2 JP 6482362B2
Authority
JP
Japan
Prior art keywords
source code
item
processing
exception
generation unit
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
JP2015081441A
Other languages
English (en)
Other versions
JP2016201009A (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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2015081441A priority Critical patent/JP6482362B2/ja
Publication of JP2016201009A publication Critical patent/JP2016201009A/ja
Application granted granted Critical
Publication of JP6482362B2 publication Critical patent/JP6482362B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Description

本発明は、ソースコード生成システム、ソースコード生成装置、ソースコード生成方法及びプログラムに関する。
代表的なモデル記述言語であるUML(Unified Modeling Language)では、静的モデルとしてクラス図、動的モデルとして状態遷移図、シーケンス図、アクティビティ図などがある。標準で規定されているのは、個々の図で利用するモデル要素、すなわちクラスの箱や状態の書き方、条件の書き方のみであり、記載する内容や図間の整合性などは設計者に委ねられている。
組込み製品においては、センサ、ディスプレイ等のハードウェア機器上で発生する故障、異常等の「例外」事象に対応したソフトウェアの例外処理が重要であるが、UMLでの記載方法は定まっていない。
また、ユースケ―ス分析において、ユースケース記述の中のシナリオの1つとしてユースケース図が記述される場合がある。しかし、ユースケース図は要求レベルの形式化されていないテキストであるため、コード生成するには、詳細設計レベルの設計情報との紐付けとコード生成の作り込みが必要であり、作成に時間がかかっている。
また、機能実行中の割込みに対応して「処理の優先度」に応じた実行制御を行う必要があり、一般的には、タスクの競合分析により、タスク単位で競合関係をマトリクスで整理する場合がある。タスクは、ソフトウェア設計レベルのデータであり、例外処理と同様に、詳細設計レベルの設計情報との紐付けとコード生成の作り込みが必要である。
特許文献1では、例外処理を定義して、自動的にソースコードに埋め込むことが可能である。
また、特許文献2では、階層化された機能項目ごとに、優先順位を記入するようにして、その実行優先順位情報に基づいて、ソースコードを実行することが可能である。
特開2007−094922号公報 特開2012−252555号公報
特許文献1では、状態遷移図をインプットとして、定義された状態以外になった場合の1つの条件分岐文、すなわちifに対するelseなどを出力することができるが、複数パターンの例外処理の分岐を出力することはできないという課題があった。
本発明では、すべての例外事象の条件分岐を表すソースコードを出力することを目的とする。
本発明に係るソースコード生成システムは、
処理の項目を表す処理項目と、前記処理項目に含まれる操作を表す操作情報と、例外処理を表す例外処理情報とを含む処理項目リストを記憶する処理項目リスト記憶部と、
前記処理項目リストに基づいて記述された前記処理項目の振舞いを記述する振舞い記述情報を記憶する振舞い記述情報記憶部と、
前記処理項目を用いて、クラスを定義するソースコードを生成する振舞い記述生成部と、
前記操作情報を用いて、前記操作を定義するソースコードを生成する操作生成部と、
前記例外処理情報を用いて、前記操作の実行中に発生する前記例外処理を表すソースコードを生成する例外記述生成部と、
前記振舞い記述情報を用いて、前記操作の条件分岐を表すソースコードを生成する条件記述生成部と、
前記振舞い記述情報を用いて、前記操作の処理内容を表すソースコードを生成する処理記述生成部とを備える。
本発明に係るソースコード生成システムは、処理項目と操作情報と例外処理情報とを含む処理項目リストを記憶する処理項目リスト記憶部と、処理項目リストに基づいて記述された処理項目の振舞いを記述する振舞い記述情報を記憶する振舞い記述情報記憶部と、処理項目を用いて、クラスを定義するソースコードを生成する振舞い記述生成部と、操作情報を用いて、操作を定義するソースコードを生成する操作生成部と、例外処理情報を用いて、操作の実行中に発生する例外処理を表すソースコードを生成する例外記述生成部とを備えるので、操作時に発生する例外処理を表すソースコードを生成することができる。
実施の形態1に係るソースコード生成システム800のブロック構成図。 実施の形態1に係るソースコード生成システム800における仕様記述からソースコード生成までの流れを示す図。 実施の形態1に係る物理項目リスト102の具体例及び作成の手順を示す図。 実施の形態1に係る物理項目の振舞い記述104の具体例及び作成の手順を示す図。 実施の形態1に係る機能項目リスト103の具体例及び作成の手順を示す図。 実施の形態1に係る機能項目の振舞い記述105の具体例及び作成の手順を示す図。 実施の形態1に係るソースコード生成装置20におけるソースコード生成方法、ソースコード生成処理S10の動作を示すフロー図。 実施の形態1に係る物理項目リストと物理項目の振舞い記述とから生成したソースコードの例を示す図。 実施の形態1に係る機能項目リストと機能項目の振舞い記述とから生成したソースコードの例を示す図。 実施の形態1に係るソースコード生成装置20のハードウェア構成図。 実施の形態2に係るソースコード生成システム800aのブロック構成図。 実施の形態2に係る優先度制御ソースコード3031を実現する優先度制御部3031aの優先度制御処理の動作を示すフロー図。 実施の形態2に係る優先度制御部3031aによる各機能の継承関係の例を示す図。
実施の形態1.
図1を用いて、本実施の形態に係るソースコード生成装置20のブロック構成について説明する。
本実施の形態では、物理項目に対して発生しうる例外事象と機能項目に対する処理の優先度と仕様記述方法とコード生成方法とを示す。
***構成の説明***
ソースコード生成システム800は、処理項目リスト記憶部1071、振舞い記述情報記憶部1081、ソースコード生成装置20、ソースコード30を有する。
ソースコード生成装置20は、取得部40とソースコード生成部50と優先度制御生成部60とを有する。
取得部40は、物理項目リスト102、機能項目リスト103、物理項目の振舞い記述104、機能項目の振舞い記述105を入力とする。
物理項目リスト102、機能項目リスト103は、処理項目リスト107の例である。
物理項目の振舞い記述104、機能項目の振舞い記述105は、振舞い記述情報108の例である。
処理項目リスト記憶部1071は、処理の項目を表す処理項目1072と、処理項目1072に含まれる操作を表す操作情報1073と、例外処理を表す例外処理情報1074とを含む処理項目リスト107を記憶する。処理項目リスト記憶部1071は、処理項目リスト107として、物理項目リスト102と機能項目リスト103とを記憶する。
振舞い記述情報記憶部1081は、処理項目リスト107に基づいて記述された処理項目1072の振舞いを記述する振舞い記述情報108を記憶する。振舞い記述情報記憶部1081は、振舞い記述情報108として、物理項目の振舞い記述104と機能項目の振舞い記述105とを記憶する。
処理項目リスト107は、操作として複数の操作1073aを表す操作情報1073を有する。
ソースコード生成部50は、振舞い記述生成部501、操作生成部502、例外記述生成部503、条件記述生成部504、処理記述生成部505を有する。
振舞い記述生成部501は、処理項目1072を用いて、クラスを定義するソースコードを生成する。
操作生成部502は、操作情報1073を用いて、操作を定義するソースコードを生成する。操作生成部502は、複数の操作の各操作を定義するソースコードを生成する。
例外記述生成部503は、例外処理情報1074を用いて、操作の実行中に発生する例外処理を表すソースコードを生成する。例外記述生成部503は、複数の操作の各操作を定義するソースコードに対して例外処理を表すソースコードを割り付ける。
条件記述生成部504は、振舞い記述情報108を用いて、操作の条件分岐を表すソースコードを生成する。
処理記述生成部505は、振舞い記述情報108を用いて、操作の処理内容を表すソースコードを生成する。
各構成部についてさらに詳しく説明する。
振舞い記述生成部501は、物理項目リスト102および機能項目リスト103で定義された全ての物理項目および機能項目毎に1つのクラスを生成する。ここでクラスとは、ソースコードの形式で生成されたものである。クラスの名称には、物理項目および機能項目毎、すなわち処理項目1072毎に定義したラベル名を使用する。
次に、物理項目リスト102および機能項目リスト103、すなわち処理項目リスト107で、自項目の上位階層項目が定義されているものについては、その上位階層の項目から生成されたクラスと親子関係があることを示す継承コードを生成する。振舞い記述生成部501は、生成した継承コードをソースコードの形式で生成されたクラスに追記する。
操作生成部502は、物理項目リスト102および機能項目リスト103で定義された全ての操作毎に1つのメソッドを生成し、当該操作が属する機能のクラス内に配置する。ここでメソッドとは、ソースコードの形式で生成されたものである。メソッドの名称には、操作毎に定義したラベル名を使用する。メソッドのソースコードを生成するとは、操作を定義するソースコードを生成することである。
例外記述生成部503は、物理項目リスト102で定義された例外毎に例外コードを生成し、その例外が属する物理項目のすべてのメソッドに例外コードを配置する。
条件記述生成部504は、物理項目の振舞い記述104および機能項目の振舞い記述105、すなわち振舞い記述情報108で定義された全ての条件記述について、同じ内容となるif文を生成する。ここでif文の判定対象として使用する属性名称は、物理項目リスト102または機能項目リスト103において属性名称とラベルを対にして定義しており、ソースコードには当該ラベルを使用する。また、生成したif文は、物理項目の振舞い記述104および機能項目の振舞い記述105で定義した操作のソースコード内にて、記述した順番通りに配置する。
処理記述生成部505では、物理項目の振舞い記述104および機能項目の振舞い記述105で定義された全ての処理記述について、同じ内容となる制御文を生成する。制御文内で使用する属性名称は、物理項目リスト102または機能項目リスト103において属性名称とラベルを対にして定義しており、ソースコードには当該ラベルを使用する。また、生成した制御文は、物理項目の振舞い記述104および機能項目の振舞い記述105で定義した操作のソースコード内にて、記述した順番通りに配置する。
優先度制御生成部60は、処理項目1072の各々に設定された優先度1075に基づいて、実行中の処理項目の優先度と実行が要求された処理項目の優先度とを比較し、優先度が高い方の処理項目を実行する優先度制御機能を有する優先度制御ソースコード303を生成する。
なお、優先度制御生成部60は無くてもよく、機能の優先順位の制御プログラムを各機能のソースコードに持つ構成でも構わない。
図2を用いて、本実施の形態に係るソースコード生成システム800における仕様記述からソースコード生成までの流れについて説明する。
仕様が記述されたインプット仕様書101から、ハードウェアを抽出し、故障、電源断、異常値検出などの発生する可能性のある例外項目の定義を物理項目リスト102に列挙する。また、インプット仕様書101から、ソフトウェアの機能を抽出し、優先度の定義を機能項目リスト103に列挙する。
物理項目リスト102の項目ごとに、物理項目の振舞い記述104に日本語の振舞い記述言語により、例外発生時の例外と振舞いを定義する。
機能項目リスト103の項目ごとに、機能の振舞いの定義を機能項目の振舞い記述105に記述する。
ソースコード生成装置20に、物理項目リスト102、物理項目の振舞い記述104、機能項目リスト103、機能項目の振舞い記述105を入力して、物理項目クラス301、機能項目クラス302のソースコード30を生成する。
図3を用いて、本実施の形態に係る物理項目リスト102の具体例及び作成の手順について説明する。物理項目リスト102では、ハードウェアの項目を階層化して表記する。
物理項目は、処理の項目であるクラスを表す処理項目1072の例である。
物理項目リスト102、すなわち処理項目リスト107は、処理項目1072として、複数の処理項目1072aを有する。また、複数の処理項目1072aの各々が上位の階層である親処理項目10721を有する。最上位の処理項目には親処理項目はない。
具体的には、物理項目リスト102には、物理項目ごとに、物理名称である名称とソースコード生成時に用いるラベルとを階層的に記載する。階層が下になるほど物理項目を詳細化する。
物理項目の名称として、センサの階層の下にセンサ1とセンサ2とを記載し、物理項目のラベルとして、センサに対応するSensor、センサ1に対応するSen1、センサ2に対応するSen2と記載する。
例えば、センサが親物理項目、すなわち親処理項目10721であり、センサ1、センサ2が子物理項目、すなわち子処理項目10722となる。
また、物理項目ごとに操作の名称、操作のラベルを記載する。図3では、センサ1の操作の名称として、起動と値取得を記載し、それぞれのラベルOpeY,OpeZを記載する。
それぞれの操作に対して、属性の名称、属性のラベル、属性の範囲、属性の初期値を記載する。すべての操作に共通する属性は、どの操作にも属さない行に記載する。図3では「起動」と、「値取得」という名称の操作に対して共通する、電源状態という属性の名称を記載している。「電源状態」という属性の名称に対して、ラベルをAttrN、範囲をPOWERONとPOWEROFFとした。
物理項目に対して例外項目がある場合は、例外の名称と例外のラベルとを記載する。図3では、「センサ1」という物理項目の名称に対して、「電源断」という例外の名称と、POWEROffEventという例外のラベルを記載している。
図4を用いて、本実施の形態に係る物理項目の振舞い記述104の具体例及び作成の手順について説明する。
物理項目リスト102の物理項目ごとに、物理項目の振舞い記述104を作成する。図4では「センサ1」についての振舞い記述を記載した。
物理項目の振舞い記述104では、物理項目の名称、概要、目的を記載したあと、物理項目の振舞い記述を記載する。
物理項目リスト102において、振舞い記述の作成対象である物理項目に、例外処理があれば、[]のカッコの中に例外の名称を記載する。
また、処理を表す処理記述は先頭に・をつける。
図4では、「電源断」という例外処理が起きた場合、電源状態をPOWEROFFにするという処理を記述している。
また、操作に対しては<>のカッコで表し、<>のカッコの中に操作の名称を記載する。
図5を用いて、本実施の形態に係る機能項目リスト103の具体例及び作成の手順について説明する。機能項目リスト103では、システムに要求される機能を階層化して表記する。
機能項目は、処理の項目であるクラスを表す処理項目1072の例である。
機能項目リスト103、すなわち処理項目リスト107は、処理項目として、複数の処理項目を有し、複数の処理項目の各々に優先度1075が設定される。また、複数の処理項目の各々が上位の階層である親処理項目を有する。最上位の処理項目には親処理項目はない。以下で説明する優先レベルは、優先度1075の例である。
機能項目リスト103では、まずシステムが要求する機能を抽出する。そして、抽出した各機能を大分類・中分類・小分類というように階層的に整理する。階層の深さに制限を設ける必要は無く、また機能により階層の深さが異なっていても良い。
図5の例では、機能項目の欄に、上位階層から順に機能の名称が設定される。大分類が機能A、中分類が機能A1及び機能A2と設定されている。また、大分類が機能B、中分類が機能B1及び機能B2、機能B2の小分類として機能B21及び機能B22と設定されている。なお、ここで機能の名称に使用する名前、すなわち文字列に制限は無い。
例えば、機能Aが親機能項目、すなわち親処理項目であり、機能A1、機能A2が子機能項目、すなわち子処理項目となる。また、子機能項目、すなわち子処理項目を機能B21、機能B22とすると、親機能項目、すなわち親処理項目は機能B2である。
次に、各機能についてシステムが要求する優先度1075を検討する。この優先度1075とは、同じ階層に分類した機能同士の実行優先度を指している。図5の例では、機能Aと機能Bの優先レベルは、それぞれ1と2であるため、機能Aの優先度が機能Bの優先度よりも高いことになる。
上記優先度は、上位階層の機能が同じである機能同士では固有の値を指定する必要がある。一方、上位階層が異なる機能同士では優先度の値が重複しても良い。図5の例では、上位階層が機能Aである中分類の機能A1と機能A2との優先レベルは、それぞれ1と2である。また、同じ中分類であるが上位階層が機能Bである中分類の機能B1と機能B2との優先レベルについても、それぞれ1と2とが設定されている。
次に、各機能にラベルを設定する。これは、ソースコード生成の際、クラス名に使用される。そのため、生成するコードのプログラミング言語仕様に則った命名をする必要がある。
続いて、機能項目リスト103の作成において定義した各機能の具体的な仕様を機能仕様として定義する。機能仕様は操作情報1073の例である。機能仕様には、大きく分けて操作と属性がある。
まず操作の項目では、各機能において必要となる処理内容を抽出し、その処理に対して名称を付ける。この名称は、一つの機能内で固有である必要がある。
次に、抽出した各操作にラベルを設定する。これは、ソースコード生成の際、メソッド名に使用される。そのため、生成するコードのプログラミング言語仕様に則った命名をする必要がある。
次に属性の項目では、各操作で使用するデータを抽出し、抽出したデータに対して名称を付ける。抽出したデータに対して付する名称は、一つの操作内で固有である必要がある。
抽出した各属性にラベルを設定する。このラベルは、ソースコード生成の際、フィールド名に使用される。そのため、生成するコードのプログラミング言語仕様に則った命名をする必要がある。
また、抽出した各属性の値域を範囲に設定する。これは、ソースコード生成の際、フィールドの値域に使用される。そのため、フィールドとして存在しえない範囲の値は設定できない。
さらに、抽出した各属性の初期値を設定する。これは、ソースコード生成の際、フィールドの初期化に使用される。そのため、フィールドとして存在しえない範囲の値は設定できない。
図6を用いて、本実施の形態に係る機能項目の振舞い記述105の具体例及び作成の手順について説明する。
機能項目の振舞い記述105では、機能項目リスト103で定義した各機能の振舞いを定義し、各機能が持つ操作毎に、処理内容の詳細を記載する。
まず、機能が持つ操作の1つずつについて、当該操作に属する属性をどのように使用するか具体的に検討し、どのような「条件」で、どのような「処理」を行うか明らかにする。
次に、検討した「条件」と「処理」とを、擬似言語にて記述する。この擬似言語では、使用する属性を機能項目リスト103に記載の名称と揃え、論理構造のみを記号化する。
1つの機能が持つ全ての操作は、一つの「機能項目の振舞い記述」としてまとめて記述する。
つまり、図5の機能項目リスト103における機能A1が持つ操作A及び操作Bについては、図6に示す1つの「機能項目の振舞い記述105」にまとめて記述する。
以上の手順を、機能項目リスト103における全ての機能について実施する。
***動作の説明***
図7を用いて、本実施の形態に係るソースコード生成装置20におけるソースコード生成方法、ソースコード生成処理S10の動作について説明する。
取得部40は、処理項目リスト107と、処理項目リスト107に基づいて記述された処理項目1072の振舞いを記述する振舞い記述情報108とを取得する取得処理S100を実行する。
具体的には、S701において、取得部40は、物理項目リスト102、機能項目リスト103、物理項目の振舞い記述104、機能項目の振舞い記述105を取得する。
振舞い記述生成部501は、取得部40により取得された物理項目の振舞い記述104または機能項目の振舞い記述105に対して、未処理のものが無い場合、処理を終了し、未処理のものが有る場合、S702に処理を進める。
ここで、処理対象の振舞い記述を処理対象振舞い記述とする。
振舞い記述生成部501は、処理項目1072を用いてクラスを定義するソースコードを生成する振舞い記述生成処理S100aを実行する。
具体的には、S702において、振舞い記述生成部501は、処理対象振舞い記述に基づいて、機能項目リスト103あるいは物理項目リスト102から、処理対象振舞い記述の機能名称あるいは物理名称のラベルを取得しクラスを生成する。
例えば、処理対象振舞い記述が物理項目の振舞い記述104の場合、振舞い記述生成部501は、図3の物理項目リスト102に基づいて、「センサ1」についてクラスを定義するソースコードを生成する。まず、振舞い記述生成部501は、物理項目リスト102から振舞い記述「センサ1」のラベルを取得し、物理項目クラス301であるSen1クラスをソースコードとして生成する。具体的には、振舞い記述生成部501は、図8の1行目の「Class Sen1」を生成する。
また、例えば、処理対象振舞い記述が機能項目の振舞い記述105の場合、振舞い記述生成部501は、図5の機能項目リスト103に基づいて、「機能A1」についてのソースコードを生成する。まず、振舞い記述生成部501は、機能項目リスト103から振舞い記述「機能A1」のラベルを取得し、機能項目クラス302であるClassA1クラスをソースコードとして生成する。具体的には、振舞い記述生成部501は、図9の1行目の「class ClassA1」を生成する。
S702におけるクラスのソースコード生成後、処理対象振舞い記述の機能項目または物理項目について親機能項目または親物理項目が有る場合は、処理はS703に進む。処理対象振舞い記述の機能項目または物理項目について親機能項目または親物理項目が無い場合は、処理はS704に進む。
S703において、振舞い記述生成部501は、継承記述処理S200を実行する。振舞い記述生成部501は、処理対象振舞い記述に基づいて、機能項目リスト103あるいは物理項目リスト102から、親機能項目または親物理項目の名称のラベルを取得し、継承コードを生成する。
処理対象振舞い記述が図3の物理項目リスト102の場合、振舞い記述生成部501は、センサ1には親物理項目である「センサ」があるので、「センサ」のラベルSensorを取得する。振舞い記述生成部501は、S702で生成したソースコード「class Sen1」に対して、親クラス「Sensor」への継承記述を生成する。具体的には、振舞い記述生成部501は、図8の1行目の「:public Sensor」を生成する。
処理対象振舞い記述が図5の機能項目リスト103の場合では、振舞い記述生成部501は、機能A1には親の機能項目である「機能A」があるので、「機能A」のラベルClassAを取得する。振舞い記述生成部501は、S702で生成したソースコード「class ClassA1」に対して、親クラス「ClassA」への継承記述を生成する。具体的には、振舞い記述生成部501は、図9の1行目の「:public ClassA」を生成する。
S704において、操作生成部502は、処理対象振舞い記述に基づいて、未処理の操作があるか否かを判定する。操作生成部502は、未処理の操作が有る場合、処理をS705に進め、未処理の操作が無い場合、処理をS708に進める。
操作生成部502は、操作情報1073を用いて操作を定義するソースコードを生成する操作生成処理S300を実行する。
具体的には、S705において、操作生成部502は、機能項目リスト103あるいは物理項目リスト102から、未処理の操作名称のラベルを取得しメソッドを生成する。
例えば、操作生成部502は、図3の物理項目リスト102の場合、センサ1には操作「起動」があるので、ラベルを取得し、メソッドをソースコードとして生成する。具体的には、操作生成部502は、図8の2行目の「void OpeY()」を生成する。
また、例えば、操作生成部502は、図5の機能項目リスト103の場合、機能Aには操作「操作A」があるので、ラベルを取得し、メソッドをソースコードとして生成する。具体的には、操作生成部502は、図9の2行目の「void OpeA()」を生成する。
例外記述生成部503は、例外処理情報1074を用いて操作の実行中に発生する例外処理を表すソースコードを生成する例外記述生成処理S400を実行する。
S706において、例外記述生成部503は、処理対象振舞い記述に未処理の例外記述があるか否かを判定する。例外記述生成部503は、未処理の例外記述がある場合、処理をS707に進める。また、例外記述生成部503は、未処理の例外記述が無い場合、処理をS704に進める。
S707において、例外記述生成部503は、物理項目リスト102から、例外名称のラベルを取得し、操作に例外コードを追加する。
例えば、例外記述生成部503は、図3の物理項目リスト102の場合、センサ1には例外項目「電源断」があるので、「電源断」のラベルを取得し、「起動」メソッドに例外コードを追加する。具体的には、例外記述生成部503は、図8の3行目と5行目のように、ソースコードを生成する。
条件記述生成部504は、振舞い記述情報108を用いて操作の条件分岐を表すソースコードを生成する条件記述生成処理S500を実行する。
S708において、条件記述生成部504は、処理対象振舞い記述に未処理の条件記述がある場合、処理をS709に進める。条件記述生成部504は、未処理の条件記述が無い場合、処理をS710に進める。
S709において、条件記述生成部504は、条件記述内の属性名称のラベルを取得しif文を生成する。
例えば、条件記述生成部504は、図5の機能項目リスト103の場合、操作「操作A」に条件記述があるので、条件記述内の属性名称「属性B」「属性C」「属性D」「属性E」のラベルを機能項目リスト103から取得し、if文を生成する。具体的には、条件記述生成部504は、図9の3行目と6行目のように、ソースコードを生成する。
処理記述生成部505は、振舞い記述情報108を用いて操作の処理内容を表すソースコードを生成する処理記述生成処理S600を実行する。
S710において、処理記述生成部505は、処理対象振舞い記述に未処理の処理記述が有るか否かを判定する。処理記述生成部505は、未処理の処理記述が有る場合、処理をS711に進める。処理記述生成部505は、未処理の処理記述が無い場合、処理をS701に進める。
S711において、処理記述生成部505は、処理記述内の属性名称のラベルを取得し制御文を生成する。
例えば、処理記述生成部505は、図5の機能項目リスト103の場合、操作「操作A」に未処理の処理記述があるので、条件記述内の属性名称「属性F」のラベルを取得し、制御文を生成する。具体的には、処理記述生成部505は、図9の4行目と7行目のように、ソースコードを生成する。
図8は、物理項目クラス301のソースコード30の例を示す。図9は、機能項目クラス302のソースコード30の例を示す。
以上のソースコード生成処理S10により、図8及び図9に示すようなソースコード30が自動的に出力される。
ソースコード生成部50は、物理項目クラス301と機能項目クラス302とのソースコード30を出力する。
なお、優先度制御生成部60は、機能項目の各々に設定された優先レベルに基づいて、実行中の機能項目の優先レベルと実行が要求された機能項目の優先レベルとを比較する。優先度制御生成部60は、優先レベルが高い方の機能項目を実行する優先度制御機能を有する優先度制御ソースコード303を生成する。
図10を用いて、本実施の形態に係るソースコード生成装置20のハードウェア構成について説明する。
ソースコード生成装置20はコンピュータである。
ソースコード生成装置20は、プロセッサ901、補助記憶装置902、メモリ903、通信装置904、入力インタフェース905、ディスプレイインタフェース906といったハードウェアを備える。
プロセッサ901は、信号線910を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
入力インタフェース905は、入力装置907に接続されている。
ディスプレイインタフェース906は、ディスプレイ908に接続されている。
プロセッサ901は、プロセッシングを行うIC(Integrated Circuit)である。
プロセッサ901は、例えば、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、GPU(Graphics Processing Unit)である。
補助記憶装置902は、例えば、ROM(Read Only Memory)、フラッシュメモリ、HDD(Hard Disk Drive)である。
メモリ903は、例えば、RAM(Random Access Memory)である。
通信装置904は、データを受信するレシーバー9041及びデータを送信するトランスミッター9042を含む。
通信装置904は、例えば、通信チップ又はNIC(Network Interface Card)である。
入力インタフェース905は、入力装置907のケーブル911が接続されるポートである。
入力インタフェース905は、例えば、USB(Universal Serial Bus)端子である。
ディスプレイインタフェース906は、ディスプレイ908のケーブル912が接続されるポートである。
ディスプレイインタフェース906は、例えば、USB端子又はHDMI(登録商標)(High Definition Multimedia Interface)端子である。
入力装置907は、例えば、マウス、キーボード又はタッチパネルである。
ディスプレイ908は、例えば、LCD(Liquid Crystal Display)である。
補助記憶装置902には、図1に示す振舞い記述生成部501、操作生成部502、例外記述生成部503、条件記述生成部504、処理記述生成部505(以下、振舞い記述生成部501、操作生成部502、例外記述生成部503、条件記述生成部504、処理記述生成部505をまとめて「部」と表記する)の機能を実現するプログラムが記憶されている。
このプログラムは、メモリ903にロードされ、プロセッサ901に読み込まれ、プロセッサ901によって実行される。
更に、補助記憶装置902には、OS(Operating System)も記憶されている。
そして、OSの少なくとも一部がメモリ903にロードされ、プロセッサ901はOSを実行しながら、「部」の機能を実現するプログラムを実行する。
図10では、1つのプロセッサ901が図示されているが、ソースコード生成装置20が複数のプロセッサ901を備えていてもよい。
そして、複数のプロセッサ901が「部」の機能を実現するプログラムを連携して実行してもよい。
また、「部」の処理の結果を示す情報やデータや信号値や変数値が、メモリ903、補助記憶装置902、又は、プロセッサ901内のレジスタ又はキャッシュメモリにファイルとして記憶される。
「部」を「サーキットリー」で提供してもよい。
また、「部」を「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。
「回路」及び「サーキットリー」は、プロセッサ901だけでなく、ロジックIC又はGA(Gate Array)又はASIC(Application Specific Integrated Circuit)又はFPGA(Field−Programmable Gate Array)といった他の種類の処理回路をも包含する概念である。
なお、プログラムプロダクトと称されるものは、「部」として説明している機能を実現するプログラムが記録された記憶媒体、記憶装置などであり、見た目の形式に関わらず、コンピュータ読み取り可能なプログラムをロードしているものである。
***効果の説明***
本実施の形態に係るソースコード生成装置20では、ソースコードの雛型、条件記述、処理記述などの正常記述の自動生成に加え、例外と処理の優先度とを考慮したソースコードの自動生成が可能となる。よって、ソースコード作成時間を削減する効果がある。
本実施の形態に係るソースコード生成装置20では、ハードウェア物理項目に対して、任意の例外を定義した物理項目リストから物理項目リストに定義されている各操作をソースコードとして生成する。生成された全操作のソースコードに対して、同一のハードウェア物理項目に対する全例外のソースコードを割り付ける。このような処理により、例外記述生成部において、ハードウェア物理項目に属する複数の操作へ例外処理毎の例外処理ソースコードを自動生成する。このように、本実施の形態に係るソースコード生成装置20では、すべての例外事象の条件分岐を自動で出力することで、更に作成時間の削減効果を高めることができる。
本実施の形態に係るソースコード生成装置20では、優先度制御生成部を備えているので、機能の優先順位の制御プログラムを各機能のソースコードに持つ必要がない。そのため、ソースコード量を削減することができる。また、優先度制御機能により、機能優先度を考慮した切り替えが可能となる。
実施の形態2.
本実施の形態では、主に、実施の形態1と異なる点について説明する。
本実施の形態では、機能項目に対する処理の優先度の仕様記述方法とコード生成方法とについて説明する。
***構成の説明***
図11を用いて、本実施の形態に係るソースコード生成システム800aのブロック構成につて説明する。
本実施の形態に係るソースコード生成装置20aでは、各機能項目の優先度を考慮し、実行することが可能となる。
図11に示すように、ソースコード生成装置20aは、実施の形態1の優先度制御生成部60、優先度制御ソースコード303に替えて、優先度制御生成部601、優先度制御ソースコード3031を有する。優先度制御生成部601は、優先度制御ソースコード3031を生成する。
優先度制御生成部601は、実行中の処理項目の親処理項目の優先度1075aと、実行が要求された処理項目の親処理項目の優先度とに基づいて、実行が要求された処理項目の実行の可否を判定する優先度制御機能を有する優先度制御ソースコード3031を生成する。
優先度制御生成部601は、実行が要求された処理項目の親処理項目と異なる親処理項目を有する実行中の処理項目がある場合には、実行が要求された処理項目の親処理項目の優先度と実行中の処理項目の親処理項目の優先度とを比較する。優先度制御生成部601は、優先度が低い方の親処理項目を有する処理項目の実行を不可とすることで、異なる子項目同士の比較を省略できる。
***動作の説明***
図12を用いて、本実施の形態に係る優先度制御ソースコード3031を実現する優先度制御部3031aの優先度制御処理の手順について説明する。ここで、優先度制御ソースコード3031の優先度制御機能を実現する構成部を優先度制御部3031aとする。
S1201において、優先度制御部3031aは、実行要求の機能項目の優先レベルを取得する。
S1202において、優先度制御部3031aは、優先レベルを判定し、優先レベルが0の場合、S1212の実行許可に進む。
優先レベルが0以外の場合、優先度制御部3031aは、S1203に進み、実行中の機能情報を取得する。
S1204において、優先度制御部3031aは、実行中機能が無い場合、S1212の実行許可に進む。
優先度制御部3031aは、実行中機能が有る場合、S1205で異なる親クラスの実行中機能があるか否かを判定する。親クラスとは、親機能項目すなわち親処理項目のことである。
優先度制御部3031aは、異なる親クラスの実行中機能が有る場合、S1207に進む。
優先度制御部3031aは、異なる親クラスの実行中機能が無い場合、S1206に進む。
S1206において、優先度制御部3031aは、同じ親クラスの実行中機能が有るか否かを判定する。優先度制御部3031aは、同じ親クラスの実行中機能が有る場合、S1209に進む。優先度制御部3031aは、同じ親クラスの実行中機能が無い場合、S1212の実行許可に進む。
S1207において、優先度制御部3031aは、実行中機能と実行要求機能との親クラス同士の優先レベルを比較する。S1208において、優先度制御部3031aは、実行中機能と実行要求機能との親クラス同士の優先レベルの比較の結果、実行要求機能の親クラスの優先レベルが低い場合はS1211の実行不許可とする。優先度制御部3031aは、実行要求機能の親クラスの優先レベルが高い場合はS1206に進む。
S1209において、優先度制御部3031aは、同じ親クラスの実行中機能と実行要求機能との優先レベル同士を比較し、実行要求機能の優先レベルが高い場合、S1212の実行許可とする。優先度制御部3031aは、実行要求機能の優先レベルが低い場合、S1211の実行不許可とする。
以上で、優先度制御処理の手順についての説明を終わる。
次に、図13を用いて、本実施の形態にかかる優先度制御部3031aによる各機能の継承関係の例について説明する。
機能B2の場合、実行許可を判断するためには親クラスである機能Bの優先レベルを考慮して、実行許可判定を行う。親クラスの参照方法は、各言語の継承クラスの参照機能を利用する。
例えば、機能A2が実行要求機能であり、機能B1及び機能B2が実行中機能である場合、機能A2と、機能B1及び機能B2とは親クラスが異なる。そこで親クラス同士の優先レベルを比較すると、機能A2の親クラスである機能Aの優先レベル「1」は、機能B1及び機能B2の親クラスである機能Bの優先レベル「2」よりも低い。そこで、機能A2と機能B1及び機能B2の各々との優先レベルを比較するまでもなく、機能Aは実行不可となる。
***効果の説明***
本実施の形態に係るソースコード生成装置20aでは、実行中の機能を階層に従って上位機能毎に管理し、優先度比較を段階的に行う。起動する機能の上位機能と、実行中の機能の上位機能同士で比較し、比較対象を絞り込む。次に同一階層の機能同士で優先度を比較する。これにより、比較対象数を減らすことができ、処理時間の短縮を可能とする。
本実施の形態に係るソースコード生成装置20aでは、優先順位の制御は、各機能のソースコードで持たず、機能優先度の制御の役割を持つ実行優先度制御に集約することで、ソースコード量の削減を可能とする。
本実施の形態に係るソースコード生成装置20では、起動する機能と全ての実行中の機能の優先度を比較する必要がなく、優先度の比較処理時間を短縮することができる。
上記の実施の形態では、取得部40、振舞い記述生成部501、操作生成部502、例外記述生成部503、条件記述生成部504、処理記述生成部505、優先度制御生成部60がそれぞれ独立した機能ブロックとしてソースコード生成装置20を構成している。しかし、ソースコード生成装置20の構成は任意である。また、振舞い記述生成部501、操作生成部502、例外記述生成部503、条件記述生成部504、処理記述生成部505をひとつの機能ブロックで実現してもよい。また、優先度制御生成部60の機能をソースコード生成部50が備えていてもよい。
ソースコード生成装置20の機能ブロックは、実施の形態に記載した機能を実現することができれば、任意であり、これらの機能ブロックを、他のどのような組み合わせでファイル管理装置を構成しても構わない。
以上、実施の形態1,2について説明したが、これらの2つの実施の形態のうち、1つの実施の形態を部分的に実施しても構わない。あるいは、これらの2つの実施の形態のうち、複数を部分的に組み合わせて実施しても構わない。その他、これらの2つの実施の形態を、全体としてあるいは部分的に、どのように組み合わせて実施しても構わない。
なお、上記の実施の形態は、本質的に好ましい例示であって、本発明、その適用物や用途の範囲を制限することを意図するものではなく、必要に応じて種々の変更が可能である。
20,20a ソースコード生成装置、30 ソースコード、40 取得部、50 ソースコード生成部、60,601 優先度制御生成部、101 インプット仕様書、102 物理項目リスト、103 機能項目リスト、104 物理項目の振舞い記述、105 機能項目の振舞い記述、107 処理項目リスト、108 振舞い記述情報、301 物理項目クラス、302 機能項目クラス、303,3031 優先度制御ソースコード、501 振舞い記述生成部、502 操作生成部、503 例外記述生成部、504 条件記述生成部、505 処理記述生成部、800,800a ソースコード生成システム、901 プロセッサ、902 補助記憶装置、903 メモリ、904 通信装置、905 入力インタフェース、906 ディスプレイインタフェース、907 入力装置、908 ディスプレイ、910 信号線、911,912 ケーブル、1071 処理項目リスト記憶部、1072 処理項目、1072a 複数の処理項目、1073 操作情報、1073a 複数の操作、1074 例外処理情報、1075 優先度、1075a 実行中の処理項目の親処理項目の優先度、1075b 実行が要求された処理項目の親処理項目の優先度、1081 振舞い記述情報記憶部、3031a 優先度制御部、9041 レシーバー、9042 トランスミッター、10721 親処理項目、10722 子処理項目、S10 ソースコード生成処理、S100 取得処理、S100a 振舞い記述生成処理、S200 継承記述処理、S300 操作生成処理、S400 例外記述生成処理、S500 条件記述生成処理、S600 処理記述生成処理。

Claims (8)

  1. 処理の項目を表す処理項目と、前記処理項目に含まれる操作を表す操作情報と、例外処理を表す例外処理情報とを含む処理項目リストを記憶する処理項目リスト記憶部と、
    前記処理項目リストに基づいて記述された前記処理項目の振舞いを記述する振舞い記述情報を記憶する振舞い記述情報記憶部と、
    前記処理項目を用いて、クラスを定義するソースコードを生成する振舞い記述生成部と、
    前記操作情報を用いて、前記操作を定義するソースコードを生成する操作生成部と、
    前記例外処理情報を用いて、前記操作の実行中に発生する前記例外処理を表すソースコードを生成する例外記述生成部と、
    前記振舞い記述情報を用いて、前記操作の条件分岐を表すソースコードを生成する条件記述生成部と、
    前記振舞い記述情報を用いて、前記操作の処理内容を表すソースコードを生成する処理記述生成部と
    を備えるソースコード生成システム。
  2. 前記処理項目リストは、
    前記操作として複数の操作を表す前記操作情報を有し、
    前記操作生成部は、
    前記複数の操作の各操作を定義するソースコードを生成し、
    前記例外記述生成部は、
    前記複数の操作の各操作を定義するソースコードに対して前記例外処理を表すソースコードを割り付ける請求項1に記載のソースコード生成システム。
  3. 前記処理項目リストは、
    前記処理項目として、複数の処理項目を有し、前記複数の処理項目の各々に優先度が設定され、
    前記ソースコード生成システムは、
    前記処理項目の各々に設定された優先度に基づいて、実行中の処理項目の優先度と実行が要求された処理項目の優先度とを比較し、優先度が高い方の処理項目を実行する優先度制御機能を有する優先度制御ソースコードを生成する優先度制御生成部を備える請求項1または2に記載のソースコード生成システム。
  4. 前記処理項目リストは、
    前記処理項目として、複数の処理項目を有し、
    前記複数の処理項目の各々に優先度が設定されるとともに、前記複数の処理項目の各々が上位の階層である親処理項目を有し、
    実行中の処理項目の親処理項目の優先度と、実行が要求された処理項目の親処理項目の優先度とに基づいて、実行が要求された処理項目の実行の可否を判定する優先度制御機能を有する優先度制御ソースコードを生成する優先度制御生成部を備える請求項1または2に記載のソースコード生成システム。
  5. 前記優先度制御生成部は、
    実行が要求された処理項目の親処理項目と異なる親処理項目を有する実行中の処理項目がある場合には、前記実行が要求された処理項目の親処理項目の優先度と前記実行中の処理項目の親処理項目の優先度とを比較し、優先度が低い方の親処理項目を有する処理項目の実行を不可とする請求項4に記載のソースコード生成システム。
  6. 処理の項目を表す処理項目と、前記処理項目に含まれる操作を表す操作情報と、例外処理を表す例外処理情報とを含む処理項目リストと、前記処理項目リストに基づいて記述された前記処理項目の振舞いを記述する振舞い記述情報とを取得する取得部と、
    前記処理項目を用いて、クラスを定義するソースコードを生成する振舞い記述生成部と、
    前記操作情報を用いて、前記操作を定義するソースコードを生成する操作生成部と、
    前記例外処理情報を用いて、前記操作の実行中に発生する前記例外処理を表すソースコードを生成する例外記述生成部と、
    前記振舞い記述情報を用いて、前記操作の条件分岐を表すソースコードを生成する条件記述生成部と、
    前記振舞い記述情報を用いて、前記操作の処理内容を表すソースコードを生成する処理記述生成部と
    を備えるソースコード生成装置。
  7. 処理の項目を表す処理項目と、前記処理項目に含まれる操作を表す操作情報と、例外処理を表す例外処理情報とを含む処理項目リストを記憶する処理項目リスト記憶部と、前記処理項目リストに基づいて記述された前記処理項目の振舞いを記述する振舞い記述情報を記憶する振舞い記述情報記憶部と、振舞い記述生成部と、操作生成部と、例外記述生成部と、条件記述生成部と、処理記述生成部とを備えるソースコード生成システムのソースコード生成方法において、
    前記振舞い記述生成部が、前記処理項目を用いてクラスを定義するソースコードを生成し、
    前記操作生成部が、前記操作情報を用いて前記操作を定義するソースコードを生成
    前記例外記述生成部が、前記例外処理情報を用いて前記操作の実行中に発生する前記例外処理を表すソースコードを生成し、
    前記条件記述生成部が、前記振舞い記述情報を用いて前記操作の条件分岐を表すソースコードを生成し、
    前記処理記述生成部が、前記振舞い記述情報を用いて前記操作の処理内容を表すソースコードを生成するソースコード生成方法。
  8. 処理の項目を表す処理項目と、前記処理項目に含まれる操作を表す操作情報と、例外処理を表す例外処理情報とを含む処理項目リストと、前記処理項目リストに基づいて記述された前記処理項目の振舞いを記述する振舞い記述情報とを取得する取得処理と、
    前記処理項目を用いてクラスを定義するソースコードを生成する振舞い記述生成処理と、
    前記操作情報を用いて前記操作を定義するソースコードを生成する操作生成処理と、
    前記例外処理情報を用いて前記操作の実行中に発生する前記例外処理を表すソースコードを生成する例外記述生成処理と、
    前記振舞い記述情報を用いて前記操作の条件分岐を表すソースコードを生成する条件記述生成処理と、
    前記振舞い記述情報を用いて前記操作の処理内容を表すソースコードを生成する処理記述生成処理と
    をコンピュータに実行させるプログラム。
JP2015081441A 2015-04-13 2015-04-13 ソースコード生成システム、ソースコード生成装置、ソースコード生成方法及びプログラム Active JP6482362B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015081441A JP6482362B2 (ja) 2015-04-13 2015-04-13 ソースコード生成システム、ソースコード生成装置、ソースコード生成方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015081441A JP6482362B2 (ja) 2015-04-13 2015-04-13 ソースコード生成システム、ソースコード生成装置、ソースコード生成方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2016201009A JP2016201009A (ja) 2016-12-01
JP6482362B2 true JP6482362B2 (ja) 2019-03-13

Family

ID=57424340

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015081441A Active JP6482362B2 (ja) 2015-04-13 2015-04-13 ソースコード生成システム、ソースコード生成装置、ソースコード生成方法及びプログラム

Country Status (1)

Country Link
JP (1) JP6482362B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115167834B (zh) * 2022-09-08 2022-12-23 杭州新中大科技股份有限公司 一种基于代码数据化的源代码自动生成方法及装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10214191A (ja) * 1996-11-27 1998-08-11 Toshiba Corp オブジェクト指向プログラミングに適用される開発支援装置および開発支援方法
JP2003208307A (ja) * 2002-01-16 2003-07-25 Hitachi Software Eng Co Ltd ソースプログラム生成システム
JP4354719B2 (ja) * 2003-03-20 2009-10-28 三菱電機株式会社 プログラム開発支援プログラム
WO2007116490A1 (ja) * 2006-03-31 2007-10-18 Fujitsu Limited ソースコード生成プログラム、ソースコード生成方法およびソースコード生成装置
JP5539921B2 (ja) * 2011-03-31 2014-07-02 株式会社キャナリーリサーチ プログラム開発ツール

Also Published As

Publication number Publication date
JP2016201009A (ja) 2016-12-01

Similar Documents

Publication Publication Date Title
JP5911562B2 (ja) ユーザインターフェースおよび入力制御を適応させる方法
US10585826B2 (en) Using processor types for processing interrupts in a computing device
BR112012027950B1 (pt) método computadorizado de gerenciar uma pluralidade de subbuffers, meio legível por máquina não transitório e aparelho para gerenciar uma pluralidade de subbuffers
JP5778296B2 (ja) 仮想計算機システム、仮想化機構、及びデータ管理方法
CN114222975A (zh) 使用存储器孔径冲刷顺序的数据保存
EP4231138A1 (en) Method and apparatus for fixing weak memory ordering problem
US20190324782A1 (en) Class splitting in object-oriented environments
US10540151B1 (en) Graphical customization of a firmware-provided user interface (UI)
JP6482362B2 (ja) ソースコード生成システム、ソースコード生成装置、ソースコード生成方法及びプログラム
JP7082105B2 (ja) 知識ベースを管理するための方法、装置、設備及び媒体
US11809833B2 (en) System and method for image localization in knowledge base content
JP2013161219A (ja) コード生成装置、及びコード生成プログラム
US20230195666A1 (en) Providing Platform Management Profiles to Platform Management Drivers on Electronic Devices
US11868225B2 (en) Provided inputs and provided output actions for use in platform management policies for platform management drivers
US20230100758A1 (en) Unique identifier creation and management for elaborated platform
US20230205532A1 (en) Offloading computation based on extended instruction set architecture
JP7401252B2 (ja) 情報処理装置、情報処理方法およびプログラム
US11797738B2 (en) Test apparatus, computer readable medium, and test method
JP7370264B2 (ja) トレーサビリティ管理装置、トレーサビリティ管理方法、及び、トレーサビリティ管理プログラム
US20220414222A1 (en) Trusted processor for saving gpu context to system memory
WO2022195892A1 (ja) トレース制御装置、エミュレータ、トレース制御方法、および、トレース制御プログラム
JP2016139203A (ja) 設計情報作成方法、設計情報作成装置及びプログラム
JP2006163523A (ja) 動作モデル生成方法および動作モデル生成方法
KR20210095508A (ko) 전자 장치 및 이의 제어 방법
US20200050783A1 (en) Information processing device and computer readable medium

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180221

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181031

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181106

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181224

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: 20190115

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190212

R150 Certificate of patent or registration of utility model

Ref document number: 6482362

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250