İçeriğe geç

Çevik Yazılım Geliştirme (Agile Software Development)

Bu yazımda projelerde Agile Yazılım Geliştirme (Çevik Yazılım Geliştirme) konusuna değineceğim. Malumunuz bu kavram sıkça duyduğumuz bir kavram ama “gerçekte ne olduğu” karmaşası da ayrı bir dert…

Çevik Yazılım Geliştirme bir proje yönetim biçimidir. Proje geliştirirken direkt olarak Agile (Çevik) kullanılmaz, bunun kolları (yani agile frameworkleri) kullanılır. İlerleyen bölümlerde bu kolların neler olduğu üzerinde duruyor olacağız…

Yeni bir kavram olarak düşünülse de Çevik Yazılım Geliştirme 1970’li yılların ilk yarısından itibaren kullanılan bir metodoloji; kuralcı, klasik yazılım geliştirme süreçlerine karşı bir tepki… Bunun başlıca nedenleri arasında da daha önceki yazılım geliştirme süreçlerinin oldukça maliyetli ve süre bakımından efektif olmaması geliyor. 1990 yılına kadar çok yaygın olmasa da bu yıllardan itibaren kullanımı hız kazanmaya başladı.

Çevik Yazılım Geliştirme ile Asıl Hedeflenen Nedir?

Çevik Yazılım Geliştirme ile hedeflenen asıl şey ise süreçleri etkin kullanarak hızlandırmak ve gerektiğinde bunları dokümante etmektir.

Agile Proje Yönetimi dediğimizde bilmemiz gerekenler şunlar olmalıdır:

  • Değişime açık olunması
  • Takım içi iletişimin üst düzeyde olması
  • Hızlı ve sürekli ürün teslimi
  • Test odaklı anlayış
  • Basit ve gerçekçi bir planlama.

Tabi müşteri ile proje ekibi arasındaki esnek ilişki göz ardı edilmemelidir. Tabi tüm bu değerlemeler proje yönetiminin ne kadar önemli olduğunu ve bu yönetimin doğru yapılabilmesi için nelere ihtiyaç olunduğunu vurguluyor. Zira büyük araştırma şirketlerinin 2000’li yılların başlarında dünya genelinde yapmış olduğu araştırmalarda yazılım projelerinin %74’ü ya başarısızlıkla sonuçlanmış ya da maliyet/zaman hedeflerini çokça aşmış.

Manifesto for Agile Software Development (Çevik Yazılım Geliştirme Manifestosu)

Çevik Yazılım Geliştirme proje yönetiminin geçmişinden daha önce bahsetmiştik. Bu süreç içerisinde Agile Geliştirmenin kolları oluşmaya başladı, 1995 yılında SCRUM ortaya çıktı, bununla beraber Adaptive Software Development, Feature Driven Development, ve Dynamic Systems Development Method (DSDM) oluştu. Hemen akabinde ise Crystal Clear, Extreme Programming (XP) (1996) ortaya çıktı. Tipik Agile Metodojileri olan bu yöntemler sonrasında 2001 yılında dünyanın en iyi yazılım geliştiricileri olarak bilinen 17 bağımsız yazılım geliştirici bir araya gelerekÇevik Yazılım Gelişitirme Manifestosu yayınladı. Bununla beraber bu oluşumu desteklemek ve geliştirmek için kar amacı güdülmeyen bir organizasyon kurdular; Agile Alliance

Çevik Yazılım Geliştirme Manifestosu

Agile Manifestosu aslında bu 17 lider yazılımcının “nasıl daha iyi bir yazılım geliştirilir” arayışının ve sonucunun ürünüdür. Bu manifestoya göre;

  • Bireyler ve bu bireyler arasındaki etkileşimin önemi
  • Detaylı ve gereksiz ayrıntılarla dolu bir belgelendirme yerine doğru çalışan bir yazılımın önemi
  • Sözleşmede zorlanan kesin kurallar yerine müşteri ile sürekli iş birliğinin önemi
  • Katı, esnetilemeyecek bir planlama yerine değişikliklere açıklığın önemi vurgulanmıştır

Manifestodaki Bu Kavramlar Ne Anlama Geliyor?

  • Agile’in birinci önceliği müşteriye ürünü hızlı ve sürekli kullanılabilir bir şekilde teslim etmektir. Katı bir kural benimsenmez bu nedenle geliştirmenin her aşamasında değişikliğe açık bir yapısı vardır. Bu nedenle iş teslimi parçalara bölünür, ürün birbirinden bağımsız parçalar olarak geliştirilir, bu geliştirme belirli periyodlarda yapılır, örneğin 2 hafta ile bir aylık periyotlarda.. Bunun için işin aynı süreçlerde ürüne dönüşmesi sağlanmalı ve yine bu anlamda sürdürülebilir geliştirmeye açık olmalıdır.
  • Ekip çok önemlidir, motivasyonu yüksek ekip kurmak gerekir. Zira iyi bir ürün için iyi motive edilmiş, iletişimi kuvvetli ekip elemanlarına ihtiyaç vardır. Proje için bu ortamı yaratmak hayati önem kazanır.
  • Ekibin birbirleri ile olan iletişimini, bilgi aktarımını sağlamak için sık sık ancak kısa süreli toplanmaları sağlanmalıdır.
  • Bir kere Agile’da karmaşaya yer yoktur. Her şey basit ve gerektiği kadar önemlidir. Ekibin kendisini sorgulamasına ortam yaratır, etkin çalışmanın önü açılmalıdır.
  • Tabi bunlara bağlı olarak en önemlisi de ilerlemenin sağlanabilmesi için doğru çalışan yazılımın üretilmesidir. Bunun için teknik alt yapısı güçlü ekip üyelerine ihtiyaç vardır.

Peki bu Agile Metodolojiyi hangi firmalar kullanıyor dersek size bir çırpıda Microsoft, Google, Yahoo, oyun deviElectronic Arts, Philips, Siemens, BBC gibi kuruluşların isimlerini verebilirim…

Avantajları ve Dezavantajları üzerinde durursak;

Avantajları:

  • Bir kere ekip ruhu kazandırır
  • Planlama ve yürütme bir arada olduğu için sürdürülebilir kalite sağlar
  • Ayrıntılı plan süreçleri yerine iteratif planlar (tekrar eden süreçler) uygulanır
  • Müşteri ihtiyaçlarına uygunluk önemlidir, sık sık ürün çıktısı verilir ve müşteriden gelen geri bildirimlerle ihtiyaca uygun, doğru ürün çıkarılır.

Dezavantajları:

  • Kurumsal bir yapıda uygulamak için ciddi anlamda zorlanırsınız
  • Hedefler kısa vadeli olduğu için ekip üzerinde sonuç baskısı oluşabilir
  • Kısa süreli ürün teslimi sonucunda gelen geri bildirimlerle çalışma sürelerinin artması muhtemeldir
  • Dokümantasyon konusundaki bilinen birçok şeyin, tabiri caizse, “gereksiz” kılınması durumu vardır.
  • Peki hangi projelerde Agile, hangi projelerde geleneksek yöntemler kullanılmalıdır sorusuna nasıl yanıt veririz?

Demiştik ki işi parçalara ayır ve her parçayı bir ürüne çevir. Bu durumda müşteri ile iletişim rahat kurabiliyorsak, belirsizlik çoksa ve işi birden çok bağımsız ürün parçalarına bölebiliyorsak Agile kullanmalıyız. Bunların harici bir durum söz konusuysa geleneksel yöntemleri kullanmalıyız.. Sonuçta her projeye uygun olmayabilir

Özetlemek gerekirse, Çevik Yazılım ürünü ” uzun vadeli” bir planlama olarak değil kısa vadeli planlar ve parçacıklar olarak ele alır. Hız çok önemlidir, değişikliklere uyum sağlanıyor olmalıdır. Bu anlamda müşteriden yapılan geri dönüşler (feedback) son derece önemlidir. Birinci amaç doküman üretmek değil, dokümana harcanacak zamanın yazılımın verimli üretimi için harcanmasını sağlamak olmalıdır. Ancak bu demek değildir ki dokümantasyon hiç gerekli değildir, iş gerekli durumlarda gerektiği kadar dokümante edilmelidir.

 

Tarih:Proje Yönetimi

Kimler Neler Demiş?

avatar
  Subscribe  
Bildir