Agile manifestosu; Martin Fowler,Kent Back,Robert Martin gibi dünyaca tanınmış 17 ünlü yazılımcı tarafından imzalanmış, klasik yazılım geliştirme düşüncesine karşı gelip aşağıdaki prensibleri temel almıştır.
“We are uncovering better ways of developing software by doing it and helping others do it.”
“Biz yazılım geliştimenin daha iyi yollarını, onu uygulayarak ve başkasının da uygulamasına yardım ederek buluyoruz.
- İnsanlara ve insanlar arası ilişkileri, süreçler ve araçlardan
- Çalışan yazılıma, kapsamlı dokümantasyondan
- Müşteri ile ortak çalışmaya,iş kontratlarından
- Değişim isteklerine,planlardan
daha fazla önem veririz.
Bu ana başlıklar altında çevik yöntemleri 12 alt başlık altında ayrıntılandırdığımızda:
- En önemli önceliğimiz müşteri memnuniyetidir.(Müşteri velinimetimizdir)Müşteriye projenin çok erken devrelerinde çalışan ve tatmin edici yazılım teslim edilebilmelidir.
- Değişiklik istekleri projenin en son aşamalarında bile hoş karşılanmalıdır.Biz yazılımcıların çok sık sığındığı “Bu isteğinizi başta belirtmemiştiniz” mazareti geçerli akçe olmaktan çıkmış durumda.Zira müşteri ne istemesi gerektiğini projenin başlangıcında kendisi bile bilmez.İstekler zamanla olgunlaşır ve yazılıma eklenen her yeni özellik başka isteklerin gelmesine yol açabilir.Klasik Şelale(Waterfall) yöntemiyle geliştirilen projelerde yazılım süreci, analiz-tasarım-kodlama-test aşamalarında geri besleme olmadan ve tek yönlü olarak işlediğinden kodlama aşaması tamamlanmış yazılıma kod eklemeleri yapmak çok zordur.Hele hele bu yeni kodlamayla beraber yazılımın tasarımında değişikliğe gitmek imkansız gibidir.Buna karşın çevik yöntemlerde analiz-tasarım-kodlama-test aşamaları arasında bir sıra yoktur ve bu adımlar yazılımın her aşamasında beraber uygulanır.Şelale yöntemi daha ziyade fiziksel mühendislik dallarında yapılan projeler için geçerlidir.Örneğin bir inşaat işlemi sırasında önce binanın planı hazırlanır sonra yapım aşamasına geçilir.Yapım aşamasında plan değişikliğine gidilmez zira bu çok maliyetli bir karardır.(Bir kaç kolonu yıkıp asansör boşluğunun yerini değiştirmek gibi..) Yazılım mühendisliği diğer mühendislik dalları gibi maddi ve maliyetli unsurlarla gerçekleştirilmediği için yazılım projesinin her aşamasında -esnek tasarım geliştirme mantığı ile- değişim,dönüşüm yapılabilir.Çevik yöntemler ve şelale yöntemi arasındaki farkı yine bir inşaat örneğiyle özetleyip bu başlığı noktalayalım.Şelale yönteminde tasarım aşamasında inşaat iskelesi ahşaptır ve her parça birbirine çivilenerek bağlanmıştır.Bu iskelenin bir parçasını söküp farklı bir noktaya monte etmek zordur.Buna karşın çevik yöntemlerde iskele vidalanıp sökülebilen çelik iskeleler gibidir.Modüler yapı sayesinde iskelenin dizaynında değişiklik yapabilirsiniz.Üstelik o esnada iskele üzerinde çalışıyor olmanız da sorun teşkil etmez.(Çalışan kod üzerinde refactoring)
- Müşteriye sık zaman aralıklarıyla çalışan yazılım teslim edilmelidir.Test driven development mantığı ile oluşturulan yazılımlarda oluşturulan otomatik testler yardımıyla günlük sürümler oluşturabiliyoruz.Bu şekilde müşteriye her daim verilebilecek yeni bir sürüm elimizde mevcut olmuş olacak.
- İşin yapıldığı müşteri firmadan iş analistleriyle, yazılımcılarınız birlikte çalışmalıdır.
- Motive olmuş elemanlarla yazılım geliştirin.Burada motive olmaktan kasıt yazılımcının kendini motive etmesi(sürekli gelişime açık olmak) ve yöneticilerin yazılımcıları motive etmesidir(sosyal imkanlar,çalışma ortamı…).
- Yazılım geliştirme ekibinde bilginin nakledilmesinin en efektif yolu ekip elemanlarının yüzyüze konuşmasıdır.(Ayaküstü toplantılar…)
- Çalışan ve ihtiyaçlara cevap veren yazılım, projenin başarısının ölçümünde temel ölçü birimidir.
- Çevik yazılım, sürdürülebilir gelişme gerektirir.Geliştiriciler, yüksek tempoda ve sürekli gelişim mantığıyla çalışmalıdır.
- Dizaynın mükelleşmesi için gösterilecek dikkat çevikliği artırır.Yüksek kalite yüksek hızı getirir.Yüksek kalite bakım maliyetini azaltır.
- “Basitlik yada henüz ihtiyaç olmayan kodu şimdiden yazmamak” çevik yöntemlerin en temel değerlerinden biridir. “Test first design” mantığı ile yazılım geliştirme sayesinde sadece testi geçebilmek için yazılan kod sayesinde ihitiyacımız kadar kod yazmış oluyoruz.Böylece projenin başında hazırlanan devasa,hantal sınıflardan ve gereksiz özelliklerden uzak durmuş oluyoruz.Plan proje çizip işe başlamak Türk milletine biraz zor geldiğinden bu yöntem bize daha uygun
…Düşünsenize inşaat esnasında her malzemeyi baştan alıp yığın yapmaktansa ihityacımız olan her malzeme için evin küçük çocuğunu nalbura göndermek çok daha bize göre…
- En iyi mimariler,dizaynlar kendi kendine organize olabilen ve en önemlisi “sorumluluk alan” elemanlardan oluşan ekipler tarafından üretilir.Yazılım ekibinin her elemanı aktif olan her proje hakkında bilgi sahibidir ve her projede görev alabilir.Herkes birbirinin yedeğidir.
- Yazılım ekibi belirli aralıklarla bir araya gelip “Nasıl daha iyi olabiliriz?” sorusuna cevap ararlar.Ortak kararlar alarak kendilerini yeni kararlarla oluşan ortama hızlıca adapte ederler.
Sonuç olarak,çevik yöntemlerin de işaret ettiği gibi yazılım dünyasının, süreç odaklı olmaktan vazgeçip insan odaklı olmaya doğru yönelmekte olduğunu söyleyebiliriz.