動詞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言語の技術者が良い設計をする為に使う、
そうですね、はい。
という手法が、この「動詞de!! モデリング」です。ぜひ、皆さんも現場でトライをしてみてください。では、萩原さん、どうもありがとうございました。
こちらこそ。
補足
- 「動詞 de モデリング」は、「モデルベース開発とエンジニア育成の最前線」(右)の「7.4章 セイコーエプソンにおけるモデリング技術教育事例」のコンセプトをまとめたものです。
- 2017年3月13日、上記書籍で紹介されている事例の続きに相当する事例論文がIPAからベストプラクティスとして公開されました。
「セーフティ&セキュリティ設計のためのモジュラーアプローチと準形式手法の設計現場への導入 ~ソフトウェアの5S3定で欠陥の少ないソフトウェアを作る~」
1 Comment »