Açık Kaynak Kodu ve Etrafında Olanları Hissedebilmek (Konuk Yazar: Oğuz DAĞ)

Kasım 23, 2007 1 yorum

duke-n-friends.png“Yaşıyor bu, canlı, hissedebiliyorum… ”

Açık kaynak projelerde kod yazıyorsanız, bu projeleri kullanıp bulduğunuz bug’ları giriyorsanız, hepsinden önemlisi bu bug’ların çözüldüğünü görüp bunları hemen uyguluyorsanız, kullanacağınız en güzel cümle yukarıda yazdığım cümle olacaktır.

Evet açık kaynak projelerin çoğunluğu canlı birer organizma gibidir. Daha önce yazdığım “Kötü misal emsal olmaz mı?” isimli yazımda da belirttiğim gibi, açık kaynak proje sadece kodların açılması değildir. Bununla ilgili daha önce yaşanmış sadece kodlarını açarak açık kaynak dünyasının nimetlerinden yararlanmak isteyen bazı projeler çıkmış, aşı tutmamış ve talihsiz bir şekilde bu maceralar sona ermiştir. Bundan çıkarılan sonuç ise önemli olanın kodun kendisi olmadığı, etrafında oluşan kümenin aslında önemli olduğudur. Merkezde bulunan kodlayıcılar ve (varsa) konfigürasyon yöneticileri ile bunların etrafını saran aktif-kullanıcılar (proje ve sistem ile interaktif bir şekilde uğraşan dinamik kullanıcılar) açık kaynak topluluğu denilen canlı organizmayı oluştururlar. Bu canlı organizma bu elemanlardan herhangi birisinin yokluğunda tabir yerinde olursa kan kaybetmeye başlar, ve doğru tedavi uygulanmazsa, yaşamı sona erer. Bu nedenle, eğer açık kaynak bir uygulamaya karşı herhangi bir sempatiniz, bir ilginiz var ise; unutmayın açık kaynak topluluğun size de ihtiyacı olabilir ve siz de bu topluluğa katılabilirsiniz. Bunun için illa ki kod yazmanıza gerek yok (yazarak yardımcı olsanız iyi olur tabi ama), yazılan kodları kullanıp, topluluğa fikirlerinizi, yorumlarınızı dönmeniz dahi yeterli olacaktır.

Açık kaynak topluluğunun en güzel örneklerinden birisi “Hudson”dır. Aktif olarak yer aldığım bir topluluk olduğu için söylemiyorum, şu anda revaçta olan bir proje olduğu için de söylemiyorum, bence CruiseControl’den sonra onun tahtına oturabilecek bir Sürekli Entegrasyon aracı olduğu için de söylemiyorum. Forumlarına girdiğim için, bug report’larını okuduğum, kodlarını checkout edip inceledeğim için söylüyorum. Yani canlı olduğunu hissettiğim için söylüyorum. Arada geçen şu şekilde diyaloglar sanırım ne anlatmak istediğimi size daha iyi gösterecektir.

Kullanıcı : Hudson’ı çalıştırdım, herşey güzel ama X issue management portal ile entegrasyonuna dair herhangi bir şey göremedim.

Kodlayıcı : Evet henüz o konuya zaman ayıramadık, ama bize yardım etmek istersen, her tür yardımı kabul ederiz.

Kullanıcı : Olur, kodları alayım, bakalım ne yapabiliriz.

Bunu okuyunca dahi ruhu hissedebilirsiniz.

Daha önce defalarca belirttiğim gibi her ne kadar açık kaynak projeler, ileride büyük abileri tarafından farkedilip alınsalar da, gelişim ve olgunlaşma süreçlerinde tamamen paylaşımcı ve ortak bir ruh ile götürülmesi ve maddi çıkarların düşünülmemesi gereken projelerdir. Çünkü ancak bu ruh ile davranılırsa başarı gelir. Umarım açık kaynak topluluğuna adım atmanızda bir zerre olsa yardımım dokunur.

Oğuz DAĞ
http://ozidethonjava.blogspot.com/

Reklamlar

ORACLE SEMİNERİNE DAVETLİSİNİZ

Kasım 13, 2007 Yorum bırakın

CETURK olarak seminer organizasyonlarımıza Oracle semineri ile devam ediyoruz. Uzun zamandan beri gerçekleştirmeyi hayal ettiğim bu seminer için kısmet bu haftasonunaymış ve nihayet Hasan Tonguç Yılmaz CETURK üyeleriyle buluşuyor. Seminer için yer olarak Yıldız Teknik Üniversite ‘sini seçtik. ( Benim için de okuluma gidecek olmak ayrı bir keyif.)

Seminerin basitten zora doğru giden bir içeriği var. Temel olarak Oracle DBMS ile başlayıp ,daha sonra performans dar boğazlarının aşılması için neler yapılması gerektiği üzerinde durulacak. Son noktada da Event 10046 bizlere ne gibi ipuçları verir bunlardan bahsedilecek.

Her zamanki gibi çekilişimiz ve kitap hediyemiz de var. Bir aksilik olmazsa ben de orada olacağım. Seminere katılmak isteyenler buradan kayıt yaptırabilirler. Seminer detayları aşağıdaki gibi. Seminerde görüşmek üzere hoşçakalın…

ETKİNLİK DETAYLARI
Etkinlik Konusu : Oracle Trace Utility’e Giriş Ve Temel Performans Denklemini Anlamak
Etkinlik Türü : Seminer
Hedef Kitle : Oracle DBMS üzerinde uygulama geliştirenler ve uygulamalarindan daha fazla performans almak isteyeneler.
Kontenjan : 100
Etkinlik Tarihi – Saati : 17.11.2007 — 10:30-13:00
Süre : 1 Gün
Eğitimi Veren : H.Tonguç Yılmaz
Etkinlik Yeri : Yıldız Teknik Üniversitesi Merkez Kampüsü Sergi Salonu Adres için TIKLAYINIZ
ETKINLIK IÇERİĞİ
1.Oracle veritabanına giriş
http://tonguc.yilmaz.googlepages.com/Oracle-introduction-for-newbies.htmhttp://tonguc.yilmaz.googlepages.com/Oracle-Quality-and-Performance-for-F.htm
2. Başarım temel kavramları
3. Bekleme olaylarına giriş


http://tonguc.wordpress.com/2007/09/12/oracle-waits-defined-by-kyle-hailey/
4. Olay 10046 ve çözümlemesi

Bilgi için tıklayınız
5. Kapanış
KONUŞMACI
Okullar Fethiye Lisesi, ITU Bilgisayar Müh., Bilgi MBA
İş Tecrübesi 1996-.. Finans ve Telco şirketleri, BT bölümleri
Uzmanlık Oracle ile sürüm 7.3 tanıştı,9+ sene,
Oracle ACE ve OCP,OracleTURK grubu yönetici(1999),Turkcell Akademi Oracle veritabanı ve ürünleri iç eğitmeni
Uyarı “Guru” veya bir başka pazarlamacı değil!
Daha fazlası http://tonguc.wordpress.com/about/
  H.Tonguç Yılmaz tonguc.yilmaz at gmail.comhttp://tonguc.yilmaz.googlepages.com
ETKİNLİK HEDİYEMİZ
Seminere katılan 3 üyemize çekilişle aşağıdaki kitaplardan hediye edilecektir.:

UML SEMİNERİ

Kasım 6, 2007 1 yorum

CETURK olarak bilişim alanındaki seminer organizasyonlarımız sürüyor.  Sibnet ile birlikte gerçekleştirdiğimiz Java ile Kurumsal Mimariler seminerinin ardından sırada UML semineri var. Semineri Netron Bilişim Akademisi ‘nden Aykut Taşdelen verecek ve Microsoft ‘un bu konudaki çözümlerine değinecek. Microsoft Türkiye Marmamara Salonu ‘nda gerçekleştireceğimiz seminerimize hepiniz davetlisiniz. Tek yapmanız gereken buradan kayıt yaptırmak.

Ayrıca seminer organizasyonlarımıza Oracle ,Silverlight ve Microsoft ‘un Expression ürün ailesi ile devam edeceğimizi de buradan sizlerle paylaşmış olayım.

Seminer ile ilgili detaylar aşağıda. Seminerde görüşmek üzere….

ETKİNLİK DETAYLARI
Etkinlik Konusu : UML (Unified Modelling Language) Semineri
Etkinlik Türü : Seminer
Hedef Kitle : Uml ile ilgilenenler
Kontenjan : 80
Etkinlik Tarihi – Saati : 10.11.2007 — 14.00 – 18.00
Süre : 1 Gün
Eğitimi Veren : Aykut TAŞDELEN
Etkinlik Yeri : Microsoft Türkiye İletişim Bilgileri
ETKINLIK IÇERİĞİ
Bu seminerde UML (Unified Modelling Language) yanı sıra Microsoft’un çok da fazla
bilinmeyen bir ürünü olan MS Visio ile örneklemeler yapılacaktır. Seminerde ele
alınacak konu başlıklarından bazıları şunlardır :
UML (Unified Modelling Language)
UML Kullanımının Getirileri
Nesne Yönelimli Tasarım
Temel Kavramlar
Use Case Diyagramları
Use Case Tanımları
Use Case’lerin Yeniden Kullanımı
Aktörlerin Türetilmesi
Arayüzler (Interface’ler)
Use Case’lerin Sınıf Tasarımında Kullanımı
Sınıf Diyagramları
Nesneler Arasındaki İlişkiler
Durum (State) Diyagramları
Aktivite (Activity) Diyagramları
Sequence Diyagramları
Deployment Diyagramları
Microsoft Visio
ETKİNLİK SPONSORUMUZ
ETKİNLİK HEDİYEMİZ
Seminere katılan 3 üyemize çekilişle aşağıdaki kitaplardan hediye edilecektir.:

Asp.Net AJAX


AQUAFOLD ‘DAN OPEN SOURCE ‘A DESTEK

Ekim 1, 2007 1 yorum

ads_front_logo.jpgSon günlerde etrafımızda yaşanan ve bizi bir hayli efkarlandıran Anti-Open Source (Open Source ürünleri rafa kaldırmak gibi) hareketlere inat arada güzel gelişmeler de olmuyor değil . Siz de eğer hala “Yahu bu open source dedikleri ne olaki ?” diye soru işaretleri arasında kayboluyorsanız Bizim Gözümüzden Açık Kaynak başlıklı yazı tam size göre. Yazının devamını okumadan önce bu yazıyı okumakta fayda var !

Açık Kaynak konusuna hafifçe değinerek girişi yaptıktan sonra sıra geldi asıl konuya. Bildiğiniz üzere daha önceki yazılarımda Aquafold firmasından ve severek kullandığım veritabanı yönetim aracı Aqua Data Studio ‘dan bahsetmiştim. Bu ürünü hem işte hem de evde sürekli kullanıyorum. (Hatta Kurumsal Krediler projesindeki ekip arkdaşlarıma da zorla kullandırtıyorum. ) ADS ‘nin menülerine aşina olduğum için TOAD menüleri arasında gezinmekten daha efektif geliyor bana ADS ile çalışmak.

Geçtiğimiz günlerde ADS ‘nin 6.5 Release Candiate 1 sürümü yayınlandı. Bu sürümden lisanslı kullanıcılar herhangi bir ek ücret vermeden faydalanabiliyorlar. Ürünün lisanslı kullanıcısı olmama rağmen e-posta ile gelen bilgilendirme metninde beni aşağıda yazanlar daha çok sevindirdi:

To show our gratitude to the Open Source community and the great benefit they have provided to the world, we are also announcing a new licensing policy which provides no-cost licenses to developers of Open Source Software. All qualified Open Source Software developers may apply for no-cost licenses by contacting me directly. Qualifications for OSSD licenses may be reviewed here … http://www.aquafold.com/opensourcedeveloper-qual.html

Yukarıda da belirtildiği üzere eğer siz de açık kaynak kodlu bir projenin parçasıysanız bu güzel araçtan ücretsiz olarak faydalanabileceksiniz. Açık kaynak dünyası için çok güzel bir jest çünkü ADS ciddi manada hızla yol kat eden bir ürün. ADS ‘nin nasıl bir yol kat ettiğini buradaki yeni özellikler listesinden görebilirsiniz. Özellikle SVN ve CVS desteği benim çok hoşuma gitti. Daha önce de bahsetmiştim; buradaki özelliklerin çoğu mail grubundaki kullanıcıların istekleri doğrultusunda ortaya çıktı. Proje lideri John gelen istekleri sıraya koyarak bir future list oluşturup uygulamayı sürekli güncelliyor.

Eğer ADS ‘nin son halini denemek isterseniz buradan ufak bir tüyoyu sizlerle paylaşayım. Download sayfasına gittiğinizde en son olarak 6.4.92 sürümün göreceksiniz. Bu sürümü indirip kulumu yaptıktan sonra buradaki sayfaya gidip öncelikle ads-6.4.93-patch.zip yamasını indirin ve zip dosyasının içindekileri kurulumu yaptığınız dizindeki lib klasörüne kopyalayın. (Var olan dosyaların üstüne yazın) Ardından da ads-6.4.93_10.jar jar dosyasını indirip adını ads.jar olarak değiştirin ve lib klasöründeki ads.jar dosyasının üstüne yazın. Artık ADS ‘niz en güncel haline gelmiş oldu. Yeni eklenen özellikler mail grubunda kullanıcılarla hemen paylaşılıyor ve bulunan hatlar bu şekildeki sürüm güncellemeleriyle gideriliyor. En güncel sürümler e-mail grubunda paylaşılıp test edildiği için ana download sayfasında görme şansınız yok.

Aquafold firması ürün geliştirmedeki akıllı vizyonunu lisanslamada göstermiş oldu. Görüldüğü üzere dünyanın bir tarafında birileri her geçen gün açık kaynağın önemini daha çok anlarken yada anlamaya başlarken , bizde de birileri elindeki tıkır tıkır çalışan open source uygulamaları bir kenara bırakıp , donanım canavarı paralı ürünlere yöneliyor.

Buradan önemli bir mesaj da öğrenci arkadaşlara var: Şu sıralarda bitirme ve ara proje teklifi verme telaşındaysanız mutlaka açık kaynak kodlu projelere bir bakın derim. Apache.org ,Codeplex, Tigris.org , Sourceforge.net vb. siteler size mutlaka bir fikir verecektir. (Outlook tarzında bir JIRA client yazmak hoş olabilir) Okullarımız zaten Micisoft ‘un akademik lansmanlarına teslim olmuş durumda. Öğrencileri Open Source konusunda bilinçlendirecek akademisyenler de ne yazıkki yok. O nedenle sizlerin bu tip projelerle hocalarınıza “Vay be neler varmış” dedirtmeniz gerekebilir. Bu bilince erken yaşta erişmek önemli. Aksi halde iş hayatına atılınca atalarınızın şu sözünü sık sık hatırlamak durumunda kalabilirsiniz: Open Source girmeyen şirkete ya Micisoft girer ya Aybiem…

Kategoriler:GÜNLÜK

JIRAMANIA BİZE ÇOK UZAK ÇOOKKK!!!

Eylül 28, 2007 3 yorum

threetools.pngGeçtiğimiz günlerde Atlassian firmasının sitesinde gördüğüm What 3 Dev Tools Do You Rely on Most? başlıklı haber çok hoşuma gitmişti. Yani bir uygulamanın bu kadar çok amaca hizmet edebilir olması ve bu kadar efektif kullanılması hem o uygulamayı yazanlar için hem de kullananlar için çok güzel bir durum.

Yukarıdaki resimde de görüleceği üzere arkadaşlar development süreçlerinin her aşamasına JIRA ‘yı entegre etmişler. Bu sayede JIRA+CVS+ECLIPSE üçlüsü ile projelerini tıkır tıkır yürütmeyi başarmışlar. Resme bakınca JIRAMANIA bu olsa gerek demiştim kendi kendime…

Bu arada nedir bu JIRA diyenler buradan ve Mustafa Tan ‘ın blogundan detaylı bilgiye ulaşabilirler.

JIRA özetle “Söz uçar yazı kalır” felsefesinin yazılım projelerinde hayat bulmasıdır benim gözümde. Yapılan , yapılması gereken, yapılması umulan yada yapılacak olan işlerin takip edilebilmesini ve kayıt altında olmasını sağlar JIRA. Yani e-maili, telefon yada birebir muhattabiyeti kayıt altına alır. “Abi bee bu kod patlıyor bir el atıver de biz de teste devam edelim” şeklinde gelecek vakitsiz bir telefonun önüne geçer JIRA. Onun yerine e-mailinize ve JIRA hesabınıza tatlı bir issue düşer bir öğle tatili öncesinde… 🙂

Açar bakarsınız ve gerekeni yaparsınız. Sonradan birisi çıkıp da “Ben şu zaman demiştim sen bu zaman yaptın“, yada “ben böyle demiştim sen şöyle yaptın“gibi bir iddiada bulunamaz çünkü herşey orada yazılmıştır. JIRA ‘nın tanıtımı yapıp , teorik olarak kullanımını anlattıktan sonra sıra geldi hayatın gerçekleriyle yüzleşmeye…

Biz de şu anda dahil olduğum projede JIRA ‘nın nimetlerinden faydalanmaya çalışıyoruz. Hem development hem de test sürecinde yoğun bir şekilde JIRA kullanılıyor. Özellikle de projesini yaptığımız şirketin IT departmanıyla olan ilişkilerde işlerin daha ciddi yürütülmesi adına JIRA köprü görevi görüyor. Şu sıralarda bizim ekibin yazdığı modüller Alfa tesinde. Müşterimizin IT departmanındaki arkadaşlar bizlerin yaptığı ekranları test edip bizlere hatalı durumlarda “issue açıyorlar“. Buraya kadar herşey olağan. Ama bazen etrafımda öyle manzaralara denk geliyorum ki… Millet uzaya gidiyor biz nereye diye düşünüyorum…

Bir hata raporlanmış, developer arkadaş da düzeltmiş bir güzel. Şimdi tek yapması gereken JIRA ‘da kendisine atanan görevi ufak bir açıklama girerek kapatmak. Developer arkadaş kaygılı. Neden mi? Çünkü hatayı raporlayan vatandaş açıklamaları anlamamkta büyük bir direnç gösteriyor. Ne yapsam ne yazsam diye düşünürken oradan dahiyane bir fikir egliyor. “Ya telefon açıp söylesene. Böyle böyle diye anlatsana” (Hani yazılandan anlamıyor belki laftan anlar diye umuyor sanırım) yada “Dur dur ben de e-mail adresi var o bayanın uzun uzun bir mail at olsun bitsin”  Güler misin ağlar mısın?

Madem bizim telefon, e-mail gibi hizmetlerimiz var neden JIRA kullanıyoruz? Neden birileri JIRA ‘da bizim sorunsuzca çalışabilmemiz için emek harcıyor? Yada bu işler madem böyle de yürütülebiliyor neden bir grup zeki arkadaş oturup JIRA adlı bir uygulama geliştiriyor. Maksat yeşillik olsun diye değil mi? Yada el alem “Sizin JIRA ‘nız var mı?” diye sorduğunda “Olmaz mı hem de en enterprise edition ‘ından” diyebilmek için…

Görüldüğü üzere bir uygulama ne kadar akıllıca tasarlanmış olursa olsun işin içine beşeri faktörler girince, o akıllıca tasarım pek bir anlam ifade. Siz siz olun bu gibi fikirlere aldırış etmeyin. Elinizdeki araçlar her ne kadar amacınız olmasa da onları ne kadar efektif ve doğru kullanırsanız o kadar rahat edersiniz. Sisteminize ekleyeceğiniz fazladan her araç hem maddi yük getirecek hem de ayrı bir yönetim süreci isteyecektir. O nedenle bu gibi işlere ayıracağınız kaynağın karşılığını en iyi şekilde almalısınız. Hem siz elinizdeki aracı doğru kullanmak konusunda ne kadar ısrarcı olursanız etrafınızdakiler de er geç size uymaya başlayacaktır. (Yani birileri derdini yazarak anlatmayı ve diğer taraf da yazılandan birşyeler anlamayı öğrenmeli.) Yanlışları değil doğruları toplu halde yapmaya özen göstermenizi dileyerek yazımı burada noktalıyorum.

SQL SERVER JDBC DRIVER 1.2 CTP

Eylül 26, 2007 9 yorum

Geçtiğimiz ay Microsoft SQL Server için Type 4 özelliklerini sağlayan yeni JDBC sürücüsünün 1.2 sürümünü yayınladı. Yayınlanan bu sürücü hem SQL Server 2005 hem de 2000 sürümüyle uyumlu olarak çalışabilen bu yeni sürücü JDBC 3.0 spesifikasyonunyla tamamen uyumlu olarak hazırlanmış.

Sürücünün Type 4 özelliklerini sağlaması performans konusunda ciddi avantajlar getirecektir. Pure Java Driver yada Thin Driver denilen bu tipteki sürücüler istemcilerden (yazdığımız Java uygulamalarından) gelen JDBC çağrılarını DBMS ‘in anlayacağı şekilde network çağrılarına çevirerek veritabanına doğrudan erişim sağlar. Arada database middleware olmadığı için de diğer sürücülere göre daha hızlı çalışır. (Ne kadar az katman o kadar çok performans) Özellikle intranet uygulamalarında bu tip bir sürücüyü tercih etmek avantajlı olacaktır diye düşünüyorum.(Tabi ne kadar az katman o kadar az kontrol ?? Ondan ötürü kullanım öncesi iyi bir analiz şart.)

Bu sürücü ile uygulama geliştirmek için JDK 1.4 veya daha ileri bir sürümünün makinanızda kurulu olması gerekiyor. Yapılan açıklamalara göre BEA WebLogic, IBM WebSphere, JBoss, and SunBu gibi uygulama sunucuları ile sürücünün sorunsuzca çalıştığı görülmüş. Ama her Microsoft ürününe olduğu gibi bu sürücüye de şüpheyle yaklaşıp kendim de denedim ve ben de SQL Server 2005 Enterprise Edition üzerinde önceden yazdığım ufak uygulamayı sorunsuzca çalıştırdım . Fakat bu herşeyin yolunda olduğu anlamına gelmiyor elbette. Bu adresteki gibi stored proc. içerisinde geçici tablo kullandıklarında sorun yaşayanlar da var. (Final sürümüne ulaşmadan kritik uygulamalarda Mcirosoft ürünlerini kullanmayı Microsoft çalışanları da tavsiye etmiyorlar.)

Bu ücretsiz sürücü ile sağlanan Adaptive Buffering ve SSL Encription gibi özelliklerden uygulamalarınızda faydalanmak isterseniz mutlaka bir test sürüşü yapmalısınız. Adaptive Buffering özelliği sayesinde büyük boyutlu verilerle yaşadığınız performans darboğazlarını aşabilme şansınız var.

Aslında JDBC Type 4 sürücülere çoğumuz büyük umutlar bağlamıştık ama nedense DBMS üreticileri bu konuda beklenen çevikliği gösteremediler. Fakat Microsoft herkesten hızlı davranıp Type 4 sürücüsünü herkesten önce çıkarmıştı. Hatta JDBC-TR mail grubunda bunun önemli bir şirket stratejisi olduğunu daha doğru güzel bir Microsoft Uyanıklığı örneği olduğunu konuşmuştuk.

Yazının sonuna Type 4 sürücülerle ilgili iki tane kısa ve öz yazıyı ekledim. Özellikle de devx.com ‘daki yazıya göz atmanız sürücü seçimi sırasında doğru kararı almanızda faydalı olacaktır.

Şimdilik benden bu kadar. Yaşadığım bir dolu aksilikten sonra blogumu güncellemeye kaldığım yerden devam ediyorum. İlerleyen zamanlarda özellikle de üzerinde çalıştığım Test Driven Development ve Unit Testing konularında keyifli paylaşımlarda bulunmaya çalışacağım.

Types of JDBC technology drivers
JDBC Drivers: How Do You Know What You Need?
Microsoft SQL Server 2005 JDBC Driver 1.2 Community Technology Preview August 2007

UNIT TESTING & TDD (Test Driven Development)

Ağustos 29, 2007 1 yorum

Geçtiğimiz haftadan bu yana üzerinde çalıştığımız projenin test aşamasını iyileştirebilmek (yada gerçekleştirebilmek) adınatest.jpg Unit Testing ve Test Driven Development ile ilgili araştırmalar yapıyorum. Bu süreçte bir yandan birşeyler öğrenme bir yandan da bu öğrendiklerimi hali hazırda yürüttüğümüz projeye uygulama şansına sahibim. Bu nedenlerden ötürü geçtiğimiz haftayı Unit Testing ve Test Driven Development üzerinde araştırma yaparak geçirdim. Bu noktada bana düşen en önemli görev developer arkadaşları Unit Test yazmanın bir lüks değil bir gereklilik olduğuna ikna etmek. O nedenle bu gerekliliğe kendimi iyice inandırmaya çalıştım ve yüzlerce linki , yazıyı taradım. Bu süreçte öğrendiklerimi belirli başlıklar altında sizlere paylaşmak güzel olacaktır diye düşündüm.

(NOT: Test-Driven Development = Test Güdümlü Yazılım Geliştirme ,Unit Test= Birim Testi olarak kullanılacaktır.)

Test Güdümlü Yazılım Geliştirme Nedir?

Test Güdümlü Yazılım Geliştirme: önce gerekli test koşullarını yazıp ardında da bu testleri geçecek ve hedeflenen işi yapacak kodu yazmayı öngören bir yazılım geliştirme modelidir.

Bu yazılım geliştirme modeli dahilinde aşağıdaki adımlar izlenir:

• Öncelikle yazılımın ilgili birimi için basitçe bir test yazılır.
• Bir sonraki adımda teste tabi tutulacak birim yazılır.
• Eğer o birim, testi geçerse test geliştirilir ve birim tekrardan test edilir.
• Eğer birim testi geçemezse gerekli değişiklik yapılır ve tekrar test edilir.
• Birim son halini alana kadar her değişiklikte test edilir.
• Birim beklenen işi gerçekleştiriyorsa ve tüm testleri geçiyorsa süreç tamamlanır.

Test Güdümlü Yazılım Geliştirme , geliştirme sürecimizi hem hızlandırır hem de iyileştirir çünkü yazılan kodların bir hata durumunda tekrardan yazılması veya hatanın bulunmaya çalışılması ciddi bir maliyet oluşturur.
Test Güdümlü Yazılım Geliştirme yöntemi bir Sürüm Yönetim Sistemiyle birlikte kullanılırsa çok daha verimli olacaktır çünkü bu yaklaşım hata durumunda tüm testleri geçen sürüme geri dönülmesi kolaylığını getirir ve de kodun içerisinden hata ayıklamaktan daha efektiftir.

Birim Testi Nedir?

Birim Testi yazılım projemizdeki her bir birimin (Object-Oriented Programming çerçevesinde en küçük birim sınıftır) doğru bir şekilde çalışıp çalışmadığını anlamak amacıyla oluşturduğumuz testtir.

Birim testi hem Test Güdümlü Yazılım Geliştirme Sürecini kolaylaştırır hem de uygulamamızın her bir biriminin sorunsuzca çalıştığından emin olmamızı sağlar.

Neden Önce Birim Testi Yazılmalıdır ? (Test-First Approach)

Yazılım geliştiriciler için Birim Testi yazmanın yada Test Güdümlü Yazılım Geliştirme Süreci ‘ne adapte olmanın en zor noktası henüz yazılmamış bir birim için test yazmaktır. Bu noktada alışkanlıkların değiştirilmesi biraz zaman alabilir.

Testi , işi yapacak birimden önce yazmamızın nedeni: testi yazabilmek için o teste tabi tutulacak birimin ne iş yapacağını iyice anlamamızı gerektirmesidir. Eğer ilgili birimin verilen giriş bilgisine karşılık çıkışta ne üreteceğini iyice anlamışsak ancak o koşulda testini yazabiliriz. Testi yazdıktan sonra da o testi geçecek kodu yazmak daha kolay olacaktır çünkü testin yazımı sırasında o birimin yapacağı iş kafanızda netleşmiş olur.

Birim testini önce yazmak konusunda yapılan en büyük hata; ilk seferde doğru testi ve bu teste uygun birimi yazmayı hedeflemektir. İlk başta hem test hem de teste tabi tutulacak birimde hatalar ve eksiklikler olabilir fakat test ve düzeltme süreci yukarıda bahsedildiği şekilde tekrarlandıkça bu süreç sonunda ortaya daha kaliteli ve daha güvenilir bir ürün ortaya çıkacaktır.

Birim Testini Projemdeki Hangi Bileşenler İçin Yazmalıyım?

Bu noktada karar uygulama geliştiriciye aittir. Fakat Nesne Yönelimli Programlamada genel yaklaşım bir sınıf içerisindeki tüm public metodlar için birim testi yazmak yönündedir.

Öte yandan değişkenlere erişimi düzenlemek amaçıyla kullandığımız (Accessors- Mutators) metodlar ve bir bakışta işlevi anlaşılıp hata olduğunda kolaylıkla bulunabilecek metodlar için birim testi yazılmayabilir.

Tüm metodlar için birim testi yazmamanın tek dezavantajı projemizin Code Coverage (Code Coverage:Bir projedeki test edilen kodların, tüm kodlara oranı ) yüzdesini düşürmesidir.

Birim Testi ile İşlevsellik Testi (Functional Test) Arasındaki Temel Fark Nedir?

Birim Testi uygulama geliştiricinin kendi perspektifinden, yazdığı kodun doğru çalışıp çalışmadığından emin olmak amacıyla yapılırken , İşlevsellik Testi kullanıcının perspektifinden bakılarak yazılan kodun kullanıcı ihtiyaçlarını karşılayıp karşılamadığını tespit etmek amcıyla yapılır.

Birim Testi kod yazımından önce yapılırken , İşlevsellik Testi ürün müşteriye verilmeden evvel yapılır.

Birim Testinin Yazılım Geliştirme Sürecine Katkıları Nelerdir?

• Refactoring işlemlerini kolaylaştırır: Tüm birim testlerden başarıyla geçmiş bir kod bloğu üzerinde refactoring yaptığınızda kodunuzun bozulup bozulmadığını birim testini tekrar çalıştırarak rahatlıkla anlayabilirsiniz.
• Sonradan ortaya çıkabilecek hataların oluşturacağı maliyeti en aza indirir.
• Yazılımış kodları inceleme (Code Inspection) işleminden daha kolay ve daha verimlidir.
• Uzun vadede testsiz kod yazmaktan daha hızlı kod yazmayı sağlar çünkü aynı kodların hata durumunda tekrardan düzenlenmesi ihtiyacını en aza indirger.
• Birim testi yazmak, bizleri yazacağımız kodun işlevini en ufak detayıyla anlayama iter çünkü işlevini tam olarak anlayamadığımız bir birimin testini yazma şansımız yoktur. Bu da yazılan birimlerin daha doğru olmasını sağlar.
• Yazılan kodlar için bir çeşit dökümantasyon sağlar çünkü yazılan test koşulları incelenerek o kod bloğunun işlevi rahatlıkla anlaşılabilir.

Yukarıda bahsi geçen konularla ilgili öğrenme sürecim hala sürüyor o nedenle blogumda bu konuyla ilgili paylaşımlara devam edeceğim. Kısa bir süre içinde bu konuyla ilgili faydalanabileceğiniz linkleri kategorize ederek sizlerle paylaşmayı planlıyorum. Şimdilik benden bu kadar. Bir sonraki yazıma kadar sağlıcakla kalın…

NOT: Bu gece 3 gün sürecek ufak bir İzmir tatiline çakacağım. Umarım orada da blogumu güncellemeye fırsatım olur?