Bir yazilim projesi gelistirme sureci baslamadan once, etrafiniza soyle bir bakin. Programcilariniz hazir, bilgisayarlari alinmis ve kurulmus, derleyicileri hazir (Java, vs). Ne eksik?
Kaynak Kod idare programini unutmayin. KKI sistemleri sayesinde ayni yazilimda bir cok programcinin calismasi mumkun oluyor. Yoksa, eger iki programci ayni anda BeniDuzelt.java kayidini degistiriyorsa, hangisinin surumu en onde nasil bileceksiniz? Bildiniz, KKI sistemi sayesinde.
KKI sistemi icin once bir depo yaratmak gerekir. Bu depo, butun kaynak kodun saklandigi yer olur. Programcilar, bu depodan dosyalari kendi ortamlarina indirirler. Dosya uzerinde ekleme, cikarma isini kendi ortamlarinda yaparlar. Isleri bitince KKI sistemine “geri” verirler. KKI sistemi, eger “ayni anda” iki kisinin degistirdigi bir dosya varoldugunu bulursa, degisim “carpismasi” oldugunu haber verir. Bu haber ayni dosyayi ikinci geri veren programciya gosterilir. Boyle bir durumda programcinin, degismis dosyayi depodan cikartip, kendi surumu ile ‘birlestirmesi’ gerekir. CVS programi otomatik bir birlestirici sunuyor, isimizi rahatlatmak icin
Extreme programming yönteminin diger tasarım/kodlama yöntemlerinden büyük farkları vardir. Bunlardan en önemlisi, tasarım ne zaman ve ne kadar yapilacağıdır.
Bildiğiniz gibi eski tasarım yöntemlerinde, başta uzun sureli tasarım yapmak, ve ciltler dolusu tasarım belgesi ortaya çıkartmak gerekir. Bu fikre göre, bu devre icin ne kadar uzun zaman harcanırsa, o kadar iyidir.
Böyle projelerin başarı yüzdesi %50′dir. Sektörde bunun birçok örneğini gördük ve yaşadık.
Bu yüzden yeni seçenek olarak gelen her yöntem, ne kadar ve ne zaman tasarım yapılacağını tanımlamalıdır.
Programcilik isinde temel bazi teknikler, her turlu yazilim turu icin gecerlidir. Baska bir yazimizda, genel yazilim tiplerinden bahsettik. Fakat bu cesitler icinde ortak “bazi” seyler vardir. Mesela tekrar tekrar kullanilan kod parcalari, kendi basina bir unite icine konursa, o halde kullanilmasi daha rahat olur.
Ortak teknikleri asagidaki grupta toplayabiliriz.
Yazilim cesitleri ve metodlari tek degildir. Bir metodu ogrenerek butun problemleri cozeceginizi sanmayin. Kariyerimiz boyunca “Rational Metodu”, “Extreme Metodu” ogrenip Istanbul’u fethedecigini zanneden cok programci tanidik. Bu metodlar, her turlu yazilim problemine deva olacaklarini reklam ederler, fakat degisik yazilim problemlerinin ve cozumlerinin ne oldugunu bilmezseniz, hangi metodu ogrenirseniz ogrenin, basariya ulasamazsiniz.
Ana software “problem alanlarini” sayalim..

Butun bu problemlerin kendine gore “teknolojik” cozumleri vardir. Mesela, veri tabani paket programiniz Oracle; yani SQL dili kullanabileceginiz bir paket. Musteriniz dedi ki: “Bana oyle bir progrem yazki, her gun ABC kayitlarini isleyip XYZ kayidi haline getirsin. Ne kadar cabuk yapabilirse o kadar iyi. Sadece islesin. Gorsel falan hic bir sey istemem.”
Yukaridaki program ‘gunluk’ program kategorisine girer. Boyle programlar surekli ‘uyanik’ durmak zorundadir, ve isleyecek veri beklerler. Sanki ac bir hayvan gibidirler, veri buldugu anda yerler. Yoksa gelmesini beklerler. Gorsel program orasina burasina klik edilsin diye bekler, o yuzden daha degisik programlama gerektirir.
Anlik programlarin degisik ihtiyaclari vardir. Mesela bir uzay mekigini kontrol eden, ya da son model arabanizda benzin pompasini ayarlayan program, anlik programdir. 1~2 milisaniye arasinda karar vermesi gerekir, o yuzden kod ona gere yazilir. Bilgisayarlar tabii ki herseyi yapabilecekleri kadar hizli yapmaya ugrasirlar, fakat birden fazla, ayni anda islem gerektiren olaylar oluyorsa, belki bazi seylerin birbirini beklemesi gerekebilir. Mesela benzin pompasi dogru olcude benzin vermekle gorevlidir, ama ayni anda fren sinyallerini dinleyen bir bolumude vardir. Fren sinyali geldigi anda herseyi birakmasi mecburdur. Bunlar “anlik” program problemleridir. Gunluk programlarin problemleri yukarida gordugunuz gibi degisik.
Site programlari bir baska hikaye: Internet siteleri ayni anda birden fazla kisiye hizmet versin diye yazilir. Yani, ayni anda degisik kullanicilara hizmet verir, ama bu isler aslinda birbirinin kopyasidir, ve kullanicilar birbirlerini “aninda” etkileyemezler. “Anlik” program kategorisine bu yuzden benzemesine ragmen, aslinda cok ayri bir metod gerektirirler. Mesela amazon.com sitesine girdiniz, uye oldunuz, kitap satin aldiniz. Fakat ayni anda, amazon.com sitesinde ayni islemleri yapan belki binlerce kullanici vardir. O kullanicilarin yaptiklari sizi etkilemez, herkes sanki kendi odasinda, izole bir sekilde isini yapmaya ugrasir. Bu tip programlar “kapasite” icin yazilirlar, problemler veri tabanina daha hizli erisim, sayfa hizli yukleme gibi seyler etrafinda doner. Son zamanin Internet Java paketleri, sanki siteleri bir kisi icin yaziyormus gibi yardim eder size; ondan sonra kopya kagidindan cikarmis gibi 10,000 kisi icin ayni kodu kullanabilirsiniz.
Gorsel programlar Windows programlari gibidir. Unlu windows ‘fal’ oyunu bir gorsel programdir. Klik edilebilen nesneler vardir, bu nesnelerin bazilari her zaman kliklenemez, kullanici hatasi verilir bu zamanlarda, yada kullanici o isi yapamaz. Bu tip programlarin temelinde bir ‘hadise/vaka dongusu’ vardir. Bir gorsel hadise oldugu anda, (nesne uzerine klik) hadise icin yapilan gorevler teker teker, onceden programa kayitlanir. Bu stili ilginc yapan, programi tamamen ‘gorsel hadiseler’ uzerine kurulmasidir. Oteki tip programlarda sanki duz bir sira yoktur. ‘Su olursa sunu yap, bu olursa bunu yap’ seklinde programlardir.
Bu bölümde programlama dillerinin kullanıldıkları alanları ve özelliklerini inceleyeceğiz. Programlama dilleri uygulama alanlarına göre dörde ayrılır:
Bir yazılım değişik dillerle oluşturulabilir fakat izlenen yöntemler genelde birbirine benzer.Örneğin Algoritma…
Algoritma, elimizdeki sorunun çözümüne gidebilmek için tasarlanan yollar,yöntemlerdir. Örneğin bir arkadaşınıza daha önce gitmediği bir yerdeki bir postaneyi tarif edeceksiniz. Bunun için anlatımda genelden özele giden bir yol izlersiniz. Önce gideceği semti sonra caddeyi sonra postanenin olduğu yönü tarif eder son olarak da kolay bulması için postanenin çevresindeki göze batan özelliklerden bahsedersiniz.İşte bu yaptıklarınız bir algoritmadır. Ve amacınız arkadaşınıza postaneyi bu algoritma yardımıyla tarif etmektir…
Bilgisayar programlama dilleri de programcılıkta bunu gibi yöntemler kullanarak çözüme gider. Algoritmanın uzunluğu kullanılan programlama dilinin seviyesi ve problemin karmaşıklığı ile doğru orantılıdır.
Yapılan algoritma ve tasarımdan sonra yazılım aşamasına gelinir ve bu aşamada yapılacak programın kullanım ömrü, programın kullanım düzeyi ve hangi amaçla kullanılacağı gibi soruların cevaplarına bakılarak programlama dili seçilir. Dil seçimi bazı kriterlere göre yapılmaktadır, örneğin kısa sürmesi ve görsel tasarım içermesi, veritabanı iletişimi yoğun kullanılması gereken bir program yapmamız gerekiyor olsun. Bu durumda Assembly dili ile yola çıktığımızda bahsedilen proje birkaç kişilik deneyimili bir programcı grubu ile birkaç yıl alır. C ile iki programcı aynı işi üç dört ayda VisualBasic veya Delphi ile bir programcı bahsedilen işi bir iki aya yakın bir sürede yapabilir.
Başka bir açıdan örnek verirsek örneğin bir ekran kartı programlamamız gerekiyor ve bu kartın driver’ını ( sürücüsünü ) biz yazacağız. Bu durumda bu işi VB veya Delphi ile yapmamız imkansızdır, kullanmamız gereken diller öncelikle Assembly ve C/C++ olmalıdır.
Evet, programlama dillerinin kendi alanları vardır ve her dil kendi branşında kullanıldığı sürece başarılı ve etkili kullanılmış olur. Buraya kadar anlattığımı özetlersem.
Bir bilgisayar programı yazmak için belli aşamalar vardır ve bu aşamalar geçildiğinde kodlamaya başlanabilir. Bunlar:
Analiz ile gerçekleştirilmek istenen proje tasarımlanır ve parametreleri araştırılır.Algoritma ile adımlar tayin edilir. Dil seçimi ile en uygun programlama dili seçilir. Ve kodlamaya başlanır…
Kod yazıldıktan sonra da bazı aşamalardan geçer bunlar da genel olarak :
Bilgisayar programcıları işini zevkle yapan ve işini bir hobi edinmiş insanlardan oluşur, en azından öyle olmalı. Aksi halde yoğun konsantrasyon ve sabır isteyen bu işi yapmak aşırı zorlaşır. Neyse… Programlama dillerinden bahsediyorduk Programlama dilleri kendi aralarında sınıflara ayrılmışlardır. İnsanın en zor öğrenebileceği, anlayabileceği yani 1100101 gibi makina kodlarına yakın diller en düşük seviyeli(low level) programlama dilleri, insanın en kolay anlayıp kullanabileceği ve insan diline yakın özellikler gösteren diller ise en yüksek seviyeli(high level) programlama dilleridir. Şimdi bu sınıflandırmaya örnekler verelim;
Evet birçok kişi bilgisayar programcılarının ne ile uğraştığını bilir fakat nasıl uğraşıp neler yaptığını ne gibi kafayı yedirten şeyler yaptığını pek bilmez… Bu konulara blogumda biraz özet olsa da değineceğim. Önce bilgisayar dünyasında sıkça kullanılan bir kelimeden bahsedeyim yazılım…
Yazılım(software) kelimesi bilgisayar programlama dilleriyle oluşturulan dökümanları, dosyaları ifade eder. Yani bilgisayarınızda işletilmek, çalıştırılmak üzere tasarımlanmış dosyalar yazılım kapsanına girer.
Bu dosyalar nasıl yapılır ?
Microsoft diyoruz ediyoruz dünyanın 1 numarası diyoruz ama bu microsoftun hiçmi rakibi yok arkadaşaım ya:) valla bence microsofta kafa tutacak kimisi yeni kurulmuş kimisi hala eski ve yerinde sayıyo ama yıkılmıyo var oğlu var listelersek kim bunlar bakalım..
başı çeken tabiki Apple yıllardır rakibiydi birçok makale yazıldı çizildi windows çakma imac dendi vs. vs. sonra arama motorumuz androidin yapımcısı google geliyor.. ve sonra Amazon,Oracle,IBM,Red Hat,VMWARE,Sony,Cisco,Nintendo,RIM,Mozilla liste böyle giderr..
şimdilik bu kadar makaleme burda son vermek istiyorum kalın sağlıcakla..