組み込みソフトウェア向け hichart 処理系の開発

34
組組組組組組組組組組組組 組組組組組組組組組組組組 Hichart Hichart 組組組組組組 組組組組組組 ◎ 大大大大 大大大大 () 大大大大 大大大大 () 大大大大 大大大大 () 大大大大 大大大 () 大大大大 大大大大 () 1 2008/3/21 大大大大大大大大 2008 大大大大大

Upload: ganya

Post on 14-Jan-2016

60 views

Category:

Documents


0 download

DESCRIPTION

組み込みソフトウェア向け Hichart 処理系の開発. ◎大徳雄太(東洋大)   後藤隆彰(東洋大)   切島忠昭(東洋大)   夜久竹夫(日大)   土田賢省(東洋大). 発表内容. はじめに 1.1. 背景 1.2. 目的 本システム 2.1. システム概要 2.2. 振舞い表 実行例 まとめ. 1.  はじめに. 1.1.  背景 (1/ 3 ). 組み込みソフトウェア開発は,日本の基幹産業になるものとして注目を集めている 組み込みソフトウェアの市場規模は急速に拡大し,開発の大規模化・複雑化が著しい - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 組み込みソフトウェア向け Hichart 処理系の開発

組み込みソフトウェア向組み込みソフトウェア向けけ HichartHichart 処理系の開処理系の開

発発◎ 大徳雄太(東洋大)  後藤隆彰(東洋大)  切島忠昭(東洋大)  夜久竹夫(日大)  土田賢省(東洋大)   

12008/3/21 電子情報通信学会 2008年総合大会

Page 2: 組み込みソフトウェア向け Hichart 処理系の開発

発表内容発表内容1. はじめに

1.1. 背景1.2. 目的

2. 本システム2.1. システム概要2.2. 振舞い表

3. 実行例4. まとめ

22008/3/21 電子情報通信学会 2008年総合大会

Page 3: 組み込みソフトウェア向け Hichart 処理系の開発

1.1.  はじめに はじめに

32008/3/21 電子情報通信学会 2008年総合大会

Page 4: 組み込みソフトウェア向け Hichart 処理系の開発

1.1.1.1.  背景 背景 (1/(1/ 33 ))

組み込みソフトウェア開発は,日本の基幹産業になるものとして注目を集めている

組み込みソフトウェアの市場規模は急速に拡大し,開発の大規模化・複雑化が著しい

我々は,Hichartに基づく様々な処理系や開発支援ツールの研究開発を行ってきた

その中で蓄積された形式的手法や技術を,組み込みソフトウェアにも役立てられると思われる

42008/3/21 電子情報通信学会 2008年総合大会

Page 5: 組み込みソフトウェア向け Hichart 処理系の開発

1.1.1.1.  背景 背景 (( 22 //33 ))

組み込みソフトウェアの振舞いに関し、様々な試みがなされている

玉井哲雄,青山幹雄,柴山悦哉,五十嵐淳,“信頼性の高いコンポーネント技術の研究”

紫合治,“組込みソフト設計のための物理実体(間接オブジェクト)の分析”

赤木匡博,“オブジェクト指向方法論のための通信モデルに関する研究”

52008/3/21 電子情報通信学会 2008年総合大会

Page 6: 組み込みソフトウェア向け Hichart 処理系の開発

1.1.1.1.  背景 背景 (( 33 //33 ))

UMLやMATLAB等,システム上でシミュレーションを行うものは存在

物理実体を制御する組み込みソフトウェア開発では,シミュレーションだけでは不十分な場合がある

実機での動作実験を行う際のパラメータの設定が重要

62008/3/21 電子情報通信学会 2008年総合大会

Page 7: 組み込みソフトウェア向け Hichart 処理系の開発

1.2.1.2.  目的 目的

実機の物理的なパラメータに着目した振舞い仕様を扱う,Hichartに基づく組み込みソフトウェア開発環境の構築

72008/3/21 電子情報通信学会 2008年総合大会

Page 8: 組み込みソフトウェア向け Hichart 処理系の開発

2.2.  本システム 本システム

82008/3/21 電子情報通信学会 2008年総合大会

Page 9: 組み込みソフトウェア向け Hichart 処理系の開発

2.1.2.1.  システム概要 システム概要 (1/2)(1/2) 本研究では,レゴ社の「教育用

レゴマインドストームRCX」を使用する

NtoH では, NQC ソースコードから Hichart 内部データへの変換を行う

HtoN では, Hichart 内部データから NQC ソースコードへの変換を行う

生成された NQC ソースコードは,BricxCC を用いることで,コンパイル及び RCXへの転送が可能

図 1  システム構成図

92008/3/21 電子情報通信学会 2008年総合大会

Page 10: 組み込みソフトウェア向け Hichart 処理系の開発

2.1.2.1.  システム概要 システム概要 (2/2)(2/2)

本システムを用いて, Hichartエディタと振舞い表を照らし合わせながらプログラムを開発することにより,プログラムに振舞い仕様を反映することが容易になると期待できる

102008/3/21 電子情報通信学会 2008年総合大会

Page 11: 組み込みソフトウェア向け Hichart 処理系の開発

2.2.2.2.  振舞い表 振舞い表 (1/4)(1/4)記述レベルの高い振舞いの仕様をまとめ

た表

例えば,「RCXが机から落下せずに走行する」などの内容が記述される

特定の振舞いに対する各入出力装置のパラメータのセットを,振舞い仕様とする

112008/3/21 電子情報通信学会 2008年総合大会

Page 12: 組み込みソフトウェア向け Hichart 処理系の開発

2.2.2.2.  振舞い表 振舞い表 (2/4)(2/4)

過去の実験で取得したデータなどを基に作成する

プログラムとは独立に用意する

122008/3/21 電子情報通信学会 2008年総合大会

Page 13: 組み込みソフトウェア向け Hichart 処理系の開発

2.2.2.2.  振舞い表 振舞い表 (3/4)(3/4)

表中の○, × は, RCX のある振舞いが,そのパラメータの範囲内で,期待通りのものであるか否かを示す

センサーの感度:s

0-32 33-49 50-100

机の端を認識 × ○ ○

その場で回転しない

○ ○ ×

表 1  「机から落下せずに走行する」振舞い表

132008/3/21 電子情報通信学会 2008年総合大会

Page 14: 組み込みソフトウェア向け Hichart 処理系の開発

2.2.2.2.  振舞い表 振舞い表 (4/4)(4/4)

振舞い表画面の主な機能として,以下の二つがある選択したセルの振舞いに必要なパラメータを,

Hichart図に自動的に反映する

パラメータの範囲の最大値と最小値の平均値を反映する

142008/3/21 電子情報通信学会 2008年総合大会

Page 15: 組み込みソフトウェア向け Hichart 処理系の開発

3. 3. 実行例実行例

152008/3/21 電子情報通信学会 2008年総合大会

Page 16: 組み込みソフトウェア向け Hichart 処理系の開発

3.3.  実行例 実行例 (1/3)(1/3)

RCX が,「机から落下せずに走行するプログラム」を例として説明する

光センサーが机の端を認識すると, RCXが後退,方向転換することで,落下しないようにしている

162008/3/21 電子情報通信学会 2008年総合大会

Page 17: 組み込みソフトウェア向け Hichart 処理系の開発

3.3.  実行例 実行例 (2/3)(2/3)

図 2  実行時の Hichart図と振舞い表画面172008/3/21 電子情報通信学会 2008年総合大会

Page 18: 組み込みソフトウェア向け Hichart 処理系の開発

デモデモ

182008/3/21 電子情報通信学会 2008年総合大会

Page 19: 組み込みソフトウェア向け Hichart 処理系の開発

3.3.  実行例 実行例 (3/3)(3/3)

振舞い表を用いてプログラムを開発することで,行わせたい振舞いに必要なパラメータの設定が容易になる

パラメータの自動反映機能を用いて編集したプログラムからも,正常に NQC ソースコードを生成できる

192008/3/21 電子情報通信学会 2008年総合大会

Page 20: 組み込みソフトウェア向け Hichart 処理系の開発

4. 4. まとめまとめ

202008/3/21 電子情報通信学会 2008年総合大会

Page 21: 組み込みソフトウェア向け Hichart 処理系の開発

4. 4. まとめまとめ (1/3)(1/3)

以下の機能を備えた Hichartエディタを開発した

NQC ソースコードと Hichart の双方向変換機能

振舞い表の表示機能

パラメータの自動反映機能

212008/3/21 電子情報通信学会 2008年総合大会

Page 22: 組み込みソフトウェア向け Hichart 処理系の開発

4. 4. まとめまとめ (2/3)(2/3)

物理実体の振舞いを制御する組み込みソフトウェア開発において,テスト時のパラメータの設定の手間を省けるなどの効果が期待できる例:移動体(飛行船,掃除ロボット)など

2008/3/21 電子情報通信学会 2008年総合大会 22

Page 23: 組み込みソフトウェア向け Hichart 処理系の開発

4. 4. まとめまとめ (3/3)(3/3)

今後の課題すべての入出力装置への対応

データベースから振舞い表を自動生成する機能の開発

232008/3/21 電子情報通信学会 2008年総合大会

Page 24: 組み込みソフトウェア向け Hichart 処理系の開発

242008/3/21 電子情報通信学会 2008年総合大会

Page 25: 組み込みソフトウェア向け Hichart 処理系の開発

25

SetOutput() のモードz OUT_ON,OUT_OFF,OUT_FLOATSetDirection() の方向 OUT_FWD,OUT_REV,OUT_TOGGLESetPower() の回転力 OUT_LOW,OUT_HALF,OUT_FULLPlaySound() の音 SOUND_CLICK,SOUND_DOUBLE_BEEP,SOUND_DOWN,SO

UND_UP,SOUND_LOW_BEEP,SOUND_FAST_UP

SelectDisplay() のモード DISPLAY_WATCH,DISPLAY_SENSOR_1,DISPLAY_SENSOR_2,DISPLAY_SENSOR_3,DISPLAY_OUT_A,DISPLAY_OUT_B,DISPLAY_OUT_C

SetTxPower のパワー TX_POWER_LO,TX_POWER_HISetSensor() に使える設定 SENSOR_TOUCH,SENSOR_LIGHT,SENSOR_ROTATION,SE

NSOR_CELCIUS,SENSOR_FAHRENHEIT,SENSOR_PULSE,SENSOR_EDGE

SerSensorMode() の モ ード

SENSOR_MODE_RAW,SENSOR_MODE_BOOL,SENSOR_MODE_EDGE,SENSOR_MODE_PULSE,SENSOR_MODE_PERCENT,SENSOR_MODE_CELCIUS,SENSOR_MODE_FAHRENHEIT,SENSOR_MODE_ROTATION

SetSensorType() のタイプ SENSOR_TYPE_TOUCH,SENSOR_TYPE_TEMPERATURE, SENSOR_TYPE_LIGHT,SENSOR_TYPE_ROTATION

On(),Off() などの出力 OUT_A, OUT_B, OUT_C

表 2 RCX 定数

2008/3/21 電子情報通信学会 2008年総合大会

Page 26: 組み込みソフトウェア向け Hichart 処理系の開発

振舞い仕様について振舞い仕様について システムの動作を振舞いと呼ぶ

システムの振舞い及びその仕様に対しての研究が行われている

シミュレーションでの研究が多いが,本研究では,実機を動かす際のパラメータに注目している

262008/3/21 電子情報通信学会 2008年総合大会

Page 27: 組み込みソフトウェア向け Hichart 処理系の開発

参考文献参考文献 紫合 治,組み込みソフト設計のための物理実態(間接オブジェクト)の分析

玉井 哲雄,青山 幹雄,五十嵐 敦,柴山 悦哉,信頼性の高いコンポーネント技術の研究

荒井 玲子,リアルタイムシステムと上流設計システムツール

272008/3/21 電子情報通信学会 2008年総合大会

Page 28: 組み込みソフトウェア向け Hichart 処理系の開発

28

変換の実現手法(変換の実現手法( 1/71/7 )) JavaCC と JJTree を使用して変換を実現

2008/3/21 電子情報通信学会 2008年総合大会

Page 29: 組み込みソフトウェア向け Hichart 処理系の開発

変換の実現手法(変換の実現手法( 2/72/7 ))変換システムの全体像

2008/3/21 電子情報通信学会 2008年総合大会 29

NQC ソース

変換プログラム

Hichart

JJTree定義ファイル

JJTree

JavaCC定義ファイルJavaCC

構文木のノードクラス

NQC の字句・構文解析クラス

入力    生成   参照

 システムの全体像

Page 30: 組み込みソフトウェア向け Hichart 処理系の開発

30

変換の実現手法(変換の実現手法( 3/73/7 )) JavaCC

構文解析と字句解析を実行する Javaプログラムを生成するプログラムジェネレータ

Lex / yacc によく似ており,トークン定義・ BNF記法に基づいた記述からなる

構文にマッチした時の処理(アクション)が記述可能

2008/3/21 電子情報通信学会 2008年総合大会

Page 31: 組み込みソフトウェア向け Hichart 処理系の開発

31

変換の実現手法(変換の実現手法( 4/74/7 )) JJTree

JavaCC のプリプロセッサで,構文解析の結果からツリー構造を作るプログラムを,自動的に生成する

ツリー構造の生成規則をコントロールすることができる

2008/3/21 電子情報通信学会 2008年総合大会

Page 32: 組み込みソフトウェア向け Hichart 処理系の開発

32

変換の実現手法(変換の実現手法( 5/75/7 )) トークンの定義 以下の例は型名である“int”および加算演算子の“+ ” のトークンを定義している

IDENT は正規表現を用いて変数名などに使用する文字列を定義している

<INT : “int”>   |   <ADDOP : “+”>   |   <IDENT:[“a”-“z”, “A”-“Z”, “_”] (["a"-"z", "A"-"Z", "_", "0"-"9"])*>  トークンの定義

2008/3/21 電子情報通信学会 2008年総合大会

Page 33: 組み込みソフトウェア向け Hichart 処理系の開発

33

変換の実現手法(変換の実現手法( 6/76/7 ))

構文定義 “if ( 式 ) 文 [ else 文 ]” という並びを定義している

{ } 内は構文木生成に関するアクションの記述

void ifS() : {}{     <IF> {jjtThis.tokenString = "if";}     <LP> E() <RP> S()      [ LOOKAHEAD(1) <ELSE> S() ]}

構文定義の例2008/3/21 電子情報通信学会 2008年総合大

Page 34: 組み込みソフトウェア向け Hichart 処理系の開発

34

変換の実現手法(変換の実現手法( 7/77/7 ))変換の手順

字句 /構文解析 (JavaCC) ・構文木生成 (JJTree)

構文木を順次辿り,Hichartノードを生成していく

2008/3/21 電子情報通信学会 2008年総合大会