Paper ini membandingkan metrik sistem dan kelas pada sembilan sistem berbasis objek besar yang dikembangkan dalam bahasa C++ dan Java. Metrik ini diukur pada tiga tingkat granularitas (sistem, kelas, dan metode) untuk mengevaluasi kualitas perangkat lunak dan mengidentifikasi bagian sistem dengan karakteristik tidak biasa.
1. Software assessment using metrics:A comparison across large C++ and Java Systems Jean Mayrand, Jean-François Patenaude, EttoreMerlo, Michel Dagenais and Bruno Laguë Ahmad Sabiq, Anugrah Ramadhani, Yonatan Focus Group E TD:TPL FakultasIlmuKomputer, Universitas Indonesia
2. Agenda Pendahuluan Data Eksperimen System Level Metric Class Level Metric C++ Vs. Java Method Level Metric Kesimpulan 1 4/11/2011 Focus Group E, TD TPL @ 2011
3. Pendahuluan Tujuan: Metodepenilaian u/ evaluasikualitassistemperangkatlunakberbasisObjek Dasardarimetodepenilaian: Abstraksisourcecode OO Metrics RepresentasiGrafis 2 4/11/2011 Focus Group E, TD TPL @ 2011
4. Pendahuluan LatarBelakang: Butuhpenilaiankualitasperangkatlunak Berdasarhasilwawancaradesainerdanarsitekproduk subjektifdanterkadang bias Berdasarhasil review life cycle awaldariproduksepertidokumenanalisis & desain terkadangprodukakhirberbedadengandokumenanalisis & desain Berdasarabstraksisource code presisi, tidak bias, danbisadiaplikasikanpadasistem yang sangatbesar (dengan tools otomatis) 3 4/11/2011 Focus Group E, TD TPL @ 2011
5. Pendahuluan Framework Penilaian Metodebertujuanuntukmenemukandanmenandaipadabagiansistem yang mempunyaikarakteristiktidakbiasa Dasar OO Metrics: Level of Granularity Tools: DatrixTM Toolset Data Eksperimen: Sembilan* sistemberbasis OO yang besar, dariduabahasapemrograman (C++ dan Java) 4 4/11/2011 Focus Group E, TD TPL @ 2011
6. Pendahuluan Level Of Granularity: Tingkat kedetilanstruktursistem Level Sistem Level Kelas Level Method 5 4/11/2011 Focus Group E, TD TPL @ 2011
7. DatrixTMToolset: untukabstraksisource code Proses: SourceCodeAbstract Syntax Tree (AST) Intermediate Representation Language (IRL) Pendahuluan 6 4/11/2011 Focus Group E, TD TPL @ 2011
33. Swing dan KFC yang merupakan toolkit user -interface,, menggunakaninterface-extensionlebihbanyak.15 4/11/2011 Focus Group E, TD TPL @ 2011
34.
35. Padasistem java, mayoritas project memeilikikelaspewarisandengandengankedalamansatuatauduatingkat. Kelaspada OSS yang memilikitingkatpewarisandengankedalaman 9 merupakankelas yang over engineered.
38. Class Level Metrics Denganmengukurbesardanstrukturkelas-kelastersebut, kompleksitasbisadievaluasidansituasi yang tidakbiasabisadiidentifikasi Dievaluasidengancaramengkajikarakteristik internal darikelas-kelassistem Dibagitiga sub-bagian: Atributte, Method dan Class 17 4/11/2011 Focus Group E, TD TPL @ 2011
40. Class Level Metrics - Attribute HasilEksperimen: Paper 19 4/11/2011 Focus Group E, TD TPL @ 2011
41. Class Level Metrics - Attribute HasilEksperimen: Character Graphics 20 4/11/2011 Focus Group E, TD TPL @ 2011
42. Class Level Metrics - Attribute Evaluasi: Paper Kelas-kelasdenganClaAttNbrtinggi: JDK(118); KeyEvent.java; enumerasi, mappingeventsuntukmengaturkeyboard Swing(110);Constant.java; mappinguntuk HTML tag JavaAST(245); JavaParser.java; parsingstatemachine OSS(70); maps data repository TingkatClaAttHidpada OSS sudahcukupbagus. KFC, CUP, AntLR dan JavaASTmemilikihasilyangrendah. 21 4/11/2011 Focus Group E, TD TPL @ 2011
43. Class Level Metrics - Attribute Di OSS, ClaAttPubNbrsangatrendah, hanya 129 dari 3435 atributyangbersifatpublic, 37% dariatributbersifatprivate. UntukClaAttPriNbr, OSS memiliki 37% dari total atributyangbersifatprivate, sedangkanpada KFC bernilai 25%, CUP 28%, AntLR 8,4% dan JavaAST 15,6% RendahnyaClaAttPubNbr dan tingginyaClaAttPriNbrmencerminkanlevelenkapsulasi sistem yangbaik 4/11/2011 Focus Group E, TD TPL @ 2011 22
44. Class Level Metrics - Attribute Untuk metrik ClaAttStaNbr, 15% atribut di OSS static. Pada sistem berbasis Java, persentase lebih tinggi, JDK(57%), Swing(40%), CUP(65%), dan JavaAST(78%). Kelas dengan jumlah atribut static tinggi biasanya adalah kelas repositori informasi sistem Evaluasi: Character Graphics KelasdenganClaAttProNbrtinggiadalahCshape. UntukmetrikClaAttStaNbr, hanya 3.9% atribut di Character Graphics berupaatributstatic. 4/11/2011 Focus Group E, TD TPL @ 2011 23
46. Class Level Metrics - Method HasilEksperimen: Paper 25 4/11/2011 Focus Group E, TD TPL @ 2011
47. Class Level Metrics - Method HasilEksperimen: Character Graphics 26 4/11/2011 Focus Group E, TD TPL @ 2011
48. Class Level Metrics - Method Evaluasi: Paper UntukClaMetNbr, kelas-kelas yang memilikinilaimaksimumtinggiadalah: JavaASR(481); kelasJavaParser; parserdarianalyzersourcecode Swing(420); kelas html32; parserdari file HTML SableCC(315); kelasDepthFirstAdapter UntukClaMetPubNbr, rata-rata pada semuasistemsudahcukuptinggi. Pengecualian pada JavaAST(40%). Untuk metrik ClaMetStaNbr, anomali terdapatpadaJavaAST(84% methodnyabersifatstatic) 27 4/11/2011 Focus Group E, TD TPL @ 2011
49. Class Level Metrics - Method Kelas dengan method public sedikit dan method private yang banyak, mengindikasikan pengaplikasian desain sistem facade* Evaluasi: Character Graphics Semuamethod sistem bersifatpublic, denganjumlahmethodterbanyak (15) ada padakelasCshape Hanya satudari 61 methodyangbersifatstatic, yaitumethod main 28 4/11/2011 Focus Group E, TD TPL @ 2011
51. Class Level Metrics - Class HasilEksperimen: Paper 30 4/11/2011 Focus Group E, TD TPL @ 2011
52. Class Level Metrics - Class HasilEksperimen: Character Graphics 31 4/11/2011 Focus Group E, TD TPL @ 2011
53. Class Level Metrics - Class Evaluasi: Paper UntukClaMsgNbr, nilaiyangtinggimengindikasikankelasyangmungkinkompleksitasnyatinggi. JavaAST(726) JavaParser Swing(444) html32 SableCC(315) DepthFirstAdapter 32 4/11/2011 Focus Group E, TD TPL @ 2011
54. Class Level Metrics - Class ClaClaNstNbr, pada OSS, hanyaada 8 kemunculan. Anomalipada KFC(45) dan Swing(38). Pada KFC tinggikarenanestedclassdiutilisasisebagaisebuahcallback Pada Swing tinggikarenamemangperludiperbaiki. (Padarilis Swing selanjutnya, masalahinitelahdiselesaikan) 33 4/11/2011 Focus Group E, TD TPL @ 2011
55. Class Level Metrics - Class UntukClaCstrNbr, metrik ini tidaktersedia di OSS karenaketerbatasantoolpadapengujian. Tingginyanilaimetrik ini mengindikasikankemungkinankompleksitaskelasjugatinggi. Contohnyaadalahkelaspada KFC(17) dan JDK(13). UntukClaNamLen, secaraumum >8 karaktersudahdianggapmencukupi. Secara rata-rata, metrik ini lebihtinggipadasistem-sistem Java dibandingkan di sistem C++ 34 4/11/2011 Focus Group E, TD TPL @ 2011
56. Class Level Metrics - Class Evaluasi: Character Graphics UntukClaMsgNbr, nilaitertinggiterdapatpadakelasCShape(19). Tetapi, banyakmethoddiCShapeyanghanyaberupaabstractyang akan didefinisikanlagipadakelasturunan, sehinggaCShapetidaktergolongkelasyang kompleks. Untuk metrik ClaNstNbr, semuakelasbernilaisatukarenatiap file hanyaberisikansebuahkelas. 35 4/11/2011 Focus Group E, TD TPL @ 2011
57. Class Level Metrics - Class BegitujugauntukClaCstrNbr, tiapkelashanyamemilikisebuahconstructor. Sehingga, kelas-kelaspadaCharacter Graphics bisadigolongkantidakkompleks UntukmetrikClaNamLen, secara rata-rata penamaankelasCharacter Graphics masihkurangbaik, kecualiuntukkelas DrawingPackage(14) 36 4/11/2011 Focus Group E, TD TPL @ 2011
58. C++ Vs. Java KelasInterface Single Inheritance VS. Multi Inheritance HirarkiKelasdarimasing-masingsistem 4/11/2011 Focus Group E, TD TPL @ 2011 37
59. Kelas Interface Interface: kumpulan method tanpaisi (body) Dalampengaplikasiannya, denganmenggunakanrelasi `implements` Sebuah “kontrak” tentang method-method yang akanadapadainstanceybs. Compilerakanmemeriksaapakahsemua method interface dideklarasikanisinya. Kalautidak error 4/11/2011 Focus Group E, TD TPL @ 2011 38 Sumber: The Java Tutorial http://download.oracle.com/javase/tutorial/java/concepts/interface.html
60. Single Inheritance VS. Multi Inheritance 4/11/2011 Focus Group E, TD TPL @ 2011 39 Java hanyamengijinkanSingle Inheritance, sedangkan C++ Multiple Inheritance Pada Java, jumlahdirect parent selalu 1 atau 0 Struktursingle inheritance Tree Strukturmulti inheritance Graph
66. Method Level Metrics FokuspadaCode Java Tools yang digunakantidakmendukung method metric untuk C++ Tujuan Evaluasikomplesitas method JenisMetrik yang digunakan 4/11/2011 Focus Group E, TD TPL @ 2011 45
70. Evaluasi Method Metric Evaluasi: Paper RtnCalToNbr Method yang paling banyakmemanggil method lain : padaproyeksableCCsebanyaklebihdari 250 method. Perludi split menjadibagian yang lebihkecil RtnCalFromNbr 85% method dipanggilantara 0 s/d 5 method lain. Method yang paling banyakdipanggilsebanyak 1829 kali oleh method lain. Menunjukan method tersebutpentingdanbiasanyacukup simple. 4/11/2011 Focus Group E, TD TPL @ 2011 49
71. Evaluasi Method Metric RtnStmExeNbr 90% method memilikikurangdari 25 baris statement RtnCndNbr Method yang komplekditemuipadaproyek Swing danJavaAST 4/11/2011 Focus Group E, TD TPL @ 2011 50
72. Evaluasi Method Metric Evaluasi: Character Graphics RtnCalToNbr Method yang paling banyakmemanggil method lain : DrawingPackage.InteractdanDrawingPackage.ApplyDragTool RtnCalFromNbr Method yang paling banyakdipanggilScreen.DrawPixel RtnStmExeNbr Statement yang paling banyakdalam 1 method: 28 statement – DrawingPackage.ApplyDragTool RtnCndNbr Max 12 Kondisi – DrawingPackage.ApplyDragTool 4/11/2011 Focus Group E, TD TPL @ 2011 51
73. Kesimpulan Paper Metodepenilaianlewatabstraksisourcecodecocokpadasistem yang sangatbesar Nilai metrics danrepresentasigrafisharusdiintrepetasikandengan “judgement”, bukandengancaramembandingkanhasiltersebutdenganpanduan yang sudahfix Pada Level sistem; Beberapatipeperangkatlunak, seperti Parser, harusmempunyainilai metrics tersendiri. 4/11/2011 Focus Group E, TD TPL @ 2011 52
74. Kesimpulan Source code hasil generate otomatis, harusmasukpertimbangandansudutpandang yang berbedadengan source code biasa Metrics seharusnyadigunakansebagaiguidelineinspeksi, bukansebagaidasarsistempenilaian Pada Level Kelas, Beberapa metrics barudiusulkanuntukmembantumengivestigasisistemsecaraspesifikdanefisien Kelas-kelas yang memilikianomalibisadiinspeksidandiberikantandasebagai area beresiko Dengancaraini, evaluator bisabekerjalebihcepatdalammenginvestigasi area beresikopadasistem yang sangatbesar 4/11/2011 Focus Group E, TD TPL @ 2011 53
75. Kesimpulan Pada Level Method, Sistemdenganpersentasi method private tinggi, dimungkinkanuntukmengambilasumsibahwadesainsistemtersebutberfokuspadamengijinkanaksesdariluarmelaluisejumlahkecil method public, atauFaçade system design [Gamma et al. 1994] 4/11/2011 Focus Group E, TD TPL @ 2011 54
76. Kesimpulan Character Graphics Penggunaan metrics yang diajukanpada paper inikurangtepat, karenaditujukanuntuksistem yang sangatbesar. Padasistem character graphics, anomalidarisuatu area kurangterlihatkarenakurangnyavariasi data. Level sistem Metrikinidigunakanhanyauntukmelihatgambaransistemsecarakeseluruhan, danmembantuevaluasipada level berikutnya 4/11/2011 Focus Group E, TD TPL @ 2011 55
77. Kesimpulan Level Kelas Kelas CShape cenderung memiliki nilai metrik yang mencolok baik dari bagian method atau class, tetapi jika dikaji lebih lanjut, ternyata CShape banyak terdiri dari abstract method yang kompleksitasnya terbagi di kelas turunan dari CShape, yaitu CRect, CCircle, dan Ctext Dengan semua method yang bersifat public dantidakadanya method private, bisadikatakanbahwa Character Graphics tidakmengadopsidesainsistemFaçade. 4/11/2011 Focus Group E, TD TPL @ 2011 56
78. Kesimpulan Level Method DrawingPackageadalahkelas yang memiliki method yang paling banyakmemanggiloleh method lain. method Interact() danApplyDragTool() Secara total, method yang paling banyakdipanggiladalah method DrawPixel() 4/11/2011 Focus Group E, TD TPL @ 2011 57