スライド 1

Riding the Design Wave II
Leveraging Software Architectures to
Guide and Verify the Development of
Sense/Compute/Control Applications
Damien Cassou, Emilie Balland, Charles Consel, and Julia Lawall
Proc. ICSE’11
pp. 431— 440, May 2011
doi: 10.1145/1985793.1985852
General terms: Design, Languages, Verification
Keywords: Generative programming, architectural conformance
2011/7/5
ICSE2011勉強会
担当者: 市井 誠
1
概要
 SCC(Sense/Compute/Control)ソフトウェア
向けのADL(アーキテクチャ記述言語)の開発
既存ADLは,アーキテクチャ記述としての抽象度と,
実装支援可能な具体性を両立できていない
 ”Interaction contract”の記法を提案

– コンポーネント間のデータフロー/制御フローの制約を記述
 既存手法で出来なかった「Aは,Bから来たデータに基づきCへ問い
合わせ,結果をDへ送る」といった記述を可能にする
– コード生成による実装支援と,アーキテクチャの検証が可能

既存ADL環境を拡張し,評価
SCCソフトウェア
sensors
sense
environment
control
actuators
2
2011/7/5
ICSE2011勉強会
Context
operators
compute
control
operators
SCCの例
 Webサーバー監視アプリケーションのADL表記

ログを監視し,不審なアクセスを管理者へメール通知
13
10
12
9
11
3
2
1
8
6
4
5 7
 直感的には自明な流れも,
1. アクセスログ追加を通知
2. ログ行から抽出したクライ
アントIPを渡す
3. IPに対応するプロファイル
を問い合わせ
4. ホスト名問い合わせ
5. 返答
6. LDAP情報問い合わせ
7. 返答
8. 返答
9. プロファイルの送信依頼
10. ログ送信
11. 侵入検知呼出し
12. 侵入通知を依頼
13. 侵入をメール通知
ADL上は,異なる解釈を許してしまう
3
2011/7/5
ICSE2011勉強会
出典: D. Cassou et al, “Leveraging Software Architectures to
Guide and Verify the Development of Sense/Compute/Control
Applications”, Proc. ICSE’11, pp. 431— 440, May 2011
Interaction Contract
 Context

operatorに関するの3つ組の記述
push元・pull先・pushの有無
Lineからpushされ,常に
pushする
AccessLogParserからpush
され,IP2Profileをpullし,
常にpushする
Pullされるのみで,ip2host
とhost2profileをpullする
 コード生成による実装支援

AccessingProfileからpullさ
れ,条件次第でpushする
記述されたインタラクションに対し,
抽象メソッドと,その呼出しコードを生成
 アーキテクチャの検証
データの到達性検証
 時相論理式の検証

– 「AccessLogReaderからlineがpushされたときはいつでも,
ProfileLoggerがいつか呼ばれる 出典: D. Cassou et al, “Leveraging Software Architectures to
4
2011/7/5
ICSE2011勉強会
Guide and Verify the Development of Sense/Compute/Control
Applications”, Proc. ICSE’11, pp. 431— 440, May 2011
評価
 SCC向けADL
“DiaSpec” と,そのツール
DiaSuiteを拡張
 学生実験による既存DiaSuiteの評価(欠点)
アーキテクチャの解釈が分かれ,設計者の意図と異な
る実装となる
 不必要なスケルトンコードが生成され,実装すべき箇
所の判断が必要
 検証が限定的

 Interaction
contractの有無の比較実験
コード量: ADL記述量はやや増えるが,自動生成コード
が増え手作業コーディング量は減る
 コード品質(CodeSonerで計測): 自動生成コードによ
りプログラミングがガイドされるため,高品質

5
2011/7/5
ICSE2011勉強会