Tuesday 8 September 2009

Agile ve Klasik Metodolojiler

Bütün projeler tek amaç doğrultusunda geliştirilirler. Bu yegane hedef bütün gereksinimleri karşılayabilen, kaliteli, belirlenen bütçe ve zaman gibi kısıtlara uygun yazılım ürününü müşteriye teslim edebilmektir. Oysa http://www.standishgroup.com sitesinde yapılan bir araştırmaya göre projelerin %31 tamamlanmadan sonlandırılıyor. %53’ü ilk tahminlemeden %189 u daha maliyetli. Tamamlanamayan projeler için 81 milyar dolar gidiyor. Yazılım projelerinin %16’sı zamanında ve bütçesinde tamamlanıyor. Bu amaçlar doğrultusunda yazılımcılar çeşitli yöntemler uygulayarak projenin verimliliğini artırma eğilimine girmişlerdir.

Halihazırda çoğu firma tarafından kullanılan şelale(waterfall) gibi klasik yöntemlerde proje planı ve gereksinim analizi projenin başında detaylı olarak belirlenmeye çalışılır ki buda henüz proje başlamadan uzun süreli bir planlama analiz çalışması gerektirir. Tabi projenin devamında da bu yapılan detaylı analizler kapsamında devam edilmeye çalışılır. Herşey proje başından belirlendiği düşüncesinden dolayı proje devam ederken olabilecek değişiklikler kontrol altında tutulmaya, mümkünse önüne geçilmeye çalışılır. Bu sebeplerden dolayı bu eski klasik yöntem değişiklik ihtimalinin olmadığı projelerde ancak verimli olabilir.

Klasik metodlarda başta yapılan detaylı analiz sürecinden sonra yazılım yaparken yapılan değişiklikler büyük maliyetler oluşturur. Çevik yazılım geliştirmede ise, süreçlerin katı kurallarla yönetilmesi yerine amaca yönelik verimli ve etkin pratiklerin yapılmasını esas alır, yani hem yazılım geliştirenlerin hem de müşterilerin ana hedeflerini karşılar. Değişimin maliyeti olabildiğince düşüren pratikler içerir.

Çevik süreçler iterative yazılım geliştirme metodunu esas almışlardır. Buna göre parçalara ayrılan yazılım sık aralıklarla teslim edilir. Agile parça olarak yazılım telimatını,değişimi, takım içindeki iletişimin artırılmasını, test odaklı yazılım yazılım geliştirmeyi teşvik eder. Farklı ihtiyaçlara göre formüle edilmiş XP, Scrum, Feature Driven Development, DSDM , Lean, Crystal methodoloji gibi süreçler mevcuttur.

No comments: