Agile Nedir?
Yazılım geliştirme projeleri, yazılım hayat döngüsü boyunca müşteri taleplerinin anlaşılamaması nedeniyle, hatalı öncelikler, değişimi yönetememe, kaynakların etkin kullanılamaması sorunlar nedeniyle, mevcut ortamlarda başarısızlıklarla karşı karşıya kalmışlardır.
Standish Group’ un 2009 yılında yayınladığı rapora göre yazılım projeleri dünya genelinde % 68 başarısızlıkla sonuçlandığını ortaya koymaktadır.
Başarısızlığın nedeni, yazılım projelerinde
- Ortam ve gereksinimler tam olarak tanımlanmamıştır.
- İhtiyaç ve isterler zaman içinde değişir ve pazar koşulları sürekli gelişir.
- En iyi yöntemin ne olduğuna kesin karar verilememiştir.
- Mevcut yapılar ve karmaşıktır.
Başarısızlıkları ortadan kaldırmanın yolu olarak,
- İsterler hakkında mümkün olduğunca erken ve en sık şekilde geri bildirim alınması çalışan bileşenlerin üretilmesi ve gösterilmesi,
- Katılımcıların geri bildirim vermelerini teşvik etmeyi kolaylaştırmak
- İş gereği, bilgiye ihtiyaç duyan katılımcıların isteklerine öncelikli ulaşmalarını sağlayacak en etkili yöntem iletişimi sağlamak gereklidir,
- Yazılım Geliştiricilerin motivasyonu en üst seviyede tutmak, üretkenliği arttıran bir yöntemdir.
2001 yılında dünyanın en iyi yazılım geliştiricileri olarak bilinen 17 bağımsız yazılım geliştirici bir araya gelerek Agile Manifesto (Çevik Yazılım Geliştirme Manifestosu) yayınladılar.
Agile Manifestosu 17 lider yazılımcının “nasıl daha iyi bir yazılım geliştirilir” arayışının ürünüdür. Agile Manifesto;
- Bireyler ve bireyler arasındaki etkileşimin önemi
- Detaylı ve gereksiz ayrıntılarla dolu bir belgelendirme yerine doğru çalışan bir yazılımın önemi
- Sözleşmede zorlanan kesin kurallar yerine müşteri ile sürekli iş birliğinin önemi
- Katı, esnetilemeyecek bir planlama yerine değişikliklere açıklığın önemi vurgulanmıştır
Agile İlkelerileri ile manifesto da belirtilen kavramlara biraz daha açıklık getirelim.
- En önemli öncelik, yazılımın erken ve devamlı teslimatı ile müşterileri memnun etmektir.
- Çalışan yazılım, ilerlemenin birincil ölçüsüdür.
- Çalışan yazılım, kısa zaman aralıkları belirlenerek birkaç haftada ya da birkaç ayda bir düzenli olarak müşteriye sunulmalıdır.
- Projelerin temelinde motive olmuş bireyler yer almalıdır. Onlara ihtiyaçları olan ortam ve destek sağlanmalı, işi başaracakları konusunda güven duyulmalıdır.
- Bir yazılım takımında bilgi alışverişinin en verimli ve etkin yöntemi yüz yüze iletişimdir.
- İş süreçlerinin sahipleri ve yazılımcılar proje hayat döngüsü boyunca her gün birlikte çalışmalıdırlar.
- Çevik süreçler sürdürülebilir geliştirmeyi teşvik eder. Sponsorlar, yazılımcılar ve kullanıcılar sabit tempoyu sürekli devam ettirmelidir.
- Değişen gereksinimler, yazılım sürecinin son aşamalarında bile kabul edilmelidir. Çevik süreçler, değişimi müşterinin rekabet avantajı için kullanır.
- Sadelik, yapılmasına gerek olmayan işlerin mümkün olduğunca azaltılması, olmazsa olmazlardandır.
- Teknik mükemmeliyet ve iyi tasarım konusunda sürekli özen, çevikliği artırır.
- En iyi mimariler, gereksinimler ve tasarımlar kendi kendini örgütleyen takımlardan ortaya çıkar.
- Takım, düzenli aralıklarla nasıl daha etkili ve verimli olabileceğinin üzerinde düşünür ve davranışlarını buna göre ayarlar ve düzenler.
Agile (Çevik) Geliştirme Yaklaşımları uygulandığında artan;
- Üretkenlik
- Ürün Kalitesi
- Azalan Maliyetler
- Müşteri memnuniyeti
- Çalışan motivasyonu
Agile (Çevik) yöntemler, dünya üzerinde kabul edilen yazılım geliştirme yöntemleri arasında yaygın olarak kullanılmaktadır.