スタッフブログ

非常に怖い勘違い

2011年12月12日 スタッフブログ 開発 

先日あるお客様へ新機能をリリースした際にちょっと、やらかしてしまいました。
仕様上の勘違いなのですが、反省の意味も込めて書いてみます。

卸売業のお客様で、得意先によっては、委託販売も行なっております。

PCできる蔵をお使いのトウサイのお客様=A社
A社の得意先=B社
とします。

A社からB社へは、委託販売を行なっております。
A社から商品をB社へ置かせていただき、実際にエンドユーザへ売れた分のみを、
1ヶ月単位で売上計上します。

A社からB社へは、4種類の伝票が発行されます。
○委託納品(商品のみを納品。売上は計上されない)
○委託返品(委託納品した商品が実際に売れる前に何らかの理由によりA社へ返品)
○委託売上(委託納品した商品がエンドユーザへ売上された場合、締日ベースで売上計上する)
○売場返品(エンドユーザに売れた商品が、B社へ返品されたケース。売上取消)

1ヶ月に1回、A社社員がB社の売場へ行き、ハンディターミナルにて在庫データを取得してくる。

PCできる蔵では、新機能として、売場からの棚卸データと、前回(前月)棚卸データとを比較し、
在庫数をマッチングして、委託売上伝票を自動作成する。
要するに、前回棚卸から比べて、いくつ売れたかを差引して、委託売上伝票を作成、
という仕様。

ここで、仕様上は、全然難しい話ではないのですが、
自分の中で、かーなり、うっかりな先入観が生まれていました。

「前回棚卸で、存在していた商品が、今回棚卸で、売場に無かったということは。。。
全部売れたっていうことでしょ?」

これが、大間違い!!

正解は、
「前回棚卸で、存在していた商品が、今回棚卸で、売場に無かったということは。。。
その期間内に委託納品や委託返品なども行なわれている可能性もある、すなわち、売れたとは限らない。
よって、その期間内に発生している伝票の数量も考慮して、委託売上伝票を作成する。」
よーく考えれば当たり前なのですm(_ _)mmm。。。

しかも、今回棚卸で数量≠0の場合については、ちゃんと、上記を考慮して製造していたにもかかわらず、
売場に全く無い(数量=0)=全部売れた という、なんとも変な勘違いをしていたのです。
どっちも考え方は一緒なのに。。。

このような、仕様上の勘違いや、設計バグは、テストでも発見されづらいのです。
なぜか・・・・それは、本人がこの仕様で正しいと思い込んでいるからです。

設計した後に、プログラムの書き間違いでのバグは試験で叩き出せます。
想定していた結果と異なる結果が出るから。

しかし、今回のようなケースは試験をしても、「全部売れていて正解」という想定通りの
結果になるので、本人も間違いだと思っていないのです。

今回は、1回目の稼動で注視していただくようお願いしたのと、規模的に小さな追加だったので
大事には至りませんでしたが、簡単な仕様だからこそ、油断が招くミスの1つだと猛省しました。

もちろん、規模の大きい追加変更ほど、仕様上の勘違いや設計バグを出したときのダメージが
大きいので、慎重にケース出しは行いますが、簡単な仕様だからこそ、侮ってはいけないなと
思い知らされる場面でした。