前の号になるけど、
日経コンピューター 2012年8月30日 12ページ
COBOLのソースコードが法廷に
みずほ証券-東証、株誤発注裁判で新展開
の記事なんだけど、これって、みずほ証券側のロジックが変じゃない?
【みずほ証券側のロジック】
銘柄別板DBの「会員NO」「通版」と
注文DBの「会員NO」「通版」が一致したら
取り消せる
そうでなかったら
取り消せない
という状況において、処理フローが、このIF文に到達すれば、
エラーだとわかるはず!
【ここまで】
って言っているけど・・・
ええ、そりゃ、単体テストならね。でも・・・
おんなじ理屈で考えるよ、
こういうプログラムがあった場合
b=100;
a=5+b;
if ( a == 105 )
{
printf("OK!");
}
else
{
printf("NG");
}
このとき、「NGになることは、かんたんにわかるはずだ。bが99なら成立しない」
って、言う論理だよねえ。
たしかにそうだけど、ここで問題なのは、bが100かどうか、わかるか否か・・・
ですよねえ。
このプログラムなら、あきらかにbは100、そう書いてある。
だからNGのケースはありえない。「bが99なら」という仮定は成立しない。
でも、b=100;とa=5+b;が300行くらい離れていて、
その間いろいろやっていたら、
よくわからない。
みずほ証券の話に戻るけど、これを問題にするなら、
「青字の部分が起こるかどうか」
をチェックしないといけないんじゃないの?
とすると、
銘柄別板DBの「会員NO」「通版」
がどの条件・タイミングでゼロクリアされるっていうのを
チェックしなくちゃなんなくって、
この条件なんかがたくさんあると、モデル検査(SPINとか)
使わないと、わかんないかもしれない。
とにかく、IF文の問題ではなく、青地の条件がいつ成立するかの問題。
でも、それがめったに成立しないから、いままで問題が起こらなかったんじゃないの?
それと、
3800行で問題が3件、品質悪い
という論拠は成り立つの?
3800行のうち、例えば、IF文が100個あって、それが、YES,NO2つに分かれるとすると、
2の100乗のケースがあるよね。
それと、
3800行あっても、IF文が1つもなければ、ケースは1とおりだから
テストしやすいよね。
問題は、プログラムの複雑度(サイクロマチック数とか)であって、
行数だけでは、わからないのでは??
そして極めつけは
「レビューやテストを行わなかった」
って決め付けてるけど、それ、裏取れてるの?
もし、レビューやテストをかなりやった、
でも人知を超えたテストケースを行わない限り
見つからないテストだった
っていうことを東証側が証明できたら、
むしろ、みずほ証券側は、アウトになっちゃう。
常識的に考えて、レビューやテストはしていて、
その結果はエビデンスとして残っているでしょう。
あとは、人知を超えているかどうかだけど、
・青地の部分の成立を見つけるのは、きわめて困難
(ケース数が多い、SPINでないと見つかんないことを証明)
・3800行の部分は、行数だけでは評価できない
ということを証明できちゃえば、東証・富士通側のほうが有利では?
・・・みずほ証券側、不用意に責めすぎたんじゃない?
日経コンピューター 2012年8月30日 12ページ
COBOLのソースコードが法廷に
みずほ証券-東証、株誤発注裁判で新展開
の記事なんだけど、これって、みずほ証券側のロジックが変じゃない?
【みずほ証券側のロジック】
銘柄別板DBの「会員NO」「通版」と
注文DBの「会員NO」「通版」が一致したら
取り消せる
そうでなかったら
取り消せない
という状況において、処理フローが、このIF文に到達すれば、
エラーだとわかるはず!
【ここまで】
って言っているけど・・・
ええ、そりゃ、単体テストならね。でも・・・
おんなじ理屈で考えるよ、
こういうプログラムがあった場合
b=100;
a=5+b;
if ( a == 105 )
{
printf("OK!");
}
else
{
printf("NG");
}
このとき、「NGになることは、かんたんにわかるはずだ。bが99なら成立しない」
って、言う論理だよねえ。
たしかにそうだけど、ここで問題なのは、bが100かどうか、わかるか否か・・・
ですよねえ。
このプログラムなら、あきらかにbは100、そう書いてある。
だからNGのケースはありえない。「bが99なら」という仮定は成立しない。
でも、b=100;とa=5+b;が300行くらい離れていて、
その間いろいろやっていたら、
よくわからない。
みずほ証券の話に戻るけど、これを問題にするなら、
「青字の部分が起こるかどうか」
をチェックしないといけないんじゃないの?
とすると、
銘柄別板DBの「会員NO」「通版」
がどの条件・タイミングでゼロクリアされるっていうのを
チェックしなくちゃなんなくって、
この条件なんかがたくさんあると、モデル検査(SPINとか)
使わないと、わかんないかもしれない。
とにかく、IF文の問題ではなく、青地の条件がいつ成立するかの問題。
でも、それがめったに成立しないから、いままで問題が起こらなかったんじゃないの?
それと、
3800行で問題が3件、品質悪い
という論拠は成り立つの?
3800行のうち、例えば、IF文が100個あって、それが、YES,NO2つに分かれるとすると、
2の100乗のケースがあるよね。
それと、
3800行あっても、IF文が1つもなければ、ケースは1とおりだから
テストしやすいよね。
問題は、プログラムの複雑度(サイクロマチック数とか)であって、
行数だけでは、わからないのでは??
そして極めつけは
「レビューやテストを行わなかった」
って決め付けてるけど、それ、裏取れてるの?
もし、レビューやテストをかなりやった、
でも人知を超えたテストケースを行わない限り
見つからないテストだった
っていうことを東証側が証明できたら、
むしろ、みずほ証券側は、アウトになっちゃう。
常識的に考えて、レビューやテストはしていて、
その結果はエビデンスとして残っているでしょう。
あとは、人知を超えているかどうかだけど、
・青地の部分の成立を見つけるのは、きわめて困難
(ケース数が多い、SPINでないと見つかんないことを証明)
・3800行の部分は、行数だけでは評価できない
ということを証明できちゃえば、東証・富士通側のほうが有利では?
・・・みずほ証券側、不用意に責めすぎたんじゃない?