デジタルプラクティス Vol.11 No.2(Apr. 2020)

要求仕様書中のアクター名の定義漏れパターンと組織変更がもたらす影響
─実案件分析と得られた教訓─

高橋宏季1  野村典文2  近藤公久1  位野木万里1

1工学院大学  2伊藤忠テクノソリューションズ(株) 

情報システムの要求仕様書には,アクターが対象システムを利用してどのように業務を進めるかを示したシナリオが記述される.シナリオ中に未定義のアクター名が出現すると要求仕様書の理解は困難になる.未定義のアクター名は,組織名を含む表現,アクター名から用語を省略/修飾することで派生させた表現となる傾向がある.本稿では,実案件の要求仕様書を取り上げ,未定義のアクター名の出現傾向,組織名との関係を分析し,派生の傾向を派生パターンとして定義する.また,派生パターンを用いて要求仕様書中からアクター名を効率的に抽出するツールを提案する.さらに,組織変更がシナリオに与える影響を想定した,要求仕様書の理解,作成,維持管理に関して得られた教訓について報告する.

1.はじめに

1.1 要求定義におけるアクター定義の重要性

情報システム開発において,要求定義工程は業務とシステムの役割を明確にし,システムの開発範囲を定義するための重要な工程である[1].要求定義工程の成果物である要求仕様書の品質に問題があれば,続く基本設計や開発工程での作業の手戻りやバグ発生のリスクが高まる.文献[2]によれば,開発失敗の原因の過半数は要求定義に関係すると報告されている.また,対象システムの要求定義に問題が発生する要因の1つとして,対象システムのアクター定義が不明確であることが挙げられる[3].

情報システムの要求定義では要求獲得の源泉としてアクターを明らかにする必要がある[1],[3].政府によるデジタル・ガバメント推進標準ガイドライン実践ガイドブックによれば,利用者視点による要求の把握を怠ったプロジェクトの失敗経験に基づき,サービス・業務企画においては,利用者(つまりアクター)を中心に要求獲得すべきことが述べられている[4].同ガイドラインでは,アクターの役割を明確にして要求定義をすることが求められている.要求仕様書のシナリオ内に,定義があいまいなアクター名が複数記述されることによって,開発する機能のアクセスコントロール等を顧客の要求とは異なる仕様に設計する可能性がある.それにより,前述した開発過程でのリスクが高まる可能性がある.手戻りやバグは,コスト超過やリードタイムの遅延への問題発生の原因になると考えられる.

1.2 定義漏れやアクター定義からの表記ゆれが多数発生している現状

筆者らは要求仕様書の高品質化のために,実際の要求仕様書を対象に,一貫性のある要求仕様書の特性の分析を試みてきた[5],[6],[7].一般的な要求仕様書ではその前半部分において,システムの利用者等の定義やアクター定義表等の項目名でアクターが定義され,そのアクター定義に基づき,アクターによるシステムの使われ方が機能要求として記述される.しかし,分析過程において,要求仕様書中でアクター名の定義漏れやアクター定義からの表記ゆれが多数発生している状況に直面した.ここで,「定義漏れ」アクターとは,要求仕様書中に未定義にもかかわらず,シナリオ中で使用されているアクター名である.「アクター定義からの表記ゆれ」アクターとは,要求仕様書中に定義されているアクター名と,類似の意味であるが,異なる文字表記がなされているアクター名である.

ところで,筆者らが分析したある要求仕様書において,「一般職員」がアクター名として定義されていたが,要求仕様書中で使われていた「監査機関職員」は定義漏れアクターであった.ここで,あるアクター名を修飾または省略することで記述されたアクター名を派生形アクターと呼ぶことにする.「監査機関職員」は「一般職員」の派生形アクターとなる.派生形アクターが組織名や役割を組み合わせて構成されていると,組織変更が発生した場合に,名称の置き換え,要求仕様の修正が必要となる.

1.3 アクター定義からの表記ゆれと派生形アクターの関係

アクター定義からの表記ゆれアクターと派生形アクターの定義について,図1を用いて説明する.要求仕様書中に出現する任意の2つのアクターを取り上げたとき,それらが類似の意味であるが,異なる文字表記であるときに,それらの2つのアクターは表記ゆれアクターと呼ぶ.前述した,アクター定義からの表記ゆれアクターと,派生形アクターは,表記ゆれアクターに含まれる概念である.アクター定義からの表記ゆれアクターと,派生形アクターには共通性が存在する.

表記ゆれアクターの構成
図1 表記ゆれアクターの構成

たとえば,要求仕様書の前半部分のアクター定義には「管理職員」のみが定義されているとし,要求仕様書のシナリオに,「職員」,「スタッフ」,「マネージャ」,「事務センター職員(委託)」が記述されているとする.

「職員」と「スタッフ」は,一般的な表記ゆれアクターの関係(図1の(A))である.「管理職員」と「マネージャ」は,アクター定義からの表記ゆれの関係,すなわち,図1の(B)に相当する関係である.

「職員」は,「管理職員」を一般化した類似の意味と考えられるので,「職員」と「管理職員」は,アクター定義からの表記ゆれである.加えて,「職員」は,アクター定義に定義された「管理職員」から「管理」の文字表記を省略しているので,これらの関係は派生形アクターにも相当する.よって,「職員」と「管理職員」の関係は,図1の(C)に相当する.

「事務センター職員(委託)」と「職員」は,両方ともアクター定義には関係なく,「職員」に「事務センター」と「(委託)」の文字表記を修飾することで記述されているので,派生形アクター(図1の(D))に相当する.

また,要求仕様書のアクター定義には定義されていないが,シナリオに記述された「住基一括システム」,「年金業務システム」を考えると,「住基一括システム」から「住基一括」を省略し,「年金業務」を修飾すると,「年金業務システム」となるので,派生形アクターの関係である.同様に,「事務センター職員(事務所職員)(1次審査者)」,「事務センター職員(年金事務所職員)(1次審査者)」も,派生形アクターである.

1.4 研究の目的と本稿の構成

一般に,法改正や組織変更があれば,関連する情報システムのアクター名や機能仕様は影響を受ける.その影響に伴い,要求仕様書は更新される.要求仕様書の適切な更新のためには,アクター名の定義漏れ,アクター定義からの表記ゆれや派生関係の状況や,組織変更による影響に対する要求仕様書の維持管理の方法を把握することが重要である.

そこで本稿では,実案件の要求仕様書を対象に,要求仕様書中のアクター名に着目し,実態を調査する.調査結果から,定義漏れやアクター定義からの表記ゆれの状況と,組織変更が要求仕様書に与える影響を分析する.分析結果から得られたノウハウを整理する.技術者がノウハウを共有することにより,要求仕様書の理解,作成,維持管理に貢献することを研究の目的とする.

以下本稿は次のように構成する.第2章は実案件の要求仕様書を調査,分析方法を示し,組織構造と要求仕様書中のアクター名の実態を示す.第3章では第2章の結果を基に,アクター名の定義漏れとアクター定義からの表記ゆれの状況を分析する.第4章では組織変更が要求仕様書に与える影響を検討する.第5章は今回の分析で用いた派生形アクターを要求仕様書中から効率的に抽出するツールについて説明する.第6章では,第3,4章で示した派生形アクターの出現状況等の特性が別の案件にも適合するかどうかを評価する.第7章は,アクター定義と組織変更が与える影響を踏まえて,要求仕様書の作成,理解,維持管理に関して得られた教訓を整理する.第8章は関連研究について述べる.第9章にて本稿をまとめる.

2.要求仕様書の調査

本章は,対象とする要求仕様書と調査手順,アクター名と組織の関係,定義漏れや表記ゆれの現状を示す.

2.1 調査の対象と方法

調査対象は,厚生労働省の「年金業務システム(個人番号管理サブシステム等(2次開発情報連携分))に係る設計・開発等業務およびアプリケーションソフトウェア保守業務調達仕様書(案)」(以下,SRS1とする)[8]である.分析にあたり,当該要求仕様書の中から,アクター定義表と業務処理記述に注目した.

アクター定義表には,システムを利用する人や組織等のアクター名と役割が記述される.シナリオに相当する業務処理記述には,アクターによるシステムの使われ方が時間の流れや業務の流れに沿って記述される.業務処理記述は64ページ,39,197文字で構成され,510件のシナリオが定義されている.

次の(1)~(5)の手順で調査する.

  • (1)SRS1のアクター定義表からアクター名を特定
  • (2)SRS1のシステムが実際に使われる組織(ここでは日本年金機構)の組織構造を調査
  • (3)業務処理記述のシナリオ中に主に主語や目的語として記述されているアクター名を抽出,(1)の結果と比較,定義漏れと表記ゆれ状況を確認
  • (4)(3)の結果からアクター名の定義漏れと表記ゆれの特性を分析
  • (5)日本年金機構の組織変更を調査し,要求仕様書へ与える影響を分析

2.2 SRS1のアクター名の定義状況

2.1節の調査手順(1)で特定した,SRS1中のアクター名を表1に示す.表1の「管理職員」から「委託業者(オペレータ,保守要員)」は,開発対象のシステムの利用者に相当するアクター名である.「機構本部」から「コールセンター」は,年金業務システムが稼働する拠点名に相当する.

表1 SRS1中の定義されていたアクター名
SRS1中の定義されていたアクター名

2.3 対象組織の構造

2.1節の調査手順(2)に基づき,資料[9]の,SRS1が執筆された当時の日本年金機構の組織構造を調査した.その結果を図2に示す.なお,図2は資料[9]の「組織の体制(平成28年1月時点)」の組織図の一部を抽象化して記述したものである.

執筆時点の日本年金機構の組織図
図2 執筆時点の日本年金機構の組織図

図2に示すように日本年金機構は,「理事長」が,「機構本部」,「ブロック本部」,「年金事務所」を統括している.各組織は,それぞれ「コールセンター」,「事務センター」,「街角の年金相談センター」を下部組織に持つ.

2.4 定義漏れと表記ゆれの状況

2.1節の調査手順(3)で抽出したアクター名を表2に示す.なお,表2のアクター名の順番は,五十音順である.抽出したアクター名は,延べ1,183件,正味91件であった.表2のアクター名の内,表1のアクター定義と一致したのは,表2のNo.24「機構本部」とNo.45「事務センター」のみである.

表2 抽出したアクター名一覧
抽出したアクター名一覧

抽出したアクター名の定義漏れとアクター定義からの表記ゆれの状況を表3に示す.表3の「定義漏れ」に示すように,SRS1の業務処理記述中におけるアクター名の定義漏れは延べ1,170件,正味89件である.表3の「アクター定義からの表記ゆれ」は,延べ467件,正味21件である.

表3 アクター名の定義漏れとアクター定義からの表記ゆれの件数
アクター名の定義漏れとアクター定義からの表記ゆれの件数

表3(b)に示すようにアクター名の延べ件数に対して98.9%が定義漏れであり,業務処理記述に記述されたほとんどのアクター名は未定義である.未定義のアクター名の内,39.5%はアクター定義からの表記ゆれであり,組織名等からの派生形アクターを含む.たとえば,表2のNo.25の「機構本部職員」は,定義漏れアクターである.これは,表1中の「機構本部」のアクター定義からの表記ゆれであり,派生形アクターと見なすことができる.

3.アクター名の表記ゆれ特性

本章は,2.1節で述べた調査手順(4)のアクター名の定義漏れと表記ゆれを比較し,派生関係の観点から分析する.

3.1 定義と仕様書中のアクター名の比較

SRS1中の定義漏れアクター(表3の「定義漏れ」-(a),「定義漏れ」-(c))を整理すると,アクター定義からの表記ゆれアクター,派生形アクター,アクター定義の内容と関係ない未知のアクターで構成されている.派生形アクターの派生パターンは,表4のように分析できる.表4中の「派生元例」は表1中のアクター定義を,「派生先例」は表2中のアクター名を,それぞれ表す.

表4 アクター定義とSRS1中のアクター名の特性関係
アクター定義とSRS1中のアクター名の特性関係

派生関係は3つのパターンが存在する.表4の「修飾」パターンは,派生元のアクター定義にある「事務センター」を修飾することにより,「事務センター(年金事務所)」とするような派生関係である.「省略」パターンは,派生元であるアクター定義の「委託業者(オペレータ,保守要員)」を省略し,「委託業者」とするような派生関係である.表4の「修飾」と「省略」の派生パターンに該当するアクター名は,アクター定義からの表記ゆれアクターでもある.

表4の「省略と修飾」パターンは,アクター名から何らかの文字列を省略した上で修飾する派生関係である.たとえば,派生元の「管理職員」を「職員」と省略し,続いて「職員」に「監査機関」を修飾し,「監査機関職員」とするケースがある.表4では,派生元をアクター定義に定義されたアクター名を用いているが,「省略と修飾」パターンでは,派生元は任意のアクター名とする.「省略と修飾」パターンは,定義漏れアクターであるが,アクター定義からの表記ゆれアクターではないアクター名である.合計に示すように,定義漏れアクターの45.3%は,派生形アクターである.

3.2 SRS1中のアクター名の間の共通部分

アクター名の間で「職員」,「機関」,「機構」,「センター」が共通している.複数のアクター名の間で共通する組織の種類や役割を表す文字列を,「基準アクター」と呼ぶことにする.正味91件のアクター名の内,上記の4件の基準アクターを含むアクター名の正味件数は42件(46.2%)である.定義漏れアクターに限定すると,正味89件中40件(44.9%)である.

3.1節の表4に示したように,SRS1中のアクター名の「省略と修飾」のパターンに該当する定義漏れアクターに着目すると,「監査機関職員」,「情報システム機構」がある.これらの用語に含まれる文字列で,組織や人の名称に該当する用語として,「機関」や「機構」がある.筆者らは,最初に基準アクターを設定するにあたり,これらの用語を基準アクターに含めた.なお,前述の4つの基準アクターに加えて,その他の定義漏れアクター名から,たとえば,「システム」や「市区町村」も含めることで,派生形アクターのグループをさらに追加できる.基準アクターの設定を増やして,単独で再定義が必要な定義漏れアクターの数を絞り込むことで,定義漏れアクターの再定義の作業を効率化することが可能である.

上記4件の基準アクターの内,内包しているアクター名の件数上位2件である「職員」,「機関」を含む,派生形アクターを表5に示す.表5の「職員」の行は,「職員」を基準アクターとした派生形アクターである.「職員」を基準アクターとする派生形アクターは「機構本部職員」のようなアクター定義からの表記ゆれアクターや,「監査機関職員」のようなアクター定義からの表記ゆれではない定義漏れアクターを含んでいる.アクター名91件の28.6%は,「職員」からの派生である.表5の「機関」を含むアクター名は,いずれも表1のアクター定義では未定義である.

表5 派生関係があるSRS1中のアクター名
派生関係があるSRS1中のアクター名

要求仕様書中のアクター名の関係を整理すると,図3のようになる.要求仕様書中のアクター名には,基準アクターを修飾または省略した派生形アクターと派生関係がないその他アクターがある.派生形アクターに修飾または省略を再帰的に繰り返すことによって,表4の3つの派生パターンを適用し,別の派生形アクターを形成する.

要求仕様書中のアクター名の関係
図3 要求仕様書中のアクター名の関係

3.3 派生形アクターが発生する要因

派生形アクターが発生する要因は,シナリオを記述し整理しながらアクター名を洗い出しているためと考えられる.たとえば,SRS1中のシナリオとしてシナリオS1「事務センター職員(年金事務所職員)(1次審査者)は届書内容等を業務処理マニュアル等の規定に従い審査を行う.」がある.シナリオS1の主語となるアクター名は,本来「事務センター職員」だったと考えられる.シナリオの執筆者が,シナリオを記述している過程で,アクターの役割を詳細化して,「事務センター職員」に修飾語を付与し,「事務センター職員(年金事務所職員)(1次審査者)」という形に派生させたと考えられる.

シナリオの執筆者が,具体化した本派生形アクターをアクター定義に追加しなかったため,要求仕様書全体としては,当該アクター名は定義漏れとアクター定義からの表記ゆれを引き起こすアクター名となっている.図3のアクター名の関係,表4の派生パターンや連結される修飾語を整理することによって,未定義であってもアクター名の性質を把握できる.

3.4 派生形アクターを抽出する手順と効果

3.4.1 派生形アクターを抽出する手順

筆者らは,要求仕様書の分析者が要求仕様書中からアクター名を抽出し,定義漏れ,アクター定義からの表記ゆれ,派生形アクターを抽出する手順を定義した.その手順の入出力フローを図4に示す.本手順は要求仕様書を入力とし,「(1)アクター定義とシナリオを特定」から「(20)派生形アクターとして抽出」の手順で構成され,出力として「全アクターリスト」,「定義済みアクターリスト」,「アクター定義からの表記ゆれアクターリスト」,「一般的な表記ゆれアクターリスト」,「定義漏れアクターリスト」,「派生形アクターリスト」を作成する.本手順には,「要求仕様書の分析者」が手動で行う手順とツールによる自動化が可能である「機械的処理」がある.

定義済みアクター,定義漏れアクター,アクター定義からの表記ゆれアクター,派生形アクターの抽出作業手順
図4 定義済みアクター,定義漏れアクター,アクター定義からの表記ゆれアクター,派生形アクターの抽出作業手順

基準アクターを決定する手順を(2)~(6)に示す.図中(3)は,分岐条件である.要求仕様書の分析者は,(4)または(5)で抽出した文字列を入力とし,「(6)基準アクターを決定」で基準アクターを定義する.

  • 「(4)「アクター定義」間に共通する文字列を抽出」では,アクター定義を参照し,アクター名の間に共通する文字列を抽出し,(6)で組織や役割を示す文字列を基準アクターとして定義する.SRS1では,基準アクターとして,「職員」,「機構」,「センター」を設定した.
  • 「(5)「アクター名」間に共通する文字列を抽出」では,後述する定義漏れアクター,アクター定義からの表記ゆれアクター,一般的な表記ゆれアクターリストを参照し,それらの間で共通する文字列を抽出し,(6)で組織や役割を示す文字列を基準アクターとして追加する.筆者らは,SRS1に対しては「機関」を基準アクターとして追加した.

図4の(7)~(16)は,全アクターリスト,定義済みアクターリスト,アクター定義からの表記ゆれアクターリスト,一般的な表記ゆれアクターリスト,定義漏れアクターリストを作成する手順を示す.図中(8),(10),(13)は,繰り返し条件である.主な作業手順を以下に示す.図の単純化のために,一部の入出力フローの矢印の記述を省略している.

  • 「(9)シナリオからアクター名抽出」では,シナリオ中の主語や目的語として記述されているアクター名を洗い出し,全アクターリストを出力する.
  • 「(11)定義済みアクターとして抽出」では,全アクターリストとアクター定義に定義されたアクター名を比較し,文字列が完全一致するアクター名を特定し,定義済みアクターリストを出力する.
  • 「(12)定義漏れアクターとして抽出」では,全アクターリストから定義済みアクターリストのアクター名を除外し,文字列が一致しないアクター名を特定し,定義漏れアクターリストを出力する.
  • 「(14)アクター定義からの表記ゆれ(C)として抽出」では,定義漏れアクターリストから,アクター定義に定義されたアクター名を修飾または省略した記述となるアクター名を特定し,アクター定義からの表記ゆれアクターリストを出力する.本手順で抽出するアクター名は,図1の(C)に該当する.
  • 「(15)アクター定義からの表記ゆれ(B)として抽出」では,定義済みアクターリストと定義漏れアクターリストを比較し,(14)で抽出したアクター定義からの表記ゆれアクター以外の類似の意味の関係にあるアクター名を特定し,アクター定義からの表記ゆれアクターリストを更新する.本作業は,あらかじめ作成した異音同義語の関係にある表記ゆれ辞書等を参照することで実施する.そのような表記ゆれ辞書の作成方法の一部については,文献[5], [6]ですでに示したので,本稿では扱わないこととする.本手順で抽出するアクター名は,図1の(B)に該当する.
  • 「(16)一般的な表記ゆれ(A)として抽出」では,定義漏れアクターリストを確認し,類似の意味の関係にあるアクター名を特定し,一般的な表記ゆれアクターリストを作成する.本作業も(15)と同様に,表記ゆれ辞書等を参照することで実施する.本手順で抽出するアクター名は,図1の(A)に該当する.

派生形アクターを抽出する手順を図4の(17)~(20)に示す.図中(17),(18),(19)は,繰り返し条件である.

「(20)派生形アクターとして抽出」では,基準アクター,全アクターリストを入力とし,基準アクターの文字列が含まれるアクター名を全アクターリストから特定し,当該基準アクター名の派生形アクターとして抽出する.本手順で抽出する派生形アクターは,図1の(C)または(D)に当てはまる派生形アクターである.定義漏れアクター間に事前に定めた基準アクター以外に共通する文字列があれば(2)に戻り,基準アクターを追加し,(17)~(20)を再実行する.

3.4.2 派生形アクターを活用することの効果

3.2節で述べたように,SRS1中の定義漏れアクター89件の約45%,40件が派生形アクターであり,基準アクターを「職員」,「センター」,「機関」,「機構」として,4つの派生形アクターのグループに分けることができた.

アクター名が定義漏れのままのシナリオを含む要求仕様書は,品質の問題があるため,未定義のアクターの定義を要求仕様書中に追加する必要がある.同一の基準アクターを含んだ派生形アクターは,基準アクターに関係した共通の特性があると考えられる.上述した作業手順により特定した派生形アクターを活用することは,効率的なアクターの再定義に有効である.

SRS1の定義漏れアクター89件に対して,派生形アクターに分類される40件を,4つの派生形アクターのグループ単位で再定義し,その後,派生形アクターには含まれていない残り49件の定義漏れアクターを再定義することにすれば,89件を個別に再定義するよりも効率的である.さらに,SRS1では,定義漏れアクター名に「システム」や「市区町村」が含まれる用語が散見されるので,基準アクターにこれらを追加すると,それぞれ29件,2件の合計31件の定義漏れアクターを,「システム」と「市区町村」の2つの派生形アクターのグループ単位に分類することができる.したがって,個別に定義すべき定義漏れアクターは,49件から18件に絞り込め,定義漏れアクターの再定義の効率化に有効と考えられる.

4.要求仕様書への組織変更の影響

本章は,2.1節の調査手順(5)の調査結果を示す.

4.1 実際に発生した組織変更

資料[10], [11], [12]によると,2016年3月に日本年金機構の組織変更があった.図5は資料[12]の「日本年金機構組織図」の組織図を一部抽象化して記述したものである.図5の組織構造は,「ブロック本部」が「機構本部」に統合された結果,「事務センター」が「機構本部」の下に位置している.

平成30年4月1日時点の日本年金機構の組織図
図5 2018年4月1日時点の日本年金機構の組織図

4.2 組織変更の影響を受けるアクター

日本年金機構の組織変更は,SRS1中の「機構本部」と「ブロック本部」,両者に関係する人やシステムが記述されている要求仕様書中のシナリオに影響を与えると考えられる.表2中のアクター名の内「機構本部」または「ブロック本部」という文字列を含むアクター名を表6に示す.表6の(h)は派生形アクターの延べ件数を表す.(i)は派生形アクターを含むシナリオの件数を示す.組織変更の影響を受けるシナリオ件数は表6(i)に示すとおり101件であり,総シナリオ510件の19.22%である.

表6 SRS1中の組織変更の影響を受ける派生形アクター例
SRS1中の組織変更の影響を受ける派生形アクター例

表6のアクター名の派生関係はたとえば,表6の「機構本部」から「機構本部職員(共通運用管理業者)」は「機構本部」の派生形アクターである.また,「機構本部職員」から「ブロック本部職員」は「職員」を基準アクターとする派生形アクターである.

「ブロック本部」,「機構本部」を含むアクター名が同シナリオに記述されているシナリオは3件であった.その具体例として,シナリオS2「年金事務所職員,事務センター職員,機構本部職員,ブロック本部職員,街角の年金相談センター職員,コールセンター職員は,被保険者,受給権者等の記録について,個人番号(又は基礎年金番号)により照会する.」がある.

組織名の観点から考えると,「機構本部」への「ブロック本部」の統合によって組織が変化する.シナリオS2の「ブロック本部職員」というアクター名は修正する必要がある.「統合後の機構本部職員」は全員が照会可能か,一部の職員のみが照会可能なのか,確認する必要がある.

基準アクターの観点から考えると,表6の「機構本部職員」から「ブロック本部職員」を修正する際に,他の「職員」を基準アクターとする派生形アクターの役割も影響を受ける可能性に注意する必要があると考えられる.

「機構本部」と「ブロック本部」が記述されたシナリオは,それぞれ,12件,3件の合計15件のみである.表6に示すように,「機構本部」と「職員」の派生形アクターが記述されたシナリオは101件となる.これらは,「機構本部」と「ブロック本部」の組織変更により,修正の影響が発生する可能性が高いと考えられる.表6の派生形アクターを活用すると,修正の影響が及ぶシナリオの特定に有効であると考えられる.また,「機構本部」の組織変更に対応したシナリオ修正において,表6の派生形アクターから,「機構本部職員(1次審査者)」や「機構本部職員(委託)」等に着目して,()の中に記述された「職員」としての役割の違いを確認しながら,同アクターが記述されたシナリオの修正を行えば,シナリオの品質安定化にも効果的であると期待できる.

5.派生形用語抽出機能

筆者らは,2.1節の調査手順(3)に約90人時,調査手順(4)に約10人時,計約100人時のコストを要した.該当手順を効率化するために,派生形アクターと基準アクターの関係に基づき派生形アクターをグルーピングして抽出するツールを「要求仕様の一貫性検証支援ツール」[5], [6], [7]を拡張し開発した[13].派生形用語抽出機能の概要を図6に示す.

派生形用語抽出機能の概要
図6 派生形用語抽出機能の概要

派生形用語抽出機能は,自然言語で記述されたシナリオと基準アクターを入力とする.図6は「組織A」を基準アクターとして入力している.

要求仕様の一貫性検証支援ツールは,要求仕様書中からアクター名をアクター識別辞書によって抽出する.派生形用語抽出機能は,抽出したアクター名から基準アクターを含むアクター名をグルーピングして出力する.

派生形用語抽出機能を備えた要求仕様の一貫性検証支援ツールを用いることで,2.1節の調査手順(3)と(4)の内の派生形アクターを抽出する作業コストは,約1人時であった.本作業は主に本ツールの初期設定作業に相当する.なお,本ツールによる自動生成の時間は約1分程度である.本ツールにより,シナリオに記述されたアクター,定義漏れアクター,アクター定義からの表記ゆれアクター,派生形アクターリストが自動生成される.

筆者らは,本ツールにより自動生成された各リストの結果と,人手によるリスト作成結果を比較した.比較結果は,再現率,適合率ともに90%以上の高いレベルであった.なお,文献[13]では,派生形用語抽出機能の設計仕様,当該機能を備えたツールの有効性評価の詳細について報告しているため,ここでは省略する.

派生形用語抽出機能によって,アクター名とアクター名の間の派生関係を抽出するために要するコストを削減,リードタイム遅延の防止ができる.抽出を自動化することによって,抽出漏れや人手の場合に発生する抽出のブレを防ぐことも可能である.

6.別案件の要求仕様書の分析

本章では,別案件の要求仕様書中にも,組織名等を内包する派生形アクターが記述されているか分析した.筆者らは人手による分析と第5章で述べた派生形用語抽出機能を備えた要求仕様の一貫性検証支援ツールによる分析を行い,当該ツールの効果も評価した.分析結果から,派生形アクターを確認することが,要求仕様書の理解,作成,維持管理に対して効果的か評価した.

6.1 対象の要求仕様書

SRS1とは異なる案件(SRS2,SRS3)[14], [15]を,新たな分析の対象とする.対象のボリュームは,SRS2は24,783文字,26ページ分,SRS3は9,149文字,2ページ分である.分析手順は,2.1節の調査手順(1)と(3)~(4)と同様である.

6.2 要求仕様書中のアクター定義

SRS2中のアクター名を表7,SRS3中のアクター名を表8に示す.表7の「都道府県労働局職員」から「業務実施部門担当者」と表8の「正職員」から「事業受託者等職員」は,システムを利用する者として定義されていたアクター名である.表8の「厚生労働省霞が関庁舎」から「事業受託者等の拠点」は,システムを利用する拠点の定義である.表8の「労働基準行政システム」は現行のシステム名のアクター定義である.

表7 SRS2中の定義されていたアクター名
SRS2中の定義されていたアクター名
表8 SRS3中の定義されていたアクター名
SRS3中の定義されていたアクター名

6.3 要求仕様書中の派生関係

6.3.1 分析コストとツール利用による削減効果

SRS2,SRS3の2.1節の調査手順(3)と(4)の人手による作業コストは,それぞれ,65人時,20人時であった.調査手順(3)と(4)の作業は,同時並行で行ったため,各作業別の工数は計測しておらず,(3)(4)を合わせた作業工数を計上している.また,派生形用語抽出機能を備えた要求仕様の一貫性検証支援ツールによる上記の作業工数は,SRS1と同様に,SRS2,SRS3ともに初期設定の工数のみ必要となり,それぞれ約1人時であった.要求仕様書のアクター名の抽出や,定義漏れ,アクター定義からの表記ゆれ,派生関係の抽出は,手作業に比較して,大幅に効率化が図れた.

6.3.2 派生関係の状況

抽出したアクター名の定義漏れ,アクター定義からの表記ゆれ,派生形アクターの状況を,それぞれ表9表10に示す.SRS2の基準アクターは,「システム」,「ヘルプデスク」,「業者」,「保守」,「労働局」,SRS3では「システム」,「労働局」,「者」とした.

表9 SRS2中の定義漏れ,アクター定義からの表記ゆれ,派生形アクターの件数
SRS2中の定義漏れ,アクター定義からの表記ゆれ,派生形アクターの件数
表10 SRS3中の定義漏れ,アクター定義からの表記ゆれ,派生形アクターの件数
SSRS3中の定義漏れ,アクター定義からの表記ゆれ,派生形アクターの件数

SRS2中の派生形アクターは,「定義漏れ」に対し延べ71.5%,正味70.0%であった.組織名を含む派生形アクターの件数と「抽出件数」に対する割合は,延べ108件,14.4%,正味11件,18.0%であった.SRS2中の定義漏れアクター,すなわち,表7に示すアクター定義には定義されていないが,SRS2中のシナリオには出現するアクター名として,「システム管理部門」,「システム運用・保守統括者」があった.表7のSRS2のアクター定義には,「情報システム運用業者」が定義されており,「システム管理部門」や「システム運用・保守統括者」との関連があると想定できるもののSRS2中には明確化されていなかった.

定義漏れのアクター定義を改める作業において,第5章で述べたツールにより生成した,「システム」を基準アクターとする派生形アクターリストを参照すると,これら3つのアクター名は「システム」を共通用語として関連づけて把握することができる.

SRS2では,定義漏れアクターの70.0%,42件が派生形アクターとして整理でき,基準アクターを「システム」,「ヘルプデスク」,「業者」,「保守」,「労働局」とした場合に5個の派生形アクターのグループを定義できた.派生形アクターとしてグループ化されたアクター名が,実際に関連するアクター名かどうかについては,現状では確認しきれていない.しかし,派生形アクターである42個を,5個の派生形アクターのグループに分類して再定義し,その後,派生形アクターには含まれていない残り18件の定義漏れアクターを再定義することにすれば,定義漏れアクター正味60件のアクターを個別に再定義するよりも,効率的にアクターの定義の確認が行えると考えられる.

SRS3中の派生形アクターは,「定義漏れ」に対し延べ60.0%,正味50.0%であった.組織名を含む派生形アクターの件数は延べと正味ともに5件であり,「抽出件数」に対する割合は,延べ10.6%,正味16.7%であった.SRS3においても,SRS2と同様に,定義漏れのアクター名を,派生形アクターによりグループ化しておくことで,定義漏れアクターを個別に再定義するよりも,効率的にアクターの再定義が行えることが期待できる.SRS3中のシナリオに出現する未定義のアクター名には,「都道府県労働局長」,「労働局総務部担当者」があった.SRS3のアクター定義では,「都道府県労働局職員」,「都道府県労働局」は定義されているが,「都道府県労働局長」,「労働局総務部担当者」との関係性は明記されていない.SRS3では,たとえば「労働局」を基準アクターとすると,「都道府県労働局長」,「労働局総務部担当者」,「都道府県労働局職員」,「都道府県労働局」を関係づけて把握できる.

SRS3では,定義漏れアクターの50.0%,15件が,「システム」,「労働局」,「者」を基準アクターとする,3つの派生形アクターのグループに整理できた.SRS2で述べたように,個別に未定義のアクター名である正味30件を再定義する作業よりも,派生形アクターの15件を,3つのグループに分けて再定義した後,残りの定義漏れアクター15件を再定義することで,作業の効率化が期待できる.

ところで,SRS3では,アクターの出現件数は少ないものの,「労働局」等の組織名を含む派生形アクターはシナリオ中の複数ページに散在していた.「労働局」の組織変更が発生した場合,個別にシナリオに対する修正変更を行うよりも,「労働局」を基準アクターとする派生形アクターを抽出し,そのアクター名が記述されたシナリオをグループ化することで,修正変更の影響や確認の作業の効率化も期待できる.

7.得られた教訓

要求仕様書の理解,作成,組織変更による要求仕様書への影響に関して得られた教訓を以下に整理する.また,他分野への適用に関しての考察を示す.

要求仕様書の理解の際は,要求仕様書中には未定義のアクター名が多数記述されている前提で読むべきである.分析した要求仕様書SRS1,SRS2,SRS3のアクターの定義状況(SRS1については2.4節の表3,SRS2については6.3.2項の表9,SRS3については6.3.2項の表10)に示したように,要求仕様書中のシナリオ中に表れるアクター名の90%以上が要求仕様書内で役割や名称が未定義のまま使用されていた.

SRS1については3.2節と3.4.2項,SRS2とSRS3については6.3.2項で述べたように,未定義のアクター名の50%以上は,アクター定義に定義された複数のアクター名に共通した基準アクターを派生元とする派生形アクターであった.要求仕様書の理解において,未定義のアクター名を個別に確認し,アクター定義を改めるよりも,基準アクターに基づいたアクターの派生関係を抽出し,基準アクターを共通用語とするアクター名をグループ化して,役割や関係性を検討すると効率的である.

要求仕様書を作成する過程において,シナリオ内に新規のアクター名が出現したならば,アクター定義表を更新し,アクター定義表が要求仕様書中のアクター名を網羅するように,継続的にアクター定義表を更新することが重要である.3.3節で述べたように,要求仕様書中の多くの派生形アクターが未定義のままとなっている要因は,シナリオを記述しながらアクターの役割を詳細化したためと考えられる.

SRS1については3.2節と3.4.2項,SRS2とSRS3については6.3.2項で述べたように,定義漏れアクターを個別に列挙して定義するよりも,「職員」,「機構」,「機関」等の関連するグループ別に派生関係を分類して,アクター名の定義を記述する方が効率的と考えられる.

ところで,3.2節の表5のSRS1の「職員」を基準アクターとする派生形アクターには,「事務センター職員(委託)」,「事務センター職員(年金事務所職員)(1次審査者)」等の「委託」や「1次審査者」等の役割が追加されて記述されたアクター名がある.このように,派生形アクターを基準アクターごとに比較すると,アクター名の一部(たとえば「()」の中に)役割が記述している等の特性がある.3.2節の図3で一般化したように,『「事務センター職員」の後に「()」を付与して役割名を記述することにする』等,アクター名の定義方法を明記しておけば,すべてのアクター名を個別に列挙するよりも,要求仕様書の作成作業が効率化されると考えられる.

組織変更が発生した場合,変更があった「組織名」,その「組織名」の「派生形アクター」,その「派生形アクター」を「基準アクター」とする「派生形アクター」というような派生関係をたどり,それらが出現するシナリオの内容の変更を確認することが重要である.4.2節に示したように,実際の組織変更では,変更があった組織名に加えて,その組織に所属する職員等も組織変更の影響を受けると考えられる.変更があった組織名を含む派生形アクターの「基準アクター」による「派生形アクター」が使われているシナリオを調査し,組織変更があったことで,当該シナリオが示す業務内容に変更がないかどうか確認することが重要であると考えられる.さまざまな「派生形アクター」が出現するシナリオの抽出には,ツールを活用すると効率的である.

他分野へも本手法を適用する際には,あらかじめ組織内で基準アクターの候補を共有しておくと,提案する手法の導入がスムーズであると期待できる.「職員」,「システム」,「者」は,情報システムの要求仕様書に共通する用語である.SRS1,SRS2,SRS3以外の情報システムに対しても,これらを基準アクターとして組織で共有することは妥当であると考えられる.また,組込みシステムやIoTに基づくシステムに対しては,操作仕様中の定義漏れや表記ゆれを指摘するために,「センサ」,「デバイス」,「コントローラ」,「スイッチ」等の要素を基準アクターとして設定することが有効と考えられる.

8.関連研究

要求定義において,要求の源泉となるステークホルダを明確化することの重要性は明らかである[16].PMBOKによれば,プロジェクトにかかわるステークホルダの管理が重要であり,ステークホルダ・マネジメントの成果物としてステークホルダ登録簿を作成することが標準化されている[17].本稿で着目したアクターとは,対象システムの利用者や連携する組織や他システム等であり,ステークホルダの中核をなす.したがって,情報システム開発においてアクター定義を明確化することは重要である.

政府によるデジタル・ガバメント推進標準ガイドライン実践ガイドブックによれば,利用者視点による要求の把握を怠ったプロジェクトの失敗経験に基づき,サービス・業務企画においては,利用者(つまりアクター)を中心に要求獲得すべきことが述べられている[4].同ガイドラインでは,アクターの役割を明確にして要求定義をすることが求められている.また,文献[18]は,アクターを含むステークホルダ定義が不十分であったために,要求獲得における手戻りコストが発生した失敗事例を示した.

このようにアクター定義を明確化すること,定義されたアクターの視点で業務を設計し,シナリオを明確化することの重要性が増している.本稿では,既存の要求仕様書において,定義されていないアクター名の使用頻度が高い現状を示し,未定義のアクター名のアクター定義からの表記ゆれや派生関係に着目することで,未定義のアクター名を要求仕様書全体から効率的に洗い出すためのプラクティスと手法を提案した.本稿で提案するプラクティスや手法を活用した要求定義を行えば,アクター定義とアクター視点でのシナリオの明確化がスムーズに行え,前述のガイドラインに沿った形で要求定義に貢献すると期待できる.

自然言語で記述された要求仕様書の検証方法に関して有用な研究がされている[19], [20].文献[19]は,要求仕様書中の「()」表現に着目し,自動検出や使用時のルールを提案した.文献[20]は,要求仕様書の文章構造と構文構造を用いて,問題点を検出する手法と検出の自動化ツールに関する研究である.

文献[19]は,ソフトウェア開発文書中の「()」表現の用法を,参照先,具体例,所属,限定,言い換え,並列,重要情報に分類し,あいまいさを回避するための使用可否のガイドラインを提案した.本稿で着目したアクター名のアクター定義からの表記ゆれや派生関係が生じる場合には,定義されたアクター名に「()」表現を付加した記述が含まれる.あいまいとなるリスクのある記述として「()」表現に着目した点が,文献[19]と本稿は共通している.ところで,文献[19]は,開発文書全体から「()」表現の使用個所を特定し,要求仕様書に記述されたアクター名はとくに識別していない.また,本稿では,「()」表現以外のアクター名のアクター定義からの表記ゆれや派生関係を特定しているが,文献[19]では「()」以外のあいまい表現については特段取り上げてはいない.本稿は,アクター定義に定義されたアクター名から,「()」表現以外の表現も含む,アクター定義からの表記ゆれや基準アクターにもとづく派生関係に着目した,あいまいさを誘発するアクター名の特定の効率化に着目した点で特徴的である.なお,未定義のアクター名に「()」表現が使われていた場合,「()」の利用可否を含めてアクター名の定義を検討する際に,文献[19]のガイドラインの活用が有効であると考えられる.

文献[20]は要求仕様書の文章構造や構文構造に起因する,要求仕様書の問題点の検出に効果的であると考えられる.文献[20]の成果と本稿で提案した派生形用語抽出機能を併用することにより,構文解析が困難な部分の問題点の検出を補完し,網羅的な問題点を検出可能になると考えられる.

自然言語で記述された要求仕様書をモデルに変換し,それを検証する手法も研究されている[21], [22].文献[21]は,自然言語で記述された要求仕様書からDFD(Data Flow Diagram)を生成し,要求仕様の抜け漏れを検出する研究である.文献[22]は,自然言語で記述された要求仕様書をRDF(Resource Description Framework)で定義された中間言語CIL(Common Intermediate Language)に変換,解析する方法と解析の自動化ツールを提案している.

自然言語で記述された要求仕様書をモデルに変換する手法は,要求仕様の構造や振る舞い全体の網羅性や一貫性を検証するために有効であると考えられる.要求仕様書からモデルに変換する過程でモデルを構成する設計要素名が統一されていないと,変換したモデル自身の品質が低下する.本稿で提案した派生形アクターの自動抽出機能を活用すれば,モデルを構成する設計要素の統一化に貢献できると考えられる.

9.まとめ

要求仕様書において重要であるアクターは,ほとんどが未定義である.未定義のアクター名は組織名を含む,用語の修飾または省略による派生である傾向がある.本稿では実案件の要求仕様書を取り上げ,アクター名の組織との関係と派生パターンを分析した.分析結果からアクター名を効率的に抽出するツール開発と組織変更を想定した要求仕様書の理解,作成,維持管理に関して得られた教訓を報告した.

謝辞 要求仕様の一貫性検証支援ツール開発にかかわる研究は,独立行政法人情報処理推進機構技術本部ソフトウェア高信頼化センター(SEC: Software Reliability Enhancement Center)が実施した「2015年度ソフトウェア工学分野の先導的研究支援事業」の支援を受けたものである.また,本研究はJSPS 科研費 JP16K00105,JP19K11907の助成を受けた.

参考文献
  • 1)(一社)情報サービス産業協会REBOK企画WG編:要求工学知識体系,近代科学社 (2011).
  • 2)日経コンピュータ:やはり要件定義が主因,特集1 動かないコンピュータ,日経コンピュータ2017年8月3日号,pp.34-37, 日経BP社 (2017).
  • 3)(一社)情報サービス産業協会 REBOK企画 WG 編:要求工学実践ガイド,近代科学社 (2014).
  • 4)内閣官房情報通信技術(IT)総合戦略室:デジタル・ガバメント推進標準ガイドライン 実践ガイドブック,2019年3月26日発行, https://cio.go.jp/guides (参照 2019-6-18)
  • 5)位野木万里,近藤公久:要求仕様の一貫性検証支援ツールの提案と適用評価, SEC journal No.49, 第13巻第1号, pp.16-23, 情報処理推進機構 (2017).
  • 6)位野木万里,近藤公久:省略と修飾パターンを用いた用語不一致検証による要求仕様の一貫性検証支援ツールの実現,コンピュータソフトウェア,日本ソフトウェア科学会, 35巻3号 (2018).
  • 7)高橋宏季,野村典文,位野木万里:要求仕様書からのアクター自動抽出と派生形に注目したアクター定義生成,研究報告ソフトウェア工学(SE), 2018-SE-198 (1), pp.1-7, 情報処理学会 (2018).
  • 8)厚生労働省:年金業務システム(個人番号管理サブシステム等(2次開発情報連携分))に係る設計・開発等業務およびアプリケーションソフトウェア保守業務調達仕様書(案), http://www.mhlw.go.jp/sinsei/chotatu/chotatu/shiyousho-an/160428-1.html (参照 2017-02-11)
  • 9)日本年金機構:アニュアルレポート2014, https://www.nenkin.go.jp/info/annual/0330.html (参照 2018-4-30)
  • 10)日本年金機構:日本年金機構が組織再編を行います, http://www.nenkin.go.jp/oshirase/press/2016/201603/20160331.html (参照 2018-4-19)
  • 11)日本年金機構:日本年金機構再生プロジェクトの取組状況~プロジェクトの現在地と更なる加速へ~, http://www.nenkin.go.jp/oshirase/press/2017/201709/20170904.html (参照 2018-4-19)
  • 12)日本年金機構:日本年金機構の組織図, http://www.nenkin.go.jp/info/soshikizu.html (参照 2018-4-19)
  • 13)高橋宏季,野村典文,近藤公久,位野木万里:要求仕様書における派生形アクター自動抽出手法:組織変更による影響対応への効果, ソフトウェアエンジニアリングシンポジウム2018論文集,pp.121-129,情報処理学会 (2018).
  • 14)厚生労働省:労働保険適用徴収システムに係るシステム運用業務一式調達仕様書(案), https://www.mhlw.go.jp/sinsei/chotatu/chotatu/shiyousho-an/160413-1.html (参照 2018-7-26)
  • 15)厚生労働省:労働基準行政情報システムに係るアプリケーションプログラム改修等業務一式(平成28年度)(案), https://www.mhlw.go.jp/sinsei/chotatu/chotatu/shiyousho-an/151204-1.html (参照 2018-7-26)
  • 16)Sharp, H., Finkelstein, A. and Galal, G. : Stakeholder Identification in The Requirements Engineering Process, Proceedings of 10th International Workshop on Database & Expert Systems Applications (DEXA), pp.387-391 (1999).
  • 17)Project Management Institute, Inc.: プロジェクトマネジメント知識体系ガイド PMBOK ®ガイド 第6版, Project Management Institute, Inc. (2017).
  • 18)位野木万里:要求獲得におけるステークホルダ識別手法の実適用評価,情報処理学会ディジタルプラクティス, Vol.4, No.4 (Apr. 2013), 情報処理学会 (2013).
  • 19)杉本 駿,南田幸紀,原田山人:ソフトウェア開発文書におけるかっこ表現ばらつき抽出, ソフトウェアエンジニアリングシンポジウム2017論文集, pp.265-269, 情報処理学会 (2017).
  • 20)林 晋平,有賀 顕,佐伯元司:Reqchecker:IEEE830の品質特性にもとづく日本語要求仕様書の問題点検出ツール,電子情報通信学会論文誌 D, Vol.J101-D, No.1, pp.57-67, 電子情報通信学会 (2018).
  • 21)弓倉陽介,和田大輝,鷲見 毅,藤本 宏,村田由香里:自然言語解析を用いた要求仕様の評価手法, 研究報告ソフトウェア工学(SE), 2013-SE-181 (17), pp.1-8, 情報処理学会 (2013).
  • 22)青山幹雄,中根拓也:ReqQA:ソフトウェア要求仕様書品質解析ツールの提案と評価,情報処理学会論文誌, 57 (2), pp.694-706, 情報処理学会 (2016).
高橋 宏季(学生会員)em18007@ns.kogakuin.ac.jp

工学院大学工学研究科情報学専攻修士課程在学中.2018年工学院大学情報学部コンピュータ科学科卒業.

野村 典文(正会員)norifumi.nomura@ctc-g.co.jp

伊藤忠テクノソリューションズ(株)技監.IT戦略,システム企画,要求分析などの超上流を担当し現在に至る.近年はデータを活用したディジタル改革(DX)支援に取り組む.博士(数理情報学),技術士(情報工学).

近藤 公久(非会員)tkondo@cc.kogakuin.ac.jp

工学院大学情報学情報デザイン学科教授.1986年慶応義塾大学大学院修士課程修了.日本電信電話(株),(株)NTTデータ技術開発本部およびOSS開発センター,ATR知能ロボティクス研究所を経て,2014年より工学院大学,博士(学術).

位野木 万里(正会員)m_inoki@cc.kogakuin.ac.jp

工学院大学情報学部コンピュータ科学科教授.1991年(株)東芝入社以降ソフトウェア工学の研究に従事.2008年早稲田大学大学院理工学研究科情報・ネットワーク専攻博士課程修了.2014年より工学院大学,博士(工学).

投稿受付:2019年4月24日
採録決定:2019年10月15日
編集担当:峯 恒憲(九州大学大学院)