Geçen günlerde geliştireceğimiz E-Ticaret sitesinin spesifikasyonları elimize geçti. Statik teste başladık. Verilen bir siparişin kargo bedeli ile ilgili aşağıdaki maddelere yer verilmişti.
eS 4.5.49 Sipariş 100 YTL’yi geçiyor ise, kargo bedeli 0 YTL olarak hesaplanır.
…..
eS 11.6.3 Yurtdışı siparişlerinde kargo bedeli, teslimat adresinde belirtilen ülkeye ait desi-kargo bedeli tablosu uyarınca hesaplanır.
Tüm dokümanı tekrar inceledim, kargo bedelinin hesaplanması ile ilgili başka birşey bulamadım. Yurt dışına yapılan gönderiler 100 YTL’yi geçtiğinde ne olacağını merak edip örnek bir ürün için Almanya’ya gönderi bedelininin 45€ olacağını öğrendiğimde tedirgin olmuştum. Zira eğer 100 YTL’ye şişe mantarı satmıyorsanız, böyle bir durumda sizi temin ederim zarar edersiniz.
Çözümü tabii ki basitti. Yukarıda gördüğünüz ilk madde "Yurt içine gönderilen sipariş 100 YTL’yi geçiyor ise.." şeklinde değiştirildi.
Böylesine küçük bir detayı farketmeseydik ne olurdu?
Böyle bir olasılığın geliştirme ekibi içerisinde saptanıp giderilmesi imkansız, imkan olsa da maliyetlidir. Belki de bitmiş üründe bir bu durumu farkedecek ve uygulamanın bazı noktalarının tekrar kodlanması gerekecekti. Grafik tasarımındaki yanar-döner "Ücretsiz Kargo" flash’larından bahsetmiyorum bile!
Biz gerekli değişikliği zamanında yaptık. Bu sayede pazarlama ve grafik tasarım ekipleri sloganları ve Flash banner’ları buna göre tasarladılar. Yazılım tasarım ekibi kargo bedeli hesaplanması ile ilgili iş mantığını buna göre yazdı ve ürün çalışmaya başladığında müşterimizin başı artık ağrımayacak. Geliştiriciler tekrar kod yazmadılar ve hala proje takvimine uygun ilerliyoruz.
Yazılım hatalarını sadece kaynak kodda aramak yanlıştır. Bazen yazılım "spesifikasyona bire-bir uyumlu" ama hatalarla dolu olabilir. Burada önemli olan, yazılım geliştirme süreçlerinden ziyade, yazılımın kullanılma amacı ve karşıladığı ihtiyaçlardır. Belki de yazılım geliştirme süreçlerimize o kadar gömülüyoruz ki, ürettiğimiz "şeyin" amacını unutuveriyoruz.
Diğer bir nokta ise bu hatayı erken bularak kazandığımız zaman ve paradır. Yazılım spesifikasyonlarına iki kelime ekleyerek çok daha düşük bir maliyetle bu hatayı giderebildik. IBM Systems Science Institute tarafından yapılan bir araştırmaya göre bir hatanın düzeltilme maliyeti yukarıdaki grafikte gösterilmiş durumda.
Sizi temin ederim, oturup yazılım spesifikasyonu yazmak ve bunları gözden geçirmek, örneğini verdiğimize benzer hatalardan kaybedeceğinizden çok daha az zamanınızı alacaktır.
Sizleri, yukarıdaki grafiği de aldığım hata önleme ile ilgili makale ile başbaşa bırakıp kahvemi içmeye dönüyorum.
İyi Testler!

Maltepe’deki salonunda bir seminer veriyor olacağım.

i bizi uzmanlaştıracak olan fikirlerimizi tartışmak, diğer insanların fikirlerini sorgulamak ve fikirlerimizin sorgulanmasıdır.
![Freakonomics [Revised and Expanded]: A Rogue Economist Explores the Hidden Side of Everything Freakonomics [Revised and Expanded]: A Rogue Economist Explores the Hidden Side of Everything](http://ecx.images-amazon.com/images/I/51Z1scnqz1L._SL160_.jpg)

