コンテキストベース・プロダクトライン開発とVDM++の適用

Slides:



Advertisements
Similar presentations
関心事指向アーキテクチャモデリング環 境 Concern-oriented Architecture Modeling Environment 九州工業大学大学院情報工学府 情報科学専攻 鵜林研究室 M1 佐藤 友紀 1.
Advertisements

メタモデル記述を用いた成果物間の依存関係追跡手法
Web アプリをユーザー毎に カスタマイズ可能にする AOP フレームワーク
表計算ソフトで動作するNEMUROの開発
リアルタイムシステムに 上流設計ツールは有効か?
OJT研修 「テスト実施、テスト設計の技術習得」 日時: 8月22日(月)  場所: 本社5階.
情報伝播によるオブジェクト指向プログラム理解支援の提案
SS2009 形式手法の適用ワーキング グループの報告
リファクタリングのための 変更波及解析を利用した テスト支援ツールの提案
ML 演習 第 7 回 新井淳也、中村宇佑、前田俊行 2011/05/31.
UML入門 UML PRESS vol.1 より 時松誠治 2003年5月19日.
ユースケース オブジェクト指向の要求分析のためのモデル。 スウェーデンのイヴァー・ヤコブソンが1990年代前半に開発。
アスペクト指向プログラミングを用いたIDSオフロード
概要 Boxed Economy Simulation Platform(BESP)とその基本構造 BESPの設計・実装におけるポイント!
チーム FSEL 立命館大学情報理工学部 ソフトウェア基礎技術研究室
第6章 連立方程式モデル ー 計量経済学 ー.
型付きアセンブリ言語を用いた安全なカーネル拡張
静的情報と動的情報を用いた プログラムスライス計算法
細かい粒度でコードの再利用を可能とするメソッド内メソッドのJava言語への導入
UMLメタモデルの変更に対応した ダイアグラム間整合性検証環境の 自動生成手法
その他の図 Chapter 7.
組込みシステムの外部環境分析のためのUMLプロファイル
オブジェクト指向プログラムにおける エイリアス解析手法の提案と実現
インラインスクリプトに対するデータフロー 解析を用いた XHTML 文書の構文検証
シーケンス図を用いて実行履歴を可視化するデバッグ環境の試作
実行時情報に基づく OSカーネルのコンフィグ最小化
組込みシステムの外部環境に 着目した動作仕様検証
アスペクト指向に基づく 拡張可能な MDAモデルコンパイラ
社会シミュレーションのための モデル作成環境
プログラム動作理解支援を目的とした オブジェクトの振舞いの同値分割手法
横断的関心事に対応したオブジェクト指向言語GluonJとその織り込み関係の可視化ツール
ソフトウェア設計検証 研究室の紹介 知能情報学部 准教授 新田直也.
オープンソース開発支援のための ソースコード及びメールの履歴対応表示システム
UMLモデルを対象とした リファクタリング候補検出の試み
コードクローン検出に基づくデザイン パターン適用支援手法の提案と実現
All Rights Reserved, Copyright © 2004, Kobayashi
シナリオのアニメーション表示による 妥当性確認支援
シナリオを用いたレビュー手法PBRの追証実験 - UMLで記述された設計仕様書を対象として -
コードクローン分類の詳細化に基づく 集約パターンの提案と評価
UMLの概要とオブジェクト指向の基本概念
プログラムの織り込み関係を可視化するアウトラインビューの提案と実装
コーディングパターンの あいまい検索の提案と実装
JAVAバイトコードにおける データ依存解析手法の提案と実装
拡張可能なアスペクト指向モデリングにおける織り合わせの検証
JavaScriptを含んだHTML文書に対する データフロー解析を用いた構文検証手法の提案
INTRODUCTION TO SOFTWARE ENGINEERING
オブジェクトの協調動作を用いた オブジェクト指向プログラム実行履歴分割手法
ソフトウェア工学 知能情報学部 新田直也.
All Rights Reserved, Copyright © 2004, Kobayashi
設計情報の再利用を目的とした UML図の自動推薦ツール
保守請負時を対象とした 労力見積のためのメトリクスの提案
dcNavi:デバッグ支援のための グラフベース推薦システム
様々なAOPメカニズムをモデル化する パラメータ化インタプリタ
プログラムの差分記述を 容易に行うための レイヤー機構付きIDEの提案
クローン検出ツールを用いた ソフトウェアシステムの類似度調査
オープンソースソフトウェアに対する コーディングパターン分析の適用
メソッドの同時更新履歴を用いたクラスの機能別分類法
ディペンダブル組込みシステムのためのコンテキスト分析手法
GSTOS コマンド計画検証ソフトウェアの開発
欠陥検出を目的とした類似コード検索法 吉田則裕,石尾隆,松下誠,井上克郎 大阪大学 大学院情報科学研究科
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
プログラムの一時停止時に 将来の実行情報を提供するデバッガ
コードクローン解析に基づく デザインパターン適用候補の検出手法
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
オブジェクト指向メトリクスを用いた 開発支援に関する研究 --- VC++とMFCを用いた開発を対象として ---
プログラム理解のための 付加注釈 DocumentTag の提案
GluonJ を用いたビジネスロジックからのデータベースアクセスの分離
1.2 言語処理の諸観点 (1)言語処理の利用分野
Presentation transcript:

コンテキストベース・プロダクトライン開発とVDM++の適用 SES2006 コンテキストベース・プロダクトライン開発とVDM++の適用 鵜林 尚靖 (九州工業大学) 金川 太俊 (九州工業大学) 瀬戸 敏喜 (九州工業大学) 中島 震 (国立情報学研究所) 平山 雅之 (SEC) 2006年10月20日

発表内容 研究の背景と目的 コンテキストを考慮したプロダクトライン VDM++による仕様記述と妥当性確認 考察と関連研究 まとめ

1.研究の背景と目的

組込みシステムの特徴 コンテキストの存在: 組込みシステムはハードウェアを通じて外部環境に影響を及ぼす。また同時に、組込みシステムは外部環境からも影響を受ける。 プロダクトライン型の開発: あるプロダクトファミリで共通に利用可能なアーキテクチャやコンポーネント群を資産としてあらかじめ用意し、個々のプロダクトは資産を合成して開発する。

現状の課題 -電気ポットを例に ポット内の水を沸騰させる ヒータのOn/Offによって水温を制御する 現状の課題 -電気ポットを例に サーミスタ 水 水位センサー ヒータ ポット内の水を沸騰させる ヒータのOn/Offによって水温を制御する 水温が100度に達すると、保温状態に移行する 水位センサーにより水量を観測する

プロダクトラインに基づいた 仕様策定プロセスの典型例 ステップ1 フィーチャ分析 ステップ2 SW仕様策定 電気ポット Boil: () ==> () Boil() == while thermistor.GetTemperature() <= 100.0 do heater.On(); SW HW コントローラ ヒータ サーミスタ 水位 センサー 水位 メータ SW仕様は正しい? 必須フィーチャ オプション・フィーチャ

実は、仕様が正しいかどうかは相対的  コンテキストに依存 実は、仕様が正しいかどうかは相対的   コンテキストに依存 このSW仕様は「通常気圧(1気圧)の環境下で水を沸騰させる」場合には正しい仕様である。 しかし、想定しているコンテキストが変更になると、SW仕様が仮定するコンテキストと実際のコンテキストとの間にズレが生じ、最終的なシステム上の欠陥につながる。 例: 「低気圧(1気圧未満) の環境下で水を沸騰させる」場合(気圧の低い山頂での利用など)

現状の課題 仕様の再利用性が低い: 特定のコンテキストを仮定し、そのためのロジックを決めてしまうことが多く、仕様を再利用することが難しい。 システムの保守・発展がアドホック的: 想定するコンテキストが変わるたびに仕様を見直すが、その対応が場当たり的。 仕様の妥当性確認が困難: 上記2点の結果として、システムとコンテキストの間に生じる不整合や欠陥を見落とす可能性が高くなる。

本研究のアプローチ プロダクトラインをシステムラインとコンテキストラインに分け、各々フィーチャ分析を行う。 システムラインを構成するハードウェアおよびソフトウェア仕様、コンテキストラインを構成するコンテキスト仕様が資産になる。 仕様記述に形式手法(今回はVDM++)を適用する。妥当性確認はVDM++のテスト実行により行う。

2.コンテキストを考慮したプロダクトライン

プロダクトラインの構成 システムの フィーチャ分析 コンテキストの フィーチャ分析 電気ポット 現実世界 気圧 液体 SW HW コントローラ ヒータ サーミスタ 水位 センサー 水位 メータ 高い 通常 低い 水 ミルク 必須フィーチャ オプション・フィーチャ 相互排他的フィーチャ

プロダクトライン開発の手順 コア資産 管理 プロダクト 開発プロセス プロセス 開発プロセス コンテキスト資産の開発:  コンテキストのフィーチャ分析、仕様資産の開発を行う システム資産の開発: ハードウェアとソフトウェアのフィーチャ分析、仕様資産の開発を行う 想定コンテキストの定義:  コンテキスト資産群からプロダクトが想定する仕様資産を選択する プロダクト構成の定義:  システム資産群からプロダクトを構成する仕様資産を選択する 仕様の妥当性確認:  ハードウェア、ソフトウェア、コンテキストの各仕様を組み合わせた結果に不整合がないか否かを確かめる VDM++ による テスト実行

3.VDM++による仕様記述と妥当性確認

VDM++と支援ツール VDM++はVDM-SL (The Vienna Development Method – Specification Language)のオブジェクト指向拡張。 厳密なモデル化を目的とした仕様記述言語。 VDM++ Toolbox: VDM++のための開発環境。仕様の構文・型チェック、証明課題生成、インタープリタ等の機能をもつ。

VDM++仕様の プロダクトラインへの割当て 電気ポット (USER-test.vpp) システムの フィーチャ分析 コンテキストの フィーチャ分析 SW HW 現実世界 (REALWORLD.vpp) コントローラ (SYSTEM-SW -controller.vpp) ヒータ (SYSTEM -HW -heater.vpp) サーミスタ (SYSTEM -HW -thermistor.vpp) 水位センサ (SYSTEM -HW -liquid -level -sensor.vpp) 気圧 (CONTEXT-atmospheric -air-pressureplace.vpp) 液体 (CONTEXT-liquid.vpp) 高い 通常 低い 水 ミルク (CONTEXT-atmospheric-air-pressureplace-high.vpp CONTEXT-atmospheric-air-pressureplace-normal.vpp CONTEXT-atmospheric-air-pressureplace-low.vpp) (CONTEXT-liquid-water.vpp)

VDM++による仕様記述

プロダクトラインからの構成要素の選択 電気ポット システムの フィーチャ分析 コンテキストの フィーチャ分析 SW HW 現実世界 (USER-test.vpp) システムの フィーチャ分析 コンテキストの フィーチャ分析 SW HW 現実世界 (REALWORLD.vpp) コントローラ (SYSTEM-SW -controller.vpp) ヒータ (SYSTEM -HW -heater.vpp) サーミスタ (SYSTEM -HW -thermistor.vpp) 水位センサ (SYSTEM -HW -liquid -level -sensor.vpp) 気圧 (CONTEXT-atmospheric -air-pressureplace.vpp) 液体 (CONTEXT-liquid.vpp) 高い 通常 低い 水 ミルク (CONTEXT-atmospheric-air-pressureplace-high.vpp CONTEXT-atmospheric-air-pressureplace-normal.vpp CONTEXT-atmospheric-air-pressureplace-low.vpp) (CONTEXT-liquid-water.vpp)

仕様の妥当性確認 電気ポットの仕様の妥当性をVDM++インタプリタのテスト実行により確認する コンテキスト仕様A システム 仕様 コンテキスト仕様A 通常気圧(1気圧)の環境下で水を沸騰 CONTEXT-atmospheric-air-pressureplace-normalと CONTEXT-liquid-waterが選択 コンテキスト仕様B 低気圧(1 気圧未満) の環境下で水を沸騰 CONTEXT-atmospheric-air-pressureplace-lowとCONTEXT-liquid-water

システム仕様 SYSTEM-SW-controller.vpp ポット中の水が無くなる ことがないことを 制約条件とする class Software instance variables heater : Heater; thermistor : Thermistor; liquid_level_sensor : LiquidLevelSensor; operations public Setup: RealWorld ==> () Setup(realworld) == (heater := new Heater(); heater.Setup(realworld); thermistor := new Thermistor(); thermistor.Setup(realworld); liquid_level_sensor := new LiquidLevelSensor(); liquid_level_sensor.Setup(realworld); ); public Boil: () ==> () Boil() == while thermistor.GetTemperature() <= 100.0 and liquid_level_sensor.IsOn() = true do heater.On() pre liquid_level_sensor.IsOn() = true post liquid_level_sensor.IsOn() = true; end Software ポット中の水が無くなる ことがないことを 制約条件とする

テスト実行結果(コンテキストA) 正常

テスト実行結果(コンテキストB) 事後条件違反 (沸騰し続け、水がなくなる)

妥当性確認後の対応 システムとしてどのような仕様にすべきか(ハードウェアを追加すべきか、或いはソフトウェアで頑張るべきか)、その妥当性を調べることが可能となる。 コンテキストBに対応するには、沸点(気圧により変化)に応じた加温操作が必要となるため、気圧センサーが必須となる。 上流段階で、仕様の妥当性、仕様策定の戦略が明確になる

4.考察と関連研究

開発プロセスのあり方 UMLモデルをVDM++モデルに変換する VDM++モデルに、事前条件、事後条件、不変条件を追加し、仕様を厳密化する。 テスト実行による仕様の妥当性を確認する。 VDM++モデルをJavaコードに変換する。その際、事前条件、事後条件、不変条件をJMLに変換する ESC/Java2等のJMLツールを用いて、事前条件、事後条件、不変条件を検証する。これにより、VDM++モデルがJavaコードに正確に洗練(Refinement)されているかが検証される。 モデリング 事前条件・事後条件・不変条件 実装

陽関数と陰関数 仕様を陽関数として記述するとインタプリタによるテスト実行が可能になるが、その反面、仕様と実装の差異が曖昧になる。 仕様記述という意味では陰関数を用いる方が望ましいが、逆にテスト実行できないため妥当性を確認するのが難しくなる。この場合、証明支援ツールを用いて仕様を検証する必要がある。

陽関数と陰関数(我々の見解) 仕様記述において重要なのは不変条件などの制約条件を特定化すること。 一般に不変条件は抽出するのが難しく、テスト実行しながら見つけていくことは有効。そのため、本研究では仕様を陽関数で記述する方式を採用。 しかし、制約条件を洗い出し、その妥当性を確認した後は関数本体は必ずしも必要でない。VDM++によるモデル化は制約条件を洗い出すための工程とみなすこともできる。

アスペクト指向の導入 沸点を考慮したシステムを構築するには 横断的関心事 AspectVDM

関連研究 問題フレーム[M.Jackson, 2001]: 機械(システム)と現実世界(コンテキスト)の関連をモデル化。 KobrA[Atkinson et al., 2001]: プロダクトライン開発手法の一つ。KobrA のコンテキストはシステム対象内の問題領域をシステム外と同時に捉える。 ESIM法[三瀬 他, 2005]: 非正常系の分析。 外部環境分析法[鷲見 他, 2005]: 外部環境分析の手順化。

関連研究(形式手法) Feature Algebra [P.Hofner, et al. FM’06]

5.まとめ

まとめ 外部環境などのコンテキストを考慮した組込みシステムの仕様記述とその妥当性確認方法をプロダクトライン開発の観点から提案した。 通常のビジネスシステムに対しても本手法は適用可能。 安全、安心なシステム構築にはコンテキストの視点が今後ますます重要になってくる。