+ All Categories
Home > Technology > Focus Group E

Focus Group E

Date post: 12-Dec-2014
Category:
Upload: anra54
View: 978 times
Download: 0 times
Share this document with a friend
Description:
Software assessment using metrics: A comparison across large C++ and Java Systems
Popular Tags:
58
Software assessment using metrics: A comparison across large C+ + and Java Systems Ahmad Sabiq, Anugrah Ramadhani, Yonatan Focus Group E TD:TPL Fakultas Ilmu Komputer, Universitas Indonesia Jean Mayrand, Jean-François Patenaude, Ettore Merlo, Michel Dagenais and Bruno Laguë
Transcript
Page 1: Focus Group E

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ë

Page 2: Focus Group E

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

Page 3: Focus Group E

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

Page 4: Focus Group E

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)

Page 5: Focus Group E

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)

Page 6: Focus Group E

04/10/2023 Focus Group E, TD TPL @ 2011 6

Pendahuluan•Level Of Granularity: Tingkat kedetilan struktur sistem1. Level Sistem2. Level Kelas3. Level Method

Page 7: Focus Group E

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

Page 8: Focus Group E

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

Page 9: Focus Group E

04/10/2023 Focus Group E, TD TPL @ 2011 9

Level of GranularityLevel System

Level Class

Level Method

Page 10: Focus Group E

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.

Page 11: Focus Group E

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

Page 12: Focus Group E

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.

Page 13: Focus Group E

04/10/2023 Focus Group E, TD TPL @ 2011 13

System Level Metrics•Hasil Eksperimen: Paper

Page 14: Focus Group E

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

Page 15: Focus Group E

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.

Page 16: Focus Group E

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.

Page 17: Focus Group E

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.

Page 18: Focus Group E

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

Page 19: Focus Group E

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

Page 20: Focus Group E

04/10/2023 Focus Group E, TD TPL @ 2011 20

Class Level Metrics - Attribute

•Hasil Eksperimen: Paper

Page 21: Focus Group E

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

Page 22: Focus Group E

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.

Page 23: Focus Group E

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

Page 24: Focus Group E

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.

Page 25: Focus Group E

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

Page 26: Focus Group E

04/10/2023 Focus Group E, TD TPL @ 2011 26

Class Level Metrics - Method

•Hasil Eksperimen: Paper

Page 27: Focus Group E

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

Page 28: Focus Group E

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)

Page 29: Focus Group E

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

Page 30: Focus Group E

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

Page 31: Focus Group E

04/10/2023 Focus Group E, TD TPL @ 2011 31

Class Level Metrics - Class•Hasil Eksperimen: Paper

Page 32: Focus Group E

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

Page 33: Focus Group E

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

Page 34: Focus Group E

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)

Page 35: Focus Group E

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++

Page 36: Focus Group E

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.

Page 37: Focus Group E

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)

Page 38: Focus Group E

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

Page 39: Focus Group E

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

Page 40: Focus Group E

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

Page 41: Focus Group E

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

Page 42: Focus Group E

04/10/2023 Focus Group E, TD TPL @ 2011 42

Level Inheritance & Jumlah Method

• Sebuah titik mencerminkan sebuah kelas dari sistem.

Page 43: Focus Group E

04/10/2023 Focus Group E, TD TPL @ 2011 43

Level Inheritance & Jumlah Atribut

• Sebuah titik mencerminkan sebuah kelas dari sistem.

Page 44: Focus Group E

04/10/2023 Focus Group E, TD TPL @ 2011 44

Character Graphics

0 1 202468

101214161820

Level Inheritance VS. Jumlah Method

Page 45: Focus Group E

04/10/2023 Focus Group E, TD TPL @ 2011 45

Character Graphics

0 1 20123456789

10

Level Inheritance VS. Jumlah Atribut

Page 46: Focus Group E

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

Page 47: Focus Group E

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

Page 48: Focus Group E

04/10/2023 Focus Group E, TD TPL @ 2011 48

Hasil Eksperimen : Paper

Page 49: Focus Group E

04/10/2023 Focus Group E, TD TPL @ 2011 49

Hasil Eksperimen : Character Graphic

Page 50: Focus Group E

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.

Page 51: Focus Group E

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

Page 52: Focus Group E

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

Page 53: Focus Group E

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.

Page 54: Focus Group E

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

Page 55: Focus Group E

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]

Page 56: Focus Group E

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

Page 57: Focus Group E

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.

Page 58: Focus Group E

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()


Recommended