この記事、表題に無理ないか?
「バグ無し」は可能、ソフトの先頭走る
http://itpro.nikkeibp.co.jp/article/COLUMN/20120719/410078/
形式仕様やれば、バグなしといいたいようだが、形式仕様をやってもバグは出る
たとえば、変数Aの定義として、1以上の整数だったとしよう。
そして、完璧なプログラムをつくり、すべて証明したとする。
ところが、実は変数Aは0以上の整数だったとしたら、今証明したものは、正しいとはいえない。
0だけで成り立つ/成り立たないケースがあるから。
つまり、形式仕様の証明は
AならばBのかたち
この場合、前提のAが偽ならば、(上記の例で、変数Aは1以上が偽で0も含む)
その後の証明は、意味がない
この前提が間違っているかどうかを確認するのが、妥当性確認で、
形式仕様は、そちらではなく、検証に有効。
バグをなくすには、検証だけでなく、妥当性確認も必要(V&V)
妥当性確認を早く行うには、ユーザー中心設計のように、ユーザーに早期に確認する必要があり、
その開発手法としては、アジャイルがある。
ってかんじじゃないかな。
ただ、アジャイルで形式仕様をやるには、たいへんだ。
「バグ無し」は可能、ソフトの先頭走る
http://itpro.nikkeibp.co.jp/article/COLUMN/20120719/410078/
形式仕様やれば、バグなしといいたいようだが、形式仕様をやってもバグは出る
たとえば、変数Aの定義として、1以上の整数だったとしよう。
そして、完璧なプログラムをつくり、すべて証明したとする。
ところが、実は変数Aは0以上の整数だったとしたら、今証明したものは、正しいとはいえない。
0だけで成り立つ/成り立たないケースがあるから。
つまり、形式仕様の証明は
AならばBのかたち
この場合、前提のAが偽ならば、(上記の例で、変数Aは1以上が偽で0も含む)
その後の証明は、意味がない
この前提が間違っているかどうかを確認するのが、妥当性確認で、
形式仕様は、そちらではなく、検証に有効。
バグをなくすには、検証だけでなく、妥当性確認も必要(V&V)
妥当性確認を早く行うには、ユーザー中心設計のように、ユーザーに早期に確認する必要があり、
その開発手法としては、アジャイルがある。
ってかんじじゃないかな。
ただ、アジャイルで形式仕様をやるには、たいへんだ。