Tekrar Kullanılabilir Modüller
Yazılım sektöründen duyulan gereksinimler ve buna paralel olarak sektörde yer alan organizasyonların sayısı hızla artmaya devem ediyor. Gereksinimlere karşı üretilen çözümler arasındaki rekabette kızışmakta doğal olarak. Aynı alanda hizmet gösteren yazılım firmaları arasında seçilenin siz olması için rakiplerden farklarınız olması gerekmektedir.
Belki de en önemli farkınız tam ve doğru ürünü hızlı teslim edebilme kabiliyetinizdir. Yazılımlara gereksinim duyan teknolojiler o kadar hızlı değişiyor ki sizin bu değişimin arkasında kalmamanız için en az onun kadar hızlı ürün geliştirebiliyor olmanız gerekiyor. Günümüz yazılım organizasyonlarının bir çoğunda çeşitli alanlarda hizmet sağlıyabilmeleri için ellerinde sahip oldukları çekirdek modüller bulunmakta. Yeni bir ürün geliştirirken, bu sürecin hızlı işleyebilmesi için bu çekirdek üzerinde çalışıyorlar. Bu noktada çok önemli bir soru doğuyor. Acaba ana çekirdek bileşeniniz gerçekten tekrar kullanılabilir özelliklere sahip mi? Bu modüller üzerine yazılım geliştirmek sizin için bir işkenceye dönüşüyor olmasın!
Bu konuda geçmişe ait tarih olarak şaşırtacak bir bilgi, Japon yazılım geliştirme yaklaşımlarında 1984 yılında Matsumoto’nun ‘tekrar kullanımı’ yazılımın temel özelliği arasına almasıdır. Geliştirme sürecini de bunun paralelinde düzenlemiştir. Bu yaklaşım Avrupa ve Amerika’da yaygınlaşmıştır. Yazılım ürününüzün bir çok bileşenini tekrar kullanabilirsiniz. Öyleki; kullanıcı arayüzünü, alt sistemlerinizi, veri paketlerinizi ve hatta fonksiyonlarınızı bile ileride tekrar kullanılabilir geliştirebilirsiniz.
Tekrar Kullanımın Avantajları
Bu yaklaşımın en temel ve göze çarpan avantajı ürün geliştirme maliyetini azaltmasıdır. Tabiki bu durum eğer bu tekrar kullandığınız modülü geçmişte bu özellikte geliştirdiyseniz geçerli olacaktır. Sistematik olarak bu özelliği kullanmanın organizasyonunuz ve ürününüze katacağı diğer faydaların başında ‘güvenilir ürünler geliştirmek’ gelmektedir. Çünkü temel aldığınız çekirdek modülünüz bir çok defa testlerden geçmiş, gerekli iyileştirmeler daha önce yapılmış olacaktır. En azından, yeni geliştirmeyi düşündüğünüz modül ile karşılaştırıldığında bu yönden çok ileri düzeyde çıkacağı aşikardır. Proje yönetimi tarafından bakıldığında risk seviyesinde düşüş olacaktır. Çünkü elinizde doğruluğuna inandığınız modül veya modülleriniz bulunmaktadır. Kalite tarafında ise; belirli ve tanımlanmış bir standardın uygulanabilmesini kolaylaştıracağı gerçeği gözlenebilmektedir. Görülüyor ki, bu yaklaşım her yönden organizasyon ve ürün için faydalı olmaktadır.
Peki bu yaklaşımın zorlukları yok mudur? Bu modüllerin tekrar kullanım aşamasında ortaya çıkmaktadır zorluklar. Eğer modülün geliştirme aşamasında bu özelliği taşıyacak yaklaşımı sergileyemediyseniz, kullanım esnasında zorlanacaksınızdır ve bu işkenceye dönüşebilecektir. Tekrar kullanan yazılımcı bu modülün doğruluğuna ve tamlığına ikna olamıyorsa büyük bir problem var demektir. Bu durumun en temel çözümü bu modül için birim testlerin yazılıp yazılmadığının kontrolüdür. Modül için gerekli test işlevlerini yerine getirdiyseniz, tamlığı ve doğruluğu kullanan yazılımcıya kabullendirmeniz çok kolay olacaktır. Testleri çalıştırırsınız ve sonuçlar herşeyi ortaya koyar. Bir diğer nokta ise; kullanacak yazılımcının modülün dış arayüzüne hakim olabilmesidir. Olabildiğince basit ve kullanışlı bir arayüze sahip olması gerekmektedir bu modüllerin.
Kolay Taşınabilirlik ve Uyarlama
İşte yukarıda bahsettiğimiz her noktanın keşiştiği nokta ‘kolay taşınabilirlik ve uyarlama’dır. Bu modülden istenilen, kullananın gerek duyduğu konuda budur. Taşımada karşılaşılan problemlerin başında donanım altyapısının değişmesinden kaynaklanabilecek sorunlar gelmektedir.
Sunucunun, işlemcinin veya platformun değişmesinden doğabilir. Modülün yapacağı işletim sistemine ait işlevsel çağırmalar soruna yol açabilir. Kullanılan kütüphaneler bunlara bağımlı olabilir. Ve en kritiği, modülün çalışması sırasında ortaya çıkan sistem problemleridir. Tüm bunların modülün tasarımı sırasında ele alınması gerekmektedir. Görülüyor ki, bu özellikteki modüllerin ortaya çıkması sürecinde ciddi tasarım faaliyetlerinin uygulanması gerekmektedir ileride tüm bu problemlerle karşılaşmamak için. Göz yapar iken kaş çıkartmamak için bunların dikkate almalıyız!
Bileşenleri veya fonksiyonları tekrar kullanılabilir hale getirmek, kullanılan her türlü programlama dilinde geçerlidir. Şöyle ki, Ansi C veya C++ dillerinde göstereceğiniz yaklaşım ile bu özelliği ürünlerinize ekleyebilirsiniz. Fakat itiraf etmeliyim ki, nesneye dayalı programlama dillerinde bunu gerçekleştirmek daha kolay olabilmektedir. Bu dillerde tekrar kullanılan modüller veya nesneler daha kolay oluşturulabilmekte, dış arayüzleri ve diğer modüllere bağlılıkları daha belirgin ve kolay tasarlanabilmektedir. Ama unutmamak gerekir ki, sürücü seviyesinde bile tekrar kullanılabilir modüllerin gereksinimi duyulmaktadır. Günümüz bir çok yazılım sistemi bunun üzerine inşaa edilmektedir. Sistemler parçaların adeta bir logo olarak birleştirilmesinden ortaya çıkmaktadır ve bu kaçınılmaz hale gelmektedir. Önemli olan noktayı tekrarlamak gerekirse, yeniden kullanılabileceğini düşünerek ve göz önüne alarak modülleri geliştirmemiz gerekmektedir. Bu yönde geliştirme yaklaşımlarımızda değişikliğe gitmeli ve gerekli süreçleri aktif olarak uygulamalıyız.
Yanıt Bırak