Bileen Tümletirmesine Dayalı Otomatik Uygulama Gelitirimi Murat Mutlu ÖZTÜRK Bilgisayar Mühendislii Bölümü, Mühendislik Fakültesi, Orta Dou Teknik Üniversitesi, 06520, Çankaya, Ankara e-posta: murato@havelsan.com.tr Özet Bu çalıma bir Bileen Yönelimli Yazılım Mühendislii Modelleme Aracı nın JavaBeans bileenleri ile tümleerek olgunlatırılması için yapılmıtır. Gelitirilen bir yeni arayüz aracılıı ile tasarım aamasındaki bir sistemin yapı talarını oluturan bileen tanımlarına daha önceden gelitirilmi ve jar biçiminde paketlenmi JavaBeans bileenleri atanabilmektedir. Bileenler arasında kurulan balantılar ve bu balantıların bileenler arasında üstlendikleri roller tasarım aamasında tanımlanmaktadır. Böylece gelitirilmesi istenen sistemin herhangi bir ek yazılım yapmaksızın çalıabilir bir ekilde üretilmesi salanmıtır. Anahtar Kelimeler: Bileen, Bileen Yönelimli Yazılım Mühendislii, Bileen Yönelimli Yazılım Mühendislii Modelleme Aracı Abstract This study aims the improvement of the Component Oriented Software Engineering Modeling Media to enable integration of JavaBeans components. By means of this new interface, pre-developed reusable JavaBeans components packed in jar format can be assigned to the components that are the building blocks of a system under design. An executable system is generated by defining the connections between components and the roles that those connections undertake in between the components during the design. Keywords: Component, Component Oriented Software Engineering, Component Oriented Software Engineering Modeling Media 1. Giri Bileenler, birlikte çalıabilen ve dier bileenler ile arayüzleri belirlenmi olan yazılım yapıtalarıdır [1, 2, 3]. Bileenler varolan zorluklara ramen, çalıma esnasında bir araya getirmek üzere oluturulmulardır. Tamamen bileen yönelimli bir yaklaımda ilevlerin çounluunun daha önceden gelitirilmi olduu varsayılırsa, herhangi bir yeni sistemin gelitirilmesi sadece bileen balantılarının belirlenmesine indirgenir [4]. Bütünüyle bileen yönelimli bir yazılım gelitirme süreci göz önünde bulundurulduunda, tasarım yukarıdan aaı bir yaklaım ile sistemi bileenlerine ayırmak ve daha sonra bu bileenler arasındaki etkileimleri belirleyerek tüm sistemi ortaya koymak yaklaımı ile yapılır. Tasarım aamasından sonra ise yapılan en önemli çalıma ortaya konan sistemin bütününü oluturan
bileenlerin bir araya getirilmesi aamasıdır. Aslında sistem en küçük detayını dahi içerecek ekilde kendisini oluturacak yapı taslarına ve bu yapı tasları arasındaki balantı esaslarının detayına kadar indirgenebilmi ise, ve bu yapı taları oluturulan bileen kütüphanelerinden elde edilebiliyor ise, tasarım aaması ile tümletirme aamasını tek bir adımda düünebiliriz. Bileen Yönelimli Yazılım Mühendislii (BYYM) metodolojisi, kod gelitirmek yerine entegrasyona dayalı bileen yönelimli sistem gelitirme paradigmasına uyar [2]. Bu konu üzerine yapılan dier tez çalımalarında, Bileen Yönelimli Yazılım Mühendislii Modelleme Dili (BYYMMD) için grafik tabanlı sürükle-bırak kabiliyetlerine sahip bir bilgisayar destekli yazılım mühendislii aracı olan Bileen Yönelimli Yazılım Mühendislii Modelleme Aracı (BYYMMA) gelitirilmitir [5]. Bu çalımanın temel amacı, gelitirilmi olan BYYMMA üzerine bu aracı kullanarak tasarlanan sistemin, herhangi bir ek yazılım yapmaksızın, sadece tasarımda kullanılan bileenler arasındaki etkileimleri tanımlamak suretiyle oluturulmasıdır. Bileen tümlemesi üzerine daha önce yapılan çalımalar bulunmaktadır [6, 7, 8, 9, 10]. Yapılan bu çalımalarda, tümleme için betik yada nesne yönelimli diller kullanılmıtır. Dier çalımalardan farklı olarak, bu çalımada grafiksel bir modelleme aracı olan Bileen Yönelimli Yazılım Mühendislii Modelleme Aracı (BYYMMA), bir sistemi özel bir alana özgü bileeneri tümleyerek oluturabilme kabiliyetine sahip olacak ekilde gelitirilmitir. Bu tümleme, bileenler arasındaki balantı noktalarının ve etkileim detaylarının tanımlanması ile gerçekletirilir. Bileen tümlemesini bir tasarım aracı ile birletirmesiyle bu çalıma bir örnek oluturmaktadır. 2. Bileen Yönelimli Yazılım Mühendislii Modelleme Dili ve Aracı Temel olarak nesneler, özellikler ve metotlardan olumaktadır. Dier taraftan, bileenler nesnelere özgü özelliklerin yanı sıra arayüzlerinde sakladıkları olaylar ıda içermektedirler. Bileenler, ekil 1 de görüldüü gibi bileim mekanizmasını arayüzlerini kullanarak yapıyor iken nesnelere ait olan sınıf hiyerarisinde, özellik ve metotlar miras olarak aktarılmaktadır. [2,3] ekil 1. Nesne ve Bileen Karılatırması [2]
Modelleme paradigmaları, yazılım sistemlerine göre ekil 2 de görüldüü gibi üç boyutta deerlendirilebilirler: fonksiyon, veri ve yapı. Veri Nesne Yönelimli Bileen Yönelimli Yapı Geleneksel Fonksiyon ekil 2. Modelleme Paradigması Boyutları [2] Buna göre, geleneksel yöntemler, sistemi fonksiyonel bir bakı açısına dayanarak, nesne yönelimli yöntemler veri soyutlamalarını kullanarak ve son olarak bileen yönelimli yöntemler yapısal modelleme yaklaımını adres göstererek tasarlarlar [2]. Bileen yaklaımlı bir dil olan BYYMMD, tasarlanan sistemi ekil 3 te gösterilen ögeler ve balayıcılardan oluan bir grubun yardımı ile yapısal olarak parçalara ayırır [2].
ekil 3. BYYMMD de Kullanılan Bileen ve Balayıcı Semboller[3] BYYMMD ni bir sistem tasarım aracı ile desteklemek amaçlı olarak bir grafik modelleme aracı olan BYYMMA da gelitirilmitir. Bu araca ait bir kullanım ile ilgili gösterge örnei ekil 4 te gösterilmektedir.[2]
ekil 4. BYYM Modelleme Aracı 3. BYYMMA ile JavaBeans Bileenlerinin Tümlemesi BYYM temel olarak daha önceden oluturulan yeniden kullanılabilir bileen kütüphaneleri aracılıı ile sistemlerin tasarlanmasını ve gelitirilmesini öngörmektedir. Bu konu üzerine daha önce yapılmı çalımalarda, BYYMMD ne ait belirtimler [2] ve BYYMMD kullanarak sistem tasarımı yapmaya olanak salayan BYYM Modelleme Aracı sunulmutur. Bu çalımada BYYM Modelleme Aracı na tanıtılan bileen çatısı, Java diline bileen teknolojisini getirmi bulunan JavaBeans bileen çatısıdır. JavaBeans çatısının bileen teknolojisi olarak seçilmesinin nedenleri: BYYM Modelleme Aracı nın Java kullanılarak yazılmı olması ve bu nedenle gelitirilecek olan yeni ek yapının birletirilme aamasında herhangi bir sıkıntı ile karılaılmasından kaçınılması, JavaBeans Uygulama Programı Arabirimi (UPA) kullanılarak yeniden kullanılabilir platform baımsız bileenler gelitirilebilmesi, JavaBeans bileen çatısı, herhangi bir uygulama derleyicisi kullanılarak kolaylıkla uygulamalara ve birleik bileenlere dönütürülebilir olması. JavaBeans lerin en önemli üç öznitelii; dıarıya sunduu özellikler grubu, dier bileenler tarafından çaırılabilen metotlar grubu ve tetikledii olaylar grubuna sahip olmasıdır. JavaBeans bileen modeline ait olan bu temel öznitelikler BYYM yaklaımı tarafından da desteklenmektedir. Ayrıca tasarlanan sistemin otomatik olarak çalıabilir hale getirilmesi için Java programlama diline JavaBeans çatısını desteklemek amaçlı olarak eklenen Reflection (yansıtma) mekanizması da
kullanılmıtır. Reflection mekanizması kullanılarak, çalıma esnasında herhangi bir bileene ait özellikler ve metotlar da dahil olmak üzere bütün bilgilere ulaılabilmektedir. 3.1. BYYMMA na EklenenYenilikler BYYM Modelleme Aracı nın daha önceki çalımalarla oluturulan versiyonuna ilikin bir örnek görüntü ekil 4 te gösterilmitir. Sistemin tasarımına olanak salayan ana ekranına ek olarak, bu çalımada tasarlanan sistemin bileenlerinin çalıır halde gösterildii yeni tasarım ekranı eklenmitir. Ana tasarım ekranı ve yeni eklenen bileen çalıtırma ekranı ekil 5 te gösterilmilerdir. Ana tasarım ekranı sistemin BYYMMD kullanılarak tasarlanmasına olanak salayan kısmıdır. Yapılan tasarım üzerindeki bileenlere JavaBeans bileenlerinin ilgili jar dosyasını seçmek suretiyle atanması durumunda ise, atanan bileenin örneklemelerinin yapıldıı ve görüntülendii ekran ekil 5 te sa tarafta görüntülenmi olan bileen çalıtırma ekranıdır. Bileen çalıtırma ekranının iki çeit kipi bulunmaktadır. Tasarım kipinde oluturulan bileenlerin yerleri ve büyüklükleri ile oynanması salanmaktadır (ekil 6). Çalıtırma kipinde iken ise oluturulan sisteme ait bileenlerin çalıması salanmıtır. Bu kipler arasındaki geçiler, ana tasarım ekranı üzerinde bulunan ve ekil 5 de Kip Deitirme Dümesi olarak belirtilen düme aracılııyla yapılır. ekil 5. Ana Tasarım Ekranı ve Yeni Bileen Çalıtırma Ekranı
ekil 6. Bileen Çalıtırma Ekranı nın Tasarım Kipindeki Görünümü 3.2. Çalıtırılabilir Sistem Tasarımı Süreci BYYMMA nı kullanarak herhangi bir ek yazılım gelitirmeksizin çalıabilir bir sistem gelitirme süreci için basit bir örnek sunulmaktadır., Bu süreç bir metin kutusu ve bir de düme bileeninden oluan bir sistem tasarımını ele almaktadır. Tasarlanan sistemin çalıma prensibinin dümeye basıldıında düme yazısının alınıp metin kutusuna aktarılması olduunu varsayalım. Buna göre sistemdeki akı, düme bileeninin fare ile tıklanması olayının gerçeklemesi ile tetiklenir, düme bileeninden yazıyı alan bir alıcı fonksiyonun çaırılıp, onun çıktı deerinin metin kutusu bileeni içerisindeki koyucu metoda gönderilmesi ile tamamlanır. Tasarım aamasında öncelikle, sistemdeki iki bileen için ana tasarım ekranında iki tane bileen tanımlanır. Daha sonra bu soyut bileenlere ana tasarım ekranı kullanılarak JavaBeans bileen dosyaları atanır. Bu islem tamamlandıında ana tasarım ekranındaki soyut bileene karı düen JavaBeans bileeni çalıtırma ekranında görüntülenir. Atama ilemlerinin tamamlanmasından sonra sistem üzerindeki bileenlerin etkileimlerinin tanımlanması gerekmektedir. Sistemde iki bileen arasındaki etkileim, tasarım sırasında o bileenler arasında kurulan bileen balacı ile tanımlanmaktadır. Bu bileen balacı ile iki bileen birbirine balandıktan sonra gerekli ayrıntılar belirlenmelidir. Bu ayrıntılar, ilikili olay, bu olayın balangıç bileeninde tetikleyecei metot ve bu metodun biti bileeninde tetikleyecei metot dan oluur. Bu ayrıntılar, ana tasarım ekranında açılan ve uygun olan tüm seçenekleri içeren yardımcı ileti pencereleri yardımıyla belirlenir. Olay ve metot atama ilemleri tamamlandıktan sonra iki bileen arasında birbiri tarafından kullanılan arayüzler ana tasarım ekranına otomatik olarak eklenir. Sonuç olarak ortaya çıkan tasarım, ekil 8 de ana tasarım ekranındaki görüntü olarak verilmektedir. Tasarlanan sistemin çalıabilir sürümü ise ekil 7 deki bileen çalıtırma ekranında gösterilmektedir. Buna göre, sistemdeki düme bileenine basıldıı zaman, metin kutusu bileenine düme bileeninin yazısı aktarılmaktadır. ekil 7. Bileen Çalıtırma Ekranı : Örnek sistemin çalıır hali
ekil 8. Ana Tasarım Ekranı : ki Bileenli Basit Bir Sistem Tasarımı 4. Sonuç: BYYM Modelleme Aracı na Jar kütüphaneleri eklenmi ve sistem gelitirme amaçlı olarak bu kütüphanelerdeki mevcut bileenler kod yazmadan balanabilir ve çalıtırılabilir hale getirilmitir. Sınırlı ölçüde gerçekletirilen denemelerde istenilen kabiliyetin gerçekletirildii ve aracın koturulabilir kod üretebilecek duruma getirilebilecei gözlenmitir. Ancak, gerçek projelerde bu yaklaımın denenerek ne derece etkin olabilecei henüz cevaplanmamı bir sorudur. Bu yaklaım ile eldeki kısıtlı deneyimle de olsa verilecek bir sistem tanımından, ayrıtırma ve mevcut bileenlerin tümletirilmesi yolu ile kod oluturulabilecei bizce bir ölçüde gösterilebilmitir. 5. Gelecekte Yapılabilecek Çalımalar: Bu çalımaya ek olarak yapılabilecek birçok çalıma bulunmaktadır. Öncelikle BYYMMA na ibirlii ya da ardııllık kavramları da eklenerek daha karmaık sistem tasarımlarının baarılması salanabilir. Mevcut hali ile ortam dinamik modellemeyi desteklememektedir. Bunun yanında, BYYMMA na bir katman daha eklenerek, oluturulmu bulunan tasarım ve çalıma ekranları yardımı ile uygulama oluturma amaçlı bir altyapı gelitirilebilir. Bu sayede BYYM nin kullanılabilirlii arttırılmı olacaktır.
6. Referanslar [1] Szyperski C., Component Software: Beyond Object-Oriented Programming, Addison-Wesley, NewYork, 1998. [2] Doru H. A., Component-Oriented Software Engineering Modeling Language: COSEML, Ankara, Aralık, 1998. [3] Doru H. A. ve Tanık M. M., A Process Model for Component Oriented Software Engineering, IEEE Software, Vol.20, No. 2, s.34-41, Mart/Nisan 2003. [4] Brown A. W. ve Wallnau K. C., The Current State of CBSE, IEEE Software, Eylül-Ekim, 1998. [5] Tanık M. M. ve Chen E. S., Fundamentals of Computing for Software Engineers, Van Nostrand Reinhold, NewYork, 1991. [6] P. H. Fröhlick, A. Gal, ve M. Franz, Supporting Software Composition at the Programming Language Level, Science of Computer Programming 56, pp. 41-57, 2005 [7] O. Nierstrasz, S. Gibbs, ve D. Tsichritzis, Component-Oriented Software Development, Communications of the ACM, Vol. 35, No. 9. Special Issue on Analysis and Modeling in Software Development, pp. 160-165, Eylül, 1992. [8] O. Nierstrasz, D. Tsichritzis, V.D. Mey, ve M. Stadelmann, Objects + Scripts = Applications, Proceedings, Esprit 1991 Conference, Kluwer, Dordrecht, pp. 534 552. 1991. [9] V.D. Mey, Visual Composition of Software Applications, Object-Oriented Software Composition, Prentice Hall, O. Nierstrasz and D. Tsichritzis (Ed.), pp. 275-303, 1995. [10] L. F. Carpets, M. A. M. Carpetz, and D. Li, Component-Based Software Development, IECON 01: The 27 th Annual Conference of the IEEE Industrial Electronics Society, 2001