Blog

Yazılım Mühendisliği ve Kod Kalitesi – 3

Bu bölümde “İsimlendirme yaklaşımları, Programlama elementleri (Değişkenler, Sabitler, Metotlar, Sınıflar) ilgili pratikler, Kodun organizasyonu, Dokümantasyon” başlıklarını inceleyeceğiz.
Kodun daha kolay anlaşılması için İsimlendirme 1. sınıf olmalıdır. Kod standartları için hazırlanmış dokümanların büyük bölümünü de bu isimlendirme standartları oluşturur.
İsimlendirme ile ilgili karar vermemiz gereken bir ön adım var. Projemizde tek bir dil (Türkçe, İngilizce) kullanmak.
Proje hedeflerimizi (Global piyasa, Açık kaynak) ve ekip arkadaşlarımızın yabancı dil bilgisi seviyesini de göz önüne alarak, İngilizce tercih edebiliriz.
Programlama dilimiz İngilizce olduğunda, kodumuz daha okunaklı olacaktır.
Sonraki adımda ise programlama elemanlarımızı isimlendirirken hangi isimlendirme kuralı takip edeceğimizi belirlemek. (PascalCase,CamelCase gibi)
Bütün programlama elemanlarımız için tercihlerimizi tablo halinde listelemek.
PascalCase -> Sınıf,Metot,Özellik(Property),Tablo,Kolon
CamelCase -> (private) Değişken, Parametre
gibi.
Programlama dilindeki yaygın kullanımı tercih etmelisiniz.

Yazılım Mühendisliği ve Kod Kalitesi – 2

Kod kalitesi için birinci basamak kodun yazımında standartlar takip etmektir.
Kodlama standartları yazılım geliştirme sürecinde üretilmesi gereken bir dokümandır. Tüm yazılım ekibinin, aynı yaklaşımı sergilemesi ancak bu şekilde temin edilebilir. Web içeriği olarak üretildiği taktirde kolay erişim, güncelleme ve erişim imkanları gibi avantajlara sahip olabiliriz.

Kodlama standartlarında, kabul görmüş ve yaygın olarak kullanılan yaklaşımları tercih etmek işimizi kolaylaştıracaktır.
Teknoloji firmaları tarafından yayınlanmış dokümanları referans alabilirsiniz. Önemli açık kaynak kodlu projeler de referans kaynağımız olabilir. Bu referansları aynen almak yerine kurum kültürümüzü ve imkanlarımızı da değerlendirerek özelleştirmeliyiz. Kurumsal birikimlerimizi de içeriklerimize yansıtmalıyız. Yazılım programlama dilinin bazı farklı özelliklerine göre farklılaşmalar olabilmektedir. Bunun için öncelikle programlama dilinden bağımsız bir yaklaşım ortaya koymalıyız. Farklılıklar ek içerikler olarak sunulabilir.

Kodlama standartları 2 bölümde ele alınmalıdır.
1) Kodun yazımı ile ilgili prensipler (Readability)
2) Kodlama ile ilgili yöntem ve prensipler (Maintainability, Robustness, Reliability)

Yazılım Mühendisliği ve Kod Kalitesi

Yazılım Mühendisliği adımlarından birisi de, Kod geliştirme adımıdır. (Software Construction)

Kodumuzun, farklı ihtiyaçlar sebebiyle değişikliğe ihtiyacı olacaktır. Bu açıdan kodun anlaşılabilir, kolay ve zahmetsiz (yan etkisi az veya olmayan şekilde) değiştirilebilir olması önemlidir.

Kodumuzu, hem kendimiz hem de ekip arkadaşlarımızın da rahatlıkla anlayabileceği bir şekilde yazmalıyız. Kısa bir zaman sonra, kendi kodumuzu bile anlamakta zorlanıyoruz.

Buradaki temel ölçü, “Sadece bilgisayarın anlayabileceği bir kodu herkes yazabilir. Önemli olan, başkalarının anlayabileceği kodu yazmak olmalıdır.” (Martin Fowler)

İyi ve kaliteli kod geliştirmek için, bu alandaki tecrübelerden istifade etmeliyiz. Kod kalitesi ile ilgili kitaplar da telif edilmiştir. Bu kitaplara da müracaat edilebilir. (Code Complete, Pragmatic Programmer, Clean Code, Refactoring vb)

Hem kişisel ve hem ekip moral motivasyonu, yazılan kodun kalitesi ile doğru orantılıdır.

Bu alandaki önemli tecrübeleri, seri halinde paylaşmayı düşünüyorum.

Bileşen Temelli Yazılım Sistemleri Geliştirmek-3

Bu serideki önceki yazılarımızda, tüm yazılım bileşenlerimizi kendi imkanlarımız ile geliştirme eğiliminden çıkılması gerektiğini ve hazır bileşenlerin (Ticari, Açık Kaynak) değerlendirilmesi gerektiğini belirtmiştik.

Bu bileşen kümesinin birlikte çalışabilmesi için, yazılım sistemimizin mimarisi açısından nasıl bir yöntem izlemeliyiz?
Tüm yazılım bileşenlerimizin dışarıdan temin edildiği durumu düşünelim. Bileşenlerin birbiri ile etkileşimi için gerekli tanımları ve ortak ihtiyaçlarımızı nasıl yöneteceğiz?
Bunun için, temel bir taşıyıcı alt yapıya ihtiyacımız var. (Foundation -> Framework -> Platform)
Bilgisayar dünyasından örneklemek gerekirse; Bilgisayar Kasası ve Ana kart, farklı seviyelerde taşıyıcı alt yapılardır.
Sadece bilgisayar kasası ve/veya ana kart üretip, tüm bileşenlerini dışarıdan temin eden markalar var.

Bizde, bu yaklaşımı takip edebiliriz. Öncelikli, temel alt yapımız ve asıl işimiz ile ilgili bileşenlerimizi hedeflemeliyiz. Ürünümüzü çıkarmalıyız.
Daha sonraki süreçte daha geniş imkanlarımız olduğunda, dışarıdan aldığımız diğer bileşenlerimizi de geliştirilebiliriz.

Bileşen Temelli Yazılım Sistemleri Geliştirmek-2

Yazılım sistemleri geliştirirken, hazır bileşen (Ticari,Açık Kaynak) kullanımında nasıl bir yaklaşım takip etmeliyiz?
Öncelikli işimiz, bize verilen işi zamanında ve planlanan kaynaklarla tamamlamaya çalışmaktır. Çoğu zaman kaynak planlamasında yaşanan sıkıntılar (Software Estimation), gereksinimlerin iyi belirlenememiş olması veya yeterli olmayan kaynaklar sebebiyle, en önemli aksaklıklar yaşanmaktadır. Bunlar aynı zamanda, proje yönetimi açısından riskleri ifade etmektedir.

Riskleri düşürebilmek ve kaynaklarımızı asıl işimize yoğunlaştırabilmek açısından, hazır bileşen kullanımı değerlendirilmelidir. Şunu unutmayalım ki, aynı problemleri başkaları da yaşıyor. Problemler genele doğru gittikçe, bulunabilecek çözümlerin sayısı artıyor. Bu çözümleri, projemizin bir parçası olarak görebilmeliyiz. Hatta birlikte çalıştığımız proje ekiplerimiz olarak adlandırabiliriz.

Biz de, en genel ihtiyaçlarımızdan başlayarak özele (asıl iş alanımıza) doğru, bir özellik değerlendirmesi yapabilir ve proje kaynaklarımız nispetinde bir denge takip edebiliriz.
Sonraki yazıda ise, özel ve genel bileşenlerin, yazılım mimarisi açısından nasıl bir yöntemle geliştirilebileceği konusunda bilgi paylaşacağım.