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

Bilgisayar, Teknoloji, Bilim, Sanat

Archive for the ‘Bilişim-Teknoloji’ Category

Cloud Computing’in Türkçe Karşılığı

2 comments

Son zamanların moda bilişim terimlerinden biri “Cloud Computing“. Kime sorsanız başka bir tanımlama yapıyor, başka bir kavramı/olayı anlatıyor. Yeni öğrenilen sözcükleri iyi öğrenmeleri için öğrencilere cümle içinde kullandırırlardı ya, onun gibi, Cloud Computing’i gerçekten anlamak için onunla ilgili bir çalışmada yer almak, bir projemizde Cloud Computing içeren birşeyler yapmak gerekiyor galiba.

Ne olduğunın tam anlaşılamamış ya da anlatılamamış olması kadar Cloud Computing’e Türkçe karşılık bulmakta da güçlük çekildiğini görüyorum. “Bulut Bilgisayar”, “Bulut Hesaplama”, “Bağımsız İşletim”, “Bağımsız İşlem”, “Bulut İşlem”, “Bulut Bilişim” gibi bir çok çevirisine rastlamak mümkün.

Ben bunlardan en çok “Bulut Bilişim”i sevdim.

Ekleme: 29.03.2010 21:40
————————————–
“Bulut Bilgi İşlem” çevirisine de sıkça rastlıyorum. Ama “Bilgi İşlem” biraz eski bir terim, yerini uzun yıllardır “Bilişim”e bırakmış durumda. Ayrıca “Bilişim” terimi bilgi ve iletişim teknolojilerini de kapsayan bir terim olarak görünüyor. Bu nedenle ben hâlâ “Bulut Bilişim” demeyi tercih ediyorum.

Written by vtunali

Şubat 15th, 2010 at 3:02 pm

Yedek Hayat Kurtarır!

leave a comment

Hiç kimse veri ya da program kodu kaybetmeyi istemez. Ama istenmeyen şeyler her an başımıza gelebilir. Veri ve kodlarımızı emanet ettiğimiz cihazlar her an bozulabilir. Belgelerimizin/kodlarımızın bulunduğu dizüstü bilgisayarımız çalınabilir. Kritik bir dosyanın yanlışlıkla silindiğini farkettiğimizde kurtarmak için çok geç kalmış olabiliriz. Dosyalarımızın birkaç gün önceki haline bakmamız gerekebilir. Bütün bunlar ve benzeri durumlar az da olsa olasılık dahilindedir. Gerçekleştiklerinde zaman ve emek gibi maddi kayıpların yanı sıra prestij kaybına da neden olabilirler. Bu nedenle bu tür durumlara hazırlıklı olmak gerekir.

Hazırlıklı olmak iyi bir yedekleme planıyla mümkün olabilir. İyi bir yedekleme planı en son teknolojik cihaz ve yazılımlarla yapılan değil, pratik bir şekilde sürekli uygulanabilen, geri dönüşü kolay, güvenilir olan plandır. Önemli olan planın nasıl işlediği değil ihtiyaç duyulduğu an işe yarayacak olmasıdır. Bir günden daha geriye dönülmesi kabul edilemez bir sistemde haftalık alınan yedeğin hiç bir anlamı olmaz. Ya da dosyaların aynı diskte bulunan bir klasörde yedeklenmesi de kısa vadede çözüm gibi görünse de uzun vadede aynı riskleri barındırmaya devam eder. Dolayısıyla ihtiyaçlara ve risklere göre bir yedekleme stratejisi belirlenmelidir.

Program kodları için ise hem yedekleme hem de sürüm yönetimi için Subversion vb. bir konfigürasyon yönetim aracı yararlı olabilir. Bir ekip çalışması değil tek bir kişinin geliştirdiği bir proje bile olsa bu tür bir araç ile her aşamanın otomatik bir yedeği de alınmış olur. Kod deposu (repository) başka bir sistemde saklanacağı için kayıp riski de belli ölçüde azaltılmış olur.

Yedekleme genelde önemsenmeyen, ihmal edilen, zaman ve bütçe ayrılmayan, önemi ise maalesef felaket yaşandıktan sonra anlaşılan bir operasyon. Yazılım geliştiriciler olarak kendi kodlarımızın, dokümanlarımızın ve verilerimizin yedeklenmesini önemsediğimiz gibi müşterilerimizi de yedeklemenin önemi hakkında bilgilendirmeli, onlara uygun bir yedekleme stratejisi oluşturmaları konusunda yardımcı olmalıyız. Yedek hayat kurtarır!

Written by vtunali

Ocak 21st, 2010 at 11:47 am

Yazılımın Bakımı (Software Maintenance) Nedir?

leave a comment

Zaman içerisinde değişim ihtiyacı duyulmayacak bir yazılım sistemi düşünülemez. Kullanıcı ya da müşterilerin ihtiyaçlarındaki değişimlerin sisteme yansıtılması gerekir. Ayrıca, yeni bir donanım ya da yazılım altyapısı nedeniyle sistemin çalışma koşulları değişebilir. Tabii ki testler sırasında farkedilmeyen hatalar tespit edilebilir ve giderilmesi gerekir.

Yazılımın dağıtılması ve kullanıma başlanmasından sonra yazılımda yapılacak değişiklikler yazılımın bakımı (software maintenance) olarak adlandırılır. Bu değişiklikler basit kodlama hatalarının düzeltilmesi (bug-fixes) şeklinde olabileceği gibi tasarımdan kaynaklanan hataların giderilmesi gibi daha kapsamlı değişiklikler şeklinde de olabilir. Yazılımın bakımı aslında yazılımın evrimleşmesidir. Yazılımın yaşamına devam edebilmesi için gerekli değişikliklerin uygulanmasıdır.

Genel hatlarıyla 3 bakım türü vardır:

1. Düzeltici bakım: Tespit edilen hataların giderilmesi işlemidir. Kodlama hatalarını düzeltmek genelde az maliyetlidir. Tasarımdan kaynaklı hataların giderilmesi ise bazı sistem bileşenlerinin baştan yazılmasını vb. gerektirebilir ve nispeten yüksek maliyetlidir.

2. Uyarlayıcı (Adaptif) bakım: Yazılımın yeni bir çalışma ortamına uyarlanmasıdır. Bu bir donanım platformu değişikliği olabileceği gibi (32 bitten 64bite geçiş gibi) farklı bir işletim sistemine uyarlama şeklinde de olabilir (kodun Windows’dan Linux’a taşınması gibi). Ayrıca, veritabanı sistemi değişikliği de bu türden bir bakım olarak görülebilir (MS SQL Server bağımlı kodların Oracle’a uyarlanması gibi).

3. İyileştirici bakım: Sisteme yeni işlev ve özelliklerin eklenmesi, performansın arttırılması gibi bakım çalışmalarıdır.

80li ve 90lı yıllarda yapılan araştırmalar göstermiştir ki bakım çalışmalarının %65′i iyileştirici, %18′i uyarlayıcı ve %17′si düzeltici bakım şeklinde gerçekleşmektedir. Bu rakamları günümüzde de doğru kabul edebiliriz.

Genellikle bir sisteme sistem çalışmaya başladıktan sonra yeni bir işlev eklemek, aynı işlevin henüz geliştirme sürecindeyken eklenmesine göre çok daha maliyetlidir.

Written by vtunali

Kasım 30th, 2009 at 4:12 am

Database Smells

leave a comment

Programlamada “code smells” olarak bilinen bir kavram vardır: artık refactor (yeniden düzenleme) edilme zamanı gelmiş olan kod kendini belli etmeye başlar. Örneğin çok uzun metodlar, kopyala-yapıştır ile çoklanmış kod blokları kötü kokmaya başlar, temizliğe gerek vardır.

Scott Ambler ve Pramod Sadalage, “Refactoring Databases: Evolutionary Database Design” isimli kitaplarında veritabanı tasarımına “Database Smells” diye bir kavram getirdiler. Aşağıda, bir veritabanının yeniden düzenlemeye ihtiyacı olduğunun bazı göstergelerini kısa maddeler halinde bulacaksınız.

  • Çok amaçlı kolon: Eğer bir kolon birden çok amaçla kullanılıyorsa, muhtemelen o kolonu anlamlandırmak için kod tarafında ekstra çaba sarfediliyordur ve muhtemelen bu iş diğer bazı kolonlardaki değerlere bağlı olarak yapılıyordur.
  • Çok amaçlı tablo: Benzer şekilde, çeşitli türdeki varlıkları aynı tabloda saklamaya çalışmak da tasarımda bir kusur olduğunun göstergesidir.
  • Çoklanmış veri: Aynı verinin veritabanın bir çok yerinde bulunması zaman içerisinde tutarsızlıklar oluşmasına yol açabilir.
  • Çok fazla kolonu olan tablo: Bir tabloda çok fazla kolon olması genellikle o tabloda çeşitli türlerde varlıklara ait veri tutulmaya çalışılmasından ileri gelir.
  • Çok fazla satırı olan tablo: Büyük tablolar performans sorunlarını da beraberinde getirir. Mümkün ise bazı kolonların ya da bazı satırların başkta tablolara dağıtıldığı bir tasarıma gidilmesi ciddi performans kazancı sağlayacaktır.
  • Akıllı kolon: Akıllı kolon, kolon verisinin değişik bölümlerinin değiişik anlamlara geldiği kolonlardır. Örneğin, müşteri numarasının ilk 4 hanesi müşteri grubunu, sonraki 2 hanesi kayıt yılını vs. gösteriyor olabilir. Bazen de bir kolonda komple XML olarak veri tutuluyor olabilir. Ancak bu tür kolonlarda ayrıntılara inmek ekstra işlemlerin yapılmasını gerektirir. En iyisi bu tür kolonları yeniden organize etmektir.
  • Değiştirmekten korkmak: Eğer veritabanı şemasında bir değişiklik yaparak birşeyleri bozmaktan korkuluyorsa, o veritabanının yeniden düzenlenme zamanı gelmiştir. Eğer bu yapılmazsa, ileriye dönük olarak işler sadece daha da kötüleşecektir.

Ambler ve Sadalage, kitaplarında bu kötü kokular için yeniden düzenleme tekniklerini hem veritabanı şeması olarak hem de SQL ve çeşitli dillerde kod örnekleriyle anlatıyorlar.

Kaynak: “Refactoring Databases: Evolutionary Database Design“, Scott Ambler & Pramod Sadalage.

Written by vtunali

Kasım 21st, 2009 at 9:40 pm

Uç Programlama (Extreme Programming XP) Nedir?

leave a comment

Uç Programlama (XP), yazılım geliştirme süreci boyunca son derece kaliteli olmak koşuluylaçalıştırılabilir kod üretmeye odaklanmış bir yazılım geliştirme metodolojisidir. Yazılım geliştirme sürecinin en temel, en önemli ve final çıktısı ya da ürünü çalıştırılabilir kod olduğundan, XP metodolojisi sürecin en başından itibaren çalıştırılabilir kodu sürecin merkezinde tutmaktadır. İşte bu yüzden bu metodolojinin adı XP’dir.

Uç Programlama kısa adımlardan oluşan tekrarlı bir süreçtir. Her bir tekrar süresi birkaç gün ila birkaç haftadan daha uzun değildir. İlk adımın sonucunda geliştirilmekte olan sistemin minimum seviyede çalıştırılabilir bir örneği üretilmiş olmalıdır. Bu ilk adımdan sonraki her bir tekrar adımında bir önceki adıma göre daha fazla özelliğe sahip ve aynı zamanda iyileştirilmiş bir sürüm ortaya çıkarılması hedeflenmektedir. Bu şekilde sık tekrarlar ile sistemin bütünü
tamamanmış olacaktır.

Uç Programlama, her bir adımda genişletilebilirlik ve sürdürülebilirlik özellikleri bakımından yüksek kalitede kod üretimine önem vermektedir. Her bir adımın temel hedefi geliştirmek ve refactor etmektir. Geliştirmek, yeni işlevler ve özellikler eklemek demektir. Refactor etmek ise çalışan kodun işleyişine zarar vermeden kodun kalitesinin arttırılması amacıyla yeniden yapılandırılması demektir. Refactor etmek, Uç Programlamanın ısrarla üzerinde durduğu bir işlemdir.

Uç Programlama’nın özünde aşağıdaki uygulamalar yer alır:

  • Planlama: Her tekrar adımına basit bir planla başlanır ve gerekli oldukça bu planda değişikliğe ve iyileştirmeye gidilir.
  • Sık ve küçük sürümler: Her tekrar adımında çalışan bir sürüm temel hedeftir. Tekrarlamaların süresi de birkaç haftadan daha uzun olmamalıdır.
  • Basit tasarım: Tasarım mümkün olduğunca basit tutulmalı, gerektiğinde refactor edilmelidir.
  • Önce test: Kod yazılmadan önce yazılacak kodun testinin yazılmasıdır.
  • Refactor etme: Kod tekrarlarından uzak durmak, sade ve temiz kod elde etmek için sürekli olarak refactor edilmelidir.
  • Çift programcı: Kodun hep çiftler halinde yani eşli olarak yazılmasıdır.
  • Sürekli bütünleştirme (Continuos Integration): Her kodlama görevi tamamlanır tamamlanmaz ana sistemle bütünleştirilmelidir.
  • Haftada 40 saat çalışma: Geliştirme ekiplerinin verimli çalışabilmesi için aşırı çalışma saatlerinden kaçınılmalıdır.
  • Müşteri ile yakın iletişim: Müşterinin tam zamanlı olarak geliştirme ekibiyle yakın temas halinde bulunması ve sürece her an dahil olabilmesi gerekir.
  • Kodlama standartları: İsimlendirme, kaynak kod düzenleme ve dokümantasyon için yaygın standartların tüm ekip tarafından benimsenmesi gereklidir.

Written by vtunali

Kasım 18th, 2009 at 12:31 am