Yazılım Kalitesi, İhtiyaçları ve Sıradışı Durumlar
Yazılım sistemlerinin kalitesini belirleyen faktörler arasında, sıradışı durumlar çok önemlidir. Süreç analizleri, ister kullanım şekilleri (use-case) üzerinden yapılsın ister kullanıcı hikayeleri (user stories) gibi daha çevik yöntemler kullanılarak yapılsın, isterse çok farklı formal olan ya da olmayan tekniklerle yapılsın, şu gerçek değişmeyecek: Kullanılabilir ve tam yani eksiksiz bir yazılım sisteminin en temel özelliklerinden birisi, verdiği hizmetlerde normal, olması beklenen durum ve akışlar dışında, sıradışı durumları ve akışları gözetip, kullanıcılarını madur etmeyecek şekilde, muhtemel her durumu göz önüne alınarak geliştirilmiş olmasıdır. Bu anlamda, süreçlerin sadece beklenen çalışma şeklini değil aynı zamanda alternatif ve umulmadık durumları da kapsaması gereklidir.
Yazılım sistemlerindeki login/logout gibi son derece basit olan süreçlerde bile alternatif ve sıradışı durumlar sözkonusudur. Yani örneğin kullanıcıların, sisteme erişmelerini sağlayan “login” sürecinde bile, bilgilerin yanlış girilmesinde sistemin nasıl davranacağı, örneğin şifrenin arka arkaya yanlış girilmesi durumunda nasıl bir kilitleme sisteminin kullanılacağı ve bu durumun müşteriye nasıl bildirileceği gibisinden pek çok sıradışı akış söz konusu. Demek istediğimi, kullanılabilirlik ile ilgili güzel bir kitap hakkında kaleme aldığım bu yazıda da kısaca aktardığım yaşanmış, tipik bir olayı buraya aktararak anlatayım:
“Garanti Bankası’nın internet bankacılığı arayüzü üzerinden bir kredi kartı başvurusu yapmak gibi son derece basit bir tecrübem oldu üç-beş ay önce. Tonla ahiret sorusuna cevap verdiğim ve sonrasında ilerle gibi bir düğmeye basarak geçtiğim sürecin en son sayfasında “başvuruyu gönder” gibi bir son düğmeyi görünce sevinmiştim tabi olarak. Bu düğmeye de basıp, bir kredi kartı başvurusu yapmanın dayanılmaz hafifliğini yaşayacakken, düğmeyi basınca “bir hata oluştu” gibi bir mesajla karşılaştım. Şimdi, hiç yazılım üzerine bir eğitim almamış olsam da eğer IQ seviyem 70-80 üzerindeyse ve hele de iflah olmaz bir “iyi niyet” taşıyıcı ve saçıcıysam, “… değiller ya bu yapanlar, herhalde başvuru bilgilerimi saklamışlardır, 15 dakika vakit harcadım başvururken ve TCKN, bir yakınımın telefonu vs. gibi, bir kısmı aklımda bir kısmı telefonumdan ya da makinamdan bakıp söylediğim, bir sürü bilgi girdim” diye düşündüm hızlıca. Ama sonrasında web uygulamasının menuleri arasında böyle bir şeyi ima eden bir linke bile rastlamadım tabi. Sonra dedim ya ben iflah olmaz bir iyi niyetiliyim, “herhalde sanırım ben hata yaptım, öyle ya ben bir yazılımcıyım ama Garanti Bankası’nın bu web arayüzü için beni cebinden çıkaracak tonla yazılımcı, analist, kullanılabilirlik uzmanı çalışıyordur, boru değil ya …” diye düşünüp, güzel bir şekilde, hiçbir şey olmamış gibi, tekrar aynı süreci izledim. Sonuç değişmedi ama, iyi niyetten anlamıyor bu yazılımlar. Ayrıca web arayüzü de tamamen poker face ser verir sır vermez cinsten: “Bir hata oluştu” İyi tamam da abi zaten muhtemelen benim bilgilerimi girdiğim üç baş sayfalık süreçte sunucu tarafında bu bilgiler muhtemelen Http oturumunda (session) tutuluyor, varsa bir problem, bu bilgileri yaz bir yere, muhtemelen veri tabanına, bir daha aynı eziyeti çektirme bana. Belli ki, kredi kartı başvuru modülü/sistemi her neyse, o tarafta oluşan bir hatadan dolayı web arayüzü bu mesajı veriyor bana. Ama sonuç şu: İstediği kadar janjanlı bir arayüze sahip olsun, kullanılmaktan uzak bir web uygulaması bu.”
Bu sistemin kullanılabilirliğinin düşük olmasının en temel sebebi ise, son derece standart bir süreç için bile sıradışı durumların ele alınmamış olup, müşteriyi madur etmeyecek şekilde yönetilmemiş olmasıdır.
Bu konuda bir başka örnek de şu olabilir: Sıklıkla verdiğim eğitimlerden birisi de Java ile web teknolojileri üzerine oluyor. Servlet, JPS, JSF, Spring MVC gibi teknolojileri içeren eğitimlerde ele aldığımız konulardan birisi de tabi olarak oturum ya da session yönetimi. HTTP’nin durumsuz/stateless olmasından kaynaklanan sıkıntıyı gidermek üzere 90’lı yılların ortasında Netscpae tarafında bulunan ve çoktan yaygınlaşmış olan cookie/kurabiye tekniği, oturum yönetiminde detaylıca ele aldığım konulardandır. Tarayıcıların ve web sunucularının cookileri nasıl yönettiğini anlatırken, tarayıcıların seçeneklerinden cookilerin kullanıcı makinasında saklanıp saklanmaması, dolayısıyla da tarayıcının web sunucusundan gelen cookieleri kabul edip etmemesi gibi durumları da ele alır ve açıklarım. İş mantığı açısından baktığınızda, cookie kabul etmeyen tarayıcı, işi yönetmeniz için sıradışı bir durum oluşturmaktadır. Bu durumun sistemin ihtiyaçlarını belirleme ya da en geç tasarım safhasında cok genel sıradışı bir hal olduğu gerçeğini ıskalamamamız ve bu durum için bir cevap üretmemiz gereklidir. tarayıcımızın seçeneklerini kullanarak cookieleri kullanmasını engellersek ne olur? Bu sıradışı bir durumdur ve web sistemleri ya bu konu ile ilgili kullanıcıya uyarı vermelidir ya da bu durumu cookie kullanmadan halletmelidir. Bakın tarayıcınızın cookieleri kullanmasını engellediğiniz zaman dünyanın bildiği Amazon.com’un davranışı ile Amazon’un ülkemizdeki karşılığı olarak görebileceğimiz Hepsiburada.com’un davranışı arasındaki farkı görelim.
Önce tarayıcımızdaki cookieleri engelleyelim yani disable edelim:
Bunu yapıp da Amazon.com’a gidip alış-veriş yapmak istediğinizde Amazon.com söyle bir uyarı veriyor ve cookileri aktive etmezseniz sizle çalışamam diyor:
Hepsiburada.com ise cookielerle ilgili uyarı vermeden, hatta hiç bir uyarı vermeden “lütfen şifrenizi girin” diye insanı deli edercesine aynı ekranı tekrar tekrar görüntülemeye devam ediyor. Ve siz arka tarafta olan biteni bilmiyorsanız ki bilmek için bu teknolojinin detaylarıyla ilgili şeylerden haberdar olmalısınız, bu durumu çözmeniz pek mümkün değil.
Bir başka örnek ise Skype’dan. Bakın Skype’da bu konuda şöyle davranıyor:
İşte yazılım kalitesi denen şey de bu, ne kadar basit, ne kadar kullanılabilir, müşterisini ne kadar doğru yönlendiriyor. İster analist olun, ister developer, analizini yaptığınız ya da geliştirdiğiniz süreçlerin sıradışı durumları olabileceğini akıldan çıkarmayın ve bu durumların avukatı olun. Yöneticiyseniz eğer, yapılacak işleri çıkarırken, maliyetlendirirken, muhakkak sıradışı durumların da göz önüne alındığından emin olun. Ne diyelim, mükemmellik ayrıntılarda gizliymiş 🙂
Toplam görüntülenme sayısı: 1157