組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

101
Copyright © 2011 Technologic Arts Inc. All rights Reserved. 1 組み込みエンジニアのための UMLモデリング入門(初級編) Copyright © 2011 Technologic Arts Inc. All rights Reserved. 2 本セミナーの目標 1. ロボットを動かすために必要な知識を得る 2. UMLによる設計に関する知識を得る 3. ロボットの動作を設計する 4. UMLによる設計からプログラムを作り、ロボットを実際に 動かすまでの一連の流れを体験する 1

Transcript of 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Page 1: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 1

組み込みエンジニアのためのUMLモデリング入門(初級編)

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 2

本セミナーの目標

1. ロボットを動かすために必要な知識を得る

2. UMLによる設計に関する知識を得る

3. ロボットの動作を設計する

4. UMLによる設計からプログラムを作り、ロボットを実際に

動かすまでの一連の流れを体験する

1

Page 2: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 3

1.ロボット工学の概要

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 4

ロボット工学の概要

生命に近い自律機構を目指す現代のロボット工学は幅広い学問分野の学際的な研究活動といえる

ロボット工学の主な研究領域

– 計測制御

– 産業用ロボット技術

– 移動機械技術

– センサ工学

– コンピュータサイエンス

– 人工知能 / 認知科学

– 生物学

– 生理学 他

2

Page 3: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 5

ロボット工学の概要

制御方式によるロボットの分類

– 操縦ロボット

– シーケンスロボット

– プレイバックロボット

– 数値制御ロボット

– センサ制御ロボット

– 適応制御ロボット

– 学習制御ロボット

– 知能ロボット

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 6

ロボット工学の概要

操縦ロボット

– 初期操縦ロボット:各モーターに対応したスイッチを操縦

– 現在の操縦ロボット:コンピュータにより複数のステップをまとめて制御

– 「マスタ・スレーブ」:操縦桿操作で遠隔のロボットを制御

(出典:株式会社テムザック社ホームページ)

3

Page 4: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 7

ロボット工学の概要

シーケンスロボット

– 定義された順序に従って一連の動作を実行

– シーケンス制御:タイマー制御 / センサ制御

炊飯器の制御シーケンス

仕込み

余熱、振動で米に水を吸収

させる

本炊き

強火で一気に炊き上げる

むらし

加熱停止

はじめちょろちょろ 中ぱっぱ 赤子泣いてもフタ取るな

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 8

ロボット工学の概要

数値制御ロボット

– ロボットの動作を数値により伝達指示することで制御する

Loop:2

Base(right:6)

Elbow (down:2)

Capt(grab:3)

Loop end

4

Page 5: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 9

ロボット工学の概要

センサ制御ロボット

– 各種センサにより周囲状況情報を取得し、自律的に制御実行

– 主なセンサ:光センサ、温度センサ、音響センサなど

光センサ 温度センサ タッチセンサ

角度センサ カメラセンサ

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 10

ロボット工学の概要

ロボットの移動機構方式例

– 無限回転または車輪型(2輪、3輪、4輪、6輪など)

– 足歩行(2足、3足、4足、6足など)

– 蛇型移動機構

(出典:東京工業大学 広瀬・米田研究室ホームページ)

5

Page 6: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 11

ロボット工学の概要

車輪走行方式のロボット制御

– 左右の車輪を個別のモーターで駆動(ディファレンシャル駆動)

左モーター

前進

左モーター

後退

左モーター

停止

右モーター

前進

前進 信地回転

右方向

前進

右方向

右モーター

後退

信地回転

左方向

後退 後退

右方向

右モーター

停止

前進

右方向

後退

左方向

停止

Copyright © 2011 Technologic Arts Inc. All rights Reserved.

ロボットを動かすソフトウェア

組み込みOS– ITRON、組み込みLinux、T-Kernelなど

デバイスドライバー

– ハードウェアを制御するために、入出力デバイスを使い、アプリケーションインターフェースを提供する

RTミドルウェア

– ロボットの制御のためのミドルウェアで、デバイスの細かい制御を緩和する

設計ツール

– ロボット制御のアプリケーションを設計する

12

6

Page 7: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved.

RTミドルウェア

RTミドルウェアとは

– RTミドルウエアは、様々なロボット要素(RTコンポーネント)を通信ネットワークを介して自由に組み合わせることで、多様なネットワークロボットシステムの構築を可能にする、ネットワーク分散コンポーネント化技術による共通プラットフォームを確立することを目指している。

OpenRTM-aist– 独立行政法人産業技術総合研究所・知能システム研究部門・

タスクインテリジェンス研究グループが研究・開発・配布を行っているRTミドルウエア実装の一つ

13

Copyright © 2011 Technologic Arts Inc. All rights Reserved.

設計ツール

RT用の標準設計表記UMLを採用

パターンウィーバー for RT

14

7

Page 8: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 15

2.オブジェクト指向とプログラム

UMLはObject Management Group,Inc.の登録商標または商標です

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 16

オブジェクト指向概要

8

Page 9: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 17

身近な例

同じ「乗用車」でも、別々の「モノ」として存在する。

これをオブジェクトと呼ぶ。

鈴木さんの車 佐藤さんの車

乗用車

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 18

グループ分け

オブジェクトは特徴によってグループ分けできる

トラックA トラックB

佐藤さんの乗用車鈴木さんの乗用車

乗用車のグループ

トラックのグループ

9

Page 10: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 19

グループの特徴

グループにはそれぞれ特徴がある

乗用車 → 人を乗せるための自動車

トラック → 荷物を載せるための自動車

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 20

グループの階層化

乗用車、トラックともに自動車である。

・・・ どちらも自動車の特徴を持つ。

自動車

乗用車 トラック

10

Page 11: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 21

クラスとは

クラスとは

同じ特徴を持つオブジェクトのグループ

オブジェクトのテンプレート(型)

佐藤さんの乗用車

(オブジェクト)

乗用車

(クラス)

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 22

クラスの例

クラスは共通する特徴を持っているグループ

鈴木さんの乗用車(オブジェクト)

佐藤さんの乗用車(オブジェクト)

乗用車クラス

11

Page 12: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 23

例:乗用車クラス

乗用車の特徴

– 四輪車

– 人を乗せられる

– 燃料で動く

– 車体の色

– 前へ進む

– ・・・

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 24

クラスの構成要素

属性 ・・・ クラス(オブジェクト)が持つ値(変数)

振る舞い ・・・ クラス(オブジェクト)の動作(メソッド)

クラスは以下の性質を持つ

12

Page 13: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 25

クラスの属性

排気量

重量

搭乗人数

ドア数

・・・

乗用車クラス

例:乗用車クラスが持つ属性

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 26

クラスの振る舞い

例:乗用車クラスが持つ振る舞い(メソッド)

前に進む

後ろに戻る

止まる

右へ曲がる

左へ曲がる

・・・ 乗用車クラス

13

Page 14: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 27

クラスの属性と振る舞い

乗用車

排気量重量…

前に進む後ろに戻る…

クラス名

乗用車

属性

振る舞い

UMLによるクラス構造の記述

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 28

演習1

身近な例でクラスを考えてみなさい。

例:自動販売機クラス

そのクラスにどんな属性と振る舞いがあるか考えてみなさい。

例:自動販売機クラス

・属性

商品、投入金額、つり銭…・振る舞い

商品を出す、投入金額を表示する…

14

Page 15: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 29

オブジェクト指向の特徴

・抽象化(Abstractions)・カプセル化(Encapsulation)

・継承(Inheritance)

・メッセージング(Message Passing)

・ポリモーフィズム(Polymorphism)

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 30

抽象化

クラスによるオブジェクトのテンプレートを作成する

乗用車クラス

鈴木さんの乗用車

佐藤さんの乗用車

15

Page 16: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 31

カプセル化

データと機能の実装を隠ぺいする

モジュール化により、プログラムコードの保守性を上げる

データ

手続き1

手続き2

オブジェクト

カプセル化

手続き2

手続き1

データ

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 32

継承(スーパークラス/サブクラス)

サブクラスはスーパークラスの特徴を受け継ぐ

スーパークラス

サブクラス サブクラス

16

Page 17: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 33

継承(車の例)

乗用車クラスとトラッククラスは、自動車クラスの特徴を受け継ぐ

自動車

乗用車 トラック

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 34

継承(属性、振る舞い)

スーパークラスの属性、振る舞いをサブクラスは継承することができる。

自動車属性

・排気量

・重量

振る舞い

・前に進む

・後ろへ戻る

乗用車

属性

・排気量

・重量

振る舞い

・前に進む

・後ろへ戻る

引き継ぐ

17

Page 18: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 35

メッセージング

オブジェクト間のデータ送信、呼び出しなどのやりとりは、メッセージによって行われる

口座オブジェクト

メッセージ受付係

オブジェクト

口座開設(顧客ID,金額)

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 36

ポリモーフィズム

異なるオブジェクトに、同じメッセージを送った場合に、そのオブジェクトの特性にあわせた振る舞いを設定できる

18

Page 19: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 37

演習2

身近な例で継承(スーパークラスとサブクラス)を

考えてみなさい。

スーパークラスにどんな属性と振る舞いがあるか考えてみなさい。

さらに、サブクラスにはどんな特徴があるか考えてみなさい。

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 38

オブジェクト指向のプログラム

19

Page 20: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 39

プログラム言語の関係(系列)

C Objective-C

C++

Simula

Smalltalk

Java

Eiffel

Ada

Pascal

Modula

Object Pascal VB-5

Lisp Flavors Clos

Ada-95

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 40

プログラム言語におけるオブジェクト指向

オブジェクト指向言語– Ruby– Smalltalk– JAVA– C++、など

20

Page 21: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 41

クラスの属性と振る舞い

乗用車

排気量重量…

前に進む後ろに戻る…

クラス名

乗用車クラス

属性

振る舞い

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 42

プログラム上のクラスの定義

class Car

def initialize

# 排気量

@engineDisplacement

# 重量

@weight

end

def runForward ()

・・・・

end

end

クラス名

属性

振る舞い

属性の名前

振る舞いの名前

乗用車クラスの場合(Ruby言語)

21

Page 22: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 43

プログラム上の属性の定義

@engineDisplacement

属性には、属性のスコープと属性名をつける。

属性のスコープ

属性名

例: number = 4 #ローカル属性

@amount #インスタンス属性

@@str = “ponda” #クラス属性

$flag = true #グローバル属性(利用に注意が必要です)

・排気量(engineDisplacement)属性の場合

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 44

プログラム上の振る舞いの定義

def runForward ()

振る舞い(メソッドとも呼ぶ)には、メソッド名、引数等を定義する

引数には、メソッドに渡すデータの型と名前を定義する。

・前へ進む(runForward)メソッドの場合

メソッド名

引数(この例では引数無し)

()は省略可能

例: def getNumber

return 10 # メソッドを呼び出した側に10を返す

end

def setAmount(amount)

end

22

Page 23: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved.

Rubyプログラムを作るために

45

1. デスクトップ上のコマンドプロンプトを起動させる2. 作業ディレクトリをデスクトップに変更する

cd Desktop2. rubyというディレクトリを作成する

mkdir ruby3. rubyディレクトリに移動して、プログラムを作成する

cd rubynotepad XXXX.rb

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 46

演習3

演習1で考えたクラスをプログラムで記述してみよう。(メソッドの内容は、putsもしくはpで文字を表示するだけで良い)

例:def runForward

puts “runForwardを実行”end

23

Page 24: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 47

オブジェクトの生成とコンストラクタ

クラスからオブジェクトを生成するには、「new」を使う

オブジェクトを生成する際、コンストラクタが呼ばれる

生成したオブジェクトを「インスタンス」と呼ぶこともある

class Car

end

# Carクラスのオブジェクトを生成。()は省略可能。

myCar = Car.new()

# carオブジェクトのrunForwardを実行。()は省略可能。

myCar.runForward()

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 48

プログラムの実行方法(Windows)

1. デスクトップ上のコマンドプロンプトを起動させる2. プログラムが置かれたディレクトリに移動する

cd ruby3. 「ruby プログラムファイル名」という形式で実行する

ruby XXXX.rbrunForwardを実行 # 実行結果

24

Page 25: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 49

コンストラクタ

コンストラクタは、オブジェクトが生成される際に呼ばれる

Rubyでのコンストラクタの役割は、initializeメソッドが担います。

コンストラクタをなにも宣言しなかった場合、デフォルトのコンストラクタ(引数無しのコンストラクタ)が宣言してあるものとして扱われる

class Car

def initialize

@carName = "名無し"

end

def initialize(name)

@carName = name

end

end

コンストラクタ(引数名無し)

コンストラクタ(引数名有り)

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 50

演習4

演習3で作成したクラスのオブジェクトを生成してみなさい。

生成したオブジェクトのメソッドを実行してみなさい。

25

Page 26: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 51

クラスの構成

クラスの構成要素には、属性(変数)、振る舞い(メソッド)がある。

振る舞い(メソッド)は可視性を持つ。

Rubyでクラスの属性(変数)は、Javaのprivate属性のように外からの直接アクセスができない(グローバル属性は例外)。変数へのアクセスにはアクセスメソッドを使う。

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 52

振る舞い(メソッド)の可視性

振る舞い(メソッド)の可視性とは、その振る舞いがどこからアクセスできるかを示す。

– 可視性の種類

– public ・・・ クラスの外側からアクセスできる。デフォルト。

– private ・・・ レシーバーを省略した関数形式でしか呼び出しできません。つまり、同じクラス、もしくはサブクラスのオブジェクト内でのみ呼び出しが可能です。

– protected ・・・ privateの場合と同じく、そのメソッドが定義されたクラス、もしくはサブクラスのオブジェクト内でのみ呼び出しが可能です。 privateとの違いは、レシーバー指定での呼び出しが可能なことです。つまり、別のインスタンスであっても、同じクラスまたはサブクラスのオブジェクトであれば呼び出し可能です。

26

Page 27: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 53

振る舞い(メソッド)の可視性

メソッドのアクセス制御は以下のように行う。

例:class Foodef initialize(value) # initialize は private メソッド。そのため、

... # クラスのオブジェクトから実行できない

enddef m1 # public メソッド( 初のデフォルトはpublic)。

...endprivate : m1 # メソッドm1を明示的に privateに変更。

protected # デフォルトの設定を protectedに変更。

... # ここからのメソッドはprotectedメソッドになる。

end

public、private、protectedの後ろにメソッド名を指定して明示的に設定を変更することができます。また、メソッド名を省略すれば、デフォルト設定のメソッドになります。

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 54

インスタンス変数とクラス変数

インスタンス変数– インスタンス変数は‘@’で始まる。– インスタンス変数はインスタンスごとに異なるデータを保持します。– 初にどこかのメソッドで使用された時点でインスタンス変数は作成。

例: class SampleClassdef initialize(num)

@num = numenddef getnum

@numend

end

object = SampleClass.new(10)p object.getnum #=> 10

– クラス(メソッドの外)にインスタンス変数を定義することが可能ですが、その変数を 子クラスの特異メソッドから参照することはできません。

27

Page 28: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 55

インスタンス変数とクラス変数

クラス変数

– クラス変数は‘@@’で始まる。

– クラス変数はそのクラスで定義されたすべてのオブジェクトで同じ値を保持する。

例: class SampleClass@@cvar = 1

def getvalue@@cvar

enddef setvalue(n)

@@cvar = nend

end

ob1 = SampleClass.newob2 = SampleClass.newp ob1.getvalue #=> 1

ob2.setvalue(100)p ob1.getvalue #=> 100 # ob2で値を設定したが、 ob1の@@cvarにも反映されている

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 56

継承

自動車

排気量重量・

前に動く・・

トラック

堆積重量

荷台を上げる

乗用車

人数

人を乗せる

28

Page 29: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 57

プログラム上の継承

# 自動車クラス

class Vehicle

def initialize

@engineDisplacement #排気量

@weight #重量

end

・・・・

def runForward

#前へすすむ

end

・・・・

end

# 乗用車クラス

class Car < Vehicle

・・・・

@number # 人数

・・・・

# runForwardは書かなくても利用できる

end

Vehicleを継承しているため

継承の定義(CarはVehicleを継承している)

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 58

演習5

演習2で考えたスーパークラスとサブクラスをプログラムで記述しなさい。(振る舞いの内容は、putsもしくはpで文字を表示するだけ良い)

プログラムを実行しなさい。

29

Page 30: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 59

カプセル化

操作(振る舞い)を介してprivateな属性にアクセスする

属性を直接操作しないため、クラス内が変化しても呼び出し側に影響しない

排気量

自動車

排気量を取得

自動車

排気量を取得

何か複雑な計算

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 60

ポリモーフィズム

同じ操作(振る舞い)でも、オブジェクトのクラスによって

異なる動作をする。

再生機

play ()

テープ

play ()

ビデオ

play ()

例:再生機(テープとビデオ)

30

Page 31: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 61

ポリモーフィズム

# 再生機クラス

class Recoder

・・・・

def play

# 再生する

end

end

# テープクラス

class Tape < Recoder

def play

# オーバーライドして

# テープ振る舞いを記述

end

end

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 62

プログラム上のポリモーフィズム

「recoder」にはテープかビデオどちらかのオブジェクトが入る

if recoderType == “TAPE”

recoder = Tape.new

else

recoder = Video.new

end

recoder.play

テープオブジェクトの場合は、テープのplayを

ビデオオブジェクトの場合は、ビデオのplayを実行する。

31

Page 32: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 63

3.UMLの概要

UMLはObject Management Group,Inc.の登録商標または商標です

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 64

UML概要・UMLとは・モデルとは・UMLのメリット・UMLと従来の図・UMLの歴史・UMLのダイアグラム

32

Page 33: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 65

UMLとは

UML(Unified Modeling Language:統一モデリング言語)

– モデルを表現する言語(表記法+意味)の一種

– OMG(オブジェクト指向技術の標準化団体)で標準化されている

– 事実上のグローバルスタンダード

OMT法

Booch法

OOSE法

UML

OMGでの標準化

(表記法のみ)

J.ランボー

G.ブーチ

I.ヤコブソン

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 66

モデルとは(1)

実世界の事柄を別の物体で表現したもの

– 実世界の事柄を図や記号、模型などの物体で表現することをモデリングと呼ぶ

• 高い品質、高い信頼性のソフトウェアを開発するのに必要不可欠な作業

• 事象や事柄に対する視点を変えながらモデルを導出

タイヤ、ドア、ハンドル・・・

走る、曲がる、止まる・・・

乗用車、乗り物・・・

乗り物

車ドア

タイヤ走る

表現手段の1つがUML!!

33

Page 34: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 67

モデルとは(2)

モデリングの視点

– 機能、構造、状態・・・

システム開発におけるモデル

– これから開発するシステムの設計図となるもの

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 68

UMLのメリット(1)

コミュニケーションツールとしての効果

– 世界中の技術者が読み書きできる

– 仕様書がビジュアル化されるため、読みやすく理解しやすい

UML

世界中の技術者が理解できる共通の表記法

34

Page 35: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 69

UMLのメリット(2)

モデル間のつながりが明確

– システムのさまざまな側面を表現することが可能

– UMLのダイアグラム間には明確な対応関係がある

シーケンス図ユースケース図 クラス図

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 70

UMLのメリット(3)

実装言語への対応が明確

– JavaやC#、Rubyといったオブジェクト指向言語に対してUMLで作成したモデルを明確に対応付けられる

UMLのモデル要素例(オブジェクト指向に対応)

クラス

属性

操作

オブジェクト

属性

操作

メッセージ

35

Page 36: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 71

UMLの歴史

Booch法 OMT OOSE

Unified Method 0.8

UML 0.9

UML 1.0

UML 1.1

UML 1.3

UML 1.4

他の手法

UML 1.5

OMG標準化 1997.11

OMG提案 ‘997.1

1996

OOPSLA 1995

1999

2001

2003

UML 2.02005.07

UML 2.12006.04

UML 2.2策定中

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 72

UML2.0のダイアグラム

ユースケース図

クラス図 オブジェクト図

ステートマシン図

シーケンス図

コミュニケーション図

アクティビティ図

コンポーネント図

配置図

要求ユースケース図

要求ユースケース図

静的構造クラス図

コンポジット構造図コンポーネント図オブジェクト図

静的構造クラス図

コンポジット構造図コンポーネント図オブジェクト図相互作用

シーケンス図コミュニケーション図

相互作用概要図タイミング図

相互作用シーケンス図

コミュニケーション図相互作用概要図

タイミング図

状態ステートマシン図アクティビティ図

状態ステートマシン図アクティビティ図

実装パッケージ図

配置図

実装パッケージ図

配置図

コンポジット構造図

タイミング図

相互作用概要図パッケージ図

UMLはObject Management Group,Inc.の登録商標または商標です

36

Page 37: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 73

UMLダイアグラムとモデリングフェーズ

・開発プロセスの基礎・ダイアグラムとモデリングフェーズ・アクティビティ図・ユースケース図・オブジェクト図・クラス図・シーケンス図・コミュニケーション図・ステートマシン図・配置図

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 74

開発プロセスの基礎(1)

ウォーターフォール型開発プロセス

要求

分析

設計

実装

テスト

37

Page 38: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 75

開発プロセスの基礎(2)

繰り返し型開発プロセス

フェーズ フェーズ フェーズ フェーズ

RUP、アジャイル開発プロセスなど

業務分析

要求分析

システム分析

システム設計

実装

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 76

ダイアグラムとモデリングフェーズ

業務分析

要求分析

システム分析

システム設計

実装

アクティビティ図

アクティビティ図ユースケース図

オブジェクト図クラス図ステートマシン図

コンポーネント図,コンポジット構造図,シーケンス図,コミュニケーション図,ステートマシン図,タイミング図,相互作用概要図,設計クラス図,パッケージ図

配置図

38

Page 39: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 77

アクティビティ図

処理の流れを表すダイアグラム

– 上流工程では、ビジネスプロセスを表現するために使われる

– 下流工程では、従来のフローチャートと同様の使われ方をされる。

オペレ-タ 表示パネル

設定を始める

IDとパスワードを入力する

IDとパスワードをチェックする

設定可能なパラメータを表示する

パラメータを入力する

パラメータをチェックする

設定されたパラメータを表示する

設定されたパラメータを確認する

設定を終了する

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 78

ユースケース図

システムが持つ機能とその利用者を表すダイアグラム

– 要求分析のフェーズで使用される

パラメータを設定する

アラームを鳴らす

グラフを印刷する

各種値,メッセージを表示する

測定値を取得する

制御する

温度・圧力制御システム

オペレーター

アラーム

プリンター

表示パネル

センサー

調整器

39

Page 40: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 79

オブジェクト図

システムの静的な構造をある瞬間に着目して表現するダイアグラム

– システム分析で用いられる。

P1 : パラメータ

正常値範囲 = 0℃~25℃アラームスイッチ = ON

C1 : コントローラ

A1 : アラーム

状態 = 待機

D1 : 表示パネル

T1 : 温度センサー

温度 = 40℃

TAC1 : 温度調整器

状態 = 待ち経過時間 = 10分

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 80

クラス図

システムの静的な構造を表すダイアグラム

– システム分析、システム設計で利用される。

パラメータ

正常温度範囲アラームスイッチ

コントローラ

アラーム

状態

表示パネル

温度センサー

温度

温度調整器

状態経過時間

40

Page 41: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 81

シーケンス図

システムのある機能を実現するためのオブジェクト間の相互作用を時系列に着目して表現したダイアグラム。

– システム設計で用いられるT1 : 温度センサー C1 : コントローラ P1 : パラメータ TAC1 : 温度調整器 A1 : アラーム D1 : 表示パネル

2 : 測定値範囲を取得する

3 : 温度を上げる

4 : 温度異常を検出する

5 : アラームを鳴らす

6 : メッセージを表示する("温度異常検出")

1 : 測定値を取得する

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 82

コミュニケーション図

システムのある機能を実現するためのオブジェクト間の相互作用をオブジェクト間の関係に着目して表現したダイアグラム

– システム設計に用いられる

P1 : パラメータ

正常値範囲 = 0℃~25℃アラームスイッチ = ON

C1 : コントローラ

2 : 測定範囲を取得する

A1 : アラーム

状態 = 待機

5 : アラームを鳴らす

D1 : 表示パネル

6 : メッセージを表示する("温度異常検出")

T1 : 温度センサー

温度 = 40℃

1 : 測定値を取得する

TAC1 : 温度調整器

状態 = 待ち

経過時間 = 10分

3 : 温度を上げる

4 : 温度異常を検出する

41

Page 42: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 83

ステートマシン図

特定のオブジェクトにおける生存期間を通じての状態の変化を表すダイアグラム

– システム設計で用いられる。

待機中

コイン投入 [投入金額<購入可能金額]コイン投入中

コイン投入

購入可能

投入金額OK [投入金額≧ 低購入可能金額]

商品排出中

商品選択

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 84

配置図

システムの物理的な構成を表すダイアグラム

– ハードウェア構成やそこに配置されるソフトウェアの構成を表す。

– 実装時に用いられる。

コントローラ

センサー

プリンター

42

Page 43: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved.

確認問題

アクティビティ図を作成しなさい。

ユースケース図を作成しなさい。

オブジェクト図を作成しなさい。

クラス図を作成しなさい。

シーケンス図を作成しなさい。

コミュニケーション図を作成しなさい。

ステートマシン図を作成しなさい。

85

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 86

各ダイアグラムの表記法

・ユースケース図・オブジェクト図・クラス図・シーケンス図・コミュニケ−ション図・ステートマシン図

43

Page 44: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 87

ユースケース図

システムのユーザー(または外部システム、既存システム)と機能の関係を表現した図

– システム開発の初期に、ユーザーから「この機能がほしい」といった要求を表現する。

– システムを利用する外部の実体を明確にする。

– システムの大まかな機能を見分ける。

– 機能とユーザーの関係を明確にする。

– ユースケースからシナリオを作成する。

– システム化をする範囲を明確にする。

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 88

ユースケース図の例

含む側のユースケース

含む側のユースケース

測定値を取得する

温度を取得するinclude

圧力を取得する

オペレーター

パラメータを設定する

include

システムの外部要因(ユーザー等)

システムの外部要因(ユーザー等) システムが外部に

提供する機能

システムが外部に提供する機能

含まれる側のユースケース

含まれる側のユースケース

含まれる側のユースケース

含まれる側のユースケース

44

Page 45: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 89

ユースケース図の構成要素(1)

アクター

– ユーザーや外部システムを表す

– 抽象化した名前で定義する

• 営業担当・・・・○

• 伊藤さん ・・・・×

ユースケース

– システムの外部から見たシステムの機能(振る舞い)を表す

• ユースケース名には、ユーザーから見た機能や振る舞いを定義する

– 動詞で定義することが多い。

アクタ-

ユースケース

営業担当

パラメータを設定する

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 90

ユースケース図の構成要素(2)

境界枠

– ユースケースやアクターを囲んだ枠。

• システムの名称やモデルの名称を記述する。– ステレオタイプをつけて境界枠の意味付けを行う。

関連

– アクターとユースケース間の関係を示す。

境界枠

関連

温度制御システム subsystem温度制御システム

useCaseModel

温度制御システム

オペレーター

IDとパスワードを入力する

45

Page 46: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 91

汎化

– アクター間、ユースケース間の関連

• ユースケースを抽象化する場合の汎化

• アクターを抽象化する場合の汎化

オペレータ 管理者

ユースケース図の構成要素(3)

汎化

汎化

異常を検出する

温度の異常を検出する

圧力の異常を検出する

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 92

包含(include)

– あるユースケースが別のユースケースを機能の一部として含むことを表す。

拡張(extend)

– すでに存在するユースケースの一部を拡張することを表す。

ユースケース図の構成要素(4)

包含

拡張

測定値を取得する

温度を取得する

圧力を取得する

メッセージを表示するオペレーター情報

を表示する

extend

include

include

46

Page 47: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 93

ユースケース図の構成要素のまとめ

要素 名称 意味

ユースケース システムが外部に提供する機能を表す。

アクタシステムを利用するユーザ、外部のハードウェア、対象システムと関連する外部システムを表す。

関連 ユースケースとアクタ間の関係を表す。

境界枠 対象となるシステムの内部と外部の境界を表す。

予約を確認する《usecase》

予約を確認する予約を確認する

アクタ名

《actor》アクタ名

包含あるユースケースが他のユースケースを内部に含む事を表現する。

汎化ユースケースやアクタ間の抽象-具象の関係を表す。

拡張既にあるユースケースに新しい機能を追加してユースケースを定義する事を表現する。

アクタ名

レストラン営業システム

<<include>>

<<extend>>

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 94

ユースケース図(確認問題)

以下の説明文を読んでモデル内のA,B,Cにあてはまるものを正しく記述している 解答を選択し、ユースケース図を作成しなさい。

– 温度を計測して、その値を記録するシステムが稼働しています。センサーは測定した温度を記録システムに送って、その値を保存します。また、オペレータが温度を記録システムに入力することもあります。

A

C

B

選択してください。

・1、Aはセンサー、Bは記録システム、Cは温度・2、Aは温度、Bはセンサー、Cはシステムに記録する・3、Aはセンサー、Bはオペレータ、Cは温度を記録する

・4、Aは機器、Bはハードウエア、Cは温度を記録する

47

Page 48: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 95

オブジェクトX

- 属性 = 値

オブジェクトY

- 属性 = 値 無名オブジェクト

オブジェクトA1 : オブジェクトA

- 属性- 属性

オブジェクトA2 : オブジェクトA

- 属性- 属性

オブジェクトB1 : オブジェクトB

- 属性- 属性

オブジェクトC1 : オブジェクトC

- 属性- 属性

オブジェクト図

オブジェクトの関連や構造をある特定の場面で具体的に表現した図

• ある特定の場面とは?– ユースケース図を基に起こされたシナリオ

• シナリオをベースにオブジェクト図を起こすことで,精度の高いクラス図を作成できる

リンク

オブジェクト

属性

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 96

オブジェクト図の例

P1 : パラメータ

正常値範囲 = 0℃~25℃

アラームスイッチ = ON

C1 : コントローラ

A1 : アラーム

状態 = 待機

D1 : 表示パネル

T1 : 温度センサー

温度 = 40℃

TAC1 : 温度調整器

状態 = 待ち経過時間 = 10分

48

Page 49: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 97

オブジェクト図の構成要素

オブジェクト表記– オブジェクトの表記方法には、以下のようなパターンがある。

• オブジェクト名:パッケージ名::クラス名

• オブジェクト名:クラス名

• :クラス名

• オブジェクト名

• オブジェクト名/ロール名:クラス名

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 98

このオブジェクト図は、環境管理システムの一部を表している。測定値の種類には、温度と湿度と圧力と酸素濃度がある。温度と湿度はC1が管理し、圧力はC2が管理する。酸素濃度はまだ測定する機器が決まっていない。

測定データは3件あり、S1とS2とS3の測定値が計測されている。また、S2は温度と湿度の2つを管理している。

オブジェクト図(確認問題)

下の文章を読んで、オブジェクト図の空欄を埋め、オブジェクト図を作成しなさい。

S1 : センサー

S2 : センサー

S1の測定値 : 測定値

(5)の測定値 : 測定値

ルームA : (1)

ルームB : 湿度

(4) : コントローラ

ルームC : (2)S3の測定値 : 測定値S3 : センサー C2 : コントローラ

ルームD : (3)

49

Page 50: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 99

+ 操作1 (引数:型 = デフォルト値) : 戻り値

クラス図

システムの静的な構造を,クラス間の関係によって表現した図

– 粒度を使い分けることによって様々なフェーズで使用できる• 分析モデリングでは概念的、論理的な構造に着目

• 設計モデリングでは、より詳細な実装プラットフォームを意識した構造に着目

• 実装時には、プログラミング言語と直結した表現も可能

<< interface >>インタフェース

+ 操作2 (引数:型 = デフォルト値) : 戻り値

抽象クラス

- 属性1- 属性2- 属性3

+ 抽象操作1 (引数 : 型 = デフォルト値) : 戻り値

+ 抽象操作2 (引数 : 型 = デフォルト値) : 戻り値

/ ロ-ル名 : クラス名

+ 属性1 : 型 = 初期値- 属性2 : 型 = 初期値# 属性3 : 型 = 初期値~ 属性4 : 型 = 初期値

+ 操作1 (引数 : 型 = デフォルト値) : 戻り値

+ 操作2 (引数 : 型 = デフォルト値) : 戻り値

実装クラス

- 属性1 : 型 = 戻り値- 属性2 : 型 = 戻り値- 属性3 : 型 = 戻り値

+ 操作1 (引数 : 型 = デフォルト値) : 戻り値

+ 操作2 (引数 : 型 = デフォルト値) : 戻り値ロリポップ表記

インターフェース

※抽象クラス、操作は斜体または{abstract}プロパティを付加して表す。

※属性、操作の可能性

[+] ... public[-] ... private[#] ... protect[~] ... package

※インタフェースは「ロリポップ」表記でも表すことができる。

実現

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 100

クラス図の例

パラメータ

正常温度範囲アラームスイッチ

コントローラ

アラーム

状態

表示パネル

温度センサー

温度

温度調整器状態経過時間

50

Page 51: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 101

クラス図の構成要素(1)

クラス

– オブジェクトを抽象化した要素

• オブジェクトはクラスを基に生成される

– 3つの区画から構成される

• クラス名

• 属性– クラスの特徴を現す要素

– 多重度、順序付けを設定することができる

• 操作(振る舞い、メソッド)– クラスが行う処理、プロセス

– 操作が必要とするパラメータを記述できる

– 操作の戻り値を記述できる

クラス名

属性

操作

装置

- 装置ID- 装置名

- 製造年月日- 製造企業- 型番

+ 電源を入れる ()+ 動作させる ()+ 電源を落とす ()

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 102

クラス図の構成要素(2)

スコープ

– 属性や操作のスコープ

• クラススコープ– 属性名、もしくは操作名に下線をひいて表現する

– インスタンス全体に対して属性や操作がひとつだけあることを示す。

• インスタンススコープ– インスタンス一つ一つに属性や操作がひとつずつあることを示す。

センサー- センサーID- センサー名- 測定値

+ 動作中かをチェックする (センサーID)# 動作状態を得る (センサーID)- 動作状態を変更する (センサーID)~ 測定値を変更する (センサーID)+ 測定値を得る ()

インスタンススコープ

クラススコープ

51

Page 52: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 103

クラス図の構成要素(3)

関連

– クラス同士の結びつき、またはオブジェクト同士の意味的な結びつきを示す。

– 誘導可能性

• 関連に方向性がある場合に矢印を付けて方向を示す。

– 関連名

• 関連に名称を付けることが可能。

関連名

誘導可能性

装置-

装置種別-

所属する* 1

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 104

クラス図の構成要素(4)

多重度

– クラス間の数量的な関係を示す。

• 固定値・・・1 や 10 など

• 複数 ・・・*(アスタリスク)

• 範囲 ・・・0..1 や 5..* など

• セット ・・・2,4,6,8 など

多重度多重度

装置

-装置種別

-所属する* 1

52

Page 53: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 105

クラス図の構成要素(5)

ロールと限定子

– ロール

• 関連に対するクラスの役割を示す。

– 限定子

• 関連するオブジェクトを一意にするためのキー。

ロール

限定子

オペレーター システム1

管理者

装置 ラインラインID1 *

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 106

クラス図の構成要素(6)

制約

– クラスに対する規定や条件を示す。

– 自然言語やOCL(Object Constraint Language)、数式等の論理式で示す。

制約

センサー 温度センサー

圧力センサー

{ OR }

53

Page 54: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 107

クラス図の構成要素(7)

汎化と特化

– クラスを抽象化して別のクラスを作成すること

• 汎化されたクラスをスーパークラスと呼ぶ。

– クラスを具象化してクラスを作成すること

• 特化されたクラスをサブクラスと呼ぶ。

– サブクラスはスーパークラスの特性(属性、操作、関係等)をすべて引き継ぐ

汎化

特化

人- 名前- 住所

オペレーター- ID

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 108

集約とコンポジション

– 集約

• クラス間に「全体-部分」の関係があることを示す。

– コンポジション

• クラス間に「特に強い全体-部分」の関係があることを示す。

• 全体が消滅したら部分も消滅する程度に強い関連を示す。

クラス図の構成要素(8)

集約

コンポジション

携帯

-液晶

-

装置

-部品

-0..1

54

Page 55: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 109

クラス図の構成要素(9)

関連クラス

– クラス間の関連自体が持つ情報を示す。

どこのラインに,どのセンサーが,いくつ接続されている?

関連クラス

コントローラ センサー* *

ライン

- ライン種別

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 110

クラス図の構成要素(10)

依存

– あるクラスが、別のクラスに何らかの形で依存していることを示す。

– 依存されるクラスが変更されれば、依存するクラスも変更する必要が生じる。

依存

オペレーター オペレーター管理画面

55

Page 56: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 111

クラス図の構成要素(11)

インターフェース

– クラスが外部に公開する操作の集合を示す。

– あるクラスが、インターフェースを用いることを「インタフェースを実装する」と呼ぶ。

インタフェースインターフェース

実装クラス-

interfaceインタフェース名

インターフェース名

実装クラス-

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 112

ステレオタイプ– モデル要素に分類を追加する際に用いる。

– ≪ステレオタイプ名≫と表記する。

– 標準で用意されるステレオタイプ• ≪type≫

– 仕様レベルの抽象的なクラス

• ≪implementation class≫– 各プログラミング言語に依存した実装レベルのクラス

• ≪utility≫– クラスで使用されるグローバル変数や手続きをまとめたクラス。

• ≪metaclass≫– クラスのクラス。

Presentation

設定パネルUI

Domain

コント ローラ

DataSource

パラメ ータRAM

クラス図の構成要素(12)

ステレオタイプ

56

Page 57: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 113

クラス図の構成要素(13)要素 名称 意味

クラス属性操作

可視性

クラスはオブジェクトを抽象化した「型」、属性とはクラスが持つ性質、操作とはクラスが持つ振る舞いのことを示す。可視性はどの範囲から属性や操作にアクセス可能かを示す。

関連 クラス間に関係があることを表す。

多重度 関連するクラスのインスタンスの数量的な関係を表す。

汎化 クラス間の抽象-具象の関係を表す。

集約 クラス間の全体-部分の関係を表す。

コンポジション クラス間の全体-部分の関係を表す。集約よりもクラス間の関連が強い。

依存 あるクラスが他のクラスに何らかの形で影響を与える関係を表す。

関連端名 関連に対するクラスの役割を表す。

誘導可能性 クラスを参照できるか(メッセージを送信できるか)を表す。

クラスA+ public属性A# protected属性B~ package属性C- private属性D + public操作A ( )# protected操作B ( )~ package操作C ( )- private操作D ( )

席に案内する

1 1..*

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 114

クラス図(確認問題)

以下の説明文の内容を表すクラス図を作成しなさい。– オペレーターには、確認専用、変更可能、管理者という3つの種類があ

ります。

– ヒント(汎化)

– 車はボディとタイヤとエンジンから構成されます。車の種類には乗用車とトラックがあり、トラックには荷台があります。

57

Page 58: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 115

シーケンス図(相互作用図)

オブジェクト間のメッセージのやりとりを時系列で表現した図– オブジェクト間の相互作用によって一定の時間に行なわれている

内容を明確にすることが可能。

– 相互作用図の一種。

同期

同期の戻り(_)

アクター

オブジェクト オブジェクト

オブジェクト

自己メッセージ

非同期生成

破棄

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 116

シーケンス図の例

T1 : 温度センサー C1 : コントローラ P1 : パラメータ TAC1 : 温度調整器 A1 : アラーム D1 : 表示パネル

1 : 測定値を取得する

2 : 測定値範囲を取得する

3 : 温度を上げる

4 : 温度異常を検出する

5 : アラームを鳴らす

6 : メッセージを表示する("温度異常検出")

58

Page 59: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 117

シーケンス図の構成要素(1)

メッセージ

– オブジェクト間のやりとりを示す。

– 同期メッセージと非同期メッセージとがある。

• 同期メッセージ– メッセージ送信側が処理の終了を待ってから次の処理に移る。

• 非同期メッセージ– メッセージ送信側が処理の終了を待たずに次の処理に移る。

– メッセージの表記法

• 同期メッセージ

• 非同期メッセージ

• 同期メッセージの戻り

• メッセージ名 戻り値:=メッセージ(引数)

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 118

– オブジェクトの生成と破棄

• オブジェクトの生成– あるメッセージの送信によって、オブジェクトが新規に生成される様子

を表現

• オブジェクトの破棄– あるメッセージの送信によって、オブジェクトが削除される様子を表現

シーケンス図の構成要素(2)

入力画面

入力タスク生成する

59

Page 60: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 119

シーケンス図の構成要素(3)

マルチオブジェクト

– 関連の多重度が多(2,3,4, … *)の場合に、そのオブジェクト全体を対象とした処理を表現する

マルチオブジェクト

オブジェクト

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 120

シーケンス図の構成要素(4)

アクティブオブジェクト

– 自ら相互作用を開始できるオブジェクト

• 長方形の両端に実線を追加

パッシブオブジェクト

– 別のオブジェクトからメッセージを受信することで動作するオブジェクト

• 一般的なオブジェクト

アクティブオブジェクト

目覚まし時計

60

Page 61: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 121

シーケンス図の構成要素(5)

自己メッセージ

– オブジェクトが自分自身に送信するメッセージ

– オブジェクトとして自分が持つ責任範囲内で行なえる処理などを表す。

• 他のオブジェクトに頼らなくてもよい場合

自己メッセージ

オブジェクトA

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 122

シーケンス図の構成要素(6)

分岐(alt)– 条件によって送信するメッセー

ジを分岐する場合

• ガード条件によって分岐されるメッセージごとに記載。

繰り返し(loop)– メッセージが繰り返し送信され

る場合

• 繰り返し条件を「 小回数、大回数、継続条件」とし

て記載。

ガード条件

ガード条件

ガード条件

alt

[else]

オブジェクトA : クラスA オブジェクトB : クラスB

メッセージA

メッセージB

alt [x > 0]

[else]

loop

1, 10, [x<10]

オブジェクトA : クラスA オブジェクトB : クラスB

メッセージA

メッセージB

loop

61

Page 62: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 123

シーケンス図の構成要素(7)

オプション(opt)– メッセージがある条件を満たし

た場合に送信

• メッセージが送信される条件をガード条件として記載。

弱シーケンス(seq)– メッセージが一定条件を満たし

ている場合

• 送信される各メッセージの順序が維持される。

ガード条件

opt

[x>0]

オブジェクトA : クラスA オブジェクトB : クラスB

メッセージA

メッセージB

opt

seq

オブジェクトA : クラスA オブジェクトB : クラスB オブジェクトC : クラス C

メッセージAメッセージB

メッセージC

seq

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 124

シーケンス図の構成要素(8)

要素 名称 意味

相互作用システムが外部に提供するサービスや機能を実現する処理の単位を表す。

ライフライン 相互作用へ参加する要素を表す。

実行オカレンスライフライン上である動作が持続している区間を表す。

メッセージ ライフライン同士のやり取りを表す。

複合フラグメント

相互作用の流れを簡潔に表現できるようにするための要素。あらかじめ12種類の要素が定義されている。

相互作用オカレンス 別の相互作用への参照を表す。

sd 相互作用名

アクタAオブジェクトA

オブジェクトA

ref 相互作用B

opt

62

Page 63: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 125

シーケンス図(確認問題)

以下のシーケンス図と説明文を読んで、図中の空欄を埋めて、シーケンス図を作成しなさい。

– オペレータは管理情報入力画面でコントローラの情報を確認し、管理情報の登録を行なう。

管理情報を確認する 管理情報を確認する

管理情報を登録する(D)

(_)

管理情報を登録する(管理情報)

オペレータ

(A) (B)

: 管理

(C)

管理情報を表示する(管理情報)

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 126

コミュニケーション図(相互作用図)

相互作用におけるメッセージを、オブジェクトの関係に着目して表現した図

– オブジェクトとオブジェクトとの関連と、やりとりされるメッセージが明確になる。

– シーケンス図と同様に相互作用図の一種。

アクター

オブジェクト名 / ロール : クラス名

[ 状態名 ]

マルチオブジェクト状態名 / ロール名 : クラス名

1:同期

2:非同期

3:同期4:同期の戻り

5:自己メッセージ

63

Page 64: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 127

コミュニケーション図の例

C1:コントローラ

P1:パラメータ

- 正常温度範囲 = 0℃~25℃- アラームスイッチ = ON

A1:アラーム

- 状態 = 待機

D1:表示パネル

TAC1:温度調整器

- 状態 = 待- 経過時間 = 10分

T1:温度センサー

- 温度 = 40℃

情報範囲を得る()

測定値を得る()

アラームを鳴らす()

メッセージを表示する("温度異常検出")

温度異常を検出する()

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 128

コミュニケーション図の構成要素(1)

メッセージのネスト

– あるメッセージの処理中に別のメッセージの処理が行なわれていることを明示的に表現。

• メッセージ番号に”.”(ドット)で区切りを入れ、桁を増やすことで親子関係を表現する。

ネスト

ネスト

an Actor

: 設定入力画面 : パスワード情報

: パラメータ

1:設定情報を確認する() 1.1:IDとパスワードを照合する

1.2:設定情報を取得する

64

Page 65: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 129

コミュニケーション図の構成要素(2)

要素 名称 意味

相互作用 ある機能を実現するための処理の単位を表す。

ライフライン 相互作用へ参加する要素を表す。

リンク ライフライン間に関係があることを表す。

メッセージライフライン同士のやり取りを表し、リンクに沿った矢印で表現する。発生順にシーケンス番号を付ける。

sd 相互作用名

アクタAオブジェクトA

オブジェクトA オブジェクトB

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 130

コミュニケーション図(確認問題)

以下の説明文を読んでモデル中のA~Dに当てはまるものを選択候補から選び、コニュニケーション図を作成しなさい。

– オペレータは、管理画面に対して管理項目IDを渡して測定値を確認します。管理画面は、まず受け取った管理項目IDを管理項目リストに渡し、管理項目の検索を行います。次に、検索された管理項目の測定値を取得し、表示します。管理項目は管理画面からの要求に対して、管理情報リストの中にある管理情報を確認して、測定値を返します。

オペレータ

: 管理画面 : 管理項目リスト

1:測定値を確認する(管理項目ID)

1.1:B

: 管理項目 : 管理情報リスト

1.2:C 1.2.1::管理情報=管理情報を取得する()

: 管理情報

1.2.2:D

1.3:A

選択候補

・測定値を表示する(測定値)

・管理情報:=管理情報を取得する()

・測定値:=測定値を取得する()

・管理項目:=管理項目を検索する(管理項目ID)

65

Page 66: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 131

ステートマシン図

特定のオブジェクトに着目し、生存期間を通した状態の変化やイベントへの応答を表現した図

– 他のダイアグラムは、複数のオブジェクトをまとめて表現しているが、ステートマシン図はひとつのオブジェクトに着目した図。

終了状態

開始状態

状態

entry / アクション式do / アクション式

exit / アクション式

コンポジット状態

イベント

状態 状態

イベント

状態

イベント

イベント

平行状態

状態 状態

状態 a State

イベント名 (引数) [ガード条件]

イベント

状態イベント

履歴状態指示子

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 132

ステートマシン図の例

電源ON中

コイン投入

キャンセル

待機中

商品選択商品排出

投入金額OK [投入金額合計で商品購入可能]

コイン投入 [購入可能金額未満]

コイン投入中

購入可能

電源OFF中

66

Page 67: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 133

ステートマシン図の構成要素(1)

状態

– オブジェクトの属性の値や他オブジェクトとの関連で保たれている一定の様子。

遷移

– 状態や振る舞いの動作が変わる様子。

開始状態 遷移 終了状態

状態 A 状態 B

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 134

ステートマシン図の構成要素(2)

イベント– 遷移を起こす原因

アクション– 別のオブジェクトからメッセージが送信されそれに反応すること。

– 書式• アクションラベル/アクション名

– アクションラベルにはentry、exit、doの三つの予約語がある。• entry

– その状態に遷移したタイミング

• exit– その状態から別の状態に遷移するタイミング

• do– entry,exitのどちらでもないタイミング

ガード– 状態が遷移するときの真となる条件

67

Page 68: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 135

ステートマシン図の構成要素(3)

コンポジット状態と並行状態

– コンポジット状態

• ある状態中に状態遷移が発生する状態。(状態の入れ子)

– 並行状態

• ある状態中に複数の状態遷移が並行して発生する状態。

スーパー状態

サブ状態

コンポジット状態

状態 1 状態 2

並行状態

状態 状態

状態 状態

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 136

ステートマシン図の構成要素(4)

連結点– 複数の遷移を連結したり、分離したりする際に用いる。

– 黒丸 もしくは ひし形で表現する。

– 接続される遷移にはガード条件を表記できる。

– そこに入ってくる遷移と、出て行く遷移のガード条件を一度に評価する。

送風

ドライ 冷房

切り替える [温度>26]

切り替える [温度>55] 切り替える [温度<55]

切り替える 切り替える

68

Page 69: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 137

ステートマシン図の構成要素(5)

動的選択点

– 遷移のガード条件を動的に評価しながら遷移を分離する際に用いる。

– まずそこに入ってくる遷移のガード条件が評価され、次にそこから出て行く遷移のガード条件が評価される。

動的選択点

待機

おつりを出す商品を出す

商品のボタンを押す (おつり=投入金額-商品の金額)

[おつり>0][おつり=0]

[else]

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 138

ステートマシン図の構成要素(6)

履歴状態指示子– コンポジット状態から、別の状態に遷移する際に、コンポジット状態に

含まれるサブ状態を記憶させたい場合に用いる。

– 履歴状態指示子を使用すると、コンポジット状態の戻ったときに、記憶していたサブ状態から遷移が開始される。

コンポジット状態

状態 状態

状態

履歴状態指示子

69

Page 70: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 139

ステートマシン図の構成要素(7)

同期バー

– 状態遷移における並行状態の開始と終了を表現する。

– 並行状態中には、開始状態と終了状態を省略できる。

同期バー 同期バー

並行状態

状態 状態

状態 状態

状態 状態

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 140

ステートマシン図の構成要素(8)

要素 名称 意味

状態 ある時点のオブジェクトの様子を表す。

イベント オブジェクトの状態が変化するきっかけを表す。

開始状態 オブジェクトの状態遷移の開始位置を表す。

コンポジット状態 ある状態の中に、更に状態遷移が存在することを表す。

遷移 オブジェクトの状態が別の状態に移り変わることを表す。

終了状態 オブジェクトの状態遷移の終了位置を表す。

ガード条件 状態遷移を行う時に満たさなければいけない条件を表す。

並行状態コンポジット状態内に複数の状態遷移が存在し、それらが並行に遷移することを表す。

状態A 状態Bイベント

状態A 状態B

イベント名[ガード条件]

スーパー状態

サブ状態A サブ状態B

スーパー状態

サブ状態A1 サブ状態B1

サブ状態A2 サブ状態B2

状態名

状態名entry / アクティビティ 1do / アクティビティ 2exit / アクティビティ 3

70

Page 71: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 141

ステートマシン図(確認問題)

以下の説明文を読んで、モデル内のA~Eにあてはまるものを選択候補から選び、ステートマシン図を作成しなさい。

– 目覚まし時計は、時間がセットされていると、その解除が行われるまで、セットされた時間に毎回アラームを鳴らします。

A B C

Dセット時間

E

アラーム解除

選択候補

・セット解除・セットなし・セット・セットあり・アラーム中

Copyright © 2011 Technologic Arts Inc. All rights Reserved.

UML for RTM

RTコンポーネント図

142

71

Page 72: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved.

Pattern Weaver for RTMの操作

143

Copyright © 2011 Technologic Arts Inc. All rights Reserved.

Pattern Weaver for RTMの操作

144

72

Page 73: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved.

Pattern Weaver for RTMの操作

145

Copyright © 2011 Technologic Arts Inc. All rights Reserved.

Pattern Weaver for RTMの操作

146

73

Page 74: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved.

Pattern Weaver for RTMの操作

147

Copyright © 2011 Technologic Arts Inc. All rights Reserved.

Pattern Weaver for RTMの操作

148

74

Page 75: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved.

Pattern Weaver for RTMの操作

149

Copyright © 2011 Technologic Arts Inc. All rights Reserved.

Pattern Weaver for RTMの操作

150

75

Page 76: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 151

4.ROBOLAB

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 152

ROBOLABの紹介

ROBOLAB

- LEGO Mindstorms for School 用計測制御開発ツール

- LabVIEWをベースに開発(安定性と高度機能の実現)

- シンプルな計測、制御プログラムの開発から視覚認識、ネット経由での計測、制御など高度なプログラムまで対応

- 開発元: ナショナルインスツルメント社(米国)タフツ大学(米国)LEGO Educational Division(デンマーク)

76

Page 77: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 153

LEGO Mindstorms for School- MIT Media Labにおけ

るプログラマブルブリックプロジェクトでの研究成果をもとに開発。

- NXT(コントロールユニット)、各種センサー、出力装置(モーター、ランプなど)により構成。レゴブロック部品との組み合わせにより多様なロボット製作が短時間で可能。

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 154

ROBOLAB

ROBOLAB(ロボラボ)

NXT用計測制御プログラム

開発環境

ビジュアルプログラミングに

より直感的にプログラム作成が可能

短期間に学習ができ、高度

なロボット用プログラムの開発が効率的にできる

77

Page 78: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 155

NXTと主な入出力装置

サーボモータ

超音波センサ光センサ

サウンドセンサ

タッチセンサ

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 156

NXTファームウェアの設定

①スタート画面にて「アドミニストレータ」を選択

②NXTの電源ON,USBケーブル接続

③「ファームウェアのダウンロード」を選択

④ダウンロード開始の表示.「OK」を選択

⑤ダウンロード中の表示

⑥ダウンロード完了

※ダウンロード後,

自動的にNXTが再起動されます

※通信失敗時の画面

78

Page 79: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 157

ロボラボプログラミング入門①スタート画面にて「プログラマ」を選択

②「インベンタ」欄

レベル:「Inventor4」をダブルクリック

③ 新規プログラミング画面を表示

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 158

ロボラボプログラミング入門

Tool Palette

部品アイコンの選択,移動

カーソルの種類と切り替え

部品アイコン間の接続

テキストボックスの配置,文字編集

オブジェクトの操作

※カーソル切り替え:「Tab」キー

オブジェクトの削除削除対象のオブジェクトを選択し,「Delete」 or 「BackSpace」

79

Page 80: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 159

ロボラボプログラミング入門サンプルプログラムの作成 1 (一定時間モータを回転)

①カーソルを「部品アイコンの選択,移動」に切り替え,

[モータA順回転]

[モータC順回転]

[4秒待つ]([待つ]の中)

[全ての出力を停止]

を配置する

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 160

ロボラボプログラミング入門

③画面左上の矢印を選択し,NXTへプログラムを転送します

※プログラムの転送に成功すると,

左図のような画面が表示されます

④NXT本体にて,[My Files]→[Software files]→[rbl]→[rbl Run]を選択

※上記を選択後,左右両輪が約4秒間回転します

②カーソルを「部品アイコン間の接続」に切り替え,[開始],[終了]と各アイコン間を接続する

※プログラムの作成に成功すると,

画面左上の矢印がアクティブになります

80

Page 81: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 161

ロボラボプログラミング入門サンプルプログラムの作成 2 (モータ,パワーを指定して回転)

①カーソルを「オブジェクトの操作」に切り替え,1で作成したプログラムから,

[モータA順回転]

[モータC順回転]

を削除する

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 162

ロボラボプログラミング入門②カーソルを「部品アイコンの選択,移動」に切り替え,

[モータ順回転]

[出力A]

[出力C]

[パワーレベル2]

を配置する

③カーソルを「部品アイコン間の接続」に切り替え,各アイコン間を接続する

※NTXへプログラムを転送し,実行

81

Page 82: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 163

5.組み込みUMLの例題

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 164

ターゲット環境の確認

ターゲット環境(図)

OS– Windows

開発ツール

– VC++ or VB

デバイス制御ライブラリ

– USBit API• 前進、後退、右、左

(注)USBitとは小さなラジコンカーをパソコンでコントロールできる送信装置の組み立てキット(写真基版)。ビットチャーG(写真車)は小さなラジコンカーです。ROBOLABと同じよう類のものですが、動作が単純です。

82

Page 83: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 165

概要整理

USBit APIUSB

カー操作

前進後退右左

ビットチャ-G

指令を送信(無線)

通常は、リモコン。PCからプログラミングして、動作させるようにUSBitを使用する。

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 166

システムの仕様

コースデータを読み込む

コースを解析する

ビットチャーGに指示を送る

コースデータ

カー制御アプリケーション

ビットチャーG

83

Page 84: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 167

機能概要

ユースケース図

車に指示を送る

コースデータを解析する

コース走行

オペレータ

車を操作する

コースデータを読み込む

ビットチャーG

<<include>>

<<include>>

<<include>>

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 168

機能詳細

ユースケース記述

ユースケースの名前 コースデータを読み込む

ユースケース番号

作成者 長瀬 嘉秀

作成日 2010.7.7

修正日

ユースケースの目的コースデータを読み込んでくる。コースデータオブジェクトを作成する。

スコープ

レベル

事前条件

正常終了の条件

異常終了の条件

基本アクター

関係するアクター

開始トリガー

基本手順1.コースデータファイルをオープンする。2.コースデータファイルからデータを読み込む。3.コースデータオブジェクトを編集して、戻す。

代替手順

分岐アクション

関連情報 コースデータを読み込む

優先度

時間予測

頻度予測

アクターとの通信手段

解決すべき課題

完成時期

その他の管理情報

親ユースケース

サブユースケース

84

Page 85: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 169

制御のフロー

シーケンス図

アプリケーション コースデータ コース解析 車制御 USBit API

1 : 読み込み( )

2 : コースデータを解析する(コースデータ):コース解析結果

3 : 車を制御する( )

4 : 前進、後退、左,右

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 170

テストシナリオの作成

四角形(コースデータ)を描いて走行をし、元の場所に戻ってくる。

ただし、コースデータは事前に読み込ませる。

ビットチャーG

開始点

85

Page 86: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 171

オブジェクトの洗い出し

オブジェクトを用いて、オブジェクトを整理していく

アプリケーション

コースデータ コース解析

車制御 USBit API

1.読み込み

2.コースデータを分析する(コースデータ):コース分析結果

3.車を制御する()

3.1 前進、後退、左、右

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 172

静的構造の確定

クラス図の作成

オブジェクトを抽象化する

86

Page 87: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 173

静的構造

クラス図

車操作

コースデータ

+ 読み込む ()

コース解析

+ コースを解析する (コース : コースデータ)

車制御

+ 車を制御する (コマンド : 制御コマンド)

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 174

アーキテクチャ

コースデータはファイルシステム上にあるテキストファイルで、ストリームで読み込む。フォーマットはベクトル形式

データの読み込みから、解析、指示送信の実行は、マルチ処理でなく、順次行う。シングルスレッド。

87

Page 88: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 175

プログラム設計

CarOperation

CourseData

- pfile : FILE- direction : int[100]- dataNumber : int

+ readData ()+ getDirection ()+ nextDirection ()

CourceAnalysis

+ analyze (cd : CourseData)

CarControl

+ showCommand ()

+ showCommand () + showCommand () + showCommand () + showCommand ()

CarControlBackCarControlForward CarControlLeft CarControlRight

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 176

6.演習課題

88

Page 89: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 177

UMLの練習(1)

シンプルな扇風機を考えてみる

– 「強弱ボタン」を押すたびに「強風」と「弱風」が切り替わる

– ファンを回すモーターは「高速」か「低速」が指定できる

– モーターは一度指示すると回転数を維持する

– 電源投入時は強風とし、電源ボタンは考慮しない

設計する

– 操作や機能、制御に関する動詞を関係づける

– 必要なクラスや関連が何かを検討する

機能についての動詞 制御についての動詞

1 強風にする (モーターを)高速にする

2 弱風にする (モーターを)低速にする

操作についての動詞 機能についての動詞

3 (強弱ボタンを)押す 強弱を切り換える

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 178

UMLの練習(2)

クラス図とステートマシン図を作成

– 前ページの整理結果を利用

強風中

entry / 強風にする

弱風中

entry /

強弱を切り換える

強弱ボタン

押す ()

送風調整

強風にする ()

モータ制御

低速にする ()

指示を出す

送風調整クラスのステートマシン図

「シンプルな扇風機」のクラス図

89

Page 90: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 179

ライントレーサー1号

黒い線が引いてあるコースを走り、黒い線からはずれたら進行方向を修正してコースに戻る車を作成する

ライントレーサー1号

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 180

ライントレーサー1号

光センサーを使った「ライントレーサー」を作る

– 黒い線が引いてあるコースを走り、黒い線からはずれたら進行方向を修正してコースに戻って走行を続ける車

実現したい機能

– 前進する

– 進行方向を変える

– コースに沿っているか沿っていないかを判断する

– コースから外れたら進行方向を変える

制御するデバイスを把握する

– MindStormsが提供しているデバイスをROBOLABを通して「利用する」

90

Page 91: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 181

制御するデバイスの把握

– MindStormsが提供しているデバイスをROBOLABを通して「利用する」

モーター

– NXTの出力ポートAを左モーターに、Cを右モーターに使う

– 出力レベル1~5で回転速度を制御する

– 回転の方向を制御する

• AとCはともに時計回り(正転とする)させると前進、Cを反転させると右回転(転進)するように接続してある

光センサー

– NXTの入力ポート1を使う

– 「明るい・暗い」を0~100で表わす

– 標準は55より大きいと明るい(閾値)

– コースの明るさに合わせて調整する

ライントレーサー1号

モーター光センサー

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 182

モデルの作成

機能と制御を考える

– 機能を示す動詞と、制御に関する動詞を関係づけてみる

– 必要になるクラスや関連は何か?

機能に関する動詞 制御に関する動詞

1 前進する Aのモーターを前進方向へ回転する

Cのモーターを前進方向へ回転する

2 方向を変える Cのモーターを転進方向へ回転する

3 コースに沿っている(ラインを捕捉している)

光センサーの値が閾値以下(暗い)を示している

4 コースから外れている 光センサーの値が閾値より高い(明るい)を示している

5 コースから外れたら進行方向を変える

(ラインを探索している)

光センサーの値が閾値より低くなるまで、方向を変える(2の動作を維持する)

91

Page 92: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 183

実装環境の適用

開発環境に合わせて、設計情報からプログラムを作成する。

:クラス1 :クラス2

AB

CD

実装環境へのマッピング(プログラミング言語に設計情報を変換する)

A B C D

Copyright © 2011 Technologic Arts Inc. All rights Reserved.

演習1

ライントレーサー1号のユースケース図を作成しなさい。

ヒント

184

ライントレーサー1号

(1)

(3)

(2)(4)

(5)

(6)

<<include>>

<<include>>ユーザ

92

Page 93: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved.

演習2

ライントレーサー1号のクラス図を作成しなさい。

ヒント

185

走行制御

+ ライントレースを開始する ()

(5)

+ (10) (パワー)

+ (11) (パワー)

- (8)

- (9)

+ 光センサ出力値を取得する (): (7)

(4)- (7)

(6)- (8)

- (9)

+ (10) (パワー)

Copyright © 2011 Technologic Arts Inc. All rights Reserved.

演習3

ライントレーサー1号のシーケンス図を作成しなさい。

ヒント

186

:(4) 走行制御

:ユーザ

:(5) :(6)

1:ライントレースを開始する ()

2:(10 ) (パワー)

3:(10 ) (パワー)

seq

loop

alt

4:光センサ出力値を取得する()

5:光センサ出力値 = 光センサ出力値を取得する()

[(7)≧閾値]

[else]

6:(11)(パワー)

7:(10)(パワー)

93

Page 94: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved.

演習4

ロボラボを使って、プログラムを作成し、実際に動かしなさい。

187

ロボラボで新しく使うコマンド・ジャンプ・着地・光センサ分岐・分岐合流

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 188

ロボラボコマンド

個別出力

指定モーター順回転:RCXの指定ポートに接続されたモータ を

大パワーで順回転させます.

指定モーター逆回転:RCXの指定ポートに接続されたモータ を

大パワーで逆回転させます.

一般出力

モーター順回転:モータ を順回転させます.

モディファイヤを使って対象モータと,パワーを指定することができます.

モーター逆回転:モータ を逆回転させます.

モディファイヤを使って対象モータと,パワーを指定することができます.

開始/終了

全ての出力を停止:RCXの全てのポートへの出力を停止します.

94

Page 95: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 189

ロボラボコマンド

出力:ワイヤ接続することで,出力ポートを指定することができます.

モディファイヤ

パワーレベル:ワイヤ接続することで,パワーレベルを指定することができます.

数値定数:ワイヤ接続することで,センサーやタイマーに定数を設定できます.

待つ

暗くなるまで待つ:指定した数より光センサーの読取り値が暗くなるまで待ちます.

明るくなるまで待つ:指定した数より光センサーの読取り値が明るくなるまで待ちます.

入力:ワイヤ接続することで,入力ポートを指定することができます.

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 190

ロボラボコマンド

ジャンプと着地

ジャンプ:指定した場所にプログラムをジャンプさせます.

着地:ジャンプコマンドの行き先を指定します.

分岐

分岐合流:2つに分岐した流れを1つに合流させます.分岐をした場合は必ずこのコマンドを使用する必要があります.

光センサー分岐:光センサー値によって,プログラムの流れを分岐します.指定数より大きい場合は上方の流れ、小さい場合は下方の流れに分岐します.

タッチセンサー分岐:タッチセンサーの状態によって,プログラムの流れを分岐します.

距離センサー分岐:距離センサー値によって,プログラムの流れを分岐します.指定数より大きい場合は上方の流れ、小さい場合は下方の流れに分岐します.

音センサー分岐:音センサー値によって,プログラムの流れを分岐します.

95

Page 96: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 191

ロボラボコマンド

イベント

タッチセンサイベント設定:タッチセンサが押された時のイベントを設定します.

イベントのモニタリング開始:対応するイベントのモニタリングを開始します.

イベント行き先:イベントが発生した時のプログラムの行き先を指定します.

距離減少イベント設定:距離センサの計測値が一定値以下になった時のイベントを設定します.

Copyright © 2011 Technologic Arts Inc. All rights Reserved.

イベントの使い方

192

イベント:ストラクチャ → イベントキー:モディファイア → イベントモディファイア

NXTイベントの設定(例:タッチセンサーが

押されるイベント)

ポート指定1 or 2 or 3

イベント(例:赤イベント)

イベントの値(例:赤イベントの値)

設定イベントのモニタリングを開始

イベント着地

モニタリング中

モニタリング中に設定されたイベントが発生するとイベント着地に飛ぶ

イベントとその値は同じ色を指定する

96

Page 97: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 193

ライントレーサー2号

走行中、障害物に衝突したら止まる機能を追加する

ライントレーサー2号

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 194

ライントレーサー2号

走行中に、障害物に衝突したら止まる機能を追加する

– タッチセンサーを使用する

実現したい機能

– 障害物に衝突したことを検知する

– ロボットの走行を停止する

設計

– 機能を示す動詞と、制御に関する動詞を関係づける

– 必要なクラスや関連は何か?

機能に関する動詞 制御に関する動詞

1 障害物に衝突する タッチセンサーが押された

2 走行をやめる モーターを停止する

タッチセンサー

97

Page 98: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved.

演習5

ライントレーサー2号のプログラムをロボラボで作成し、実際に動かしなさい。

195

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 196

ライントレーサー3号

走行中、障害物を前方に感知したら止まる機能を追加する

ライントレーサー3号

98

Page 99: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 197

ライントレーサー3号

走行中に、障害物を前方に感知したら止まる機能を追加する

• タッチセンサーを使用する

実現したい機能

• 障害物を感知したことを検知する

• ロボットの走行を停止する

設計

• 機能を示す動詞と、制御に関する動詞を関係づける

• 必要なクラスや関連は何か?

機能に関する動詞 制御に関する動詞

1 障害物を感知した 超音波センサーが感知した

2 走行をやめる モーターを停止する

超音波センサー

Copyright © 2011 Technologic Arts Inc. All rights Reserved.

演習6

ライントレーサー3号のユースケース図を作成しなさい。

ヒント

198

ライントレーサー3号

(1)

(3)

(2)

(12)

(4)

(6)

<<include>>

<<include>>

ユーザ

(5)

(13)

<<include>>

99

Page 100: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved.

演習7

ライントレーサー3号のクラス図を作成しなさい。

ヒント

199

走行制御

+ ライントレースを開始する ()

+ 光センサ出力値を取得する (): (7)

(4)- (7)

+ 超音波センサ出力値を取得する (): (14)

(12)- (14)

(5)

+ (10) (パワー)+ (11) (パワー)

- (8)- (9)

+ (15) ()

(6)- (8)- (9)

+ (10) (パワー)+ (15) ()

Copyright © 2011 Technologic Arts Inc. All rights Reserved.

演習8ライントレーサー3号のシーケンス図を作成しなさい。

200

:(4) 走行制御

:ユーザ

:(5) :(6)

1:ライントレースを開始する ()

2:(10 ) (パワー)

3:(10 ) (パワー)

seq

loop

alt

4:光センサ出力値を取得する()

5:光センサ出力値 = 光センサ出力値を取得する()

[(7)≧閾値]

[else]

10:(11)(パワー)

11:(10)(パワー)

:(12)

opt [(14)≦ 5cm]

9:(15)()

8:(15)()

6:超音波センサ出力値を取得する()

7:超音波センサ出力値 = 超音波センサ出力値を取得する()

100

Page 101: 組み込みエンジニアのための UMLモデリング入 …クラスの構成 z

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 201

「本セミナーの目標」の確認

1. ロボットを動かすために必要な知識を得る

2. UMLによる設計に関する知識を得る

3. ロボットの動作を設計する

4. UMLによる設計からプログラムを作り、ロボットを実際に

動かすまでの一連の流れを体験する

Copyright © 2011 Technologic Arts Inc. All rights Reserved. 202

まとめ

ロボットの制御とモデリング– 制御と機能: 装置を制御するときの二つの側面

– モデリング: 解決したい問題に注目して整理する方法

UMLのメリット

– 標準化された図を使う、見通しのよさ

– オブジェクト指向と相性がよい

モデリングとプログラム– 動作は図をつかってモデリングを行う

– 図に表したモデルを基にプログラムを作る

– 実際に動かして確かめる

Q&A

101