UML2.0
対応
組込み系モデリングツール
TAU/Developer
のご紹介
日本テレロジック(株)
URL
www.telelogic.com/jp
メール
[email protected]
Tel 03-5427-8900(代表)
2
© 日本テレロジック株式会社
開発の限界
システムの規模・複雑さ
開
発
に
か
か
る
工
数
アセンブラ
マシン語
C
高級言語
C++
Java
UML2.0
モデリング言語
現在
システムの大規模化・複雑化
についていけない。。。
抽象度を向上する
新しいブレークスルー
成
果
物
の
大
き
さ
構造化プログラミング
オブジェクト指向
モデルベース開発
TAU/Developer
コード中心の開発
↑
コードの解析:
TAU/Logiscope
TAU/Developer
3
© 日本テレロジック株式会社
UML 2.0 とは?
UML 2.0 は、システムの仕様作成、設計、文書化に適した UML (Unified
Modeling Language) の重要なバージョンアップである。
UML 2.0 = UML1.4 + SDL2000 + MSC2000
+ その他(OCLなど)
実行可能なモデルの構築と動作の詳細な記述に対するサポート
ツール間でのダイアグラムのデータ交換が可能
(XMI)
UML2.0:SDLの採用でモデルベース開発が現実的に!
※ UML言語そのものは以下の4つのパートからなる
• Infrastructure
: プロファイルを作れる(標準化したものを使えばよい)
• Superstructure
: UMLの記述方法(SDLなどを追加)
• Diagram Interchange
: XMI2.0(ツールが対応すれば良い)
• OCL : OCL2.0(滅多に使われない)
TAU/Developer
TAU/Architect および Developer
特定の方法論や開発プロセス
には非依存
C++/Cフルコード生成
Javaスケルトン生成
シミュレーション機能
COM/Tclによるカスタマイズ
オンラインチェックと自動修正
任意の位置にコメント記入可
構成管理ツールとの連携
(
SCCI)
要件管理ツールとの連携
テレロジック社 が提供する
UML2.0 準拠統合開発環境
5
© 日本テレロジック株式会社
ユースケース図
シーケンス図
アクティビティ図
相互作用概観図
クラス図
コンポジットストラクチャ図
パッケージ図
コンポーネント図
配置図
状態マシン図
サポートしているダイアグラム
TAU2.3ではUML2.0の13種類のダイアグラムのうち、
以下の10種類をサポートしている
将来対応予定のダイアグラム
• コミュニケーション図
(旧:コラボレーション図)
• オブジェクト図
• タイミング図
TAU/Developer
6
© 日本テレロジック株式会社
TAU Developer のプロ
ジェクトビューから全て
の関連データにアクセス
可能!
外部ファイルと
UML
モデル間をリンク
ダブルクリックで起動
TAU Developer
ペイントなど描画ツール
MS Word
MS PowerPoint
UML以外の文書の取り込み
ハイパーリンク
TAU/Developer
7
© 日本テレロジック株式会社
ユーザー定義のアイコン
ビットマップの利用など、アイコンをユーザー定義でもできるようになり、
モデルの視認性を向上します。
System
System
<<icon>>Terninal
<<icon>>Netw ork
Netw ork
TAU/Developer
TAU独自の強力な編集機能
Li
1. 文字を入力します
Lift
2. Ctrl+スペースを押す
LiftController
3. Ctrlキーを押したまま
スペースキーを押すと
次の候補が表示される
構文(Syntax)エラー
意味(Semantic)エラー
Integer
myInt
=
12
;
myint
=
11
;
Integer
myInt
?
12
;
myInt
=
11
;
オート・コンプリート
(自動補完)
オンラインチェック
PaidFive
PaidFive
Tea
()
Tea
()
Coffee
Coffee
(
(
Add
Add
)
)
MakingTea
MakingTea
FillWater
()
FillWater
()
ReturnChange
ReturnChange
()
()
Idle
Idle
:
Cus tomer
:
Cus tomer
:
:
Cof f eeMac hine
Cof f eeMac hine
FromUs er
::
Coin
(
5
)
FromUs er
::
Coin
(
5
)
Tea
()
Tea
()
ref
ref
TeaMaking
TeaMaking
<<
signal
>>
Tea
<<
signal
>>
Chai
自動修正
システム修正
時の作業を
大幅に軽減!
定義箇所を変更
すると、参照箇所
も自動的に追従
モデルの記述段階でエラーを防止!
常時1000以上のルール
でチェック!
変更
9
© 日本テレロジック株式会社
カスタマイズ用
API
メタモデルや各種機能へアクセスする
APIを提供
z
C++, Java, Visual Basic, C# などから利用できるCOM API
z
詳細にプログラミングできる
Tcl API
バッチ処理にもインタラクティブにも利用可
Component Name
CMdesign
MakeCoffe
CoffeeMachine
Patrons
initialize
initialize
Kind
Package
UseCase
Class
Class
Operation
Operation
Location
Root
UserDrinks
CMdesign
CMdesign
Controller
Hardware
Operations
6
1
0
0
1
2
Attributes
-
-
2
0
-
-Classes
10
0
1
1
0
0
Elements
1095
50
448
2
202
65
Definitions
65
1
5
1
14
5
Diagrams
11
1
1
-
2
2
Symbols per Diagram
13
6
5
-
26
7
Average
1
0
0
1
0
0
Maximum depth of
inheritance tree
6
0
0
0
6
3
Maximum cyclomatic
complexity
16
0
0
0
9
7
Number of states
2
0
-
-
6
3
Average Cyclomatic
complexity
0,1
-
0
0
-
-0 200 400 600 800 1000 1200 initialize MakeCoffe MakeTea TeaMaking Additives CoffeeMachine Controller Hardware Patrons CMdesign Package Class UseCase Operationカスタマイズ例:モデルのメトリックス解析
z
HTML およびCSV フォーマットへ出力
z
ユーザー定義ルールの追加
TAU/Developer
10
© 日本テレロジック株式会社
効果的なレビュー(
1/2)
1.可読性
:コントローラ
:サービス1
装置A
制御回線1
制御回線2
:サービス2
サービス1回線
管理用回線
サービス2回線
動作中
フロアセンサ
(
階数
)
現在の階数
=
階数
;
現在の階数
=
指定階
真
偽
ドア開
モータ停止
ドア状態
=
開
停止中
動作中_1
動作中_1
動作中
• モジュール構造が一目で理解できる
• 詳細設計が理解できる
• 状態Aで取れるイベントの
種類は?
• その遷移はいくつに分岐
する?
• その遷移でどんなイベント
を送信する?
• いくつのサブシステムに
分解されている?
• どのサブシステムとどの
サブシステムがやりとり
を行う?
レビューが成立する
目に見える設計成果物
TAU/Developer
11
© 日本テレロジック株式会社
効果的なレビュー(
2/2)
2.動かすレビュー
エラーの早期発見が可能!
¾
¾ブレークポイント
ブレークポイント
¾
¾シーケンス図トレース
シーケンス図トレース
¾
¾ウォッチウィンドウ
ウォッチウィンドウ
¾
¾
スクリプト
スクリプト
などなど豊富なデバッグ機能
UMLモデルをホスト上でシミュレーション
記述物のレビューだけでは本当に
動作するのかどうか分からない。。。
品質は作りこめ!
動作させる
TAU/Developer
各工程で
シミュレーション
モデル検証
エラーの早期発見が可能!
インスタンスビュー
ウォッチウィンドウ
シーケンス図トレース
ステートチャート図
トレース(遷移中心)
ブレークポイント
テストシナリオ
(選択して再利用)
ブレークポイント
のリスト
ステートチャート図
トレース(状態中心)
ユーザ定義のメッセージ
UMLモデルをホスト上でシミュレーション
z
UML モデルの実行をグラフィカルにトレース
z
豊富なコマンド群
13
© 日本テレロジック株式会社
typedef struct{ unsigned char c_last_PID; int c_PID_offset; } MyType; MyType func (int Sint, MyType Param);
MyType func(int Sint, MyType Param) {
xSignalNode Timer, TempTimer; Timer = XSYSDPRS_TQ(P)->Suc[Sint]; TempTimer = Timer->Suc; if ( Timer->Sender.LocalPId->PrsP == P) { xRemoveFromQueue((void *)Timer); Param = xReleaseSignal(&Timer); } /* end if */ return (Param) ; }
外部C/C++コード
も含めてシミュレー
ション
.c
.cpp
生産性の向上(
1/2)
1.部品の再利用
.h
モデル
の流用
既存のC/C++
資産の流用
継承
一部の変更
や、部品の
追加が容易
変更部分または追加部分だけを記述
TAU/Developer
C/C++のデータ型やクラスをUMLの
クラスに、関数は演算子に変換
14
© 日本テレロジック株式会社
既存
C/C++資産との融合
class TableTree {
private:
void * item;
TableTree * next;
public:
TableTree (void);
void SetItem (void * table);
void * GetItem (void);
TableTree * AppendItem (TableTree * item);
void SetNext (TableTree * nextItem);
TableTree * GetNext (void);
};
class EventTable : public BaseTable {
private:
char transitionID [MaxLineLength];
public:
EventTable (void);
void SetTransitionID (char * newTransitionID);
char * GetTransitionID (void);
EventTable * GetPrevious (void);
EventTable * AppendItem (EventTable * item);
};
C/C++ヘッダファイル
C/C++のデータ型
やクラスをUML上
のクラスに変換
クラス間の関係も
認識される!
あるクラスの影響
の範囲を視覚的に
把握可能!
TAU/Developer
15
© 日本テレロジック株式会社
生産性の向上(
2/2)
2.自動化
商業用途に実績のあるコード
ジェネレータを採用
高品質 & 高信頼性
モデル=コード が可能
ロイヤルティーフリー
ランタイムライブラリの
ソースコード提供
alt[status=OK] alt[status=OK] Unit_B Unit_B Unit_A Unit_A ref ref Initalization Initalization else else success() success() f ailure() f ailure() MsgAck() MsgAck() NoError() NoError() Request() Request() Response() Response() 22 Ev ent1() Ev ent1() Ev ent2() Ev ent2() Method1() Method1() Reply Value() Reply Value()アクティブモデラー
必要な定義
(クラスなど)
を自動生成
検証シナリオ
のスクリプト化
• リグレッションテストの
自動化
• イベントの順番を一部
入れ替えるのが容易
コード生成
開発効率の向上!
TAU/Developer
• シーケンス図
から
• コンポジット
ストラクチャ図
から
etc.
高レベルのダイアグラムで作成開始
z
ユースケース図、シーケンス図、
アーキテクチャ(コンポジットストラクチャ)図
必要なモデル要素の作成を自動化
z
必要とされるクラス、動作、信号、ポートなど
を自動定義
モデリング作業の
大幅スピードアップ!
アクティブ モデラー
SCS:SatelliteControlSy stem SCS:SatelliteControlSy stem GroundStation Actuator Actuator ProcessMessage <<usec ase>> ProcessMessage <<usec ase>> MaintainPosition <<usecase>> MaintainPosition <<usecase>> VerifyChecksum <<usecase>> VerifyChecksum <<usecase>> VerifyOriginator <<usecas e>> VerifyOriginator <<usecas e>> <<include>> <<include>> <<include>> <<include>> ProcessCommsMessage <<usecase>> ProcessCommsMessage <<usecase>> ProcessPositionMessage <<usecase>> ProcessPositionMessage <<usecase>> <<extend>> <<extend>> <<extend>> <<extend>> UserEquipment Sensor alt[status=OK] alt[status=OK] Unit_B Unit_B Unit_A Unit_A ref ref InitalizationInitalizationelse else success() success() f ailure() f ailure() MsgAck() MsgAck() NoError() NoError() Request() Request() Response() Response() 22 Ev ent1() Ev ent1() Ev ent2() Ev ent2() Method1() Method1() Reply Value() Reply Value() GroundStationPort
GroundStationPort UserEquipmentPortUserEquipmentPort ActuatorPort
ActuatorPort SensorPortSensorPort
pc: Pow erController pc: Pow erController ActuatorPort ActuatorPort BusPort BusPort ac:AttitudeController ac:AttitudeController SensorPort SensorPort BusPort BusPort db:DataBus db:DataBus DataPort DataPort DataPort DataPort IDataFromBus IDataToBus IDataFromBus IDataToBus IDataFromBus IDataToBus IDataFromBus IDataToBus cc:CommunicationsController cc:CommunicationsController GroundStationPort GroundStationPortUserEquipmentPortUserEquipmentPort
BusPort BusPort IDataToBus IDataFromBus IDataToBus IDataFromBus