Sunday, October 22, 2000

Extreme Programming Nedir?

Programcılık yaptığınız projelerde, sayfalarca dizayn dökümanı yazmanız isteniyor mu? Ne kadar önceden düşünüp taşınsanız da, sonradan elde ettiğiniz dizayn kağıttakinden değisik olmuyor mu? Hiç zamanı ve özellik listesi 'dondurulan' (fixed time/fix bid) türü projelerde çalıştınız mı? Böyle projelerin %50'sinin başsarısızlıkla bittiğini biliyor musunuz? Böyle bir projeden geçtiniz mi? Bütün saçlarınız halâ yerinde mi?

Evet, yeteri kadar soru sorduk herhalde. Yukarıdaki problemleri yaşayan Amerika'da bir grup programcı, proje idaresi işini beceremeyen yöneticilere, ve o 'grafik metod hastası' kardeş programcılara şamarı vurdu. Metod hastası arkadaşları bilirsiniz, hani kütüphanelere sığacak döküman yazmadan program yazmayanlardan bahsediyorum.

Kent Beck isimli bir Smalltalk programcısı, uzun zamandan beri işleyen programcılık, dizayn, proje idaresi tekniklerini bir araya koydu, ve Extreme Programming akımını yarattı. Bu tekniğin söyledikleri şunlar:


* Projelerin özellik listesi nasıl olsa proje sırasında değişecektir. Bu listeyi 'dondurmak' boşa zaman harcamaktır. Müşteri, danışmana aylık miktarda öder, ama her 3 haftada bir işleyen bir program gorebilir
* Test yazılımı, test 'edilen' parçalardan önce yazılır, ve mümkün olduğunca herşey test edilir. Bu testler üst, üste işletilebilen türden olmalıdır.
* Programcılar yanlız çalışmaz, bütün kod ikişerli takımlar tarafından yazılır.
* Sistem mimarisi icin HIC zaman ayrılmaz. Yazılım mimari yapısı önceden tek başına yazılmaz. Bütün işbülümü, müşteriye anlamlı özellikler üzerinden yapılır, mimari, 'yavaş yavaş' özellikler eklenirken arka planda inşa edilir.
* Dökümantasyon yazılmaz. Binlerce kilometrelik, program yazmaya hiç yararı olmayan bu kağıt parçaları için zaman harcanmaz.
* Müşteri her zaman programcılar ile aynı yerde durur, soru sormak için sürekli mevcut bulunmalıdır.
* Programcılar iş dünyasını ilgilendiren kararlar alamazlar, müşteriler teknik kararlar alamazlar. Hangi özelligin önce, hangisinin sonra geleceği iş dünyasını ilgilendirir. Özelliklerin ne kadar sürede kodlanacağı, nasıl kodlanacağı programcılara kalmıştır.
* Özellikler, teker teker orta boy kartların üzerine yazılır, fakat bu kartlar atılabilir, yerine yenisi yazılabilir. Müşteri istediği zaman yeni bir kart ekleyip çıkartabilir. Tek kurala uymak kaydıyla: 3 haftalık dilimlerde yazılacak kart sayısı, takımın iş hacmi ötesinde olamaz. İş hacmini başka yazılarda işleyeceğim.

Daha yazımıza sığmayan çok önemli özellikler var. Fakat üstte belirtilen bütün dersler, şimdiye kadar izlenen dizayn stillerinin karşıtıdır. Eski stiller, kendilerini inşaat mühendisliğine benzetmek için uğraştılar, fakat öteki mühendislik alanları, yazılıma göre çok farklıdırlar. Uzun bir dizayn zaman dilimine gerek yoktur yazılım dünyasında, aslında kod yazmanın kendisi bir dizayn işlemidir.

No comments: