» Agile Modelleme (article is in Turkish)

This article is translated into turkish by Koray Güclü with the permission of Scott W. Ambler. Original article is
located under http://www.agilemodeling.com/.
Agile Modelleme nedir?
Agile Modelleme (AM) software sistemlerinin efektif modelleme ve dokümantasyonu için pratige dayali bir yöntembilimidir (methodology). Basit olarak, Agile modelleme (AM) software gelistirme projesine efektif ve hafif (light-weight) bir sekilde, software modelleme için uygulanabilen, bir degerler, prensipler ve pratikler bütünüdür. Agile Modeller geleneksel modellerden daha iyidirler. Çünkü sadece gerektigi kadar iyidirler, mükemmel olmalari gerekmez. Agile modelleme yaklasimini talep (requirement), analiz, mimari ve dizayna tasiyabilirsiniz. Daha detayli bilgi için "Agile Modelleme ne(degil)dir?" yazisini okuyun ve Agile Modelleme kitabi hakkinda daha fazla bilgi için buraya tiklayin.


AM reçeteli bir proses degildir, diger bir degisle verilen bir tipte modelin nasil yaratilacagini tanimlayan detayli prosedürler yerine bir modelci olarak nasil efektif olunabilmesi için tavsiyelerde bulunur. AM az modelleme üzerine degildir aslinda bir çok gelistirici(developer) AM yi kullandiklarinda öncekine göre daha fazla modelleme yaptiklarini kesfedeceklerdir. AM duygunun açik ifade seklidir, zor ve hizli degildir. AM yi bir bilim yerine bir sanat olarak düsünün.
AM, Agile Alliance tarafindan desteklendigi sekliyle Agile Gelistirme (Development) degerlerinin sizin efektif olmaniz için anahtar oldugunu kabul eder. Agile Alliance'in destekledikleri:
|
Bireyler ve etkilesimi, proses ve araçlarina
|
|
Çalisan yazilimi, kapsamli dokümantasyona
|
|
Müsteri iletisimini, sözlesme görüsmesine
|
|
Degisime tepki göstermeyi, bir plani takip etmeye
|
tercih etmektir.
Agile Modellemenin (AM) Hedefleri:
Agile Modellemenin hedefleri sunlardir:


|
Efektif, hafif modellemeye ait olan degerler, prensipler, ve pratikler bütününü tanimlama ve pratige nasil geçirilecegini gösterme. AM modellemenin sirri sinif(class) modelleri, veri modelleri kullanici ara yüzü modelleri gibi tekniklerin kendisi degil bu tekniklerin nasil uygulandigidir.
|
|
Agile yaklasimini kullanarak software projelerinde ekstrem programlama (Extreme programlama) XP, Dinamik sistem gelistirme metodu (Dynamic System Development Method - DSDM) yada SCRUM, gibi modelleme tekniklerinin nasil uygulanacagina deginmek. "Extreme Programming Explained (XPE)" kitabindan Kent Beck'in bir alinti yapmak gerekirse: "Biz sürekli bir sistemin dizayninda çok basit bir baslangiçtan baslayarak rötuslarda bulunacagiz. Kullanisli oldugu kanitlanmayan herhangi bir esnekli varsa bunu kaldiracagiz." XP'yi elestirenlerin iddialarinin aksine XP kullanildiginda sadece baska bir seçeneginiz olmadigi takdirde modellemeye zaman ayirtiyorsunuz. Bazen bir gelistirici(developer) için bir problemin çözmede bir fikri düsünmek yada farkli yaklasimlari karsilastirmak için kutucuklar, balonlar ve çizgiler çizmek kodu tekrar okumaya ve anlamaya baslamadan çok daha yararli ve verimlidir. Daha detayli bilgi için Agile Modelleme ve XP konusundaki yaziyi okuyun.
|
|
Bir Unified Process(UP) projesi ve bunun türleri olan Rational Unified Process (RUP) ve Enterprise Unified Process (EUP) projelerinde nasil efektif modelleme yapilacagina deginmek. EUP yüzeysel seviyede uygulandiginda çok külfetli olabilen birçok modelleme tabanli islemler (talep, isletme modelleme, analiz ve dizayn, alt yapi yönetimi) içermektedir. AM bir UP projesinde (yada bunun farkli türlerinde) modelleme çabalarinin etkinligini artirmak için yardimci olur. Daha detayli bilgi için "Agile Modeling and The Unified Process" makalesini okuyunuz.
|

Agile Modellemenin (AM) Kapsami
Agile Modelleme hakkinda anlasilmasi gereken önemli bir kavram Agile Modellemenin tam bir software prosessi olmadigidir. AM'nin odak noktasi etkin modelleme ve dokümantasyondur. Hepsi budur. Modellerinizi kod ile denemenizi gerektigini söylese bile programlama aktivitelerini içermez. Modelleme yaparken test edilebilirligi düsünmeniz gerektigini söylemesine ragmen test aktivitelerini içermez. Proje yönetimi, sistem gelistirme, sistem operasyonlari, sistem destek yada bunun gibi diger islemleri kapsamaz. AM kapsamli bir software prosesinin bir kismina odaklandigi için AM'yi baska bir XP, DSDM, yada UP gibi AM'nin hedeflerinde belirtildigi gibi tam kapsamli bir proses ile kullanilmalidir. Figür 1 bu kavrami göstermektedir. XP yada UP yada sizin su anda kullandiginiz bir proses gibi bir temel proses ile basliyorsunuz ve AM yaninda ihtiyaçlarinizi yansitan diger teknikler ile prosesi degistiriyorsunuz.
Agile Modelleme degerleri, prensipleri ve pratiklerine bir bakis
Agile Modellemenin eXtreme Programlamanin (XP) degerlerini alan ve gelistiren degerleri iletisim, basitlik, geri bildirim, cesaret ve alçak gönüllülük. Modelleme basarisinin anahtari bütün proje katilimcilari arasinda etkin bir iletisim olmasi, tüm ihtiyaçlarinizi karsilayan en basit çözümü gelistirmede caba harcama, çalismalarla ilgili sik ve erken geribildirim alma, karar verme ve kararlara bagli kalmak için cesaret, bütün her seyi bilemeyeceginizi itiraf etmek ve diger kisilerinde projeye katabilecekleri degerler için alçak gönüllülük.


Modelleme yaparken sadeligin önemi ve çalisirken taleplerin zaman içinde degiseceginden dolayi degisime bagli kalmak AM'nin bagli oldugu prensipler bütünüdür. Zaman içinde sisteminizin artan degisikligi çeviklige imkan verir, ve çalismanizin talepleri karsilayacak sekilde oldugundan emin olmak için caba gösterilmesi gerektigini kabul etmelisiniz. Bir amaç için modellemelisiniz, eger bir sey üzerinde neden çalistiginizi bilmiyorsaniz yapmalisiniz. Bunun yaninda verimli olabilmek için gelistirme araçlarinizda çok yönlü modellere ihtiyaciniz vardir. Kritik bir kavram ise modellerin dokümanlar olmasi gerekmedigi aksine amaçlarinin yerine getiren modelleri eleyerek daha hafif hareket etmeyi gerçeklestirir. Agile modelciler bir kavrami modellemenin bir degisik yolu oldugunu ama yinede dogru modelleyebileceginizi yani içerigin tasvirden daha önemli olduguna inanirlar. Etkin bir modelci olmaniz için kullandiginiz araçlari tanimaniz ve modellerinizi bilmeniz gerekir. Etkin bir takim arkadasi olabilmek için herkesin herkesten ögrenebilecegini, insanlarin sezgileri ile çalismaniz gerektigini kabul etmeniz gerekir. Etkin takim çalismasindan emin olmanin en iyi yolu yukaridakiler yaninda insanlar arasinda açik ve dürüst iletisimdir. Son olarak, kaliteli ise odaklanmak önemlidir çünkü kimse yarim yamalak is yapmaktan hoslanmaz ve AM'nin ihtiyaçlarinizi tam karsilayacak sekilde yapilan adaptasyonu önemlidir.


Agile anlaminda modelleme için AM pratiklerini uygun oldugunda uygularsiniz. Saglam bir adimla devamli ilerlemek için paralel olarak bir çok model yaratma, duruma uygun kullanimlar temel pratigin içerigidir. Her seyi içeren büyük bir modeli bir anda yapmak yerine, küçük adimlar atarak modelleme Agile modelci olarak sizin basarinizin temelidir. Modelleme software in soyut tasviri oldugundan dolayi her zaman dogru olmayabilir, fikrinizin pratikte de uygulanabilir oldugunu ispatlama çalismak için kod yazarak caba harcamalisiniz. Proje katilimcilarinin aktif katilimi modelleme çalismalariniz için önemlidir çünkü proje katilimcilari ne istediklerini bilir ve size gerekli olan geri bildirimi kolaylikla yapabilirler. Modeller yaratmanin iki temel nedeni vardir. Bunlar ya bir kavrami (mesela bir sistem kimsini nasil dizayn edeceginizi anlama) anlama yada takimin neler yaptigini/yapacagini anlatmak için modelleme yapmaktir. Basitlik prensibini destekleyen prensipler basit . Çok detayli model yaratmaya çalismama sadece size gereken kisimlari modelleme ile basi içerik yaratma, basit notasyonlar ile modeli anlatmak ve modellerinizi yaratmak için basit araçlar kullanmak basitlik prensibini destekleyen prensiplerdir. Geçici modelleri kaldirmak ve modelleri sadece zarar verdiginde güncellemek ile hafif kolay hareket edersiniz. Modelleme Standardlari ve dikerleri ile modelleme ile modelinizi açikça bir duvarda, Internet sitesinde göstermek ile proje katilimcilarinin modeli benimsemelerini ve iletisimi mümkün kilmis olursunuz. Software in test edilebilirligini, sablonlarin uygulamasini ve var olan seylerin tekrar kullanimi ile gelistirme çalismalarini daha verimli kilmis olursunuz. Siklikla sistemi diger sistemler yada var olan veri tabanlari, web servisleri ile entegre etmeniz gerektiginden dolayi bir sözlesme modelini formüle etmeniz ihtiyacinda oldugunuzu fark edeceksiniz. Konunun daha iyi anlasilmasi için "How AM's practices fit together" yazisini okuyunuz.


Agile çekirdeginde sadece bir çok tecrübeli software gelistiricilerinin prensip ve degerlerinin yansitan prensipler bütünüdür. Benim tecrübem bu prensiplerin bir çok software projelerinde , agile software prosesini (örnegin XP) kullanmayan projelerde bile AM uygulanabilecegi ve yaklasimlarindan yararlanilabilecegidir. Bir proje takimi AM den yararlanmak için onun bütün pratik prensip ve degerlerini uygulamasi gerekmez (benim her zaman inandigim software prosesinizi sizin ihtiyaçlariniz dogrultusunda adapte etmenizdir). Ancak benim düsüncem XP gibi AM yede adapte olursaniz daha basarili olabilirisiniz.
History
---------
- 15.08.2004 First Draft
|
|