チーム fsel 立命館大学情報理工学部 ソフトウェア基礎技術研究室

11
(C) 2005 Katsuhisa Mar uyama チチチ FSEL チチチチチチチチチチチ チチチチチチチチチチチチチ チチチチ チチ チチ チチ チチ チチ チ チチチ チチ チチ チチ チチ

Upload: opa

Post on 17-Jan-2016

155 views

Category:

Documents


0 download

DESCRIPTION

チーム FSEL 立命館大学情報理工学部 ソフトウェア基礎技術研究室. モデル班:丸山 勝久 石塚 聖啓 平井 孝 実装班:山本 哲男 筏谷 浩樹 原田 彬直. MDD ロボットチャレンジ 2005 主催者の皆様に感謝いたします.. モデル概要. 要求モデル (2 枚 ). … ユースケース図(調査システム,飛行船システム). クラス図(概念モデル) アクティビティ図(ユースケースごとに) … 非正常系の検討(タイマによる目的の切り替えと 制御不能モードの導入). 分析モデル (10 枚 ). クラス図(クラスの抽出,属性と操作の追加) - PowerPoint PPT Presentation

TRANSCRIPT

(C) 2005 Katsuhisa Maruyama

チーム FSEL立命館大学情報理工学部

ソフトウェア基礎技術研究室

モデル班:丸山 勝久 石塚 聖啓 平井 孝実装班:山本 哲男 筏谷 浩樹 原田 彬直

2

(C) 2005 Katsuhisa Maruyama

MDD ロボットチャレンジ 2005 主催者の皆様に感謝いたします.

3

(C) 2005 Katsuhisa Maruyamaモデル概要

モデル変換図 (5 枚 )

要求モデル (2 枚 )

分析モデル (10 枚 )

最終版クラス図 (1 枚 )

設計モデル (15 枚 )

詳細設計モデル (15 枚 )

… ユースケース図(調査システム,飛行船システム) クラス図(概念モデル) アクティビティ図(ユースケースごとに)… 非正常系の検討(タイマによる目的の切り替えと 制御不能モードの導入)

クラス図(クラスの抽出,属性と操作の追加)… シーケンス図(操作ごとに) 状態図(飛行船システム,飛行モード,タイマ)

通信部分のスレッド化とデータのロック… クラスから属性への変換 シーケンス図(操作ごとに,ループ終了条件と 分岐条件の詳細化) +

ソースコード (C++)

Jude で Java プログラムのテンプレートを生成 C++ プログラム (*.h, *.cpp) 形式に変換 操作 ( メソッド ) の中身をシーケンス図から追加… 座標計算アルゴリズムや通信プロトコルの実装

4

(C) 2005 Katsuhisa Maruyama

モデルの作成

5

(C) 2005 Katsuhisa Maruyamaクラス図(設計モデル)

6

(C) 2005 Katsuhisa Maruyama最終版シーケンス図(自動飛行を開始する)

7

(C) 2005 Katsuhisa Maruyama

最終版クラス図

通信ドメイン

航法ドメイン

推進制御ドメイン

8

(C) 2005 Katsuhisa Maruyama

アピールポイント• Model-Centric Development ○ モデル → ソースコード, × ソースコード → モデル• 追跡可能性を意識 各モデルで名前を統一 コードは追加のみ,通信に関するユーティリティクラスの追加のみ• 教育用モデル,参照モデルになることを目標 飛行船システムをできるだけ単純に表現 平行性の考慮(スレッドやデータのロックの導入,タイマの導入) パターンの適用( strategy & read-write lock )• テスト容易性を考慮した要求分析 ユースケースに保守者を追加( H/W 試験をシステムに取り込む) スレッドの割り当てを外部から指定できる実装 ( テストドライバ,シミュレータの同時開発)• 拡張性を考慮した設計 UI クラスによるコンポーネント化,継承を用いたフレームワーク化

9

(C) 2005 Katsuhisa Maruyama

ありがとうございます

問い合わせ[email protected]

モデル公開 Web ページhttp://www.fse.is.ritsumei.ac.jp/mdd/

10

(C) 2005 Katsuhisa Maruyama

11

(C) 2005 Katsuhisa Maruyama

クラス図 (1 枚 )

ソースコード (C++)

シーケンス図 (15 枚 )

1. Jude で Java プログラムのテンプレートを生成2. C++ プログラム (*.h, *.cpp) に形式に変換3.操作 ( メソッド ) の中身をシーケンス図から追加4.座標取得アルゴリズムや通信プロトコルの実装* 2-4は手動で実施

void Blimp::startAutomaticFlight(){ controller->startAutomaticFlight(); Goal goal = plan.getFirstGoal(); controller->setGoal(goal);

bool isFinalGoal = false; while (!isFinalGoal) { bool hasArrived = false; bool passed = false;

while (!hasArrived && !passed) { flight(); showStatus(); hasArrived = controller->hasArrived(); if (!hasArrived) { passed = controller->passedBy(); } } if (hasArrived || passed) { isFinalGoal = plan.isFinalGoal();

if (!isFinalGoal) { goal = plan.getNextGoal(); controller->setGoal(goal);

}}

} stop();}