最近では、新サービスの複雑化・多様化、開発サイクルの加速、サードパーティによるサービス提供など様々な要因から、サービス競合の問題はますます深刻な問題になってきています。しかし、競合を検査するためのサービスの組み合わせだけでも莫大な数になり、潜在的な競合を全て検出して、完全に取り除くことは、もはや不可能に近いという見方もあります。
サービス競合の検出は、一般的にコストのかかる問題です。そこで、ある程度厳密さを犠牲にして、サービス競合の可能性をあらく見積もることが有効になる場面があります。このための技術がサービス競合フィルタリングです。
サービス競合フィルタリングは、簡単な競合条件を利用して、「競合がおこりがちな」サービスの組み合わせを粗く見積もります。与えられたサービスの組合わせに対して、競合フィルタリングは、「(明らかに)競合する」「競合しない」「競合可能性あり」という3つの回答を出力します。
大事なポイントは、「競合可能性あり」なサービスの組は必ずしも競合を生じるとは限りません。これは、フィルタリングが厳密さを犠牲にして、低コストを実現している点です。もし、厳密な競合状態が必要であれば、「競合可能性あり」なサービスの組に対して、競合検出を行えばよいので、競合検出プロセスのコストを削減することができます。
概念図は下のようになります。今、F1からF8の8つのサービスが存在すると仮定します。本来なら、8x8=64とおり(冗長を含む)の組み合わせに対して、競合検出を行わわなければなりません。しかし、フィルタリングを使うことで、「競合可能性あり」に組み合わせを絞り込むことができるのです。これは、競合検出プロセスで大きなコスト削減になります。
本研究では、競合フィルタリングをサービスの要求レベルで行うフィルタリング手法を提案しています。これは、Use Case Maps (UCMs)と呼ばれる要求記述法を用います。UCMsは元来テキストで書かれるサービスの機能要求(Use Case)をシナリオとして視覚化し、要求文書と設計仕様との橋渡しを目的とした要求記述法です。
UCMsには、スタブ-プラグインという概念があり、これを用いて、シナリオの一部を階層化したり拡張したりすることができます。サービス競合の対象となるサービス(付加サービス)は、主にベースとなる基本サービスを機能拡張するためのものです。
従って、スタブ-プラグインを使えば、各サービスをスタブのコンフィグレーション(どのスタブにどのサブUCMsがプラグインされるか)で性質付けすることができます。提案フィルタリング法では、サービスを組み合わせる前後で、各スタブコンフィグレーションがどのように変化するかを、簡単な行列演算で行っています。これにより、「(明らかに)競合する」「競合しない」「競合可能性あり」という3つの回答を迅速に調べることができます。
上で述べた競合フィルタリング法は、与えられたサービスの組み合わせに対して、3つの回答を出力するものでした。つまり、競合の組み合わせのレベルでの絞込みを行うものでした。しかし、「競合可能性あり」の組み合わせに対して、「どのシナリオで競合が発生しがちなのか」まではわかりませんでした。
そこで、このフィルタリング法を拡張し、競合が起こりそうなサービスシナリオを導出する手法を提案しています。これにより、競合のシナリオレベルの絞込みが可能になります。具体的には、競合が発生する必要条件から2つのヒューリスティックを提案しました。これをUCMsのシナリオパス上の条件として定式化しています。