İ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 | Anti Pattern

Diğer Yazılar
PHP
JavaScript
CSS
XHTML
MySQL
XML
On Yılda Programlama Öğrenin
Yazılım Mimarlığı
Programlamanın Taosu
Kötü Tasarımın Belirtileri
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:7450Güvenlik Kodu:7450Güvenlik Kodu:7450Güvenlik Kodu:7450




En Son Okunan 10 Makale
  1. İnternetten
  2. Yeni Ekonomi
  3. Web Site Piramidi
  4. Beyin Nasıl Öğreniyor?
  5. CE İşareti ve ISO Belgesi
  6. Özlü Sözler
  7. Programcılık
  8. PHP Güvenliği - Basit PHP Güvenliği
  9. Bilgisayar Donanımı
  10. Kısa Bilgiler Örnekler
 
Anti Pattern>
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

Bilgisayar yazılımları geliştirmekle yıllardır uğraşılmakta. Son yarım yüzyılda ortaya çıkan bu alanda çeşitli paradigmalar (prosedüral, nesne tabanlı, fonksiyonel, vs) ve çeşitli modeller (code reuse, unit testing, component model, extreme programming, design patterns) ortaya atıldı. Daha çok ``Özgür Yazılım'' ile birlikte dağıtık geliştirme yöntemleri gündeme geldi. Tasarım, uygulama ve test aşamalarını kapsayan geniş bir açıdan baktığımızda bize önerilen çeşitli ``doğru'' geliştirme yöntemleri var.
 
Diğer her alanda olduğu gibi dengeli ve sağlıklı bir kavrayışa sahip olmak için doğruların yanında ``yanlış'' yöntemler hakkında da bilgi sahibi olmak gereklidir. Bu konuda yaşanmış çok tecrübe olmakla birlikte, yazılı olarak birkaç kaynak dışında ciddi bir eksiklik bulunmaktaydı. Bu makale, ağırlıklı olarak yazılım mühendisliği ile ilgili birkaç Internet sitesinden derlenmiş, daha çok özgür yazılım alanını ilgilendiren bu tür çıkmaz yolları tanıtmaktadır.
Ortak noktaları:
  • Çoğu bir problemi çözmek isterken ortaya çıkar
  • İlk bakışta harika bir fikir gibi gözükebilirler
  • En çok tasarım aşamasında görülürler
  • Sizden çok daha üretken ve başarılı grupları batırmışlardır!

Creeping Featuritis 

En sık görülenlerden biridir. Kullanıcıları memnun etmek ve rakip ürünlerden daha iyi olmak amacıyla akla gelen her şeyi ürüne ekleme yoluna gidilir. Bir noktada ``gerekli'' ve ``yararlı'' olan ile ``cool'' görünen arasındaki sınır kaybolur, ``nitelik'' yerine ``niceliğe'' bırakır ve kalite kaybolur. Yazılım karmaşıklaştıkça hatalar çoğalır.
Örnek: Tanıtımında rakiplerinden daha uzun özellik listesini öne koyan hemen her yazılım.
Hatalı yaklaşım: Programcıları bir araya toplayıp herkesin ürüne istediği özellikleri eklediği bir tasarım yapmak.
Çözüm: Tasarıma kullanıcı istekleri ve profili ile başlamak.

Design By Committee 

Herkesin kullanabileceği bir standart oluşturmak için tüm grup ve kişiler bir araya getirilir. Hedefi ve vizyonu gözeten bir hakem bulunmamaktadır. Toplu kavgadan ne sonuç çıkarsa kabul edilir. Tarafların her biri kendi vizyonunun bir parçasını son ürüne sokabildiği için ortaya hiç kimsenin beğenmediği ama düzeltilmesi için de kimsenin tartışacak enerjisinin kalmadığı bir ucube çıkar.
 
Örnek: Sözde ``web standartları''.
Hatalı yaklaşım: Tüm fikirlerin bir sentezi en iyi sonucu verir.
Çözüm: Ortaya çıkan şeyin çözmek istediğimiz soruna bir faydası var mı?

Sanal İletişim 

Tüm tasarım ve uygulama tartışmaları eposta ve benzeri yollarla yürür. Sanal ortamın limitli ifade olanakları yanlış anlaşılmalara ve kavgalara yol açar.
 
Örnek: Eposta listelerinde sıkça karşılaşabileceğiniz tartışmalar.
Hatalı yaklaşım: Internet sayesinde insanlar evlerinde çalışabilir, dünyanın öbür ucundan yazılım geliştirebilir.
Çözüm: Toplantılar, bir araya gelmeler, hatta çeşitli eğlenceler düzenlemek ve tarafları fiziksel olarak tanıştırmak.

Hatalı Ekonomi 

Tasarruf yapmak amacıyla diğer gruplara destek sağlayan gruplarda kısıntı yapılır. Azalan destek ile birlikte tüm grupların verimi düşer. Bir benzeri de destek gruplarının önemsenmeyip denetlenmemesi yüzünden iş verimlerinin düşmesiyle oluşur.
 
Örnek: Joel Spolsky'nin eski işyeri ile problemleri ( http://joelonsoftware.com/articles/fog0000000043.html madde 9)
Hatalı yaklaşım: Yazılımcılar asıl önemli işi yapıyor. Desteğe ihtiyaç duymazlar, ufak tefek işleri de arada kolayca halledebilirler.
Çözüm: Gerekli önlemleri alıp destek işlerinin yürümesini, yazılımcıların ofis temizliği, halkla ilişkiler, basit işlerle zaman kaybetmemesini sağlamak.

Bana Derhal Tarih Verin! 

Kullanıcı ya da yönetici çok acele olarak bitiş tarihini bilmek ister. Daha yeterli bilgi mevcut değil ve yol belirsizliklerle dolu iken, bu baskıyla bir takım varsayımlar yapılır. Eksik bilgiyle saptanan tarihler deadline haline gelir. Doğal olarak işler yetişmez.
 
Hatalı yaklaşım: Kesin sayılar üzerinden hesap yapıp proje istatistikleri çıkarmak, gidişatı bu şekilde takip etmeye çalışmak.
Çözüm: Önümüzü göremediğimiz yerlerde ana hedefi ufak hedeflere ayırmak. Kısa sürede yapılabilecek ufak hedefler üzerinden giderek yolun belirgin hale gelmesini sağlamak.

Yanıltan İstekler 

Kullanıcılar yeni bir özellik istediklerinde genellikle çözmeye çalıştıkları sorundan çok bu özelliğin nasıl uygulanacağından bahsederler. Özellik kullanıcıdan geldiği için bir gereksinim olarak görülür. Aslında zaten basitçe çözülebilen bir sorun için yazılımın karmaşıklığı gitgide arttırılır.
 
Hatalı yaklaşım: Kullanıcıyı geliştirici yerine koymak. Hangi sorunu çözmek için istendiğini öğrenmeden istekleri gereksinim saymak.
Çözüm: Önce isteklerin nedenini öğrenmeye çalışın. Gereksinimler her güncellendiğinde, üzerlerinden geçip bunları basitleştirebilir miyim diye düşünün.

Burada Geliştirilmedi Sendromu

Not Invented Here (NIH) syndrome. Bir bileşene ihtiyaç duyulur. Söz konusu işi yapan çeşitli hazır çözümler bulunmaktadır. Bu çözümler grup dışında geliştirildikleri için değerlendirmeye bile alınmaz. Belki daha kötü bir karşılık geliştirmek için kaynaklar ziyan edilir.
 
Hatalı yaklaşım: Biz ilk kez el attığımız sorunu o alanın deneyimlilerinden daha iyi çözeriz. Başkalarının koduna muhtaç değiliz.
Çözüm: Kimler bu sorunla karşılaşmış, nasıl çözmüşler, biz de bu çözümleri kullanabilir miyiz?

Negatif Deneyim 

Bir kişi veya kurum uzun zamandır bir işi yapmaktadır. Bu süreçte yeni deneyimler kazanmamış, hep aynı çözümle başarıya ulaşmışlardır. Aslında iyi olmayan ama sorunu bir şekilde çözen bu yöntemi farklı bir sorun alanına taşımak istediklerinde başarısız olurlar.
 
Hatalı yaklaşım: Sorunu bugüne kadar nasıl çözdüysek gelecekte de aynı biçimde çözeriz.
Çözüm: Fırsat çıktığında yeni yaklaşımları denemek. Birkaç başarıdan sonra her sorunun altından kalkabileceğini sanmamak.

Sumo Evliliği 

İki büyük bileşen iç içe geçirilir, dahili detayları birbirine bağımlı hale getirilir. Bileşenlerden birini değiştirmek veya başka bir platforma taşımak gerektiğinde ortaya büyük bir iş yükü çıkar.
 
Hatalı yaklaşım: Farklı sorunların çözümlerini bir arada tasarlamak. Yazılımı katmanlandırmamak. Soyutlama kullanmamak.
Çözüm: Tarafları en erken zamanda boşamak gereklidir. Faydacılığa kaçıp bileşenleri baştan ayrı tutmak en iyi çözümdür.

İsveç Çakısı 

Bir yazılım özellikler kazandıkça başka sorunlara da yöneltilir. Ana görevinden gittikçe uzaklaşan bir takım fazladan ufak işler yapmaya başlar. Karmaşıklığı artar, her işi yapmaya çalışıp hiç bir işi iyi yapamayan bir hale gelir.
 
Örnek: Word yazılımı. Mektup yazmak için çok büyük, belge hazırlamak için çok düzensiz, serbest tasarım için çok sınırlayıcı. Yanında popup blocker ile gelen NVidia grafik kartı sürücüsü de başka bir örnek olabilir.
Hatalı yaklaşım: Büyük tek bir yazılımla her sorunu çözelim. Hazır altyapımız var, boş durmasın bu kodlar.
Çözüm: Yazımın yalnızca ana görevini en iyi biçimde yapması üzerinde yoğunlaşmak.

Kullanıcılar Salaktır 

Kullanıcıların kendi isteklerini bilemeyeceği, çoğunun bırakın bilgisayarı, yapmak istedikleri işi bile bilmediği varsayılır. Programcılar piyasayı ve kullanıcıları dikkate almayıp kendi varsayımları ile tasarım yapar. Ürün başarısız olur.
 
Hatalı yaklaşım: Ben karşımdaki adamın sorununu ondan iyi bilirim.
Çözüm: Empati, kullanıcı testleri, pazar araştırmaları.

Bozo Bitini Açmak 

Yeteneksiz kişilerle ilgili genel problem, onların kendi yeteneksizliklerini farkedemeyecek kadar yeteneksiz olmalarıdır. İyi durumda olduklarını sandıklarından kendilerini düzeltip geliştirmeye çalışmazlar.
 
Hatalı yaklaşım: Bit açılır, söz konusu kişi yokmuş gibi davranılır. Söyledikleri ve yaptıkları göz ardı edilir.
Çözüm: Bu kişilerin yeteneklerinin arttırılması için çalışmak, onları durumlarının farkına vardıracak ve hızlanarak kendilerini toparlamalarını sağlayacaktır. Ancak genellikle bu durumdaki kişiler 10 yaşından sonra düzeltilemeyecek türden temel bozukluklara sahip olduklarından işin yürümeyeceğini baştan kabul etmek en iyisidir.


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

Yazar : Gürer Özen
Son Güncelleme : 26 Ekim 2005, Çarşamba
Sayfa Sürümü : 1
Okunma Adedi : 6,128
Son Okunma : 2017-05-24 06:54:19
Kaynaklar : http://www.yazilimmimarlari.com

Programlamanın TaosuAnti PatternKötü Tasarımın Belirtileri
© [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 4 kişi çevirimiçi | Bugün =175 | Dün =115 | Bu Ay=5,215 | Günlük En Fazla=1,109 tekil ziyaretçi