Kaliteli Yazılım Tasarımı Deyince?
Kaliteli yazılım tasarımı başlı başına incelenmesi gereken bir konu olsa da yıllardır sektörde çalışan ve işin içerisinde acı-tatlı tecrübelere sahip yazılım geliştiricilere “Kaliteli yazılım tasarımı sizce nedir / nasıl olmalı?” şeklinde bir soru sorduğumuzda muhtemelen aşağıdaki cümleciklerden ve anahtar kelimelerden söz ettiklerini işitiriz.
- Basitlik olmalı yani basit yazılmış ve değiştirilebilir kod altyapısına sahip olmalı (Maintainable).
→Kod parçaları okunabilir olmalı (Readability).
→Tasarım genişleyebilir olmalı (Extendable).
→Yüksek kohezyon önemli: Sadece kendi işini yapan kod parçaları (sınıflar, fonksiyonlar) olursa, nerede iş yapacağımıza kolay karar veririz.
- Yazılan kod parçaları tekrar kolayca kullanılabilmeli (Reusability).
- Yazılan kod parçaları kolayca test edilebilmeli (Testability).
→ Örneğin: Kolay birim test yazılabilmeli.
- Kodda değişiklik yaptığımızda üründeki diğer kod parçalarının minimum seviyede etkilenmesi (Minimum regresyon hatası/etkisi). Yani sınıflar arası minimum bağımlılık olması (Dependency ya da Coupling).
Yazılım kalite ölçütleri olarak adlandırılabilecek bu anahtar kelimelerin (readability, testability, usability, coupling, cohesion, dependency vb.) önemli bir kısmı, yazılım tasarım prensipleri ve kalıpları ile doğrudan ya da dolaylı şekilde ilişkilidir. Bu noktada yazılım tasarım prensiplerine ve kalıplarına direk olarak dalmadan önce yazılım tasarımında kalite düşmanı olarak niteleyebileceğimiz (tecrübeyle sabit) anti-patternleri incelemek daha sağlıklı olacaktır.
Yazının tamamına bu linkten ulaşabilirsiniz.