- blogs:
- cles::blog

コードクローンを含むプログラムは信頼性が高い?



みずほ証券と東証の裁判で、ソフトウェア工学的な部分が争点になったようです。そのことが日経ITproの記事で特集されていますが、その記事中に東証がコードクローンを含むプログラムは信頼性が高いという研究を裁判に持ち出したという記載があったので、これにちょっと驚いたということを Twitter で呟いていたら、後輩が「検索したらそれっぽい研究があった」と教えてくれたので、忘れないうちにメモ。
緊急特集!みずほ証券-東証裁判の争点を洗い出す - [論点3]どんな開発手法を適用すべきか:ITpro
ソースコードの品質についても、みずほ証券は問題を指摘している。今回のバグがあったプログラム全体について、「ソースコードの著しい重複が見られるなど、エラーの潜在する率が極めて高い作り方をされており、品質が極めて低い」と主張。これに対して東証は「コードクローン(記述の重複)を含むプログラムは、含まないプログラムと比較して信頼性が高いことが定量的な研究で裏付けられている」と反論した。
本当にこれかという確信は持てませんが、奈良先端の門田先生が書かれた下記の2編の論文があります。
どちらも PDF がダウンロードできるので、興味がある人は是非。僕は今の仕事が片付いてから読む予定です。
- 門田暁人, 佐藤慎一, 神谷年洋, 松本健一, "コードクローンに基づくレガシーソフトウェアの品質の分析," 情報処理学会論文誌, Vol.44, No.8, pp.2178-2188, Aug. 2003.
- Akito Monden, Daikai Nakae, Toshihiro Kamiya, Shinichi Sato, and Ken-ichi Matsumoto, "Software quality analysis by code clones in industrial legacy software," Proc. 8th IEEE International Software Metrics Symposium (METRICS2002), pp. 87-94, Ottawa, Canada, June 2002.
ちょっと裁判の時の文脈が良くわかりませんが、信頼性が高い=コード量当たりの欠陥のが少ない(欠陥密度が低い)ということでしょうか。単純に考えれば「コードクローン=コピペ」なわけで、コピペするとコード量が水増しされます。このときにうまくバグがない部分を選んでコピペをすると、メンテナンス性を考慮しなければコード量当たりの欠陥密度は小さくなることは容易に想像がつきます。例えば for 文を使わずにコードを書くと、プログラム量(行数)が飛躍的に増えるので、メトリクス計測の仕組み上欠陥密度を小さく見せることができるはずです。ただ、そのようにしてできた for 文を含まないコードが果たして良いコードなのかと言われれば疑問が残ることは言うまでもありません。ちゃんと読んでいないので断言できませんが、これはソフトウェア工学の論文ですから、そのように結論づけられている可能性は低いでしょう。
加えて、欠陥が少なくできることと、結果的にリスクが少なくできることは別問題です。一般に「リスク = 発生確率 × 被害規模」であるので、確率を抑えられても残った欠陥が致命的でないと言うことはできません。今回のジェイコム事件のように残ったバグのインパクトが予想以上にデカかったということはよくあることです。
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/5726
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(110620)
3 . 年次の人間ドックへ(110250)
4 . 2023 年分の確定申告完了!(1つめ)(109793)
5 . 三菱鉛筆がラミーを買収(109690)