Skip to content

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


Kenji_in_Verb_Modeling

平鍋

「モデリング」してますか?

今日は、「動詞de!! モデリング」、③C言語による実装編、という事で、実際にプログラミングに落としていく過程を、セイコーエプソンの萩原さんにお話いただきます。(①導入編②実践編)
では、萩原さん。よろしくお願いします。

 


AYM モデリング習得3つの壁とその対応策


hagiwara-san_verb_modeling

萩原さん

 

「オブジェクト指向の設計の敷居が高い」という点と「UMLの習得が難しい」という点、この部分について説明したいと思います。

 

verb_modeling_c_language2


AYM オブジェクト指向にこだわらなければよい


まず「オブジェクト指向の敷居が高い」というのはですね、対策としては「オブジェクト指向を使わない」と決める。「データ抽象」という、オブジェクト指向以前のものを使ってですね、それをやりきる、という形になります。
「データ抽象」が何かというと、データと関係する関数を同じ場所に置く、というものが「データ抽象」になります。
C言語でいうとですね、.cの所に関係するデータ、つまり変数と、その変数を使う関数を集める、ということですね。
別の言い方にすると、「モジュラーアプローチ」というようなものになってきます。これをクラスにする、という形になります。

verb_modeling_clanguage4

 

.hと.cのペアですね。これをクラスと対応付けることができます。クラスの中で公開する関数はプラス、パブリック属性になりますが、これをヘッダーファイルに置きます。非公開にする関数は、Cですとstatic宣言した関数になりますね。変数は、基本的に非公開にしますので、static宣言します。
Cの場合、.cからヘッダーファイルにincludeします。この時、クラス図の関連線が対応することになります。このようにすると、C言語の技術者でもクラス図を描くことができます。まぁ、多分ですね、普段作っているCの構造、Cのソースコードと同じ構造のクラスがすぐ作れると思います。

 


AYM 使うUML図は3種類でよい。クラス図、コミュニケーション図、ステートマシン図


「UMLの習得が難しい」というものがありますが、これについてですね、使用するダイアグラムの種類を3つに絞りました。
verb_modeling_clanguage_3

1つはクラス図、もう1つはコミュニケーション図、最後は、ステートマシン図です。
クラス図というのは、先ほど言いましたように、要はファイル間の相関図です。「このファイルが、このファイルと関係する」つまりincludeしている、という状態を表します。そして、そのファイルに対して、こういう関数と変数があります、ということを図示するような形が「クラス図」になります。

もう一つ、コミュニケーション図、これは言ってしまえば、「関数呼び出し図」ですね。ファイルに関数がありますが、この関数を、このファイルから呼び出して、次にこの関数を呼び出す、という事がコミュニケーション図上に表現されています。

最後、ステートマシン図、状態遷移図ですね。
Cを使う、特に組込みのエンジニアの場合は、クラス図やコミュニケーション図を描けなくてもステートマシン図で描ける事があります。ま、描けない場合は努力してください、という話になってしまいますけども…。

これがステートマシン図です。この3つの図を使うことによって「UMLの図が多い」という事に対して、対応していく事ができます。C言語の設計者に対して大体30秒くらいで説明すればですね、大体ここら辺の図は使えるようになります。


Kenji_in_Verb_Modeling

平鍋

萩原さん、ありがとうございました。組込みの現場では、いまだに、やはりC言語というのは重要な言語だし、よく使われてると思いますね。その中で、オブジェクト指向にこだわらずに、その「データ抽象」という重要な考え方を使って、今のC言語の技術者が良い設計をする為に使う、

 

hagiwara-san_verb_modeling

萩原さん

そうですね、はい。

 

 

 

Kenji_in_Verb_Modeling

平鍋

という手法が、この「動詞de!! モデリング」です。ぜひ、皆さんも現場でトライをしてみてください。では、萩原さん、どうもありがとうございました。

 

 

hagiwara-san_verb_modeling

萩原さん

こちらこそ。

 

 

 


補足

[関連リンク]

Advertisements

1 Comment »

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: