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.”
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.
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.
· 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.
- 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.
- 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.
- 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.
- 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;
Ç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:
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.
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.
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.
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:
noktası haline geldiği bir
kültürdür.
- 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.
- 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.
- Ç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.
- İş
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.
- 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.
- Bir
yazılım grubunda bilgi alışverişinin en verimli ve etkin yöntemi yüz yüze
iletişimdir.
- Çalışan
yazılım ilerlemenin birinci derecede ölçüsüdür.
- Ç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.
- Teknik mükemmeliyet, iyi tasarım konusundaki sürekli özen, çevikliği artırır.
- 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.
- En
iyi mimariler, ihtiyaçlar ve tasarımlar kendi kendine örgütlenen
gruplardan çıkar.
- 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://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.