"Kurumsal Çözümler İçin Nasıl Bir Yazılım?"
Yazılım evleri ve bilgi işlem merkezleri, yazılım geliştirme süreçleri için belirli standartları ortaya koymak, geliştirme sürecini verimli duruma getirmek ve daha nitelikli yazılımlar üretmek konusunda çeşitli arayışlar içindedirler. BDYM (CASE) araçları ve bu araçlar tarafından ortaya konan yöntembilimler sistem çözümleme aşaması için belirli standart ve yöntemlerin oluşmasını sağlamışlardır. Ancak yine de tecimsel uygulamalar geliştiren (özellikle Türkiye’deki) kuruluşların veri modelleme, veri tabanı tasarımı, kodlama, sınama ve yazılım dağıtımı gibi konularda, temel gereksinimleri karşılayan, etkin ve ileriye yönelik ilke ve yöntemleri ortaya koyamadıkları gözlenmektedir. Buradaki temel neden, akademik ve kuramsal kimi yöntemlerin tecimsel ortamlara uyarlanması ile bu konuda yapılacak çalışmaların zaman ve parasal ederlerinin karşılanmasında ortaya çıkan zorluklardır.
Bu nedenle ilk olarak, yazılım nitelik ölçütleri ve yazılım geliştirme süreçlerinin incelenmesi gerekir.
Yazılım
Yazılım, çoğu kişi tarafından bilgisayar programlarına eşdeğer görülür. Gerçekte, bu tanımlama çok sınırlı bir bakış açısını yansıtır. Yazılım, yalnızca bilgisayar programları bütünü değildir. Yazılım, bilgisayar üzerinde gerek duyulan işlev ve verimliliği sağlamak üzere geliştirilen programlar ile bilgilerin uygun bir biçimde işlenmesi için gerekli veri yapıları ve programların yapılandırılması, kullanımı ve işletimi için gerekli belgeler bütünüdür (Pressman, 1987).
Yazılım Nitelik Ölçütleri
İyi bir yazılımın nitelikleri uygulamaya göre değişkenlik gösterebilir. Bir bankacılık uygulamasında yetkilendirme ve güvenlik önemli iken, etkileşimli bir sistemde yanıt süresi önem kazanmaktadır. McCall (1977) yazılım niteliklerinin belirlenmesi için aşağıdaki ölçütleri ortaya koymuştur :
-
Doğruluk (correctness),
-
Güvenilirlik (reliability),
-
Yeterlilik (efficiency),
-
Bütünlük (integrity),
-
Kullanılabilirlik (usability),
-
Bakım kolaylığı (maintainability),
-
Esneklik (flexibility),
-
Sınanabilirlik (testabilty),
-
Taşınabilirlik (portability),
-
Yeniden kullanılabilirlik (reusability),
-
Birlikte işlerlik (interoperability).
Ancak asıl zorluk bu ölçütler için belirlenecek katsayılar ile bunların gerçek ölçüm yöntemlerinin bulunmasındadır. Yazılım nitelik ölçütleri için belirlenecek katsayıların, uygulamaların türlerine göre farklılıklar göstereceği de göz ardı edilmemelidir. Kimi durumlarda yukarıdaki yazılım niteliği ölçütlerini, dört ana grupta toplayarak incelemek daha uygun olabilir (Sommerville, 2001).
- Bakım kolaylığı (maintainability) ; Yazılımın kullanıcı gereksinimlerinde ortaya çıkan değişiklikleri karşılamadaki yeterliliği olarak özetlenebilir. Bakım kolaylığı, değişen iş ortamında karşımıza çıkan yazılım değişikliklerinin uygulanabilirliği açısından oldukça önemli olmaktadır.
- Güvenilirlik (dependability) ; Yazılımlar verileri koruma ve güvenilirlik özelliklerine sahip olmalıdır. Güvenilir yazılım, bir sistem hatası oluştuğunda fiziksel veri yitimi ve ekonomik yitimlere neden olmamalıdır.
- Yeterlilik (efficiency) ; Yazılım sistem kaynaklarının boşa tüketilmesine neden olmamalıdır. Yeterlilik; işlem süresi, yanıt süresi, bellek kullanımı gibi özellikler ile ölçülebilir.
- Kullanılabilirlik (usability) ; Yazılım fazla çaba göstermeden kullanılabilir olmalıdır. Kullanıcı ara yüzü, belgelemesi ve çevrim-içi yardım olanakları gibi kolay kullanım özelliklerine sahip olmalıdır.
III)Yazılım Mühendisliği
Yukarıda özetlenen yazılım geliştirme evreleri ve yazılım türlerinin geliştirilmesi için mühendislik standardı olarak yazılım mühendisliği yaklaşımları önem kazanmaktadır. Yazılım mühendisliği yazılım ürünlerinin tüm yönleri ile ilgili bir mühendislik disiplini olarak tanımlanabilir (Sommerville, 2001).
Yazılım mühendisleri, yüksek nitelikli yazılımlar üretmek için en uygun yolları anlamlı ve örgütlü bir biçimde uygulayan kişilerdir. Bu amaçla yazılım geliştirme araçları, yöntemleri ve kuramları ile yazılım projelerini yönetecek etkinliklerde bulunurlar.
Bir yazılım mühendisliği yöntemi, yüksek nitelikli ve gideri düşük üretim etkinlikleri kullanarak, yazılım geliştirmeye yapısal yaklaşımlar getirir. Yapısal çözümleme (DeMacro,1978) ve JSD (Jackson,1983) gibi yöntemler ilk kez 1970’ler de geliştirilmiştir. 1980 ve 1990’larda, işlevsel yönelimli yöntemler yaygınca kullanılmıştır. Nesne yönelimli yöntemler ise Booch (1994) ve Rumbaugh (1991) tarafından desteklenmiştir. Bu yaklaşımlar “birleşik modelleme dili (UML - Unified Modeling Language)” etrafında bütünleştirilmiştir.
Yazılım Süreçleri
Yazılım süreci, bir yazılım ürününün ortaya çıkarılması ile ilgili olarak yapılan etkinlik ve sonuçlar olarak tanımlanabilir. Bu süreçler çoğunlukla yazılım mühendisleri tarafından ortaya konan beş temel etkinlik altında toplanabilir.
- Çözümleme ; Yazılım isterleri ile işlev ve kısıtlamalarının belirlenmesi aşamasıdır.
- Tasarım ; Çözümleme aşamasında belirlenen işlev ve kısıtlamalar için veri modelleri ile işlev tasarımlarının belirlenmesi aşamasıdır.
- Gerçekleştirim (Kodlama) ; Yazılımın tasarıma uygun bir biçimde seçilen programlama araçları (programlama dili ve geliştirme araçları) kullanılarak üretilmesi aşamasıdır.
- Doğrulama (Sınama) ; Kullanıcı gereksinimleri çerçevesinde ortaya çıkan yazılımın doğrulanması aşamasıdır.
- Bakım ve Değişiklik (Evrim) ; Ortam ve kullanıcı gereksinimlerinde karşılaşılan değişikliklerin yazılıma uyarlanması aşamasıdır.
GENOM' un Yaklaşımı
Grafik kullanıcı ara yüzler üzerinde dördüncü kuşak diller kullanılarak, ilişkisel veri tabanına dayalı uygulama yazılımları geliştirme sürecinde önceden karar verilmesi gereken çok fazla nokta bulunmaktadır. Veri modelleme ve veri tabanı tasarımındaki yaklaşımlarla birlikte, anlaşılır, en az belgeleme gerektiren, kolay bakım yapılabilir yazılımların üretilmesini sağlayacak ilke ve yöntemler ortaya konmalıdır. Böylece, yazılımın niteliğinin ve üretim veriminin artırılmasına katkı sağlanacak ve yazılım üretim sürecinin daha kurumsal bir yapıya getirilmesi sağlanmış olacaktır. Yazılım geliştiren kuruluşların en temel sorunlarından biri de, eldeki eski yazılımların güncel teknolojiye aktarılması olmaktadır. Ortaya konacak ilke ve yöntemlerde, önceden bu yöntemlerle üretilmiş eldeki yazılımların en kolay ve hızlı yöntemlerle güncel teknolojiye taşınmasına olanak sağlayacak noktalar göz önünde tutulmalıdır.
Genom olarak, teknik ekibimizin özellikle 1994’den sonra başlayan istemci-sunucu ortamlar ve grafik kullanıcı ara yüzler üzerindeki deneyim ve çalışmaları, yukarıda sözü edilen tanımlamalar ve saptamalar ışığında “OPERA İleri Program Geliştirme Yöntemleri” adı ile bir yöntembilim biçimine dönüştürülmüştür. Ayrıca bu yöntembilimi tamamlayan, “OPERA Yazılım Destek Paketi” adı verilen bir yazılım geliştirme omurgası da geliştirilmiştir. Genom , kendi uygulamalarının geliştirilmesinde kullandığı bu ürünleri, veri tabanı, yazılım geliştirme, sınama ve yazılım dağıtımı konularında izlenecek yollar konusunda eksikliği duyulan ilke ve yöntemler ile bunları destekleyen kimi altyapı ve işlevleri belirleyerek, akademik ve kuramsal yöntemleri tecimsel yazılım geliştiren kuruluşların kullanımına sunmaktadır.
Başka konularda buluşmak üzere esenlikler dilerim.
Emin ESTEKİN
Yönetim Kurulu Başkanı |