Yazılımda Bilgisayar Desteği - Software-Turk
by Özgür Eralp01 Nisan 2005
Bu sayfalarda yayınlanan diğer yazılarım içerisinde, yazılım geliştirme araçlarından birçok yerde söz edilmektedir. Yazılım geliştirme sürecinde, aktivitelerin kolaylaştırılması ve/veya düzenli şekilde sürdürülebilmesi için kullanılan çeşitli CASE (Computer Aided Software Engineering) araçları bulunmaktadır. Günümüzde yazılım organizasyonlarında, CASE araçlarının popülariteleri artmaktadır.
CASE araçları, sadece yazılımcıların kolay kod yazmalarını sağlamak amacı ile kullanılmamalıdır. Böyle bir kullanımın maliyeti ve gideri yüksek olacaktır. Güncel CASE araçların da, bu işlevin yanı sıra birçok fonksiyonel içerik yer almaktadır. Örneğin, süreç tanımlama, gerek izleme, dokümantasyon, görsel modelleme, tasarım, konfigürasyon takibi, yazılım testi vb. özellikler taşımaktadırlar. Bu araçlar hakkında özet bilgiler yazının son bölümünde yer alacaktır.
Yazılım mühendisleri arasında tartışılan konu ‘CASE araçlarının gerçekten etkin olarak kullanılıp kullanılmadığı’dır. Gün geçtikçe piyasada artan CASE araçlarından hangisi daha iyidir? Çok iyi olmayan bir kumaşı en iyi terziye de diktirseniz, ortaya çıkacak pantolonu kalitesi değişmeyecektir.
CASE araçlarına da bu yönden yaklaşmamız gerekmektedir. Çoğu araç tanıtımında, yazılım geliştirme süresinin %20 daha kısalacağı, daha kaliteli bir ürün ortaya çıkacağından bahsedilmektedir. Bunlar makul değerler ve tahminlerdir. Ama bu noktaya ulaşılabilmesi için bu araçları kullanacak olan kişilerin bilinçli ve her şeyin farkında olmaları, kısacası iyi yazılım mühendisleri olmaları gerekmektedir. Bir makalede yazar, CASE araçlarının sadece iyi mühendislere verilmesi gerektiğini belirtiyordu.
Yazılım mühendisi, tüm yazılım geliştirme süreci ve bu sürecin aktiviteleri hakkında detaylı bilgiye sahip ise, bunları uygulamanın önemini ve yararlarını çok iyi algılamış ise bu tür araçları kullanması onun üretkenliğini arttıracaktır. Ayrıca bu araçlar, onun daha kaliteli (müşteri isteklerini karşılayan, hatasız, tam, doğru vb. özelliklere sahip) iş ürününü ortaya çıkartmasına yardımcı olacaktır. Unutmamak gerekir ki, CASE araçları sadece destek amaçlı kullanılmalıdır. CASE araçları kötü bir mühendisi, iyi mühendis yapmayacaktır. Önemli nokta, kullananın araç üzerindeki hakimiyetidir. Bu noktada ilginç bir istatistik vermek istiyorum. Bir makalede, satın anılan CASE araçlarının yaklaşık %70’inin hiç kullanılamadığı kaydedilmekte idi. İyi bir mühendis aracın nasıl verimli şekilde kullanılacağı hakkında geniş bilgiye sahip olmalıdır. Bu açıdan bakıldığında, organizasyonların bilinçsizce yaptığı CASE yatırımları zararlara sebep olabilmektedir. Organizasyonların gerek duyduğu aktivitelerin doğru tespit edilip, bu doğrultuda CASE araç yatırımlarının yapılması isabetli olacaktır.
Süreç tanımlama amaçlı kullanılan CASE araçlarından bazıları Objectory Process ve Unified Process’dir. Objectory Process diğer araçlar gibi yazılım geliştirme sürecinde kaliteyi artırma ve market zamanını kısaltma amacını taşımaktadır. UML tabanda bileşen tabanlı sürükleyici yazılım geliştirme üzerine kurulmuştur. Kullanıcının gerekleri dokümante edebilmesini, planlamasını, tasarımı, kodlamayı ve testi karşılamakta, kısacası geliştirme sürecinin her safhasında aktif olarak kullanılabilmektedir. Rational Objectory Process tam versiyonu Rational Rose (görsel modelleme), RequisitePro (gereklerin yönetimi), SQASuite (test), SoDA (dokümantasyon) ve Apex (C++ ve Ada) araçlarını içermektedir. Gerek izleme amaçlı kullanılan bazı CASE araçları ise RequisitePro ve DOORS’tur. Dokümantasyon işlemleri için SoDA ve Model EyeQ popüler araçlardır. Üretilen dokümanlar çeşitli tiplerde olabilmektedir. EyeQ aracının çıktıları Word, PowerPoint veya HTML olabilmektedir.
Görsel modelleme Analiz/Tasarım için popüler araçlar Rose Modeler, Rose Prof. C++, SDT, Rhapsody ve RealTime Studio’dur. Rational Rose98 nesne yönelimli yazılım analiz ve tasarım aracıdır. Nesne yönelimli metodoloji olarak Booch, OMT ve UML metodolojilerini destekler. Rose ile sistem ve yazılımın dört ayrı sistem modeli tanımlanabilir:
UseCase bakış, sistemin kullanım durumlarını ve senaryolarını tanımlamak için kullanılan UseCase analizini sağlar. Logical bakış, sistem yazılımındaki nesnelerin, nesnelerin özelliklerinin ve durumlarının, nesneler arası ilişkilerin tanımlanmasını sağlar. Component bakış, sistem yazılımını oluşturan dosyaların ve nesnelerin dosyalara ve dizinlere atanmasını sağlar. Deployment bakış, sistem yazılım parçalarının üzerinde koşacağı bilgisayarların ve yazılım dosyalarının bilgisayarlara dağılımının tanımlanmasını sağlar.
Rational Rose ile bir sistemin bütün yazılımlarının gereksinim aşamasından başlanarak analizi ve tasarımı gerçekleştirilebilir. Rose C++, Rational Rose yazılımının bütün özelliklerinin yanında kaynak kod üretme ve geri mühendislik yetenekleri de olan versiyonudur. Yazılım standart Rose yazılımı (kod üretme farkı ile) ve Analizör olarak iki modülden oluşur. Rose C++ yazılımında standart Rose yazılımından farklı olarak “tools” menüsünde C++ kaynak kod üretimi için menü seçenekleri bulunmaktadır. Kaynak kod üretimi sırasında Logical view ile girilmiş olan nesneler için başlık dosyaları, Component ve Deployment view ile girilmiş olan yapıya uygun olarak üretilir. Üretilen başlık dosyaları nesne özelliklerini (object attributes), metodları (object methods) için tanımlamaları ve nesneler arası ilişkileri (inheretence, v.b) içermektedir; nesne metodları için kaynak kod el ile ilave edilir.
Analizör modülü geliştirilmiş olan C++ kaynak kodunun geri mühendisliğinin yapılarak Logical ve Component view’larının oluşturulmasını sağlar. Bu işlem sırasında kaynak kodu oluşturan dosyalar belirtilir ve derleyicinin modeli “Base Project” olarak tanımlanır.
SDT, ‘formal betimleme’ dillerinden biri olan SDL’i (Specification and Description Language : ITU-T Z.100) kullanarak yazılım tasarımı yapılmasını sağlayan bir yazılım mühendisliği aracıdır. Hem SDL-88’i, hem de SDL-92’yi (Object-oriented SDL: OSDL) desteklemektedir. Bu araç, yazılımın gerek analizi aşamasından başlamak üzere tasarım, test, verifikasyon ve kodlama aşamalarına kadar bütün yaşam süreci boyunca kullanılabilen bir yazılım aracıdır.
OO metodolojilerinden OMT ve UML’i desteklemektedir. SDT şu alt modüllerden oluşur:
MSC editor, Message Sequence Chart ile yazılımın analizini sağlar. SDL editor, yazılım tasarımının yapılmasını sağlar. OMT editor, OOAD metodolojisinin kullanımı durumunda nesnel modellemenin yapılmasını sağlar. Analyzer, tasarımın ‘syntax’ ve ‘semantic’ olarak kontrolünü sağlar. Simulator, tasarımın simulasyonunu sağlar. Validator, tasarımın onanmasını (deadlock, coverage v.b. yönlerden) sağlar. Code Generator, tasarımdan otomatik C kaynak kodu üretilmesini sağlar.
Rhapsody, gerçek zamanlı gömülü sistem yazılımları için, object-oriented teknikler kullanarak analiz etme, tasarlama, geliştirme ve sistemin davranışlarını doğrulama olanaklarını grafik arayüze sahip tek bir araç içinde sunmaktadır. I-Logic firmasının ürünü olan Rhapsody, UML standardına uyumlu ve ürün üzerinde çalışmaya uygun C++ kodunu tam ve otomatik olarak tasarım şemalarından üretebilen bir araçtır. Tasarım şemalarından yola çıkılarak tüm kodun otomatik olarak üretilmesi ile, mühendislerin yoğunlaştıkları nokta, kodlamadan tasarıma doğru kaymaktadır. Bu nedenle toplam üretkenlik artmakta, tasarımın ilk aşamalarında doğrulama yapılabildiği için sorunsuz ürünler ortaya çıkmaktadır.
Rhapsody’nin başlıca modül ve özellikleri şunlardır:
Rhapsody’s Designer : Özellikle gerçek zamanlı gömülü sistem yazılımlarını
geliştirmek amaçlı tasarlanmış, UML notasyonuna uyan, grafiksel
Rhapsody’s Code Generator: Ürün üzerinde çalışmaya hazır tüm kodu otomatik
olarak Rhapsody’s designer’da oluşturulan tasarım şemalarından üreten
Rhapsody’s Animation Capability: Uygulama yazılımının grafiksel modelleme
ortamında simülasyonunu sağlamaktadır.
Rhapsody’s Browser: Tasarımı çeşitli bölmelere ayırabilen, tasarım
ortamında şemalar arası dolaşmalara olanak sağlayan ve kullanıcı arayüzü
kolay anlaşılır bir geliştirme ortamıdır.
Rhapsody’s Open Environment : UML ve C++ standardlarına uymakta ve diğer
firmaların araçlarıyla arayüzü bulunmaktadır.
Konfigürasyon yönetimi için yazılım organizasyonlarında ClearCase ve ClearDDTS yaygın olarak kullanılmaktadır. Yazılım testleri için ise Purify, Quantify, Visual Quantify ve DevCenter popüler araçlardır. Purify, C ve C++ yazılım geliştirme ortamında, bellek ile ilgili hataları kolay ve hızlı bir şekilde belirlemeye ve engellemeye yarayan bir yazılımdır. Purify, derlenen yazılım içinde yer alan uygulama yazılımı, sistem yazılımları, ve 3.parti kütüphane yazılımlarındaki tüm kodu kontrol eder. Purify, multi-threaded ve multi-processor uygulamalarda da kullanılabilir. Purify, her bellek erişim operasyonunu kontrol eder ve hatanın nerede olduğunu, detaylı bir diagnostik bilgisiyle beraber işaretler.
Quantify, yazılımların çalışma süresini etkileyen fonksiyonları bulan bir yazılımdır. Böylece performans problemine neden olan parçalar kolaylıkla görülebilir. Quantify, grafiksel bir kullanıcı arayüzü sunarak, performans problemlerinin kolaylıkla görülmesini sağlar. Performans hakkında toplanan veriler açık ve doğru bir şekilde verilir. Performans verileri tüm kod için toplanabileceği gibi, seçilen bir parça için de toplanabilir.
Görüş ve isteklerinizi e-posta yolu ile bana iletebilirsiniz.