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