YAZILIM SÜREÇLERI

Kanban, XP, Scrum Arasındaki Farklar

Agile(Çevik) yazılım geliştirme modeli üzerine kurulan XP, Kanban, Scrum çerçevelerinin nasıl çalıştığını ve temel felsefe, işleyiş, değerler, roller ve önceliklendirme açısından aralarındaki temel farkları anlatmaya çalışacağım

--

Bir önceki yazımda Neden Farklı farklı Yazılım Geliştirme Yaşam Döngü Modellerinin olduğunu sorgulamıştım. Bir sonraki yazımda da bu geliştirmeyi oluşturan ana fazlardan bahsetmiştim.

Bu fazların sırası, tekrar edilme sayısı , uzunlukları ve ne kadar üstüne düşündüklerine göre bu modeller değişir. Yazılım Geliştirme Modelleri yazımda da farklı farklı modellerin nasıl işletildiğini anlattım. Bu yazıda Agile (Çevik) Modellerin üzerinde çalışan framework (çerçeve altyapılardan) bahsedeceğim.

Temel Felsefe

  • Kanban: 1940 sonrasında Toyota mühendisi Taiichi Ohno tarafından geliştirildi. Süpermarket raflarda tükenen malların stoklanması gözlemleyerek, bunları kendi tedarik sistemine uyarladı. Ana amaç fazlalık üretmekten kaçma ve kaynaklarını olabildiğince verimli kullanmak üzerinedir. Bunun için birincil öncelik üretim bandında ilerleyen kaynakları görselleştirebilmektir. Bu sayede herkes süreç hakkında bilgi sahibi olup fazlalığı ve azlığı gerçek zamanlı yönetebilmesine olanak sağlar.
  • Scrum: Geliştiricilerin kendi planlarını yapabildikleri, güncelleyebildikleri, sistem işleyişini retrospective değerlendirebildikleri, sistem işleyişinden Scrum Master sorumlu olduğu, müşterinin isteklerini ürüne doğru ve öncelikli aktarılmasından Product Manager sorumlu olduğu, müşterinin istekleri doğrulrultusunda önceliklendirilmiş ürün odaklı çevik geliştirme yöntemidir.
  • XP: Kent Beck (Agile Manifesto, JUnit, XP, Design Patterns) oluşumu içerisinde yer alan bu kişinin Chrysler ‘da çalışırken yazılım geliştirme içerisinde güzel uygulamalarını alıp bu yöntemim içerisine yerleştirmiştir. Diğer yöntemler geliştirme süreçlerine ve endüstriyel yaklaşım iken bu yöntem direk yazılımın geliştirme kısmına odaklanmıştır.
* Oyun Planlama, 
* Test Odaklı Geliştirme,
* Tüm Takım (tüm paydaşların yorum vermesi)
* Sürekli Entegrasyon
* Tasarım Geliştirmeleri için Refactoring
* Küçük Sürümler
* Kodlama Standartları
* Ortak Kod Sahipliği
* System Meteforu
* Sürdürülebilir ilerleme/hız

Akış/İşleyiş Farkı

  • Kanban, süreklilik var, sürekli olarak geliştirme devam ediyor, her an canlıya bir takım geliştirmeler veya düzeltmeler gönderilebiliyor.
  • Yazılım geliştirmede ana işletilme bantları var. Aşağıdaki örnekte; Todo, Plan, Develop, Test, Deploy, Done. Burda tanımladığımız görevler için farklı renk postit kullanılmış Kullanıcı Hikayesi: Mor , Kusur: Yeşil, Görev: Turkuaz, Özellik: Kırmızı. Ve bu ilgili kişiler tarafından işletilip diğer banda aktarıyor. Tüm sistemin resmini görüp, sistemin nerelerinde yığılma var, hangi görev türünden çok hepsini görebilir ve sistemi buna göre yönetebilirsiniz.
Kanban Board
  • XP, bir haftalık iterasyonlar var ve 1 ay sonunda Release çıkılıyor.
1. Kullanıcı Hikayeleri →  Gereksinimler çıkarılır 
2. Architectural Spike → Sistem Metafor) hazırlanır
3. Proje Geliştirme Hızı hesaplanır
4. Yukardaki 3 Sürüm Planlamasına Girdi oluır ve Güvenilir ve Belirsiz tahminler ortaya çıkarılır ve Sürüm Planlaması yapılır
5. Iterasyon Koşulur
6. Kabul Testleri Yapılır
7. Çıkan Hatalar Giderilir.
8. Müşteri Onayına Sunulur
9. Son olarak’ta küçük sürümler halinde canlı ortama çıkarılır.
Extreme Programming
XP Döngüsü Denetleme
* Kod
* Pair Programming - Saniyeler
* Unit Test - Dakikalar
* Pair Negotation - Saatler
* Standup Meeting - 24 saat
* Acceptance Test - Günler
* Iterasyon Planı - Haftalar
* Sürüm Planı - Aylar
  • Scrum, Ürün yöneticisi tarafından Product Backlog oluşturulur, takım ve ürün yöneticisi sprintte koşulacak backlog ayırır ve sprint backlog oluşturur., 2/4 haftalık sprintler koşularak bunun sonunda yeni sürüm oluşturulur.
* Kapsamın Belirlenmesi
* Product Backlog Oluşturulması (Ürün Gereksinimleri Deposu)
* Sprint Planlama Toplantısı
* Sprint Backlog Oluşturulması
* Sprint Execution(İşletilmesi) / Günlük Toplantılar
* Sprint Gözden Geçirme
* Sprint Review
Scrum from [Wikipedia]

Değerler

  • Kanban:
* Odaklanma - Çok görevliliği azaltma
* İsrafı/boşa geçen zamanı azaltma
* Müşterinin ihtiyaçlarını
en öncelikli değerlendirme
  • Scrum:
*Sprint hedefleri doğrultusunda ekibin ortak mutabakatı
*Doğru olduğunu düşündüğün işleri yapma (cesaret)
*Sprint işlere odaklanama
*
Karşılaştığın zorluklara karşı açık sözlü olma
*Herkesin elinden geldiğinin en iyisini yaptığına güven (saygı)
  • XP:
* İletişim
* Basitlik/Sadelik
* Geri Bildirim
* Cesaret
* Saygı

Geliştirilen Özelliğin(Feature) Vazgeçilmesi

  • Kanban: Geliştirilen özellik(feature) değiştirilerek mevcut planda güncellenebilir.
  • Scrum: Geliştirilen özelliği(feature) Sprint’den çıkarma gibi bir kavram yok.
  • XP: Geliştirilen özelliği(feature), iterasyon sırasında başka bir özellik geliştirimi ile değiştirilebilir.

Roller

  • Kanban: Roller yok.
  • Scrum: Roller daha net tanımlanmış, Product Owner(Ürün Sahibi), Scrum Master ve Geliştirme Ekibi rolleri bulunuyor.
  • XP: Müşteri ve ekip var.

İşi Önceliklendirme

  • Kanban: Bantlardaki iş yoğunluğunu optimize etme üzerine bundan dolayı iş öncelikleri değiştirilebilir. Müşteri ihtiyaçları en önceliklidir.
  • Scrum : Ürün sahibinin belirlediği gereksinimleri backlog dururken bunların hangi öncelikle alınacağı takım tarafından belirlenir.
  • XP: müşterinin önceliklendirmesine sıkı sıkıya uyulur.

Referanslar

Okumaya Devam Et 😃

Bu yazının devamı veya yazı grubundaki diğer yazılara erişmek için bu linke tıklayabilirsiniz.

--

--