これまで私は数限りないシステムを構築してきましたが、それと同時に多くのトラブルにも遭遇してきました(涙) そのような(苦い)経験からトラブルを発生させる典型的なパターンについて自分なりに意識しているポイントがありますので、今回はその内容についてお話したいと思います。
たとえば、商品の数量×単価でから合計金額を計算するロジックがあったとします。
このロジックに対し、ユーザーから「商品コードが10と33の場合は、2割引きにしてください。」との依頼を受けて担当者は以下のようにプログラムを修正しました。

しばらくして担当者も交代になった後、今度はユーザーから以下のような依頼を受けました。
ユ「商品コードが33の場合、現状2割引きとなっていがこれを正規の価格に戻してほしい」
そもそもの変更要件である「商品コードが10と33の場合は2割引き」を知らない交代後の担当者は「2割引き」というキーワードに注目して、「商品単価に0.8を掛ける」というプロセスを発見しこれを削除します。

そして、商品コードが33のデータのみでテストを実施し値段が正規価格で計算されていることを確認ます。テストOKということでそのまま本番リリースとなります。
お分かりだと思いますが、この対応だと本来引き続き2割引きとなるはずの商品コード10の商品も正規料金で計算されてしますよね? そしてトラブル発生ということになります。(お金関係のトラブルは非常に大きな問題になる場合が多いですよね・・・)

もちろん、担当者が「もっとよくコードを確認」したり、「テストを十分に行ったり」すればトラブルを避けられたかもしれませんが、実際のプログラムはもっと複雑でありかつ満足にドキュメントもない状況で厳しいスケジュールでの対応を強いられれば、このようなトラブルが発生してしまうことも「それほど珍しいことではない」と感じていただけるのではないでしょうか?
(つづく)
コメント