eXtreme Programming ve Bir Başarı Öyküsü

0
FZ
Bill Clementson son blog girdilerinden birinde birkaç gün önce gerçekleştirdikleri etkinlikte sunum yapan ve bir başarı öyküsü aktaran Ken Dickey'e yer vermiş.

Avustralya kökenli başarılı bir start-up olan Memetrics'in öyküsünü çarpıcı bir dille anlatan Dickey, eXtreme Programming metodolojisi ve Common Lisp'ten faydalanarak geliştirdikleri sistemi anlatan güzel bir sunum hazırlamış.

Keskin rekabetten ve gizli silahların gücünden hoşlananlar için incelenesi bir örnek. Afiyet olsun.

Görüşler

0
neurorebel
Hımm... XP... Amatör Delphi ve VB programcılarının proje geliştirme mantalitesinin "cool" bir isim verilmiş hali... Yazıda bahsi geçen geliştirme adımları standart bir sistem analizinin iterasyonları zaten. Eğer işin başında doğru dürüst analiz yapılırsa çok daha sağlam ve esnek ürünler ortaya çıkar. Ayrıca başarıyı neye göre ölçüyoruz ? Eğer amaç, hayatında konsol bile kullanmamış bir kaç adamı kaşıkla yavaş yavaş mama vererek memnun etmekse; evet XP iyi bir tekniktir. Ama XP modern yazılım geliştirme anlayışıyla kesinlikle uyuşmaz. Yazılım *katmanlardan* oluşur. Bu nedenle ürünün kalitesi işin başında modellemeye ayrılan vakitle doğru orantılıdır. Ortalıkta nerede n'aptığı belli olmayan ve 10larca megabytelık paket boyutlarına ulaşan pek çok başarılı(!) yazılım var. Bunlar ölçüt değil... Olmamalı...
0
anonim
Keşke bu satırları yazmadan önce XP hakkında biraz daha okusaydınız. XP de katmanlar vardır, hatta XP de dizayn da vardır. AMA XP her bir ayrıntıyı en ince şekilde planlamaya karşıdır. XP için kabaca şöyle bir algoritma uygulanabilir.

1 İhtiyaç analizini yap, gereksinimleri belirle
2 İskelet tasarımı oluştur.
3 Testleri yaz
4 Çalıştırılabilir kodu yaz
5 Test et
6 Kodu değiştir
7 Dokümantasyonu değiştir
8 Müşteriye göster ve değişen ihtiyaçlara göre 3 adıma geri git.

Daha fazlası için aşağıdaki adreslere gözatılabilir.

http://www.fazlamesai.net/index.php?a=article&sid=1300
http://www.bilgidata.com/localhost/bilgidata/yazi_liste.jsp@kategori=Proje.html
http://www.godoro.com/Divisions/Ehil/Mecmua/Magazines/Columns/txt/html/article_XP.html
http://www.martinfowler.com/
0
mdakin
XP, üzerinde çok tartışılan ve bence de eksikleri olan bir metodoloji olsa da "Amatör Delphi - VB programcılarının mentalitesi" diye aşağılanamayacak kadar iyidir. Etrafımızdaki bir kaç kişi XP yapıyorum diye işleri ellerine yüzlerine bulaştırdıysa bu metodolojinin suçu değil. Örnek verecek olursak amatör (hatta kendisini profesyonel sanan) delphi ve VB programcıları:
  • Tasarım yapmaz, XP tasarıma önem verir
  • Asla test yapmaz, Otomatize edilmiş testler XP nin belkemiğidir, olmazsa olmaz
  • iteratif geliştirme yapmaz, blok halinde bir çamur yığını oluşturur, XP en baştan itibaren çalışabilen bir yazılımın adım adım planlı şekilde sürekli testlerle kontrol edilerek ilerlemesini sağlar. Otomatize edilmiş build ortamları ve sürekli testlerin işletilip regresyonların belirlenmesi de XP nin önerisidir

Bunlardan başka, sürekli refactoring gibi şeylerin amatör VB programcılar için hiç bir şey ifade etmediği de aşikar. XP bu kuralalrı kendisi uydurmadı, hemen hepsi zaten yıllardır iyi programala ve geliştirme teknikleri olarak zaten biliniyordu. Dediğinizin tam aksine, XP modern yazılım geliştirme anlayışının bir parçasıdır, kullanılabileceği yerler de çoktur. Siz istediğiniz kadar "katmanlı" yazılımınızın başında uzuun bir süre modellemeye zaman ayırın, eğer müşteriniz fırıldak gibi karar değiştiriyorsa, takımınızın tamamı guru seviyesinde adamlardan oluşmuyorsa o yazılımı bitene kadar en az on kere baştan modellersiniz. Hızlı değişime adapte olan modellerin, ki XP olmak zorunda değil, başka çevik yöntemler de var, gayet başarılı olduğu örnekler var. XP için benim de eleştirebileceğim şeyler var, ama bu şekilde körü körüne kötülemek doğru değil.
0
neurorebel
Evet biraz körü körüne kötüledim. Kusura bakmayın :) Sadece bu aralar bu konuda biraz hassas ve sinirliyim... XP'nin daha iyi bir seçim olabileceği projeler mutlaka olabilir. Ama sinir bozucu olan, kimi insanların VB'yle, Delphi'yle veya benzer komponent tabanlı herhangi bir geliştirme sistemiyle yaptığı yanlışları doğruymuş gibi göstermek namına "Bunun adı XP !" diye bağırması.
0
bm
Aslinda anliyorum ben ruh halinizi. Ben de pek memnun degilim zaten bildigimiz bazi seylerin paketlenip sonra bilip anlayamayacak insanlarin agzina sakIz olmasindan. Hmm iyi bu calisti ama biraz temizleyip duzenlemek istiyorum yerine simdi refactor etmem lazim denmesinin merifet olmasi benim de hosuma gitmiyor. Yalniz bu bahsedilen insanlar tam oyle degil. Buyuk bir _yenilik_ iddialari yok bence, yalniz XP demekten, o terminolijiyi kullanmakan filan cekinmiyorlar, presniplerinin bir butun olarak faydali olduguna inanmislar. Bir ara bu Memetrics, sirf ortamin hoslugu yuzunden pek de para vermeden ABD'den AU'ya genc lispci getirtip calistirirdi. (pair programming ya, hizli uyum, hizli verim vs. vs.).
0
FZ
Valla Delphi'cileri ve VB'cileri bilmem de görülen o ki berbat bir sözdizimi olan Common Lisp dilini kullananlar da bu proje için eXtreme Programming kullanmışlar. Söz konusu adamların hayatlarında konsol kullanmamış adamlar olmadıklarına bahse girerim (hayatında konsol kullanmış olmak her ne demekse ve konumuzla ne ilgisi varsa). Memetrics'in başarısına gelince herhalde rekabet ettiği ortamlara bakarak bir karar verilebilir.

Ben neyle neyi kıyasladığınızı anlamadığım gibi yazıda linkleri verilen belgeleri, sunumları okuduktan sonra mı böyle bir kanıya vardınız onu da anlamadım.
0
neurorebel
Hayatında konsol kullanmamış demekle yazılım işi hakkında hiç bir fikri olmayan kişileri kastetmiştim...
0
tongucyumruk
Bir süredir aklımda olan birşeydi, tam yazmak için fırsat oldu bana da...

Lisp ortamlarındaki yazılım geliştirme metodolojisinin XP'deki birim testi kavramını farklı bir boyuta taşıyabileceğini düşünüyorum. Şu ana kadar özellikle Practical Common Lisp gibi kaynaklarda gördüğüm kodlar genelde Lisp ile yazılan kodların diğer dillerde belki "aşırı" diye nitelenebilecek ölçüde parçalanmış olduğu. Burada parçalanmadan kastım tabiiki köt birşey değil. Sadece gördüğüm kadarıyla genelde Lisp'te kod yazma tarzı problemi mümkün olabilecek en küçük fonksiyonlara bölüp sonra da bu fonksiyonları bir araya getirerek çözümü oluşturmak yönünde. Bunun tipik bir örneği bahsi geçen kitapta gördüğüm spam filtresi [1].

Bu yönüyle Lisp'in XP tarzı yazılım geliştirmeye fazlasıyla uygun bir dil olduğunu düşünüyorum. Zira yazılımın tamamı genelde çok fazla parametresi olmayan (çoğunlukla tek parametreli) fonksiyonlardan oluştuğunda bu otomatik olarak refactoring'i kolay hale getirdiği gibi yazılımın kendisinin de bir tür birim test gibi çalışmasını sağlıyor ve gerekirse yazılacak ekstra birim testler için uygun bir platform oluşturuyor [2].

[1] http://www.gigamonkeys.com/book/practical-a-spam-filter.html
[2] http://www.gigamonkeys.com/book/practical-building-a-unit-test-framework.html
Görüş belirtmek için giriş yapın...

İlgili Yazılar

Avrupa Common Lisp Buluşması: Sunumlar ve Videolar

FZ

Bu sene 24 Nisan tarihinde, Amsterdam'da, 19 ülkeden 80'i aşkın katılımcıyla gerçekleşen ECLM2005 (European Common Lisp Meeting) pek çok ilginç sunuma ve konuşmaya ev sahipliği yaptı.

Daha önce burada sık sık adı geçen Practical Common Lisp kitabının yazarı Seibel'in "Lispçi olmayanlara Lisp'i nasıl anlatırsınız" başlıklı eğlenceli konuşmasından tutun António Menezes Leitão'nun "Lispçiler için Java" sunumuna dek pek çok videoya Weitz'in sitesinden veya İstanbul Bilgi Üniversitesi Bilgisayar Bilimleri bölümü yansısından erişmeniz mümkün.

GNU CLISP 2.34 sürümü çıktı

FZ

ANSI Common Lisp yüksek seviyeli, genel amaçlı bir programlama dilidir. GNU CLISP, Karlsruhe Üniversitesi'nden Bruno Haible ve Münih Üniversitesi'nden Michael Stoll'un ürünüdür. CLISP, ANSI Common Lisp standardında tanımlanmış Lisp dilinin büyük kısmını desteklemektedir. Hemen her türlü UNIX platformunda (Linux, FreeBSD, NetBSD, OpenBSD, Solaris, Tru64, HP-UX, BeOS, NeXTstep, IRIX, AIX ve diğerleri) ve diğer sistemlerde (Windows NT/2000/XP, Windows 95/98/ME) çalışmakta ve bunun için sadece 4 MB RAM bellek yeterli olmaktadır.

Barack Obama'yı Semantik Web Üzerinden Lisp ile Sorgulamak

FZ

Öyle bir veri tabanı düşünün ki şu sorunuza doğru cevaplar veriyor: "Barack Obama nerede doğmuştu? (Nerede dünyaya gelmişti diye de yazabilirsiniz) Doğduğu yere 15 km uzaklıktaki şehirler ve kasabalar hangileri idi? 2000 yılında bu yerleşim yerlerindeki ortalama fakirlik seviyesi ne idi?"

Bunu tek bir ilişkisel veri tabanı ile kolayca yapabilir misiniz? Yahut daha doğru soru: Neden tek bir veri tabanı olsun ve bu neden ilişkisel olsun? Buyrun semantik web ve RDF kullanın. Nasıl mı?

Diyelim Ki Elimizde Nesneye Yönelimli Bir Dil Yok - Alice Nesneler Diyarında

FZ

Elinizdeki programlama dilinde nesneye yönelimli (OO - Object Oriented) programlama imkanı olmasa idi ne yapardınız? İki seçenekten biri gelirdi aklınıza herhalde:
  1. OO desteği veren bir dil kullanmaya başlamak.
  2. Elinizdeki dile OO desteği katmak için uğraşmak.
Bu kısa yazıda Peter Norvig'in PAIP (Paradigms of Artificial Intelligence Programming Case Studies in Common Lisp) kitabının 13. bölümündeki birkaç kısa örnekten yola çıkarak "eğer Common Lisp dilinde CLOS (Common Lisp Object System) gibi bir şey olmasaydı bunu nasıl gerçekleştirebilirdik?" sorusunun cevabının ilk bölümüne göz atacağız.

Fonksiyonel Geometri, Lisp, Escher, Postscript: Sanat ve Bilgisayarlar

FZ

Daha önce FM'de bir Mars programlama projesi yarışması bağlamında adı geçen Frank Buss bu sefer de gündemimizi Peter Henderson'ın makalelerinden uyarladığı ve Common Lisp kullanarak gerçekleştirdiği bir fonksiyonel geometri uygulaması ile meşgul ediyor. Fonksiyonel programlamanın grafik uygulamalarını kullanarak anlaşılması bakımından çarpıcı bir örnek. Program çıktısını Postscript olarak üretiyor.

Söz konusu grafik yapılar pek çok matematikçinin ve diğer bilim insanlarının da hayranlığını kazanan Hollandalı meşhur sanatçı M. C. Escher'in yapıtlarından esinlenerek hazırlanmış.