連載
ソフトウェア技術者のためのバグ百科事典(1)うるう年:山浦恒央の“くみこみ”な話(122)(3/3 ページ)
ソフトウェア技術者に向けて、バグに関する基礎知識をまとめていく新シリーズ「バグ百科事典」が始まります。記念すべき第1回は、超常連バグである「うるう年バグ」を取り上げます。
5.うるう年のバグを防ぐポイント
5.1 うるう年のバグを防ぐには
筆者は、うるう年のバグはコーディング、デバッグ、単体テストが重要だと考えます。以下に、押さえておきたいポイントを示します。
- 仕様にうるう年を考慮しているか
- コードにうるう年の処理を記述しているか
- うるう年の2月29日周辺をテストしているか
- うるう年の12月31日をテストしているか
5.2 うるう年バグの兆候
いくら対策をしても、バグが発生することがあります。以下にうるう年のバグの兆候を示します。
- 2月29日、12月31日にバグが発生する
- それまでは普通に動作しているプログラムが突然動かなくなる
- 一定の時間が経過するとプログラムが正しく動作する
6.終わりに
新シリーズとして「バグの未然防止」「バグの原因特定の効率化」に役立つバグ百科事典を始めました。第1回は、うるう年のバグです。組み込み系製品では、日付を使った機能が多数あります。特に、うるう年のバグは要注意です。時限爆弾のように不定期に発生するので、2月29日付近、12月31日付近に前触れもなくバグが発生する際は、うるう年を疑いましょう。
次回は、上記の5.1、5.2で挙げた内容を掘り下げます。興味のある方は、カレンダーの歴史を読むと、うるう年に関する知識が深まります。今回参考にした書籍を[2]に示しますので、興味のある方は一読をお薦めします。
参考文献
[1]なぜシステムがダウンするのか 知っておきたいシステム障害、信頼性の基礎知識((著)大和田尚孝、(監)日経コンピュータ、2009年、日経BP)
[2]暦の科学(片山真人、2012年、ベレ出版)
【 筆者紹介 】
山浦 恒央(やまうら つねお)
東海大学 大学院 組込み技術研究科 非常勤講師(工学博士)
1977年、日立ソフトウェアエンジニアリングに入社、2006年より、東海大学情報理工学部ソフトウェア開発工学科助教授、2007年より、同大学大学院組込み技術研究科准教授、2016年より非常勤講師。
主な著書・訳書は、「Advances in Computers」 (Academic Press社、共著)、「ピープルウエア 第2版」「ソフトウェアテスト技法」「実践的プログラムテスト入門」「デスマーチ 第2版」「ソフトウエア開発プロフェッショナル」(以上、日経BP社、共訳)、「ソフトウエア開発 55の真実と10のウソ」「初めて学ぶソフトウエアメトリクス」(以上、日経BP社、翻訳)。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- ≫連載「山浦恒央の“くみこみ”な話」バックナンバー
- クイズ!! バグはどこだ? 〜ちょっと休憩して、バグ探しに挑戦〜
あれは米国ボストンに駐在していたときのこと――。ある日、私が管理していたオフィスの入退室セキュリティシステムが動作しなくなった。その当時、大流行がウワサされていたあるウイルスの存在のせいなのか、あるいは……。 - バグ検出ドリル(21)「三角形判定」のテスト項目を設計できますか【解答編】
バグは至るところに、しかも堂々と潜んでおり、自信満々なプログラマーほど、目の前のバグに気付かないものです。「バグ検出ドリル」の第20回と第21回は、「三角形を判定」するプログラムのテスト項目設計がテーマです。前回の出題編から、今回は解答編になります。 - バグ検出ドリル(20)「三角形判定」のテスト項目を設計できますか【出題編】
バグは至るところに、しかも堂々と潜んでおり、自信満々なプログラマーほど、目の前のバグに気付かないものです。「バグ検出ドリル」の第20回と第21回は、「三角形を判定」するプログラムのテスト項目設計がテーマです。まずは今回の出題編を読んで、じっくり問題に取り組んでみてください。 - バグ検出ドリル(19)たかが1円されど1円……1円足りないバグの恐怖
バグは至るところに、しかも堂々と潜んでおり、自信満々なプログラマーほど、目の前のバグに気付かないものです。「バグ検出ドリル」の第19回の問題は、商品と個数から合計金額を求めるプログラムのバグです。なぜか1円だけ合わない、このバグの原因を突き止めよう! - バグ検出ドリル(18)IoT時代だからこそ重要、単純でも検出が難しい通信系バグ
バグは至るところに、しかも堂々と潜んでおり、自信満々なプログラマーほど、目の前のバグに気付かないものです。「バグ検出ドリル」の第18回の問題は、相互に通信する機器のソフトウェアのバグです。IoT時代を迎えて利用場面が増えている、通信系のバグを見つけ出しましょう!