Extreme Programming

Extreme programming en popüler çevik süreçlerden biridir. Çevik süreç , bir yazılım projesinde her daim değişikliklere ve yeniliklere hem proje ekibinin hem de yazılımın hızlı bir şekilde , dağılmadan cevap verebilmesidir. Extreme programming de bu amaçla, Kent Beck ve arkadaşlarının çalıştıkları bir projede oluşturdukları bir çevik süreçtir.

Extreme programming farkı;

Genel yazılım süreçlerinde projeye başlanmadan detaylı dökümantasyonlar hazırlanır ve bu dökümantaslara uyarak proje geliştirilir. Bu durum projenin ilerleyen seviyelerinde ,projede değişiklik yapılmasını zorlaştırır. Bazen projenin başarısız olmasına bile neden olabilir. Çünkü müşteri her zaman istediğini net olarak ifade edemiyebilir ,bu tür iletişim sıkıntıları değişiklik gerektirir ve bu değişlikliği uygulamanın yoluda çevik süreçlerden geçer.

Çevik süreçlerde ise olay dökümantasyondan bağımsızdır. Yani dökümantasyon gereklidir fakat proje başarısında önemli bir etken değildir.Başarıyı etkileyen faktör temelde dört tanedir ;basitlik,geridönüş,iletişim ve cesarettir.

Extreme programming de genel işleyiş

Çevik süreçlerde proje başlamadan önce ,müşteri ile birlikte projede istenilenler konuşulur, ve yapılacaklar kullanıcı hikayeleri şeklinde ufak kağıtlara yazılır. Her kullanıcı hikayesine öncelik sırası eklenir ve bu sıra takip edilerek kullanıcı hikayeleri geliştirilir. Geliştirme yapılırken,sadece istenileni en basit şekilde yapmak amaçlanır.Kullanıcı hikayelerinin ne durumda olduğunu ifade etmesi açısından renkli kağıtlar kullanılır.(örneğin; yapılmışlar yeşil,yapılmakta olanlar sarı vb.). Bu kullanıcı hikayeleri proje süre tahmini yapılmasına da yardımcı olur.

user-story2user-story

1-2 hafta süresinde iterasyon oluşturulur . Geliştirilecek kullanıcı hikayeleri de bu süre zarfında iterasyon oluşturacak biçimde sıralanır. 1-2 ay içinde iterasyonlardan sürümler oluşturulur .Bu sürümler çalıştırılabilir programlardır. Bu programlar müşteri tarafından kullanılır.Müşteriden gelen geri dönüşler ile projeye devam edilir.Projenin bütün gelişim aşamasında müşteriyle iç içe olunmasından ilerleyen aşamalarda pek sürprizler ile karşılaşılmaz.

İletişimin sadece müşteri ile iyi olması yeterli değildir tabi ki, projeyi geliştiren ekibinde birbirleriyle iletişiminin çok iyi olması gerekir. Extreme programmingde kademe farkı yoktur . Ekipteki tecrübeli üyeler ,tecrübesiz arkadaşlarını kendi seviyelerine yükselmeleri için,gerekenlerin nasıl öğrenileceği hakkında yol gösterir. Öğretmez,nasıl öğrenileceğini gösterir. Bu seviye ve kademe farkını yok eder. Programcılar ikişer kişi olarak çalışırlar. Biri kod yazarken diğeri dikkatli bir şekilde izler(test amaçlı).Programcılara sorumluluk verilmez ,kendisini o sorumluluğu alması beklenir,bu şekilde motivasyon ve başarı artar.

Takım ruhu önemli bir etkendir ve temelinde açık ve samimi iletişim yatar. Takım ruhuna kulak verilmesi gerekir , örneğin takım bir şeylerin ters gittiğini düşünüyorsa ,orada gerçekten ters giden birşeyler vardır.

Son olarak;

Extreme programming i durumu göre, projede başarılı olacağına inandığımız şekilde değiştirebiliriz.