Agile (Çevik Yöntemler)
Agile (çevik) yöntem genellikle yazılım alanında kullanılan projelerde ekiplerin düzenli ve verimli bir şekilde müşteriye daha kısa sürede ve sorunsuz bir yol ile sunulmasıdır. Proje esnasındasın da alınan kararlar sürekli olarak değerlenir ve denetlenir. Bu sayede çevik bir ekiple müşteri memnuniyeti sağlanmış olur.
Agile Metodunun Tarihi
Agile metodu 1970'li tarihlerde ortaya atılmıştır. 1970 yılında, Dr. William Royce, büyük yazılım sistemlerinin yönetimi ve geliştirilmesini tartışan bir makale yayınlayarak sıralı gelişim hakkındaki özel fikirlerini ana hatlarıyla belirtmiştir. Agile den önce kullanılan Şelale yöntemi en popüler olanıydı ancak yazılım geliştiriciler bu yöntemden pek de memnun değildi. Çünkü Şelale metodu esnek olmayan katı bir yöntemdi. Agile, Menifesto’yu oluşturdu. . Çalıştayın sonunda 4 maddelik bir değerler topluluğu ortaya çıkarttılar.
- 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 getirdiler.
Agile Metodunun Genel Prensipleri
- Müşteriyi olabildiğince memnun etmek
- Düzenli aralıklarla proje değerlendirilmesi yapılıp, takımın nasıl daha iyi ve etkili olabileceği düşünülüp tartışılmalıdır.
- Proje sırasında yazılımcılar ve müşteri bir arada çalışıp değerlendirmeler yapılmalıdır. Bu sayede istenilen ürün tam anlamıyla ortaya çıkmış olacaktır.
- Müşterinin olağan değişikleri göz önüne alınarak değişiklikler yapılmalıdır.
- Teslimat olabildiğince hızlı ve mükemmel olmalıdır.
- Projede gereksiz bilgilere yer verilmemelidir. Sadelik esastır.
- Ekipler kendi içlerinde de uyum içinde olmalıdırlar.
Peki Neden Agile (Çevik) Yöntem
Proje tekrar tekrar ele alınır bu sayede ekibin yüksek kalitede geliştirme, test etme olanağı sağlar. Her yinelemede testler yaparak olabildiğince hataların göz önüne çıkarak daha hızlı bir şekilde çözülmesi sağlar.
Agile sürekli iletişimde kalma, yüz yüze çalışmayı savunmaktadır. Bu sayede takımlar uyum içinde çalışarak projede ki sorumluluklarının farkında olurlar.
Proje boyunca geri dönüşler çok önemlidir. Bu sayede vakitten kazanma olacaktır. Hem de öğrenilen dersler, gelecekteki iterasyonları iyileştirmek için de kullanılır.
Çevik de kısa hedefler konularak ilerlenir. Bu sayede projede ki herhangi bir değişiklik yapmak kolay ve kabul edilebilir olur.
Agile de müşteri olabildiğince ön plandadır. Sürekli olarak ekiple temas halinde olarak projedeki son durumları görerek değişiklik yapmasına olanak sağlanır.
Çevik Gelişim Döngüsü
Agile (çevik) yazılım nedir ne değildir anlamak için yazılım gelişim döngü safhalarını iyi bilmek gerekir. Yazılım gelişim döngüsü de bir nevi sanattır. Kısa bir araştırma yaptığımızda yazılım gelişim döngüsünden sanat olarak bahsedilir. Bakıldığında sanatta aynı bu döngüye benzer. Bizlerde bir işe girişeceğimiz zaman öncesinde planlama, tasarlama, analizler yapmaz mıyız?. Mesela bir marangoz bir işe koyulmadan önce büyük bir kütükten işe yarar bir malzeme ortaya koyması gerekir. Bunun öncesinde gereken malzeme tedariğini yapar. Planlarını çizimlerini yapar ölçülerini alır ve sonra işe koyulur. Daha sonra işine yarar bir ürün elde eder. İşte yazılımda geliştirme bu örneğe benzetebiliriz. Yazılım yapmadan önce planlama, gereksinimler, tasarım, geliştirme ve kodlama, entegrasyon ve test, inceleme basamaklarını gerçekleştirmemiz gerekir. Gelin bu basamaklardan kısaca bahsedelim.
Aşama 1 : Planlama
Bir fikir uygun ve yapılabilir olduğu düşünüldüğü zaman, ekip bir araya gelerek projeyi aşama aşama bölerek önceliklendirme yaparlar. Amaç düşünceyi daha küçük parçalara bölerek hedeflere daha fazla odaklanıp hedefe kısa sürelerde varmak istenilir.
Aşama 2 : Gereksinimler
Gereksinimler önemli bir basamaktır. Projeye başlanılmadan önce gereksinimleri belgelemek gerekir. Bu belgelendirme sade olmamalıdır olabildiğince ayrıntılı ve ölçülebilir olması gerekir. Ekip, projede neyi kimin kullanacağını belirlemesi gerekir. Eğer bu basamak önemsenmediğini düşünürsek projede önemli olmayan, işe yaramayan özelliklerin projede sürekli tekrarlandığını düşünsenize. Geliştirici bu yüzden önemli ölçüde vakit kaybedecektir. Daha sonrasında aşamalardan eksik kalacak ve daha sonra da bahsedeceğim test aşamasının süresini uzatmış olacaktır.
Aşama 3 : Tasarım
İlk yineleme sırasında, ürün sahibi development ekibini birleştirir ve projenin gereksinimlerini onlara tanıtır. Ekip, bu sayede projedeki gereksinimleri de göz önüne alarak proje hakkında gerekli olan araçları belirler. Örneğin programla dilinin belirlenmesi, kullanılacak olan kaynakçaları vb. durumları belirler. Ürünün ara yüzü çok önemlidir. Bu ara yüz sade ve dikkat çekici olmalıdır. Bu işlemi yaparak gündemdeki projeleri de incelemek gerekir. Özellikle eksik ve hatalı özellikleri belirleyerek projemizde daha kullanışlı hale getirerek kullanmak gerekir.
Aşama 4 : Geliştirme Ve Kodlama
Geliştirme aşaması, teslim edilen hiçbir özellik olmadığından sprint 0 ile başlar. Bu iterasyon, sözleşmelerin sonuçlandırılması, ortamların hazırlanması ve finanse edilmesi gibi görevlerle birlikte harekete geçmek için temel oluşturuyor. Kodlama aslında bu basamakların sadece %20'lik kısmını oluşturur.
Aşama 5 : Entegrasyon Ve Test
Ürün geliştirildikten sonra bir çok teste tabi tutulur. Müşterinin istedikleri tam anlamıyla olmuş mu, müşterinin ihtiyaçlarını tam anlamıyla karşılıyor mu?. Bu istekler göz önünde bulundurarak ihtiyaçlar giderilmeye çalışılır. Kalite kontrol ekibi, kodun temiz ve sade olup olmadığını kontrol eder ve bir çok testten geçirir.
Aşama 6 : İnceleme
Testler yapıldıktan sonra proje müşteriye sunulur ancak bu projenin bittiği anlamına gelmez. Müşteri kullanılmaya başladığın herhangi bir sorunla karşılaşabilir. Ürün ekibi bir kez daha toplanır ve ve gereksinimleri tamamlama yolunda kaydedilen ilerlemeyi gözden geçirir. Ekip, önceki aşamalarda ortaya çıkan sorunları çözmeye yönelik fikirlerini sunar ve Ürün Sahibi tekliflerini dikkate alır.
Agile de Kullanılan Metodolojiler
- Scrum
- Kanban
- XP (Extreme Programlama)
- DSDM (Dinamik Yazılım Geliştirme Yöntemi)
- Kristal Metodolojileri
- FDD (Özellik Odaklı Geliştirme)