アジャイル開発におけるステークホルダのインタレスト分析方法の提案と評価
M2013SE001 原 起知
指導教員 青山 幹雄

1. 研究の背景
アジャイル開発は環境の変化に対応する開発プロセスとして普及している．アジャイル開発ではステークホルダとのコミュニケーションを重視する．しかし，アジャイル開発の大規模化によりステークホルダが増加しステークホルダとコミュニケーションが取れない問題がある．

2. 研究課題
アジャイル開発ではユーザストーリが要求成果物の役割を担うため，要求分析が困難である．要求分析は複数のステークホルダが強いインタレストを示す要求を分析する．
しかし，ユーザストーリは単独のステークホルダがインタレストを示す要求のみ表すため，複数のステークホルダが強いインタレストを示す要求を特定できない．
そこで，ステークホルダのインタレストはユーザストーリ中の頻出単語として示されると仮定し，ステークホルダのインタレストの構造をインタレストグラフでモデル化し，実際のユーザストーリを用いて提案方法を検証する．

3. 関連研究3.1. インタレストグラフ
インタレストグラフはインタレストの構造を表す有向グラフである．ノードはステークホルダかインタレストとなる．エッジはステークホルダからインタレストへの関心を表す．エッジの向きはインタレストの向きを示す．インタレストノードとエッジはインタレストの強さを示す重みを持つ．インタレスト
グラフを用いた要求分析では品質特性をインタレストとし，そのインタレストの差異からステークホルダの対立を確認できる[6]．
3.2. 要求インタラクションマトリクス
要求インタラクションマトリクスは，ステークホルダを分類し，ステークホルダの対立をマトリクスで表す．ステークホル
ダリストと要求項目から分析対象の要求を絞り込む [4]．
3.3. 関心モデル
関心モデルではゴールグラフのゴールが達成された場
合のステークホルダの満足度をマトリクスで表し，対立を検出する．自己と他者の評価の差から対立を検出する[3]．

4. アプローチ
ステークホルダのインタレストはユーザストーリ中の意味のある頻出単語で示されると仮定する．ユーザストーリからインタレストを特定し，ステークホルダのインタレストの構造をインタレストグラフでモデル化する．このモデルを用いてステークホルダの要求とその構造の分析方法を提案する．

5. ステークホルダのインタレスト分析方法
5.1. インタレスト分析の定義
インタレストは要求として捉えられていないステークホルダの関心を表す．インタレスト分析はステークホルダのインタレストをモデル化し，その構造を明らかにする． そして，インタレストの構造からステークホルダのインタレストの共通性を分析する．共通性とはステークホルダが同じシステムの機能や価値にインタレストを示すことである．
5.2. インタレストのメタモデル
インタレストのメタモデルを図 1 に示す．ユーザストーリ
はステークホルダ要求の一部を表す．チケットは発行者をプロパティに持ち．発行者はステークホルダ名を示す．また，ステータスで完了したユーザストーリを識別する．さらに，ユーザストーリのストーリ記述がインタレストを表す．

ステークホルダ要求

ユーザストーリ
役割活動
ビジネス価値チケット
発行者
ストーリ記述ステータス

発行する

ステークホルダ名
インタレスト表す

意味のある頻出単語

図 1 ユーザストーリのメタモデル
5.3. ステークホルダのインタレスト分析プロセス
インタレスト分析プロセスを図 2 に示す．ユーザストーリ
はシステム開発で多数発行され，全てに対して分析を行うのは困難である．そこで，インタレストグラフを用いて主要なインタレストを含むユーザストーリを特定し，対立を検出する．さらに，共通インタレストから対立原因を分析し，対立の構造を特定する．
ユーザストーリからインタレスト抽出

インタレストグラフ作成

共通インタレスト特定絞り込んだユーザストーリからインタレストの共通性を分析

共通インタレストの重みから主要ステークホルダ特定

共通インタレストからユーザストーリを絞り込みインタレストの共通性に関連を持つ
ユーザストーリ特定

要求インタラクションマトリクスを用いた対立検出

ステークホルダの対立検出

ステークホルダの対立の構造を特定

対立原因の共通性を分析

図 2 インタレスト分析のプロセス
5.4. インタレスト分析システムのアーキテクチャ(1) インタレスト分析システムの構成
ITS(Issue Tracking System)で管理されたユーザストーリからインタレストを特定し，インタレストグラフを作成するシス
テムの構成を図 3 に示す．

ユーザストーリ保存

リクエスト(1)ユーザストーリ
取得

ITSAPI

データ送信

ユーザストーリ

ノードデータ保存(3)ステークホルダ
ノードデータ作成

ステークホルダ
データ

ステークホルダ
ノードデータユーザストーリ取得
レスポンス
ステークホルデータ保存 ノードデータ保存
ステークホルダデータ取得(4)ユーザストーリ
分類(2)ステークホルダ (6)インタレストノード
特定データ作成

データ取得(5)ユーザストーリのテキストデータ分析
単語分割
頻度分析

ストップワード
削除

共通単語
集合分析

グラフデータ送信(8)インタレストグラフ
データ作成

インタレスト
ノードデータユーザストーリ取得 インタレストデータ取得
分類された
ユーザストーリ

データ取得(9)インタレストグラフ
描画

インタレストデータ

インタレスト
グラフデータ

データ保存(7)エッジデータ
作成

エッジデータ

図 3 インタレスト分析システムの構成を示す(図 6)．ノード名はインタレストを表す単語である．イ
ンタレスト出現数を式 1，インタレスト総出現数を式 2 で定義した．
インタレスト出現数 = 特定ステークホルダのユーザストーリ中に特定インタレストが出現する回数 (1)
インタレスト総出現数 = 全ユーザストーリ中で特定インタレストが出現する回数 (2)エッジの太さはインタレスト出現数，ノードの大きさはインタレスト総出現数を表す．

(2) インタレスト分析システムの振る舞い
システムの振る舞いを図 4 に示す．
ITS
APIユーザストーリ
取得

ステークホルダ ユーザストーリ
特定分類

ユーザストーリのテキストデータ分析

ノードデータ抽出

エッジ グラフ インタレスト
グラフ
データ データ作成
描画
抽出

リクエスト
ユーザストーリ
取得

ステークホルダデータ送信
発行者
データ送信

ステークユーザ
ホルダ
データ送信 ストーリ
送信

ユーザストーリ分析

インタレスト
データ送信

ノードデータ送信

インタレストデータ送信

グラフ
データ送信

エッジデータ送信

グラフデータ作成

図 4 インタレスト分析システムの振る舞い

6. インタレスト分析システムのプロトタイプ
6.1. 実行環境
プロトタイプは OS(Ubuntu12.04)，CPU(Core2Duo1.40GHz)，メモリ(2GB)の実行環境上で実装した．
6.2. プロトタイプの構成
プロトタイプの構成を図 5に示す．GitHubのリポジトリ上のユーザストーリを GitHub API を用いて取得する．
Python のライブラリ nltk を用いてユーザの声形式で記述されるユーザストーリからインタレストを含む単語を特定する．
グラフデータの生成には Python のライブラリ Networkx を用
いて JSON 形式のグラフデータを作成した．グラフ描画ライブラリには D3.js[2]を使用した．

図6

CKAN のインタレストグラフ

7.2. インタレストグラフによる分析(1) 主要共通インタレストの特定
複数のステークホルダにリンクを持つ共通インタレストとして 22 個が特定できた．その中で最大のノード dataset が主要共通インタレストとして確認できる．共通インタレストの上
位 5 個のインタレスト総出現数を図 7 に示す
dataset31

datasets

17

data

16

see

12

resource

100

51015

20253035

図 7 共通インタレストのインタレスト総出現数(2) 主要ステークホルダの特定
dataset のステークホルダのインタレスト出現数を図 8 に示す．dataset に特に強いインタレストを持つステークホルダ
User，Publisher が主要ステークホルダとして特定できた．
1

図 5 プロトタイプの構成

7. CKAN への適用
データカタログを作るための OSS である CKAN[1]に適用し，有効性を確認した．検証の目的は主要ステークホルダを特定し，主要ステークホルダが強いインタレストを示す要求を特定することである．そして，特定した要求に基づき対立を検出し，その構造を分析する．
7.1. インタレスト分析
インタレスト分析ではユーザの声形式で書かれた 61 個のユーザストーリを分析した．User，Publisher，Owner など 9個のステークホルダがユーザストーリから特定できた．イン
タレストグラフは黄色のノードがステークホルダ，青色と赤色のノードはそれぞれ，固有インタレストと共通インタレスト

5

User

1411

Publisher
Data wrangler
Developer

図 8 dataset のステークホルダのインタレスト出現数(3) 強いインタレストを持つ要求の部分集合を特定
主要なステークホルダの User と Publisher が発行したユーザストーリはそれぞれ 32 個と 13 個であった．その中で単語 dataset を含むユーザストーリは User 15 個と Publisher 9個である．User と Publisher が強いインタレストを持つ要求の部分集合を特定できた．
(4) 要求の部分集合の共通性
User の dataset を含むユーザストーリのユースケース図

を図 9 に示す．この図から User はデータセット操作に対して強いインタレストを示すと考えられる．

表形式のリソースにコメント表形式のリソースの編集ができるユーザを制限，または許可

CKAN
データセット操作

Owner

表示
ダウンロードせずにデータセットのプレビュ表示

図 12 Owner の resource 操作のユースケース図

データセットの形式を表示
検索内容に関連するデータセットを表示
データセットのコメント，ダウンロードされた数の表示
データセットのメタデータ表示
最も人気のあるデータセットを表示

User
検索

データセットをデータセットのメタデータで検索
データセットについてSNSで共有
データセットのダウンロード問題のあるデータセットについてレポートを送信
ダッシュボードの表示

図 9 dataset を含むユーザストーリのユースケース図

リソースの編集を元に戻す

リソース操作に関するユーザストーリは User，Owner どちらのユーザストーリからも確認できる．リソースの操作はUser と Owner の強いインタレストを示す要求と確認できる．
(5) ステークホルダの要求の対立検出「データセット操作」に関するユーザストーリに着目し，図13 に示す要求インタラクションマトリクスを用いて，要求の対立を検出した． Publisher のデータセットを隠ぺいしたい
要求が，User のデータセットを検索する等の要求と対立することが分かった．

次にPublisherのdatasetを含むユーザストーリのユースケース図を図 10に示す．この図からPublisherもデータセッ
ト操作に強いインタレストを示すと考えられる．
データセットを地図と関連付ける
データセットの削除
データセットを非表示
データセットにライセンスを追加
データセットを公開
Publisher

データセット間の関係のデータを作成
データセットの検索可能なメタデータ項目追加

図 10 Publisher の dataset 操作のユースケース図
主要共通インタレスト dataset を含むユーザストーリの共通性を分析し，User と Publisher はデータセット操作に強いインタレストを示すといえる．そのため，データセット操作はUser と Publisher において，強いインタレストを持つ要求と考えられる．
また，出現頻度の高い共通インタレストの resource も共通性を分析した．resource の主要ステークホルダである
User と Owner のユーザストーリを分析した．User の resourceを含むユーザストーリのユースケース図を図 11 に示す．
表形式のリソースの編集
リソースの作成
リソースの更新情報表示User

図 13 ステークホルダの対立(6) ステークホルダの対立の構造を特定
dataset と類語の主要共通インタレストとして resource が特定できる．resource はデータセット内のファイルを示す．そして，「リソース操作」に着目し resource を含むユーザストーリから User と Owner の対立が特定できた．ファイルの編集を制限したい Owner の要求と，ファイルへコメントしたい Userの要求が対立した．検出された対立はデータ操作の制限が対立原因であることから，共通インタレストを介して対立の構造を特定できる．これを図 14 に示す．
対立する要求リソース操作
表形式のリソースの編集

この図から User はリソース操作に強いインタレストを示すと考えられる．
次に Owner の resource を含むユーザストーリのユースケース図を図 12に示す．この図から Ownerはリソース操作に強いインタレストを示すと考えられる．

データセットを非表示

User
対立
表形式リソースの編集を制限

対立
Publisher
データセットを検索

Owner

図 14 ステークホルダの対立の構造
7.3. 要求の部分集合とインタレスト総出現数の関係
図 15 に User と Publisher のインタレストごとのインタレス
ト含有率を示す．インタレスト含有率を式 3 で定義した．

リソースのダウンロード

図 11 User の resource 操作のユースケース図

データに対する制限が共通点

データセット操作

インタレスト含有率 =特定ステークホルダの特定インタレストを含むユーザストーリ数
特定ステークホルダの全ユーザストーリ数(3)x 軸は dataset から resource まで，インタレスト総出現数が高い順に右から並ぶ．y 軸はインタレスト含有率を示す．図から，インタレスト総出現数とインタレスト含有率は比例する．

70%
60%
イン 50%
タレ 40%ス
ト 30%
含有 20%率
10%

UserPublisher

0%
resource

dataseedatasets

dataset

図 15 インタレスト含有率の推移
前述のインタレスト出現数は，ユーザストーリを多く持つUser と Publisher の値が高くなる．そのため，インタレスト出現数に偏りが生じる．インタレスト濃度を式 4 で定義した．
インタレスト出現数
インタレスト濃度 =(4)特定ステークホルダの全ユーザストーリ数
図 16 にインタレスト濃度とインタレスト含有率の推移を示す．x 軸はインタレスト濃度，y 軸はインタレスト含有率を示す．図の近似曲線からインタレスト濃度はインタレスト含有率と比例すると分かる．そのため，インタレスト濃度とインタレスト総出現数が高いほどインタレスト含有率が大きくなり，要求の部分集合の共通性の分析工程が増加する．
また，インタレスト濃度に対してインタレスト含有率が小さいインタレストがある．そのインタレストは 1 つのユーザストーリに複数含まれる．このユーザストーリは，ステークホルダのインタレストが強調されたユーザストーリと考えられる．
90%
80%

datasety = 0.80x + 0.0470%

new

イン 60%
タレ 50%
ス
ト 40%
含
有 30%
率

edit
datasets
seeuseresource

数はユーザストーリが多数の場合，強調される．ユーザストーリが少数の場合，インタレスト出現数に差がなく，主要インタレストを特定できない場合がある．
8.2. 対立検出
ステークホルダの対立を検出する場合，「制限」や「編集」など対立が発生する可能性のあるインタレストを特定する方法が有効だと考えられる．さらに，対義語のインタレストを特定し，ステークホルダの関心の違いから対立を分析できると考えた．
8.3. 提案方法の比較
ユーザストーリを機能とステークホルダごとに分類し，ステークホルダのインタレストを分析する方法にユーザストーリマッピングがある[5]．ユーザストーリマッピングはユーザストーリが多数の場合，グループ分けと要求の重要度の評価作業が膨大になる．提案方法はユーザストーリが多数の場合でも，インタレストごとにステークホルダの要求をグループ分けし，インタレスト出現数から重要度を評価できる．

9. 今後の課題
提案方法はユーザストーリを多く持つステークホルダのインタレストが強調されるため，インタレスト濃度から主要共通インタレストを特定する必要がある．また，対立検出を重視する場合，対立を発生させる可能性があるインタレストに着目して分析する方法を検証する必要がある．

10. まとめ本研究ではユーザストーリを用いたステークホルダのインタレスト分析方法を提案した．GitHub の CKAN のユーザストーリに適用し主要ステークホルダを特定した．さらに，ステークホルダが強いインタレストを示す要求の部分集合を特定した．特定した要求の部分集合からステークホルダの対立を検出し，共通インタレストを介した対立の構造を特定した．

data

20%

others

10%

data,
0%
0.00

0.20

0.40

0.60

0.80

1.00

1.20

図 16 インタレスト濃度とインタレスト含有率

8. 考察
インタレストグラフからステークホルダの強いインタレストを示す要求の部分集合を特定できた．その部分集合からステークホルダの強いインタレストを示す要求を特定した．さらに，強いインタレストを示す要求に基づき，特定したユーザストーリからステークホルダの対立を検出した．そして，対立の共通性からステークホルダの対立の構造を特定した．
8.1. インタレスト出現数
インタレスト出現数を正確に把握するには，多数のユーザストーリが存在する場合が適している．インタレスト出現

参考文献[1] CKAN User Stories Overview，
http://docs.ckan.org/en/ckan-1.8/user-stories.html.
[2] D3.js - Data-Driven Documents，http://d3js.org/.
[3] 新原 敦介 他,ゴール指向要求分析を用いたステークホルダの対立の検出，第 144 回ソフトウェア研究会，
2004 年 3 月，pp．99-106．
[4] 根本 裕太郎 他,サービス改善のための複数ステークホルダの要求価値の可視化方法，2013 年度精密工学会秋季大会講演会講演論文集，2014 年 2 月，pp．
689-690．
[5] User Story Mapping，
http://agileproductdesign.com/presentations/index.html.
[6] 鵜飼 孝典 他,ソフトウェア開発会議におけるステークホルダと関心事の可視化ツール，第 79 回情報処理学会グループウェアとネットワークサービス研究会，2011
年 3 月，pp．1-8．