Çarşamba, Haziran 07, 2006

Yazılım Mimarisinde Veritabanının Yeri

Orta - Büyük çaplı herhangi bir yazılım belirli bazı kısımları tasarlanmadan hayata geçemez. (Kastettiğim bir yazılım yapılmadan önce mimarisi tamamen hazırlanmış olmalıdır şeklinde algılanmasın, agile modeller için bu geçerli değildir, yazılım geliştirme süresince de mimari ortaya çıkabilir).

Başlangıç seviyesinden daha yukarıda uğraşan her kişi böyle bir çalışmanın veya konseptin gerekliliğine inanmaktadır.

Bir yazılımın yapacağı işlevler, akışı, mekanizmaları belirlenir ve bunlara göre bir mimari oluşturulur. Bu konularda herhangi bir görüş ayrılığı veya problem yok.

Ancak, genel olarak yazılım sektöründe ülkemizde bir problem var, bu problem mimariyi veritabanından ibaret olarak görmektir.

Veritabanı, verinin saklanması ihtiyacı ile ortaya çıkan bir kavram olsa da, zaman içerisinde kendisine daha fazla iş yükler hale gelip, yazılımın çalışma mantığını da içerisine alabilecek bir yapı haline geldi. Oracle in bunda etkisi büyüktür demek yanlış olmaz, oracle forms ile tamamen veritabanı odaklı yazılımlar kolayca geliştirildi. Bu yazılımların hazırlaması ve öğrenmesi kolay, sonuçta data saklanacak ortam üzerinde çalışıyorsunuz, prezentasyon ile ilgili tüm konseptlerde oracle tarafından hazırlanarak kolay kullanımlı bir library haline getirilmiş durumda.

Buradan yola çıkılarak gelinen seviye, prezentasyonu başka bir dille yapmak ancak iş akışını gene veritabanı üzerinde yönetmek şeklinde oluştu.

Bu tür bir yazılım, tamamen veritabanı üzerine oturtulur. Sistemin değişik yerlerindeki değişik kod parçacıkları, veritabanına bazı kayıtlar atıp bazı kayıtlar alırak çalışır, bu data tutarlılığı açısından bir sorun teşkil etmese de, şu konularda sorun oluşturur.

  • Değişiklik
  • Tekrar Kullanılabilirlik
  • Bakım
  • Veritabanı Yazılımından bağımsız çalışabilme
  • Test edilebilirlik (Software testing)
  • Modülarite
  • Farklı disiplindeki kişilerin birarada çalışma zorluğu

    • Yazılımın tamamen veritabanına bağımlı olmasından ötürü yazılımcının veritabanına veritabanı ile ilgili kişinin yazılıma müdahele etmeden birşey yapamaması
  • Veritabanı hazır olmadan yazılıma başlanamama
Yazılım, sürekli yaşayan ve içerisinde her durumda değişiklik gerektiren bir yapıdır. Değişiklik olmayan yazılımlar çok küçük yazılımlardır, kullanılan yazılımlar ise sürekli büyür.

Tüm sistem mimarisi ve mantığı veritabanı içerisinde olursa, değişiklik külfeti çok büyük olur. En ufak özellik eklemek için en ufak hesaplama yapmak için veritabanını değiştirmek gerekir. Ayrıca, veritabanında gerekecek bazı performans değişiklikleri vb. de yazılımı doğrudan etkiler.

Eğer veritabanından yazılımı soyutlayabilirsek, o zaman istenilen tüm fonksiyonalite yazılım içerisinde olabilir. Sadece saklama işlemleri için veritabanı kullanılır ise, o zaman veritabanı yazılımını (Oracle sql server vb) değiştirmek de çok kolay olur.

Sistem veritabanına göre düzenlenmiş ise, tekrar kullanılabilirlik sıfıra yakın bir seviyede olur. Sistem çok fazla içiçedir ve bazı fonksiyonları çıkarıp bazı yenilerini eklemek, bazı modülleri çıkarmak, sistem tamamına müdahele etmeden imkansız gibidir. Dolayısı ile maliyeti artırır.

Eğer sistem veritabanına çok sıkı bağlı ise test edilebilirlik de mümkün değildir, testten kasıt manuel test değil yazılımsal testtir. Sistemin parça parça çalışıp çalışmadığını kontrol etmek, problemleri ortaya çıkmadan yakalamak için kullanılan yazılım testlerinin veritabanına çok sıkı bağlı sistemlerde oluşturulması çok güç olur.

Modülaritedeki zorluk, tekrar kullanımdaki zorluk gibidir.

Hiç yorum yok: