*ホームネットワークにおけるサービス競合問題 [#v0eb33ea] **背景 [#td037972] 近年,一般家庭にある家電機器をネットワークに接続し,宅外からの制御や複数機器の連携を実現するホームネットワークシステム(HNS) の開発が進んでいます.その主要なアプリケーションの一つとして,複数の家電を連携制御することでユーザの日常生活における快適性・利便性を高める,家電連携サービスが研究されています.この連携サービスは,単独では正常に動作しますが,複数を同時に実行すると互いに干渉・衝突を起こし,ユーザの意図したとおりに動かなくなってしまう,サービス競合という問題が発生します.ユーザの快適性・利便性やHNS の品質を損なわないためにも,それらを検出し解消することが求められます. **サービス競合 [#iebe6fe2] 2つの連携サービスを例に,サービス競合を紹介します. -DVDシアターサービス --ユーザが映画館の様な雰囲気でDVDを観賞できる環境を作る --DVD・TV・スピーカーが起動し,カーテンが閉まり,照明が暗くなる -おかえりサービス --ユーザが帰宅したときに環境を整える --カーテンが閉まり,照明が明るくなる これらを同時に実行すると,照明に対する機能の衝突,いわゆるサービス競合が起きます. &ref(conflict1.PNG); CENTER:&ref(conflict1.PNG); **静的検出手法 [#pa64b7c3] サービス競合の検出におけるキーアイデアを紹介します. -モデル化 --オブジェクト指向モデルを用いて各機器をモデル化し,連携サービスを機器のメソッドの実行系列からなるシナリオとして定義 -前条件・後条件 --機器に用意した各メソッドに,メソッドの実行前後に満たされていなければいけない条件を設定 複数の連携サービスを組み合わせた際に,事前・事後条件間に矛盾が生じた場合に,競合が検出されます. **動的検出・解消手法 [#n9e8d927] 静的検出手法に加え,以下のアイデアを利用することで,連携サービス実行時におけるサービス競合の検出・解消を行います. -実行中メソッドの管理 --現在実行中であるメソッドの詳細を管理 -優先度 --各メソッドに優先度を設定 新規に連携サービスを実行する際に,今から実行するメソッドと実行中のメソッドを比較し,競合が発生する場合は優先度が高い方を優先することで競合を解消します. &ref(conflict2.PNG); CENTER:&ref(conflict2.PNG);