いま、なぜ、モデル駆動開発なのか

SWEST15
いま、なぜ、モデル駆動開発なのか
(株)富士通コンピュータテクノロジーズ
組込みシステム技術統括部 アーキテクチャ部
江口 亨
Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED
自己紹介
 江口 亨(えぐち
http://youtu.be/
cSb7xCaQFO8
とおる)
 http://www.facebook.com/toru.eguchi.7
 twitter @eguchitoru
 最近の趣味はクワッドコプター
 ㈱富士通コンピュータテクノロジーズ
 組込みシステム技術統括部 アーキテクチャ部
 R&D、開発支援、ツール開発
 モデル駆動開発ツール「BricRobo」2012年末リリース
 ETロボコン2013 開発支援スポンサー
 Facebookページ:https://www.facebook.com/FujitsuBricRobo
 BricRobo User Community:
https://www.facebook.com/groups/BricRoboUserCommunity/
2
Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED
モデルXXXの種類と知名度
Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED
扱う対象の抽象度よる定義
実装しない?
半自動
+ハンドコード
(ほぼ)
コード生成自動
MBSE
人
社会
サブシステム
メカ
エレキ
ソフトウェア
エレキ
ソフトウェア
モデルベース
システムズ
エンジニアリング
MDD
モデル駆動開発
MBD
モデルベース開発
Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED
扱う対象の粒度の範囲
MBSE
上流
モデルベース
システムズ
エンジニアリング
MDD
モデル駆動開発
MBD
モデルベース開発
下流
5
Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED
単語の知名度
Google
UML
MBD
Simulink
IBM Rhapsody
モデルベース
オブジェクト指向
Amazon
SysML
MBSE
モデルベース開発
UML
モデル駆動開発
MBD
1
100
10,000
1,000,000
100,000,000 Simulink
件数
Googleで単語を検索したときのヒット件数
IBM Rhapsody
モデルベース
オブジェクト指向
SysML
MBSE
モデルベース開発
モデル駆動開発
1
10
100
1000
10000
件数
Amazonで単語を検索したときのヒット件数
2013年7月現在
6
Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED
モデルの流行り廃り
C++、Java
実装言語との相性
スクリプト型言語
関数型言語
UML
オブジェクト指向
SysML
システム of システムズ
Simulink
¥
7
Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED
モデル駆動開発の良さ
8
Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED
従来はドキュメント駆動開発
生産物
要件定義書
コピペ
基本設計書
コピペ
参照
参照
詳細設計書
?
ソースコード
9
Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED
モデル駆動開発はモデルが原本
マスター
モデル
変換
ソースコード
10
Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED
トレーサビリティ的な観点で見る
要求1
要求2
テストケース
<<verify>>
<<refine>>
Ac t iv it y 1
Us e C a s e 1
allocate
Ac t or1
<<satisfy>>
C la s s 1
C la s s 2
o1 :C la s s 1
C la s s 3
o2 :C la s s 2
o3 :C la s s 3
<<instanceOf>>
<<instanceOf>>
11
Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED
階層的な観点で見る
Sy s t em1
Sy s t em2
全体を俯瞰
System of Systems レベル
Sy s t em3
System レベル
SubSy s t em21
SubSy s t em22
HW1
SW1
Element レベル
SW2
Component レベル
興味のあるところをクローズアップ
12
C la s s 1
C la s s 2
C la s s 3
Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED
トレースできるモデル変換が大事
簡素な
モデル
時
間
の
流
れ
詳細な
モデル +
PIM
モデル
参照
PSM
モデル
ある視点の
モデル
最初のモデルの
形がわからなくなる
意図が伝わらない
ベースの
モデル
参照
参照
別の視点の
モデル
仕向の
モデル
13
⊿
元のモデルを
参照しながら、
派生モデルを
開発できることが
重要
Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED
モデル駆動開発の導入障壁
14
Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED
開発手法を切り替えるには
問題
対内的
上司説得
メンバ理解
教育
対外的
工程区分
工程管理
テスト方法
版数管理
計測方法
ドキュメント体系・形式
品質
生産物
水平展開
従来手法
との対比
新手法導入過程
再検討
引き返し限界点
新開発手法
新開発手法
従来開発手法
新手法がうまくいかないとき、
従来に切り替えて間に合う限
界点の設定が重要
《うまくやるためのコツ》
少人数、小規模、顧客との合意、部分適用
15
Copyright 2009 FUJITSU COMPUTER TECHNOLOGIES LIMITED
過去に実践したアジャイル?
要望
信頼関係
上位顧客
価値
開発リーダー
顧客
要件リスト
要件
要件
1回分→
要件
要件
要件
開発チーム
2週間~1ヶ月
16
Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED
モデリングの手順
17
Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED
システムのモデリングの手順例1
ユースケースを挙げる
システムとアクターのやり取り
システム
Actor1
Us e C a s e1
Act or1
システムの
アクティビティを抽出
サブシステムに
アクティビティを割り当て
開始
どうやってサブシステムを発見するか?
Act iv it y 1
サブシステム1
サブシステム2
サブシステム3
開始
Ac t iv it y 1
Act iv it y 2
Ac t iv it y 2
Act iv it y 3
終了
Ac t iv it y 3
終了
18
Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED
システムのモデリングの手順例2
ユースケースを挙げる
個々のUCの振る舞い
開始
操作
開始
Ac t iv it y 1
Act or1
Us e C a s e1
St a t e1
イベント
Ac t iv it y 2
St a t e1
Requirement1
St a t e1
ユ ー スケー ス記述
終了
アクターとシステムのやり取り
抽象的単語
固有名詞1
固有名詞2
Actor1
単語1
単語2
単語3
操作()
要求・UC記述から
単語を抽出整理
操作()
19
Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED
サブシステムのモデリング
C la s s 1
+
操作() :void
Object1 :Class1
Actor1
操作()
操作
Ob ject 1
Act or1
1. オブジェクトに対するクラスを定義
2. オブジェクトに対する操作をクラスに追加
3. シーケンス上の操作をクラスの操作に置き換え
4. クラスをシステムと捉え直し
20
Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED
モデル駆動開発の事例
21
Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED
ETロボコン アーキテクト部門 競技規約
やはり、取っ掛かりはマインドマップ
22
Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED
ETロボコン アーキテクト部門 競技規約
凡例
優秀な上位N位までを表彰
実行委員会から提供、競技者利用可能
競技者が競技フィールド
に持ち込むことができる
AC 電 源
利用する
競技者が持ち込める
0..*
優秀な参加者
E T ロ ボ コ ン 2013 ア ー キ テ クト部門
+設置
1
N
1
シ ステ ム
1
参加者
操作台
1
利用する
*
0..*
競技者
走行体
1
0..1
コー ス
得点:=a.得点+b.得点
審査
+
<<不変条件>>
{xor}
ベー シ ック・ステ ー ジ
スタートする
走行する
得点
坂道
競技会場で当日に実施
第 1中 間 ゲ ー ト
1
第 2中 間 ゲ ー ト
競技会前に事前に実施
第 3中 間 ゲ ー ト
+a
第 4中 間 ゲ ー ト
通信する
通過する
1
+b
設置する、
操作する、
撤収する
0..1
E T ロ ボ コ ン 2013ア ー キ テ クト
部門競技規約
競技審査
競技方法
+
企画審査
得点
+
+
+a
+b
競技の魅力審査
+
+
審査する
得点
満点 = 200点
得点
満点 = 100点
審査する
企画書と 当日のパフォー マン スの
一致性評価
+
+
審査する
審査方法
E T ロ ボ コ ン 2013ア ー キ テ クト
部門審査規約
動作する
パ フォー マン ス・ステ ー ジ
1
ガジ ェット
動作する
0..1
競技者
1
審査方法
<<不変条件>>
{動作範囲の厳密さを問わない}
審査方法
マイク
得点
満点 = 100点
プレゼンする
0..1
審査する
1
プ レ ゼ ン テ ー シ ョン ビ デ オ
ビ デ オプ ロ ジ ェクタ ー
表示する
審査する
1
審査する
1
審査する
1
審判する
1
1
一般審査員
1
実行委員会審査員
特別審査員
実行委員会審査員
表示する
上映する
特別審査員
審判
計 測 シ ステ ム
操作する
1
計測係
一般審査員
審査を投票する
1
審査員
審査員
モデルを作ってから文章をおこすと
言葉を共通にでき、矛盾がない規約を作りやすい
23
Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED
後付モデルの残念な派生開発
プ ロ ジェクタ ー
1
ゲ ー ム パッド
1
USBハブ
USB延長ケー ブ ル
1 1
1..2 1
1
1
1
計測システ ム
1 1
計測係
審判
コー ス
:プ ロ ジェクタ ー
:計測システ ム
主審 :審判
<<PPTファイル>>
対戦カー ドデ ザイン
<<WAVEファイル>>
効果音
再生
<<XMLファイル>>
バックア ップ ファ イル
再生
<<WMV、MP4など>>
ビ デ オファ イル
生成
:計測係
副審 :審判
アー キ テ クト部門コー ス :コー ス
再生
計測シ ステ ム
読み書き
<<EXCELファイル>>
参照
出走表
1
<<EXCELシート>>
チー ム 一覧
notes
出場チームの一覧で
す。
他地区のチームも含
んでいて構いません。
ゼッケンを付けたチー
ムが対象となります。
1
1
<<EXCELシート>>
対戦カー ド
notes
デベロッパー部門の対戦表
です。INコースとOUTコース
の対戦チームをゼッケンで
表します。
<<EXCELシート>>
競技結果
notes
デベロッパー部門の
競技結果です。計測
システムが結果を記
録します。
1
<<EXCELシー...
総合結果
notes
モデル審査点を入
力すると、調和平
均で総合順位を計
算します。
1
<<EXCELシート>>
ア ー キ テ クト出場順
notes
アーキテクト部門の
出場順番です。ゼッ
ケンで表します。
1
<<EXCELシート>>
ア ー キ テ クト部門競技結果
notes
アーキテクト部門の競技結果
です。計測システムが記録し
ます。
デベロッパー部門専用
アーキテクト部門専用
デベロッパー部門・アーキテクト部門共通
24
Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED
クワッドコプター自律飛行システム
てん と う虫
notes
4枚のローターを持つ小型ヘリコプター。
ラジコンのおもちゃ。
電波によるラジコン。
映像
2.4GHz無線
ステ レ オカメラ
プ ロ ポ 筐体
notes
notes
物体を2方向から捉えるカメラ。
視差や直行による3次元空間の
計測をする。
ヘリとセットのラジオコントロール
装置。電波を利用する。人が素敵
っくを操作して、ヘリを操縦する仕
組みであるが、改造して、外部か
ら電圧を掛けて、人の操縦を模擬
する。
画像
制御電圧
Ard u in o
notes
PC
notes
制御値
一般的なパソコン。
25
8ビットマイコン(Atmel)を搭載する
マイコンボード。世界的に有名で
手に入りやすい。
これにDAコンバータを搭載して、
任意の電圧を出来るようにする。
Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED
ハードウェアハッキング
プ ロ ポ 筐体
基板(左)
基板(右)
基板(中)
上下
(throttle)
フラットケーブル
+VCC
2chレ バー (左)
フラットケーブル
2hレ バー (右)
左右
(roll)
前後
(pitch)
回転
(yaw)
電池
USB出力
GND
pin0
pin1
pin2
Ard uino
pin3
GND
5ピ ン コネクタ オス
ユ ニバー サルシー ルド
Ch.1
DAC 2ch右
Ch.0
+Vcc
GND
DAC 2ch左
Ch.0
Ch.1
USBコネクタ
スティックを倒すとボリュームが回り、電圧値が変化
ならば、Arduino+DAコンバータで騙せばPCから制御できる?
26
Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED
SysMLの内部ブロック図(的)な記法
通常、ヘリコプターを人間が操縦する場合
デジタル映像
ヘリコプ タ ー
位置計測器
カメラ
image
映像
映像
映像
ヘリコプター3次元位置
image
自動操縦器
position
position
4チャネル操縦
4チャネルコマンド
電波
4チャネルコマンド
プロポ
直流電圧
電圧
Ard uino
4チャネル操縦
電圧
デジタルステック捌き
スティック
映像
CompositionType
スティック捌き
<<TopLevel>>
Pos it ioning Sub Sus t em::
Det ect Bunb unPos it ion
手 操縦者
眼
+ DetectBack() :void
+ GetLocation(int*, int*, int*) :int
+ Init() :void
<<RunnableEntity>>
+ RunCaptureBack() :void
+ RunDelImg() :void
+ RunDetectPosition() :void
BricRoboで
モデリング
http://youtu.be/rMf1NsJ97n8
27
Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED
位置計測の難しさ
http://youtu.be/pZovvBC7NLc
出展: Viola&Jones CVPR2001
http://www.cs.cmu.edu/~efros/courses/LBMV07/Papers/
viola-cvpr-01.pdf
図形でHaar-like検出器
真面目にHaar-like検出器
http://youtu.be/JXIS8SQGL5E
致命的弱点
http://youtu.be/xmpJ9YF7CMw
28
Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED
位置計測の難しさ
http://youtu.be/P3IXsHZHwMc
移動に強いHaar-like検出器
http://youtu.be/wh16kqVCTLQ
背景除去
29
Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED
位置計測器のBricRoboモデル
CompositionType
Det ect Bunb unPos it ion
+ DetectBack() :void
+ GetLocation(int*, int*, int*) :int
+ Init() :void
<<RunnableEntity>>
+ RunCaptureBack() :void
+ RunDelImg() :void
+ RunDetectPosition() :void
C APT URE :
BrC v Vid eoC a p t ure
camNo = 1
notes
カメラから映像をキャ
プチャして、1枚の画
/image
/
image
像を出力する。
BAC K C LONE :
BrC v C lone
BAC K IMG :
BrC v Ima g eBuffer
notes
notes
キャプチャ画像は上
書きされるのでクロ
ーンする。
/original
/clone
OpenCVの機能を部品化
背景画像を溜める。
/in
DE LIMG _DIF F :
BrC v Relea s eIma g e
/out
/image
DE LIMG _G RAY :
BrC v Relea s eIma g e
DE LIMG _BIT :
BrC v Relea s eIma g e
/image
/image
WINDOW :BrC v Wind ow
DIF F :BrC v Ab s Diff
notes
背景画像とキャプチャ画像
を絶対値差を得る。
RG B2G RAY :
BrC v C v t C olorRG B2G RAY
notes
色空間をRGBからグレーに変
換する。
/in1
/out
/in2
/out
/in
G RAY 2BIN :
BrC v T hres hold G RAY 2BIN
notes
threshold = 80
画像をウィンドウに表示する。
notes
POSIT ION :BrC v C a lcXY Z
XY Z 2ST R :BrC v XY Z 2Sring
notes
notes
notes
モーメントからXYZ位置を計
算する。
/image
しきい値で、色空間をグレー
から2値に変換する。
/outBin
/inGray
MOME NT :BrC v Moment
モーメントを求める。
windowName = "LadyBunBun"
XY Z T XT :BrC v Put T ex t
XYZ座標値を文字列に変換す
る。
/text
/image
/moment
/moment
/xyzPosition
/string
/xyz
positionX = 0
positionY = 20
colorB = 0
colorG = 0
colorR = 255
notes
画像に座標テキストを書き
込む。
/outImage
/inImage
G E T LOC :
G et Pos it ion
/xyz
モデルをFacebookに公開予定
BricRobo User Community
https://www.facebook.com/groups/BricRoboUserCommunity/
30
Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED
ドメイン固有の知識はモデリングできるのか?
一気に上昇しないと飛び立てない
自動航行
PID?
カルマンフィルター?
地表付近の風の跳ね返り
地面
31
Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED
モデル作成の時間的推移
作成
修正
8月14日
8月14日
7月25日
7月25日
7月5日
7月5日
6月15日
6月15日
モデルが修正されている部分
5月26日
5月26日
5月6日
5月6日
4月16日
4月16日
0
100
200
300
400
0
50
100
150
200
250
300
350
400
Elementの累積個数
32
Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED
33
Copyright 2010 FUJITSU COMPUTER TECHNOLOGIES
Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED