山本 修一郎
開発文書品質の研究というと耳新しく聞こえますが,開発文書の構文や構造,要求仕様テンプレートなど,研究の役に立ちそうな素材はこれまでに研究されてきた分野の中に転がっています.この連載コラム「山修の開発文書品質入門」では,開発文書に携わる皆さんに役立ちそうなそれらの知識を分かりやすく解説します. バック・ナンバ |
開発文書の品質を確認するためには,開発文書を読むための方法が必要です.普通の小説であれば,自由に楽しみながら読めばいいのですから,特別な方法に従う必要はありません.しかし,開発文書の場合には,ただ読むだけでは品質が高いのかどうかわからないものです.本稿では,開発文書を読むための方法を紹介します.
文書には,何かしらの事柄と,その事柄に基づく一連の出来事が書かれています.開発文書に書かれている内容は,開発の目的と,その目的を達成するためにこれからシステムとして実現すべき事柄です.とすると,開発文書を読むということは,開発の目的がどんなことであるかということと,システムを使う一連の操作によって,その目的が確かに達成できるということの2つを理解することでもあります.
もし,開発文書を読んで,システムが開発の目的を達成できると確認できれば,開発文書の信頼性は高いといえるでしょう.これに対し,開発文書を読んで開発の目的を達成できないことが確認できたとしたら,開発文書の信頼性は高いとはいえないでしょう.
システムが開発の目的を達成できるのかできないのかを読み取るためには,開発文書から引き出された「事実」に基づいて,それらから生じる可能性のある一連の出来事によって目的が達成できるかどうかを客観的に明らかにしていくような開発文書の読み方が必要になります.この過程では,期待や憶測を排除することが大切です.そうしないと,文書に記載されていない事柄に基づいて判断してしまうことになるからです.
文書に記述された事実に基づいて「システムを操作すると,どのようなことが生じるのか」を確認する方法を,「事実に基づく読解法」と呼ぶことにします.この方法はあえて名前を付けるほどでもないくらい単純なものなので,ソフトウェア工学の教科書にも出てきません.このコラムで初めて使った名称です.
それでは,このコラムでいつもお世話になっているNPO法人 組込みソフトウェア管理者・技術者育成研究会(SESSAME)の要求仕様書「話題沸騰ポット」[1]の要求文を,事実に基づいて読解してみましょう.
読解に使う要求文を表1にまとめました.
表1 話題沸騰ポットの要求文の一部
この要求文[pot-220]を読むと,このポットが沸騰行為を行うためには,蓋を閉じた際に水位が条件に合う(水量が異常でない)という事実が必要だと分かります.また,[pot-280-11]を読むと,満水センサがonだと水量異常と判断されるという事実が分かります.さらに[pot-110-12]を読むと,満水センサのデフォルトがonだと分かります.
さらに,満水センサがoffになる契機を探すと,どこを読んでも出てきません.したがって,常に満水センサはonである(水量異常である)という事実が判明します.
これを整理すると,以下の一連の事実が明らかになります.
(事実1)満水センサのデフォルトはonである[pot-110-12]
(事実2)蓋センサがonになって3sec経過した時点で,満水センサはonを検出する.すなわち,このポットの許容上限を超えている(水量異常)と判断される[pot-280-11]
(事実3)蓋が閉じられても,水量が異常な場合,状態はアイドルのままである[pot-220-31]
(事実4)一つでも条件を満たしていなければ給湯できない[pot-260-11]
これらの事実から,以下の2つの結論を導くことができます.
(結論1)話題沸騰ポットはいつまでたっても沸騰しないポットである
(結論2)話題沸騰ポットは給湯ボタンを押しても給湯できない
表1に示したのは話題沸騰ポットの要求文の一部にすぎませんが,満水センサがoffになることについては,話題沸騰ポットの要求文のどこにも記載がありませんでした.したがって,満水センサは永久にonであることが,話題沸騰ポットの要求文から導かれる事実なのです.
ここで示した話題沸騰ポットの要求仕様書(第7版)は,「できる限り曖昧さを無くした仕様書の例として作成された」とのことです.この例から分かるように,開発文書の曖昧さをなくしたとしても,開発文書に欠陥がないわけではありません.曖昧さが無くても,入れた水を沸騰できず,給湯もできないポットになっています.話題沸騰ポットを開発する目的が,水を沸騰できるポットを実現することだとすると,この仕様書には明らかに欠陥があります.
ここまで,「事実に基づく読解法」によって開発文書を読む方法について解説してきました.ここでは要求文について議論しましたが,事実に基づく読解法は,さまざまな開発文書に適用できます.なお,要求文書をレビュする方法は,ここに紹介したやり方以外にもたくさんの方法があります.これらのレビュ手法についてもっと知りたい方は,要求工学連載の第37回[2]をご覧ください.
参考文献
[1] 組込みシステム教育教材 話題沸騰ポット GOMA-1015型 要求仕様書,http://www.sessame.jp/workinggroup/Wo ... up2/POT_Specification.htm
[2] 山本修一郎, 要求工学連載第37回,要求レビュ,http://www.bcm.co.jp/site/youkyu/youkyu37.html