Extreme Programming & PHP

0
SHiBuMi
Extreme Programming, bir anlamda geleneksel yazılım geliştirme metodolojilerine tepki olarak ortaya çıkmış, kodlamayı ön planda tutan, planların her zaman değişikliğe uğramaya mahkum oldukları tecrübesinden yola çıkarak, kodlama ile planlamayı sistem bütünlüğünü tehlikeye atmadan bir arada yürütmeyi hedefleyen bir yazılım geliştirme metodudur. İlk başlarda Smalltalk ile geliştirilen projelerde uygulanmaya başlanmış ve başarı kazanmış bu sistem, bütün programlama dilleri ile uygulanabilir, özellikle günümüzde daha hızlı kod yazımına imkan sağlayan scripting dilleri ile güzel sonuçlar elde edilebilir.
XP'nin temel mantığı, sistemi kullanılabilir en temel seviyede tasarlamak ve işlerlik kazandırmaktır. Bu seviyeye ulaşılıp ulaşılmadığını da, "test unit" adı verilen ve test amaçlı yazdığımız ufak kod parçacıklarını çalıştırarak anlıyoruz. PHP'yi ele alırsak, bu test için oraya buraya yazdığımız echo, print_r komutlarıyla aynı işlevi gören, ancak belli bir sistematiği olan kodların kullanılması anlamına geliyor. Bu sistemin nasıl kurulduğu konusuna girmeyeceğim, onun yerine size bu linki vereceğim. Bu adresten PEAR'daki konu ile ilgili tutorial'in bağlantısına da ulaşabilirsiniz.

Sistemi biraz inceledikten sonra neden echo ile kolayca deneme fırsatı varken bu işlerle uğraşayım diyebilirsiniz. Bunun birkaç cevabı var.

Öncelikle çalışmanıza bir disiplin kazandırmış oluyorsunuz. Sistemin nasıl çalışması gerektiğini yazdığınız birim-testlerle belirliyor, aldığınız sonuçlara göre uygulamanın istediğiniz gibi çalışıp çalışmadığının yüzdesel ölçümünü yapabiliyorsunuz.

Bir grup olarak çalıştığınızı düşünürsek, ki XP kendi içinde pair programming olarak adlandırılan ve grup çalışmasını bir adım öteye taşıyan bir düzeneğe sahiptir, takım arkadaşlarınız sizin ürettiğiniz kodlar için birim-testler yazabilecek ve kodunuzu onlar da test edebilecek imkana sahip olacaklardır.

Çalışmanız büyüdükçe, kodunuzdaki echo'lar, print'ler sorun yaratmaya, kontrolden çıkmaya başlar. Birim-testlerle, çalışmanızı kontrol altında tutarsınız, belirlediğiniz adımlar dahilinde, %100'e ulaşmadan diğer bir adıma geçmez, kodunuzun içindeki echo'ları temizlemekle uğraşmazsınız.

XP ile ilgili unutmamanız gereken, sizin kodunuzun ve tasarımınızın kalitesini değil, genel düzenin işleyiş kalitesini arttırmayı hedefliyor olduğudur. Yolun yarısında tıkanıp kalmamak için bir yazılım metoduna ihtiyacınız olabilir ve XP size ağır metodların altında sayfalarca doküman hazırlayıp bunların altında ezilmeden, kodlamayı el üstünde tuttuğunuz bir disiplin sunar.

Sistemin nasıl işlediğine detaylı olarak girmiyorum, uygulamadaki detaylar konusunda tecrübem yok kimseyi yanlış yönlendirmek istemem. XP üzerine verdiğim linklerde uygulama aşamasında işinize yarayacak örnekler ve bilgiler bulabilirsiniz, phpbuilder.com'daki yazının amacı da bu zaten. Bunların haricinde XP'nin diğer önemli bacaklarından biri olan Refactoring konusunda da bu adresi ziyaret edip bilgi toplayabilirsiniz.
PHP

Görüşler

0
FZ
Valla sağda solda bir ton link, kitap, makale vs. var XP yöntemi ve pair programming ile ama yani henüz ciddi ciddi yakın çevremden XP yöntemini uygulayıp da şunu bunu yaptım diyen biri çıkmadı. Bana öyle geliyor ki programlama metodolojilerini hakkı ile kavrayıp uygulamak programlamanın kendisinden zor. Teknik meselenin ötesinde sosyolojik zorluklar söz konusu sanki yani bu da bir adama bir programlama dilini öğretmek çok daha farklı ve zor bir şey gibi görünüyor.

Buraya bilgidata sitesinden yazan arkadaşlar da yanılmıyorsam XP ile ilgili bir şeyler demişlerdi ama tam hatırlamıyorum ve yine hayal meyal hatırladığım kadarı ile bu UNIT TESTING konusu Java programcıları arasında epey kullanılan bir şey.

Neyse, biri somut ve detaylı ve Türkçe bir şeyler yazsa da okusak diyorum ;-)
0
SHiBuMi
XP'ye uyum sağlamak kolay değil, düşünsene bilgisayarın başındayken biri tepene gelip izlediğinde bile rahatsız olurken, XP iki insanı yanyana oturup birine al sana klavye kod yazacaksın, öbürüne de onun yazdıklarını izleyip yorumlayacaksın, tıkandığı yerde klavyeyi sen alıp devam edeceksin diyor. Bu dediğin gibi teknikten öte bir sosyal olgunluk gerektiriyor.

Unit Testing konusunu, PHP ile ilgili örneği görene kadar tam olarak anlamamıştım, beni bu haberi yazmaya iten de biraz XP'nin PHP'ye kadar indiğini görmek oldu. Yazdığın kodun stabilitesini yüzdesel olarak ölçebilmek çok ciddi bir artı ve Unit Testing bunu vaad ediyor.

XP'nin kullanımı yurtdışındaki projelerde giderek artıyor. Online CV'lerde XP ile şu kadar yıllık tecrübem var gibi satırlar çoğalıyor. Ama asıl XP ile ilgilenme sebebi, bunun Türkiye'deki yazılım geliştirme şartlarında verimli olma ihtimalinin yüksek olması olmalı. Developer sayısının az, müşterilerin sabırsız ve haddinden fazla cimri (malum kriz) oldukları piyasa şartlarında, kısıtlı bir ekiple, daha kaliteli yazılımı daha kısa sürede deliver edebilecek bir metodoloji kesinlikle ilgiyi hakkediyor.

Daha somut ve detaylı dokümanı ancak XP'yi aktif olarak kullanan birileri yaratabilir derim, belki çeviri yapmak daha mantıklı olur ;)
0
FZ
Valla zaman zaman Dr.Dobb´s Journal dergisinde de bu XP muhabbetleri epey geçiyor.

Bana enteresan gelen, misal `pair programming´ ile tarif edilen şeyi sık sık içinde bulunduğum ekipte de uyguluyoruz ama adını bu şekilde koymuyoruz :) Bir gün bir arkadaşımla bilgisayarın başında harala gürele tartışa tartışa kod yazarken ben durdum ve dedim ki: Aaaa, bu bizim yaptığımız XP yöntemindeki pair programming olayına benziyor! Arkadaşım bana garip garip baktı, `hmm, öyle mi, e güzel, her neyse biz devam edelim´ dedi ;-)

Yani belli bir sistematik ile de olmasa da önerilen yöntemlerin bir kısmı bir şekilde zaten insanın karşısına çıkıyor ister istemez çünkü koşullar oraya yönlendiriyor.

Hazir XP konusu açılmışken ben şeyi de merak ettim ciddi ciddi UML kullanarak ne bileyim Rational araçlarını kullanarak ciddi ciddi program yazan kaç şirket vardır ve zamanında teslim edebilen ve sorunsuz çalıştırabilen, evet bunu merak ediyorum ben :) Programlama metodolojileri gözüme çok güzel görünüyor ama bana geliyor ki bir sürü kurum bunları güzel bulup gene babadan kalma yöntemlerle iş yapıyor.

Belki de saçmalıyorum. Bilmiyorum artık. Bir bilen söylesin :)
0
conan
> ... ciddi ciddi UML kullanarak ne bileyim Rational araçlarını kullanarak ciddi ciddi program yazan kaç şirket vardır ...

Ben okurken bir cok sirketin ozellikle orduya yapilan projelerde uml, smalltalk gibi dilleri kullandiklarini gordum. (ok uml dil sayilmayabilir) Hatta smalltalk ile yazilmis kendi kendine ilerleyen bir tank yaziliminin da frameworkunu incelemistim :) hatta bu konuda komik bir hikayem de var ama usendim :) Yani amerikada oldukca var boyle projeler. hem de orduda oldukca yaygin :)
0
FZ
Rational gibi bir şirketin kurulabildiği ve para da kazanabildiği ABD´de, orduda falan o tip şeylerin kullanıldığından şüphem yok. Zaten sen de bizzat görmüşsün.

Benim merak ettiğim canım memleketimde Unified Modelling Language programlama metodolojisini kullanan ne bileyim Rational´ınkine benzer araçlar kullanan yazılım evleri, yazılım geliştiricileri falandı. Yani UML yöntemi olmaz da Extreme Programming olur, vs.

Birkaç sene öncesinde yüzbinlerce dolar değer biçilen ERP yazılımlarının veritabanı yapılarının (yüzlerce tablo, tonlarca prosedür ve trigger, vs.) diyagramlarının bulunmadığı, dokümantasyonunun çıkarılmadığı, o soyut yapının sadece birkaç kişinin kafasında yer aldığı canım memleketimde şimdiki durum nedir acaba, ben onu merak ediyorum.
0
malkocoglu
UML ile Rational Process (RUP) arasindaki farki belirtmek istiyorum. UML bir dildir, metod degil.

XP ile karsilastirilmasi gereken RUP, ama Martin Fowler'in bircok kere belirttigi gibi, RUP oyle mayhos acaip (fazlasiyla) esnek bir metodki, metodluktan cikip metod altyapisi kategorisine giriyor, zaten oyle pazarliyorlar.

Bize gore, eger bir metod acik secik ogutler vermiyor ve bir sekilde disiplin getirmiyorsa, hic olmasa daha iyi.

Ozet olarak: Insallah Turkiye'de RUP kullanilmiyordur!

(Ama XP kullanan biliyorum.. heh heh..).




0
SHiBuMi
FZ, canım memleketimizde Palm üzerinde Java tabanlı veritabanı geliştiren, bu veritabanı ile saha satış projeleri geliştirip yerli ve yabancı firmalara, hatta yurtdışındaki firmalara pazarlayan yazılım firmaları var, elbet XP kullanan birileri de vardır ;)
0
anonim
Yazilim gelistirme ekibinin basi olarak yazilimci arkadaslari vakitleri oldugunca ikili calistirmaya yonlediriyorum. Kendimde ozellikle yaptigim bir API, mimariyi vs. uzerinden gecerek digerlerine anlatiyorum. Hem olasi buglar ortaya cikiyor, hem de yeni effektif cozumler. Herkese oneririm.

Vakit problemi oldugundan bir proje disinda Unit Testi uygulamayamadim. Gercekten hiz kazandirici ama unit test yanlis yazilmadiysa ;)

Benim gordugum gercek Turkiye'deki ve sanirim bir cok ulkede bir an once proje bitsin, paramizi alalim seklinde olaya yaklasiliyor. Bu nedenle maalesef ortaya cikan yazilimlar saglam, kaliteli ve esnek yapida olmuyor.
0
malkocoglu
XP metodunun yazilim projelerine 2 turlu etkisi var:

1- Proje idaresi hakkinda getirdigi degisiklikler. Danisman sirketlerde calisan arkadaslar, ozellik listesi dondurma denen olayi bilirler. Her ne kadar musteriler (yazilimi isteyen) icin yararli gozukse de, projenin taa basindan dondurulan ve sonradan degistirilemeyen listeler (ve buna baglanan ucret) danisman sirketlerin basina buyuk bela acti.

Martin Fowler ve Kent Beck'in kitaplarindan anladigimiz uzere, ozellikle Kent amcanin bu tur projelerden oldukca agzi yanmis. Yogurdu ufleyerek yemek (!) icin XP'yi yaratmis.

2- XP'nin yazilim surecine getirdigi degisiklikler. Iki kisi beraber kodlar cogunlugun bildigi bir XP yeniligi. Bir o kadar onemli olan, her kodlanan islem icin birim test yazilmasi gerektigi. Bunun sebebi acik: Hani yeni bir ozellik eklediginiz zaman, ayni anda yeni bir bocek eklediginiz olmustur ya; birim testi bir nevi kendi kendini kontrol mekanizmasi oluyor, ve su kadar yazdigim kod, soyle isliyor, eminim, biliyorum dememize yardimci oluyor. Kent'i XP fuarlarinda seyrederken goruyoruz, herif 1 dakika kod yazmayi biraksa, baslamadan once illa bir birim testleri soyle bir isletiyor. Testler gecince oh deyip yeni kod ekliyor. Basari ile isleyen birim testlerin programci uzerinde rahatlatici bir ruhbilimsel etkisi var.

Kod belgelemenin onemsiz gorulmesi, XP'nin diger bir 'ates savasi' baslatan gorusu. Ben bu konuda biraz ortalama gidiyorum, AMA XP'nin nasil bir dusunce turu ile savastigini anlamamiz lazim. XP cikmadan once kolum kadar belgeleme cikarmadan kodlamaya baslamayan danisman sirketleri vardi. Amerika'da boyle projelerde calistim. Sonucu husran oldu.

Bir ayri XP degisikligi, ne kadar mimari yeterli sorusudur. XP diyor ki, mimariyi o an kodladiginiz ozellige yetecek kadar yapin, sonraki ozellik icin degistirebilirsiniz. Bu da buyuk bir degisiklik, cunku mimariyi tamamen bitirmeden ozellik kodlamayan adamlar vardi. Mimari derken, nesne barindirma, yaratma/yoketme ana kodlari, yok efendim nesne/cizelge baglasimi cart curt.. Bunlar icin 5 ay harcayan bir proje gordum! Herneyse, en son degisiklik (2 dedik nerelere geldik) yukarida bahsettigimiz, kod degistirme (refactoring) denen kavram.

Bu kavram muazzam bir olay; kodlama bir yap/boz dongusune donusuyor. Ozellik kodlandiktan sonra, geri donup alttan tasarimi degistirmek, yeniden duzenlemek cok isimize yariyor. Bunu tabii ki bircok programci daha once yapiyordu. Fakat XP bu isleme bir isim veriyor, bazi yontemleri/kaliplarini takdim ediyor. Birkac guzel yeniden duzenleme numarasi var, gayet standart. (Bir i$lemi alt tipten, yukari tipe postalama gibi..).

Kapatirken, XP tavsiyelerinin hepsinin birbirini destekler durumda olan bir butun oldugunu soylemek istiyorum. Soyle:

- Eger birim test yazmamissak, yeniden duzenleme yapamayiz. (en son kodlanan ozelligin tasarim degisikliginden sonra calisip calismadigini nereden bilecegiz?)

- Belgelemeye gerek olmamasinin sebebi, ikili (ve eslerin degistirildigi) bir kodlama ortamidir. Sozlu bilgi degis tokusu, yazili bilgi degis tokusundan KAT KAT hizlidir.

- Eger yeniden duzenleme yoksa, her ozellik icin mimariyi nasil azar azar degistiririz? Degistiremeyiz tabii ki. O yuzden yeniden duzenleme XP icin soludugu bir hava gibidir. Birim testlerde oyle.

Cok uzadi.. :) Bu konuyu baslatan arkadasa tesekkur ediyorum. Eger, bu konu hakkinda daha fazla bilgi istiyorsaniz, bilgidata sitesinde daha detaya girebiliriz. Su anda Martin Fowler ve Kent Beck yazilarindan bazilari tercume edildi.

http://www.bilgidata.com/article.jsp?file=a_continous_integration.xml

http://www.bilgidata.com/article.jsp?file=a_enterprise_transforming.xml

http://www.bilgidata.com/article.jsp?file=a_yeni_metod.xml

http://www.bilgidata.com/article.jsp?file=a_liderlik.xml




















Görüş belirtmek için giriş yapın...

İlgili Yazılar

PHP 5 Ciddi Geliyor

pulsar

Yeni çıkacak olan PHP sürümünde bir çok nesneye yönelik programlama özelliği mevcut. PHP 4.x.x sürümleri ile PHP 5'i C/C++ gibi görenler bile var. Web scripting dillerinin en iyi kullanıcı gurubuna sahip dili artık ikinci devrine girdi diyebiliriz.

Bilgi için: PHPBuilder

PHP ile COM Port Kullanarak Haberleşme

FZ

Türkiye PHP Grubu'ndan Nurettin Sezer'in İzmir Dokuz Eylül Üniversitesi DESEM 'de verilen ücretsiz seminerde bahsettiği konuyla ilgili detaylara buradan erişmek mümkün.

Kim demiş PHP sadece WWW içindir diye?

SHiBuMi

Perl'ü sollayıp Apache'in en popüler modülü olmak ve dünyada 5 milyon domainde kullanılır hale ulaşmak PHP'yi kesmemiş olacak ki, PHP şimdi de masaüstü programcılığına el attı. GTK 2.0 desteği ile çalışacak olan PHP'nin masaüstü modülü şu an için 0.0.1 sürümü ile henüz bir bebek ama vaat ettikleriyle PHP programcılarına yepyeni kapılar açacak gibi gözüküyor.

MyObjects Php 5 - MySql Nesne Köprüsü 1.0 Beta 2 Yayınlandı

angeleous

Aslen Zend'in PHP 5 programlama yarışması için geliştirdiğim ve BSD lisansıyla dağıtılan MyObjects PHP 5 kütüphanesi ve araçlarının beta 2 sürümü çıktı. İlk defa Fazlamesai.net'de duyurduğum bu araç kitinin özellikleri kısaca şöyle:

Program benim gibi web projelerinde PHP dilini kullanan ve PHP 5'in gelişmiş nesne modelinden faydalanarak MySQL veritabanındaki kayıtlarını nesneler aracilgiyla yönetmek/görüntülemek isteyen programcılar için geliştirildi. Programın tam olarak 'Object Persistance' ya da 'Object Relational Mapping' tanımlarına akademik olarak uyduğunu söyleyemem. Programı yalnızca program yazarken kendi ihtiyaç duyduğum niteliklerden yola çıkarak geliştirdim.

Blog tutmanın GMail'cesi

abakana

Bu müthiş icadı yapan kişi Jonathan Hernandez. GMail' de "Starred" durumunda olan mesajlar Blog entrylerini onlara verilen cevaplarda yorumları oluşturuyor. Blog' un diger özellikleri ise, Gmail Label' lari kategoriler olarak değerlendirmesi, GMail davetiyesi olup olmadığını ve blog hesabının Gmailin yüzde kaçını kullandığını belirtmesi oalrak karşımıza çıkıyor.

Bu icadı denemek isteyenler burdan gerekli dosyaları indirip deneyebilir, yaşayan halini görmek isteyenler http://jaws.com.mx/gallina/gallina/index.xml adresini inceleyebilirler.

Editörün Notu: Google sessiz ve derinden evrensel bilgi işlem platformu olma yolunda ilerliyor. Amazon da benzer yolda. İnsan Tim O'Reilly haklı mı acaba diye düşünmeden edemiyor: http://tim.oreilly.com/opensource/paradigmshift_0504.html