Jelajahi eBook
Kategori
Jelajahi Buku audio
Kategori
Jelajahi Majalah
Kategori
Jelajahi Dokumen
Kategori
Abstract
One of the problems in object oriented application development is how to achieve a good quality software design.
This paper presents a good quality software design for wireless weather system application based on design
patterns. Abstract Factory and Mediator design patterns are used to design the application based on problem
similarity. Design process produces a static and a dynamic model of the application in UML (Unified Modeling
Language) diagrams. We use class cohesion and coupling metrices to measure the quality of our design.
Measurements show our proposed design has high class cohesion and low class coupling.
Key Words: object oriented design, design pattern, unified modeling language
Abstrak
Salah satu permasalahan dalam pengembangan aplikasi berbasis objek adalah bagaimana mendapatkan desain aplikasi yang
berkualitas. Makalah ini mempresentasikan sebuah perancangan aplikasi stasiun cuaca nirkabel yang berkualitas berdasarkan pola
desain (design pattern). Pola desain Abstract Factory dan Mediator digunakan pada perancangan berdasarkan kesamaan
permasalahan desain. Hasil desain adalah desain statis dan dinamis aplikasi yang dimodelkan dalam diagram-diagram UML (Unified
Modeling Language). Ukuran kohesi dan coupling kelas digunakan untuk menilai kualitas desain. Hasil pengukuran menunjukkan
desain yang diajukan memiliki kohesi kelas yang tinggi dan class coupling yang rendah.
Kata kunci: desain berbasis objek, pola desain, unified modeling language
susah mendapatkan ciri perangkat lunak yang biasanya menunjukkan hubungan antar kelas
berkualitas. (model statis) dan interaksi antar objek (model
Sebuah penerapan design pattern untuk mengatasi dinamis). Namun berbeda dengan algoritma,
permasalahan kualitas perangkat lunak pada [3] pola desain tidak menunjukkan kelas dan
dipresentasikan oleh makalah ini. Dimulai dengan objek yang terlibat pada komputasi [1].
pemilihan jenis pola desain yang tepat, modifikasi Secara umum, sebuah pola desain memiliki
pola desain, dan menghasilkan model statis dan 4 elemen penting, yaitu [1]:
dinamis aplikasi stasiun cuaca nirkabel. Model statis (1) name, mendeskripsikan sebuah masalah,
dan dinamis aplikasi dibuat dalam diagram pada
penyelesaian dan konsekuensinya dengan
UML. Diagram-diagram UML ini sangat mudah
diterjemahkan menjadi kerangka kode pada
1-2 kata yang mudah dimengerti
implementasi aplikasi cuaca nirkabel berbasis Qt. (2) problem, menjelaskan pada konteks seperti apa
Pola desain pertama kali dikenalkan dan dibukukan sebuah pola digunakan. Meliputi prasyarat yang
oleh Gamma et al (Gang of Four) pada tahun 1999 [2] harus dipenuhi untuk menerapkan sebuah pola
yang berisi kumpulan desain perangkat lunak (3) solution, mendeskripsikan kelas-kelas
berbasis objek yang berkualitas ”baik”. Sejak saat itu yang terlibat pada solusi umum. Juga
design pattern telah dikaji dan digunakan seperti: [4] memperlihatkan elemen-elemen yang
mengaplikasikan dan merumuskan pola desain untuk membangung sebuah rancangan, seperti
pengembangan aplikasi game, [5] mengusulkan apa relasinya, apa tanggungjawabnya dan
perancangan sistem embedded dengan bagaiamana kolaborasinya.
menggunakan pola desain, dan [6] mengkaji kualitas (4) consequences, adalah hasil dan konsekuensi
rancangan perangkat lunak yang menggunakan pola dari implementasi pola dan strategi
desain. Penggunaan design pattern untuk rancangan perancangan yang harus dipertimbangkan
antar muka dapat ditemukan pada [7] dan [8]. [7]
Ada banyak sekali pola desain yang dapat
membuat rancangan antar muka untuk aplikasi
diimplementasikan sesuai dengan kebutuhan, namun
bergerak dengan menggunakan pola desain.
yang cukup populer adalah 23 macam pola desain
Sedangkan [8] mengusulkan model rekayasa
antarmuka pengguna dengan pola desain untuk yang dikenalkan oleh The Gang of Four (GoF).
aplikasi umum. Makalah ini berbeda dengan [7] dan Secara umum, ke-23 pola tersebut dibagi menjadi 3
[8] karena diterapkan pada sistem embedded dan kategori berdasarkan fungsinya, yaitu [1]:
untuk aplikasi khusus yaitu aplikasi cuaca nirkabel. (1) Creational Patterns, yaitu pola yang fokus
pada inisiasi kelas/objek;
Organisasi makalah adalah sebagai berikut: (2) Structural Patterns, yaitu pola yang memberikan
pada bagian 2 akan dibahas konsep pola desain komposisi sebuah kelas/objek; dan
dan framework Qt. Bagian 3 akan dipresentasikan
(3) Behavioral Patterns, yaitu pola yang
metodologi penelitian yang dipakai dengan
menyajikan cara mengukur kualitas desain
mengatur tingkah laku, interaksi atau
perangkat lunak. Bagian 4 menampilkan diagram fungsi dari suatu kelas/objek.
kelas dan sekuens (model statis dan dinamis) yang 2.2 Qt framework
diusulkan. Sedangkan bagian 5 akan membahas
kualitas desain yang dihasilkan. Makalah ditutup Qt sangat memungkinkan untuk penerapan pola
dengan kesimpulan pada bagian 6. desain. Qt memiliki Qobject sebagai kelas statis yang
utama, konsep Signal, Slots, template dan containers.
2. POLA DESAIN DAN QT FRAMEWORK Qt memiliki komponen-komponen yang mendukung
2.1 Pola Desain penerapan pola desain. Signal dan Slots mendukung
pemrograman berbasis komponen. Komponen dapat
Pola desain adalah deskripsi tentang kelas dan objek- menentukan signal yang dikeluarkan pada beberapa
objek yang berkomunikasi, yang dibuat untuk kondisi, dan juga parameter-parameternya.
menyelesaikan persoalan perancangan umum pada Komponen juga dapat menentukan slot, yang
konteks tertentu. Design pattern adalah sebuah solusi merupakan metode C++ standar dengan ditandai
terhadap masalah-masalah umum dalam rekayasa khusus sehingga dapat menjadi slot. Signal dan Slots
perangkat lunak yang dapat digunakan berulang kali. tersebut merupakan bagian dari metode
Pola desain ini merupakan sebuah template yang Qobject::connect() yang merupakan metode utama
menunjukkan bagaimana sebuah masalah dalam Qt [9]. Komponen-komponen yang digunakan
diselesaikan dan dapat digunakan kembali dalam berulang dapat berupa sebagai berikut : class,
situasi yang berbeda. Pada pemrograman berbasis namespace, header file (*.h), source code module
objek, pola desain ini (*.cpp), compiled
INKOM, Vol. 6, No. 2, Article 196, Publication date: November 2012.
Penerapan Pola Desain untuk Perancangan Aplikasi Stasiun Cuaca Nirkabel 81
object module (*.o atau *.obj), library (*.lib atau (4) Pemodelan tingkah-laku. Model tingkah laku
*.la), devel package (lib+header files) dan menggambarkan hubungan pemanggilan
application [10]. operasi entitas oleh entitas lain biasanya
Template memungkinkan C++ untuk men- dalam rangka memenuhi suatu use case.
generate kelas dan fungsi yang berbeda versi (5) Penilaian kualitas desain. Kualitas desain
dengan tingkah laku yang sama dan tipe yang perangkat lunak dapat dinilai dari aspek
berparameter. Template dibedakan dengan kohesifitas pada kelas dan coupling antar kelas.
penggunaan kata kunci template dan parameter
template ditulis dalam kurva sudut <>. Template 4. DESAIN APLIKASI YANG DIAJUKAN
fungsi (function template) digunakan untuk membuat
fungsi type-checked yang memiliki kesamaan pola. Berdasarkan metodologi yang dijelaskan pada
Sedangkan template kelas (class template) Bagian 3 beberapa hal yang akan dijelaskan
digunakan untuk membangkitkan containers data pada bagian ini adalah: (1) hasil analisis
umum [10]. Sedangkan containers adalah kelas untuk entitas yang terlibat, (2) design pattern yang
mengumpulkan tipe value (yang dapat diperbanyak). dipilih, (3) model struktural yang diajukan dan
Masing-masing struktur data dioptimalkan untuk (4) model behavioural yang diajukan.
operasi yang berbeda. Pada Qt 4, ada beberapa
kelas template containters, diantaranya Qlist<T>, 4.1 Analisis Entitas
QstringList, QlinkedList, Qvector<T>, Qmap <Key, Berdasarkan aplikasi cuaca nirkabel yang
T>, Qstack, dan lain-lain [10]. dijelaskan pada [3] terdapat 1 skenario use case
Sebagai contoh penerapan pola desain pada Qt yaitu use case tampilkan data terkini seperti yang
adalah penerapan pola desain Mediator. Tujuan dipresentasikan oleh Tabel I. Aktor untuk use case
pola desainMediator adalah membuat objek yang ini masih disederhanakan yaitu semua pengguna
mengenkapsulasi satu himpunan objek yang saling yang mengunjungi aplikasi sistem cuaca nirkabel.
berinteraksi. Mediator memungkinkan Terdapat 2 alir skenario yaitu: alir utama dan alir
pengembang mengatur interaksi objek sesuai exception. Alir utama dijalankan apabila
kebutuhan. Mediator dapat menjembatani interaksi pembacaan string data berhasil. Selain itu, yang
beberapa elemen seperti button, entry field, dan dijalankan adalah alir exception
listbox. Pada Qt, yang berperan sebagai mediator Berdasarkan analisis entitas pada skenario usecase
adalah kelas Qobject [10]. Pola Mediator juga menghasilkan beberapa kelas yang ada pada aplikasi
melibatkan Colleagues, kelas antara mediasi yang cuaca seperti yang ditunjukkan oleh Tabel II.
terjadi dan objek antar muka. Pada Qt, kelas ini bisa
berupa kelas apa saja yang merupakan turunan 4.2 Pola Desain
langsung maupun tidak langsung dari Qobject,
sehingga dapat terlibat pada mekanisme signal/slot. Berdasarkan analisa entitas maka permasalahan
desain pada aplikasi ini adalah: (1) Bagaimana
3. METODOLOGI merepresentasikan SensorMgr, SensorData dan
SensorImgGen untuk tiap-tiap jenis sensor dan
Metodologi penerapan pola desain untuk (2) Bagaimana agar kelas MainWindow tidak
aplikasi cuaca nirkabel tersusun oleh memiliki coupling yang besar terhadap kelas-
beberapa langkah sebagai berikut: kelas yang dipakainya seperti Parser dan
(1) Analisa masalah desain. Perumusan masalah SensorMgr. Representasi SensorMgr,
desain yang tepat akan menentukan tipe design SensorData dan SensorImgGen harus membuat
pattern yang dipilih. Dalam hal aplikasi cuaca kelas yang menggunakannya tidak perlu merujuk
nirkabel terdapat beberapa permasalahan yaitu: pada jenis sensor karena metode yang dipanggil
(1) Entitas apa saja yang ada?, (2) adalah sama. Sedangkan, MainWindow harus
Bagaimana merepresentasikan entitas?, (3) sekecil mungkin tersambung (coupling) dengan
kelas-kelas yang dibuat.
Apa hubungan struktural antar entitas? dan
(4) Apa hubungan tingkah laku antar entitas? Pemilihan pola desain didasarkan pada
kesamaan permasalahan disan yaitu dengan
(2) Pemilihan pola desain. Pada sebuah design
memperhatikan pernyataan problem pada pola
pattern, setiap entitas yang terlibat ditentukan desain. Berdasarkan itu, dipilih 2 pola desain yang
perannya dalam desain perangkat lunak. dipakai pada desain aplikasi yaitu Abstract Factory
(3) Pemodelan struktural. Model struktural dan Mediator. Intisari pola desain Abstract Factory
merupakan hasil desain pertama yang dan Mediator adalah sebagai berikut [2]:
menggambarkan hubungan statis antar
entitas dalam bentuk diagram kelas.
INKOM, Vol. 6, No. 2, Article 196, Publication date: November 2012.
82 Lintang Dwi Febriani
Tabel I. Skenario use case tampilkan data cuaca terkini Tabel II. Daftar Class
Pra Data cuaca tersedia dalam format Nama Kelas Keterangan
syarat string yang dapat diakses melalui MainWindow MainWindow merepresentasi
protokol http aplikasi yang merupakan display
Kondisi Data cuaca tertampil pada komponen data cuaca
akhir antarmuka dan tersimpan pada media Parser Parser merepresentasikan entitas
penyimpanan yang dapat melakukan parsing
Aktor Semua pengguna (User) terhadap string data kiriman sensor-
Alir No Aksi sensor
utama SensorManager SensorMgr merepresentasikan
1 User membuka aplikasi cuaca entitas yang berurusan dengan
2 Aplikasi mengambil string data penampilan, dan penyimpanan
cuaca terkini melalui http data sensor terkini. Masing-
3 Parser memparsing string data masing jenis sensor memiliki
cuaca kelas SensorMgr sendiri
4 Parser memberikan data humidity, yaitu: HumiditySensorMgr,
windspeed, winddirection, rainfall, WindSensorMgr,
airpressure dan sunradiation ke RainfallSensorMgr,
masing-masing SensorManager. AirpressureSensorMgr dan
5 Masing-masing SensorManager SunradiationSensorMgr
mambangkitkan gambar SensorData SensorData merepresentasikan
tampilan data terkini melalui entitas yang menyimpan tipe
ImageGenerator. dan format data sensor. Sama
6 Display menampilkan gambar seperti kelas SensorMgr masing-
tampilan semua data cuaca melalui masing jenis sensor memiliki kelas
SensorManager SensorData.
Alir No Aksi SensorImgGen SensorImgGen merepresentasikan
exception entitas yang dapat membangkitkan
1 User membuka aplikasi cuaca image untuk penampilan data
2 Aplikasi gagal mengambil string sensor. Sama seperti kelas
data cuaca terkini melalui http SensorMgr masing-masing
3 Aplikasi mengambil gambar null jenis sensor memiliki kelas
dari SensorManager SensorImgGen.
4 Aplikasi menampilkan dialog
exception data tidak tersedia (2) Mediator.
(a) Problem: bagaimana membuat objek
(1) Abstract Factory. yang menenkapsulasi sehimpunan
(a) Problem: bagaimana membuat objek yang saling berinteraksi.
interface untuk sebuah keluarga objek (b) Participants.
yang saling berelasi, tanpa secara —Mediator: mendefinisikan interface
eksplisit menspesifikasi kelas. agar objek Colleague bisa saling
(b) Participants. berinteraksi.
—AbstractFactory: mendeklarasikan —ConcreteMediator:
interface untuk pembuatan objek. mengimplementasikan interface
—ConcreteFactory: Mediator dan mengkoordinasikan
mengimplementasikan komunikasi antara objek Colleague.
AbstractFactory untuk membuat —Colleague: berkomunikasi dengan
objek. Colleague lain melalui Mediator
—AbstractProduct: mendeklarasikan
interface untuk kelas/tipe objek. 4.3 Desain Struktural
—ConcretePoduct:mendefinisikan Hasil desain struktural aplikasi adalah kelas
objekyangdibuatoleh diagram seperti pada Gambar 1. Gambar 1
ConcreteFactory dan merupakan sebagian hasil desain struktural yang
mengimplementasikan berkaitan dengan pembuatan dan penggunaan
AbstractProduct. kelas SensorManager.Pola desain Abstract Factory
digunakan dalam desain struktural
INKOM, Vol. 6, No. 2, Article 196, Publication date: November 2012.
Penerapan Pola Desain untuk Perancangan Aplikasi Stasiun Cuaca Nirkabel 83
Sedangkan nilai LCOM untuk kelas-kelas Sedangkan nilai CBO kelas-kelas yang
yang diusulkan pada desain adalah 0. Hal ini diusulkan diberikan oleh Tabel III.
disebabkan oleh tidak ada Ii \ Ij = ; sehingga jP
j = 0. Hal ini menunjukkan kelas-kelas yang Tabel III. Nilai CBO antar Kelas yang
didesain memiliki nilai kohesi yang tinggi. diusulkan
MW WM SF SM P SD SG
MW - 2 0 0 0 0 0
5.2 Class Coupling WM 2 - 1 2 1 0 0
Salah satu metrik class coupling yang banyak SF 0 1 - 1 0 0 0
digunakan adalah Coupling between object SM 0 2 1 - 0 1 1
classes (CBO). CBO adalah jumlah coupling P 0 1 0 0 - 0 0
antara satu kelas C1 dengan kelas lain C2 yaitu SD 0 0 0 1 0 - 0
jumlah metode dan jumlah atribut pada C2 yang SG 0 0 0 1 0 0 -
digunakan/dipanggil oleh C1.
Nilai CBO pada kelas MainWindow pada [3] tidak Berdasarkan Tabel III, nilai CBO terbesar adalah
dapat ditentukan karena hanya mengandung 1 kelas. 2 yaitu pasangan kelas MainWindown (MW) dan
INKOM, Vol. 6, No. 2, Article 196, Publication date: November 2012.
Penerapan Pola Desain untuk Perancangan Aplikasi Stasiun Cuaca Nirkabel 85