********************************************************************** セッションs4-d テーマ:いま、なぜ、モデル駆動開発なのか? 講師:江口 亨 (富士通コンピュータテクノロジーズ) 日時:2013/8/23 13:00~14:20 参加人数:20名(終了時) ********************************************************************** ・セッションの目的  今年取り扱っているモデル駆動開発について取り組んでいること,悩んでいることに ついて紹介を行う.「こういうものがモデル駆動開発でもいいのか」と感じてもらう. ・自己紹介  今年の趣味はAR.Drone.旅行先に持っていって飛ばしている.  仕事は富士通コンピュータテクノロジーズでプロジェクトチームのサポート,ツールの 提供を行っている.モデル駆動開発ツール「BricRobo」を2012年末にリリースした. BricRoboは作成したモデルからC++のソースコードを生成することができる. ・モデル××開発  世の中には,モデルベース開発(MBD),モデル駆動開発(MDD),モデルベースシステム エンジニアリング(MBSE)と様々なモデル××開発がある.それぞれ扱っている対象の抽象 度が違う.抽象度の高い順に,モデルベースシステムエンジニアリング,モデル駆動開発, モデルベース開発となる.  モデルベースシステムエンジニアリングは大きな範囲でモデリングを行う (例.社会システムの物事の関係性のシミュレート).コードはなし.上流工程.  モデル駆動開発ではモデルベース開発より広く,モデルベースシステムエンジニアリング より狭い範囲でモデリングを行う.コードは半自動生成+ハンドコーディング.  モデルベース開発では狭い範囲でモデリングを行う(例.車のエンジンの中の連続系の現 象にシミュレート).コードは自動生成. ・自動車関係  現在はモデルベース開発が主流である.今後,自動車間通信や自動運転の隊列走行に よって,徐々にモデルベースシステムエンジニアリングを含んでいく可能性がある. ・単語の知名度の検証  いくつかの単語について,  - Google検索で検索した時のヒット件数  - Amazon(日本)で検索した時のヒット件数 を検証した.  対象の単語はUML,MATLAB/Simulink,モデルベースシステムエンジニアリング, モデルベース開発,オブジェクト指向,モデル駆動開発,SysMLなど.  Google検索ではモデルベース開発・モデル駆動開発はMATLAB/Simulinkと比較して 100倍少ない.したがってモデルベース開発・モデル駆動開発という言葉はメジャーでは ないといえる.  Amazon検索ではUML,オブジェクト指向に関する本は数千冊,モデルベースシステム エンジニアリングに関する本は数十冊で非常に少ない.したがってモデル××開発を勉強す るには本が少ないために環境が悪いといえる.  以上より,言葉のはやり廃りと他の言語は,モデルのはやり廃りに影響を与えることが わかる. ・何かを新たに始める際の懸念事項  勉強をしようと思っても,情報がなければ勉強ができない. ・ドキュメント駆動開発とは  従来の開発はドキュメント駆動開発である.要件定義書の作成,基本設計書といった ドキュメントの作成を経て開発を進める.ドキュメントの中にある図や表は,別途Excelを 用いて描画をし,コピー&ペーストでドキュメントにはりつける.その際,ドキュメントを 生産物として管理する.図や表の描画のために使用したファイルについては生産物として 管理しない(ファイルは残しておく). ・モデル駆動開発とは  モデル駆動開発では,情報が図や表で管理されている.情報を適宜変換し使用することで 開発を行う.図や表を生産物として管理を行う.  しかし,実際には納品を考慮すると,モデル駆動開発を用いつつドキュメントを作成して いくことが必要不可欠となる. ・モデル駆動開発のメリット  メリットは大きく3点ある.  - 情報を図や表で管理しているため,従来の開発に比べて原本が必ず1つになる. このため,情報の食い違いを未然に防止することができる.  - UMLでモデルを作成したとき,依存関係が線で描かれるのでトレーサビリティを とることができる.  - モデルを階層的に俯瞰してみることができる.このため,必要な情報を取り出す ことができる.例として,顧客に対しては広域の情報を,開発の現場に対しては 詳細の情報を取り出す. ・モデルを作成している上で必要な機能  モデルを徐々に詳しくしていく方法でモデルを作成すると,変更に対応しにくい. 修正前のモデルと修正後のモデルの変更差分を保持する必要がある. ・新しい手法をプロジェクトに取り入れるために  新しい手法を用いる為には,自分の能力だけでなく,顧客に納得してもらえる証拠が なければ用いることができない.  新しい手法を用いた結果は成功か失敗かの2通りである.仮に新しい手法を用いて 失敗したとき,その後に新しい手法を取り入れることが難しくなってしまう.  そこで,新しい手法を用いるときには境界線を設けるとよい.境界線は,納品期日から 逆算を行い,従来の手法での見積もりを行い決定をする.そして新しい手法が適用 できそうかどうかを境界線を超える前に試す.そして境界線に達したとき,新しい手法 か従来の手法でいくかを判断する.こうすることで失敗に怯えることなく新しい手法を 試すことができる. ・アジャイル  顧客の信頼が一番重要.信頼がなければ,様々な情報を顧客に信じてもらえない. ・ETロボコン アーキテクト部門の競技規約の作成  作成方法は以下.  1 マインドマップで判明している点をまとめる  2 マインドマップを参照しつつ,EAを用いて競技内容のモデルを作成する  3 モデルを説明するように規約を作成する  モデルを用いることで,競技内容が明確になり矛盾を防ぐことができる.ソフトウェアに関わらずモデルは役に立つ. ・派生開発の悪い例  派生元の開発を参照してモデルを作成したところ,モデルが役に立たなかった. 製品を作るためのモデルでなければ可読性が低い. ・AR.Droneのコントローラへハードウェアハッキング  コントローラに分解し,Arduinoを搭載し疑似入力を与えてPCからAR.Droneの操作を 行う. 現在制御のモデルを作成している.AR.Droneの離陸をいかにモデルで表現するかが課題. 秋に公開予定. ・モデルを書くことに臆病  モデルを書く技法が正しいかどうかにこだわりすぎている.学生は間違うことを 恐れているために,モデルを書くことができない.怖さを取り払うことはできない だろうか. ・モデルの修正統計  EAなどのツールを用いると,モデルの修正頻度が高い部分を統計的に知ることができる. ○質疑応答 <質問者1>  それ(単語の知名度の検証)はそこに書いてあるキーワード (モデルベース開発,モデル駆動開発など)で検索されたのか. 凄くフェアではない気がする. Model Based DevelopmentやModel Driven Developmentとかで検索するべきだったので はないか. (モデルベース開発やモデル駆動開発より )MBSEの方がメジャーであることに違和感が あるのだが. <回答>  グラフの値は日本語のサイトから対象の単語にダブルクォーテーションをつけ, 厳密な検索してでてきたものを取り扱っている.英語にするとどうなるかといった 検証はまだ行っていない. 以上