Android Platformu için Hazırlanan Mobil Uygulamanın Kalite Nitelikleri De˘gi¸siminin ˙Incelenmesi Yusuf Özçevik, 504152517 Bilgisayar Mühendisli˘gi Bölümü ˙Istanbul Teknik Üniversitesi ˙Istanbul, Türkiye ozcevik@itu.edu.tr Özetçe —Bu çalı¸smada Java dili ile Android platformu için hazırlanmı¸s bir mobil uygulamanın bir yıllık süre zarfı içerisindeki ilk 9 versiyonu incelenmi¸stir. ˙Incelenen versiyonlar için Chidember-Kemerer Metrik Kümesi ve QMOOD Modeli kullanılarak tasarım kalitesi nitelikleriyle ilgili sayısal ölçümler elde edilmi¸stir. Uygulamada yapılan versiyon güncellemeleriyle birlikte ilgili niteliklerin de˘gi¸simi incelenerek elde edilen sonuçlar de˘gerlendirilmi¸stir. Anahtar Kelimeler—Tasarım Kalitesi Nitelikleri, Nesneye Dayalı Programlama, QMOOD Abstract—In this work, first nine versions of a mobile ap- plication for Android platform which is implemented by Java programming language is studied. Chidember-Kemerer Metric Set and QMOOD Model is used for the investigation between application versions. Considering different versions of the appli- cation, the change of computed quality attributes are evaluated. Keywords—Quality Attributes, Object Oriented Programming, QMOOD I. G˙IR˙I ¸S Son yıllarda yazılım teknolojilerinin farklı endüstriyel alan- larda farklı i¸slevlere yönelik bir çok cihazda yaygın olarak kullanılmaya ba¸slanması, kullanılan yazılımların de˘gerlendiril- erek geri besleme yapılması ihtiyacını do˘gurmu¸stur. Bu de˘ger- lendirme ve geri besleme ihtiyacı mü¸steri açısından daha kaliteli hizmet almak adına, geli¸stirici açısından ise mü¸steri memnuniyeti adına önem te¸skil etmektedir. Yazılım teknolo- jilerinin bu denli yaygınla¸sması ve yazılım payda¸slarının kalite konusundaki bilgi ihtiyacı yazılımların kalite de˘ger- lendirmesini gerekli kılar. Varlıklar arasındaki ili¸skileri belirlemek adına gözlem sık- lıkla kullanılan bir yakla¸sımdır. Ancak yazılım kalitesinin gözlemlenerek, aynı i¸slevi yerine getiren birden fazla yazılım- dan hangisinin daha iyi oldu˘gunu söylemek mümkün de˘gildir. Yazılım kalitesinin ölçülmesinde gerçek dünyada gözlem yap- mayı olanaksız kılan bilgi engelinden dolayı bu tür kar¸sıla¸stır- malar ve yorumlar ölçme yoluyla dolaylı olarak yapılır. De˘ger- lendirme gözlem yoluyla gerçek dünyada de˘gil, ölçme ile elde edilen sayısal de˘gerler üzerinden yapılarak yorumlanabilir. Yazılım kalitesinin ölçülmesi ve birden fazla yazılımın kalite sonuçlarının kar¸sıla¸stırılması için sezgisel (gerçek) dünya ile formel (matematiksel) dünya arasında modellem- eye ihtiyaç duyulur. Bu modelleme sayesinde yazılımlar ile ilgili sayısal veriler elde edilerek kıyaslama yapılabilir. Ancak, yapılan kıyaslamanın do˘gru olabilmesi için kullanılan modelin sezgisel dünya varlıklarını formel dünyada do˘gru temsil etmesi gerekmektedir. Bu ba˘glamda elde edilen ölçme sonuçları sezgisel dünyadan elde edilebilen gözlem sonuçlarıyla geri beslenerek modelin do˘grulu˘gunu sınamak önem te¸skil eder. Chidember-Kemerer Metrik Kümesinden [1] yararlanarak ve nesneye dayalı tasarımlar için sezgisel dünya ile formel dünya arasında bir model sunan QMOOD Modeli, temsilin do˘gru- lu˘gu açısından ba¸saryla sınanmı¸s modellerden biridir [2]. Bu ba˘glamda bu çalı¸smada QMOOD Modeli kullanılarak Android Mobil platformu için Java dili kullanılarak hazırlanmı¸s bir mobil uygulamanın versiyonları arasındaki kalite niteliklerinin de˘gi¸simi incelenmi¸stir. ˙Ilgili yazılıma ait bir yıllık süreçte geli¸stirilen ilk 9 versiyon göz önüne alınmı¸s ve elde edilen sonuçlar de˘gerlendirilerek QMOOD Modelinin mobil plat- formlar için hazırlanan nesneye dayalı mobil uygulamalar için beklenen sonuçları verip vermedi˘gi sınanmı¸stır. Çalı¸smanın di˘ger kısımları ¸su ¸sekilde düzenlenmi¸stir. Bölüm II’de konuyla ilgili literatür ara¸stırmasına yer ver- ilmi¸stir. Bölüm III’de bu çalı¸smada kullanılan yakla¸sım, hangi kalite niteliklerinin hangi metrikler ile ölçüldü˘gü ve ölçüm yapmak için kullanılan araçlar belirtilmi¸stir. Bölüm IV’de ölçme sonuçlarının sayısal analizi yapılarak elde edilen sonuçlar grafikler aracılı˘gıyla görselle¸stirilmi¸stir. Son olarak, Bölüm V’de elde edilen sonuçlar de˘gerlendirilerek çalı¸sma sonlandırılmı¸stır. II. ˙ILG˙IL˙I ÇALI ¸SMALAR Yazılım kalitesinin ölçülmesi konusunda son yıllarda lit- eratürde bir çok çalı¸sma yer almaktadır. [3], [4], [5] ve [6]’da sezgisel dünya ile formel dünya arasındaki temsil için olu¸sturulan modeller incelenmi¸stir. Benzer ¸sekilde [2]’de nes- neye dayalı tasarım kalitesini de˘gerlendirmek amacıyla olu¸s- turulan hiyerar¸sik model ele alınmı¸stır. [7]’deki çalı¸smada yer alan ve McCall tarafından olu¸sturulan yazılım modeli, yazılım payda¸sları arasında ileti¸sim sa˘glamayı amaçlamı¸stır ve pek çok yazılıma temel olu¸sturmaktadır. [8] ve [9]’da Victor Basili tarafından olu¸sturulan Hedef/Soru/Metrik (GQM) yakla¸sımı ise ilk olarak projelerde meydana gelen hataları belirlemek için olu¸sturulan, sonrasında ise yazılım kalitesini geli¸stirmeyi amaçlayan yöntemleri ele almaktadır. [10]’de ise ISO/IEC kurulu¸su, yazılım kalitesi ile ilgili tanımlamaların standartla¸stırılmasını amaçlamaktadır ve bununla ilgili tanım- lamalardan olu¸san 4 bölümlük bir döküman ele almı¸stır. Bu dokümanda yazılım kalitesi ile ilgili bile¸senler açık ve net olarak tanımlanmı¸s ve bu sayede yazılım kalitesi konusunda çalı¸san bireyler arasında ortak bir dil olu¸sturulmu¸stur. III. KULLANILAN YAKLA ¸SIM VE ARAÇLAR A. Kullanılan Yakla¸sım Bu çalı¸smada, kullanılan projenin incelenmesi sırasında Chidember-Kemerer Metrik Kümesi ve QMOOD Modeli’nden yararlanılmı¸stır. QMOOD Modeli’nde proje kalitesinin ölçülmesi için dört katmandan olu¸san hiyerar¸sik ve katmanlı bir yapı olu¸sturulmu¸stur [2]. Tanıma göre en üst katmanda kalite nitelikleri, onun bir altında tasarım özellikleri, onun bir altında tasarım metrikleri ve en altta da tasarım bile¸senleri yer alır. Proje kalitesi belirlenirken katmanlar arasında yukarıdan a¸sa˘gıya do˘gru gidilir. En alt katmanda yer alan tasarım bile¸senlerinin matematiksel olarak ölçülmesinden sonra ters yönde gidilerek toplam kalite elde edilebilir. Bu ba˘glamda en üst katmanda belirlenen altı kalite niteli˘ginin hesaplanması için bir alt katmanda yer alan tasarım özellikleri kullanılır. Bu iki katman arasındaki geçi¸s (1), (2), (3), (4), (5) ve (6) ile formülize edilmi¸stir. Tekrar Kullanılabilirlik=        +0, 5 · (Desing Size) −0, 25 · (Coupling) +0, 25 · (Cohesion) +0, 5 · (Messaging) (1) Esneklik=        +0, 25 · (Encapsulation) −0, 25 · (Coupling) +0, 5 · (Composition) +0, 5 · (Polymorhism) (2) Anla¸sılırlık=                      −0, 33 · (DesignSize) −0, 33 · (Abstraction) +0, 33 · (Encapsulation) −0, 33 · (Coupling) +0, 33 · (Cohesion) −0, 33 · (Polymorhism) −0, 33 · (Complexity) (3) ˙I¸slevsellik=              +0, 22 · (Design Size) +0, 22 · (Hierachies) +0, 12 · (Cohesion) +0, 22 · (Polymorhism) +0, 22 · (Messaging) (4) Geni¸sletilebilirlik=        +0, 5 · (Abstraction) −0, 5 · (Coupling) +0, 5 · (Inheritance) +0, 5 · (Polymorhism) (5) Etkinlik=              +0, 2 · (Abstraction) +0, 2 · (Encapsulation) +0, 2 · (Composition) +0, 2 · (Inheritance) +0, 2 · (Polymorphism) (6) Tasarım özelliklerinden bir alt katmana inmek için tasarım özelliklerini tasarım metrikleri ¸seklinde ifade etmek gerekecek- tir. Tasarım özellikleri ile tasarım metrikleri arasındaki ili¸ski Tablo I ile verilmi¸stir. Tasarım Özelli˘gi ˙Ilgili Tasarım Metri˘gi Design Size Design Size in Classes Hierarchies Number of Hierarchies Abstraction Average Number of Ancestors Encapsulation Data Access Metric Coupling Direct Class Coupling Cohesion Cohesion Among Methods in Class Composition Measure of Aggregation Inheritance Measure of Functional Abstraction Polymorphism Number of Polymorphic Methods Messaging Class Interface Size Complexity Number of Methods Tablo I: Tasarım Metrikleri ile Tasarım Özellikleri Arasındaki ˙Ili¸ski ˙Ilgili tasarım metriklerinin tasarım bile¸senleri ile ifade edilerek modelde en alt katmana inilmesi ve gerekli verilerin projeden ölçülmesi için a¸sa˘gıdaki tanımlar kullanılmı¸stır. Bu tanımlar yapılırken çalı¸smada kullanılan iki metrik toplama aracından alınabilen de˘gerler göz önüne alınmı¸stır. • Design Size in Classes (DSC): Projedeki toplam sınıf sayısı olarak de˘gerlendirilmi¸stir. • Number of Hierarchies (NOH): Projedeki sınıf hi- yarar¸si sayısı olarak ele alınmı¸stır. • Average Number of Ancestors (ANA): Projedeki kalıtım a˘gacı boyunun ortalaması olarak hesaplan- mı¸stır. • Data Access Metric (DAM): Projedeki sınıflarda yer alan private ve protected niteliklerin toplamının, projede yer alan tüm niteliklere oranı olarak hesaplan- mı¸stır. • Direct Class Coupling (DCC): Proejedeki sınıfların birbirleriyle ba˘gımlılık olu¸sturdu˘gu sınıf sayısı olarak ele alınmı¸stır. • Cohesion Among Methods in Class (CAM): Metrik toplama aracından alının LCOM (Lack of Cohesion) metri˘gi kullanılarak 1-LCOM olarak hesaplanmı¸stır. • Measure of Aggregation (MOA): Projede yer alan kullanıcı tanımlı sınıf nesnesi sayısı olarak ele alın- mı¸stır. • Measure of Functional Abstraction (MFA): Projede yer alan bir sınıfın atasından türetti˘gi metod sayısının toplam metod sayısına oranı olarak ele alınmı¸stır. • Number of Polymorphic Methods (NOP): Projede yer alan interface sayısı olarak ele alınmı¸stır. • Class Interface Size (CIS): Projedeki public metod sayısı olarak de˘gerlendirilmi¸stir. • Number of Methods (NOM): Projedeki toplam metod sayısı olarak ele alınmı¸stır. B. Kullanılan Araçlar Çalı¸smada incelenen mobil uygulamanın geli¸stirme ortamı Eclipse IDE’dir. Bu ba˘glamda, tasarım metrikleriyle ili¸skili tasarım bile¸senlerini ölçmek için iki ayrı Eclipse eklentisi kul- lanılmı¸stır. Bunlardan biri ¸Sekil 1’de görülen CodePro Analyt- ics [11] eklentisidir. ¸Sekilde görüldü˘gü gibi bu eklenti ile elde edilen metriklerin grafiklerle görselle¸stirilmesi ve belirlenen e¸sik de˘gerinden büyük metrik de˘gerlerinin renklendirilerilmesi mümkündür. Bu eklenti ile projeden NOH, DAM, DCC, MOA, CIS ve NOM metrikleri ölçülmü¸stür. ¸Sekil 1: Code Pro Analytics Eklentisi ile Metrik Çıkarımı Uygulamada kullanılan bir di˘ger Eclipse eklentisi açık kaynak kodlu Eclipse Metrics [12] isimli eklentidir. Eklentiden elde edilebilen metrikler ¸Sekil 2’de gösterilmi¸stir. ˙Ilk eklentide bulunan görselle¸stirme ve renklendirme özellikleri bu eklentide de mevcuttur. Bu çalı¸sma kapsamında projeden DSC, ANA, CAM, MFA ve NOP metrikleri bu eklenti ile elde edilmi¸stir. ¸Sekil 2: Eclips Metrics Eklentisi ile Metrik Çıkarımı IV. DE ˘GERLEND˙IRME Uygulamadan elde edilen tasarım bile¸senleri Bölüm III’de anlatılan yakla¸sım ve araçlar kullanılarak çıkarılmı¸stır. Bu tasarım bile¸senleri ve ilgili bile¸sene ait sayısal de˘gerler Tablo II ile verilmi¸stir. Projeden elde edilen ve Tablo II ile gösterilen tasarım bile¸senleri uygun ¸sekilde aynı düzeye çekildikten sonra nor- malize edilerek modelde tanımlanan hiyerar¸side üst katmanlara çıkılmı¸stır. En üst katmana geçerken (1), (2), (3), (4), (5) ve (6) e¸sitlikleri kullanılarak 9 farklı proje versiyonu için kalite niteliklerine ula¸sılmı¸stır. Bu kalite nitelikleri ilk versiyon olan V2.0.0’a göre normalize edilerek Tablo III ile gösterilmi¸stir. Tablo III ile gösterilen kalite niteliklerinin farklı proje versiyonları için normalize edilmi¸s sayısal de˘gerleri ¸Sekil 3 ve ¸Sekil 4 ile görselize edilmi¸stir. ¸Sekil 3: Farklı Uygulama Versiyonları için Etkinlik, Geni¸sletilebilirlik, ˙I¸slevsellik, Tekrar Kullanılabilirlik ve Esneklik Niteliklerinin De˘gi¸simi ¸Sekil 3’de etkinlik, geni¸sletilebilirlik, i¸slevsellik, tekrar kullanılabilirlik ve esneklik niteliklerinin 9 farklı proje ver- siyonuna göre de˘gi¸simi görülmektedir. Bu niteliklere ait hesa- planan sayısal de˘gerler y-ekseninde yer alırken; versiyon nu- maraları x-eksini ile verilmi¸stir. Sezgisel olarak, bu niteliklerin sürümler arasında artı¸s göstermesi beklenmektedir. Formel olarak analiz edilen bu be¸s nitelik, özellikle projede temel geli¸stirmelerin yapıldı˘gı V2.0.0-V2.1.0-V2.2.0-V2.3.0 sürüm geçi¸slerinde beklendi˘gi gibi gözle görülür bir artı¸s gösterirken; hata düzeltme ve ufak görsel düzenlemelerin yer aldı˘gı V2.0.1- V2.1.1-.V2.1.2-V2.2.1-V2.2.2 sürüm geçi¸slerinde beklenen karakteristikten sapmalar göstermi¸stir. Bu durumun temel ne- deni kar¸sıla¸sılan hata düzeltme a¸samalarında nesneye dayalı yazılım niteliklerinin göz önüne alınmaksızın hızlı bir ¸sekilde güncelleme ihtiyacını gidermeye yönelik geli¸stirme yapılması olabilir. ¸Sekil 4: Farklı Uygulama Versiyonları için Anla¸sılabilirlik Niteli˘ginin De˘gi¸simi ¸Sekil 4’de anla¸sılabilirlik niteli˘ginin 9 farklı proje ver- siyonuna göre de˘gi¸simi görülmektedir. Bu niteli˘ge ait hesa- planan sayısal de˘gerler y-ekseninde yer alırken; versiyon nu- maraları yine x-eksini ile verilmi¸stir. Sezgisel olarak, an- la¸sılabilirlik niteli˘gin ilk versiyonlarda azalma göstermesi bek- lenir; ancak bir yerden sonra artması beklenmektedir. Grafi˘ge Tasarım Özellikleri Mobil Uygulama Versiyonları V2.2.0 V2.0.1 V2.1.0 V2.1.1 V2.1.2 V2.2.0 V2.2.1 V2.2.2 V2.3.0 Design Size 111 134 166 144 144 238 238 239 240 Hierarchies 3,090 3,000 3,050 3,120 3,120 2,860 2,860 2,870 2,870 Cohesion 0,701 0,767 0,731 0,689 0,690 0,667 0,671 0,673 0,670 Polymorphism 0 0 0 0 0 0 0 0 0 Messaging 310 307 370 370 370 580 580 580 583 Abstraction 3,495 3,067 3,181 3,514 3,514 3,038 3,038 3,050 3,046 Encapsulation 0,734 0,730 0,690 0,696 0,695 0,652 0,654 0,652 0,651 Composition 110 114 161 162 162 335 329 334 339 Inheritance 0,084 0,084 0,075 0,075 0,075 0,095 0,095 0,094 0,094 Coupling 95 95 121 121 121 183 183 84 185 Complexity 440 437 540 540 540 850 850 854 860 Tablo II: Farklı Uygulama Versiyonları için Ölçülen Tasarım Bile¸senlerinin De˘gerleri Kalite Nitelikleri Mobil Uuygulama Versiyonları V2.0.0 V2.0.1 V2.1.0 V2.1.1 V2.1.2 V2.2.0 V2.2.1 V2.2.2 V2.3.0 Reusability 1 1,055 1,138 1,084 1,084 1,345 1,346 1,348 1,350 Flexibility 1 0,970 0,980 1,006 1,007 1,109 1,101 1,108 1,114 Understandibility -1 -0,909 -1,251 -1,290 -1,290 -2,002 -1,997 -2,009 -2,023 Functionality 1 1.063 1,134 1,076 1,076 1,285 1,286 1,288 1,290 Extendibility 1 1,056 0,961 0,926 0,926 1,104 1,104 1,101 1,09 Effectiveness 1 0,977 0,954 0,976 0.976 1,054 1,050 1,052 1,053 Tablo III: Farklı Uygulama Versiyonları için Hesaplanan Kalite Nitelikleri göre formel olarak analiz edilen anla¸sılabilirlik niteli˘ginin, esas geli¸stirmelerin yapıldı˘gı versiyon geçi¸slerindeki sayısal sıçramaları daha fazla iken ara versionlarda sabit kaldı˘gı söylenebilir. V2.2.0-V2.3.0 aralı˘gında anla¸sılabilirlik niteli˘gin- deki azalma hızının kırıldı˘gı ve ilerleyen versiyonlarda artırılması adına yapılacak düzenlemelerden sonra beklenen davranı¸sa gelece˘gi öngörülebilir. V. SONUÇ Bu çalı¸smada Anroid platformu için Java dili kullanılarak hazırlanan bir mobil uygulama ele alınmı¸stır. Bu uygulamanın bir yıl içerisinde geli¸stirilen ilk 9 versiyonu arasındaki kalite niteliklerinin de˘gi¸simi QMOOD Modeli kullanılarak incelen- mi¸stir. Sonuç olarak, kullanılan modelin, ilgili mobil uygulama için beklendi˘gi gibi sonuçlar üretti˘gi gözlemlenerek; modelin nesneye dayalı tasarım kriterleri göz önüne alınarak hazırlanan mobil uygulamalar için do˘grulu˘gu görülmü¸stür. Ayrıca, kalite niteliklerinin de˘gi¸sim karakteristi˘gine bakıldı˘gında, projenin geli¸stirilmesi esnasında, hata düzeltme için yapılan sürüm gün- cellemelerinde nesneye dayalı programlama prensiplerinden uzakla¸sıldı˘gı ya da dikkate alınmadı˘gı savunulabilir. Esas geli¸stirmelerin yapıldı˘gı sürüm geçi¸slerinde ise kalite nitelik- lerinin de˘gi¸sim karakteristi˘gi beklendi˘gi gibi olmu¸stur. An- la¸sılabilirlik niteli˘ginin kalite karakteristi˘ginin kabul edilebilir olması adına bundan sonraki sürümlerde bu nitelikle ilgili nesneye dayalı prensiplere biraz daha özen göstermek gerekti˘gi öz ele¸stirisi yapılabilir. KAYNAKÇA [1] S. Chidamber and C. Kemerer, “A metrics suite for object oriented design,” IEEETransactions on Software Engineering, vol. 20, No. 6, pp. 476-493, 1994. [2] Bansiya, J. and Davis, C. G., "A Hierarchical Model for Object- Oriented Design Quality Assessment", IEEE Transactions on Software Engineering, vol. 28, no. 1, pp.4-17, (2002). [3] Jetter, A., “Assessing Software Quality Attributes With Source Code Met- rics”, Diploma Thesis, University of Zurich Department of Informatics, Zurih, October (2006). [4] Dromey, R. G., “A Model For Software Product Quality”, Software Engineering, IEEE Transactions on, 21(2):146-162 (1995). [5] M. Lanza and R. Marinescu, Object-Oriented Metrics in Practice: Using Software Metrics to Characterize, Evaluate, and Improve the Design of Object-Oriented Systems. Springer, Heidelberg (2006). [6] Rosenberg, L.,H., “Applying And Interpreting Object Oriented Metrics”, Proc. Software Technology Conference. Utah, (1998) [7] McCall, J. A., Richards, P. K. and Walters, G. F., "Factors in Software Quality", Nat’l Tech.Information Service, no. Vol. 1, 2 and 3, (1977). [8] Victor R. Basili, “Software Modeling and Measurement: The Goal/Question/Metric Paradigm”, Instute for Advanced Computer Stud- ies. Department of Computer Science, University of Maryland, 1992. [9] Victor R. Basili, Gianluigi Caldiera, H. Dieter Rombach, “The Goal Question Metric Approach”, Encyclopedia of Software Engineering, Wiley1994. [10] ISO “ISO,IEC 9126”,http://www.iso.org [11] Google Developers, ’Codepro AnalytiX | Google Developers’, 2015. [Online]. Available: https://developers.google.com/java-dev- tools/codepro/ [12] Metrics.sourceforge.net, ’Metrics 1.3.6’, 2015. [Online]. Available: http://metrics.sourceforge.net/.