Agile Geliştirme Nedir?

Agile yani çevik metodoloji, size nispeten daha az baş ağrısıyla daha hızlı ürün teslimatı vadeden bir proje yönetim ve yazılım geliştirme yaklaşımıdır. Her şeyi planda toplayıp aynı anda yönetmek yerine küçük ve etkili bir metot önerir bize Agile. Kendileri tekrarlayıcı ve artırımlı bir perspektiften bakan hıza ve ürünün kendisine odaklanmış faydalı bir yaklaşımdır.


 

Agile Manifesto nedir?

Agile yaklaşımı kendisini oluşturan bir çerçeveyle anlatılabilir. Bu çerçeve Agile manifestosudur, peki nedir bu manifesto? Bu manifesto 4 temel değer ve 12 prensip ile şekillendirilmiştir.

  • Süreç ve araçlardan ziyade bireyler ve etkileşim
  • Kapsamlı dokümantasyondan ziyade çalışan bir yazılım
  • Sözleşmeye ve pazarlıklara odaklanmak yerine müşteri iş birliği
  • Bir plana bağlı kalmak yerine talep edilen değişime karşılık vermek

daha kıymetlidir der Agile Manifesto bizlere.

Prensiplerden bazıları ise şunlardır:

Markette hız, her an değişime açık olmak, sürekli ve demoyla müşteri etkileşimi, motivasyonu yüksek yüzyüze etkileşim ve dahası üzerine kurulmuştur. Yani kısacası Agile az zamanda en çok verimi elde etme yaklaşımıdır, kelime anlamının çevik olmasından da bu çıkarıma kolaylıkla ulaşılabilir diye düşünüyorum.


 

Yazılım Geliştirme Süreçleri 

Konuya paldır küldür giriş yapmamak adına öncelikle yazılım geliştirme nedir, bunun süreçleri nelerdir, bunun döngüsü nasıl yorumlanır ve Agile metodolojisinin bu konudaki mevcudiyeti nedir sorularını incelemekte fayda olabilir.

Öncelikle yazılım geliştirme döngüsü nedir sorusuna odaklanalım. En kısa zamanda ve en yüksek değerdeki yazılımı üretme uğraşıyla oluşturulmuştur. Hedeflenen bu uğraş için geliştirilen tüm aşamalara yazılım geliştirme döngüsü adı verilir. İçerisinde tanımlanmış 6 alt başlıktan oluşur; 

Planlama/Analiz, Dizayn, Kodlama, Test, Uygulama/Integrasyon ve Bakım. 


 

Planlama

Kısaca Planlama ve Analiz evresinde işin gerektirdikleri ve odak noktaları üzerine pozisyon alınır. Bu fazın odağında proje yöneticileri ve işin ilgilileri rol oynamaktadır. Potansiyel User/Kullanıcı kimdir, nasıl kullanacaklar, hangi veriler girdi olarak verilmeli sonucunda nasıl çıktılar olmalıdır ve benzeri sorulara cevaplar aranır. Sonucunda Requirement Specification dokümanı elde edilir ve bu projenin ileriki fazları için bir yönerge olmaktadır.


 

Dizayn

Kısaca talep edilen gereklilikler üzerinden sistem gereklilikleri dizayn edilir. Bize yazılım ve donanım konusunda sistem mimarisi planlanmasında yardımcı olur.


 

Kodlama gerekli implementasyonun yapıldığı ana fazdır. Ardından geliştirilen kodlama Test fazında test edilir. Bu aşamada gerekli fonksiyonel testler, sistem testleri, integrasyon testleri ve onay testi yapılır.

Gerekli test aşamalarını geçen proje kodlarımız sistemimize Uygulama fazında deploy edilir. Talep edilen sistemimiz böylece geliştirilmiş olur, temelde geriye kalan yalnızca bakım dır o da problem bazlı ya da talep bazlı ilerlemektedir.


 

Agile in Yazılım Geliştirme Döngüsündeki Yeri

Agile metodolojisi, yazılım/uygulama geliştirmek için süreci, işi hızlı bir şekilde bitirip müşterinin isteklerini tam anlamıyla karşımaya yönelik belirlemektedir. Bu bağlamda standart yazılım geliştirme döngüsüyle arasındaki farklılıklara bu şekilde değinilebilir:


 

Kullanım farklılıkları normal döngü verimli ve kaliteli ürün için iyi dokümente edilmiş şekilde kendi çerçevesinden sapmadan ilerlerken Agile arttırımlı yaklaşımla kaliteyi yakalamayı hedeflemektedir.

Fazlar normal döngüde nettir, geliştirme farklı fazlar üzerinden belli bir döngüde yönetilirken Agile talep üzerine farklılık gösterebilir esnektir, böylece modellenebilir.

Normal geliştirme döngüsünde ürün her türlü platformu desteklerken Agile yalnızca arttırımlı geliştirmeyi sağlayabilecek şekilde parçalandırılmış platformlarda desteklenebilir.


 

Üstteki farklılıklardan ziyade Agile metodolojisini sahip olduğu yere getiren farklılıklardan bahsedelim;


 

Agile hıza ve ürün geliştirmeye odaklı değişim bazlı bir metodoloji olduğu için yalnızca daha düşük kapsamlı projelerde/küçük uygulamalarda kayda değer verimde uygulanabilmektedir. Tabiki iyi dokümente etmeden, sağlam görev dağılımı ve bölüm koordinasyonu ayarlamadan yalnızca ürün geliştirme odaklı yaklaşım için bunu tahmin etmek çok da zor olmamalı.Startup lar ve düşük kapsamlı projeler için biçilmiş kaftan olması gerçeğini değiştirmese de her türlü projeye entegre edilebilir. Agile kritik ve son dakika değişimleri de dahil her türlü değişim için açık dinamik bir yaklaşımdır bu bağlamda çok büyük avantaj sağlaması da muhtemeldir.Değişimin ihtiyaç olduğu tüm projelerde uygun ve verimlidir. Agile realist ve esnek yaklaşımda temellendirilir ve yönetimi kapsamının daha kısıtlı olmasından dolayı çok daha kolay yönetilebilir.

 

            


 

Agile'ın Uygulanması ve Scrum 

Dilerseniz son olarak Agile ın nasıl uygulanabileceği üzerine konuşalım. Agile bir metodoloji dedik peki bunu nasıl kullanıyoruz? 

Agile ın farklı proje yönetim türleri var uygulamak için bunlardan bazıları: Scrum, Kanban ve diğerleri.


 

Yazımızda çokça kullanılan Scrumdan bahsetmek istiyorum.

Scrum'da sprintler vardır, bunlar ihtiyaç olunan boyuta göre bölümlenmiş çalışma periyotlarıdır.Her sprint sonunda görevler üstlenilir ve sonunda ürün ortaya çıkar, içerisinde belli bir soru formatı vardır. Eksik var mı? Bana ne lazım ve bunu nasıl yaparım?


 

 

  • Her sprintte aynı döngü tekrarlanır, Planlanır, Geliştirilir, Test edilir ve Gözden geçirilir.Scrum ın planlamasına göre sprint periyotları şekillendirilebilir.Her sprintte hedef belirlenir ve takım bir bütün olarak bu hedefleri gerçekleştirmeye çalışır. 
  • Her gün Daily Scrum meeting i yapılır ve 15 dakika ile sınırlıdır bir sonraki 24 saat kısaca planlanır. 
  • Geliştirici takımda görev dağılımı yoktur, Scrum projesinde roller yalnızca Ürün SahibiScrum Uzmanı ve Takım üyesi olarak yönetilir. İçerisinde Product Backlog tutulur, bu kabaca üründe olması gereken işlerin listelendiği ve öncelik sırasıyla iliştirildiği kaynak olarak söylenebilir.
  • Ayrıca User Story taslakları tutulur, bunlar müşteriyle empati kurabilmek adına tutulan taslaklardır, içerisinde rollerin ihtiyaçları ve ürünün buna cevapları üzerine irdeleme yapılır. Temelde Kim istiyor? Ne istiyor? Ne için istiyor? soruları cevaplanılır. Örneğin X kullanıcısı olarak Y istiyorum bu sayede Z yapabileceğim formatlı cümleler kurulur. 
  • Sonrasında Sprint Review ile bir sprint süreci sona erdirilir.