30 Temmuz 2023 Pazar

AGİLE

 

AGİLE

Agile yani çevik metodoloji, daha hızlı ürün teslimatı vadeden bir proje yönetim ve yazılım geliştirme şeklidir. Tüm verileri planda toplayarak aynı anda yönetmek yerine küçük ve etkili bir metot sunar. Tekrarlayıcı ve artırımlı bir taraftan bakmayı sağlayarak hıza ve ürüne odaklanmış yararlı bir yaklaşımdır.

Geleneksel yöntemlere alternatif olarak, projelerde yaygınlaşmaya başlayıp değişim beklentisinin karşılanacağı yeni bir yaklaşım biçiminde yazılım projelerinde öne çıkmıştır. 


Agile Metodunun Tarihi: Agile fikirlerinin çoğu 1970'lerde ortaya çıkmıştır. Geleneksel proje yaklaşımlarına bir tepki olarak ortaya çıkan Agile Metodu ile alakalı çalışmalar ve incelemeler yapılmıştır. 1970’li yıllarda ortaya çıkan çevik metodolojisi, yazılım geliştirme projelerinde kullanılan bir yaklaşımdır. Yazılım geliştirme aşamasını hızla ve etkili biçimde olmasını sağlamak için, diğer metodolojilere tepki amaçlı ortaya çıkmıştır.

1970 senesinde, Dr. William Royce, büyük yazılım sistemlerinin yönetimi ve geliştirilmesini tartışan bir makale yayımlayarak sıralı gelişim konusundaki özel fikirlerini ana çerçevesiyle çizmiştir. Royce bir projenin montaj hattındaki bir ürün gibi geliştirilebileceğini vurgulamıştır. Gelişimin her etabı, bir sonraki etaba başlamadan önce tamamlanması fikrine dikkat çekmiştir. Tüm geliştiricilerin bir projeye ait bütün ihtiyaçlarını bir araya getirmesi gerektiğini vurgulamıştır. Bir sonraki adımın ise projenin tüm mimarisini ve tasarımlarını tamamlamak olduğunu belirtmiştir. Bu adımlar tamamlandığında, projenin her aşamasını tamamlayan uzman gruplar arasında çok az temas olduğunu ya da hiç olmadığını vurgulamıştır. Daha sonra yazılım dünyasında bilinen isimlerden olan Kent Beck ve 16 yazılımcı “Çevik Yazılım Geliştirme Manifestosu” ve “Çevik Yazılımın Prensipleri”ni yayınlayarak bu yaklaşımı desteklemişlerdir. Bu nedenle, agile metodunun öncüleri, eğer proje geliştiricileri süreci incelerlerse, bu yöntemi yazılım geliştirmenin en mantıklı ve yararlı çözümü olarak bulabileceklerine inanıyorlardı.

Agile Manifesto 1990’larda yaşanan endüstri sorunları neticesinde arayışlarla belirmeye başlamıştır. Bu dönemde iş gereksinimleri, müşterilerin talep ettiği uygulamalar ve özellikler ile müşterilerin taleplerine yanıt veren teknolojilerin teslimi arasında önemli biçimde bir gecikme oluşmuş ve bu gecikme çokça projenin iptal edilmesine kadar gitmiştir. Bu gecikme akabinde, iş ihtiyaçları ve müşterilerin talepleri farklılaşmış ve nihai ürün, güncel talepleri karşılayamaz olmuştur. Bu dönemde, Waterfall modelinin öncülüğünü yaptığı o günün yazılım geliştirme modelleri; hız ihtiyacını karşılayamaz olmuş ve yazılımların hızlı bir biçimde değiştirebilmesinin faydalarına da erişememiştir. Çevik metodoloji 2000’li senelerde geleneksel yöntemlere alternatif olarak ortaya çıkmıştır. İçlerinde Jon Kern, Kent Beck, Ward Cunningham, Arie van Bennekum, and Alistair Cockburn’unda bulunduğu 17 kişiden oluşan bir grup, “düşünce liderleri”, önce 2000 yılında Oregon’da bir otelde daha sonra da 2001 yılında Utah’da bir kayak merkezinde buluşarak yazılım geliştirme sürecinde daha üretken ve verimli işler sunabilmek amacıyla beyin fırtınası yapmışlardır. Toplantılarının bitiminde fikir birliğine varıp Agile Manifesto’sunu oluşturdular.

Agile Manifesto’nun Türkçe uyarlaması şu şekildedir: “Bizler uygulayarak ve başkalarının da uygulamalarına yardım ederek daha iyi yazılım geliştirme yollarını ortaya çıkartıyoruz.” Agile’ın amacı devamlı değişim, artan karmaşıklık ve belirsizliğe rağmen müşteri odaklı şekilde aralıksız  değer üretmektir. Baştan başa değer üretebilen gruplar son kullanıcı için yarattıkları etkiyi deneyimledikçe bu yenilikçi çalışma şekli daha da anlam kazanarak mucizeleri yaratır. 

Bu çalışmaların sonucunda:

Özetle, sol taraftaki maddelerin değerini kabul etmekle birlikte, sağ taraftaki maddeleri daha değerli bulmaktayız.”

 Yazılım Geliştirme Süreçleri: En az zamanda, en fazla değerde yazılımı üretme uğraşıyla oluşturulmuştur. Hedeflenen tüm bu uğraşı için geliştirilmiş döngülere yazılım geliştirme döngüsü denir.

Planlama/Analiz, Dizayn, Kodlama, Test, Uygulama ve Bakım olmak üzere 6 aşamadan oluşur.

1-    Planlama:

Planlama ve Analiz aşamasında işin gerektirdiği ve odak noktası üstüne konumlanır. Bu fazın odağında proje yöneticileri ve işin ilgilileri önemli rol alır.

Cevap Aradığı Sorular: 

- Potansiyel User/Kullanıcı kimdir,  

- Girdi olarak hangi veriler girilmelidir?

- Sonuçtaki çıktılar nasıl olmalıdır?

Sonucunda elde edilen Requirement Specification dokümanı bu projenin ilerleyen zamanı için bir yönerge niteliğindedir.

2-    Dizayn:

Talep edilen zorunluluklar üstünden sistem gereklilikleri dizayn edilir. Kısaca yazılım ve donanım hususunda sistem mimarisi planlanmasında destek olur.

3-    Kodlama

Gerekli tamamlamanın yapıldığı ana fazdır. Sonrasında geliştirilmiş olan kodlama Test fazında test edilir.

4-    Test:

Bu kısımda gerekli olan fonksiyonel, sistem, integrasyon ve onay testi yapılır.

5-    Uygulama:

Gerekli olan test aşamalarını geçen proje kodları sisteme Uygulama fazında deploy edilir. 

6-    Bakım:

Talep edilen sistem böylece geliştirilmiş olup temelde geriye kalan sadece bakımdır. O da sorun veya talep bazlı ilerler.

Agile’nin Yazılım Geliştirme Döngüsündeki Yeri:

Agile metodolojisi, yazılım geliştirmek için süreci, işi hızlı bir biçimde bitirerek müşterinin taleplerini tam olarak karşılamaya yönelik tasarlamaktır. Bu hususta standart yazılım geliştirme döngüsüyle arasındaki değişikliklere aşağıdaki biçimde değinilebilir:


Kullanım farklılıkları; normal döngü verimli ve kaliteli ürün için iyi dokümante edilmiş biçimde kendi çerçevesinden sapmadan yol alırken Agile arttırımlı yaklaşımla kaliteye erişmeyi hedefler.

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 sadece arttırımlı geliştirmeyi sağlayabilecek biçimde parçalandırılmış platformlarda desteklenebilir. 

Agile hıza ve ürün geliştirmeye odaklı değişim bazlı bir metodoloji olduğundan dolayı sadece daha düşük kapsamlı projelerde veya küçük ölçekli uygulamalarda kayda değer verimle uygulanabilmektedir.

İyi dokümante etmeden, doğru biçimde görev paylaşımı ve bölüm koordinasyonu sağlamadan sadece ürün geliştirme merkezli yaklaşım için düşünülmelidir. Startuplar ve düşük kapsamlı projeler için çok uygun olması bir yana her türlü projeye uyarlanabilir. Agile kritik ve son dakika değişimler de dahil her türlü değişim için açık dinamik bir yaklaşımdır. Dolayısıyla tüm bu sebeplerden büyük avantaj sağlar. Değişimin ihtiyaç duyulduğu tüm projelerde hem uygun hem de verimlidir. Agile realist ve esnek yaklaşımı esas alır. İdaresi de kapsamının daha kısıtlı olması sebebiyle çok daha kolay yönetilir.

     Agile'nin Uygulanması ve Scrum: 

Agile’nin Scrum, Kanban ve diğerleri olmak üzere farklı proje yönetim çeşitleri de vardır. Mesela Scrum. Scrum'da sprintler bulunur. Bunlar ihtiyaç duyulan boyuta göre bölümlere ayrılmış iş çalışma periyotlarıdır. Her sprint sonunda görevler alınır ve sonunda ürün ortaya çıkar. İçinde belli olan soru formatı “Eksik var mı?” şeklindedir. Ayrıca, “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’un planlamasına göre sprint periyotları biçimlendirilebilir. Her sprintte hedef belirlenir ve takım bir bütün olarak bu hedefleri oldurmaya çalışır.

·       Her gün Daily Scrum meeting’i yapılır ki bu 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ı bulunmaz. Scrum projesinde roller sadece Ürün Sahibi, Scrum Uzmanı ve Takım üyesi biçiminde idare edilir. İçinde Product Backlog tutulur. Bu kaba bir ifadeyle üründe olması lazım gelen görevlerin listelendiği ve öncelik sırasıyla belirlendiği kaynak olarak bilinir.

·       İlaveten User Story taslakları tutulur. Bunlar müşteriyle empati kurabilmek için tutulan taslaklardır. İçinde rollerin ihtiyaçları ve ürünün buna cevapları üstüne irdeleme yapılır. Genelde “Kim istiyor? Ne istiyor? Ne için istiyor?” sorularına cevap aranır. Mesela “X kullanıcısı olarak Y istiyorum bu sayede de Z yapabileceğim” formatlı cümleler kurulur.

·       Sonrasında Sprint Review ile bir sprint süreci son bulur.  

 Neden Agile?

Günümüzde değer kazanmış en önemli kavramlar; olağanüstü değişim hızı, karmaşıklık ve geleceğe dair belirsizlik şeklindedir. Bundan dolayıdır ki kuruluşların başarısını belirlemiş olan esas etkenler; değişime devamlı uyum sağlamak, karışıklığı sade çözümlerle düzenleyebilmek ve belirsizliği deneysel yaklaşımlarla en aza indirgemek biçiminde ifade edilebilir.

Agility, alışılagelmiş olan çalışma biçiminden bir paradigma kaymasıdır. Agile kelimesi dilimize “çeviklik” şeklinde geçmiştir. Değişen şartlara hızla uyum sağlayabilme becerisi olarak da ifade edilebilen agile kavramı; birçok kaynakta metod, metodoloji, yöntem veya proje yönetimi olarak tanımlansa bile aslında bir düşünme şeklidir. Dünyanın en uzun süreli çeviklik raporu olan “State of Agile Report”un 14.’sü 2020 Mayıs ayında yayınlandı. Bugüne kadar tüm dünyadan 40 binin üzerinde profesyonelin yanıtladığı ankete göre çevikliğin kuruluşlarda yarattığı en önemli kazanımlar şöyle sıralandı:

Değişen Öncelikleri Yönetebilme Kabiliyeti - 70%

Proje Görünürlüğü - 65%

İş - IT Uyumu - 65%

Teslimat Hızı / Pazara Ulaştırma Süresi - 60%

Takım Morali - 59%

Artan Takım Üretkenliği - 58%

Proje Riskini Azaltma - 51%

Proje Öngörülebilirliği - 50%

 

Agile Manifesto Nedir?

Çevik Metodolojisi; sürekli test yaparak projeyi uyumlanabilir duruma getirebilen, değişen müşteri taleplerinin projeye kolayca entegre edilebilmesine olanak veren proje yönetimi yaklaşımıdır. Esas amaç, proje süresince iletişimi en üst düzeyde tutarak gereken değişikliklere  anında reaksiyon göstermek ve sık sık test yaparak hata oranını en aza indirgemektir.

 Agile Manifestosu: Agile yaklaşımı kendisini oluşturan bir çerçeveyle yani Agile manifestosu ile anlatılabilir. Bu manifesto 4 temel değer ve 12 prensip ile biçimlendirilmiş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 vermenin

daha kıymetli olduğunun altını çizer Agile Manifesto.

 

  1. Süreçler ve Araçlardan Ziyade Bireyler ve Etkileşimler:

Müşterilerle iletişime çokça değer  verilmesine vurgu yapıyor. Müşterinin merak ettiği tüm sorulara tüm sorulara ve önerilere çok ivedi biçimde dönüş yapılması ekip üyelerinin tasavvurundadır.

  1. Detaylı Dokümantasyondan Ziyade Çalışan Yazılıma:

Geçmişte, projenin her aşamasının doğru bir biçimde belgelendirilmesine projeden daha çok odaklanılıyordu. Çevik değerler, proje ekibinin ilk ve en önemli vazifesinin müşteriler tarafından belirlenen nihai teslimatları tamamlamak olduğunu belirtir.

  1. Sözleşme Pazarlıklarından Çok Müşteri ile İş Birliğine:

Çevik ilkeler, müşterinin projenin her aşamasına katılmalarını gerektirir. Waterfall yaklaşımı veya  geleneksel metodolojiler müşterinin yalnızca projeden önce ve sonra pazarlık yapmasına olanak tanır. Bu durum zaman ve kaynak israfına sebep olur. Müşteri, geliştirme sırasında döngü dahilinde tutulabilirse, grup üyeleri nihai ürünün müşterinin bütün ihtiyaçlarını karşılamasını sağlayabilir.

  1. Bir Plana Bağlı Kalmaktansa Değişime Karşılık Vermeye:

Geçmişteki yönetim metodolojilerinin aksine, çevik değerler projeye daha henüz başlamadan  oluşturulan detaylı plana her koşulda sadık kalmaya karşıdır. Şartlar değişkendir ve bazı durumlarda müşteri nihai ürün için projenin alanını değiştirebilecek yeni özellikler isteyebilir. Bu  durumlarda, proje grupları ve idarecileri yüksek kalitede bir ürün teslim edebilmek ve %100 müşteri memnuniyetini sağlamak amacıyla hızlı bir biçimde değişen yeni koşullara uyum sağlamalıdır. Değişim ve dönüşüm yaşamın bir parçası olup her zaman güçlü olanın değil, hızlı olup adaptasyon sağlayanlar kazanmıştır. Günümüzde hızla değişen müşteri istekleri ve gereksinimleri, gelişen teknoloji ve meydana gelen yenilikler çevik hareket etme ihtiyacını son derece arttırmıştır.

Prensipleri: Markette hız, her an değişime açık olmak, sürekli ve demoyla müşteri etkileşimi, motivasyonu yüksek yüz yüze etkileşim ve dahası üstüne istiflenmiştir. Kısaca Agile az zamanda en fazla sağlayabilme olgusudur. Yani çevik olmaktır.

 

Çevik yazılım geliştirme süreci aşağıdaki gibidir;

Kaynak: https://medium.com/@ryoldash/agile-%C3%A7evik-yaz%C4%B1l%C4%B1m-geli%C5%9Ftirme-nedir-ve-nas%C4%B1l-uygulan%C4%B1r-93e85ffc866

Çevik metodoloji, şirketlerin daha esnek, duyarlı ve yeni zorluklarla yüzleşmeye hazır olmalarına yardımcı olan yazılım proje yönetimi yaklaşımıdır. 

Bu değerler, kalite odaklı ve müşterilerin ihtiyaçlarını karşılamaya yönelik bir yazılım geliştirme süreci yapmak için tasarlanmıştır.

Sprint; bir projenin belirli bir kısmı için ayrılan zamandır. Sprintlerin süresi dolduğunda proje tamamlanmış sayılır. Ekip üyeleri arasında, gelişimin tatmin edici düzeyde olup olmadığı hususunda anlaşmazlıklar çıkabilir; ne var ki, projenin belirli bir kısmında bu hususta daha çok çalışma yapılmayacaktır. Projenin kalan kısımları, kendi zaman dilimleri içinde geliştirilmeye devam edecektir.

Scrum; başarılı çevik proje yönetim tekniklerinden biridir. Karmaşık yazılım süreçleri için kullanılır. Bütünü parçalara bölerek, projenin sağlam adımlarla ve değişimlere ayak uydurarak ilerlemesini sağlar. İşler parçalara bölündüğü için zamandan tasarruf sağlanır. Bunun nedeni, Scrum’da iletişim ve takım çalışmasının yüksek olmasıdır. Sürekli iletişim halinde olunduğu için hata olasılığı düşer ve zamandan tasarruf sağlanır.

Scrum 3 temel ilkeye dayanır;



1.     Şeffaflık: Projenin gidişatı, çözülmeye çalışılan sorunlar ve gelişmeler herkese açık olmalıdır.

2.     Denetleme: Sık kontrollerle proje süreci kontrol edilerek, beklenmedik bir hatayla karşılaşma olasılığı en aza indirilir.

3.     Uyarlama: Proje sürecinde çözülemeyen sorunlar veya herhangi bir yenilik olduğu zaman süreç değiştirilebilir.

4.      

Scrum’ın işleyişi şöyledir:


çevik metodolojisi

Kaynak: https://blog.experlize.com/agile-ve-scrum-nedir-agile-nasil-uygulanir/

 

Scrum’da Yer Alan Roller:

 

Product Owner: Müşterinin isteklerini aktaran kişidir. Bazı durumlarda bu kişi müşterinin kendisi olabilir. Bu istekleri yazılım ekibine iletir.

 

Scrum Master: Scrum Master, takımın Scrum’ı anlamasına ve Scrum prensiplerini yerine getirmesine rehberlik eden ve takım için iletişimin sağlanmasında rol oynayan kişidir.

 

Development Team: Müşteriden gelen isteklerin oluşturulması ve geliştirilmesinden sorumlu ekiptir.

 

 Scrum Terimleri


çevik metodolojisi

Kaynak: https://netuce.com/scrum-nedir-scrum-rollerini-taniyalim/

 

Planlama Toplantısı: Product Owner, Sprint’ten önce bir hedef belirler. Development Team ile beraber çalışarak hangi işlerin gelecek Sprint’e alınacağına karar verir. Eğer iş yükü, geliştirme ekibine çok gelirse, iş birden fazla Sprint’e bölünür.

 Günlük Sprint Toplantıları: Scrum takımı günlük olarak en fazla 15 dakika süren toplantılar gerçekleştirir. Bu toplantılarda, yapılan ve yapılacak olan işler ve eğer bir problem yaşandıysa bunun hakkında konuşulur. Böylece sık iletişim kurularak sorunlar hemen giderilir.

 Demo Toplantısı: Geliştirme ekibi, Scrum Master, Product Owner ve müşterinin katıldığı bu toplantı, her Sprint sonrasında gerçekleştirilir. Geliştirme ekibi, Sprint sürecinde hangi işleri yaptığını ve ortaya çıkan sonucu sunar. İşler sunulduktan sonra müşteri yorumlarını aktarır ve düzenlenmesini istediği bir yer varsa bildirir.

 

Sprint Retrospective: Scrum takımının kendini değerlendirdiği, Sprint sonunda yapılan toplantıdır. Takımlardaki gelişimi sürdürmek için önemli toplantılardır. İşler her yönüyle değerlendirilir ve “Ne, nasıl daha iyi yapılabilir?” soruları üstüne tartışılır.

 Dört Temel Adımı Tekrarlayarak Sürekli İyileştirme Sağlanabilir:

Planla - Yap - Kontrol Et - Harekete Geç. Bir şeyler ters giderse, ekip bunu her zaman tartışabilir ve devam edebilir, yönlendirebilir.

 Agile  Manifestosunda Bulunan On İki Prensip:

 Agile, metodolojiler için hem yol gösterici hem de değişimin hoş karşılanarak müşterinin işin merkez

noktası haline geldiği bir kültürdür.

  1. En önemli husus yazılımın hem erken teslimini hem de devamlılığını sağlayarak müşteriyi memnun etmektir. Müşteri, sürümler arasında uzun süreli bekleme yapmak yerine düzenli aralıklarla çalışan yazılımı aldıklarında hoşnut olurlar.
  2. Değişen ihtiyaçlar yazılım sürecinin son aşamasında dahi kabul edilmelidir. Çevik süreçler değişimi müşterinin rekabet avantajı için değerlendirir. Bir ihtiyaç ya da özellik isteği farklılaştığında gecikmeleri önleyebilme yeteneği önemlidir.
  3. Çalışan yazılım, tercihen kısa zaman aralıkları belirlenerek birkaç haftada ya da birkaç ayda bir düzenli olarak müşteriye sunulmalıdır. Grup, çalışan yazılımın düzenli olarak teslim edilmesini sağlayan yazılım Sprint’leriyle çalıştığı için Scrum bu prensibi yerine getirir.
  4. İş süreçlerinin sahipleri ve yazılımcılar proje süresince her gün beraber çalışmalıdır. İş sürecinin sahibi ve teknik ekip uyumlu olduğunda daha verimli kararlar alınır.
  5. Projelerin temelinde motive olmuş bireyler bulunmalıdır. Onlara gereksinimi olan ortam ve destek sağlanmalı, işi başaracakları hususunda güven duyulmalıdır. Mutlu olmayan takımlara oranla, motive olan grupların en iyi işlerini teslim etme olasılığı çok daha fazladır.
  6. Bir yazılım grubunda bilgi alışverişinin en verimli ve etkin yöntemi yüz yüze iletişimdir.
  7. Çalışan yazılım ilerlemenin birinci derecede ölçüsüdür.
  8. Çevik süreçler sürdürülebilir geliştirmeyi teşvik eder. Sponsor, yazılımcı ve kullanıcı sabit çalışma temposunu sürekli devam ettirebilmelidir.
  9. Teknik mükemmeliyet, iyi tasarım konusundaki sürekli özen, çevikliği artırır. 
  1. Sadelik, işin özü olan işlerin yapılmasına özen göstermek önemlidir.  Karışık kararlar tüm yazılım geliştirme sürecini sekteye uğratabilir. Orta düzeyde bir gayretle kaliteden ödün vermeden basit biçimde bir şey yapılabiliyorsa aynı biçimde devam edilmelidir.  
  2. En iyi mimariler, ihtiyaçlar ve tasarımlar kendi kendine örgütlenen gruplardan çıkar.
  3. Grup, düzenli aralıklarla başka nasıl daha üretken ve verimli olabileceğini değerlendirerek adaptasyon sağlar.

 

Agile Yöntemini Kullanan Firmalar:

Agile metodunu, projeleri için kullanan resmi şirket listesi bulunmamakla beraber, IBM, yazılımı geliştirmek için bu yöntemi açıkça kullanan şirketlerden biridir. Birçok şirket, bu yöntemin kullanımını geliştirme yapıları içinde benimsemesine rağmen kullanmayı tercih etme konusunda her zaman açık olmamışlardır. IBM'e göre, agile metodunun kullanılması, önemli organizasyonel değişikliklerin gerçekleşmesi anlamına gelir.

Birçok agile yazılım geliştirme ekibinin, güvenilir bir rehberle ortaklık kurarak başarı şansını artıracağına inanıyorlar. Müşterilerin projeleri için onlara uygun agile yazılım geliştirme stratejilerini uygulamalarına yardımcı olurlar. Agile yazılım geliştirme ekiplerinin ortak genişletme ve uygulama tuzaklarından kaçınmasına yardımcı olarak rehberlik sağlarlar.

Agile Metodunu Kullanmanın Yararları:

Agile metodu, önde gelen yazılım uzmanlarının gerçek yaşam projelerindeki deneyimlerinden ortaya çıkmıştır. Bu sebeple, geleneksel kalkınmanın zorlukları ve sınırlamaları ortadan kaldırılmıştır. Daha sonra agile metodu, endüstri tarafından proje geliştirmeye daha iyi bir çözüm olarak kabul edilmiştir. Hemen hemen her yazılım geliştirici, agile metodunu bir biçimde kullanmıştır. Bu yöntem yardımcı ekipler için hafif bir çerçeve sunarak hızlı teslimat üzerinde çalışmalarına ve odaklanmalarına yardımcı olur. Bu odaklanma yetenekli kuruluşlara yazılım geliştirme ile ilgili genel riskleri azaltma konusunda yardım sağlar.

Agile metodu, bu değerin geliştirme süreci boyunca optimize edilmesini sağlar. Yinelemeli planlama ve geri bildirim kullanımı, bir müşterinin istenen ihtiyaçlarını yansıtan bir ürünü sürekli olarak düzenleyebilen ekiplerde sonuçlanır. Bir projenin durumunu ölçerek ve değerlendirerek süreç boyunca değişen gereksinimlere kolayca adapte olur. Ölçme ve değerlendirme, her projenin gelişimine doğru ve erken görünürlük sağlar.

Agile metodunun şirketlerin doğru ürünü oluşturmalarına yardımcı olduğu söylenebilir. Yazılı olmadan önce yazılımı pazarlamaya çalışmak yerine, agile metodu, geliştirme sırasında sürümleri optimize etmek için ekipleri yetkilendirir. Bu, ürünün pazarda mümkün olduğunca rekabetçi olmasını sağlar. Kritik pazarın düzeyini korur ve bir ekibin çalışmasının geride kalmamasını sağlar. Bu sebeple agile metodu gerek kullanıcı gerekse de geliştirici için cazip bir seçenektir. Agile metodunun birçok eleştirisi vardır; ancak, bu yöntem müşterilerin memnun olacakları sonuçlar verir.

Bir proje tam olarak müşterinin öngördüğü şekilde ortaya çıkmasa da, üretilmesi gereken sürede teslim edilir. Süreç boyunca müşteri ve takım, müşterinin gereksinim duyduğu kaliteyi üretmek için ihtiyaçlarını değiştirir. Müşteriler sonuçtan memnun kalır ve takım müşterinin gereksinimlerini sağlar. Devam eden değişim gerek müşteriye gerekse de ekibe, ürün için öngördüğünden daha fazlasını verebilir. Agile Metodu, gerçekten yazılım geliştirmeye katılan herkes için kazandıran bir çözümdür.

Agile Metodu ile İlgili Eleştiriler:

•Kullanıcı merkezli yerine geliştirici merkezlidir.
•Agile, gereksinim alma ve kod geliştirme süreçlerine odaklanır ve ürün tasarımına odaklanmaz. 
•Agile metodolojiler büyük kuruluşlarda ve belirli türdeki projelerde yetersiz olabilir.


Çevik Metodoloji nedir?

Yazılım geliştirmeye farklı bir bakış açısı getirir. Waterfall'dan farklı olarak bu yöntem, geliştirme sürecince daha çok esneklik ve yineleme sağlar. Takımlar, sabit bir sırayı takip etmektense uygulamanın değişik tarafları üstüne paralel biçimde çalışarak uyarlamayı ya da geliştirme sırasında önemli yeniden çalışmaya gerek duymadan değişiklik yapmayı sağlar. Bu yöntem aynı zamanda süreç boyunca paydaşlardan ve kullanıcılardan gelen düzenli geri bildirimleri teşvik ederek geliştiricilerin kullanıcı gereksinimlerini karşılamaya yardımcı olur. Çevik Metodoloji, daha hızlı sonuçlara ve kaynakların daha verimli kullanımına olanak sağladığı için sık güncellemeler ya da hızlı yinelemeler gerektiren uygulamalar için idealdir. Çevik metodolojinin  nihai amacı, yazılım geliştirme sürecini iş gereksinmeleri ile birleştirmektir. Çevik değerler ve ilkeler esasında inşa edilen projeler, müşterilere odaklanır ve katılımcıları sürece doğrudan teşvik eder. Çevik metodolojinin yazılım endüstrisinin her yerinde uygulanması, etkinliğini ve süreç üstündeki olumlu etkisini ispatlamıştır.

Çevik Metodolojinin Artıları ve Eksileri

Artıları:

  • Geliştirme sırasında uyum sağlayıp değişiklik yaparak daha fazla esneklik,
  • Paralel iş akışları sayesinde daha hızlı sonuçlar alınmasını sağlamak,
  • Süreç boyunca düzenli kullanıcı geri bildirimlerini teşvik etmesi.

Eksileri:

  • Değişikliklere uygun planlama yapılmadan önce kapsam kaymasına yol açabilir.
  • Geliştiricilerden ve paydaşlardan yüksek derecede disiplin bekler.

Yazılım Gereksinimleri: Çevik ve Şelale Metodolojisi

Şelale metodolojisi, projeyi her aşama için net hedefler ve zaman çizelgeleri ile farklı aşamalara ayırmayı gerektiren geleneksel bir yazılım geliştirme yaklaşımıdır. Bu yönteme göre, bir proje için tüm ihtiyaçlar, kodlama başlamadan önce belirlenmelidir; her aşama, tamamlanana kadar bir sonrakinin üzerine inşa edilir. Bu sistem, ilk tasarımdan sonra çok az değişiklik yapılması beklenen, kapsamı basit projeler geliştirirken iyi çalışır. Yapıya ve planlamaya izin verir, ne var ki geliştirme sırasında ihtiyaçlar değişirse katılığa yol açabilir.

Çevik metodoloji, planlara ve süreçlere çok sıkı bağlı olmak yerine esnekliği vurgulayan alternatif bir yazılım geliştirme yaklaşımıdır. Çevikliği kullanan ekipler, görevler üzerinde  sırayla çalışmak yerine, projenin çeşitli bölümlerini aynı anda geliştirmek için sprintler veya döngüler halinde iş birliği içinde çalışır. Bu dinamik yaklaşım, takımların projelerini yolunda tutarken değişen şartlara ve müşteri geri bildirimlerine hızla uyumlanmasını kolaylaştırır. Çevik metodoloji, esnekliğin ve yanıt verebilirliğin esas öncelikler olduğu karışık projeler için en uygunudur.

Çevik Metodoloji, web veya mobil uygulamalar gibi sık güncellemeler veya hızlı yinelemeler gerektiren uygulamalar için çok uygundur. Takımlar, geliştirme zamanı boyunca daha çok  esneklik ve yinelemeye izin vererek, kullanıcı gereksinmelerini daha kısa sürede daha iyi karşılayan ürünler oluşturabilir ve sonuçta daha fazla müşteri memnuniyeti sağlamaya yardımcı olur. Bununla beraber, olası sorunlardan kaçınmak için tüm ihtiyaçların en başından beri doğru bir biçimde anlaşılmasını ve yönetilmesini sağlaması ehemmiyet arz eder.

Yazılım geliştirme ihtiyaçları söz konusu olduğunda, hem Şelale hem de Çevik metodolojilerin artıları ve eksileri vardır. Nihayetinde, aralarındaki seçim, bir projenin ve paydaşlarının özel gereksinimleri ile tespit edilir. Takımlar, her bir yaklaşımın çalışma biçimini anlayarak fikirlerini verimli bir biçimde hayata geçirmelerine imkan sağlayan bir metodoloji seçebilir.

Agile (Çevik) ve Geleneksel (Şelale ya da Spiral) Yöntem Arasındaki Farklar:

Temel Varsayımlar:

Geleneksel: Sistem tamamen tanımlanabilir, tahmin edilebilir, titiz ve kapsamlı bir planlama ile inşa edilebilir. 

Agile (Çevik): Hızlı geri bildirim sağlanarak değişime dayalı sürekli tasarım geliştirilir. Test etme ilkeleri kullanılarak küçük takımlar tarafından yüksek kaliteli, uyarlanabilir yazılım geliştirilebilir. 

Kontrol: Geleneksel; süreç merkezli, Agile; insan merkezli,

Yönetim stili: Geleneksel; komuta kontrol, Agile; liderlik ve iş birliği,
 
Bilgi yönetimi: Geleneksel; açık, Agile; üstü kapalı, 

Rol ataması: Geleneksel; birey - uzmanlaşmayı tercih eder, Agile; kendini organize eden takımlar-rol değişimini teşvik eder 

İletişim: Geleneksel; resmi, Agile; resmi değil, 

Müşterinin rolü: Geleneksel; önemli, Agile; kritik 

Proje döngüsü: Geleneksel; görevler veya faaliyetler rehberliğindedir. Agile; ürün özelliklerine göre yönlendirilir.

Geliştirme modeli: Geleneksel; yaşam döngüsü modeli (Şelale, Spiral veya bazı varyasyonlar), Agile; evrimsel teslim modeli, 

İstenilen organizasyonel form / yapı: Geleneksel; mekanik, Agile; organik 

Teknoloji: Geleneksel; kısıtlama yok, Agile; nesneye yönelik teknolojiyi destekler,

Sözlük: Çevik metodolojilerin etkisi, 

Kabul testi: Bir kullanıcı eylem senaryosunu istenen sonuçla eşleştirerek hikayenin tamamlandığını onaylar. Kabul testine beta testi, uygulama testi ve son kullanıcı testi de denir. 

Müşteri: Müşteri, gelişim sırasında rehberlik sağlar. Bir proje için hem iş gereksinimlerini hem de operasyonel kısıtlamaları anlayan bir kişidir. 

Etki alanı modeli: İşletme ile bilgi teknolojileri arasında paylaşılan bir dil oluşturmaktan sorumlu uygulama alanıdır. 

Yineleme: Yineleme, genellikle bir veya iki hafta olarak ölçülen, tek bir gelişim döngüsüdür. 

Planlama kurulu: Agile bir kalkınma projesinin ilerlemesini izlemek için kullanılır. Yineleme planlamasından sonra, hikayeler kartlara yazılır ve bir planlama tahtasında öncelik sırasına göre sabitlenir. 

Planlama oyunu: Bir planlama oyunudur, hem BT hem de iş ekiplerinin katılımı için öyküler seçmeye odaklanan bir organizasyondur. 

Yayın: Birkaç geliştirme sürecinin doruk noktası olan bir yazılım paketidir. 

Yayın planı: Gelecek sürümlerde hangi özelliklerin sunulacağını açıklayan gelişen bir akış şemasıdır. 

Spike: Bir geliştirme ekibi zamana dayalı bir soruşturma yürütene kadar tahmin edilemeyen bir durumdur. 

Stand-up: Geleneksel olarak bir gelişim alanı içinde yapılan günlük bir ilerleme toplantısıdır.

Hikaye: Yazılım geliştirme ekibine belirli bir iş atanması gerekiyor. Hikayeler, tek bir geliştirme yinelemesinde teslim edilebilecek kadar küçük parçalara bölünmelidir. 

Timebox: Görevin yerine getirilmesi gereken belirli bir süre. 

Hız: Bir geliştirme projesinin bir sonraki yinelemesini planlamak için kullanılabilecek hikaye birimlerinin bütçesi. Hız, önceki yineleme döngüleri sırasında alınan ölçümlere dayanır. 

Wiki: Kullanıcıların bir Web sitesinin içeriğini oluşturmada iş birliği yapmalarını sağlayan bir sunucu programıdır.

 

SONUÇ:

Scrum özellikleri olan rol, süreç ve çıktıların işletme kültürü halini alması ve işletmede grup eğitimlerinin desteklenmesi, çevik yöntemi başarılı hale getiren en önemli etkenlerdendir.  Alan yazınında teorik ve uygulama alanının çok kısıtlı olması nedeniyle, gelecekteki çalışmalarda, Scrum başarı etkenlerinin işletme süreçlerinin etkinliği ve verimliliğine etkisinin çok yönlü olarak, geniş hacimde örneklemle incelenmesi tavsiye edilmektedir. Çevik dönüşümün işletme performansına etkisinin yanında; çalışanların kişisel ve grup olarak performanslarının ürün performansına etkisinin araştırılması, söz konusu alana çok disiplinli çalışmalar bakımından katkı verecektir. Gerek çalışma disiplini gerekse işin sahiplenilmesi başarıya ivme kazandıracaktır.

 

 

KAYNAKLAR: 

·       https://kartaca.com/cevik-metodolojisi/

·       https://www.argenova.com.tr/agile-cevik-metodolojinin-12-temel-ilkesi

·       https://toptalent.co/agile-nedir-agile-metodu-nasil-uygulanir

·      https://visuresolutions.com/tr/requirements-management-traceability-guide/software-requirements-agile-vs-waterfall/

·       https://www.acmagile.com/blog/agile-manifesto-nedir

·       http://www.ilkimdilara.com/agile-manifesto/

·       Yazılım Geliştirmede Agile Nedir? Agile'ın Önemi Nedir? | Coderspace Blog

·       Aydıner, A. S. ; Esen, M. F. ; Özlü, E. (2020, Ekim). Türkiye’de Çevik Yazılım Geliştirme Süreçlerinde Scrum Yöntemini Uygulayan İşletmelerin Başarı Faktörleri. Bilişim Teknolojileri Dergisi, Cilt: 13, Sayı: 4.