İçinde bulunduğumuz dijital dünyada her şeyin olağanüstü bir hızla değişmesi hem bireyleri hem de şirketleri bu değişime ayak uydurma, uyum sağlama zorunluluğu getirdi. Her geçen gün yeni teknolojiler keşfediliyor, bununla birlikte yazılım geliştirme süreçlerinin de daha hızlı, daha verimli, daha yenilikçi olması için metodolojiler geliştiriliyor. Gün geçtikçe agile metodolojisi, modern şirketlerin özellikle yazılım ve proje geliştirme süreçlerini geliştirmesi, hız kazandırması ve verimli hale getirmesi nedeniyle daha popüler hale geliyor. Bu yazımızda agile nedir, agile metodolojisi nedir, yazılım geliştirme nedir, agile yazılım geliştirme, agile modeli ve agile yönetim prensipleri gibi konuları detaylıca inceleyecek, konuyla ilgili sıkça sorulan soruları cevaplandıracağız.
Table of Contents
Yazılım Geliştirme Nedir?
Agile metotları konusuna giriş yapmadan önce kısaca yazılım geliştirme nedir hakkında biraz bilgi verelim. Yazılım geliştirme, tasarlama, programlama, dokümante etme, test, hata düzeltme gibi istenen yazılımın gerekliliklerinin belirlenmesinden yazılımın son hali elde edilinceye kadar olan tüm planlı süreçleri kapsar. Yazılım geliştirme süreci, yazılım geliştirme yaşam döngüsü (Software Development Life Cycle, SDLC) olarak da adlandırılır. Her nihai ürün için güvenilirlik ve kalite güvence elde etmek amacıyla tasarlanan planlı aşamalar dizisidir. Süre kazanmak amacıyla bazı aşamaların atlanması daha çok zaman, kaynak ve müşteri kaybına sebep olan riskli sonuçlara yol açar.
SDLC yani Yazılım geliştirme yaşam döngüsünde, iki temel yaklaşım vardır: Waterfall (Şelale) ve Agile (Çevik). Bu iki yaklaşım arasındaki temel fark kesin adımlar ile ilgili değil, daha çok süreç organizasyonu ile ilgilidir. Şelale (Waterfall) yaklaşımı, yazılım geliştirme sürecini doğrusal şekilde tanımlar, çevik (agile) yaklaşım ise daha çok yinelemeli ve döngüsel bir şekilde ele alır. Geleneksel bir yaklaşım olan Şelale (Waterfall), endüstriyel üretim anlayışından gelir. Yazılım geliştirme sürecini katı ve doğrusal bir yapıyla tanımlar. Bir aşama bittikten sonra diğer aşamanın başlaması ile tüm aşamalar birbirini takip eder. Bir aşamaya geçmeden önce diğer aşamanın mutlaka tamamlanması gerekir. Ayrıca Şelale (Waterfall) yaklaşımında, tüm gereksinimlerin tüm yazılım geliştirme yaşam döngüsü boyunca sabit ve değişmez olduğu varsayılır.
Yazımızın ana konusunun agile metodoloji olması nedeniyle birazdan çevik (agile) yaklaşım hakkında daha detaylı bilgi vereceğiz.
Agile Nedir?
Kelime kökeni İngilizce olan agile Türkçe ’de çevik ya da atik anlamına gelmektedir. Bir çalışma modeli olarak agile, daha hızlı, daha sorunsuz bir şekilde değer elde etmek için yapılan yinelemeli bir ekip çalışması yaklaşımıdır. Agile çalışma ekiplerinde, proje çalışmaları kısa vadeli döngüler ile artan adımlara odaklanılır. Ekip üyeleri, paydaşlarla sürekli iletişim fırsatı bularak geri bildirimde bulunur. Agile yaklaşım öncelikle yazılım geliştirme süreci için oluşturulmasına rağmen, artık pek çok proje türünü ya da organizasyonları yönetmek amacıyla yaygın bir şekilde kullanılmaktadır.
Agile Manifesto Nedir?
Agile Manifesto Şubat 2001’de yayınlanan, agile yazılım geliştirme metodu için 4 değer ve 12 prensip temeline dayanan kısa bir belgedir. 17 kişilik bir yazılım geliştirme lider ekibi tarafından dokümana dayalı, ağır yazılım geliştirme süreçleri için alternatif oluşturma ihtiyacına yönelik olarak oluşturulmuştur.
Agile Manifesto Değerleri
Agile yaklaşımı, 4 kapsayıcı değeri ile geleneksel yazılım geliştirme süreçlerinden ayrılır.
Süreç ve Araçlardan Çok Birey ve Etkileşimlere
Agile Manifestonun ilk değeri “Süreçler ve araçlardan ziyade bireyler ve etkileşimler”’dir.
İş ihtiyaçlarına cevap veren ve geliştirme sürecini yönlendiren insanlardır. Süreç veya araçların gelişimi
yönlendirme durumunda, ekibin değişime ayak uydurması ve müşteri ihtiyaçlarını giderme olasılığı azalır. İletişim, sürece değer vermek ile insanlara değer vermek arasındaki farklardan biridir.
İletişim insanlar söz konusu olduğunda akıcıdır ve ihtiyaç durumunda gerçekleşir. Sürecin söz konusu olma durumunda ise iletişim planlaması ve içerik gerekir.
Kapsamlı Dokümantasyon Çok Çalışan Yazılım
Geleneksel yaklaşımda, teknik gereksinimler, arayüz tasarım dokümanları, test ve dokümantasyon planları, bunlar için gereken onaylar gibi ürünün geliştirilmesi ve teslimatı ile ilgili belgelendirmelere çok büyük zaman harcanıyordu. Bu da yazılım geliştirme sürecinde uzun gecikmelere yol açıyordu. Agile dokümantasyonu ortadan kaldırmadan, geliştiriciye ayrıntılara takılmayarak işi akıcı yapması için gerekenleri verir. Agile metodu belgelendirmeye değer verir, ancak yazılımın çalışmasına daha çok değer verir.
Sözleşme ve Pazarlıklar Yerine Müşteri İş Birliğine Odaklanmak
Geleneksel geliştirme modellerinde, ürünün gereksinimleri en başta ayrıntılı olarak tartışılır. Müşterinin geliştirmeden önce ve tamamlandıktan sonra sürece dahil olur, ancak süreç boyunca dahil olmazdı. Agile çalışma ise müşteriyi tüm yazılım geliştirme süreci boyunca dahil eder ve iş birliği yapmasını sağlar.
Bir Planı Takip Etmek Yerine Değişime Cevap Vermek
Geleneksel yazılım geliştirme sürecinde, değişim masraf olarak görülerek kaçınılırdı. Agile yöntemine göre ise değişiklikler bir projeyi iyileştirir, tekrarlanan yineleme sürelerinin kısa olması nedeniyle yeni özellikler eklenebilir.
Agile Manifesto Prensipleri
Agile Manifestosu ile belirlenen agile prensipleri aşağıda yer almaktadır:
- Yazılımın Erken ve Sürekli Teslimi ile Müşteri Memnuniyeti: Müşteriler, çalışan yazılımı sürümler arasında beklemek yerine, düzenli aralıklar ile aldıkları zaman daha mutlu olurlar.
- Geliştirme Süresince Değişen Gereksinimler ile Uyum Sağlama: Bir gereksinim veya özellik için değişim talebi olduğunda gecikmeleri önleme konusunda beceri gösterme.
- Çalışan Yazılımın Kısa Aralıklar İle Teslim Edilmesi: Agile çalışma ekibi, çalışan yazılımı müşteriye düzenli aralıklarla teslim edecek şekilde yinelemeler ile çalışır.
- Proje Süresince İş Paydaşları ve Yazılımcılar Arasındaki İş Birliği: Proje sahipleri ve teknik ekip uyumlu halde çalışıp iş birliği yaptığı zaman daha iyi karar verilir.
- Ekibe Dahil Olan Kişileri Destekleyin, Güvenin ve Motive Edin: Motive olmuş ekiplerin, mutsuz ekiplere göre çok daha iyi işler ortaya koyma olasılığı yüksektir.
- Yüz Yüze İletişimi Etkinleştirin: Geliştirme ekipleri aynı yerde yüz yüze bilgi alışverişinde bulunduğunda iletişim daha başarılı olur.
- Çalışan Yazılım, İlerlemenin En Önemli Ölçüsüdür: Müşteriye çalışan yazılım sunmak, ilerlemeyi ölçmek için en önemli faktördür.
- Agile Çalışma Tutarlı Bir Geliştirme Hızını Destekler
- Ekipler, yazılımı teslim etmek için tekrarlanabilir ve sürdürülebilir bir çalışma hızı belirleyerek bunu her seferinde tekrarlar.
- Teknik Detay ve Tasarıma Önem Vermek Çevikliği Artırır: Uygun yetenek ve iyi tasarım, agile çalışma ekibinin tempoyu korumasını, sürekli iyileştirmeyi ve değişimi sürdürmeyi sağlar.
- Basitlik: İşi şimdilik bitirmeye yetecek kadar geliştirin.
- Kendini Organize Eden Ekipler En İyi Mimari, Tasarım ve Gereksinimleri Ortaya Çıkarır: En iyi ekipler sorumluluk alan, kaliteli ürünler sunan, karar verme gücüne sahip, fikirleri paylaşan, diğer üyeler ile iletişimi düzenli olan, yetenekli ve motive bireylerden oluşur.
- Daha Etkili Olabilmek Konusunda Düzenli Düşünceler: Süreç iyileştirme, kişisel gelişim, beceri ve tekniklerin geliştirilmesi agile çalışma ekibinin daha verimli çalışmasını sağlar.
Agile Metodolojisi Nedir?
Her birinin kendi özellikleri olan çeşitli Agile metodolojileri ve çerçeveleri vardır. Bazıları birden fazla metodolojinin hibrit olarak kullanılmasıyla oluşur. En yaygın kullanılan agile metodu Scrum ’dur. En çok kullanılan agile metodları arasında ikinci sırada Kanban yer alır. Aşağıda bu metodları listeledik:
- Scrum
- Kanban
- Yalın (Lean)
- Kristal (Crystal)
- Ekstrem Programlama (XP, Extreme Programming)
- Özellik Odaklı Geliştirme (FDD, Feature-Driven Development)
- Etki Alanı Odaklı Tasarım (DDD, Domain-Driven Design)
- Dinamik Sistem Geliştirme Yöntemi (DSDM, Dynamic Systems Development Method)
- ScrumBan
- Çevik-Şelale/ Agile-Waterfall
- Scrum XP Hibrit
Scrum
Scrum en çok kullanılan agile metodudur. Ekip hedefleri, sprint denilen belli süreli yinelemeler içinde tamamlanacak şekilde ayrılır. Her sprint genellikle bir ile dört hafta arasında sürer. Scrum ekibi
günlük scrum denilen günde 15 dakikayı geçmeyen ayakta yapılan toplantılar ile ilerlemeyi değerlendirir. Sprint sonunda paydaşlara mevcut durumu göstermek ve iç değerlendirme yapmak için iki toplantı daha yapılır. Ekipten sorumlu kişiye scrum ustası adı verilir.
Ne zaman bir web sitesine girsek, ‘’bu site deneyimlerinizi daha da iyileştirmek için çerez (cookies)kullanmaktadır.’’ diye bir uyarı görüyoruz. Peki ...
SEO çalışmalarında her zaman kullanıcı deneyiminin ne kadar önemli olduğunu, web site görüntüsünün ne kadar profesyonel durması gerektiğinden bahseder...
Scrum’daki yazılım geliştirme yaklaşımı, karar alma yetkisini operasyonel düzeyde tutmaktır. Scrum’ da sıralı bir yaklaşım değil, yinelenen ve artımlı bir çerçeve içinde ürün geliştirme yapılır.
Scrumda esneklik ve geri bildirim esastır, ekip üyeleri sık iletişim halindedir ve kendi kendilerini organize ederler. Proje geliştikçe gereksinimler değişebilir, ekip buna uyum sağlar.
Kanban
En çok kullanılan agile metodları içinde ikinci sırada Kanban gelir. Kanban, sürekli iyileştirme prensibine dayalı bir agile yöntemidir. Bu çerçevede, görsel proje yöntemlerinden biri olan Kanban panoları kullanılır. Kanban panosuna görevler kart olarak temsil edilir, çalışma aşamaları da sütunlar şeklinde temsil edilir. Böylece ekip üyeleri gerçek zamanlı olarak görevlerin hangi aşamada olduğunu görebilir.
Agile Metodoloji Hakkında Sıkça Sorulan Sorular
Aşağıda size daha fazla yardımcı olabilmek için agile ne demek, agile metodları, agile metodolojisi nedir, agile çalışma nedir ve agile development nedir gibi konularda sıkça sorulan sorulara yer verdik.
Gösterilecek yorum yok.