Kötü Tasarımın Belirtileri - İsmail KIRBAŞ ile Web Sitesi Tasarımı
İsmail Kırbaş ile Tasarım Yolculuğu [AnaSayfa] İsmail Kırbaş ile Tasarım Yolculuğu [AnaSayfa] İsmail Kırbaş ile Tasarım Yolculuğu [AnaSayfa]
 Site Haritası 
 
Site Map
Ana SayfaYeriniz | Ana Sayfa | Makaleler | Programcılık | Kötü Tasarımın Belirtileri

Diğer Yazılar
PHP
JavaScript
CSS
XHTML
MySQL
XML
On Yılda Programlama Öğrenin
Yazılım Mimarlığı
Programlamanın Taosu
Anti Pattern
Use Case Diyagramları İle Başarılı Proje Analizi
RSS Dosya Yapısı
Flash Oyunları
Ajax
Android


E-posta Gönderin Yorum Yazın
Güvenlik Kodu:9682Güvenlik Kodu:9682Güvenlik Kodu:9682Güvenlik Kodu:9682




En Son Okunan 10 Makale
  1. Uzaktan Masaüstüne Erişmek
  2. Renklerin Dili - Mavi
  3. Görünmez Menü ve Tasarım
  4. İşaretleme Dillerinin Tarihi
  5. AJAX a Giriş
  6. Dot.Com BOMB
  7. Kitle İletişim Dili
  8. TOR ile Internet’te Kimlik Gizleme
  9. Casus Yazılımlar
  10. IPsec ile Sanal Özel Ağ Oluşturma
 
Kötü Tasarımın Belirtileri>
Yazı Tipi KüçültYazı Tipi BüyütAna SayfaYazıcıdan ÇıkarPDF Belgesi Olarak GörüntüleFavorilerime EkleArkadaşıma Tavsiye EdeceğimRTF (Word Dokümanı) olarak görüntüle

Yazılım geliştirmek zor zanaat. Yazılım projeleri birçok iş disiplinini bir arada bulunduran ve ciddi mühendislik çalışmaları gerektiren bir çalışmalar bütünüdür. Bu bütünün önemli bir ayağıda dizayndır.
Birçok bilimde olduğu gibi tasarımda zamanla çeşitli değişimler ve tecrübeler yaşadıktan sonra, günümüzde belli bir olgunluğa ve sistem birikimine ulaşmış durumda. Bu bilgi birikimi ve olgunluk elbette yaşanan kötü tecrübelerle gelişmiştir. “Düyada herşey zıddıyla vardır.” prensibinden hareketle, yazılım endüstrisinin tecrübe ettiği kötü pratikler ve tecrübeler bizlere doğru pratikleri uygulama ve görme şansı vermiştir.
 
Bu noktada kötü tasarım belirtilerinin üzerinde durulmasının önemli olduğunu vurgulamak istiyorum. Bu farkındalığın projelerde yapılan ciddi tasarım hatalarının azalmasına yardımcı olabilir.
 
Yazılım Mimarisine Genel Bir Bakış
 
Yazılım Mimarisi karmaşıklaşan yazılımların daha da artmasıyla giderek önem kazanıyor. Bugün her zamankinden daha çok mimari planlamaya ihtiyaç duyuyoruz.  Yazılım mimarisi çok  tanım içermesine rağmen, bunlardan en göze çarpanı ve kullanılanı katmanlı uygulama yapısıdır. Bu yapı kendi içinde alt dallara ayrılarak makro düzeyden mikro düzeye kadar çeşitli mimari kalıpların bulunduğu kapsamlı bir çalışmanın ürünüdür.  Yazılım mimarları yada tasarım ekipleri mimariyi bir çok boyutta ele alarak makro düzeyden mikro düzeye kadar tasarımı adım adım şekillendirirler.  Önce makro düzeyde alt sistemler, modüller, paketler ve sonrasında mikro düzeyde bileşenler ve sınıflara kadar giden uzun ince bir yol izlerler. Mimari çalışma özünde bu alt bileşenlerin birbirleri ile olan ilişkilerini inceler.  Bu ilişkilerin temelinde bağımlılık analizi yatar. Bağımlılık yıllardır tasarımcıların üzerinde çalıştığı ve indirgemeye uğraştığı zor bir alandır. Bileşenler arasındaki bağımlılık ilişkisi orta ve uzun vadede projenin başarıya ulaşması noktasında kritik öneme sahiptir. Bir tasarımın hikayesi burada başlar ve sonu başta verilen tasarım kararlarının başarısına bağlıdır.
 
     
 
Şekil 1: Makro Ölçek
 
 
    
 
Şekil 2: Mikro Ölçek
 
 
Tasarımın Çürümesi
 
Yazılım Projelerine başlarken tasarımcıların kafalarında açık, temiz ve şık bir mimari tasarım vardır. Bu tasarım zamanın ve belkide geleceğin ihtiyaçları gözönünde bulundurularak yapılandırılmıştır. Fakat zaman geçtikçe tasarımın baştaki saflığını yitirdiği görülür. Bunun başlıca sebebi gereksinimlerin değişmesi durumudur. Eğer bu tasarım bozulması ciddi bir çürüme yoluna gidiyorsa, bu sonuç başta yapılan tasarımın doğru olmadığını gösterir.
 
Çürük tasarım projelerin ilerki safhalarında ortaya çıkar. Projelerin ileri aşamalarında bakım yada geliştirme maaliyetlerinin ve riskinin büyük oranlarda arttığı gözlenir.  Bu artışın aşağıdaki grafiktende görüldüğü üzere geometrik olduğu anlaşılmaktadır.
 
 
Şekil 3: Kötü Tasarım ve Etkisi
 
Bu grafikten yola çıkarsak tasarımın yerine göre projelerde hayat kurtarıcı rolü yadsınamaz bir gerçektir.
 
Kötü Tasarım Belirtileri
 
Kötü tasarımın başlıca 4 belirtisi, bize tasarımın çürümeye yüztuttuğunu gösterir. Her belirti bir diğeriyle ilişkilidir. Bunlar: esnemezlik (katılık), kırılganlık, hareketsizlik ve  akışkanlıktır.
 
Esnemezlik (Katılık)
 
Esnemezlik yazılımın değişime hatta basit olanlara dahi zor izin verdiği durumdur. Uygulamanın herhangi bir modülünde yapılan değişiklik buna bağımlı tüm diğer modüllerde çığ gibi büyüyen değişimlere sebebiyet verir. Bu çığ etkisi, başta yapılan bağımlılık analizi ile yakından ilişkilidir.  Böyle bir değişiklik sizi haftalar sürecek bir düzeltme maratonu içerisine sokabilir ve çok tehlikelidir. Bu sonuçlar bilindiğinden yöneticiler bu konuya çok soğuk yaklaşırlar. Böylesi değişikliklerden kaçınmalar başlarlar. Böylesi bir durumda uygulama katı bir tutum sergilemeye başlar.
 
Kırılganlık
 
Kırılganlık esnemezlik belirtisi ile çok yakından ilişkilidir. Kırılganlık yazılımın değişimini müteakip bir çok yerinden kırılmasına olan eğilimidir. Bu kırılganlık bazen değişiklik geçiren alanlar ile hiçbir kavramsal ilişki bulunmayan noktalardan çıkabilir. Bu bilinmezlik ve beklenmeyen durum ekipte bir korku ve endişe doğurur.  Yapılacak her düzeltme zaman içinde uygulamanın kırılganlığını artırır ve sonrasında uygulama artık düzeltilemeyecek, onarılamayacak hale gelir.  Proje kontrolün elden çıkma tehlikesi ile karşı karşıyadır.
 
Hareketsizlik
 
Bir uygulamanın aynı proje içinden yada diğer projeler tarafından tekrar kullanılamaz olması belirtisine hareketsizlik adı verilir.  Tekrar kullanılabilirlik (reusability) yazılımların olmazsa olmaz prensiplerinden biridir. Bu prensibin gözardı edildiğinde yada gereğinden az kullanıldığında sistemin hareketsizliği artar. Bu belirti bir mühendisin bir diğerinin yazdığı modüle benzer bir modüle ihtiyaç duyduğu anda ortaya çıkar. Mühendis önce yazılan modülü tekrar kullanabilmek üzere kontrol eder, fakat eski modülün  o kadar çok  bağımlılığı ve bagaj yükü vardırki,  modülü tekrar kullanabilmek çok zordur. Dolayısıyla burada mühendisimiz aynı modülü tekrar yazmaktan başka çare bulamaz. Bu şekilde ilerleyen bir proje sürekli tekrarlardan dolayı bakımı zor ve yüksek risk maaliyetleri taşır. Yapılacak değişiklikler tüm tekrar modülleri etkilediğinden bakım maaliyetleri çok artar.
 
Akışkanlık
 
2 akışkanlık belirtisinden söz etmek mümkündür.
 
  1. Tasarım: bir değişimle karşılaşıldığında, mühendisler değişimi birden çok yolla gerçekleştirebilirler. Bazı değişiklikler tasarımı korurken bazıları korumaz. İyi bir tasarımın göstergesi ise, onun değişeme açık ama iç mimarisinin ise değişime kapalı olmasıdır, bu prensibe açık kapalı prensibi (Open Close Principle) adı verilir. Bu sayede tasarım yapısı korunurken, dışarıdan gelen değişim istekleri bu yapı içersinde sisteme dahil olacaktır ve sistem iç tutarlılığını korumuş olacaktır. Bu prensip daha ilerki yazılarımızda işlenecektir. Gerek görülürse “Open Close Principle” ile arama yapılarak gerekli kaynaklara erişilebilir. Tasarım akışkanlığına dönersek; Eğer varolan tasarımı koruyucu değişim metodları  onu kıran (hack) metodları uygulamaktan çok zorsa, tasarımın akışkanlığı fazladır ve bu istenmeyen bir durumdur. yazılım geliştiriciler bu gibi zor durumlarda kısa yama çözümlerle varolan tasarımın tutarlılığını zedelerler. Zamanla bu yamalar birikir, ve ileride bir problem yumağı haline gelir.
  2. Çevre: geliştirme ortamının verimsiz ve yavaş olduğu belirti çeşididir. Bu çevre şartlarına; uzun derleme süreleri, gereksiz uzun tekrar derleme süreçleri, verimsiz konfigurasyon yönetimi ve yavaş kaynak kod kontrolü gibi  örnekler verilebilir.  Bu zor şartları aşmak için mühendisler ortam şartlarının gerekliliklerine uymadan sistem bütünlüğünü zedeleyebilirler. Kaynak kod kontrol (Source Code Control) süreçlerinde bazı checkin’lerden kaçınabilir, bazı durumlarda tekrar derleme yapmadan bu checkin’leri yapabilirler. Sistem böyle bir geliştirme ortamında istikrarsız sonuçlar doğurabilir. XP’de kullanılan Sürekli Tümleşim (Continuous Integration) pratiği böyle koşullar altında beklenmedik sorunlar doğurur. 
 
Yukarıda ele aldığımız 4 temel belirti, yaptığınız tasarımların sonucunda ortaya çıkan problemleri göstermesi açısından önemlidir. Bu belirtilerden hareketle bir sonraki projelerinizde dikkat etmeniz gereken noktaları daha kolay görebilirsiniz. Unutmayın mükemmele giden yol uzun ve taşlıdır.


Not: Yazılar konusundaki yorumlarınız için lütfen Yorum Yazın bölümümüzü kullanın.

Yazar : Oğuz Bayram
Son Güncelleme : 26 Ekim 2005, Çarşamba
Sayfa Sürümü : 1
Okunma Adedi : 8,083
Son Okunma : 2017-10-21 03:22:56
Kaynaklar : http://www.yazilimmimarlari.com

Anti PatternKötü Tasarımın BelirtileriUse Case Diyagramları İle Başarılı Proje Analizi
© [Site Haritası]
| Makaleler | Seyir Defteri | Kaynaklar | İndirin | İletişim |

RSS dosyasını görmek için tıklayınız. RSS dosyasını görmek için tıklayınız.XML versiyonu için tıklayınız WAP versiyonu için tıklayınız Bu site DyNA İçerik Yönetim Sistemi üzerinde çalışmaktadır.
İsmail KIRBAŞ ile Tasarım Yolculuğu Anasayfa İsmail KIRBAŞ ile Tasarım Yolculuğu Anasayfa İsmail KIRBAŞ ile Tasarım Yolculuğu Anasayfa
ismail kırbaş ile web sitesi tasarimi sitemap ismail kırbaş ile web sitesi tasarimi sitemap
  Sitemizde 7 kişi çevirimiçi | Bugün =115 | Dün =154 | Bu Ay=4,748 | Günlük En Fazla=1,109 tekil ziyaretçi