Yazılımda Hatalar ve Hata Ayıklama

Sıfır hatalı uygulama geliştirme ancak "teorik" olarak mümkündür.
19 Mart 2008
“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

Toplam 5462 kez okundu.
Oyla:
En Düşük
Oy ver: 1Oy ver: 2Oy ver: 3Oy ver: 4Oy ver: 5
En Yüksek
YORUMLAR
Toplam 3 yorum
CHIP Online Ziyaretçisi yazmış:
cd den oyun açamıyom çalışma zaman hatası veriyor hemde oyun tam açılacakken hata raporu veriyor bunlara nerden girip düzeltecez
17 May 2008  10:01%50Bu yorumu beğendimBu Yorumu Beğenmedim%50
CHIP Online Ziyaretçisi yazmış:
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
28 Mar 2008  09:45%100Bu yorumu beğendimBu Yorumu Beğenmedim%0
CHIP Online Ziyaretçisi yazmış:
Yazılım projelerinde yapılan hataları en aza indirmek için "pattern" ve "anti-pattern'leri öğrenmekte fayda var sanırım.
28 Mar 2008  09:43%67Bu yorumu beğendimBu Yorumu Beğenmedim%33


Bu sayfalarda yer alan okur yorumları kişilerin kendi görüşleridir. Yazılanlardan CHIP Online sorumlu değildir.
Siz de yorumunuzu yazın
CHIP Online Ziyaretçisi
Yorumunu Gönder
Lütfen bu bölüme sadece yorumlarınızı yazın. Teknik yardıma ihtiyaç duyduğunuz konuları lütfen forumda ilgili bölüme veya Uzmanına Sorun bölümümüze yazın, yanıtınızı çok daha sağlıklı ve hızlı olarak alabilirsiniz
Siz de kendi teknoloji blogunuzu ücretsiz oluşturun!

Tek Kişilik Yazılımevi-Kategoriler

 

Mart 2008
PtsSalÇarPerCumCtsPzr
     12
3456789
10111213141516
17181920212223
24252627282930
31      

CHIP Online Yazar Blogları

Yazarlarımızdan, editörlerimizden sizlere...

Cem ŞancıCem Şancı
Elbise değiştirten süper Pipboy 3000
Kadir ÇamoğluTek Kişilik Yazılımevi
Yazılım Geliştirmede Yaratıcı Zeka
Mustafa AcungilGelecek Postası
Bilgisayar dünyasından internet dünyasına
Halil İbrahim MollaoğluHalil Mollaoğlu
Safari'ye çıkmadan önce düşünmek lazım
Selçuk İslamoğluSelçuk İslamoğlu
Windows 7 XP Mode derde derman mı?
 

CHIP Dergisi: Temmuz 2009


İşbirliği ortaklarımız

  • Hepsiburada.com
  • Level
  • Doğan Telekom
  • Turhost
  • CHIP Download
  • CHIP Download
 
 
Cep telefonları | Ekran kartları | Desktop | Notebook | Ses kartları | Webcam | Klavye & Fare | Yazıcılar
Mp3 Player | Usb Bellekler | Video kameralar | Dijital Kameralar | Taşınabilir diskler | LCD & Plazma | Monitörler