IPAの設計ガイドブックを読んだので、設計時の注意事項を書いてみた。
参考
IPA。障害未然防止のための設計知識の整理手法ガイドブック https://www.ipa.go.jp/archive/files/000058073.pdf
書き方サンプル
### 機能・処理(デバイス・機器・プロセス) 機能名 or 処理名は必須。デバイス・機器・プロセスは任意。 ### アニメーション表示(Android) 遅延を入れないと結果だけが即表示される。
文字列処理
文字列の長さ。NULL。空白。
半角カタカナ・全角カタカナ混在(DB)
全角カタカナでLIKE検索すると半角カタカナの濁点・半濁点がヒットしない問題 - okinawa
数値処理
数値以外の混入。負の値。小数点。0除算。
小数点処理
切り上げ、切り捨て、四捨五入。
SQLとJavaの切り上げ差異。(FLOOR関数とBigDecimal)
金額処理
税額計算。「単品×税×個数」と「全商品合計金額×税」とは異なる。
1個ずつ税額計算するか、全部まとめて税額計算するかの違い。
・例
97円2個=194円
→ 1941.08=209.52(切捨て209円)
97円1.08=104.76(切捨て104円)
→104円2個=208円
日付
日付の桁数。
日付Formatが違わないか。
スラッシュ入りか無しか。
月末は29~31のどれか。
閏年。
ファイル・ディレクトリ
本当にファイル・ディレクトリか?
ファイル・ディレクトリ未存在。
名前が変わる可能性は?
誰かが開いてないか?
中身が空。0KB。
アクセス制限。readonlyとか。
既に存在するファイル名で作って、上書き保存は不可。
→abc.csvが既にあり、Javaで新たにabc.csv作って保存は無理。
→abc.csvに追記して保存なら可能。
file.close()しないと削除できない。
CSV
列数合わないエラー。
PDFBoxというApacheのライブラリあるよ。
マスタテーブル
マスタテーブルの値が変更になったときの影響は?(例:請求先コード)
マスタテーブルの値をトランザクションテーブルに登録→その後マスタだけ変更すると?