focus group e
DESCRIPTION
Software assessment using metrics:A comparison across large C++ and Java SystemsTRANSCRIPT
Software assessment using metrics:A comparison across large C++ and Java Systems
Ahmad Sabiq, Anugrah Ramadhani, Yonatan
Focus Group E TD:TPLFakultas Ilmu Komputer, Universitas
Indonesia
Jean Mayrand, Jean-François Patenaude, Ettore Merlo, Michel Dagenais and Bruno Laguë
04/10/2023 Focus Group E, TD TPL @ 2011 2
Agenda•Pendahuluan•Data Eksperimen•System Level Metric•Class Level Metric•C++ Vs. Java•Method Level Metric•Kesimpulan
04/10/2023 Focus Group E, TD TPL @ 2011 3
Pendahuluan• Tujuan: Metode penilaian u/ evaluasi kualitas sistem perangkat lunak berbasis Objek
• Dasar dari metode penilaian:• Abstraksi source code• OO Metrics• Representasi Grafis
04/10/2023 Focus Group E, TD TPL @ 2011 4
Pendahuluan• Latar Belakang:
• Butuh penilaian kualitas perangkat lunak• Berdasar hasil wawancara desainer dan arsitek produk subjektif dan terkadang bias
• Berdasar hasil review life cycle awal dari produk seperti dokumen analisis & desain terkadang produk akhir berbeda dengan dokumen analisis & desain
• Berdasar abstraksi source code presisi, tidak bias, dan bisa diaplikasikan pada sistem yang sangat besar (dengan tools otomatis)
04/10/2023 Focus Group E, TD TPL @ 2011 5
Pendahuluan•Framework Penilaian
• Metode bertujuan untuk menemukan dan menandai pada bagian sistem yang mempunyai karakteristik tidak biasa
• Dasar OO Metrics: Level of Granularity• Tools: Datrix TM Toolset• Data Eksperimen: Sembilan* sistem berbasis OO yang besar, dari dua bahasa pemrograman (C++ dan Java)
04/10/2023 Focus Group E, TD TPL @ 2011 6
Pendahuluan•Level Of Granularity: Tingkat kedetilan struktur sistem1. Level Sistem2. Level Kelas3. Level Method
04/10/2023 Focus Group E, TD TPL @ 2011 7
•DatrixTM Toolset: untuk abstraksi source code
•Proses: Source Code Abstract Syntax Tree
(AST) Intermediate Representation Language
(IRL)
Pendahuluan
04/10/2023 Focus Group E, TD TPL @ 2011 8
Data EksperimenName Language Files Classes LOC Description
OSS C++ 658 1080 462.000 Monitoring System
JDK Java 644 557 145.000 Developer Toolkit
AntLR Java 131 114 26.000 Parser Generator
Swing Java 692 1234 215.000 Interface Toolkit
HTTPClient Java 51 68 21.000 Web Browser
KFC Java 149 223 57.000 Interface Toolkit
CUP Java 38 40 11.000 Parser Generator
SableCC Java 251 259 37.000 Parser Generator
JavaAST Java 78 80 19.000 Java Parser and AST Builder, generated with JavaCC
Character Graphics
Java 8 8 645 Tugas 2 TPL
04/10/2023 Focus Group E, TD TPL @ 2011 9
Level of GranularityLevel System
Level Class
Level Method
04/10/2023 Focus Group E, TD TPL @ 2011 10
System Level MetricsDiukur dengan melihat topologi dari sistem software untuk membantu dalam mengevaluasi maintability software tersebut.
Kompleksitas dan relevansi dokumentasinya dapat dievaluasi dari strukturnya.
Penilaian topologi dapat membantu mengidentifikasikan apakah sistem tersebut berbasis pada kerangka object oriented yang baik.
04/10/2023 Focus Group E, TD TPL @ 2011 11
System Level Metrics
ClaInhDirNbr Number of direct parent classes
ClaChdDirNbr Number of direct child classes
ClaInhIndNbr Total number of parent classes
ClaIntChdDirNbr Number of direct child interfaces
ClaInhLvl Inheritance level
ClaIntLvl Interface level
04/10/2023 Focus Group E, TD TPL @ 2011 12
System Level MetricsDiukur dengan melihat topologi dari sistem software untuk membantu dalam mengevaluasi maintability software tersebut.
Kompleksitas dan relevansi dokumentasinya dapat dievaluasi dari strukturnya.
Penilaian topologi dapat membantu mengidentifikasikan apakah sistem tersebut berbasis pada kerangka object oriented yang baik.
04/10/2023 Focus Group E, TD TPL @ 2011 13
System Level Metrics•Hasil Eksperimen: Paper
04/10/2023 Focus Group E, TD TPL @ 2011 14
System Level Metrics•Hasil Eksperimen: Character Graphics
Rata-rata Maksimal
ClaInhDirNbr 0.375 1
ClaCHdDirNbr 0.375 3
ClaInhIndNbr 0.375 1
ClaIntChdDirNbr 0 0
ClaInhLvl 0.375 1
ClaIntLvl 0 0
04/10/2023 Focus Group E, TD TPL @ 2011 15
System Level Metrics•Evaluasi Paper• ClaInhDirNbr
• Hanya 6% kelas di proyek OSS yang menggunakan multiple inheritance
• Java hanya mengizinkan satu pewarisan, sehingga maksimal selalu 1.
• ClaChdDirNbr
• Pada sistem java jumlah parent class umumnya berkisar diantara 0 sampai 4.
• Pada SableCC terdapat dua kelas dengan jumlah anak 36 dan 62, yang merupakan Node dan kelas Token.
04/10/2023 Focus Group E, TD TPL @ 2011 16
System Level Metrics• JavaAST dihasilkan dari SableCC
• Swing memiliki 9 buah kelas yang memiliki anak lebih dari 10.
• Pada OSS dan JDK, kelas yang memiliki jumlah anak banyak biasanya kelas yang berhubungan dengan kelas utilitas.
• ClaInhIndNbr
• Pada OSS tidak begitu diperlukan karena 94% kelas hanya menggunakan pewarisan tunggal.
• ClaIntChdDirNbr
• Swing dan KFC yang merupakan toolkit user -interface,, menggunakan interface-extension lebih banyak.
04/10/2023 Focus Group E, TD TPL @ 2011 17
System Level Metrics• ClaInhLvl
• Pada sistem java, mayoritas project memeiliki kelas pewarisan dengan dengan kedalaman satu atau dua tingkat. Kelas pada OSS yang memiliki tingkat pewarisan dengan kedalaman 9 merupakan kelas yang over engineered.
• ClaIntLvl
• Rata-rata tingkat kedalaman interface pada sistem java adalah satu atau dua.
04/10/2023 Focus Group E, TD TPL @ 2011 18
Class Level Metrics• Dengan mengukur besar dan struktur kelas-kelas tersebut, kompleksitas bisa dievaluasi dan situasi yang tidak biasa bisa diidentifikasi
• Dievaluasi dengan cara mengkaji karakteristik internal dari kelas-kelas sistem
• Dibagi tiga sub-bagian: Atributte, Method dan Class
04/10/2023 Focus Group E, TD TPL @ 2011 19
Class Level Metrics - Attribute
ClaAttPriNbr Number of private attributes
ClaAttProNbr Number of protected attributes
ClaAttPubNbr Number of public attributes
ClaAttNbr Total number of attributesClaAttPriNbr + ClaAttProNbr + ClaAttPubNbr
ClaAttHid Attribute Hiding100* (ClaAttPriNbr/ClaAttNbr)
ClaAttStaNbr Number of static class attributes
04/10/2023 Focus Group E, TD TPL @ 2011 20
Class Level Metrics - Attribute
•Hasil Eksperimen: Paper
04/10/2023 Focus Group E, TD TPL @ 2011 21
Class Level Metrics - Attribute
•Hasil Eksperimen: Character Graphics
Nama Metric Rata-rata Max
ClaAttPriNbr 2.75 5
ClaAttProNbr 0.63 4ClaAttPubNbr 0 0ClaAttNbr 3.38 5ClaAttHid 83.34 100ClaAttStaNbr 0.13 1
04/10/2023 Focus Group E, TD TPL @ 2011 22
Class Level Metrics - Attribute
Evaluasi: Paper• Kelas-kelas dengan ClaAttNbr tinggi:
• JDK(118); KeyEvent.java; enumerasi, mapping events untuk mengatur keyboard
• Swing(110);Constant.java; mapping untuk HTML tag• JavaAST(245); JavaParser.java; parsing state machine
• OSS(70); maps data repository
• Tingkat ClaAttHid pada OSS sudah cukup bagus. KFC, CUP, AntLR dan JavaAST memiliki hasil yang rendah.
04/10/2023 Focus Group E, TD TPL @ 2011 23
Class Level Metrics - Attribute• Di OSS, ClaAttPubNbr sangat rendah, hanya 129 dari 3435 atribut yang bersifat public, 37% dari atribut bersifat private.
• Untuk ClaAttPriNbr, OSS memiliki 37% dari total atribut yang bersifat private, sedangkan pada KFC bernilai 25%, CUP 28%, AntLR 8,4% dan JavaAST 15,6%
• Rendahnya ClaAttPubNbr dan tingginya ClaAttPriNbr mencerminkan level enkapsulasi sistem yang baik
04/10/2023 Focus Group E, TD TPL @ 2011 24
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• Kelas dengan ClaAttProNbr tinggi adalah Cshape.
• Untuk metrik ClaAttStaNbr, hanya 3.9% atribut di Character Graphics berupa atribut static.
04/10/2023 Focus Group E, TD TPL @ 2011 25
Class Level Metrics - Method
ClaMetPriNbr Number of private methods
ClaMetProNbr Number of protected methods
ClaMetPubNbr Number of public methods
ClaMetNbr Total number of methodsClaMetPriNbr + ClaMetProNbr + ClaMetPubNbr
ClaMetStaNbr Number of static class methods
04/10/2023 Focus Group E, TD TPL @ 2011 26
Class Level Metrics - Method
•Hasil Eksperimen: Paper
04/10/2023 Focus Group E, TD TPL @ 2011 27
Class Level Metrics - Method
•Hasil Eksperimen: Character Graphics
Nama Metric Rata-rata Max
ClaMetPriNbr 0 0
ClaMetProNbr 0 0ClaMetPubNbr 7.63 15ClaMetNbr 7.63 15ClaMetStaNbr 0.13 1
04/10/2023 Focus Group E, TD TPL @ 2011 28
Class Level Metrics - Method
Evaluasi: Paper• Untuk ClaMetNbr, kelas-kelas yang memiliki nilai maksimum tinggi adalah:• JavaASR(481); kelas JavaParser; parser dari analyzer source code
• Swing(420); kelas html32; parser dari file HTML• SableCC(315); kelas DepthFirstAdapter
• Untuk ClaMetPubNbr, rata-rata pada semua sistem sudah cukup tinggi. Pengecualian pada JavaAST(40%).
• Untuk metrik ClaMetStaNbr, anomali terdapat pada JavaAST(84% methodnya bersifat static)
04/10/2023 Focus Group E, TD TPL @ 2011 29
Class Level Metrics - Method
Kelas dengan method public sedikit dan method private yang banyak, mengindikasikan pengaplikasian desain sistem facade*
Evaluasi: Character Graphics• Semua method sistem bersifat public, dengan jumlah method terbanyak (15) ada pada kelas Cshape
• Hanya satu dari 61 method yang bersifat static, yaitu method main
04/10/2023 Focus Group E, TD TPL @ 2011 30
Class Level Metrics - Class
ClaMsgNbr Number of messagesClaAttNbr+ ClaMetNbr
ClaClaNstNbr Number of nested classes
ClaCstrNbr Number of Constructor
ClaNamLen Length of the class name
04/10/2023 Focus Group E, TD TPL @ 2011 31
Class Level Metrics - Class•Hasil Eksperimen: Paper
04/10/2023 Focus Group E, TD TPL @ 2011 32
Class Level Metrics - Class•Hasil Eksperimen: Character Graphics
Nama Metric Rata-rata Max
ClaMsgNbr 11 19ClaClaNstNbr 0 0ClaCstrNbr 0.88 1ClaNamLen 7 14
04/10/2023 Focus Group E, TD TPL @ 2011 33
Class Level Metrics - ClassEvaluasi: Paper• Untuk ClaMsgNbr, nilai yang tinggi mengindikasikan kelas yang mungkin kompleksitasnya tinggi. • JavaAST(726) JavaParser• Swing(444) html32• SableCC(315) DepthFirstAdapter
04/10/2023 Focus Group E, TD TPL @ 2011 34
Class Level Metrics - Class•ClaClaNstNbr, pada OSS, hanya ada 8 kemunculan. Anomali pada KFC(45) dan Swing(38). • Pada KFC tinggi karena nested class diutilisasi sebagai sebuah callback
• Pada Swing tinggi karena memang perlu diperbaiki. (Pada rilis Swing selanjutnya, masalah ini telah diselesaikan)
04/10/2023 Focus Group E, TD TPL @ 2011 35
Class Level Metrics - Class• Untuk ClaCstrNbr, metrik ini tidak tersedia di OSS karena keterbatasan tool pada pengujian. Tingginya nilai metrik ini mengindikasikan kemungkinan kompleksitas kelas juga tinggi. Contohnya adalah kelas pada KFC(17) dan JDK(13).
• Untuk ClaNamLen, secara umum >8 karakter sudah dianggap mencukupi. Secara rata-rata, metrik ini lebih tinggi pada sistem-sistem Java dibandingkan di sistem C++
04/10/2023 Focus Group E, TD TPL @ 2011 36
Class Level Metrics - ClassEvaluasi: Character Graphics• Untuk ClaMsgNbr, nilai tertinggi terdapat pada kelas CShape(19). Tetapi, banyak method di CShape yang hanya berupa abstract yang akan didefinisikan lagi pada kelas turunan, sehingga CShape tidak tergolong kelas yang kompleks.
• Untuk metrik ClaNstNbr, semua kelas bernilai satu karena tiap file hanya berisikan sebuah kelas.
04/10/2023 Focus Group E, TD TPL @ 2011 37
Class Level Metrics - Class• Begitu juga untuk ClaCstrNbr, tiap kelas hanya memiliki sebuah constructor. Sehingga, kelas-kelas pada Character Graphics bisa digolongkan tidak kompleks
• Untuk metrik ClaNamLen, secara rata-rata penamaan kelas Character Graphics masih kurang baik, kecuali untuk kelas DrawingPackage(14)
04/10/2023 Focus Group E, TD TPL @ 2011 38
C++ Vs. Java• Kelas Interface
• Single Inheritance VS. Multi Inheritance
• Hirarki Kelas dari masing-masing sistem
04/10/2023 Focus Group E, TD TPL @ 2011 39
Kelas Interface • Interface: kumpulan method tanpa isi (body)
• Dalam pengaplikasiannya, dengan menggunakan relasi `implements`
• Sebuah “kontrak” tentang method-method yang akan ada pada instance ybs.
• Compiler akan memeriksa apakah semua method interface dideklarasikan isinya. Kalau tidak error
Sumber: The Java Tutorial http://download.oracle.com/javase/tutorial/
java/concepts/interface.html
04/10/2023 Focus Group E, TD TPL @ 2011 40
Single Inheritance VS. Multi Inheritance
• Java hanya mengijinkan Single Inheritance, sedangkan C++ Multiple Inheritance
• Pada Java, jumlah direct parent selalu 1 atau 0
• Struktur single inheritance Tree• Struktur multi inheritance Graph
04/10/2023 Focus Group E, TD TPL @ 2011 41
Hirarki Kelas• Seharusnya dibangun untuk mempermudah pengembangan lanjut sistem (easily enhanced and extended)
• Kombinasi dari metrics level kelas dan level sistem.
• Semakin dalam level inheritance, seharusnya jumlah method dan atribut per kelas menjadi lebih sedikit
• Dibantu dengan representasi grafik scatter
04/10/2023 Focus Group E, TD TPL @ 2011 42
Level Inheritance & Jumlah Method
• Sebuah titik mencerminkan sebuah kelas dari sistem.
04/10/2023 Focus Group E, TD TPL @ 2011 43
Level Inheritance & Jumlah Atribut
• Sebuah titik mencerminkan sebuah kelas dari sistem.
04/10/2023 Focus Group E, TD TPL @ 2011 44
Character Graphics
0 1 202468
101214161820
Level Inheritance VS. Jumlah Method
04/10/2023 Focus Group E, TD TPL @ 2011 45
Character Graphics
0 1 20123456789
10
Level Inheritance VS. Jumlah Atribut
04/10/2023 Focus Group E, TD TPL @ 2011 46
Method Level Metrics• Fokus pada Code Java
• Tools yang digunakan tidak mendukung method metric untuk C++
• TujuanEvaluasi komplesitas method
• Jenis Metrik yang digunakan
04/10/2023 Focus Group E, TD TPL @ 2011 47
Method Level Metrics
RtnCalToNbr Total number of calls of others
RtnCalFromNbr Total number of calls from others
RtnStmExeNbr Number of executable statements
RtnCndNbr Number of conditional expressions
04/10/2023 Focus Group E, TD TPL @ 2011 48
Hasil Eksperimen : Paper
04/10/2023 Focus Group E, TD TPL @ 2011 49
Hasil Eksperimen : Character Graphic
04/10/2023 Focus Group E, TD TPL @ 2011 50
Evaluasi Method MetricEvaluasi: Paper• RtnCalToNbr
• Method yang paling banyak memanggil method lain : pada proyek sableCC sebanyak lebih dari 250 method.
• Perlu di split menjadi bagian yang lebih kecil
• RtnCalFromNbr • 85% method dipanggil antara 0 s/d 5 method lain. Method yang paling banyak dipanggil sebanyak 1829 kali oleh method lain. Menunjukan method tersebut penting dan biasanya cukup simple.
04/10/2023 Focus Group E, TD TPL @ 2011 51
Evaluasi Method Metric
•RtnStmExeNbr • 90% method memiliki kurang dari 25 baris statement
•RtnCndNbr• Method yang komplek ditemui pada proyek Swing dan JavaAST
04/10/2023 Focus Group E, TD TPL @ 2011 52
Evaluasi Method MetricEvaluasi: Character Graphics
• RtnCalToNbrMethod yang paling banyak memanggil method lain : DrawingPackage.Interact dan DrawingPackage.ApplyDragTool
• RtnCalFromNbr Method yang paling banyak dipanggil Screen.DrawPixel
• RtnStmExeNbr Statement yang paling banyak dalam 1 method: 28 statement – DrawingPackage.ApplyDragTool
• RtnCndNbr Max 12 Kondisi – DrawingPackage.ApplyDragTool
04/10/2023 Focus Group E, TD TPL @ 2011 53
Kesimpulan
• Paper• Metode penilaian lewat abstraksi source code cocok pada sistem yang sangat besar
• Nilai metrics dan representasi grafis harus diintrepetasikan dengan “judgement”, bukan dengan cara membandingkan hasil tersebut dengan panduan yang sudah fix
• Pada Level sistem;• Beberapa tipe perangkat lunak, seperti Parser, harus mempunyai nilai metrics tersendiri.
04/10/2023 Focus Group E, TD TPL @ 2011 54
Kesimpulan• Source code hasil generate otomatis, harus masuk pertimbangan dan sudut pandang yang berbeda dengan source code biasa
• Metrics seharusnya digunakan sebagai guideline inspeksi, bukan sebagai dasar sistem penilaian
• Pada Level Kelas,• Beberapa metrics baru diusulkan untuk membantu mengivestigasi sistem secara spesifik dan efisien
• Kelas-kelas yang memiliki anomali bisa diinspeksi dan diberikan tanda sebagai area beresiko
• Dengan cara ini, evaluator bisa bekerja lebih cepat dalam menginvestigasi area beresiko pada sistem yang sangat besar
04/10/2023 Focus Group E, TD TPL @ 2011 55
Kesimpulan• Pada Level Method,
• Sistem dengan persentasi method private tinggi, dimungkinkan untuk mengambil asumsi bahwa desain sistem tersebut berfokus pada mengijinkan akses dari luar melalui sejumlah kecil method public, atau Façade system design [Gamma et al. 1994]
04/10/2023 Focus Group E, TD TPL @ 2011 56
Kesimpulan• Character Graphics
• Penggunaan metrics yang diajukan pada paper ini kurang tepat, karena ditujukan untuk sistem yang sangat besar. Pada sistem character graphics, anomali dari suatu area kurang terlihat karena kurangnya variasi data.
• Level sistem• Metrik ini digunakan hanya untuk melihat gambaran sistem secara keseluruhan, dan membantu evaluasi pada level berikutnya
04/10/2023 Focus Group E, TD TPL @ 2011 57
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 dan tidak adanya method private, bisa dikatakan bahwa Character Graphics tidak mengadopsi desain sistem Façade.
04/10/2023 Focus Group E, TD TPL @ 2011 58
Kesimpulan
• Level Method• DrawingPackage adalah kelas yang memiliki method yang paling banyak memanggil oleh method lain.
method Interact() dan ApplyDragTool()• Secara total, method yang paling
banyak dipanggil adalah method DrawPixel()