山修の開発文書品質入門(2) ―― 文書の複雑さを数える

山修の開発文書品質入門(2) ―― 文書の複雑さを数える

カテゴリ : 
基礎知識
 2011-12-1 16:50

山本 修一郎

開発文書の複雑さを計測するにはどうしたらよいでしょうか? 本稿では,開発文書の複雑さを,名詞句の個数に基づいて計測する方法[1]を紹介します.

■文書の複雑さの測定方法

文書を計測すると聞いてまず思いつくのは,ページ数や文字数を計測する方法です.また,文に含まれる単語を計測することもできます.単語には,接続詞や助詞などといった繰り返し出現する語も含まれます.助詞や接続詞は単独では意味を持たないので,これらを省いて名詞や名詞句,動詞だけを計測することもできます.名詞句(「寒い日」など)は,名詞(「日」)が指示する対象の属性や状態(「寒い」)を指定することができます.

基本的に,一つの文には一つの動詞が対応しているので,文の個数が動詞の個数に一致します(名詞句の中に出現する動詞は除く).同じ個数の文を含む複数の文書を比較した場合,動詞の個数は一致しますが,名詞句(名詞を含む)の個数は異なる場合があります.したがって,動詞の個数を計測するよりも名詞句を計測するほうが,文書の複雑さを計測するのに適していると考えられています.

■名詞句の例

例として,前回も参照したNPO法人 組込みソフトウェア管理者・技術者育成研究会(SESSAME)の「話題沸騰ポット 要求仕様書」[2]第7版の要求文に含まれる名詞句を調べてみましょう.

 


[pot-320] 設定されたモードの温度にポット内の水温を保持する.
 

 

この例文には,「設定されたモードの温度」と「ポット内の水温」という二つの名詞句があります.

■名詞句複雑度を定義する

N個の文からなる文書に,M個の名詞句が含まれているとします.同じ名詞句が文書の中で繰り返し出てくることがあります.そこで,すべての名詞句が文書の中で1回しか出てこない場合に対して,同じ名詞句が複数回出てくる場合の方が,文書の複雑さが小さいと考えると,次のように「文の名詞句複雑度」を定義できます.

 

[定義] 文の名詞句複雑度 NPC (Noun Phrase Complexity)
j番目の文に含まれる名詞句が,文書内で出現する回数の逆数の総和を,j番目の文に対する名詞句複雑度と呼ぶ.

 

わかりやすいように,具体例を挙げてみます.なお,こちらも話題要求ポット 要求仕様書の注意書きに一部手を入れて引用しました.

 


  この要求仕様書は,版数により,想定している用途が異なります.第1版~6版は,現実の開発現場でよく見受けられる曖昧さを含んだ仕様書として作成しました.曖昧部分に気づき,要求仕様書はどこまで詳細に分析し,明確に表現すべきかを考えていただける教材と考えています.第7版は,できる限 り曖昧さを無くした仕様書の例として作成しました.なお,私たちは,要求分析の最終段階ではこの記述レベルまで明確にすることを期待しています.
 

 

この文書は五つの文で構成されています.1番目の文には「要求仕様書」,「版数」,「想定している用途」という名詞句が含まれています.「要求仕様書」が文書内で出現する回数は2回なので,その逆数は1/2です.「版数」と「想定している用途」はそれぞれ文書内で1回ずつしか出現しないので,逆数もそれぞれ1です.つまり,1番目の文の名詞句複雑度は,2.5となります.ここでもし,2番目の文に含まれる「仕様書」を「要求仕様書」に変更すると,1番目の文の名詞句複雑度は2.3になります.

ここで,文についての複雑度の定義を基に,文書についての複雑度を示す指標として「文書の名詞句複雑度」を定義できます.

 

[定義] 文書の名詞句複雑度
文書に含まれる,文ごとの名詞句複雑度の総和を,文書の名詞句複雑度と呼ぶ.

 

例えば,N個の文からなる文書に名詞句が1個しかない場合(同じ名詞句を繰り返しており,動詞だけが異なる場合など),この文書の名詞句複雑度は1になります.一方,N個の文からなる文書にM個の名詞句があり,名詞句がそれぞれ1回ずつしか出現しない場合,この文書の名詞句複雑度はMになります.
したがって,文書の名詞句複雑度は,名詞句が文書内でどれだけ繰り返し出現するかによって減少するような尺度であるということができます.

■要求文の複雑度を計測する

それでは,話題沸騰ポット 要求仕様書 第7版に含まれる要求文を見ながら,この文書の複雑度を計測してみましょう.以下が,要求文の一覧となります.

 


[pot-210] コンセントの抜き差しで,ポットを利用できない状態/利用できる状態にする.
[pot-220] アイドルの状態で,蓋を閉じたら、水位を確認し,条件に合えば沸騰行為をする.
[pot-221] 蓋をあけたら(開いていたら),ロックは解除され,温度制御行為はしない.
[pot-230] 保温行為中で,沸騰ボタンを押すと,沸騰行為をさせる(沸騰できる).
[pot-240] 3種類の保温の温度に設定できる.
[pot-250] 給湯に対するロック/ロック解除機能を付ける.
[pot-260] 給湯ボタンを押すことによって給湯口から給湯する.
[pot-270] タイマボタンを押すことで,時間を分でセットし,タイマを起動できる.
[pot-271] タイマボタンを長く押すことで,タイマをリセットし,タイマを停止できる.
[pot-272] ユーザーが指定した時間がきたら,ブザーを鳴らして知らせる.
[pot-280] ポット内の水量をインジケータで表示する.
[pot-310] 水を沸騰させる.
[pot-311] カルキ抜きをする.
[pot-312] カルキ抜きが終わったら,保温行為をする.
[pot-320] 設定されたモードの温度にポット内の水温を保持する.
[pot-330] 沸騰行為も保温行為もできないときは温度制御はしない.
[pot-400] ヒータをon/offすることにより水温を制御する.その制御方式は制御周期と操作量(%)により行う.
[pot-500] 想定外の高温状態になった場合はエラーを検知し,ヒータ機能を停止する.
 

 

話題沸騰ポットの要求文の個数は18個です.この要求文には41個の名詞句があります.この中に,1回しか出現しない名詞句が35個,2回出現する名詞句が4個,3回出現する名詞句が2個ありました(図1の青い実線を参照).したがって名詞句の出現回数は49です.

ちなみに,2回出現する名詞句は,「蓋」「タイマボタン」「カルキ抜き」「保温行為」.3回出現する名詞句は「沸騰行為」と「タイマ」です.なお,名詞も修飾語のない名詞句として数えています.

 

図1 話題沸騰ポットの名詞句数と出現回数

 

上述した方法で,話題沸騰ポットの要求文18個に対する文書の名詞句複雑度を計算すると約41となり,名詞句の個数である41に近い結果になりました.したがって,名詞句複雑度から見ると,かなり複雑だということになります.

話題沸騰ポットの要求文に含まれる名詞句には類似するものもあるので,表現を見直すことにより,名詞句ごとの出現頻度を向上できる可能性があります.たとえば,繰り返し出現する名詞句を増やすことができれば(図1の赤い点線を参照),この要求文書に対する文書の名詞句複雑度を減らすことができます.

 


参考文献
[1] Chao Y. Din, Requirements Content Goodness and Complexity Measurement Based On NP Chunks, VDM Verlag Dr.Muller, 2008
[2] 組込みシステム教育教材 話題沸騰ポット GOMA-1015型 要求仕様書,http://www.sessame.jp/workinggroup/Wo ... up2/POT_Specification.htm
 

  • コメント (0)
  • トラックバック (0)
  • 閲覧 (22999)

トラックバック

トラックバックpingアドレス https://asdoq.jp/blog/tb.php/6

メニュー

サイト内検索

カテゴリ一覧

ログイン

ユーザ名:

パスワード:

次回からIDの入力を省略



パスワード紛失