********************************************************************** セッションS-5b テーマ:急変しつつあるプログラム言語/モデリングMBDの近況と変遷 講師:鈴村 延保 氏 (アイシン・コムクルーズ株式会社) 日時:2015/8/29 参加人数:約25名(終了時) ********************************************************************** 新しいことを理解するとき、トップダウンとボトムアップの2つの方法がある ボトムアップ…理解し、納得を繰り返して積み上げる。疑いから始まる トップダウン…大きく抽象的なものをひとまず納得して、そこから理解する。信じることから始まる 本日はトップダウンで考えてみよう 弘法大師が見つけた願いが叶う3つの方法 1,願いを心で強く念じる 2,願いを言葉にして唱える 3,体を動かし、行動する 空海メソッドと呼び、ソフトウェア開発にも適用してみよう この場でも空海メソッドの実現として、考えて、手を挙げて質問してみよう MatlabによるMBDが車載組込み開発の本流になっている MBDは機能安全の流れを織り込んで、simulink、UML、sysMLを適材適所で活用している。 実務で応用が進んだ結果、昨年は不足点、改良点が顕在化された。 その結果、GSN、D-CASE、SCN(SCDL)、safeMLといった新しいキーワードが広がっている。 フィーチャー図、DSM図、状態遷移表、マインドマップなどとの併用の必要性も言われ続けている。 モデリングというのはプラグラム言語とペアになっている。 Apple社のSwift言語は発表以来1年で前例のない勢いでデファクト言語に駆け上がろうとしている。 一方でロボット開発。 pepperはC++とpythonで開発。組込みでmrubyも広がっている。 これらの動きはインターネットの時代、深く潜行して突然浮かび上がる。 このような動きはサイレントパラダイムシフトと呼ばれる。 特に英語圏で先行し、非英語圏は置いて行かれる。 本セッションでは、 ①MDBの根底は何か? ②機能安全が定着してきて、何に困って、今何に取り組まれているのか? ③何が停滞し、何がブレークスルーしているのか? を確認していく 以下 今日の進め方をもうすこし詳細にまず説明しよう ・現状認識と課題背景 シリコン革命とそれに伴ったパラダイムシフト ・MBDの根底 ソフトウェアの大規模化、複雑化に対応するために、開発の上流シフトが必要 上流が入ってくると、アジャイルと言った言葉とも関係してくる。さらに、リーンプログラミング、摺合わせ、プロトタイピングも関係 ・機能安全で何に困って何が取り組まれているか システム的な安全には、安全分析、ハザード分析(ISO26262)などがある どれくらい分析をするかは書いていない。ある程度の粒度が欲しい 仕様も設計もセミフォーマルモデリングを使うといいということで、UML、SysMLが使われている。 しかし、どこまでどんなふうに使っていいのかガイドラインがない 安全コンセプトの書き方などが規格に書いてない セーフティケースのまとめ方も規格に書いてない ・何が停滞し、何がブレークスルーしているのか? ・最後にじゃあそういった現状で明日からどうするかを考えていこう 以上のように話していきますが、 ちょっと最初に、全体言いたいことを補足すると パラダイムシフトというのは技術が変わったから起きるのではなく、せざるを得ないから起きている 上流へシフトしているが、それはヘテロジニアス、ハイブリッドである 現場で使っているC言語には致命的な欠陥がある オブジェクト指向は反省期へ。さらに、アーキテクチャ指向へ UML、SysMLは10年変わっていない、古い システムプログラミングとアプリケーションプログラミングをひとまとめにしたフルスタックプログラミング プロトタイピング 機能安全。ISO15504は設計の下流をターゲットにしている。それより上流はどうやるのか 仕様書有りきだが、仕様書を作るための様々な分析が必要 モデルベースの仕様書を作るために、ヘテロジニアスを頭に入れよう Ruby、mrubyとC言語とMatlab/Simulinkの比較 ではまず現状認識と課題背景 開発が大きくなると、どんどん非会話的になっている 動かしてみるということができにくくなる ソフトだけあっても検証できない 大規模化は加速していく その根底にはシリコン革命がある 身近なところではスマホは30年で100万倍性能が向上している 車1台で3~5ギガバイトのソフトになる 車はメカから、メカトロ、ソフト指向へ 効率的で高信頼な開発手法が求められる 社会全体が、ソフトウェア依存に年々進んでおり、ソフト品質へのリスクが高まっている。対応して年々ソフト品質プロセス要求が高度になっている 同じやり方では通じない パラダイムシフトはいきなり浮上してくる 機能安全 モデルベース開発(MBD) システムズ・エンジニアリング(MBSE) 3つのキーワード 一区切り ①MBDの根底、プログラム言語の根底とは? プロトタイピング、リファインメント、実装の流れで開発が行われる すべてをC言語で行うのか? プロトタイピングで求められるものは? 会話型、早いフィードバック、ヴィジュアライズ プロトタイピングはCでやらなくても問題ない フルスタックという言葉が最近使われる アプリケーション、ミドルウェア、OSなどの層があるが、層によって適する言語が違うのでは? Cなどはシステム周りの下層に向いてる。 Rubyなどはアプリケーション周りの上層に向いている。全体をフルスタックと呼ぶ Cは40年前の言語 しかし、替えの言語がない 新たな流れ Swift, Ruby/Python… MBD(モデルベース設計)の発展。 30年前と今では仕様書の量がとても増加している それを30年前と同じCで実装するのか Cはコントロールフロー表現以外は苦手 欠点を補うためにいろいろな取り組みが行われている なぜMatlab/Simulinkが流行っているか→プロトタイピングが得意だから Rubyもプロトタイピングが得意 Cは苦手 Cは部品化が意外と苦手? 関数は制御フローを簡単にするためで、部品化ではない Control Flow中心の応用時代から、Data Flowの重要性比重が高まっているのが時代の流れ。 カプセル化でいうと、Cではヘッダファイルどうするのか(階層のどこに置くか)といった問題がある 問題があるC言語を使う上でどうするか ・Cには欠陥があることきちんと把握する ・スタイルガイドとガイドチエッカーを利用する ・静的解析ツールを利用する ・設計にはモデリングを利用する UMLは2.0以上またはsysMLを利用しましょう、さらに要件周辺でDSM,GSN,D-Case. ツールで補完しましょう DSMとは、 Dependency Structure Matrixの略であり、繰り返しやフィードバックが多い開発プロセスの結果としてのソースコードの階層化状況をわかりやすく表現するために開発された モデリングにおいて 状態遷移図を用いるが、漏れがいっぱいある だから状態遷移表で確認する それをだれが確認するか 誰かが必ずやる必要がある 安全分析も仕様書に盛り込む必要がある これも誰がやるか 誰がやっているかを意識すると良い 派生開発、プロダクトライン開発ではフィーチャ図を使おう sysMLに良いテンプレートが必要 一区切り Swift言語 ・Ruby,Rust(Firefox財団)を意識している ・REPLとPlaygroundsがキーワード ・RuPyデイレクションがサイレントパラダイムシフトの方向 REPL(Read Eval Print Loop)とPlaygrounds (道場)はプロトタイピングのための環境 REPL…コマンドを入れるとインタラクティブに実行できる Playgrounds…動作をグラフィカルに表現できる REPL、Playgroundsができる言語は少ない Matlab/SimulinkはできるがUMLではできていない いろんな言語がRuPy方向へ変わっている 自然、簡潔、高級(oo+fo)、会話的=読みやすい=コミュニティに好まれる⇒コミュニティ指向のパラダイムシフト方向 100年単位で見ると 天才一人が時代を変えた→天才が集まった会社(研究所)が時代を変えた→コミュニテイしか、時代を変えられない(現在) この認識では欧州ルクセンブルグ宣言が有名 世の中はオープンイノベーションの時代 コミュニティ指向になっている 欧州EUが統合前にこの認識を共有して、先行している 時代認識 シリコン革命→ネットワーク革命→コミュニティ指向 ソフトウェアでは オブジェクト指向→アーキテクチャ指向→コミュニティ指向? RuPy Directionがあるよ 今求められていること 呪文のような記述は本当にいるのか、コードの読みやすさ、考えやすさが大切 ヘテロジニアスとハイブリッドとは UMLはソフトウェア開発のツールでメカの部分に弱い Matlab/Simulinkはソフトも電気回路もメカ設計もできる、これは実はヘテロジニアスでハイブリッド UMLもヘテロジニアス、ハイブリッドな方向へすこし進化している(UML2.0、sysML) ソフト、メカ、ハードの隙間は見えにくく、ギャップをなくすことが必要 ⇒『システム設計』『アーキテクチャ設計』 現在様々な取り組みが行われている 上流工程における欠陥率 上流工程で欠陥が混入しているのに、その工程で見つかっていない 欠陥が見つかるのが最後の段階 やり直し、作り直しが大きい 作ったらすぐにレビューする、欠陥を除去する必要がある 仕様書はなかなか完成していない 本当に完全なのか疑うべき 仕様書は開発過程で出来上がっていくものかもしれない だから、MBSEを使っていきましょう Matlabはすぐにシミュレーションできるので欠陥を素早く見つけることができ、その都度仕様を更新していける 仕様書は開発過程で完成されるべきものなのか、エゴではないか? 大丈夫、それが本来のやり方 MBDとMDDの違い MBD…Matlab/Simulink MDD…UML 仕様書はなかなか完成していない 仕様書だけでは検証できない? 例:仕様書通りのソフトウェアであるが、悪路を走ったら、センサーの誤ダイアグを検出した。 どのくらい悪路を想定しているか、どこかに記載していなければ、検証できない。(根拠) 悪路に関する記述を、仕様書にいれるのか、セットで背景として要求書に入れるのか(このあたりが、GSN,D-CASEの出番) UMLの欠点 2.0になってUMLは10年間変わっていない sysMLも10年間変わっていない 様々な欠点、弱みがあるので、MATLAB/Simulinkの応用が拡大している。 DSMモデリングや依存性表現モデリングも必要で拡大。 自動車は複雑な制御を行っている ヘテロジニアス、ハイブリッドになればなるほど難しくなっていく E&E&Eへの変化 Software Engineering & Architecture Engineering & Systems Engineering ソフトウェア工学だけに取り組んでいたのでは古い I&I&Iへの変化 ISO16949 & ISO15504 & ISO26262 P&P&Pへの変化 People & Process & Product_Technology 再利用拡大など効率化のため、製品内部へAUTOSARなどのプラットフォーム構造折込が必要 その上でプロダクトライン開発から分析された構造を織り込んでいく。 BOSCHが以前から提唱 V&V&Vへの変化 Verification & Validation & Valuation V字プロセスのみの時代から、次の開発のプロダクトラインを考えながら取り組んでいく時代へ まとめると ・パラダイムシフトが10年毎に起きているぞ ・今後も継続的に起きていく、と想定される。 ・効率的で、高信頼な開発手法変革が求められている。 ・パラダイムシフトは、インターネットに潜伏して急拡大するため、見えにくくなっている(サイレントパラダイムシフト) 一区切り 質問:C言語を補完する形でモデルベースなどが使われてきているが、今後、C言語は補完していくべきものなのか 解答:C自体、どんどん改定されている。しかし、アーキテクチャを変えると、言語としてがらっと変わる。    モデルでかぶせて解決している。部分的にはCは残るだろうが、そこにしがみついてはダメ ②機能安全の課題 具体的にこういうやり方というのは機能安全規格に書いていない 機能安全とは? 昔からある流れ。普通のこと。 本質安全:立体交差にすれば、踏切を渡って事故に遭遇する可能性はない 機能安全:現実は線路をすべて立体交差にすることはできない 世の中の考え方のすべてが機能安全 リスクベース設計になっている 開発の全工程で機能安全は関係してくる ソフト開発者が機能安全をわかっていれば、受け取るべき仕様がきちんと分かる 機能安全の規格を頭にいれることをおすすめする 何を上流からやらなければならないかすべて書いてある ただ、どのレベルまでというのが書いてない 機能安全を補完する方法が必要 自動車機能安全規格の解釈はJasPar,JARI活動で共有されてきた。 そこから踏み込んだ相場観は、すべては議論できない。 (各社活動) 様々な動き ・GSN, D-Case, SafeML, SCDL ・GSN: Goal Structure Notation (2011) システムが達成すべき目的や性質について、その達成を導く方法・思考を 可視化する際に用いる記法 ・D-Case: Dependability Case (2013) GSNを利用した合意の表記法 ・SafeML: Safety Modeling Language 産総研活動:安全関連情報をコミュニケーションよく交換するモデリング記法。sysMLのテンプレート。 ・SCDL: Safety Concept Description Language(2013~) エレメントの表記法、安全要求の表記法、それらを統合した安全コンセプトの表記法 DCASEの基本であるGSNは非常に簡易な基本表記 あっという間に覚えれる ③何が停滞し、何がブレークスルーしているのか? ・モデリング標準化の停滞、認識遅れ UML1.0以降若干のマイナーチェンジはあっても大幅な変更はない sysMLも10年間ほぼ変更なし しかし、ローエンドの動きは活発(MARTE,EAST-ADL) UMLもsysMLも10年前のもの、モデリング標準化は停滞している。 プロダクトラインのフィーチャー図を織り込む作業が進んでいない 状態遷移表はモデルに織り込まれるのか? DSM提案(状態遷移表同様表的表現)は? Matlab/Simulinkスタイルガイドは進んでいるが、sysMLスタイルガイドが標準化に至っていない MBSEを補完するGSN、D-Case、SCDL(SCN)などの提案が始まって、融合が歩みだした。 MBSEもMBD/MDDも安全分析をどう支援/織り込むかは途上(STAMP、安全分析) コンパイラ技術/CAEの進化 2010年頃からプログラム言語提案が活発化 Javascript/Webエンジンの競争過熱。 コンパイラの解析エンジンが進化 いろんな言語が提案された Rubyは簡単だと思われるが、外国だと黒魔術言語と呼ばれる オブジェクト言語と関数言語がバランスよく入っている オブジェクト指向にアーキテクチャ指向へ、プロトタイピングを視野に入れる形でプログラミング言語が変わってきている そして、コミュニティ指向の動きから、シンプルでわかりやすくて考えやすい言語のニーズが高まる 新たな言語が生まれるときが来たという印象 一区切り じゃあ明日からどうするか 上流にシフトしていくとソフトだけの世界ではなくなってくる それを頭に入れておく =システム記述、アーキテクチャ記述/技法 これを“ヘテロジニアス”な世界と言います。 とにかくC言語の弱いところを意識し、サポートする道具を使いながら開発していく モデリングも併用するが、モデリングも注意して使っていこう 状態遷移表を必ず確認 安全分析などのいろんな分析をする。それは製品開発プロセスの中で誰かがやる。自分がやるようになると、視野が広がる 派生開発ではフィーチャ図 モデリングにはGSN,D-CASEといったものも出てきている 開発全体をまとめたときに、きちんと安全規格通りに設計しているか 一言で説明せよ、レポート数枚で書いてみよといったことになる そうしないとお客さんにわかってもらえない これをまとめておくのがGSN,D-CASE プロトタイピングを意識 GSN, D-Case, SafeML, SCDL というのが一昨年くらいから取り組まれている 機能安全は、ドキュメントやプロセスにすべて名前が付いている 世界中で同じ名前→ひと目で、一言で意思疎通できる 機能安全は必ず目を通そう ドキュメントはステークホルダーにしっかりフィードバックしようと機能安全では書いてある。 フィードバックはつまりアジャイルのこと アジャイルは組込みに無縁の言葉? いや、違う 昔15年前と今とでは環境が違う 様々なことがツールでサポートされるようになった だからアジャイルが効いてくる シミュレーションが必要だが、いまはそれができる 構成管理も進化したし普及した。 15年前とアジャイルという言葉の意味自体が違う アジャイルはもはや開発で当然のようにするべきこと ・プロトタイピング− リファインメント− C言語実装のアイテレーションが本来あるべき姿。 ・会話型開発を意識 ・その上で、MBD,MDD、シミュレーション、IDE、言語、ツールを組み合わせて選択しよう。 ・ひとつの言語で、すべて(フルスタック)開発するのがベストと言えるか、場面場面で自問自答してみよう。 ・ADLを意識しアーキテクチャ設計を意識しよう(機能安全でも意識している)。プログラム=アーキテクチャ+振る舞い フィードバック、プロトタイピング、会話型を意識 動く、見える(ヴィジュアライズ)、反応をもらう、を意識 サイレントパラダイムシフトは10年ごとに来ます。自ら情報を取りに行って、備えましょう。 21世紀に求められる人材 グローバル対応できる人、新技術に怖がらずどんどんチャレンジできる人、自分で切り開ける人、の次は? 今、経験できるひとが少なくなってきているが、情報はたくさんある 情報を用いて、”擬似仮想体験からの習熟能力”が重要になっている 情報収集の頭でっかちではなく、 インターネットの世界の中で、あたかも自分が経験したような、スキルに昇華させる能力が求められる 質疑 Q,パラダイムシフトが勝手に来るのではなく、みんなで起こそう。 パラダイムシフトに取り残される人をなくして、新しくパラダイムシフトを起こそう、どうすれば? A,みんなが発信者。発言しないと変わらない。気がついたことは騒いでいこう Q,ソフトウェア、アーキテクチャ、システムと移り変わったがアーキテクチャエンジニアリングの時期が短かった アーキテクチャエンジニアリングの今についてどう思うか A,日本ではアーキテクチャ工学という言葉が流行らない、ソフトウェアアーキテクチャという言葉だけ触れられた印象。 もっともっと意識していこう ADLの考え方は、MATLAB/simulinkで強いところなのでこれらを使っているとアーキテクチャ工学を自然と意識していく