Agile Metodolojileri, Türkçe karşılığı ile “çevik”; projeleri genellikle sprintler olarak bilinen çeşitli dinamiş aşamalara ayıran bir proje yönetim yaklaşımıdır. Peki, nedir bu sprint? Bir projenin belirli bir aşaması için ayrılan süreye “sprint” denir. Sprintleri süresi dolduğunda proje tamamlanır.

Agile metodolohileri yinelemelidir. Burada, yinelemeden kastımız bir döngü içerisinde olmasıdır. Her sprintten sonra ekipler, bir sonraki sprint için stratejilerini ayarlayabilmeleri için geliştirilecek herhangi bir şey olup olmadığını görmek için derinlemesine düşünerek geriye de bakarlar.

 

Agile Metodolojileri

 

 

Agile Metodolojilerinin Genel Prensipleri

  • Müşteri memnun etmek ve sürekli yazılım geliştirmek,
  • Müşterinin rekabet avantajı için değişen gereksinimleri benimsemek,Teslimatı en mümkün kısa sürede gerçekleştirmek,
  • Geliştiricilerin ve iş adamlarının tüm proje boyunca birlikte çalışmasını sağlamak,
  • Proje için çalışan tüm ekibe uygun ortam hazırlamak ve ihtiyaç duydukları destekleri sağlamak,
  • Sürdürülebilir kalkınmayı teşvik etmek. Sponsorlar, geliştiriciler ve kullanıcılar belirsiz ve sürekli bir tempoyu koruyabilmelidir.
  • Teknik mükemmellik ve iyi tasarıma sürekli dikkat etmeyi sağlamak ve böylece çevikliği arttırmak,
  • Kendi kendine organize ekipler sayesinde en iyi tasarımları oluşturmak. Düzenli aralıklarla, takımın nasıl daha etkili olacağına dair düşünceler ortaya çıkarmak ve davranışları bunlara göre düzenlemek.

 

Agile metodolojilerinin 4 tane ana kavramı mevcuttur. Bunlar; “ekip çalışması”, “çalışan yazılım”, “Müşteri ile işbirliği” ve “Değişimlere yanıt vermek”.

 

 

Agile Metadolojilerinin Avantajları

En önemli avantajlarından biri yazılım geliştirmede bir projenin akışını bozmadan stratejileri daha hızlı değiştirebilirsiniz. Waterfall (Şelale) yazılım geliştirme yöntemini hatırlarsak, orada bir projede bir stratejiyi değiştirirsek projenin yol haritasında geri kalan kısım bozulabilir. 

Agile, ekiple iletişim kurmanın en etkili yolunun yüz yüze iletişim olduğunu savunur. Dolayısıyla Agile, işbirliğine dayalı ekip çalışmasını teşvik eder.

Yazılım geliştirmenin benzersiz yönlerinden biri, ekiplerin müşteri ihtiyaçlarına diğer sektörlerden çok daha yakından odaklanabilmesidir. Bulut tabanlı yazılımların yükselişiyle ekipler, gerçek müşterilerinden hızlı bir şekilde geri bildirim alabilir.

Müşteri memnuniyeti, yazılım geliştirme için önemli bir itici güç olduğundan, neden Çevik sürece dahil edildiğini görmek kolaydır. Agile metodolojileri, müşterilerle işbirliği yaparak müşteri ihtiyaçlarına odaklanan özelliklere öncelik verebilir. Bu ihtiyaçlar değiştiğinde ekipler çevik bir yaklaşım benimseyebilir ve farklı bir projeye geçebilir.

 

Agile Metodolojilerinin bir kaç varyasyonları mevcuttur. Bu varyasyonların yaygın olanları “Kanban”, “Scrum” ve Extreme Programming (XP)”dir.

 

Kanban

 

Agile Metodolojileri-Kanban

 

Kanban, Agile’e görsel bir yaklaşım olarak nitelendirilebilir. Ekipler, belirli görevleri geliştirme sürecinde nerede olduğunu göstermek için çevrimiçi Kanban araçlarını kullanırlar. Görevler bir panodaki kartlarla temsil edilir ve aşamalar sütunlarda gösterilir. Ekip üyeleri görevler üzerinde çalışırken kartları biriktirme listesi sütunundan görevin içinde bulunduğu aşamayı temsil eden sütuna taşırlar. Bu yöntem sayesinde ekiplerin sorunları belirlemesi ve yapılan iş miktarlarını görselleştirmesini sağlar.

 

Scrum

 

Agile Metodolojileri - Scrum

 

Scrum, çoğunlukla küçük ekipler için yaygın bir Agile metolojilerindendir. Scrum, projeleri parçalara bölerek her birine “sprint” adını verir. Her bir sprinti teker teker geliştirir. Scrum için ekip içinde iletişim çok önemlidir ve her gün “Scrum Meetings” adında toplantılar yapılır.

Scrum’da “Roller”, “Toplantılar” ve “Bileşenler/Araçlar” olmak üzere üç temel kavram mevcuttur.

Roller: Ürün sahibi, Scrum yöneticisi ve Scrum takımından oluşur. Ürün sahibi projenin adeta bir beynidir. Scrum yönetisici ise takımı Scrum kurallarına göre kontrol eder. Scrum takımı ise 5-9 kişiden oluşan birbirleriyle sürekli iletişim halinde olan bir yazılım geliştirme ekibidir.

Toplantılar: Scrum için toplantılar olmaz ise olmazdır bir şeydir. Her gün, Scrum toplantıları gerçekleştirilir. Bu günlük toplantılarda her gün yazılım geliştiricilerinin önceki gün neler yaptıkları, karşılaştıkları sorunlar ve bugün neler yapacakları hakkında bir konuşma olur. Her sprint için de bir gözden geçirme toplantısı gerçekleştirilir.

Bileşenler/Araçlar: Ürün gereksinim dokümanı oluşturulur. Bu dokümanda proje boyunca yapılması gerekenler yazılır. Ürün gereksinim dokümanına takiben sprint dokümanı oluşturulur ve amacı her sprintin ona uygun ayarlanmasıdır. Ayrıca, bu dokümanı sadece takımdakiler değiştirebilir. Sprint kalan zaman grafiği ise yapılan işin ne seviyede olduğu ve aslında planlanan zamana göre nerede olduğunu belirlemek için hazırlanır.

 
Scrum Ekibi

Scrum Master: Scrum kuralları, teorileri ve uygulamaları hakında bilgi sahibidir. Bu kuralları Scrum takımında uygulamaktan sorumludur.

Ürün Sahibi: Fikirleri toplar, değerlendirir ve potansiyel değeri olanları geliştirme takımına alır.

Geliştirme Takımı: Belirlenen özelliklerin hedeflenen süre ve kalitede gerçekleştirmesini sağlayacak olan ekiptir.

 

Sprint, Backlog ve Sprint Retrospektif Kavramları

Sprint: Scrum ekibinin tekrarlı bir şekilde gerçekleştireceği döngülerdir. Bu döngüler içinde, planlanan işler Scrum ekibi tarafından tamamlanır ve dönem sonunda değerlendirilmesi yapılır. Bunun ardından ise bir sonraki döngüye başlanır. Sprintler genellikle 2-4 hafta sürer ancak duruma göre 1 hafta da olabilir.

Backlog: Süreç için gerekli olan gereksinimler listesi “backlog” olarak adlandırılır. İş gereksinimlerine göre yapılması gerekenler listesi backlog içerisinde toplanır ve önceliklere göre sprintlere dağıtılır. Değişen ihtiyaçlara göre backlog üzerinde çıkarma ve ekleme yapılabilir.

Sprint Retrospektif: Retrospektif, Sprint içerisinde neyin iyi gidip gitmediğini ve takımın bir sonraki sprint için nasıl gelişebileceğini belirlemek için yapılan son takım toplantısıdır.

 

 

Ekstrem Programming (XP)

Agile Metodolohileri - XP

 

Tipik olarak yazılım geliştirmede kullanılan Extreme Programming, ekibin birlikte daha verimli çalışmasını sağlayacak değerlerin ana hatlarını çizen bir Agile yaklaşımıdır. “Basitlik”, “Cesaret” “Geri Bildirim” ve “İletişim” olmak üzere 4 temel kavramdan oluşur.

Basitlik: Yazılan kodun ve yapılan işin sade, anlaşılır ve karmaşık olmadan yapılmasını gerektirir. Uzun uzun dokümantasyonlardan uzak durulur.

Cesaret: Yapılan işte cesur olunmalı, projelerin üstüne korkmadan ilerlenmelidir. Bir kodun gerekirse tamamen silinip yeniden yazılması sağlanmalıdır.

Geri Bildirim: Geri bildirimler ile oluşabilecek hatalar azaltılır ya da ortadan kaldırılır. Müşteri ile yazılım ekibi birbirleriyle iletişim halindedir.

İletişim: Projelerde önemli sorunlardan birisidir. Extreme Programming ise bunu aşmaya çalışır. Ekip içi iletişime önem verir ve bunun arttırılması için çabalar.

 

Hangi Durumlarda Agile Metotları Kullanılmalıdır?

 

Agile vs Wateral

 

Waterfall Yazılım Geliştirme Yöntemini açıklarken “yalnızca gereksinimler iyi anlaşıldığında ve geliştirme sırasında kökten değişme olasılığı düşük olduğunda Waterfall Metodolojisinin kullanılabilir.” demiştik. Çünkü Waterfall yönteminde bir stratejide değişiklik olursa diğer stratejilerinde süreçleri etkilenebilir. Ancak, Agile’de bu durum söz konusu değildir. Eğer, bir projede değişiklik söz konusu ile kesinlikle Agile yöntemi tercih edilmelidir.