Archive for April, 2010

  • Apr
  • 12
  • 2010

Yazılım karmaşık bir kavram…mı acaba?…

Tags: | View: 555 | Comments:

Yazılım karmaşık(kompleks) bir kavram mıdır?

Aslında evet ya da hayır şeklinde cevabı olan bir soru değil bu. Ya da bu şekilde cevaplanması gereken bir soru değil. Bu sorunun cevabını irdelemeden önce, neden böyle bir soru sorup, ortamı geriyoruz önce bunu anlayalım…
Bu soruyu sormamızın amacı, önümüze çıkacak olan karmaşık problemleri çözmek için nasıl bir yol izleyeceğimizi kestirebilmek. Bir yazılımın karmaşıklığını düşünmek, geliştirme sürecinde ortaya çıkabilecek, planda olmayan engelleri ortaya çıkarmak adına oldukça faydalıdır.

Neden bu soruya cevap aradımızı anladıktan sonra, cevabını bulmak daha kolay olacaktır. Yazılım kavramı, yeri geldiğinde oldukça karmaşık, içinden çıkması zor, bir o kadar da sıkıntılı olabilir. Ama aynı şekilde çok kolay da olabilir. Bunların bir kaç nedeni var. Birazdan bu nedenlere geçiyor olacağım.

Yazılımda karmaşıklık dendiğinde genelde, sistemi oluşturan bileşenlerin bir birleri olan ilişkileri ya da bileşenlerin kendi içerisinde çağırdıkları diğer alt bileşenlerin sayısı gibi şeyler hesaplanır. Bunun için çeşitli formüller ve yaklaşımlar var, aslında tamamen ayrı bir başlık altında incelenmesi daha doğrudur. Ama biraz daha yukarıdan bakıp karmaşıklığı daha net görmeye çalışacağız.

Yazılım da karmaşıklığa neden olabilecek faktörler “Gereksinimler”,”Teknoloji” ve “İnsan” olarak 3 ayrı başlıkta toplanabilir.

Gereksinimler

Karmaşıklığa yol açabilecek en büyük etken, yazılıma ihtiyaç duyulan, yazılımın yaşamsal döngüsünü başlatan “Gereksinimler”dir. Gereksinimlerden dolayı, teknik anlamda oldukça kolay bir operasyon, oldukça karmaşık bir hal alabilir. Aslında bu karmaşıklık bazen kaçınılmaz olup, diğer başka faktörler ile minimum seviye indirilebilir.
Mesela bir sisteme kayıt olma işlemini örnek olarak alalım. Sistem için ad,soyad,TC Kimlik No. ve e-mail anlamlı olsun diyelim. Oldukça basit bir şekilde sisteme bu bilgileri alan bir arayüz yapıp, bu bilgileri sistem altına kayıt edebiliriz. Şimdi çeşitli ihtiyaçlardan dolayı, sistemi tekrar ele alalım…Kayıt işlemi sırasında TC Kimlik No. geçerli bir numara olduğundan emin olmamız gerekmekte. Ayrıca e-mail adresinin formatının geçerli bir e-mail adresi olduğunun da kontrolü gerekmekte. Ek olarak, e-mail adresinin gerçekten karşılığının olduğunu kayıt sırasında teyit etmemiz gerekmekte. Görmüş olduğunuz gibi bir kaç basit gereksinimden dolayı, ilk baştaki kayıt işlemi biraz daha karmaşıklaştı. Aynı anda 500.000 kişinin veri girişi yapabileceği bir gereksinim oluştu diyelim sonra da…Bir de farklı arayüz ortamlarında(mobil,web…vs.) giriş işleminin yapılması gerektiğini de düşünelim. İlk baştaki kayıt işlemi, son haline göre oldukça karmaşık bir hal aldı.

Teknoloji

Teknoloji kavramı, yazılımın yaşam sürecinde beyin görevini gören bir kavramdır. İnsanoğlu beynin karmaşıklığını çözememişken, teknoloji de yazılımın karmaşıklığına büyük etken sağlar aslında. Kullanılan teknoloji, yazılımın karmaşıklığına ayrıca yol da verir. Yani X teknolojisi ile başladığınız bir yazılım, gereksinimlerden dolayı Y teknolojisinden de az biraz kullanmanızı gerektirebilir. Bundan dolayı, yazılımınızın karmaşıklığı doğal olarak artmış olur. Yukarıda bahsetmiş olduğum kayıt örneğini bu açıdan yine ele alalım. İlk başta basit bir masaüstü uygulaması ile .NET Framework kullanarak kolayca kayıt işlemini yapabiliyorkan, aynı uygulamayı kiosk tarzı ya da belli bir amaç için çalışan cihaz üzerinde çalıştırmak istediğimizde C++ ile çok daha kolay yapabiliyor olabiliriz. Ya da milyonlarca kişinin sahip olduğu cep telefonlarında Java ile cep telefonlarına uygulama yazmak işimizi daha kolaylaştıracaktır. Bundan dolayı yazılım geliştirme sürecinde kullanılacak teknoloji, karmaşıklık adına oldukça önemlidir.

İnsan

Yazılımı kullanıcak ve geliştirecek kişi yazılımın yaşam sürecine direk olarak etki eder. Bu da zaman içerisinde yazılımın karmaşıklığını etkileri. Önce kullanıcı açısından bakalım. Yazılımı kullanacak olan kullanıcı belli ihtiyaçlarını karşılamak için yazılıma ihtiyaç duymuştur mutlaka. Genellikle bu ihtiyaçlarını önceden bir şekilde karşılayabildiği için, belli alışkanlıkları vardır. İşte bu alışkanlıklar, kullanıcının ne istediğinde önemli etken olabilmektedir. Birden fazla kullanıcı olduğundan dolayı da bu etki oldukça büyük olacaktır. Geliştirici açısından ele aldığımızda, karmaşıklık kat sayısı oldukça artabiliyor. Geliştirme sürecinde yer alacak kişilerin bilgi birikimleri, hakim oldukları teknoloji ve tecrübeleri, yazılımı ister istemez karmaşıklaştıracaktır. Bir yazılımcı, tecrübelerinden dolayı, X işini oldukça kolay yabiliyorken, aynı işi başka bir yazılımcı daha zor ama daha etkili bir şekilde yapabilir. Bu tarz yaklaşım farkları, yazılımın karmaşıklığında büyük etki yapabilir.

Başka faktörler de yazılımın karmaşıklığında etken olabilir tabi ki. Ama bu 3 kavramın en önemli ve etken olduğu kanısındayım. Ayrıca yazılımlar, doğası itibari ile mutlaka karmaşık olacaktır. Önemli olan bu karmaşıklığa yol açabilecek şeylerin farkında olup, karmaşıklığı minimuma indirmek. Neyse çok karıştırmadan,bitiriyorum bende…:) Şimdilik bu kadar…

  • Apr
  • 12
  • 2010

Visual Studio 2010 ve .NET Framework 4.0 hazır ve nazır…

Tags: , , | View: 792 | Comments:

Bugün itibari ile Visual Studio 2010 ve .NET Framework 4.0′ın son sürümleri çıkmış durumda. Akşam saatlerinde ilgili yerlerinden indirilebilir veya satın alınabilinir durumda olacak.Gözünüz aydın…:)

Yarın da Silverlight 4.0 sürümünün son hali ile tanışıyor olacağız. Son hazırlıklarınızı yapın…

  • Apr
  • 11
  • 2010

Yaşasın demokrasi…

Tags: | View: 325 | Comments:

Bir konuda büyük çelişki içerisindeyim…”Blog” tarzı bu kendi sitemde, bazen sadece belli bir kesimin anlayabileceği teknik yazılar bazen de kimsenin anlamadığı yazılar yazmaktayım. Şu zamana kadar ikisini iç içe sunuyordum…Çünkü bir şekilde iki kategoride benim hayatımın içinde yer alan kavramlar. Şimdi bu iki ayrımı ciddi bir ayrım olarak düşünmeli ve komple ayırmalımıyım sizce…Yani yazılım ile alakalı şeyleri başka bir platformda, diğer anlayamadıklarımızı da başka bir platformda mı sunmalıyım…Ha, bir yardımcı olun be,hadi…

20 Nisan’da süresi dolacak bir anket koyuyorum…

Minepla.net'in içeriğini, teknik ve diğer olarak iki farklı kategoriye bölüp, öyle bir sunum mu yapsam acaba?

  • Evet bence yap (53%, 10 Votes)
  • Hayır böyle iyi (47%, 9 Votes)

Total Voters: 19

Loading ... Loading ...
  • Apr
  • 09
  • 2010

Sineklik Part II

Tags: | View: 288 | Comments:

Önceki yazılarımdan bir tanesinde bir kaç sinek resmini paylaşmıştım sizle…Bir kaç tane daha paylaşıp, öldürdüğümüz sinekleri analım…

Bunlar öncekilerden daha yaratıcı…Neyse karar sizin…

  • Apr
  • 06
  • 2010

Visual Studio 2008 ve “A selected drive is no longer valid” hatası

Tags: | View: 237 | Comments:

Visual Studio 2008′e kurulum sırasında eklemediğiniz özellikleri, daha sonra eklemeye karar verdiğiniz de başlıkta ki hatayı,  ”A selected drive is no longer valid” alıyorsanız, yapmanız gereken çok can sıkıcı bir işlem var. Bu hatanın sebebi, Visual Studio 2008 Service Pack 1′i yüklemiş olmanız. Saçma ama ne yazık ki bundan dolayı… Haa buna rağmen illa kurmam gerekiyor diyorsanız, öncelikle Visual Studio 2008 Service Pack 1′i sisteminizden kaldırmanız gerekmekte. Daha sonra istediğiniz ek özelliği kurabilecek duruma geleceksiniz. Sonra tabi Service Pack 1′i tekrar kurmanız gerekecek. Ama ama önceden bir de Team Explorer ile de çalışıyorduysanız vay halinize…Tekrar bir Team Explorer kurulumu yapmanız da kaçınılmaz…

Ama biliyormusunuz, bunların hiç biri Visual Studio 2010′da yok….

  • Apr
  • 06
  • 2010

Windows Server 2008′de Disk Cleanup nerede?

Tags: | View: 512 | Comments:

Bilmem, nerde?

Windows Server 2008′de “Disk Cleanup” yapmak isterseniz, eski alışkanlıklarımız ya da bildiklerimiz bizi yarı yolda bırakacaktır. Temizlemek istediğimiz diskin özelliklerinden “Disk Cleanup” a ulaşamıyorsak, yapmamız gereken küçük bir ekleme var.

Windows Server 2008′in “Manage Server” arayüzünü kullanarak, yeni bir “Feature” eklememiz gerekmekte. “Desktop Experience” olarak geçen özelliği eklemeniz gerekmekte. Ama ne yazık ki çok mantıklı bir yol değil bu, çünkü  ”Desktop Experience” ile bir server için gereksiz ne kadar şey varsa da yüklüyoruz ne yazık ki…

  • Apr
  • 05
  • 2010

.NET 4.0 ile neler değişiyor…

Tags: | View: 785 | Comments:

Bu ay içerisinde .NET 4.0 versiyonu yayınlanacak bildiğiniz üzere. Yaklaşık bir yıldır, çeşitli platformlarda .NET 4.0 ve Visual Studio 2010 beraberinde tanışacağımız özellikler gösteriliyor, anlatılıyor. Kısacası hazırız aslında .NET 4.0’a…(!)

Peki neden .NET Framework,”4.0” oldu?…Ya da v4.0 altında gerçekten neler oldu biliyor muyuz?…Açıkcası kişisel olarak, biz yazılımcıların bazı önemli değişikliklere çok önem verdiğimizi düşünmüyorum. Yani hem kendimden, hem de gözlemlerime dayanarak söylüyorum bunu. İstisnalar var tabi ki bunu da biliyor, takip ediyorum…Neyse…Bundan dolayı da .NET Framework’ü hakkını vererek kullanıp, uygulamalar geliştirebildiğimize inanmıyorum.

1.0,1.1,2.0,3.0,3.5,4.0 şeklinde gidiyoruz bizde .NET Framework ile…Her versiyon aslında farklı bir yazılımcı jenerasyonu. En azından ben böyle düşünüyorum. 1.0-1.1 zamanında kendi master page yapısını oluşturan, 1.1’de kendi Ajax kütüphanesini yazan, 2.0’da kendi O/R mapping’ini yazıp Entity Framework’e kafa tutan bir çok kişi tanıyorum…AJAX’ı Microsoft’un çıkardığı bir yenilik sanan, arka tarafta işlerin nasıl döndüğünü bilmeyen kişiler de tanıyorum. Tabi ki artık bazı işlerin kolaylaşması, çok derinlerdeki olayların nasıl olduğu bilme gerekliliğini sorgular hala getiriyor. Ama eğer yazılım ile teknolojiye katma değer katmaya çalışıyorsak ve mühendislik yaklaşımından geliyorsak, nasıl olduğunu bilmesekte ne olduğunu bilmemiz gerektiğine inanıyorum.
Bundan dolayı .NET 4.0’ın derinliklerinde neler değiştiğini, kendi tecrübelerim ve öğrendiğim bilgiler doğrultusunda paylaşma gereği hissettim. Hani temeli iyi yaparsak, üst taraf daha sağlam olur yaklaşımı ile…

Öncelikle kendi çizmiş olduğum komik ama bence anlamlı resmi paylaşarak nasıl .NET 4.0’a geldik bunu hatırlayalım.

.NET 1.0 ve 1.1 bir çoğumuzun hatırlamak istemeyeceği bir dönem. “Karanlık Çağ” şeklinde adlandırılıyor olması sanırım çok da yanlış değil. .NET 2.0 ile beraber, temelli çok daha sağlam bir yapı ile geleceğe daha büyük umutlar ile baktık. Önceki versiyona göre daha istikrarlı ve ne olduğu daha belirgin bir framework’tü .NET 2.0.NET 2.0 ile mutlu mesut yaşarken, hızlı ilerleyen teknolojik kavramlar, .NET 3.0’ı attı önümüze…Yedik bir güzel…Hazmetmesi, adapte olması zordu…Yapı olarak fazla değişiklikler olmasa da, yapının üstüne gelen WCF, WPF, CS(Card Space),WF adaptasyonu zorlaştırdı biraz. Sonra .NET 3.5 çıktı…Biraz daha kolay hazmedelim diye .NET 3.0’daki yeniliklerin iyileştirildiği ve ek besin vitamini olarakta LINQ ve Entity Framework ile desteklenen bir versiyondu .NET 3.5
Şimdi de .NET 4.0…Çok daha kararlı, bazı şeylerin, önceki dönemlerdeki tecrübeler ile silinip atıldığı ve tekrar yazıldığı, parlak gözüken bir versiyon. İyileştirmelerden çok, geliştirmelerin olduğu, yenilikler ile teknolojik gelişmelere daha kolay ayak uydurabileceğimiz bir versiyon…

Peki neden farklı?

.NET Framework’de bulunan CLR, .NET 2.0 versiyonunda beri hiç değişmemişti. .NET 4.0 ile beraber CLR 4.0 ile tanışıyoruz. .NET 4.0 versiyonunda ki en önemli değişikliklerden biri de bu aslında. Peki neler değişti, neler gitti, neler geldi…

Garbage Collection değişiklikleri

CLR 4.0 ile beraber Garbage Collection tarafında iyileştirmeler yapılmış. Performans konusunda yapılan bu iyileştirmeler ile GC’nin çalışma algoritmalarında büyük değişiklikler var. .NET Framework tarafında yaratılan objeler belli koleksiyonlarda tutuluyor. Objeler yaşam sürelerine göre bu koleksiyonlar da konumlanıyor. GC’da bu koleksiyonlardaki objeleri yaşam sürelerine göre topluyor,yok ediyor…CLR 4.0’da bu işler artık daha hızlı.

İç içe çalışan CLR

CLR 4.0’ın bence en güzel yeniliklerinden biri de, içerisinde başka CLR versiyonlarının da çalışabilmesi. Ne demek oluyor bu açalım biraz daha…. .NET Framework ile çalışan ana uygulama tek bir CLR versiyonu yükleyebiliyordu. Bu da uygulamalarda destek sorununa neden olabiliyordu. Mesela CLR 1.0 versiyonu ile çalışan bir uygulamaya, CLR 2.0 versiyonu ile bir şey yazamıyorduk. CLR 4.0 ile artık bu sorun ortadan kalkıyor. Plug-in yazmak artık çok daha kolay olacak kısacası…Bunun ile ilgili bir örnek ilerleyen yazılarımda olacak, telaşa mahal yok…

Yakalanamayan hatalar(Ayrıntılar için CSE’ı google da aratın)

Önceki CLR versiyonlarında bazı unmanaged işlemlerden doğan hataları yakalamak normal try-catch blokları ile mümkün değildi. InvalidMemory,AccessViolation falan filan gibi. CLR 4.0 ile artık bu tarz hataları yakalamak daha kolay. Bunun için [HandleProcessCorruptedStateExceptions] özelliğini programımızın başlangıcına eklememiz yeterli.

Profiling yenilikleri

Uygulamaları profile etmek için önceki CLR versiyonlarında üretim ortamına Visual Studio kurmamız gerekmekteydi. Artık buna gerek yok…

Dump Debuging

Belli arayüzler ile artık uygulamalarımızda dump debuging yapabileceğiniz. Hata olduğunda “Gönderim mi,göndermiyim mi” sorusu ile başbaşa kaldığımız ekran .NET 4.0 ile kendi uygulamalarımız adına biraz daha anlam kazanacak.

Çok çekirdekli .NET

Ay çekirdeği tadındaki bu en güzel yenilik, artık çok çekirdekli işlemcilerde, bu çekirdeklerden faydalanmamızı sağlayacak Parallel Extensions olarak karşımıza çıkıyor. CLR thread’leri artık bu çekirdekler arasında dağıtılabilinecek…Şahane…

Daha bir çok ilginç yenilik var. Zamanla gerektiği kadar bunları öğrendikçe,kullandıkça paylaşmaya çalışacağım. Yukarda dediğim temel olayından dolayı…Neyse şimdilik bu kadar…

  • Apr
  • 04
  • 2010

Ankara’nın yeni bir festivali mi oluyor acaba…

Tags: | View: 231 | Comments:

28-29-30 Nisan 2010 tarihlerinde Ankara’da yeni bir festival gerçekleşecek. Sepultura’dan, Deathstars’a,Jay-Jay Johanson’dan Hayko Çepkin’e oldukça geniş ve güzel bir kadrosu var…Rock ve metal musikiden hoşlanan Ankaralılara şiddetle tavsiye ediyorum. Ayrıntılar aşağıda bir yerlerde işte…

The Profestival Rock 2010 from The Prostar on Vimeo.

Ayrıntılar: http://www.theprofestival.com/

Biletler: http://www.biletix.com/perfList.htm?id=247&pst=EVENTGROUP

  • Apr
  • 04
  • 2010

Bu haftanın grupları…

Tags: | View: 255 | Comments:

Bu hafta bunları dinlemişim,etmişim…Özellikle IAMX’i ve Deftones’u yedim yuttum…IAMX konseri olduğu için özel ilgi gösterdim hatta…Ama 3 Nisan ki konserden sonra ilginin boşa gitmediğini gördüm sevindim…Son zamanlarda izlediğim en iyi performansı sergiledi IAMX. Umarım tekrar gelirler…Gelmeleri lazım…Deftones’un yeni albüm de şahane…Biraz zor bir albüm aslında, ama biraz sabır ile kolay aşılabilen bir zorluk…Umarım Deftones’u da görürüz yine yakında…