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/
2Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITEDモデルXXXの種類と知名度

Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED扱う対象の抽象度よる定義
実装しない？

半自動＋ハンドコード(ほぼ)
コード生成自動MBSE
人社会サブシステム
メカエレキ
ソフトウェアエレキ
ソフトウェアモデルベースシステムズ
エンジニアリング

MDD

モデル駆動開発

MBD

モデルベース開発

Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED扱う対象の粒度の範囲
MBSE

上流

モデルベースシステムズ
エンジニアリング

MDD

モデル駆動開発

MBD

モデルベース開発

下流
5Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED

単語の知名度
GoogleUML
MBD
Simulink
IBM Rhapsody
モデルベース
オブジェクト指向

AmazonSysML
MBSE
モデルベース開発

UML

モデル駆動開発

MBD

1100

10,0001,000,000

100,000,000 Simulink

件数
Googleで単語を検索したときのヒット件数

IBM Rhapsody
モデルベース
オブジェクト指向
SysML
MBSE
モデルベース開発
モデル駆動開発
1101001000

10000

件数
Amazonで単語を検索したときのヒット件数

2013年7月現在
6Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITEDモデルの流行り廃り
C++、Java
実装言語との相性
スクリプト型言語
関数型言語
UML
オブジェクト指向
SysML
システム of システムズ

Simulink￥

7

Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITEDモデル駆動開発の良さ

8Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED従来はドキュメント駆動開発
生産物
要件定義書

コピペ

基本設計書

コピペ参照参照
詳細設計書？
ソースコード9

Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITEDモデル駆動開発はモデルが原本
マスター

モデル変換
ソースコード10Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITEDトレーサビリティ的な観点で見る
要求１

要求２

テストケース<<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>>
11Copyright© 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 レベル
SW2Component レベル
興味のあるところをクローズアップ
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過去に実践したアジャイル？
要望

信頼関係

上位顧客

価値

開発リーダー

顧客
要件リスト
要件
要件

１回分→要件
要件
要件

開発チーム
２週間～１ヶ月16

Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITEDモデリングの手順

17

Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITEDシステムのモデリングの手順例１
ユースケースを挙げる

システムとアクターのやり取り
システム
Actor1Us e C a s e1

Act or1

システムのアクティビティを抽出

サブシステムにアクティビティを割り当て開始

どうやってサブシステムを発見するか？
Act iv it y 1
サブシステム1

サブシステム2

Ac t iv it y 1

Ac t iv it y 2

サブシステム3開始

Act iv it y 2

Act iv it y 3

終了

Ac t iv it y 3

終了

18

Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITEDシステムのモデリングの手順例２
ユースケースを挙げる

個々の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

ユ ー スケー ス記述

終了

アクターとシステムのやり取り
抽象的単語

固有名詞１

固有名詞２

Actor1
単語１

単語２

単語３

操作()

要求・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ゲ ー ム パッド
1USBハブ

USB延長ケー ブ ル

1 1

1..2 1111

計測システ ム

1 1

計測係

審判コー ス:プ ロ ジェクタ ー:計測システ ム

主審 :審判<<PPTファイル>>対戦カー ドデ ザイン<<WAVEファイル>>
効果音

再生

再生

<<XMLファイル>>バックア ップ ファ イル<<WMV、MP4など>>
ビ デ オファ イル

生成:計測係

副審 :審判アー キ テ クト部門コー ス :コー ス

再生

計測シ ステ ム

読み書き<<EXCELファイル>>
参照
出走表

1

1

1

1

<<EXCELシート>>
チー ム 一覧<<EXCELシート>>
対戦カー ド<<EXCELシート>>
競技結果<<EXCELシー...
総合結果

notes

出場チームの一覧です。
他地区のチームも含んでいて構いません。
ゼッケンを付けたチームが対象となります。

notes

デベロッパー部門の対戦表です。INコースとOUTコースの対戦チームをゼッケンで表します。

notes

デベロッパー部門の競技結果です。計測システムが結果を記録します。

notes

モデル審査点を入力すると、調和平均で総合順位を計算します。

1<<EXCELシート>>
ア ー キ テ クト出場順

notes

アーキテクト部門の出場順番です。ゼッ
ケンで表します。

1<<EXCELシート>>
ア ー キ テ クト部門競技結果

notes

アーキテクト部門の競技結果です。計測システムが記録します。

デベロッパー部門専用
アーキテクト部門専用
デベロッパー部門・アーキテクト部門共通

24Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITEDクワッドコプター自律飛行システム
てん と う虫

notes

4枚のローターを持つ小型ヘリコプター。
ラジコンのおもちゃ。
電波によるラジコン。

映像

2.4GHz無線

ステ レ オカメラ

プ ロ ポ 筐体

notes

notes

物体を2方向から捉えるカメラ。
視差や直行による3次元空間の計測をする。

ヘリとセットのラジオコントロール装置。電波を利用する。人が素敵っくを操作して、ヘリを操縦する仕組みであるが、改造して、外部から電圧を掛けて、人の操縦を模擬する。

画像
制御電圧

Ard u in onotes

PCnotes

制御値

一般的なパソコン。

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.0Ch.1

USBコネクタスティックを倒すとボリュームが回り、電圧値が変化ならば、Arduino＋DAコンバータで騙せばPCから制御できる？
26

Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITEDSysMLの内部ブロック図（的）な記法
通常、ヘリコプターを人間が操縦する場合
デジタル映像ヘリコプ タ ー

位置計測器

カメラ
image
映像

映像

映像

ヘリコプター3次元位置

image

自動操縦器
position

position

４チャネル操縦４チャネルコマンド電波
４チャネルコマンド
プロポ

直流電圧
電圧

Ard uino

４チャネル操縦電圧

デジタルステック捌き

スティック

映像

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/rMf1NsJ97n827

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

背景除去
29Copyright© 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

BAC K C LONE :BrC v C lone

BAC K IMG :BrC v Ima g eBuffercamNo = 1

notes

notes

notes

カメラから映像をキャプチャして、１枚の画/image/image
像を出力する。

キャプチャ画像は上書きされるのでクローンする。

背景画像を溜める。

/original/out/clone

OpenCVの機能を部品化/in
DE LIMG _DIF F :BrC v Relea s eIma g e

DE LIMG _G RAY :BrC v Relea s eIma g e/image/image

DE LIMG _BIT :BrC v Relea s eIma g e/imageWINDOW :BrC v Wind ow
DIF F :BrC v Ab s Diffnotes

背景画像とキャプチャ画像を絶対値差を得る。

RG B2G RAY :BrC v C v t C olorRG B2G RAY

notes

色空間をRGBからグレーに変換する。

/in1/out/in2/out/inG 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/moment/image

しきい値で、色空間をグレーから２値に変換する。
/outBin/inGray

MOME NT :BrC v Moment
モーメントを求める。

windowName = "LadyBunBun"

XY Z T XT :BrC v Put T ex t

XYZ座標値を文字列に変換する。
/text/moment/xyzPosition/string/xyz

positionX = 0
positionY = 20
colorB = 0
colorG = 0colorR = 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日

0100

200300400050100150200250300350400

Elementの累積個数
32Copyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED33Copyright 2010 FUJITSU COMPUTER TECHNOLOGIESCopyright© 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED