動詞de!! モデリング ③「C言語編」

「モデリング」してますか? 今日は、「動詞de!! モデリング」、③C言語による実装編、という事で、実際にプログラミングに落としていく過程を、セイコーエプソンの萩原さんにお話いただきます。(①導入編、②実践編) では、萩原さん。よろしくお願いします。    モデリング習得3つの壁とその対応策   「オブジェクト指向の設計の敷居が高い」という点と「UMLの習得が難しい」という点、この部分について説明したいと思います。    オブジェクト指向にこだわらなければよい まず「オブジェクト指向の敷居が高い」というのはですね、対策としては「オブジェクト指向を使わない」と決める。「データ抽象」という、オブジェクト指向以前のものを使ってですね、それをやりきる、という形になります。 「データ抽象」が何かというと、データと関係する関数を同じ場所に置く、というものが「データ抽象」になります。 C言語でいうとですね、.cの所に関係するデータ、つまり変数と、その変数を使う関数を集める、ということですね。 別の言い方にすると、「モジュラーアプローチ」というようなものになってきます。これをクラスにする、という形になります。   .hと.cのペアですね。これをクラスと対応付けることができます。クラスの中で公開する関数はプラス、パブリック属性になりますが、これをヘッダーファイルに置きます。非公開にする関数は、Cですとstatic宣言した関数になりますね。変数は、基本的に非公開にしますので、static宣言します。 Cの場合、.cからヘッダーファイルにincludeします。この時、クラス図の関連線が対応することになります。このようにすると、C言語の技術者でもクラス図を描くことができます。まぁ、多分ですね、普段作っているCの構造、Cのソースコードと同じ構造のクラスがすぐ作れると思います。    使うUML図は3種類でよい。クラス図、コミュニケーション図、ステートマシン図 「UMLの習得が難しい」というものがありますが、これについてですね、使用するダイアグラムの種類を3つに絞りました。 1つはクラス図、もう1つはコミュニケーション図、最後は、ステートマシン図です。 クラス図というのは、先ほど言いましたように、要はファイル間の相関図です。「このファイルが、このファイルと関係する」つまりincludeしている、という状態を表します。そして、そのファイルに対して、こういう関数と変数があります、ということを図示するような形が「クラス図」になります。 もう一つ、コミュニケーション図、これは言ってしまえば、「関数呼び出し図」ですね。ファイルに関数がありますが、この関数を、このファイルから呼び出して、次にこの関数を呼び出す、という事がコミュニケーション図上に表現されています。 最後、ステートマシン図、状態遷移図ですね。 Cを使う、特に組込みのエンジニアの場合は、クラス図やコミュニケーション図を描けなくてもステートマシン図で描ける事があります。ま、描けない場合は努力してください、という話になってしまいますけども…。 これがステートマシン図です。この3つの図を使うことによって「UMLの図が多い」という事に対して、対応していく事ができます。C言語の設計者に対して大体30秒くらいで説明すればですね、大体ここら辺の図は使えるようになります。 萩原さん、ありがとうございました。組込みの現場では、いまだに、やはりC言語というのは重要な言語だし、よく使われてると思いますね。その中で、オブジェクト指向にこだわらずに、その「データ抽象」という重要な考え方を使って、今のC言語の技術者が良い設計をする為に使う、   そうですね、はい。   […]

ISO26262指向 安全コンセプトの記述法 (Part 2/2)

DNV GLの山下さんによる、今、自動車業界で大変話題になっている「ISO26262」規格の「安全コンセプト表記法」の紹介。2回目の本レクチャーでは、設計成果物について、例を用いで解説くださいました。

MBSE (モデルベース・システムズエンジニアリング) とSysML概説

 「モデルベース・システムズエンジニアリング」とSysML概説 「モデリングしてますか?」 システムが複雑になって、メカ、エレキ、ソフト、色んなコンポーネントが絡み合って、一つの目的を達成するようなシステム開発では役割を超えて、いろんな人が、メカ専門の人、エレキ専門の人、それからソフト専門の人集まってですね、システムの問題領域を理解する必要があります。 あるいは、その作ろうとしているシステムの構造や振る舞いについて、共通の理解を作っていく必要がありますが、その為にですね、今、「システムズエンジニアリング」といった領域が注目を集めています。 特に、中心に「モデル」を作ってですね、そのモデルで、全体の合意を作っていこう、という「モデルベース・システムズエンジニアリング」、略して「MBSE」と言いますが、そんな活動、新しい工学が、今、注目をされています。 最近ですと、鉄道、航空、自動車ですね。あと日本だとロボティクスやスマートハウスといった、そういったシステムも今言ったようなシステムズエンジニアリングの課題になってきています。  オーケストラのように、全員が全体を把握できる楽譜が必要 例えば、オーケストラを例にとるといいかもしれません。色々な楽器を吹く方々が集まって一つの音楽を作るときにやはり指揮者のような立場の人がいて全体をオーケストレイトしていく。そんな必要がでてきます。そういう時に、共通の図面というか言語が必要になります。 メカ、エレキ、ソフト、それぞれが独自の図面というか、ビジュアライゼーションの方法をもっていますが全体を通じたものって、今まで定義されてませんでした。 SysMLという言語がOMGで定義されて、そのオーケストラの楽譜のような全体で、それを見て全員が理解できるような言語が作られてきています。このAYM(Are you modeling?)サイトでは、SysML、それからMBSE(Model based systems engineering)それから、Safety関連ですね、特にGSNと呼ばれる「システムが安全である」ということを、ビジュアルな表現でもって議論をしていくような手法なんかも注目されています。こういった新しい手法をみなさんに紹介していきたいと思います。

【対談】技術レビューの現場におけるGSNの活用法 〜 デンソークリエイト 小林さん

モデリングしてますか? 前回に引き続き、デンソークリエイトの小林さんと今日は対談という事で、よろしくお願いします。   ありがとうございます。     GSN(Goal Structuring Notation)って、実際に描いてみると難しいじゃないですか。     そうですね。     今回は「GSNやD-caseをレビューに使う」という話でしたが、そもそも、GSNやD-Caseをレビューに使いたいと考えたきっかけは、何だったんですか?    もっと中に踏み込んだ議論をしたくてGSNを使い始めた うちの会社では、レビューの場では「手順」をしっかり抑えておこうと、チェックリストなど色々あるのですが、最近それに慣れてしまったメンバーもいて、プロダクトの中身について議論する機会が減ってきたんです。 そこで、GSNというフォーマットを使うと、「前提」という形で考え方などを見える化できるので、中に踏み込んだ議論ができるようになるんじゃないかな、と。 なるほど。 確かに、議論は個人個人違うじゃないですか。でも、前提というか、周り、議論を支える前提となる基準だったり、コンテキストや、エビデンスとか、実は議論と関係なく存在してますよね。会社でプロセスを決めてくっていうのは、議論構造を決めてくよりも、実は基準を決めてくことじゃないんですか? はい。その辺りに基づいて議論を作っていくと、相手が非常に納得できるという流れになるんじゃないかと思います。  GSNで、知見を「コンテキスト」として定義、蓄積、形式知化する やはり、過去にやった人が持っている知見って貴重で、毎回同じ失敗を繰り返したくない、と、皆そうですよね?あれって、GSNでうまく吸い出せないですかね?   そこは、GSNのコンテキストという形で定義して、それをどんどん蓄積していくという形ができると、非常にいい流れになるんじゃないかな、と。     なるほど。じゃあ、GSNは、議論の構造としては、勿論描く。それは毎回描いても構わないんだけど、そこでやってく中で出てきた知見を、うまくコンテキスト側に押し出していく。 それを、会社なり組織なり、あるいはもうちょっと言うと世界標準なり認証機関を持つ認証かもしれないですが、そっち側の形式知化していく、という活動が、GSNの持ってる力なんでしょうかね? […]

【対談】ロボットのハードウェア抽象化層を標準化する – JASAがOMGでHAL(Hardware Abstraction Layer)の規格を提案

米国OMGの規格策定会議に参加中のJASA(組込み技術協会)の中村理事に、JASAが提案しているOpenELおよびHAL規格について、その思いをお話頂きました。 モデリングしてますか? 今日は米国のテキサス、オースチンに来ています。OMGの標準化ミーティングに参加しています。今日は中村さんをお招きしてお話を伺いたいと思います。こんにちは、中村さん。   こんにちは。      ロボットのハードウェア抽象化レイヤーの標準化活動 今回OMGはどういった目的で参加されているんですか?     はい。私はOMGではロボットのハードウェア抽象化レイヤーの標準化を進めようということで参加しております。     HALってやつですね。エイチエーエル。     はい。ハードウェア・アブストラクション・レイヤーの略で「ハル」と呼んでおります。     その辺に関わることになった経緯も含めて自己紹介をお願いできますか?     私は、日本では社団法人組込みシステム技術協会、略称でJASAと言いますが、そちらで理事をしておりまして、その中のプラットフォーム研究会というところで、ロボットのハードウェアの抽象化を標準化しましょうという活動を行っております。JASAではOpenEL(Open Embedded Library)という規格を現在作っておりまして、OMGに参加して、ロボティクスDTFで活動しております。 JASAってETロボコンとかもやってらっしゃいますよね?     はい。既にETロボコンの開発キットとして弊社よりOpenELに対応しましたリアルタイムOS、およびOpenELのライブラリを配布しておりますので、ETロボコンの参加者の方は既にOpenELを使っていただける環境にあります。 […]