図面 (/)

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

出願人 三菱電機株式会社三菱電機メカトロニクスソフトウエア株式会社
発明者 金井勇人吉岡克浩畠山剛井元薫岩橋正実
出願日 2015年4月13日 (4年3ヶ月経過) 出願番号 2015-081441
公開日 2016年12月1日 (2年7ヶ月経過) 公開番号 2016-201009
状態 特許登録済
技術分野 ストアードプログラム
主要キーワード 優先度制御処理 サーキットリー 操作生成 例外項目 例外コード 機能項目毎 優先度比較 実行不許可
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2016年12月1日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (14)

課題

操作時に発生する例外処理を表す全てのソースコード自動生成することを目的とする。

解決手段

処理項目リスト107を記憶する処理項目リスト記憶部1071と、振舞い記述情報108を記憶する振舞い記述情報記憶部1081と、クラスを定義するソースコードを生成する振舞い記述生成部501と、操作を定義するソースコードを生成する操作生成部502と、操作の実行中に発生する例外処理を表すソースコードを生成する例外記述生成部503と、操作の条件分岐を表すソースコードを生成する条件記述生成部504と、操作の処理内容を表すソースコードを生成する処理記述生成部505とを備える。

概要

背景

代表的なモデル記述言語であるUML(Unified Modeling Language)では、静的モデルとしてクラス図動的モデルとして状態遷移図、シーケンス図、アクティビティ図などがある。標準で規定されているのは、個々の図で利用するモデル要素、すなわちクラスの箱や状態の書き方、条件の書き方のみであり、記載する内容や図間の整合性などは設計者に委ねられている。

組込み製品においては、センサディスプレイ等のハードウェア機器上で発生する故障、異常等の「例外事象に対応したソフトウェア例外処理が重要であるが、UMLでの記載方法は定まっていない。
また、ユースケ—ス分析において、ユースケース記述の中のシナリオの1つとしてユースケース図記述される場合がある。しかし、ユースケース図は要求レベル形式化されていないテキストであるため、コード生成するには、詳細設計ベル設計情報との紐付けとコード生成の作り込みが必要であり、作成に時間がかかっている。

また、機能実行中の割込みに対応して「処理の優先度」に応じた実行制御を行う必要があり、一般的には、タスク競合分析により、タスク単位競合関係マトリクスで整理する場合がある。タスクは、ソフトウェア設計レベルのデータであり、例外処理と同様に、詳細設計レベルの設計情報との紐付けとコード生成の作り込みが必要である。

特許文献1では、例外処理を定義して、自動的にソースコードに埋め込むことが可能である。
また、特許文献2では、階層化された機能項目ごとに、優先順位記入するようにして、その実行優先順位情報に基づいて、ソースコードを実行することが可能である。

概要

操作時に発生する例外処理を表す全てのソースコードを自動生成することを目的とする。処理項目リスト107を記憶する処理項目リスト記憶部1071と、振舞い記述情報108を記憶する振舞い記述情報記憶部1081と、クラスを定義するソースコードを生成する振舞い記述生成部501と、操作を定義するソースコードを生成する操作生成部502と、操作の実行中に発生する例外処理を表すソースコードを生成する例外記述生成部503と、操作の条件分岐を表すソースコードを生成する条件記述生成部504と、操作の処理内容を表すソースコードを生成する処理記述生成部505とを備える。

目的

本発明では、すべての例外事象の条件分岐を表すソースコードを出力することを目的とする

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

(分野番号表示ON)※整理標準化データをもとに当社作成

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

処理の項目を表す処理項目と、前記処理項目に含まれる操作を表す操作情報と、例外処理を表す例外処理情報とを含む処理項目リストを記憶する処理項目リスト記憶部と、前記処理項目リストに基づいて記述された前記処理項目の振舞いを記述する振舞い記述情報を記憶する振舞い記述情報記憶部と、前記処理項目を用いて、クラスを定義するソースコードを生成する振舞い記述生成部と、前記操作情報を用いて、前記操作を定義するソースコードを生成する操作生成部と、前記例外処理情報を用いて、前記操作の実行中に発生する前記例外処理を表すソースコードを生成する例外記述生成部と、前記振舞い記述情報を用いて、前記操作の条件分岐を表すソースコードを生成する条件記述生成部と、前記振舞い記述情報を用いて、前記操作の処理内容を表すソースコードを生成する処理記述生成部とを備えるソースコード生成システム

請求項2

前記処理項目リストは、前記操作として複数の操作を表す前記操作情報を有し、前記操作生成部は、前記複数の操作の各操作を定義するソースコードを生成し、前記例外記述生成部は、前記複数の操作の各操作を定義するソースコードに対して前記例外処理を表すソースコードを割り付ける請求項1に記載のソースコード生成システム。

請求項3

前記処理項目リストは、前記処理項目として、複数の処理項目を有し、前記複数の処理項目の各々に優先度が設定され、前記ソースコード生成システムは、前記処理項目の各々に設定された優先度に基づいて、実行中の処理項目の優先度と実行が要求された処理項目の優先度とを比較し、優先度が高い方の処理項目を実行する優先度制御機能を有する優先度制御ソースコードを生成する優先度制御生成部を備える請求項1または2に記載のソースコード生成システム。

請求項4

前記処理項目リストは、前記処理項目として、複数の処理項目を有し、前記複数の処理項目の各々に優先度が設定されるとともに、前記複数の処理項目の各々が上位の階層である親処理項目を有し、実行中の処理項目の親処理項目の優先度と、実行が要求された処理項目の親処理項目の優先度とに基づいて、実行が要求された処理項目の実行の可否を判定する優先度制御機能を有する優先度制御ソースコードを生成する優先度制御生成部を備える請求項1または2に記載のソースコード生成システム。

請求項5

前記優先度制御生成部は、実行が要求された処理項目の親処理項目と異なる親処理項目を有する実行中の処理項目がある場合には、前記実行が要求された処理項目の親処理項目の優先度と前記実行中の処理項目の親処理項目の優先度とを比較し、優先度が低い方の親処理項目を有する処理項目の実行を不可とする請求項4に記載のソースコード生成システム。

請求項6

処理の項目を表す処理項目と、前記処理項目に含まれる操作を表す操作情報と、例外処理を表す例外処理情報とを含む処理項目リストと、前記処理項目リストに基づいて記述された前記処理項目の振舞いを記述する振舞い記述情報とを取得する取得部と、前記処理項目を用いて、クラスを定義するソースコードを生成する振舞い記述生成部と、前記操作情報を用いて、前記操作を定義するソースコードを生成する操作生成部と、前記例外処理情報を用いて、前記操作の実行中に発生する前記例外処理を表すソースコードを生成する例外記述生成部と、前記振舞い記述情報を用いて、前記操作の条件分岐を表すソースコードを生成する条件記述生成部と、前記振舞い記述情報を用いて、前記操作の処理内容を表すソースコードを生成する処理記述生成部とを備えるソースコード生成装置

請求項7

処理の項目を表す処理項目と、前記処理項目に含まれる操作を表す操作情報と、例外処理を表す例外処理情報とを含む処理項目リストを記憶する処理項目リスト記憶部と、前記処理項目リストに基づいて記述された前記処理項目の振舞いを記述する振舞い記述情報を記憶する振舞い記述情報記憶部とを備えるソースコード生成システムのソースコード生成方法において、振舞い記述生成部が、前記処理項目を用いてクラスを定義するソースコードを生成し、前記操作情報を用いて前記操作を定義するソースコードを生成する操作生成部と、例外記述生成部が、前記例外処理情報を用いて前記操作の実行中に発生する前記例外処理を表すソースコードを生成し、条件記述生成部が、前記振舞い記述情報を用いて前記操作の条件分岐を表すソースコードを生成し、処理記述生成部が、前記振舞い記述情報を用いて前記操作の処理内容を表すソースコードを生成するソースコード生成方法。

請求項8

処理の項目を表す処理項目と、前記処理項目に含まれる操作を表す操作情報と、例外処理を表す例外処理情報とを含む処理項目リストと、前記処理項目リストに基づいて記述された前記処理項目の振舞いを記述する振舞い記述情報とを取得する取得処理と、前記処理項目を用いてクラスを定義するソースコードを生成する振舞い記述生成処理と、前記操作情報を用いて前記操作を定義するソースコードを生成する操作生成処理と、前記例外処理情報を用いて前記操作の実行中に発生する前記例外処理を表すソースコードを生成する例外記述生成処理と、前記振舞い記述情報を用いて前記操作の条件分岐を表すソースコードを生成する条件記述生成処理と、前記振舞い記述情報を用いて前記操作の処理内容を表すソースコードを生成する処理記述生成処理とをコンピュータに実行させるプログラム

技術分野

背景技術

0002

代表的なモデル記述言語であるUML(Unified Modeling Language)では、静的モデルとしてクラス図動的モデルとして状態遷移図、シーケンス図、アクティビティ図などがある。標準で規定されているのは、個々の図で利用するモデル要素、すなわちクラスの箱や状態の書き方、条件の書き方のみであり、記載する内容や図間の整合性などは設計者に委ねられている。

0003

組込み製品においては、センサディスプレイ等のハードウェア機器上で発生する故障、異常等の「例外事象に対応したソフトウェア例外処理が重要であるが、UMLでの記載方法は定まっていない。
また、ユースケ—ス分析において、ユースケース記述の中のシナリオの1つとしてユースケース図記述される場合がある。しかし、ユースケース図は要求レベル形式化されていないテキストであるため、コード生成するには、詳細設計ベル設計情報との紐付けとコード生成の作り込みが必要であり、作成に時間がかかっている。

0004

また、機能実行中の割込みに対応して「処理の優先度」に応じた実行制御を行う必要があり、一般的には、タスク競合分析により、タスク単位競合関係マトリクスで整理する場合がある。タスクは、ソフトウェア設計レベルのデータであり、例外処理と同様に、詳細設計レベルの設計情報との紐付けとコード生成の作り込みが必要である。

0005

特許文献1では、例外処理を定義して、自動的にソースコードに埋め込むことが可能である。
また、特許文献2では、階層化された機能項目ごとに、優先順位記入するようにして、その実行優先順位情報に基づいて、ソースコードを実行することが可能である。

先行技術

0006

特開2007−094922号公報
特開2012−252555号公報

発明が解決しようとする課題

0007

特許文献1では、状態遷移図をインプットとして、定義された状態以外になった場合の1つの条件分岐文、すなわちifに対するelseなどを出力することができるが、複数パターンの例外処理の分岐を出力することはできないという課題があった。

0008

本発明では、すべての例外事象条件分岐を表すソースコードを出力することを目的とする。

課題を解決するための手段

0009

本発明に係るソースコード生成システムは、
処理の項目を表す処理項目と、前記処理項目に含まれる操作を表す操作情報と、例外処理を表す例外処理情報とを含む処理項目リストを記憶する処理項目リスト記憶部と、
前記処理項目リストに基づいて記述された前記処理項目の振舞いを記述する振舞い記述情報を記憶する振舞い記述情報記憶部と、
前記処理項目を用いて、クラスを定義するソースコードを生成する振舞い記述生成部と、
前記操作情報を用いて、前記操作を定義するソースコードを生成する操作生成部と、
前記例外処理情報を用いて、前記操作の実行中に発生する前記例外処理を表すソースコードを生成する例外記述生成部と、
前記振舞い記述情報を用いて、前記操作の条件分岐を表すソースコードを生成する条件記述生成部と、
前記振舞い記述情報を用いて、前記操作の処理内容を表すソースコードを生成する処理記述生成部とを備える。

発明の効果

0010

本発明に係るソースコード生成システムは、処理項目と操作情報と例外処理情報とを含む処理項目リストを記憶する処理項目リスト記憶部と、処理項目リストに基づいて記述された処理項目の振舞いを記述する振舞い記述情報を記憶する振舞い記述情報記憶部と、処理項目を用いて、クラスを定義するソースコードを生成する振舞い記述生成部と、操作情報を用いて、操作を定義するソースコードを生成する操作生成部と、例外処理情報を用いて、操作の実行中に発生する例外処理を表すソースコードを生成する例外記述生成部とを備えるので、操作時に発生する例外処理を表すソースコードを生成することができる。

図面の簡単な説明

0011

実施の形態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による各機能の継承関係の例を示す図。

実施例

0012

実施の形態1.
図1を用いて、本実施の形態に係るソースコード生成装置20のブロック構成について説明する。
本実施の形態では、物理項目に対して発生しうる例外事象と機能項目に対する処理の優先度と仕様記述方法とコード生成方法とを示す。

0013

***構成の説明***
ソースコード生成システム800は、処理項目リスト記憶部1071、振舞い記述情報記憶部1081、ソースコード生成装置20、ソースコード30を有する。
ソースコード生成装置20は、取得部40とソースコード生成部50と優先度制御生成部60とを有する。
取得部40は、物理項目リスト102、機能項目リスト103、物理項目の振舞い記述104、機能項目の振舞い記述105を入力とする。

0014

物理項目リスト102、機能項目リスト103は、処理項目リスト107の例である。
物理項目の振舞い記述104、機能項目の振舞い記述105は、振舞い記述情報108の例である。

0015

処理項目リスト記憶部1071は、処理の項目を表す処理項目1072と、処理項目1072に含まれる操作を表す操作情報1073と、例外処理を表す例外処理情報1074とを含む処理項目リスト107を記憶する。処理項目リスト記憶部1071は、処理項目リスト107として、物理項目リスト102と機能項目リスト103とを記憶する。

0016

振舞い記述情報記憶部1081は、処理項目リスト107に基づいて記述された処理項目1072の振舞いを記述する振舞い記述情報108を記憶する。振舞い記述情報記憶部1081は、振舞い記述情報108として、物理項目の振舞い記述104と機能項目の振舞い記述105とを記憶する。
処理項目リスト107は、操作として複数の操作1073aを表す操作情報1073を有する。

0017

ソースコード生成部50は、振舞い記述生成部501、操作生成部502、例外記述生成部503、条件記述生成部504、処理記述生成部505を有する。
振舞い記述生成部501は、処理項目1072を用いて、クラスを定義するソースコードを生成する。
操作生成部502は、操作情報1073を用いて、操作を定義するソースコードを生成する。操作生成部502は、複数の操作の各操作を定義するソースコードを生成する。
例外記述生成部503は、例外処理情報1074を用いて、操作の実行中に発生する例外処理を表すソースコードを生成する。例外記述生成部503は、複数の操作の各操作を定義するソースコードに対して例外処理を表すソースコードを割り付ける
条件記述生成部504は、振舞い記述情報108を用いて、操作の条件分岐を表すソースコードを生成する。
処理記述生成部505は、振舞い記述情報108を用いて、操作の処理内容を表すソースコードを生成する。

0018

各構成部についてさらに詳しく説明する。
振舞い記述生成部501は、物理項目リスト102および機能項目リスト103で定義された全ての物理項目および機能項目毎に1つのクラスを生成する。ここでクラスとは、ソースコードの形式で生成されたものである。クラスの名称には、物理項目および機能項目毎、すなわち処理項目1072毎に定義したラベル名を使用する。
次に、物理項目リスト102および機能項目リスト103、すなわち処理項目リスト107で、自項目の上位階層項目が定義されているものについては、その上位階層の項目から生成されたクラスと親子関係があることを示す継承コードを生成する。振舞い記述生成部501は、生成した継承コードをソースコードの形式で生成されたクラスに追記する。

0019

操作生成部502は、物理項目リスト102および機能項目リスト103で定義された全ての操作毎に1つのメソッドを生成し、当該操作が属する機能のクラス内に配置する。ここでメソッドとは、ソースコードの形式で生成されたものである。メソッドの名称には、操作毎に定義したラベル名を使用する。メソッドのソースコードを生成するとは、操作を定義するソースコードを生成することである。

0020

例外記述生成部503は、物理項目リスト102で定義された例外毎に例外コードを生成し、その例外が属する物理項目のすべてのメソッドに例外コードを配置する。

0021

条件記述生成部504は、物理項目の振舞い記述104および機能項目の振舞い記述105、すなわち振舞い記述情報108で定義された全ての条件記述について、同じ内容となるif文を生成する。ここでif文の判定対象として使用する属性名称は、物理項目リスト102または機能項目リスト103において属性名称とラベルを対にして定義しており、ソースコードには当該ラベルを使用する。また、生成したif文は、物理項目の振舞い記述104および機能項目の振舞い記述105で定義した操作のソースコード内にて、記述した順番通りに配置する。

0022

処理記述生成部505では、物理項目の振舞い記述104および機能項目の振舞い記述105で定義された全ての処理記述について、同じ内容となる制御文を生成する。制御文内で使用する属性名称は、物理項目リスト102または機能項目リスト103において属性名称とラベルを対にして定義しており、ソースコードには当該ラベルを使用する。また、生成した制御文は、物理項目の振舞い記述104および機能項目の振舞い記述105で定義した操作のソースコード内にて、記述した順番通りに配置する。

0023

優先度制御生成部60は、処理項目1072の各々に設定された優先度1075に基づいて、実行中の処理項目の優先度と実行が要求された処理項目の優先度とを比較し、優先度が高い方の処理項目を実行する優先度制御機能を有する優先度制御ソースコード303を生成する。
なお、優先度制御生成部60は無くてもよく、機能の優先順位の制御プログラムを各機能のソースコードに持つ構成でも構わない。

0024

図2を用いて、本実施の形態に係るソースコード生成システム800における仕様記述からソースコード生成までの流れについて説明する。
仕様が記述されたインプット仕様書101から、ハードウェアを抽出し、故障、電源断異常値検出などの発生する可能性のある例外項目の定義を物理項目リスト102に列挙する。また、インプット仕様書101から、ソフトウェアの機能を抽出し、優先度の定義を機能項目リスト103に列挙する。

0025

物理項目リスト102の項目ごとに、物理項目の振舞い記述104に日本語の振舞い記述言語により、例外発生時の例外と振舞いを定義する。
機能項目リスト103の項目ごとに、機能の振舞いの定義を機能項目の振舞い記述105に記述する。

0026

ソースコード生成装置20に、物理項目リスト102、物理項目の振舞い記述104、機能項目リスト103、機能項目の振舞い記述105を入力して、物理項目クラス301、機能項目クラス302のソースコード30を生成する。

0027

図3を用いて、本実施の形態に係る物理項目リスト102の具体例及び作成の手順について説明する。物理項目リスト102では、ハードウェアの項目を階層化して表記する。

0028

物理項目は、処理の項目であるクラスを表す処理項目1072の例である。
物理項目リスト102、すなわち処理項目リスト107は、処理項目1072として、複数の処理項目1072aを有する。また、複数の処理項目1072aの各々が上位の階層である親処理項目10721を有する。最上位の処理項目には親処理項目はない。
具体的には、物理項目リスト102には、物理項目ごとに、物理名称である名称とソースコード生成時に用いるラベルとを階層的に記載する。階層が下になるほど物理項目を詳細化する。
物理項目の名称として、センサの階層の下にセンサ1とセンサ2とを記載し、物理項目のラベルとして、センサに対応するSensor、センサ1に対応するSen1、センサ2に対応するSen2と記載する。
例えば、センサが親物理項目、すなわち親処理項目10721であり、センサ1、センサ2が子物理項目、すなわち子処理項目10722となる。

0029

また、物理項目ごとに操作の名称、操作のラベルを記載する。図3では、センサ1の操作の名称として、起動と値取得を記載し、それぞれのラベルOpeY,OpeZを記載する。

0030

それぞれの操作に対して、属性の名称、属性のラベル、属性の範囲、属性の初期値を記載する。すべての操作に共通する属性は、どの操作にも属さない行に記載する。図3では「起動」と、「値取得」という名称の操作に対して共通する、電源状態という属性の名称を記載している。「電源状態」という属性の名称に対して、ラベルをAttrN、範囲をPOWERONとPOWEROFFとした。

0031

物理項目に対して例外項目がある場合は、例外の名称と例外のラベルとを記載する。図3では、「センサ1」という物理項目の名称に対して、「電源断」という例外の名称と、POWEROffEventという例外のラベルを記載している。

0032

図4を用いて、本実施の形態に係る物理項目の振舞い記述104の具体例及び作成の手順について説明する。
物理項目リスト102の物理項目ごとに、物理項目の振舞い記述104を作成する。図4では「センサ1」についての振舞い記述を記載した。
物理項目の振舞い記述104では、物理項目の名称、概要、目的を記載したあと、物理項目の振舞い記述を記載する。

0033

物理項目リスト102において、振舞い記述の作成対象である物理項目に、例外処理があれば、[]のカッコの中に例外の名称を記載する。
また、処理を表す処理記述は先頭に・をつける。
図4では、「電源断」という例外処理が起きた場合、電源状態をPOWEROFFにするという処理を記述している。
また、操作に対しては<>のカッコで表し、<>のカッコの中に操作の名称を記載する。

0034

図5を用いて、本実施の形態に係る機能項目リスト103の具体例及び作成の手順について説明する。機能項目リスト103では、システムに要求される機能を階層化して表記する。
機能項目は、処理の項目であるクラスを表す処理項目1072の例である。
機能項目リスト103、すなわち処理項目リスト107は、処理項目として、複数の処理項目を有し、複数の処理項目の各々に優先度1075が設定される。また、複数の処理項目の各々が上位の階層である親処理項目を有する。最上位の処理項目には親処理項目はない。以下で説明する優先レベルは、優先度1075の例である。

0035

機能項目リスト103では、まずシステムが要求する機能を抽出する。そして、抽出した各機能を大分類・中分類小分類というように階層的に整理する。階層の深さに制限を設ける必要は無く、また機能により階層の深さが異なっていても良い。
図5の例では、機能項目の欄に、上位階層から順に機能の名称が設定される。大分類が機能A、中分類が機能A1及び機能A2と設定されている。また、大分類が機能B、中分類が機能B1及び機能B2、機能B2の小分類として機能B21及び機能B22と設定されている。なお、ここで機能の名称に使用する名前、すなわち文字列に制限は無い。
例えば、機能Aが親機能項目、すなわち親処理項目であり、機能A1、機能A2が子機能項目、すなわち子処理項目となる。また、子機能項目、すなわち子処理項目を機能B21、機能B22とすると、親機能項目、すなわち親処理項目は機能B2である。

0036

次に、各機能についてシステムが要求する優先度1075を検討する。この優先度1075とは、同じ階層に分類した機能同士の実行優先度を指している。図5の例では、機能Aと機能Bの優先レベルは、それぞれ1と2であるため、機能Aの優先度が機能Bの優先度よりも高いことになる。
上記優先度は、上位階層の機能が同じである機能同士では固有の値を指定する必要がある。一方、上位階層が異なる機能同士では優先度の値が重複しても良い。図5の例では、上位階層が機能Aである中分類の機能A1と機能A2との優先レベルは、それぞれ1と2である。また、同じ中分類であるが上位階層が機能Bである中分類の機能B1と機能B2との優先レベルについても、それぞれ1と2とが設定されている。

0037

次に、各機能にラベルを設定する。これは、ソースコード生成の際、クラス名に使用される。そのため、生成するコードのプログラミング言語仕様に則った命名をする必要がある。

0038

続いて、機能項目リスト103の作成において定義した各機能の具体的な仕様を機能仕様として定義する。機能仕様は操作情報1073の例である。機能仕様には、大きく分けて操作と属性がある。

0039

まず操作の項目では、各機能において必要となる処理内容を抽出し、その処理に対して名称を付ける。この名称は、一つの機能内で固有である必要がある。
次に、抽出した各操作にラベルを設定する。これは、ソースコード生成の際、メソッド名に使用される。そのため、生成するコードのプログラミング言語仕様に則った命名をする必要がある。

0040

次に属性の項目では、各操作で使用するデータを抽出し、抽出したデータに対して名称を付ける。抽出したデータに対して付する名称は、一つの操作内で固有である必要がある。
抽出した各属性にラベルを設定する。このラベルは、ソースコード生成の際、フィールド名に使用される。そのため、生成するコードのプログラミング言語仕様に則った命名をする必要がある。
また、抽出した各属性の値域を範囲に設定する。これは、ソースコード生成の際、フィールドの値域に使用される。そのため、フィールドとして存在しえない範囲の値は設定できない。
さらに、抽出した各属性の初期値を設定する。これは、ソースコード生成の際、フィールドの初期化に使用される。そのため、フィールドとして存在しえない範囲の値は設定できない。

0041

図6を用いて、本実施の形態に係る機能項目の振舞い記述105の具体例及び作成の手順について説明する。
機能項目の振舞い記述105では、機能項目リスト103で定義した各機能の振舞いを定義し、各機能が持つ操作毎に、処理内容の詳細を記載する。

0042

まず、機能が持つ操作の1つずつについて、当該操作に属する属性をどのように使用するか具体的に検討し、どのような「条件」で、どのような「処理」を行うか明らかにする。
次に、検討した「条件」と「処理」とを、擬似言語にて記述する。この擬似言語では、使用する属性を機能項目リスト103に記載の名称と揃え、論理構造のみを記号化する。

0043

1つの機能が持つ全ての操作は、一つの「機能項目の振舞い記述」としてまとめて記述する。
つまり、図5の機能項目リスト103における機能A1が持つ操作A及び操作Bについては、図6に示す1つの「機能項目の振舞い記述105」にまとめて記述する。
以上の手順を、機能項目リスト103における全ての機能について実施する。

0044

***動作の説明***
図7を用いて、本実施の形態に係るソースコード生成装置20におけるソースコード生成方法、ソースコード生成処理S10の動作について説明する。

0045

取得部40は、処理項目リスト107と、処理項目リスト107に基づいて記述された処理項目1072の振舞いを記述する振舞い記述情報108とを取得する取得処理S100を実行する。
具体的には、S701において、取得部40は、物理項目リスト102、機能項目リスト103、物理項目の振舞い記述104、機能項目の振舞い記述105を取得する。
振舞い記述生成部501は、取得部40により取得された物理項目の振舞い記述104または機能項目の振舞い記述105に対して、未処理のものが無い場合、処理を終了し、未処理のものが有る場合、S702に処理を進める。
ここで、処理対象の振舞い記述を処理対象振舞い記述とする。

0046

振舞い記述生成部501は、処理項目1072を用いてクラスを定義するソースコードを生成する振舞い記述生成処理S100aを実行する。
具体的には、S702において、振舞い記述生成部501は、処理対象振舞い記述に基づいて、機能項目リスト103あるいは物理項目リスト102から、処理対象振舞い記述の機能名称あるいは物理名称のラベルを取得しクラスを生成する。

0047

例えば、処理対象振舞い記述が物理項目の振舞い記述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」を生成する。

0048

S702におけるクラスのソースコード生成後、処理対象振舞い記述の機能項目または物理項目について親機能項目または親物理項目が有る場合は、処理はS703に進む。処理対象振舞い記述の機能項目または物理項目について親機能項目または親物理項目が無い場合は、処理はS704に進む。

0049

S703において、振舞い記述生成部501は、継承記述処理S200を実行する。振舞い記述生成部501は、処理対象振舞い記述に基づいて、機能項目リスト103あるいは物理項目リスト102から、親機能項目または親物理項目の名称のラベルを取得し、継承コードを生成する。

0050

処理対象振舞い記述が図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」を生成する。

0051

S704において、操作生成部502は、処理対象振舞い記述に基づいて、未処理の操作があるか否かを判定する。操作生成部502は、未処理の操作が有る場合、処理をS705に進め、未処理の操作が無い場合、処理をS708に進める。

0052

操作生成部502は、操作情報1073を用いて操作を定義するソースコードを生成する操作生成処理S300を実行する。
具体的には、S705において、操作生成部502は、機能項目リスト103あるいは物理項目リスト102から、未処理の操作名称のラベルを取得しメソッドを生成する。

0053

例えば、操作生成部502は、図3の物理項目リスト102の場合、センサ1には操作「起動」があるので、ラベルを取得し、メソッドをソースコードとして生成する。具体的には、操作生成部502は、図8の2行目の「void OpeY()」を生成する。
また、例えば、操作生成部502は、図5の機能項目リスト103の場合、機能Aには操作「操作A」があるので、ラベルを取得し、メソッドをソースコードとして生成する。具体的には、操作生成部502は、図9の2行目の「void OpeA()」を生成する。

0054

例外記述生成部503は、例外処理情報1074を用いて操作の実行中に発生する例外処理を表すソースコードを生成する例外記述生成処理S400を実行する。
S706において、例外記述生成部503は、処理対象振舞い記述に未処理の例外記述があるか否かを判定する。例外記述生成部503は、未処理の例外記述がある場合、処理をS707に進める。また、例外記述生成部503は、未処理の例外記述が無い場合、処理をS704に進める。

0055

S707において、例外記述生成部503は、物理項目リスト102から、例外名称のラベルを取得し、操作に例外コードを追加する。
例えば、例外記述生成部503は、図3の物理項目リスト102の場合、センサ1には例外項目「電源断」があるので、「電源断」のラベルを取得し、「起動」メソッドに例外コードを追加する。具体的には、例外記述生成部503は、図8の3行目と5行目のように、ソースコードを生成する。

0056

条件記述生成部504は、振舞い記述情報108を用いて操作の条件分岐を表すソースコードを生成する条件記述生成処理S500を実行する。
S708において、条件記述生成部504は、処理対象振舞い記述に未処理の条件記述がある場合、処理をS709に進める。条件記述生成部504は、未処理の条件記述が無い場合、処理をS710に進める。

0057

S709において、条件記述生成部504は、条件記述内の属性名称のラベルを取得しif文を生成する。
例えば、条件記述生成部504は、図5の機能項目リスト103の場合、操作「操作A」に条件記述があるので、条件記述内の属性名称「属性B」「属性C」「属性D」「属性E」のラベルを機能項目リスト103から取得し、if文を生成する。具体的には、条件記述生成部504は、図9の3行目と6行目のように、ソースコードを生成する。

0058

処理記述生成部505は、振舞い記述情報108を用いて操作の処理内容を表すソースコードを生成する処理記述生成処理S600を実行する。
S710において、処理記述生成部505は、処理対象振舞い記述に未処理の処理記述が有るか否かを判定する。処理記述生成部505は、未処理の処理記述が有る場合、処理をS711に進める。処理記述生成部505は、未処理の処理記述が無い場合、処理をS701に進める。

0059

S711において、処理記述生成部505は、処理記述内の属性名称のラベルを取得し制御文を生成する。
例えば、処理記述生成部505は、図5の機能項目リスト103の場合、操作「操作A」に未処理の処理記述があるので、条件記述内の属性名称「属性F」のラベルを取得し、制御文を生成する。具体的には、処理記述生成部505は、図9の4行目と7行目のように、ソースコードを生成する。

0060

図8は、物理項目クラス301のソースコード30の例を示す。図9は、機能項目クラス302のソースコード30の例を示す。
以上のソースコード生成処理S10により、図8及び図9に示すようなソースコード30が自動的に出力される。

0061

ソースコード生成部50は、物理項目クラス301と機能項目クラス302とのソースコード30を出力する。
なお、優先度制御生成部60は、機能項目の各々に設定された優先レベルに基づいて、実行中の機能項目の優先レベルと実行が要求された機能項目の優先レベルとを比較する。優先度制御生成部60は、優先レベルが高い方の機能項目を実行する優先度制御機能を有する優先度制御ソースコード303を生成する。

0062

図10を用いて、本実施の形態に係るソースコード生成装置20のハードウェア構成について説明する。
ソースコード生成装置20はコンピュータである。
ソースコード生成装置20は、プロセッサ901、補助記憶装置902、メモリ903、通信装置904、入力インタフェース905、ディスプレイインタフェース906といったハードウェアを備える。
プロセッサ901は、信号線910を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
入力インタフェース905は、入力装置907に接続されている。
ディスプレイインタフェース906は、ディスプレイ908に接続されている。

0063

プロセッサ901は、プロセッシングを行うIC(IntegratedCircuit)である。
プロセッサ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)である。

0064

補助記憶装置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内のレジスタ又はキャッシュメモリファイルとして記憶される。

0065

「部」を「サーキットリー」で提供してもよい。
また、「部」を「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。
「回路」及び「サーキットリー」は、プロセッサ901だけでなく、ロジックIC又はGA(Gate Array)又はASIC(Application Specific IntegratedCircuit)又はFPGA(Field−Programmable Gate Array)といった他の種類の処理回路をも包含する概念である。
なお、プログラムプロダクトと称されるものは、「部」として説明している機能を実現するプログラムが記録された記憶媒体記憶装置などであり、見た目の形式に関わらず、コンピュータ読み取り可能なプログラムをロードしているものである。

0066

***効果の説明***

0067

本実施の形態に係るソースコード生成装置20では、ソースコードの雛型、条件記述、処理記述などの正常記述の自動生成に加え、例外と処理の優先度とを考慮したソースコードの自動生成が可能となる。よって、ソースコード作成時間を削減する効果がある。

0068

本実施の形態に係るソースコード生成装置20では、ハードウェア物理項目に対して、任意の例外を定義した物理項目リストから物理項目リストに定義されている各操作をソースコードとして生成する。生成された全操作のソースコードに対して、同一のハードウェア物理項目に対する全例外のソースコードを割り付ける。このような処理により、例外記述生成部において、ハードウェア物理項目に属する複数の操作へ例外処理毎の例外処理ソースコードを自動生成する。このように、本実施の形態に係るソースコード生成装置20では、すべての例外事象の条件分岐を自動で出力することで、更に作成時間の削減効果を高めることができる。

0069

本実施の形態に係るソースコード生成装置20では、優先度制御生成部を備えているので、機能の優先順位の制御プログラムを各機能のソースコードに持つ必要がない。そのため、ソースコード量を削減することができる。また、優先度制御機能により、機能優先度を考慮した切り替えが可能となる。

0070

実施の形態2.
本実施の形態では、主に、実施の形態1と異なる点について説明する。
本実施の形態では、機能項目に対する処理の優先度の仕様記述方法とコード生成方法とについて説明する。

0071

***構成の説明***
図11を用いて、本実施の形態に係るソースコード生成システム800aのブロック構成につて説明する。
本実施の形態に係るソースコード生成装置20aでは、各機能項目の優先度を考慮し、実行することが可能となる。

0072

図11に示すように、ソースコード生成装置20aは、実施の形態1の優先度制御生成部60、優先度制御ソースコード303に替えて、優先度制御生成部601、優先度制御ソースコード3031を有する。優先度制御生成部601は、優先度制御ソースコード3031を生成する。

0073

優先度制御生成部601は、実行中の処理項目の親処理項目の優先度1075aと、実行が要求された処理項目の親処理項目の優先度とに基づいて、実行が要求された処理項目の実行の可否を判定する優先度制御機能を有する優先度制御ソースコード3031を生成する。
優先度制御生成部601は、実行が要求された処理項目の親処理項目と異なる親処理項目を有する実行中の処理項目がある場合には、実行が要求された処理項目の親処理項目の優先度と実行中の処理項目の親処理項目の優先度とを比較する。優先度制御生成部601は、優先度が低い方の親処理項目を有する処理項目の実行を不可とすることで、異なる子項目同士の比較を省略できる。

0074

***動作の説明***
図12を用いて、本実施の形態に係る優先度制御ソースコード3031を実現する優先度制御部3031aの優先度制御処理の手順について説明する。ここで、優先度制御ソースコード3031の優先度制御機能を実現する構成部を優先度制御部3031aとする。

0075

S1201において、優先度制御部3031aは、実行要求の機能項目の優先レベルを取得する。
S1202において、優先度制御部3031aは、優先レベルを判定し、優先レベルが0の場合、S1212の実行許可に進む。
優先レベルが0以外の場合、優先度制御部3031aは、S1203に進み、実行中の機能情報を取得する。

0076

S1204において、優先度制御部3031aは、実行中機能が無い場合、S1212の実行許可に進む。
優先度制御部3031aは、実行中機能が有る場合、S1205で異なる親クラスの実行中機能があるか否かを判定する。親クラスとは、親機能項目すなわち親処理項目のことである。
優先度制御部3031aは、異なる親クラスの実行中機能が有る場合、S1207に進む。
優先度制御部3031aは、異なる親クラスの実行中機能が無い場合、S1206に進む。

0077

S1206において、優先度制御部3031aは、同じ親クラスの実行中機能が有るか否かを判定する。優先度制御部3031aは、同じ親クラスの実行中機能が有る場合、S1209に進む。優先度制御部3031aは、同じ親クラスの実行中機能が無い場合、S1212の実行許可に進む。

0078

S1207において、優先度制御部3031aは、実行中機能と実行要求機能との親クラス同士の優先レベルを比較する。S1208において、優先度制御部3031aは、実行中機能と実行要求機能との親クラス同士の優先レベルの比較の結果、実行要求機能の親クラスの優先レベルが低い場合はS1211の実行不許可とする。優先度制御部3031aは、実行要求機能の親クラスの優先レベルが高い場合はS1206に進む。

0079

S1209において、優先度制御部3031aは、同じ親クラスの実行中機能と実行要求機能との優先レベル同士を比較し、実行要求機能の優先レベルが高い場合、S1212の実行許可とする。優先度制御部3031aは、実行要求機能の優先レベルが低い場合、S1211の実行不許可とする。
以上で、優先度制御処理の手順についての説明を終わる。

0080

次に、図13を用いて、本実施の形態にかかる優先度制御部3031aによる各機能の継承関係の例について説明する。
機能B2の場合、実行許可を判断するためには親クラスである機能Bの優先レベルを考慮して、実行許可判定を行う。親クラスの参照方法は、各言語の継承クラスの参照機能を利用する。
例えば、機能A2が実行要求機能であり、機能B1及び機能B2が実行中機能である場合、機能A2と、機能B1及び機能B2とは親クラスが異なる。そこで親クラス同士の優先レベルを比較すると、機能A2の親クラスである機能Aの優先レベル「1」は、機能B1及び機能B2の親クラスである機能Bの優先レベル「2」よりも低い。そこで、機能A2と機能B1及び機能B2の各々との優先レベルを比較するまでもなく、機能Aは実行不可となる。

0081

***効果の説明***
本実施の形態に係るソースコード生成装置20aでは、実行中の機能を階層に従って上位機能毎に管理し、優先度比較を段階的に行う。起動する機能の上位機能と、実行中の機能の上位機能同士で比較し、比較対象絞り込む。次に同一階層の機能同士で優先度を比較する。これにより、比較対象数を減らすことができ、処理時間の短縮を可能とする。

0082

本実施の形態に係るソースコード生成装置20aでは、優先順位の制御は、各機能のソースコードで持たず、機能優先度の制御の役割を持つ実行優先度制御に集約することで、ソースコード量の削減を可能とする。

0083

本実施の形態に係るソースコード生成装置20では、起動する機能と全ての実行中の機能の優先度を比較する必要がなく、優先度の比較処理時間を短縮することができる。

0084

上記の実施の形態では、取得部40、振舞い記述生成部501、操作生成部502、例外記述生成部503、条件記述生成部504、処理記述生成部505、優先度制御生成部60がそれぞれ独立した機能ブロックとしてソースコード生成装置20を構成している。しかし、ソースコード生成装置20の構成は任意である。また、振舞い記述生成部501、操作生成部502、例外記述生成部503、条件記述生成部504、処理記述生成部505をひとつの機能ブロックで実現してもよい。また、優先度制御生成部60の機能をソースコード生成部50が備えていてもよい。
ソースコード生成装置20の機能ブロックは、実施の形態に記載した機能を実現することができれば、任意であり、これらの機能ブロックを、他のどのような組み合わせでファイル管理装置を構成しても構わない。

0085

以上、実施の形態1,2について説明したが、これらの2つの実施の形態のうち、1つの実施の形態を部分的に実施しても構わない。あるいは、これらの2つの実施の形態のうち、複数を部分的に組み合わせて実施しても構わない。その他、これらの2つの実施の形態を、全体としてあるいは部分的に、どのように組み合わせて実施しても構わない。
なお、上記の実施の形態は、本質的に好ましい例示であって、本発明、その適用物や用途の範囲を制限することを意図するものではなく、必要に応じて種々の変更が可能である。

0086

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 処理記述生成処理。

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

(分野番号表示ON)※整理標準化データをもとに当社作成

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い技術

関連性が強い 技術一覧

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ