İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır
Onder Teker
on_der_tek_er@yahoo.com

Atik Programlama (Agile Programlama) Örgütleniyor

Geleneksel analiz, tasrım ve programlama tekniklerine karşı geliştirilen yeni yöntemler giderek yaygınlaşıyor. Aralarında Exteme Programming (XP), Scrums, Crystal Methodologies, Feature-Driven Programming gibi yöntemlerin bulunduğu yazılım geliştirme teknikleri gün geçtikçe daha çok taraftar topluyor. Geçtiğimiz dönemde bu adı sayılan tekniklerin ileri gelenleri ararındaki benzerliklerin çok fazla olması nedeniyle ittifak kurmaya, tek bir isim altında toplanmaya karar verdiler : Atik Programlama (Agile Programming). Genel yaklaşımların ve ortak yönlerin vurgulandığı bir manifesto hazırladılar ve yayınladılar. Kurdukları Agilealliance.org sitesinde genel prensipleri yayınladılar. Bu adres ayrıca Atik Programlama ile bir çok belge ve bağlantı içeriyor.

Agile Manifesto aşağıdaki gibi belirlenmiştir :

Agile Yazılımı Geliştirme Manifestosu

Biz yazılım geliştirmenin daha iyi yollarını yaparak ve başkalarının yapmasına yardım ederek ortaya çıkarıyoruz. Bu çalışmanın sonucunda

daha fazla değer veriyoruz.

Sağ taraftakilere de değer verirken, sol taraftakileri daha fazla değerli görüyoruz.

Bu manifestonun yanında Atik Yazılım Geliştirme'nin dayandığı temel prensipler de belirtilmiş :

Atik Menifestonun Arkasındaki Prensipler

En büyük önceliğimiz değerli yazılmımı erkenden ve sürekli teslim ederek müşteriyi memnun etmektir.

İsteklerdeki değişiklikler, geliştirmenin son aşamalarında bile olsa hoş karşılanır. Atik süreçler değişimden müşterinin rekabetteki avantajı lehine yararlanır.

Çalışan yazılımı sık sık, bir kaç haftadan bir kaç aya kadar sürelerde, kısa bir zaman diliminde teslim etmek tercih edilmeli.

İş insanları (müşteriler) ve geliştiriciler proje boyunca günlük olarak birlikte çalışmalı.

Projeler istekli bireylerle yapılmalı. Onlara ortam ve ihyiyaç duydukları destek verilmeli ve onların işi yapacaklarına güvenilmeli.

Dışardan geliştirme takımındakilere ve birbirleri arasında bilgi taşınmasının en etkili ve etkin yolu yüzyüze görüşmektir.

Çalışan yazılım gelişmenin birincil ölçütüdür.

Atik süreçler sürekli devam ettirilebilir geliştirmeyi ilerletir. Destekleyenler, geliştiriciler ve kullanıclar sabit bir hızı süresiz olarak sağlayabilmeliler.

Teknik üstünlüğü ve iyi tasarıma sürekli dikkat etmek atikliği arttırır.

Basitlik - yapılmamış işin miktarını maksimize etmek - esastır.

En iyi mimariler, istekler ve tasarımlar kendi kendine örgütlenen takımlardan çıkar.

Düzenli aralıklarla takım nasıl daha etkili olabileceklerini düşünür ve sonra davranışlarını buna göre ayarlar ve düzenler.

Prensiplerde açıkça belirtildiği gibi, Agile Yazılım Geliştirme basitlik ve hız demek. Geliştirme takımı ilk aşamada sadece başlamak için gerekli işlevleri yerine getirir. Müşteriden gelen geri beslemelere uygun olarak geliştirmeye devam edililir. Geliştirme artımlı (ufak yazılmı sürümleri, hızlı devirler), işbirlikçi (müşteriler ve geliştiriciler arasında yakın iletişim), doğrudan (öğrenmesi ve değiştirmesi kolay, iyi dokümante edilmiş) ve uyumlu (son dakika değiştirmeleri yapabilen) özelliklerini taşır.

Atik Programlama Şelale (WaterFall) Yöntemine Karşı

Atik Programlama özellikle Şelale Yöntemi'ne karşı geliştirilmiştir. Geleneksel geliştirme yöntemi olarak kabul edilen Şelale yöntemi, birbiri ardına sıralanmış fazlardan oluşur. Şelale denmesinin nedeni, bir aşama bitmeden diğerine başlanmamasıdır. Başka bir adı da Yukarıdan Aşağıya Yöntemi'dir. Önce Analiz yapılır. Analizin sonuçlarına göre bir Dizayn yapılır. Bu dizayn'a göre Kodlama yapılır ve en son test edilir. Kod bitmeden test yapılmaz. Kodlama kesinlike tasarıma uyar, hiç bir şeyi değiştiremez. Tasarım da analiz sonuçlarına göre belirlenir.

Şelale yöntemi özellikle diğer mühendislik alanlarında, örneğin İnşaat ve Mekanik'te kullanılır. Bu alanlarda üretim başladıktan sora tasarım değiştirilemez. Şantiyede tasarımın değiştirlmesi, toprağin veya diğer koşulların tekrar analiz edilmesi mümkün olmaz. Şeleale yönteminin karşıtları bu yüntemin yazılıma uymadığını söylemektedirler. Çünkü Yazılım Mühendisliği kendine has bazı özellikler içerir. Değiştirmek mümkündür örneğin. Tasarım fiziksel kurallarla bağlı değil, müşterinin isteklerine bağlıdır. Şelale yöntemin eleştirenler bu yöntemdeki fazları şöyle sıralıyorlar :

Tasarım Öldü Mü?

Aslında atik sistemler tasarıma karşı değil, sadece herşeyin önceden tasaralanabileceğinin düşünülmesine karşı. Projeye başlarkan bir ön tasarım yapmak gerekir. Daha sonra da kodlara ve test sürecinden gelen geri beslemelerle tasarım güncellenir. Tasarımın tamamlanması projenin sonuna doğru olur. Kısacası tasarım girdi değil çıktıdır.

Ayrıca tasarıma herkes, yani analistler, geliştiriciler, iş insanları katılmalı. Herkesin tasarımda söz hakkı olmalı. Hatta en alt düzeyde çalışanların üst düzeydekilere eşit tasarıma katılma fırsatı olmalı. Yöneticiler çalışanları katılıma teşvik etmeli, gerektiğinde geride durmayı bilmeli.

Tam Türklere Göre Yöntem (Mi?)

Agile Programming'in bir özelliği de bazı açılardan Türklerin çalışma tekniklerine (daha doğrusu belli bir tekniği olmadan çalışmalarına) uygun düşüyor gibi görünmesi. Yeterli mali kaynaktan yoksun, az zamanda çok proje yapan, plansız veya plana uymayan, herkesin söylediğinden kolayca döndüğü veya işini geciktirdiği, tarafların genellikle uymaktan kaçındığı yazılı ve sözlü anlaşmalara dayanan çalışma biçime uygun gibi görünüyor. Ancak atik programlama teknikleri haftada 40 saat'ten fazla çalışmayı yasaklıyor. Fazla mesaiye mecbur kalınsa da bunu çözülmesi gereken geçici bir sorun olarak görüyor. Bu da geliştiricileri fazla çalıştırarak daha fazla üretim yapılacağını sananlara pek fazla uymuyor. Bir başka sorun, Atik Programlama bilgili ve yetenekli insanlara dayanıyor. Ülkemizi çok ucuza çalışmaya hazır çok sayıda yetenikli insana sahipken bilgi açısından çok ileri düzeyde değil. Bilgiye ve danışmanlığıa kimse kaynak ayırmıyor. Yönetici konumundaki insanlarında pek fazla bilgi sahibi olmadığı, birlikte çalıştığı insanlara pek fazla teknik destek veremedikleri de bir vakıa. Extreme programming tek makinede çalışan çift programcıyı öngörüyor ki ilkemizde aynı işi yapan iki kişiye maaş verilmesini kabul edecek kadar cesur pek az yönetici var.

Sonuç

Atik Programlama, tasarım ve dokümantasyon meraklısı insanlara karşı hacker'ların savunduğu bir yöntem, daha doğrusu yöntemsizlik gibi gelse de gün geçtikçe daha popüler olan bir geliştirme tekniği haline geldi. Hiç tasarım yapmadan doğrudan kodlamaya girmeyle her şeyi önceden planlayıp ona sonuna kadar uymakta direnme arasında orta ve makul bir yolu temsil ediyor. Gerilla Programming'in 'tez', WaterFall'ın 'antitez' olduğu bir diyalektik süreçte Atik Programlama bir sentez olarak ortaya çıkıyor. Tek sorun, Atik Programlama tekniklerinden hangisinin benimseneceği. Kimse her teknik her duruma uyar demiyor. Hatta herkesin kendi atik programalama yöntemini geliştirmesi gerektiğini ileri sürenler var. 'Atik Programlama da neymiş, biz zaten yıllardır böyle geliştirme yapıyoruz' diyenlere de rastlanıyor.

Her kod geliştirme ortamının kendine özgü koşulları var. Ancak durum ne olursa olsun, bu teknik en azından değerlendirmeyi hakediyor. Atik Programlama'yı benimsemekte atik davranmalı. Yoksa şelaleye kapılıp uçuruma sürüklenmek de var!

Kaynaklar

Agile Aliance

http://agilemanifesto.org

http://www.agilealliance.com

Wiki (Wiki Wiki Web)

http://c2.com/cgi/wiki?WaterFall

İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır