Dr. Volkan Tunalı'nın Kişisel Blogu

Bilgisayar, Teknoloji, Bilim, Sanat

Archive for the ‘Bilişim-Teknoloji’ Category

Katmanlı Tasarım Yaklaşımı

leave a comment

Bir yazılım sistemini tasarlarken sistemi kullanıcı arayüzünden veritabanına kadar birbiriyle etkileşim halindeki çeşitli katmanlardan ya da üst üste bloklardan oluşan bir bütün olarak düşünmek gerekir. Burada en üst katman kullanıcı arayüzü, en alt katman ise veritabanı olarak düşünülebilir. Tabi ki her sistemin en alt katmanı veritabanı olmak zorunda olmadığı gibi en üst katmanın kullanıcı arayüzü olmak zorunda değildir. Ancak genelde böyle olduğunu düşünmek çok da yanlış olmayacaktır. Genellikle de veritabanı katmanının üzerinde bir Veri Erişim Katmanı (Data Access Layer – DAL), DAL’ın üzerinde ya da onunla bütünleşik bir Persistence katmanı, daha üzerinde de Business Layer dediğimiz sistem çapındaki işleyişi denetleyen katman yer alır. Sistemin gereksinimlerine göre bu katmanların sayısı arttırılabilir ya da azaltılabilir.

Yazılım sistemi geliştirirken katmanlardan oluşan yapısal bir düzen oluşturmanın çeşitli avantajları vardır:

  • Fonksiyonları belirli katmanları kodlamak daha kolaydır ve daha az hata ile sonuçlanır.
  • Sistemi bu katmanları kullanarak oluşturmak daha az karmaşık ve daha az zahmetlidir.
  • Sistemi yeni gereksinimlere ve değişikliklere adapte etmek daha kolaydır.
  • Hata (bug) bulmak ve gidermek daha kolaydır.
  • Sistemin başka yazılımcılar tarafından anlaşılması ve öğrenilmesi daha kolaydır.
  • Herhangi iki katman arasına yeni bir katman ilave etmek ya da aradaki bir katmanı çıkartmak katmanlı yapı kullanılmayan bir sistemde aynı amaca yönelik yapılması gerekecek revizyona göre genellikle daha az maliyetlidir.

Sistemde yer alacak katmanları belirlerken ve tasarlarken de şu ilkeler doğrultusunda hareket edilmelidir:

  • Her katman sadece belirli bir fonksiyonu ya da fonksiyon grubunu içermelidir. Farklılaşan fonksiyonlar söz konusu olduğunda başka bir katmana taşınmalı ya da yeni bir katman yaratılmalıdır. Dolayısıyla katmanların sayısı fonksiyonalite açısından farklılaşan ünitelerin sayısı olacaktır.
  • Katmanlar arası arabirimler tasarlanırken bilgi akışı minimum düzeyde olacak şekilde tasarlanmalı.
  • Tabi ki her alt katman üstündeki katmana bir servis sağlamalı. Tersi yönde bir hizmet sunumu ya da bağımlılık söz konusu olamaz; böyle bir durum oluşuyorsa tasarımda bir sorun var demektir.
  • Bir katman genellikle altındaki bir katmandan servis almalı, çok gerekmedikçe bu katmanı atlayıp daha alt bir katman ile haberleşmemelidir. Ama buna istisnalar söz konusu olabilir.

Özetle, yazılım geliştirirken fonksiyonel birimlerin birbirinden kesin ve net sınırlarla ayrıldığı katmanlı bir yaklaşım projenin ilk zamanlarında uğraştırıcı ve zaman alıcı görünse de sonrasında getireceği avantajlar ile bu zaman kaybı fazlasıyla telafi olacak, bu yaklaşımın yararları sistemin geliştirilme sürecinde görülecektir.

Written by vtunali

Haziran 4th, 2009 at 1:04 am

Windows XP Dosya Arama Özelliği Bozulduysa

one comment

Bir süredir Windows XP Home Edition kurulu bilgisayarımda dosya arama yapmak istediğimde gelen arama ekranında sol bloktaki arama seçenekleri görünmüyor, haliyle de hiçbir şekilde arama yapamıyordum. Uzun araştırmalar sonucunda bulduğum aşağıdaki adreste yazılı işlemleri yapınca sorunum çözüldü. Belki birinin işine yarar diye hem adresi hem de benim kullandığım prosedürü burada yayınlıyorum.

http://www.winhelponline.com/blog/fix-xp-search-companion-blank-window/

Fixing Windows XP Search Companion User Interface

1. Login as Administrator or equivalent.

2. Click Start, Run. Execute the following commands:
regsvr32 /i %windir%\srchasst\srchui.dll
regsvr32 %windir%\system32\jscript.dll

You should see the message DllRegisterServer in <filename.dll> succeeded. for each DLL registered.

Logoff and login back (just in case the changes don’t take effect) and check if the Search Companion User Interface is displayed correctly.

Bu prosedür benim için yeterli oldu. Yeterli gelmezse ikinci bir yol da yine aynı sayfada anlatılıyor.

Written by vtunali

Mayıs 7th, 2009 at 9:49 am

Posted in Bilişim-Teknoloji

Tagged with , , ,

After the Software Wars

leave a comment

After the Software WarsKeyifle okunacak ya da en azından göz atılacak, eğlenceli bir kitaptan daha bahsetmek istiyorum. Adında da yazdığı gibi yazılım endüstrisinin devlerinin tescilli/patentli (İng.proprietary) yazılımlarına karşı açık kaynaklı özgür (bedava olarak çevirsek daha mı anlamlı olur acaba :) ) yazılımların ve yazılım servislerinin savaşını anlatan ilginç bir kitap.

Kitapta yoğun bir şekilde Linux’un yaygınlaşmasının ve gücünün ardındaki etkenler ile Linux’un bu başarısına karşılık Microsoft’un yaptıkları/yapabildikleri üzerinde duruluyor. Linux-Windows-Mac gibi işletim sistemi savaşlarının yanı sıra OpenOffice.org-MS Office gibi son kullanıcı ürünleriyle birlikte Sun’ın Java’sı ve Microsoft’un programlama dilleri gibi geliştirme araçları da karşı karşıya getiriliyor.

Kitapta ayrıca patentlerden ve telif haklarından da bahsediliyor. Daha önce tanıtmaya çalıştığım Math You Can’t Use: Patents, Copyright, and Software adlı kitabın geniş olarak üzerinde durduğu programların da soyut matematiksel kavramlardan ibaret olduğu ve patentlenemeyeceği düşüncesi de işleniyor.

Son olarak kitaptan Definition of Free Software bölümünden bir alıntı yapalım:

Richard Stallman 4 temel yazılım özgürlüğü tanımladı:
1. Hangi amaç için olursa olsun programı çalıştırma (*) özgürlüğü.
2. Programın nasıl çalıştığını anlama ve gereksinimlere göre adapte etme özgürlüğü.
3. Programın bir kopyasını komşunuza verebilme özgürlüğü. Onları yaratmaya ve göstermeye yarayan programları paylaşmadan fikirleri paylaşmak imkansızdır.
4. Programı ilerletme, yeni sürümü kamuya dağıtma ve böylece kamunun bundan yararlanmasını sağlama özgürlüğü.

(*) “to run the program” ifadesini “programı koşturmak” şeklinde çevirenleri hiç anlamıyorum, anlamak istemiyorum.

Kitabın Adı: After the Software Wars
Yazarı: Keith Curtis
ISBN: 9780578011899

Kitabın önsözünde kitabın dijital kopyasının serbestçe dağıtılabileceği, edinmek isteyenlerin lulu.com üzerinden indirmelerinin uygun olacağı belirtiliyor. Bu yazıyı yazdığım sırada lulu.com’da boş bir sayfa geliyor olsa da şansınızı denemek isteyebilirsiniz.

Written by vtunali

Mart 27th, 2009 at 11:58 pm

Math You Can’t Use: Patents, Copyright, and Software

leave a comment

Math You Can't Useİlginç bir kitap buldum. İlginçliği şurada: kitapta deniliyor ki yasalar matematiğin ve matematiksel olguların telif hakkına tabi tutulamayacağını söylerken, “matematiğin çocuğu” olan bilgisayar bilimlerindeki yazılımların telif hakkına tabi olduğunu kabul ediyor.

Buradan yola çıkılarak yazılımlara uygulanan telif hakkı kavramının yazılımın algoritmasına mı uygulanması gerektiği yoksa yazılımın metin halindeki koduna mı uygulanması gerektiği, telif hakkının hangi durumlarda ihlal edildiği hangi durumlarda edilmediği gibi konular derinlemesine tartışılıyor.

Kitabın girişinde ise ilginç bir örnek veriliyor:

function onExit(){
popup = window.open("pop.html", "Don't go!");
popup.focus();}

Genelde reklam gösterimi amacıyla tarayıcı penceresi kapatılırken başka bir tarayıcı penceresi açılmasını sağlayan yukarıdaki 3 satırlık JavaScript kodunun 14.05.2002 tarihli ilgili patent ile koruma altına alındığı ve bu kodun izinsiz kullanımının yasa ihlali olduğunu biliyor muydunuz? Hatta bu patentin JavaScript dışında bu işi yapabilecek bütün dillerdeki (bugün henüz icat edilmemiş diller de dahil olmak üzere) kodlarını da kapsadığını biliyor muydunuz? Bu patent 2018′de sona erecek ve bu 3 satırın bütün kombinasyonları artık Public Domain (kamu malı) olacak.

Kitabın Adı: Math You Can’t Use: Patents, Copyright, and Software
Yazarı: Ben Klemens
ISBN: 9780815749424

Written by vtunali

Mart 16th, 2009 at 11:34 pm

Refactoring Databases: Evolutionary Database Design

leave a comment

Refactoring DatabasesYazılım geliştirmede önemli aktivitelerden biri özellikle Uç Programlama (Extreme Programming XP) ile daha fazla ön plana çıkan Refactoring (yeniden düzenleme) işlemidir. Yeniden düzenlemenin amacı tasarımı ya da kodu iyileştirmek, kalitesini yükseltmektir.

Scott Ambler ve Pramod Sadalage, “Refactoring Databases: Evolutionary Database Design” isimli kitaplarında yeniden düzenlemenin veritabanı sistemlerinde uygulanmasına yönelik özel teknikleri anlatıyorlar.

Written by vtunali

Mart 7th, 2009 at 9:51 pm