TAU/Developer - 組み込みネットUML 2.0 = UML1.4 + SDL2000 + MSC2000 + その他(OCLなど)...
Transcript of TAU/Developer - 組み込みネットUML 2.0 = UML1.4 + SDL2000 + MSC2000 + その他(OCLなど)...
1
UML2.0対応
組込み系モデリングツール
TAU/Developer
のご紹介
日本テレロジック(株)URL www.telelogic.com/jpメール [email protected] 03-5427-8900(代表)
2 © 日本テレロジック株式会社
開発の限界
システムの規模・複雑さ
開発にかかる工数
アセンブラ
マシン語
C高級言語
C++Java
UML2.0モデリング言語
現在
システムの大規模化・複雑化についていけない。。。
抽象度を向上する 新しいブレークスルー
成果物の大きさ
構造化プログラミング
オブジェクト指向
モデルベース開発TAU/Developer
コード中心の開発 ↑
コードの解析:TAU/Logiscope
TAU/Developer
2
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
4 © 日本テレロジック株式会社
TAU/Architect および Developer
特定の方法論や開発プロセス
には非依存
C++/Cフルコード生成
Javaスケルトン生成
シミュレーション機能
COM/Tclによるカスタマイズ
オンラインチェックと自動修正
任意の位置にコメント記入可
構成管理ツールとの連携(SCCI)
要件管理ツールとの連携
テレロジック社 が提供する
UML2.0 準拠統合開発環境
TAU/Developer
3
5 © 日本テレロジック株式会社
ユースケース図
シーケンス図
アクティビティ図
相互作用概観図
クラス図
コンポジットストラクチャ図
パッケージ図
コンポーネント図
配置図
状態マシン図
サポートしているダイアグラム
TAU2.3ではUML2.0の13種類のダイアグラムのうち、
以下の10種類をサポートしている
将来対応予定のダイアグラム
• コミュニケーション図
(旧:コラボレーション図)
• オブジェクト図
• タイミング図
TAU/Developer
6 © 日本テレロジック株式会社
TAU Developer のプロ
ジェクトビューから全て
の関連データにアクセス
可能!
外部ファイルと UML
モデル間をリンク
ダブルクリックで起動
TAU Developer
ペイントなど描画ツール
MS Word
MS PowerPoint
UML以外の文書の取り込み
ハイパーリンク
TAU/Developer
4
7 © 日本テレロジック株式会社
ユーザー定義のアイコン
ビットマップの利用など、アイコンをユーザー定義でもできるようになり、
モデルの視認性を向上します。
System
System
<<icon>>Terninal
<<icon>>
Netw ork
Netw ork
TAU/Developer
8 © 日本テレロジック株式会社
TAU独自の強力な編集機能
Li1. 文字を入力します
Lift2. Ctrl+スペースを押す
LiftController
3. Ctrlキーを押したまま スペースキーを押すと 次の候補が表示される
構文(Syntax)エラー
意味(Semantic)エラー
Integer myInt = 12;myint = 11;
Integer myInt ? 12;myInt = 11;
オート・コンプリート(自動補完)
オンラインチェック
PaidFivePaidFive
Tea()Tea() Coffee(Add)Coffee(Add)
MakingTeaMakingTea
FillWater()FillWater() ReturnChange()ReturnChange()
IdleIdle
: Cus tomer
: Cus tomer
: Cof f eeMachine
: Cof f eeMachine
FromUser::Coin(5)FromUser::Coin(5)
Tea ()Tea ()
refrefTeaMakingTeaMaking
<<signal>>
Tea
<<signal>>
Chai
自動修正
システム修正時の作業を
大幅に軽減!
定義箇所を変更すると、参照箇所も自動的に追従
モデルの記述段階でエラーを防止!
常時1000以上のルール
でチェック!
変更
TAU/Developer
5
9 © 日本テレロジック株式会社
カスタマイズ用APIメタモデルや各種機能へアクセスするAPIを提供
C++, Java, Visual Basic, C# などから利用できるCOM API詳細にプログラミングできるTcl API
バッチ処理にもインタラクティブにも利用可
Component Name CMdesign MakeCoffe CoffeeMachine Patrons initialize initializeKind Package UseCase Class Class Operation Operation
Location Root UserDrinks CMdesign CMdesign Controller HardwareOperations 6 1 0 0 1 2Attributes - - 2 0 - -Classes 10 0 1 1 0 0Elements 1095 50 448 2 202 65Definitions 65 1 5 1 14 5Diagrams 11 1 1 - 2 2Symbols per Diagram 13 6 5 - 26 7 Average 1 0 0 1 0 0Maximum 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 3Average Cyclomatic complexity
0,1 - 0 0 - -
0 200 400 600 800 1000 1200
initialize
MakeCoffe
MakeTea
TeaMaking
Additives
CoffeeMachine
Controller
Hardware
Patrons
CMdesign
PackageClassUseCaseOperation
カスタマイズ例:モデルのメトリックス解析
HTML およびCSV フォーマットへ出力
ユーザー定義ルールの追加
TAU/Developer
10 © 日本テレロジック株式会社
効果的なレビュー(1/2)
1.可読性
:コントローラ
:サービス1
装置A
制御回線1 制御回線2
:サービス2
サービス1回線
管理用回線
サービス2回線
動作中
フロアセンサ(階数)
現在の階数= 階数;
現在の階数= 指定階
真 偽
ドア開
モータ停止
ドア状態 = 開
停止中
動作中_1
動作中_1
動作中
• モジュール構造が一目で理解できる
• 詳細設計が理解できる
• 状態Aで取れるイベントの
種類は?
• その遷移はいくつに分岐
する?
• その遷移でどんなイベント
を送信する?
• いくつのサブシステムに
分解されている?
• どのサブシステムとどの
サブシステムがやりとり を行う?
レビューが成立する
目に見える設計成果物
TAU/Developer
6
11 © 日本テレロジック株式会社
効果的なレビュー(2/2)
2.動かすレビュー
エラーの早期発見が可能!
ブレークポイントブレークポイント
シーケンス図トレースシーケンス図トレース
ウォッチウィンドウウォッチウィンドウ
スクリプトスクリプト
などなど豊富なデバッグ機能
UMLモデルをホスト上でシミュレーション
記述物のレビューだけでは本当に動作するのかどうか分からない。。。
品質は作りこめ!
動作させる
TAU/Developer
各工程で シミュレーション
12 © 日本テレロジック株式会社
モデル検証
エラーの早期発見が可能!
インスタンスビュー
ウォッチウィンドウ
シーケンス図トレース
ステートチャート図
トレース(遷移中心)
ブレークポイント
テストシナリオ
(選択して再利用)
ブレークポイントのリスト
ステートチャート図
トレース(状態中心)
ユーザ定義のメッセージUMLモデルをホスト上でシミュレーション
UML モデルの実行をグラフィカルにトレース
豊富なコマンド群
TAU/Developer
7
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
8
15 © 日本テレロジック株式会社
生産性の向上(2/2)
2.自動化
商業用途に実績のあるコードジェネレータを採用
高品質 & 高信頼性
モデル=コード が可能
ロイヤルティーフリー
ランタイムライブラリの
ソースコード提供
alt [status=OK]alt [status=OK]
Unit_BUnit_BUnit_AUnit_A
refrefInitalizationInitalization
elseelse
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.
16 © 日本テレロジック株式会社
高レベルのダイアグラムで作成開始
ユースケース図、シーケンス図、
アーキテクチャ(コンポジットストラクチャ)図
必要なモデル要素の作成を自動化
必要とされるクラス、動作、信号、ポートなど
を自動定義
モデリング作業の 大幅スピードアップ!
アクティブ モデラーSCS:SatelliteControlSy stemSCS:SatelliteControlSy stem
GroundStation
ActuatorActuator
ProcessMessage<<usecase>>
ProcessMessage<<usecase>>
MaintainPosition<<usecase>>
MaintainPosition<<usecase>>
VerifyChecksum<<usecase>>
VerifyChecksum<<usecase>>
VerifyOriginator<<usecase>>
VerifyOriginator<<usecase>>
<<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
refrefInitalizationInitalization
elseelse
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()
GroundStationPortGroundStationPort UserEquipmentPortUserEquipmentPort
ActuatorPortActuatorPort SensorPortSensorPort
pc : Pow erController
pc : Pow erControllerActuatorPortActuatorPort
BusPortBusPort
ac : AttitudeControllerac : AttitudeController
SensorPortSensorPort
BusPortBusPort
db : DataBusdb : DataBus
DataPortDataPort
DataPortDataPort
IDataFromBus
IDataToBus
IDataFromBus
IDataToBus
IDataFromBus
IDataToBus
IDataFromBus
IDataToBus
cc : CommunicationsControllercc : CommunicationsController
GroundStationPortGroundStationPort UserEquipmentPortUserEquipmentPort
BusPortBusPort
IDataToBus
IDataFromBus
IDataToBusIDataFromBus
自動作成!
TAU/Developer
9
17 © 日本テレロジック株式会社
自動コード生成
UMLモデルからコードを自動生成
• 100%C++• スケルトンJava• 100%C
IDEとの統合
• .Net• Eclipse• Sun Java Studio、など
•クラス図
•ステートマシン図
•コンポジット構造図
TAU/Developer
18 © 日本テレロジック株式会社
リアルタイムOSへのポーティング
シングルタスク
UML以外
のOSタスク
リアルタイムOS
OSタスク生成コード
Runtime library
Process1 Process2
マルチタスク
リアルタイムOS
1UMLシステム= 1OSタスク
UML以外
のOSタスク
1UMLシステム= 複数のOSタスク
m個UMLパート = n個OSタスクへのマッピング可(m>=n)
UMLシステムを外部アプリに包含可能
OSタスク
生成コード
Process1 Process2
OSタスク
生成コード
Process3 Process4
Runtime library
Runtime library はソースコードを提供
• Embedded Linux• μiTRON4.0• VxWorks
…etc
ターゲットデバッガとのツール連携
• microVIEW-PLUS
…etc
TAU/Developer
10
19 © 日本テレロジック株式会社
分散開発への対応
日本
中国
インド
• 拠点間で成果物を共有する
• バージョンの整合性の確保分散開発に対応した構成管理ツールでUMLの成果物も一緒に管理する
成果物はUMLだけではない
• 文書
• 表
• UML以外の絵 etc.
UML専用のレポジトリ(DB)
は非効率的!
XML形式ファイルで保存 ⇒ どんな構成管理ツールでも管理可能SCCI対応により、TAU上からCheck-in/-outなどの操作が可能
TAU/Developer
20 © 日本テレロジック株式会社
トレーサビリティの確保(1/3)1.仕様書とUMLモデルのリンク
CMMなど要件管理は必須になる
要件がすべて(必要十分条件)
管理された要件を開発に利用する
開発のトリガーは要件
モデルと要件の関連要件とモデル要素にリンクをはり、モデルを要件管理下におく
UMLUMLだけでは だけでは 仕様書にならない!仕様書にならない!
要件管理ツール内の仕様書をUML開発
環境で確認できる
ドラッグアンドドロップで要件からモデルへ
リンクを作成する
TAU/Developer
11
21 © 日本テレロジック株式会社
トレーサビリティの確保(2/3)2.UMLも含めた影響分析
仕様書の変更箇所
影響する モデル要素
さらに影響するモデル
要素
変更時の影響箇所をモデルを含めて即座に把握可能!
TAU/Developer
DOORS上のUML モデルIDから、対応するTAU上のモデル
要素へジャンプ可能
22 © 日本テレロジック株式会社
トレーサビリティの確保(3/3)
3.モデルの変更管理
構成管理ツール構成管理ツール
SYNERGY/CMSYNERGY/CM
仕様書仕様書
DOORSDOORS
変更管理変更管理
ツールツール
SYNERGYSYNERGY/Change/Change
いつ、どんな理由によって、どんな変更を加えるのか
どんな変更要求に応じて、いつ、誰がどのファイルをどう変更したか
グラフィカルな比較&マージ
• 差分の容易な把握が可能
UML2.0開発環境
TAU/Developer
1つの変更要求であちこちが変わる...複雑なシステムほど万全の管理が必要!
TAU/Developer
12
23 © 日本テレロジック株式会社
世界No.1変更管理
構成管理
SYNERGY
要求分析 詳細設計
TAU Generation 2 / Developer ( UML2.0 tool )
ユーザ要求仕様書 設計仕様書 テスト仕様書
Co-sim
世界標準
要件管理
DOORS
CADなど
PDMツール他
テストスクリプト
Telelogic TAU / Tester(TTCN-3:UML Test Profile)
プロトタイピングツール(GUIなど)
ツール間 接続
TAU Generation 2 とツール連携
コード 生成
ターゲットデバッガ(ICE,RTOS)
連続系開発環境(PID制御など)
Co-simCo-sim
ツール連携