Bug Ne Demek?

Yazılımcılar; kodların içerisindeki bir hatanın bulunmasının, kodu yeniden yazmaktan daha zor olduğunu belirtir.

Genellikle oyun oynayanların sıklıkla kullandığı bir kelime olan Bug, İngilizce kökenli olup “böcek” anlamına gelmektedir. Bir diğer adı ise yazılım hatası olarak bilinmektedir. Bug terimi ilk kez Thomas Edison tarafından kullanılmıştır. Üzerinde çalıştığı bir telgraf makinesinde oluşan teknik işlev bozukluğunu belirtmek için kullanmıştır. Günümüzde ise bilgisayar yazılımının veya sistemin içerisinde oluşan, istenmeyen sonuçları meydana getiren arıza ya da kusur olarak nitelendirilir ve bilgisayar sistemini oldukça kötü etkileyebilir.

Bilgisayar teknolojisinde hata, bir bilgisayar programında kodlama hatasıdır. (Bir programın bir mikroişlemcide üretilen mikro kodu da içerdiğini düşünüyoruz.) Kullanıcılardan önce hataları bulma işlemine hata ayıklama denir. Hata ayıklama, kod yazıldıktan sonra başlar ve işletim sistemi veya uygulama gibi bir yazılım ürünü oluşturmak için kodun diğer programlama birimleriyle birleştirilmesiyle aşamalar halinde devam eder.

Hatalar genellikle bir ürün piyasaya sürüldükten sonra veya genel beta testi sırasında keşfedilir. Bu meydana geldiğinde, kullanıcıların buggy kodunu kullanmaktan kaçınmanın bir yolunu bulması veya yazılım geliştiricilerinden bir yama alması gerekir.

Hata, bir programın sahip olabileceği sorun türlerinden yalnızca biridir. Programlar hatasız çalışabilir ve yine de kullanımı zor olabilir veya bazı önemli hedeflerde başarısız olabilir. Bu tür bir kusurun test edilmesi daha zordur. İyi kontrol edilen bir süreç kullanılarak geliştirilen iyi tasarlanmış bir program, binlerce kod satırı başına daha az hatayla sonuçlanır. Bu nedenle kullanılabilirliği teste dahil etmek önemlidir.

Farklı bug türleri bilgisayarların arızalanmasına neden olur. En yaygın bilgisayar hataları şu şekildedir:

  • Aritmetik. Bazen hesaplama hataları olarak adlandırılan aritmetik hatalar, kodda çalışmamasına neden olan matematik hatalarıdır.
  • Arayüz. Uyumsuz sistemler bilgisayara bağlandığında bir arayüz hatası oluşur. Sorun, bir donanım veya yazılım parçasından gelebilir. Bir uygulama programlama arabirimi, bir arabirim hatasına örnek olabilir.
  • Mantık. Bu hatalar, betiğin mantığı programın yanlış bilgi vermesine veya takılıp çıktı vermemesine neden olduğunda ortaya çıkar. Mantık hatası örneklerinden biri, bir kod dizisinin sürekli olarak çalıştığı sonsuz bir döngüdür.
  • Sözdizimi. Bu hatalar, yanlış karakterlerle yazılmış kodlardan kaynaklanmaktadır. Farklı programlama dillerinin farklı sözdizimleri vardır, bu nedenle birinden sözdizimi kullanmak diğerinde hataya neden olabilir.
  • Takım çalışması. Bu, programcılar arasında yanlış iletişim olduğunda ortaya çıkan bir hatadır. Bir örnek olarak, ürün belgeleri ile ürün arasında farklılıklar olduğu zaman verilebilir. Başka bir örnek olarak, yorumların program kodunu yanlış tanımlaması verilebilir.

Hataları kategorize etmenin bir başka basit yolu da kullanıcının bakış açısından dolayıdır. Bu hata türleri aşağıdakiler gibidir:

  • Görsel. Bir kullanıcı seçilen işlevi tamamlayabilir, ancak uygulamada bir sorun var gibi görünüyor. Bu, uygulamanın duyarlı tasarımıyla ilgili bir sorun olabilir.
  • Fonksiyonel. İşlevsel bir hata, programın amaçlandığı gibi çalışmadığı anlamına gelir. Örneğin, bir kullanıcı Kaydet düğmesini tıklar, ancak veriler kaydedilmez.

Hatalar, kullanıcı için neden oldukları zorluk düzeyine göre de sınıflandırılabilir. Bunlar:

  • Düşük etkili hataların kullanıcı deneyimi üzerinde minimum etkisi vardır.
  • Yüksek etkili olanlar, bazı işlevsellik düzeylerini etkiler, ancak uygulama yine de kullanılabilir.
  • Kritik hatalar, uygulamanın ana işlevselliğini engeller.

Hata sınıflandırmasına başka bir yaklaşım, nerede oluştuklarına bakmaktır. Şu şekilde:

  • Birim düzeyinde hatalar, bir kod biriminde bulunan basit yazılım hatalarıdır. Genellikle hesaplama veya mantık hatalarından kaynaklanırlar ve tek bir yazılımla ilgilenirler. Düzeltmeleri genellikle kolaydır.
  • Sistem düzeyindeki hatalar, birden çok yazılım parçasının sorunlara yol açacak şekilde etkileşime girmesinden kaynaklanan daha karmaşık hatalardır.
  • Sınır dışı hatalar, kullanıcı programla beklenmedik bir şekilde etkileşime girdiğinde ortaya çıkar. Örneğin, bir kullanıcı bir form alanına programın işlemek üzere tasarlanmamış olduğu bir parametre girdiğinde bu olur. Sınır dışı hatalar, yazılımdan yararlanmak için kullanılabilir. Örneğin, tehdit aktörleri, operasyonel teknolojide alan adı sistemi önbelleğini zehirleme saldırıları gerçekleştirmek için Infra:Halt güvenlik açığını kullanır.

Bug Nasıl Bulunur?

Hatanın türüne ve nerede ve ne zaman bulunduklarına bağlı olarak hataları ele almanın birden çok yolu vardır. Bir yazılım içerisinde bug bulmak için sistem detaylı bir şekilde analiz edilmelidir. Her sistem içerisinde farklı özellikler ve belirtiler gösterebilen bug, her çeşitte bilinmeyen hata olarak tanımlanır. Bu bilinmeyen hata bazı zamanlarda iyi, bazı zamanlarda kötü olabilir. Bir bug sayesinde bilgisayar tamamen donabilir veya düzenli takılabilir. Öte yandan, bug sayesinde bilgisayardaki işlemler daha kolay ve hızlı şekilde yapılabilir.

Bir sosyal medya programı içerisinde gezinirken, isimlendirilemeyen kusurlar ile karşılaşmak ya da özelliklerin izin vermediği işlemleri yapabilmek bir çeşit bug olarak tanımlanabilir. İstenmese de karşılaşılabilen bugları bir yazılım içerisinde bulmanız için üst düzey bir kod bilgisine sahip olmanız gerekir. Yazılımcıların bir uygulama içerisinde hataları bulması ve gidermesi çok ciddi bir iştir. 

Yazılım mühendisleri; kodların içerisindeki bir hatanın bulunmasının, kodu yeniden yazmaktan daha zor olduğunu belirtir. Yazılımın içerisinde bulunan bir bug nedeniyle sistem tamamen bozulabilir. Sistemin bu hatadan dolayı değişmesi ve tamir edilememesi durumu da söz konusu olabilir. Büyük firmalar, hataları daha kolay bulabilmek için devamlı yazılım çıktılarını izler.