Sizce bir yazılım “Neye Göre İyi Yazılım? “olur. Görsel estetiğe göre mi? yoksa performansına göre mi? bu ve bunun gibi sorular akılınıza mı takıldı? o zaman fazla uzatmadan küçük bir hikaye ile yazımıza başlayalım.
Diyelim ki bir bisiklet fabrikasının sahibisiniz. Tasarımcınızdan diğer bisikletlerden farklı bir bisiklet tasarlamasını istediniz. Ve tasarımcınız aşağıdaki gibi bir bisiklet tasarlamış ve size getirmiş. Nasıl bir tepki verirdiniz?

“Bunun tekerleğinin yuvarlak olması gerekmiyor muydu?” diye düşündüğünüzü hisseder gibiyim. Tasarımcınız farklı bir şeyler tasarlayayım derken bisikleti tekerleklerini amacına uygun olmayan bir şekilde tasarlamış. Bu bisiklet bizi bir metre bile ileri götüremez.
Yukarıda ki hikâye size saçma gelebilir ama buradan güzel bir sonuç çıkarabiliriz. Farklı bir şeyler tasarlayayım derken üretmiş olduğunuz projeye amacına uygun tasarımlar eklemeniz gerekiyor aksi takdirde yaptığınız proje işlevsiz ve kullanılmaz bir hale gelebilir.
İşte biz yazılımcılar için de oluşturduğumuz yazılımlar bir tasarım gibidir. Yazılım = Tasarım desek yanlış olmaz sanırım.
“Neye Göre İyi Yazılım?” başlığı altında hazırlamış olduğum bu yazımı gelin birlikte inceleyelim. Bu yazımda şu başlıkları inceleyeceğiz.
- İyi Yazılım Nedir?
- İyi Bir Yazılımda Bulunması Gereken Özellikler.
- Neye ve Kime Göre İyi Yazılım?
İyi Yazılım Nedir?
“İyi Yazılım” diye internette arama yaptığınızda karşınıza bu başlık ile ilgili birçok yazı çıkacaktır ama hepsinin ortak şeylerden bahsettiğini görürsünüz. Sonuçta herkesin bahsettiği özet şudur:
- İyi Yazılım, kendinden istenilen görevleri, işlevleri eksiksiz yerine getirebilmelidir.
Yani yazılıma al bu malzemeleri bize pasta yap dersek ve oda bunu eksiksiz yerine getirirse bu kaliteli iyi bir yazılımdır ama o bize pasta yerine ekmek yaparsa işte yazılım burada asıl amacının dışına çıkmış olur ve bu yazılım kaliteli bir yazılım olmaktan çıkar. Daha kaliteli bir yazılım tasarlarsak yazılımımız bize daha güzel pastalar verecektir. Özet olarak; bir yazılımın kaliteli olabilmesi için ona verdiğimiz verilerle bizi istenilen sonuca ve amaca ulaştırması gerekir.
İyi bir yazılım tasarlaya bilmek için de iyi bir yazılımcı olmak gerekir. İyi yazılımcı yazmış olduğu kodları en ince ayrıntısına kadar iyi bir şekilde tasarlamalıdır. Bir yazılımcı kodlarını tasarlarken kendisine şu soruları sormalıdır. Yazılımı nasıl daha kullanışlı hale getirebilirim? Kodlarımı amacına uygun şekilde nasıl tasarlaya bilirim? Yazılımcı olarak bunun gibi sorular kendinize sorarak diğer yazılımcılardan bir adım önde olabilirsiniz.
“Tasarımda mükemmellik, ekleyecek bir şey kalmadığında değil, çıkaracak bir şey kalmadığında yakalanır.” (Antonie de Saint-Exupery)
- Her iyi yazılım da olması gereken bazı özellikler (performans, verimlilik, kullanılabilirlik) vardır.
Gelin beraber bu özellikleri inceleyelim.
İyi Yazılımda Bulunması Gereken Özellikler Nelerdir?
- Öncelikle iyi bir yazılım basit olmalı yani basit yazılmış ve değiştirilebilir kod yapısına sahip olmalıdır. Kalite basittir.
Basit dediğim şeyi yanlış anlamayın basitten kastım kodların basit bir işlem yapması değildir. Basitlik kodların okunabilir bir şekilde tasarlanmasıdır ve tasarımın genişleyebilmesidir. Kodda değişiklik yaptığımızda tasarımda diğer kod parçalarının minimum seviyede etkilenmesi gerekir.
“Gizemli bir cinayetin sırlarını çözmek iyidir. Fakat kodun sırlarını çözmek zorunda kalmamalısınız. Kodun kolaylıkla anlaşılabilir olması gerekir.” (Steve McConnell)
Genel olarak bir yazılımda bulunması gereken özellikler aşağıdaki gibidir.
- Doğruluk: İyi Yazılım bizim istediğimiz şeyleri karşılamalıdır.
- Güvenilirlik: Yazılımın gerekli talimatları ne hassaslıkla yerine getirebilmesidir.
- Verimlilik: Amacımızın gerçekleştirilmesi için kullanılması gereken bilgisayar kaynakları ve kod miktarıdır.
- Güvenlik (Bütünlük): Yazılımın siber saldırılara karşı olan güvenliğidir.
- Hata bulma kolaylığı: Yazılımda oluşan bir hatanın yerini kolay tespit edip ve onu kolay bir şekilde düzelmektir.
- Esneklik: Yazılımda değişiklik yapabilme kolaylığıdır.
- Taşınabilirlik: Programın farklı donanımlarda ve uygulamalarda kullanılmasıdır.
- Tekrar kullanılabilirlik: Yazılımın tamamının ya da bir kısmının farklı bir projede kullanılmasıdır.
- Birlikte çalışabilirlik: Bir yazılımın diğer yazılımlar ile bağlantı sağlama kolaylığıdır.
İyi yazılım, kodu okuduktan sonra “aa ne kadar basit yazılmış, ben de böyle yazabilirim” denilendir.
Neye ve Kime Göre İyi Yazılım?

İyi yazılımın ve bir yazılımda bulunması gereken özellikleri öğrendiğimize göre iyi yazılımın “Neye ve Kime Göre İyi Yazılım?” sorusuna cevap verebiliriz bu sorunun cevabını 3 aşmada cevaplamaya çalışacağım.
- Nereden baktığınıza
İyi yazılım iki tarafında mutlu olmasıdır. Bir yazılımı geliştirici tarafı, iki yazılımı kullanan taraf.
- Geliştirici tarafından bakılırsa, kişisel olarak geliştirmek değil, takım olarak geliştirilen yazılımlar iyidir. Basit ve anlaşılır kodlarla tasarlanmış yazılım iyi yazılımdır.
- Yazılımı kullanan tarafından bakılırsa, istemiş olduğu şeye kolay ve basit yoldan ulaşması iyi yazılımların en büyük özelliğidir. Yeni kullanıcının isteklerine cevap verebiliyor olması kullanıcı tarafından önemlidir. İyi bir yazılım kullanıcının yaptığı işe değer katan bir yazılımdır.
- Yazılımın hangi aşamada olduğuna
Burada duracağımız nokta yazılımın ne kadar süredir ortaya çıktığıdır. Eğer bir yazılım hala başlangıç aşamasında ise o yazılımda mutlaka giderilmesi gereken eksiklikler vardır. Ama yazılımın eksikleri giderildikçe kalitesi daha çok artmaya başlar.
- Kalite anlayışınıza
Her insanın kalite anlayışı farklıdır. O halde yazılım tasarlayan ve onu kullanan kişilerinde kalite anlayışı farklılık gösterir. Örneğin; bir mobil uygulama yazılımı için iki farklı kullanıcının kalite anlayışı farklı olabilir. Biri görsel kaliteye önem veriyordur, birisi performansa önem veriyordu bu yazılımı tasarlayan kişi için de geçerlidir. Bu yüzden bir yazılımın iyi olduğunu karar vermek için görsel, performans vb. kategorilere ayırıp öyle karara vermeliyiz.
Evet yazımızın sonuna geldik sizlerde bir yazılımcı olarak yazmış olduğunuz kodları iyi yazılım olup olmadığına dikkat edin. Unutmayın yazılım bir tasarım biçimidir tasarımınız ne kadar iyi olursa kaliteniz o kadar artar. Bir sonraki yazımda görüşmek üzere…




