09 Ekim 2016 6979 0 AGILE GELİŞTİRME Hakan Aksungar
Agile yazılım geliştirme, müşteri ile geliştirme takımı arasındaki süreçlere, Kullanıcı Hikayesi'nden başlayarak ürün parçasının geliştirmesi ve ürünün ortaya çıkmasına kadar olan geliştirme süreçleriyle ilgilenir, ancak geliştirme sonrasındaki operasyonel süreçlerle ilgilenmez. Ürün, tekrar eden küçük zaman periyotlarında kücük parçalar halinde geliştirme takımı tarafından geliştirilmeye devam eder. Müşteri her periyodun sonunda geliştirilen ürün parçasını kullanarak, ya onaylar veya da red eder. Taaki, müşteri çıkan ürün ya da hizmetten tüm beklenti ve talepleri tamamlanana kadar bu iterasyonlar tekrar tekrar devam eder.
- Müşteri gereksinimleri tamamiyle müşteri tarafından, iş değeri tanımlı öncelik sırasına göre geliştirme takımına anlatılır
- Geliştirme takımı, belirlenmiş süre içinde geliştirebileceği kadar büyüklükteki ürün parçasını analiz eder ve tahminler. Tüm takım üyeleri birlikte bu sürenin sonunda çıkartağı ürün parçası için müşteri temsilcisine taahhüt eder.
- Çevik yöntemler veya süreçler, geliştirme takımının kendi kararlarını kendileri verecek şekilde yetkilendirilmiş olmalarını gerektirir.
- Sık sık denetim ve uyarlamayı teşvik eden disiplinli bir Takım çalışmasını, kendi kendini organize etmeyi ve hesap vermeyi teşvik eden bir felsefesi vardır.
- Yüksek kaliteli yazılımların hızlı bir şekilde sunulmasına izin vermek için tasarlanmış bir dizi mühendislik ve en iyi uygulamaları teşvik eder.
- Agile Yaklaşımda, Müşteri ihtiyaçlarının karşılanması ve proje hedeflerine ulaşmak en önemli sonuçtur.
- Çevik Geliştirme, Agile Manifesto ve Agile Principles geliştirme sürecini de ifade eder.
Yazılım geliştirme projeleri, geçmişte yazılım hayat döngüsü boyunca müşteri taleplerinin anlaşılamaması nedeniyle, hatalı öncelikler, değişimi yönetememe, kaynakların etkin kullanılamaması sorunları nedeniyle, mevcut ortamlarda başarısızlıklarla karşı karşıya kalmışlardır.
Standish Group’ un 2009 yılında yayınladığı rapora göre yazılım projeleri dünya genelinde %68 başarısızlıkla sonuçlandığını ortaya koymaktadır.
Yazılım projelerinde başarısızlığın nedenleri;
- Ortam ve gereksinimler tam olarak tanımlanmamıştır.
- İhtiyaç ve isterler zaman içinde değişir ve pazar koşulları sürekli gelişir.
- En iyi yöntemin ne olduğuna kesin karar verilememiştir.
- Mevcut yapılar ve kompleksler.
Başarısızlıkları ortadan kaldırmanın yolu olarak,
- İsterler hakkında mümkün olduğunca erken ve en sık şekilde geri bildirim alınması çalışan bileşenlerin üretilmesi ve gösterilmesi,
- Katılımcıların geri bildirim vermelerini teşvik etmeyi kolaylaştırmak
- İş gereği, bilgiye ihtiyaç duyan katılımcıların isteklerine öncelikli ulaşmalarını sağlayacak en etkili yöntem iletişimi sağlamak gereklidir,
- Yazılım Geliştiricilerin motivasyonu en üst seviyede tutmak, üretkenliği arttıran bir yöntemdir.
2001 yılında dünyanın en iyi yazılım geliştiricileri olarak bilinen 18 bağımsız yazılım geliştirici bir araya gelerek Agile Manifesto (Çevik Yazılım Geliştirme Manifestosu) yayınladılar.
Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Steve Mellor, Ken Schwaber, Jeff Sutherland, Dave Thomas
Agile Manifesto, 18 lider yazılımcının “nasıl daha iyi bir yazılım geliştirilir” arayışının ürünüdür.
Manifesto;
- Detaylı kapsam yerine, bireyler ve bireyler arasındaki etkileşim,
- Detaylı bir belgelendirme yerine, çalışan bir yazılım,
- Sözleşmeler yerine, müşteri ile sürekli iş birliğini,
- Planlama yerine, değişikliklere açık olmak,
Agile İlkeleri ile manifesto da belirtilen kavramlara biraz daha açıklık getirelim.
- En önemli öncelik, yazılımın erken ve devamlı teslimatı ile müşterileri memnun etmektir.
- Çalışan yazılım, ilerlemenin birincil ölçüsüdür.
- Çalışan yazılım, kısa zaman aralıkları belirlenerek birkaç haftada ya da birkaç ayda bir düzenli olarak müşteriye sunulmalıdır.
- Projelerin temelinde motive olmuş bireyler yer almalıdır. Onlara ihtiyaçları olan ortam ve destek sağlanmalı, işi başaracakları konusunda güven duyulmalıdır.
- Bir yazılım takımında bilgi alışverişinin en verimli ve etkin yöntemi yüz yüze iletişimdir.
- İş süreçlerinin sahipleri ve yazılımcılar proje hayat döngüsü boyunca her gün birlikte çalışmalıdırlar.
- Çevik süreçler sürdürülebilir geliştirmeyi teşvik eder. Sponsorlar, yazılımcılar ve kullanıcılar sabit tempoyu sürekli devam ettirmelidir.
- Değişen gereksinimler, yazılım sürecinin son aşamalarında bile kabul edilmelidir. Çevik süreçler, değişimi müşterinin rekabet avantajı için kullanır.
- Sadelik, yapılmasına gerek olmayan işlerin mümkün olduğunca azaltılması, olmazsa olmazlardandır.
- Teknik mükemmeliyet ve iyi tasarım konusunda sürekli özen, çevikliği artırır.
- En iyi mimariler, gereksinimler ve tasarımlar kendi kendini örgütleyen takımlardan ortaya çıkar.
- Takım, düzenli aralıklarla nasıl daha etkili ve verimli olabileceğinin üzerinde düşünür ve davranışlarını buna göre ayarlar ve düzenler.
Agile (Çevik) Geliştirme Yaklaşımları uygulandığında ARTAN;
- Üretkenlik
- Ürün Kalitesi
- Müşteri memnuniyeti
- Çalışan motivasyonu
- Ve AZALAN Maliyetler
Agile (Çevik) yöntemler, dünya üzerinde kabul edilen yazılım geliştirme yöntemleri arasında yaygın olarak kullanılmaktadır. Ülkemizde de Agile (Çevik Yaklaşımlara) özellikle Bilgi Teknolojileri alanında, yazılım alanında faaliyet gösteren küçük özellikle start-up firmalar da ve vizyoner bankalar yavaş yavaş ancak emin adımlarla Agile yaklaşımları kullanmaya başladı. Agile kullanan şirketler sonuçları gördükçe; memnuniyet oluştukça çok kurumlar da hızlı biçimde çevik dönüşüm başladı.
2017 yılında ivme daha da artacak gibi..