Agile (Çevİk) Yazılım Methodları

Scrum nedir?

Scrum agile proje yönetim metodolojilerinden biridir. Kısa döngülü çıktı üretme ve geri bildirim düşüncesine dayanır. Proje için önemli gereksinimleri öncelikli olarak geliştirmeyi hedefler. Proje zamanı boyunca ihtiyaç duyulan değişiklikleri kolayca uygulayabilir. Scrum’ın getirdiği yeniliklerden birisi, proje ilerlemesini açık ve devamlı şekilde gösteren, kalan özellikler/geçen gün sayısı grafiğidir. Bu grafik sayesinde proje sorumluları projenin durumunu anında görebilmektedir.

Örnek Bir Scrum Süreci

Scrum’da müşterinin üründen beklentileri karşılaması ilk önceliktir. Yukarıda anlatılan süreç proje tamamlanana kadar sürekli uygulanır ve her süreç sonunda kaliteli ürün teslimatıyla müşteri memnuniyetini sağlanır. Müşteri de bu sürecin içinde aktif olarak rol alarak proje gelişimini takip eder. Düzenli aralıklarla ekipler kendi yöntemlerini gözden geçirerek verimliliği arttırmak için gerekli iyileştirmeleri yaparlar.

Proje sorumlusu (Project Owner) geliştirilmesi gereken tüm özellik ve fonksiyonları öncelik sıralarına göre toplayarak ürün gerikaydı (Product Backlog) hazırlar.Takım belirlenir ve “Sprint Planning” denilen en fazla 4 hafta sürecek olan küçük döngülerle (Sprint) işe başlanır. Her döngü için ürün gerikaydından önemli gereksinimler seçilerek sprint gerikaydı (Sprint Backlog) oluşturulur ve sprint boyunca bu gereksinimler geliştirilir. 

Takım bu “Sprint” süresince her gün Scrum Master liderliğinde bir araya gelir ve en fazla 15 dakika içerisinde her takım üyesi kendi ilerlemesini kısaca belirtir. Her gün yapılan ve 15 dk’yı aşmayan bu toplantılara Daily Scrum Meeting denir. Sprint süresince Burndown Chart denilen kalan gereksinimler/geçen zaman grafiği güncellenir.

Sprint bittiği zaman bir “Sprint Review” raporu çıkarılır ve sprint süresince ortaya çıkan sorunlar ortadan kaldırılarak bir sonraki sprint rahatlatılmış olur. Sprint içerisinde biten özellik ve fonksiyonlar müşteri veya müşteri temsilcisine gösterilebilir.  Yeni bir sprint için tekrar gereksinimler seçilir ve tekrar sprint hayat döngüsü başlar.

Özetle, çevik yöntemler ağırlıklı olarak yazılım geliştirme projelerinde kullanılsa da esnek yapısı sayesinde her türlü projede uygulanabilir. Başarı oranları geleneksel yöntemlere göre daha yüksektir. Ayrıca çevik yöntemleri kullanan projeler sadece daha başarılı olmakla kalmayıp; aynı zamanda değişen müşteri ihtiyaçlarına daha hızlı yanıt vererek riskleri en aza indiriyor ve daha kaliteli ürünler sunuyorlar.

Temel olarak Scrum modelde üç rol vardır

  • Product Owner - Ürünün Sahibi
Temel olarak yazılımın paydaşları (müşteriler, müşterilerin hizmet verdiği kullanıcılar, teknik destek ekibi, tedarikçiler vs.) ile yazılım ekibi arasında köprü görevi üstlenir. Öncelikler, kapsam, bütçe ve zamanlama konularını tartışan makamdır. Üretilen çözümleri paydaşlara sunmak, yeni sürümlerin duyurusunu yapmak, takımın iletişimi, proje aşamalarının ve paydaşların gelişim sürecindeki eğitimlerinin organizasyonunu yapmak sorumluluğu altındadır.


  • Geliştirme Takımı
Yazılımı geliştirecek takımdır. Takım ruhu ile çalışması, 3-9 kişi arasında ve çok fonksiyonlu bireylerden oluşması, her dönemde (sprint) dönem sonu teslimlerini (PSI: potentially shippable sprints) yapması beklenir.



  • Scrum Master (Scrum Yöneticisi)
Sürecin yönetilmesinden sorumludur ancak klasik bir yönetici veya takım lideri olarak düşünülmemelidir. Daha çok scrum takımının çalışmasını engelleyici bütün unsurların çözülmesi ve takımın daha başarılı şekilde sonuca ulaşmasından sorumludur. Scrum sürecinin sağlıklı ilerlemesinden sorumludur ve scrum yönteminin başarısı için yöntemin şartlarının doğru uygulanması için takımı ve paydaşları zorlamakla yükümlüdür. 



Product Owner ürünün (product) başarısına odaklanırken, Scrum Master ürünün başarılı olması için gerekli sürecin (process) başarısını sağlar.

Belli Başlı Agile Methodları (Kanban XP – Scrum ) Arasındaki Temel Farklılıklar


  • Kanban’da bir iterasyon yoktur; sürekli bir akış mevcuttur. XP’de ise genelde 1 haftalık iterasyonlar ardından 1 ay sonunda release çıkıyor. Scrum’da 1–4 hafta arasında değişen sprint/iterasyonlar mevcuttur
  • Kanban’da istendiği zaman geliştirme ve planda değişiklik yapılabilir. XP’de geliştirilecek bir feature iterasyon sırasında başka bir feature ile değiştirilebilir. Scrum’da sprint’den çıkarma gibi bir kavram yok.
  • Kanban’da sürekli geliştirilen özellik release edilir. Scrum ve XP’de ise iterasyon/sprint sonunda ürünü release edilir.
  • Kanban’da önceliklendirmeyi belirleyip değiştirebilirsiniz. XP’de müşterinin önceliklendirmesine sıkı sıkıya uyulur. Scrum’da ise product owner’ın belirlediği bir önceliklendirme vardır ancak takım uymak zorunda değildir. Kendi belirlediği sırada geliştirmeyi gerçekleştirebilir.
  • Kanban’da rol tanımı yoktur. XP’de müşteri ve ekip mevcuttur ve ekipteki teknik bir kişi Agile koçluk yapabilir. Scrum’da ise roller daha net belirlenmiştir: Product Owner, Scrum Master ve Development Team.
  • XP metodu yazılım üzerine Scrum ve Kanban’da mevcut olmayan birçok pratik getiriyor. (XP Pratikleri - Refactoring, Pair Programming, Test Driven Development, Simple Design)
Agile modellerinin tam karşısında, müşteriyi sadece projenin başından dâhil ederek analiz, tasarım, geliştirme, test ve uygulama adımlarını katı bir şekilde takip eden Waterfall modeli yer almaktadır. Bu model özellikle müşteri odaklı projelerde pek kabul görmemektedir.

KAYNAKLAR:

https://www.kocsistem.com.tr/agle-yaklasm-ve-scrum-yontem/

http://ybsansiklopedi.com/wp-content/uploads/2015/03/saldirgan_yazilim_gelistirme_scrum.pdf

https://medium.com/@odayibasi/kanban-vs-scrum-vs-xp-extreme-programming-dc08d11b2fa

Yorumlar