SHIBAURA MOT DISCUSSION PAPER
芝浦工業大学大学院工学マネジメント研究科
ディスカッションペーパー

数学的手法による要件定義分析
安岡 孝司

Discussion Paper No. 2013-2

Shibaura Institute of Technology
Graduate School of Engineering Management

芝浦工業大学大学院
工学マネジメント研究科〒135-8548 東京都江東区豊洲 3-7-5

芝浦工業大学大学院工学マネジメント研究科(MOT)ディスカッショ
ンペーパーは 研究科の教職員と学生の専門的かつ独創的な研究の促進を図り、広く学術の振興 及び教育の発展に資するために研究成果をワーキングペーパーとして公表するも のです。ディスカッショ
ンペーパーの著作権は著作者に帰属します。
The MOT Discussion Paper Series is published as a working paper.
The copyright is retained by the author(s).
1SHIBAURA MOT DISCUSSION PAPER 2013-2
2013 年 10 月 4 日

数学的手法による要件定義分析
Mathematical Approach for Requirement Definition Analysis

安岡 孝司
Takashi YASUOKA*

Abstract
The aim of this study was to create a tool that allows unimpeded communication between the developers andusers of a system and that allows them to share the same recognition of requirements and requirements
definitions. For this purpose, we explored a method to elucidate consensus building between users anddevelopers by writing requirements definitions in the users’ operating language. At the same time, we specified
user requirements with requirements definitions by simply modeling the system concept. Subsequently, wemathematically defined the concepts of a system and of a requirements definition and derived an algorithm that
detects the inadequacy of a requirements definition on the basis of a strict theoretical framework.
概要
本稿はユーザとシステム開発者の双方が要求と要件定義を共有認識し、意思疎通をスムーズ化するツールを提供することを目的としている. そのために、要件定義をユーザの業務言語で表記することで、ユーザと開発者との合意形成を明確化する方法を考える。またシステムの概念を単純にモデル化し、ユーザ要求と要件定義を同一視する。
次にシステムと要件定義の概念を数学的に定義し、要件定義の不備を検出するアルゴリズムを厳密な論理展開に基づいて導く。

Keywords : requirement definition, system development, project management, mathematical approach

キーワード : 要件定義、システム開発、プロジェクトマネジメント、数学的手法* 芝浦工業大学大学院工学マネジメント研究科

yasuoka@shibaura-it.ac.jp

1

1

はじめに

システム開発時に発注者とシステム開発者間の意思疎通が不十分なことが原因で、システム開発が失敗する場合があり、意思疎通の正確化のため様々な方法が提唱・研究されている。その方法がいくら優れていても難解だと、システム開発者にとって扱いにくく、発注者も自分の意図が正しく伝わったかをチェックできない。本研究は発注者とシステム開発者の両者が要求と要件定義を共有認識し、意思疎通をスムーズ化するツールを開発することを目的としている. そのツールでは特殊な学問や専門用語を使わず、発注者の業務言語で表記できるものにすれば、双方の合意形成を可視化できる。ツールに搭載するプログラムで、要件定義の論理的な不備をチェックすれば、両者のコミュニケーションの場で要件定義をチェックできる。図１はそのコンセプトを表したものである。
このアプローチの第一歩として、本稿で扱うシステムは大規模な人数の会員を管理するもので、個々の会員の属性によってオペレーションをひとつ定める静的なものである。そしてシステムと要件定義の概念を数学的に定義し、厳密に理論体系を構築する。このフレームワークの下で要件定義が無謬であるための数学的条件を導き、無謬性の判定法を実行可能な形で表す。しかしこのアルゴリズムには無駄が多いので、さらに計算を簡略化する方法を示す。
これらの結果は直感的に既知のことかもしれないが、本稿では数学的に厳密な議論ができるフレームワークを構築しており、より複雑なものに発展させられるものである。論文中で扱う数学は大学１，２年次程度の集合論のみであり、専門的な知識は不要である。

2システムと要件定義

コンピュータシステムには様々なものがあるが, 本稿では大量の個人データに対して各個人の属性に依存するオペレーションを対応させる静的なシステムを扱う. このようなシステムを数学上の概念として定義することから議論を始める.

X をデータの集合とし, x ∈ X をその元とする. O をオペレーション全体の集合とし、その元をo で表す。オペレーションという概念がどこまで含むかを厳密に定義することは難しい。ここでは通常のシステム開発時の要求のようなものを意味していることにしたい。(x, o) は x にオペレーション oが対応すること、つまり、o は x に何らかの行為を行ったり、行わせたりすることを意味する。(x, o)の全体を (X, O) で表す。(X, O) には一つの元 x に複数のオペレーションが対応する場合があったり、オペレーションが紐付けられていない元 x の存在もあり得る。
例 2.1 あるクラブの会員管理システムの場合, x ∈ X は個々の会員データを表し, X はその全体集合である. o1 は会員にＤＭを送る. o2 はＤＭを送らないというオペレーションとする. そして O = {o1 , o2 }とおく. (x1 , o1 ) は x1 にＤＭを送ることを表し、(x2 , o2 ) は x2 にＤＭを送らないことを表す。対応がこの２件のみであれば(X, O) = {(x1 , o1 ), (x2 , o2 )}である。

2

会員管理システムで, 時刻 t における会員データの集合を Dt で表すと、入退会によって Dt は時刻とともに変動する. システム開発時 t = 0 にわかっているデータ D0 でシステムが要求どおりに稼働しても, その後会員が増加したとき, Dt に対して要求通りに稼働するとは限らない. したがって, 想定しうる最大規模会員の集合 X に対してシステムが発注者の要求どおりに機能する必要がある. たとえば,国内店舗で使えるポイントカードの会員システムを扱うとき, X は国内在住者全体を想定することになろう.

定義 2.1 (X, O) が以下の i)〜iv) をすべてみたすとき、(X, O) は”半完全システム”であるという. また i)〜v) をすべてみたすとき、”完全システム”であるという.

i) i ̸= j のとき oi ̸= ojii) すべての o ∈ O は X を変えないiii) すべての o ∈ O は O を変えないiv) オペレーション O はある時刻に同時に X に作用する.
v) すべての x ∈ X に対してあるオペレーション oi が一意的に定まる.
たとえば預金管理システムの場合, x ∈ X は各会員の預金残高を表し, O は預金者の現金を引き出すオペレーションとする. このとき引き出しによって残高 x が変わる. 条件 ii) はこのようなオペレーションを除外している.

x1 , x2 ∈ X の各元にそれぞれ o1 , o2 のオペレーションが作用するとしよう. o1 は x1 にピザを届ける, o2 は x2 にそのピザを途中で奪わせる, としよう. 結果的に x1 はピザが届かないので o2 は o1 を変えたことになる. 条件 iii) はこのようなオペレーションを除外している.
会員数や属性は時刻とともに変化するが, 上の条件は固定された状態ですべての x になんらかのオペレーションを一意的に行うことを意味する. 一般のシステムでは時間経過やオペレーションによって X の内容や O が変化するが, 各時刻ごとに更新後の X と O を固定して考えれば定義 2.1 の条件でも実際のシステムの多くに適用できるであろう. 本稿では (X, O) は常に半システムの条件を満たすものとして議論を進める。(X, O) が完全システムのとき (x, o) から写像 f (x) = o を定義でき、f は Xから O への全域写像である。文脈によっては f を完全システムと呼ぶ場合もあるが、混乱は生じないであろう。
以下では C = {Ci }i は X の部分集合の族とする. F を C から O への写像とし, (F, C) を”要件定義”という. 本稿の目的は要件定義 (F, C) がどのような条件を満たせは完全システム f を構築できるかを示すことである.

定義 2.2

要件定義 (F, C) が次の条件を満たすとき (F, C) は X 上で”無謬”という.

i) ∪i Ci = Xii) Ci ∩ Cj ̸= ϕ なら, F (Ci ) = F (Cj ) である.

3

命題 2.1

X, O, F, C が与えられているとする. (F, C) が X 上で無謬のとき, X から O への全域写像 f が一意的に存在する.
証明定義 2.2.i) より, 任意の x ∈ X についてある Ci が存在し, x ∈ Ci である. f を f (x) = F (Ci ) と定義する. x を含む C の元が２個存在するときはそれらを Ci , Cj とすると, 定義 2.2.ii) より F (Ci ) = F (Cj )である. これによって f (x) が一意的に定まるので, f は X から O への写像である. f (x) が X からの全域写像であることは条件 i) からわかる. 証明終.

この命題により, 要件定義 (F, C) が無謬か否かをチェックすれば, 完全システム f を構築できる.

例 2.2 X は日本在住の成人全体の集合, D(⊂ X) はあるクラブの会員とする. 発注者の要求を”男性会員には誕生日にネクタイを贈り, 女性会員には誕生日に花を贈る”としよう. C = {C1 , C2 }, O = {o1 , o2 }とし, C1 = ”男性会員”, C2 = ”女性会員” とおくと、C1 ∪ C2 = X を満たす. 次に o1 = ”誕生日にネクタイを贈る”, o2 = ”誕生日に花を贈る” として, F (C1 ) = o1 , F (C2 ) = o2 と定めると, 定義 2.2.ii) から (F, C) は X 上で無謬である. この要件定義では会員の増減によらず, すべての会員にオペレーションを一意的に定義できることもわかる.

実務で要件定義をチェックするときも, c や o などの記号を使う必要はなく, 例 2.2 で扱ったような文字列をそのまま使えばよい. たとえば F (C1 ) = o1 は”男性会員” → ”誕生日にネクタイを贈る”と表現すればよい. このようにすると発注者の要求が業務上の言葉（文字）で表現されるためわかりやすく, 発注者とシステム開発者の間で認識を共有できる.
次に集合 X とその部分集合族 C = {C1 , C2 , · · ·} が存在し, F は C から O への写像とする. またX̃, C̃ = {C̃1 , C̃2 , · · ·}, F̃ も同様とする. ２組の要件定義 (F, C) と (F̃ , C̃) は同じオペレーション O を値域に持つ.

定義 2.3

次の 3 条件をすべて満たすとき, (F, C) と (F̃ , C̃) は”O-同型”という.

i) C から C̃ への全単射が存在する. 簡単のため任意の i = 1, 2, · · · に対して Ci は C̃i に対応するものと仮定する.

ii) Ci ∩ Cj = ϕ が成立するのは, C̃i ∩ C̃j = ϕ が成立するときのみである.
iii) すべての i = 1, 2, · · · に対して F (Ci ) = F̃ (C̃i ) が成立する.
明らかに O-同型は同値関係である. 次の命題は, 同値な要件定義が２種類存在するとき, データ構造の簡単な方で要件定義が無謬か否かを判定すればよいことを意味する.
命題 2.2∪i Ci = X と ∪i C̃i = X̃ であり, (F, C) と (F̃ , C̃) は O-同型と仮定する. このとき, (F, C)が X 上で無謬なら (F̃ , C̃) は X̃ 上で無謬であり, この逆も成立する.

4証明

仮定より定義 2.2.i) は満たされているので, 定義 2.2.ii) を示せばよい. C̃i ∩ C̃j ̸= ϕ とする. このとき, 定義 2.3.ii) から Ci ∩ Cj ̸= ϕ である. (F, C) が X 上で無謬なら, F (Ci ) = F (Cj ) である. 定義2.3.iii) から F̃ (C̃i ) = F̃ (C̃j ) で, (F̃ , C̃) は X̃ 上で無謬である. 逆も同様である.
定義 2.3 において C と C̃ の各元の添え字は自然数タイプのものに限っているわけではなく、なんらかの集合として定義されるものであればよい。その場合にも命題 2.2 が成立することは明らかである。

{S1 , · · · , Sm } は i ̸= j のとき Si ∩ Sj ̸= ϕ を満たす集合族とし, X =∏mi=1 Si とする. つまり x ∈ X は

x = (x1 , · · · , xm ) で表され, xi ∈ Si , i = 1, · · · , m である. 経験的に, 会員管理システムのデータはこのような直積型の構造である（例??.1 を参照）. この節では, 直積型の構造をもつ X 上の要件定義をチェックする方法を構築する.
定義??.1 Ci = {Ci1 , · · · , Ciκi } を Si の部分集合族とする. ここで κi ≥ 2 とする. 次の 3 条件をすべて満たすとき, Ci は Si の”直和分割”という.

i) ∪j=1,···,κi Cij = Siii) すべての j = 1, · · · , κi について, Cij ̸= ϕ, ここで κi は Si の分割数.
iii) l ̸= k のとき Cil ∩ Cik = ϕ
本稿では Si を”属性”, Cij を Si の”セグメント”と呼ぶ. 以降では Ci はいつも Si の直和分割になっているとする. また以下の議論で Si 全体を扱うことがあるので, Ci0 = Si とする. Ci0 は Ci には含まれないことを注意しておく. 次に λ を次式で表される添え字の組とする.

λ = (λ1 , · · · , λm ),0 ≤ λi ≤ κi

λ に対応する X の部分集合 Eλ を次式で定義する.
Eλ =m∏Ciλi = {(x1 , · · · , xm ) ∈ X; xi ∈ Ciλi }

(2.1)

i=1

λ の集合を Λ で表し, Eλ の全体からなる部分集合族を E で表す. つまり E = {Eλ }λ∈Λ である. Eλを”要件セグメント”と呼ぶことにする。個々の λ は発注者のさまざまな要求に対応し, Λ は要件セグメントの全体に対応している.

例??.1 S1 は会員番号, S2 は名前, S3 を住所の属性をもつ集合とする. 個々のデータは

x = (会員番号, 名前, 住所)の形をしている. とくに C31 は首都圏, C32 は首都圏外というセグメントを考えれば,

C3 = {C31 , C32 } = { 首都圏, 首都圏外 }は Si の直和分割である. λ = (0, 0, 1) のとき, 会員番号, 名前の属性は無視され,E(0,0,1) = { 住所が首都圏 }5という部分集合を意味する.

次に E から O への全域写像 F による要件定義 (F, E) を考える. このとき定義 2.2 から次の命題を得る. 証明は省略する.
命題 2.3 次の 2 条件を満たすとき, (F, E) は X 上で無謬である.

i) ∪λ∈Λ Eλ = Xii) λ, γ ∈ Λ に対して Eλ ∩ Eγ ̸= ϕ なら,F (Eλ ) = F (Eγ ) である.
実務で (F, E) の無謬性を検証できるかという観点で考えると, 命題 2.3 は実現可能なアルゴリズムを導かない. その理由は以下のとおりである。X を日本在住者とし, 時刻 t での会員を Dt ⊂ X とする.

t = 0 に (F, E) が D0 上で無謬だとしても, その後の時刻 t に会員増が生じた時, (F, E) が Dt 上での無謬性を t = 0 の時点では判定できない. また X は非会員を含むが非会員のデータは入手できないため,
条件 ii) をチェックできない.
次に実現可能な判定法を構築しよう. Γ は γı , i = 1, · · · , m が正整数をとるすべての添え字の組み合わせの集合とする. これは次で表される.

Γ = {γ = (γ1 , · · · , γm );1 ≤ γi ≤ κi }Gγ を次で定め, G = {Gγ }γ∈Γ とする.
Gγ =m∏

Ciγi = {(x1 , · · · , xm ) ∈ X; xi ∈ Ciγi }

(2.2)

i=1

このとき, ∪γ∈Γ Gγ = X であり, γ ̸= γ ′ に対して Gγ ∩ Gγ ′ = ϕ であることから, G は X の直和分割である. またこれ以上細かい要件セグメントは存在しないので, G を C から生成される X の”最細分割”と呼ぶ. 明らかに, C から生成される X の最細分割は一意的である. m = 2 なら G は表などで可視化されるが, 実務のデータ構造において m は数十以上の規模を想定すべきであり、とても可視化できない. そのため要件定義分析は極端に困難になる.
次の定理は要件定義の実現可能なチェック法を導くものである. その理由は D や X を扱わずに最細分割を使っていることによる.
定理 2.4 (F, E) が X 上で無謬であるための必要十分条件は次の２条件が成立することである.

i) 任意の γ ∈ Γ に対して, ある λ ∈ Λ が存在し, Gγ ⊂ Eλ である.
ii) 任意の γ ∈ Γ に対して Gγ ⊂ Eλ ∩ Eξ を満たす λ, ξ ∈ Λ が存在するとき, F (Eλ ) = F (Eξ ) である.
証明i) と ii) が必要条件であることは明らかなので, 十分条件であることを示せばよい. G は X の直和分割なので, 任意の x ∈ X に対してある γ が存在し x ∈ Gγ である. 条件 i) より, ある λ ∈ Λ が存在し, x ∈ Gγ ⊂ Eλ である. したがって ∪λ∈Λ Eλ = X がわかる.

6

x ∈ Eλ ∩ Eξ が存在するならある γ が存在し, x ∈ Gγ である. G は最細分割なので Gγ は Eλ と Eξ双方の部分集合である. つまり, Gγ ⊂ Eλ ∩ Eξ . 条件 ii) より F (Eλ ) = F (Eξ ) である. 命題 2.3 より(F, E) は X 上で無謬である. 証明終.
定理 2.4 によって要件定義 (F, E) の無謬性は次の手順によってチェックできる. （）内は不備が検出されたときの対応法を示す.

要件定義チェックの手順(1) γ ∈ Γ を固定し, Gγ ⊂ Eλ となる λ ∈ Λ が存在するかを判定する.
(2) 上の λ が存在すれば条件 i) をみたす. もし λ が存在しなければ, (F, E) は無謬ではない. （最細セグメント Gγ に関連する属性セグメントとオペレーションを追加する）(3) γ ∈ Γ に対して Gγ ⊂ Eλ ∩ Eξ を満たす λ, ξ ∈ Λ が存在するかを判定する(4) (3) の λ, ξ が存在する場合は F (Eλ ) = F (Eξ ) であるかをチェックする.
(5) F (Eλ ) ̸= F (Eξ ) のときは, Eλ , Eξ の要件セグメントに対するオペレーションが不整合である.
（該当する要件セグメントとオペレーションを見直す）(6) すべての γ ∈ Γ に対して (1) から (5) を繰り返す.
このアルゴリズムのうち (1) と (3) のプロセスは次の命題によって実行可能である. 証明は省略する.
補題 2.5 任意の γ ∈ Γ, λ ∈ Λ に対して Gγ ⊂ Eλ である必要十分条件は, すべての i = 1, · · · , m でγi = λi か λi = 0 が成立することである.
実務で扱う会員データの属性は非常に多く, オペレーションの内容によって要件定義に使用する属性は異なっていることが一般的である. 例 2.2 でも, 会員に誕生日プレゼントを贈るというオペレーションにおいて性別の属性しか使っていない. また会員にＤＭを送るかどうかというオペレーションを定義するときは別の属性で判断するであろう. すべての属性データを使って定理 2.4 を適用すると、明らかに計算の無駄が多いので効率化したい.
直積型のデータ X, S, C, E, Λ が与えられ, (F, O) は E から O への要件定義とする. X の最細
分割 G, Γ は S, C から自動的に生成される.

固定された自然数 l < m があり, Λ の元はすべて(λ1 , · · · , λl , 0, · · · , 0) の形をしているものとする. Λ̃, λ̃, Ẽ, Ẽλ̃ を以下で定義する．
Λ̃ = {λ̃ = (λ1 , · · · , λl ); (λ1 , · · · , λl , 0, · · · , 0) ∈ Λ}Ẽλ̃ =l∏Ciλii=1Ẽ = {Ẽλ̃ }λ̃∈Λ̃
このとき, F̃ (Ẽλ̃ ) = F (Eλ ) と定義すると, (F̃ , Ẽ) は O を値域とする要件定義である. そしてこの属性
セグメント Ẽ は, 属性 Sj , j > l を参照しない構造である.

7

命題 2.6 (F̃ , Ẽ) と (F, E) は O-同型である.
任意の λ̃ ∈ Λ̃ から λ ∈ Λ を λ = (λ1 , · · · , λl , 0, · · · 0) で対応づける. この関係は Λ̃ と Λ の間の証明

全単射なので, Eλ ∈ E に Ẽλ̃ を対応させれば E から Ẽ への全単射が自然に導かれる. したがって定義

2.3 の i) と iii) が成立する.
次にある λ̃, γ̃ ∈ Λ̃ が存在して Ẽλ̃ ∩ Ẽγ̃ ̸= ϕ であるとしよう. このとき x̃ = (x1 , · · · , xl ) が存在し,各 i, 1 ≤ i ≤ l について xi ∈ Ciλi ∩ Ciγi である. 次に x = (x1 , · · · , xl , xl+1 , · · · , xm ) とする. ここでxj , j > l については xj ∈ Sj であれば何でもよい. すると x ∈ Eλ ∩ Eγ なので Eλ ∩ Eγ ̸= ϕ である. 逆も同様に示すことができる. 証明終.

集合 X̃ を X̃ =∏li=1 Si で定めると, 次の定理を得る.

この結果は (F, Eλ ) の無謬性をチェックするには (F̃ , Ẽ) をチェックすればよいことを意味する. つまりオペレーションの決定に必要な属性のみを抽出して属性セグメントを構成すればよい.
定理 2.7 (F̃ , Ẽ) が X̃ 上で無謬なら (F, E) は X 上で無謬である.
証明

仮定より

X̃ = ∪λ̃∈Λ̃ Ẽλ̃(2.3)

が成立している. 任意の x = (x1 , · · · , xm ) ∈ X に対して x̃ = (x1 , · · · , xl ) を考えると, (2.3) より λ̃ ∈ Λ̃が存在し, x̃ ∈ Ẽλ̃ である. λ = (λ1 , · · · , λl , 0, · · · 0) とおくと, x ∈ Eλ であり, X = ∪λ∈Λ Eλ がわかる.
命題 2.2 と命題 2.6 から (F, E) は X 上で無謬である. 証明終.

例??.1

S1 は住所, S2 は性別, S3 は名前という属性の集合とする. 個々のデータは
x = (住所, 性別, 名前)の形をしている. 全会員の誕生日に何かひとつプレゼントを送るという発注者要求を考える. 発注者
要求は”首都圏の人にネクタイを贈る”, ”女性には花を贈る”としよう. この場合名前は使われていないので, X̃ = {(住所, 性別)} の上で要件定義の無謬性をチェックすればよいことを定理 2.7 は示している.
定理 2.7 に従ってこの要件定義を展開すると図 2 のようになる. この要件定義では, 首都圏外の男性にはプレゼントが贈られないので定義 2.2.i) を満たさない. また首都圏の女性にネクタイと花を贈ることになり定義 2.2.ii) を満たさない.

このような簡単な例では要件定義が図 2 のように可視化されるのでわかりやすいが, 定理 2.4 と定理

2.7 は大規模データであっても、この図の考え方で要件定義の無謬性をチェックできることを示している.

3終わりに定理 2.4 はエクセル VBA などでも実現できる。各属性、セグメント、オペレーションを文字入力できるようにすれば、要件定義に関する専門知識がなくても発注者要求をツール上に記述していくだけで、要件定義の無謬性をチェックできる。図 2 はそのように試作したエクセルシートの入出力例である。

8

実務ではひとつの元に複数の独立なオペレーションを対応させる場合が一般的だが、その場合は目的別に (F, E) の無謬性を判定すればよい。
本稿では同時刻に行うオペレーションを一意的に定めるシステムを対象としたが、複数のオペレーションの中から優先度の高いオペレーションを対応させるシステムに発展させることもできるであろう。例えば買い物で、ある要件セグメントは１割引きのサービスを受け、別の要件セグメントは２割引きのサービスを受けられるとする。そして双方のセグメントに含まれる会員は２割引きのサービスを受けられるような場合である。
他に、会員のクレジットスコアを決めるような、加法的なオペレーションにも発展させることも考えられる。

謝辞
本研究のモチベーションとなる要件定義の課題は平田貞代准教授（芝浦工大 MOT) からご教示いただいた.

9

発注者要求発注者要求

不十分な意思疎通システム開発者

認識共有
業務言語

システム開発者要求と異なる要件定義

要件定義分析ツール
要求とおりの要件定義

システム化

システム化

要件定義の課題

要件定義分析ツールの効果
図１

男性

要件定義の課題と本研究の考え方

女性

首都圏ネクタイを贈る

首都圏外

花を贈る

O
要件セグメント

図 2 要件定義の例
表の各枠は最細セグメント10

属性とセグメントの定義

要件セグメントとオペレーションの定義

定理 3.2 による分析結果

図３ 要件定義分析ツール Exel VBA での実装例

11