チーム FSEL 立命館大学情報理工学部 ソフトウェア基礎技術研究室 モデル班:丸山 勝久 石塚 聖啓 平井 孝 実装班:山本 哲男 筏谷 浩樹 原田 彬直
MDDロボットチャレンジ2005 主催者の皆様に感謝いたします.
モデル概要 要求モデル(2枚) 分析モデル(10枚) 設計モデル(15枚) モデル変換図(5枚) 詳細設計モデル(15枚) + 最終版クラス図(1枚) 設計モデル(15枚) 詳細設計モデル(15枚) … ユースケース図(調査システム,飛行船システム) クラス図(概念モデル) アクティビティ図(ユースケースごとに) … 非正常系の検討(タイマによる目的の切り替えと 制御不能モードの導入) クラス図(クラスの抽出,属性と操作の追加) … シーケンス図(操作ごとに) 状態図(飛行船システム,飛行モード,タイマ) 通信部分のスレッド化とデータのロック … クラスから属性への変換 シーケンス図(操作ごとに,ループ終了条件と 分岐条件の詳細化) + ソースコード(C++) JudeでJavaプログラムのテンプレートを生成 C++プログラム(*.h, *.cpp)形式に変換 操作(メソッド)の中身をシーケンス図から追加 … 座標計算アルゴリズムや通信プロトコルの実装
モデルの作成
クラス図(設計モデル)
最終版シーケンス図(自動飛行を開始する)
最終版クラス図 航法ドメイン 通信ドメイン 推進制御ドメイン
アピールポイント Model-Centric Development 追跡可能性を意識 各モデルで名前を統一 ○ モデル → ソースコード,× ソースコード → モデル 追跡可能性を意識 各モデルで名前を統一 コードは追加のみ,通信に関するユーティリティクラスの追加のみ 教育用モデル,参照モデルになることを目標 飛行船システムをできるだけ単純に表現 平行性の考慮(スレッドやデータのロックの導入,タイマの導入) パターンの適用(strategy & read-write lock) テスト容易性を考慮した要求分析 ユースケースに保守者を追加(H/W試験をシステムに取り込む) スレッドの割り当てを外部から指定できる実装 (テストドライバ,シミュレータの同時開発) 拡張性を考慮した設計 UIクラスによるコンポーネント化,継承を用いたフレームワーク化
ありがとうございます 問い合わせ mdd@fse.cs.ritsumei.ac.jp モデル公開Webページ http://www.fse.is.ritsumei.ac.jp/mdd/
クラス図(1枚) シーケンス図(15枚) ソースコード(C++) 1.JudeでJavaプログラムのテンプレートを生成 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(); stop(); クラス図(1枚) シーケンス図(15枚) 1.JudeでJavaプログラムのテンプレートを生成 2.C++プログラム(*.h, *.cpp)に形式に変換 3.操作(メソッド)の中身をシーケンス図から追加 4.座標取得アルゴリズムや通信プロトコルの実装 * 2-4は手動で実施 ソースコード(C++)