Agile(Çevik) metodu yazılım geliştirme ve proje yönetiminde kullanılan esneklik, takım çalışması ve yinelemeli geliştirmeye odaklı prensipler bütünüdür. Çoğunlukla yazılım geliştirmede kullanılsa da geliştirme sürecindeki değişikliklere uyum sağlanması gereken her türlü projeye uygulanabilir.
Agile metodu değişen ihtiyaçlara ve proje gereksinimlerine hızlı bir şekilde uyum sağlayabilmek için geleneksel doğrusal yazılım geliştirme metodolojilerine(Waterfall gibi) karşı alternatif olarak geliştirilmiştir.
Scrum, Kanban ve Extreme Programming (XP) gibi bir çok farklı Agile framework‘ü bulunuyor, her birinin kendi özellikleri ve uygulamaları olsa da aynı Agile temel değerlerini ve prensiplerini paylaşıyorlar.
2001 yılında yayınlanan Agile(Çevik) Yazılım Geliştirme Manifestosu ile popülerleşmiş ve sonrasında Agile Manifestonun ilkeleri bir çok yazılımcı tarafından kabul görmüştür. Agile Manifesto 4 temel madde ve 12 prensipten oluşur.
4 Temel Madde
Süreçler ve araçlardan ziyade bireyler ve etkileşimlere
Kapsamlı dokümantasyondan ziyade çalışan yazılıma
Sözleşme pazarlıklarından ziyade müşteri ile işbirliğine
Bir plana bağlı kalmaktan ziyade değişime karşılık vermeye
değer vermeye kanaat getirdik.Özetle, sol taraftaki maddelerin değerini kabul etmekle birlikte,
sağ taraftaki maddeleri daha değerli bulmaktayız.
Kaynak: https://agilemanifesto.org/iso/tr/manifesto.html
Çevik Bildirinin Temelindeki İlkeler
Bizler şu ilkeleri izliyoruz:
En önemli önceliğimiz
değerli yazılımın erken ve devamlı teslimini sağlayarak
müşterileri memnun etmektir.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.Çalışan yazılım, tercihen kısa zaman aralıkları belirlenerek
birkaç haftada ya da birkaç ayda bir düzenli olarak müşteriye sunulmalıdır.İş süreçlerinin sahipleri ve yazılımcılar
proje boyunca her gün birlikte çalışmalıdırlar.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.Çalışan yazılım ilerlemenin birincil ölçüsüdür.
Çevik süreçler sürdürülebilir geliştirmeyi teşvik etmektedir.
Sponsorlar, yazılımcılar ve kullanıcılar sabit tempoyu sürekli devam ettirebilmelidir.Teknik mükemmeliyet ve iyi tasarım konusundaki
sürekli özen çevikliği artırır.Sadelik, yapılmasına gerek olmayan işlerin mümkün olduğunca arttırılması sanatı, olmazsa olmazlardandı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.
Kaynak: https://agilemanifesto.org/iso/tr/principles.html
Neden Agile?
- Esnek bir yapıya sahip, bu sebeple yazılım geliştirme ekipleri geliştirme sürecinde daha rahat değişiklikler yapabilirler.
- Ortak çalışma ve geri bildirimlere odaklanıldığından geliştirici ekiple müşteri arasındaki iletişim daha güçlü olur.
- Karmaşık projelerde oluşabilecek riskleri azaltır. Proje yöneticisi projeyi küçük sprintlere bölerek değişen talepleri karşılamayı kolaylaştırır.
- Müşteri geliştirme sürecine dahil edildiğinden ve müşteriden geri bildirimler alındığından müşteri memnuniyeti artar.
Agile’ın Dezavantajları
- Agile’ın yapısı gereği maliyet, kaynak ve gerekli zaman gibi parametreleri projenin başlangıcından tahmin etmek zordur.
- Dokümantasyon başlangıçta değil de proje geliştirilirken yapıldığından daha az detaylı olabilir.
- İletişim ve beraber çalışmak güzel ancak sürekli iletişim daha fazla enerji ve zaman harcar.
Sonuç
Günümüzde hızla değişen iş dünyası ve sürekli artan, değişen ihtiyaç ve gereksinimlerle Agile yöntemi yazılım geliştirmede önemli bir yer tutuyor. Agile yöntemi, her ne kadar iş süreçlerini daha esnek ve verimli hale getirme potansiyeli sunsa da, uygulamada karşılaşılan bazı zorluklar da göz ardı edilmemelidir.
Kaynak: https://agilemanifesto.org
selamlar Ufuk hocam,
Agile içerisinde to do, in progress, pull request, done gibi çeşitli işlemler var. bunlarla ilgili de yazılarınız olacak mı?