İyi Yazılım

İyi yazılım paylaşımları

Yazılımda Hatalar ve Hata Ayıklama

Sıfır hatalı uygulama geliştirme ancak "teorik" olarak mümkündür.

“Bug” Nedir?
Bana göre “bug”, “test uzmanı ya da kullanıcıya sıkıntı yaratan, acı veren her şey” olarak tanımlanabilir.

“Yazılım geliştirme hataları” aslında çok daha geniş bir alanı kapsar. Yazılımda hatalar çok büyük bir oranda insan kaynaklıdır. Kullanıcı isterlerinin çözümlenmesinden başlayıp analiz ve tasarımla devam eden, kodlamayla birlikte bir varlık kazanan, test ve dağıtma süreçleriyle gerçek anlamda yaşama geçen yazılımların bizim odaklanacağımız yönü geliştirilme -yani kodlama- aşamasıdır.

Uygulama geliştirme aşamasında hatalar en basit şekliyle üç ana grupta değerlendirilebilir:
•        Sözdizimi hataları
•        Çalışma zamanı hataları
•        Mantık hataları

Söz dizimi hatalarıyla kastedilen; programlama diline uygun olmayan, derleme anında derleyicinin hata mesajı vermesine sebep olan kodlamalardır. Günümüz entegre yazılım geliştirme araçlarında (IDE: Integrated Development Environment) bu sıkıntılar neredeyse yok denecek kadar azdır. Artık özelikle kod editörlerinin gelişmiş yazım denetimi sayesinde yazılımcılar söz dizimi hatalarını derlemeye gerek bile kalmadan fark edebiliyorlar. Ola ki hatayı gözden kaçırdınız ya da kodlama aşamasında aracınız yakalayamadı, derleme aşamasında size satırına kadar hatanın tüm detayla uyarısı gelecektir. Çözülmesi en kolay “bug”lar, söz dizimi hatalarıdır. Örneğin bir CSharp Windows uygulaması geliştirirken MessageBox.Show(“Merhaba”) yerine MessageBox.Shan(“Merhaba”) yazarsanız bu bir söz dizimi hatası olur. Eğer Visual Studio kullanıyorsanız daha derleme aşamasına geçmeye gerek kalmadan söz diziminizin hatalı olduğu konusunda uyarılırsınız ve çok fazla acı çekmeden kodlamaya devam edebilirsiniz.

Çalışma zamanı hataları normal şartlar altında ortalarda görünmeyen, ancak uygulamayı müşterinin cihazına kurduğunuzda ya da demo yaparken ortaya çıkmayı seven ve çok can sıkan hatalardır. Son dönemde “istisnai durum yönetimi” ile çözümlemeye çalıştığımız bu hatalar daha çok bir fonksiyon için belirli varsayımlar üzerine kodlama yaptığımız, ancak kullanıcının uygulamayı çalıştırdığı anda o şartların sağlanmaması durumunda ortaya çıkarlar. Örneğin internet bağlantısı varken basılması gereken bir düğmeye bağlantı yokken basılması ya da “C:\” dizininde olması gereken bir dosyanın yanlışlıkla silinmiş olması gibi durumlarda çalışma zamanı hatalarıyla karşılaşılır.

Mantık hatalarıysa daha çok uygulamanın beklenenden farklı davranması olarak düşünülebilir. Kullanıcı düğmeye bastığında olması gerekenden farklı bir durumla karşılaşıyordur. Örneğin bir bordro ekranında puantaj, brüt rakam ve kesinti oranlarını girdiğinizde olması gerekenden farklı bir “net” miktarı alıyorsanız bu bir mantık hatasıdır ve ciddi acılar çekmenize neden olabilecek bir bug’ınız var demektir.

Başka bir açıdan bakarak “bug”ları sonuçlarına göre de sınıflandırabiliriz:
•        Çökme ve kilitlenmeler
•        Hatalı sonuçlar
•        Güvenlik açıkları
•        Performans sorunları

Neresinden bakarsanız bakın, kodunuzun bir şey yapması bekleniyor ve yazdığınız kod bu beklentiyi karşılayamıyorsa nur topu gibi bir “bug”ınız var demektir.

“Bug”lar Nasıl Oluşur?
Sıfır “bug”lı uygulama tüm akademik ve akademik olmayan çevrelerce sadece “teorik olarak mümkün” diye nitelendirilirken tabii ki uygulamalarımızın birçok “bug”ının olması kaçınılmazdır. Ancak “bug”ları yakından tanımak, nasıl oluştuklarını bulmak ve önleyici yöntemleri kullanmak uygulamalarımızdaki bug miktarını hatırı sayılır miktarda azaltacaktır.

Aşağıda bug oluşumu için uygun ortamı hazırlayan koşulların bir listesini bulacaksınız. Bu listeyi dikkatle inceleyin ve zamanla kendi tecrübelerinizi de katarak bu listeyi genişletin.

•        “Önce kodla sonra düşün” yaklaşımı. (Çek bir form, koy bir buton, yavaştan dolduralım altını…)
•        Yazılım isterlerinin yanlış çözümlenmesi ve/veya yanlış anlaşılması.
•        Çözümün mühendislik/modelleme aşamasına yeterince zaman ayırmamak ya da bu aşamanın atlanması.
•        Değişkenlerin doğru kullanılmayışı. (İlk değerlerin atanmaması, taşmalara sebep olacak veri tiplerinin kullanılması, tip dönüşümlerinin kontrolsüz gerçekleştirilmesi, değişkenlerin gerektiğinde sıfırlanmamaları…)
•        Girdilerin doğruluğunun sınanmaması. (Kullanıcı ya da farklı sistemlerden gelen parametrelerin kontrol edilmeksizin ya da yeterince kontrol edilmeksizin kullanılması...)
•        Kodlamanın gerektiği kadar basitleştirilmemesi. (Birçok işi bir arada yapan süper fonksiyonların/nesnelerin kodlanması, yordamların çok uzun olması, katman ve görevlerin birbirlerinden yeterince yalıtılamaması gibi.)

Sıfır hatalı uygulama geliştirmek pratik olarak mümkün değildir. Ancak hata sayısını azaltmak ve hata oluştuğunda müdehale için gerekli alt yapıyı hazırlamak hem geliştirme hem de bakım aşamasında uygulamanızı daha başarılı kılar.

Kadir Çamoğlu
kadircam@hotmail.com

Okuyucu Yorumları

Toplam 3 Yorum

Yazılım projelerinde yapılan hataları en aza indirmek için "pattern" ve "anti-pattern'leri öğrenmekte fayda var sanırım.

Yazılım projelerinde yapılan hataları en aza indirmek için "pattern" ve "anti-pattern'leri öğrenmekte fayda var sanırım.
Makalelerinizin devamını merakla bekliyoruz hocam.
İyi çalışmalar dileğiyle.
Orkan M.
Boğaziçi Üniv. - MIS

cd den oyun açamıyom çalışma zaman hatası veriyor hemde oyun tam açılacakken hata raporu veriyor bunlara nerden girip düzeltecez

Sen de yorum yaz

Takip Edin