Usulan Identifikasi Error PadaDisain Arsitektur Piranti Lunak Massal

  

USULAN IDENTIFIKASI ERROR PADA DISAIN ARSITEKTUR PIRANTI

LUNAK MASSAL

  

I Made Murwantara

  Jurusan Teknik Informatika Fakultas Ilmu Komputer Universitas Pelita Harapan

  

E-mail

Abstrak

  

Disain arsitektur piranti lunak massal (Software Product Line Architecture) melibatkan banyak

artifact produk piranti lunak yang telah berhasil diimplementasikan. Proses disain pada arsitektur

piranti lunak massal adalah melakukan konfigurasi dari seluruh artifact yang ada dengan memilih

elemen yang berbeda (variability) dan menggunakan ulang (reuse) elemen yang sama, sehingga

diperoleh produk baru. Permasalahan utama pada proses disain ini melibatkan banyak komponen

piranti lunak, dan juga terjadi ketergantungan antar komponen piranti lunak. Proses pemilihan

komponen varian yang akan dilibatkan dalam suatu konfigurasi piranti lunak massal memerlukan

abstraksi dan property yang lengkap. Kurangnya informasi ini menyebabkan terjadi kesalahan disain.

  

Tulisan ini mengusulkan pendekatan dengan menggunakan hypergraph sebagai visualisasi dependensi

antar komponen, diverifikasi dengan menggunakan SAT/SMT sehingga dapat diketahui bagian dari

arsitektur yang tidak konsisten dan kurang sesuai, kemudian diakhiri dengan transformasi ke dalam

Component Model . Pendekatan ini diujicoba pada suatu produk piranti lunak massal untuk

mengetahui seberapa jauh kemungkinan penggunaan pendekatan yang diusulkan.

  Kata kunci: Arsitektur Piranti Lunak Massal, SAT/SMT, Disain, Penggunaan Ulang Pendahuluan

  Pengembangan Piranti lunak massal (Software Product Line Engineering (SPLE)) dibangun dengan sumber daya produk piranti lunak yang telah berhasil diterapkan atau diimplementasikan, dengan melakukan penggunaan ulang (reuse) seluruh elemen produk termasuk dokumentasi requirement, dimana produk yang dilibatkan pada pengembangan ini harus berada dalam domain yang sama (misal: Pendidikan, Pemasaran); Northrop 2002. SPLE dibagi menjadi dua bagian besar yaitu: Pertama, Domain Engineering yang merupakan abstraksi dari seluruh

  

artifact piranti lunak, dan kedua Application Engineering yang merupakan turunan pada bagian

  pertama dan lebih mengutamakan pendekatan arsitektur sebagai pijakan utama. Dimana, komponen piranti lunak dalam arsitektur merupakan bagian terkecil atau terendah (granularity) dalam pengembangan SPLE sebelum dikembangkan menjadi produk piranti lunak spesifik. SPLE telah dikembangkan dalam dua dasawarsa terakhir dalam bidang telekomunikasi; Kang 1998, Otomotif; Tischer 2007, dan eLearning; Murwantara 2011

  Arsitektur piranti lunak merupakan peta abstrak dari suatu sistem, arsitektur piranti lunak juga menggambarkan komponen secara garis besar, dimana disain arsitektur dibuat untuk memenuhi kebutuhan dari sistem. Arsitektur piranti lunak merupakan turunan dari Feature Model yang berupaya menggambarkan fitur didalam produk piranti lunak. Fitur didalam piranti lunak massal, secara umum dibagi menjadi dua tipe, yaitu fitur umum (Common) dan variabel. Fitur umum akan selalu diikutkan dalam seluruh konfigurasi pengembangan SPLE karena fitur ini menjelaskan bentuk umum dari fungsionalitas yang secara mendasar harus hadir dalam disain piranti lunak massal. Fitur variabel merepresentasikan bentuk atau fungsionalitas yang dapat menghadirkan produk piranti lunak yang berbeda dari fitur yang dimiliki oleh produk piranti lunak yang dilibatkan dalam pengembangan SPLE. Untuk mengembangkan produk piranti lunak yang spesifik, maka dilakukan seleksi terhadap fitur yang akan dilibatkan dalam suatu konfigurasi yang berupa fitur yang berasal dari Feature Model. Fitur variabel akan dipilih berdasarkan persyaratan dan requirement spesifik. Proses konfigurasi ini akan membawa disainer arsitektur piranti lunak pada pencapaian seluruh aset produk piranti lunak yang dilibatkan untuk dilakukan penggunaan ulang (reuse). Untuk lebih jelasnya mengenai Feature Model dapat dilihat pada; Czarnecki 1999.

  Arsitektur piranti lunak untuk sebuah produk secara konvensional dihasilkan dari penurunan interaksi antar layanan atau fungsionalitas. Dimana interaksi atau layanan ini menyatakan kemampuan dari komponen piranti lunak.

  Serupa dengan arsitektur untuk menghasilkan sebuah produk piranti lunak, arsitektur pada suatu pengembangan piranti lunak massal menyediakan gambaran terendah (siap diimplementasikan) berdasarkan struktur produk yang dimasukkan dalam suatu pengembangan SPLE. Struktur ini menjadi landasan awal untuk melakukan disain arsitektur untuk produk yang menjadi anggota SPLE (yang dilibatkan dalam SPLE), dimana arsitektur akan dikonfigurasi dan menghasilkan gambaran awal dari struktur spesifik suatu piranti lunak massal. Salah satu hal tantangan terbesar dari disain arsitektur piranti lunak massal ini adalah mengakomodasi variabel pada komponen piranti lunak dan mengetahui sejak dini (pada saat konfigurasi) kesalahan disain yang mungkin terjadi. Dimana, komponen dengan variabilitas menyatakan kemungkinan terjadinya hubungan pada satu atau lebih komponen dan representasi komponen yang berbeda (misal: satu komponen memiliki variabilitas internal) yang harus dapat diakses fungsionalitasnya oleh elemen dalam arsitektur piranti lunak.

  Tulisan ini mengajukan suatu proposal untuk mendeteksi kesalahan (error) pada saat dilakukan disain arsitektur piranti lunak massal dengan melakukan pengelompokkan ber-relasi mempergunakan pendekatan hypergraph, kemudian melakukan analisa dependensi antar komponen yang memiliki variabilitas didalam arsitektur, dan mengajukan metode verifikasi terhadap graph yang terbentuk. Dan akhirnya di transformasikan ke dalam bentuk Component Model yang siap dijadikan produk piranti lunak siap pakai.

  Pada bagian setelah ini akan dipaparkan hasil survei literatur, kemudian dilanjutkan dengan metodologi yang dilakukan dalam penelitian, dan dilaknjutkan dengan pembahasan studi kasus pada eLearning Product Line Architecture yang telah diselesaikan. Tulisan ini diakhiri dengan kesimpulan dan kelanjutan dari penelitian yang telah dilakukan.

  Studi Pustaka

  Pendekatan Component-Based; Czarnecki 2005, Pahl 2006; telah banyak dipergunakan dan diakui sebagai pendekatan yang memadai untuk pengembangan arsitektur piranti lunak massal. Pendekatan Component-Based menentukan terjadinya interaksi dari fungsionalitas yang mempengaruhi sifat (behaviour) dari komponen piranti lunak. Pengelompokkan fungsionalitas komponen menghasilkan non-fungsionalitas. Kelompok non-fungsionalitas akan mempengaruhi struktur arsitektur piranti lunak massal pada saat konfigurasi untuk menghasilkan arsitektur spesifik. Untuk mengatasi hal ini beberapa penelitian telah mempergunakan pendekatan matematis dan multi skala, seperti SAT;White 2008, AHP/ANP; Murwantara 2012.

  Penggunaan Hypergraph ;Henning 2012, memberikan inisialisasi proses pengelompokkan komponen dan fungsionalitas didalamnya untuk dibentuk menjadi non-fungsional faktor. Hypergraph merupakan sebuah tuple (V,e), dimana V adalah kumpulan node yang memiliki subset

  

Content dan Id. Sementara e berfungsi sebagai edge yang menghubungkan setiap node V. Setiap

vertices memiliki kemampuan untuk memiliki lebih dari satu relasi. Dimana, setiap relasi akan

  memiliki penghubung yang disebut edge, dalam hypergraph, edge merupakan identifikasi komunikasi yang terjadi pada graph. Pada tulisan ini edge menjadi indikasi adanya relasi antar komponen, dan juga keberadaan dependensi antar komponen. Sehingga, jika sebuah komponen memiliki relasi dalam suatu edge maka pada saat dilakukan konfigurasi perlu melibatkan komponen yang ada didalam relasinya. Hal yang perlu ditekankan disini adalah setiap relasi memberikan kesempatan kepada disainer untuk melakukan seleksi terhadap komponen yang sesuai, dan edge memberikan kemudahan dalam memprediksi tingkat dependensi antar komponen yang terjadi. SAT adalah boolean satisfiability dan dibentuk mempergunakan Boolean Propositional

  

Logic. SAT memeriksa jika didalam suatu relasi logika kompleks dapat dinyatakan True. Proses

pemeriksaan dilakukan dengan memasukkan elemen logika ke dalam rumusan pengujian.

  Arsitektur komponen piranti lunak massal memiliki variant yang berbentuk variabilitas pada komponen. Hans 2012; mempergunakan Orthogonal VariabilityModel (OVM) untuk melakukan pemetaan dan identifikasi dependensi komponen piranti lunak. Dalam hal ini, setiap dependensi pada arsitektur piranti lunak massal akan mempengaruhi komponen yang diseleksi dalam suatu konfigurasi. Utamanya, setiap komponen yang merupakan variant atau memiliki variabilitas baik internal maupun eksternal, akan secara langsung mempengaruhi struktur dari arsitektur yang dikonfigurasi. Hans 2012; mempergunakan OVM untuk menjaga kestabilan arsitektur pada saat proses konfigurasi dengan melakukan referensi terhadap arsitektur core.

  Metodologi Penelitian

  Metodologi dalam penelitian ini melakukan modifikasi dan mengadopsi pendekatan komponen, melakukan modifikasi penggunaan Hypergraph, dan pembuktian atau verifikasi mempergunakan SAT/SMT. Langkah-langkah pendekatan yang digunakan dapat dilihat pada Gambar1.

  Gambar 1. Pendekatan Identifikasi Kesalahan Disain Arsitektur Piranti Lunak Massal Langkah-langkah pendekatan untuk melakukan identifikasi kesalahan disain pada arsitektur piranti lunak massal, seperti terlihat pada gambar 1, adalah sebagai berikut:

  (a) Langkah pendeteksian dimulai dengan membentuk komponen model yang telah ada dalam arsitektur piranti lunak massal. (b) Kemudian dibentuk Hypergraph yang memberikan visualisasi hubungan antar komponen. Dalam bagian ini, komponen dengan variabilitas eksternal dan internal pada awalnya akan dibentuk menjadi satu Hypergraph, kemudian yang komponen yang memiliki variabilitas internal membangun Sub-Hypergraph. Setelah itu, seluruh graph akan menjadi satu dalam detail Hypergraph.

  (c) Hypergraph ditransformasi menjadi Conjunction Normal Form (CNF), hal ini untuk memudahkan kompatibilitas dengan proses verifikasi pada SAT/SMT. (d) Bagian ini melakukan verifikasi konsistensi dan dependensi pada arsitektur piranti lunak massal. Komponen yang tidak sesuai dengan syarat konfigurasi akan diberikan informasi permasalahan yang terjadi, sehingga disainer piranti lunak dapat melakukan seleksi ulang atau mengubah dan menghapus komponen yang tidak sesuai dengan tepat. Hal ini memberikan efesiensi dalam melihat kemungkinan terjadinya konflik fungsionalitas pada komponen. Serta memudahkan disainer untuk menentukan bentuk faktor non-fungsionalitas yang akan digunakan sesuai dengan

  

user requirement . Metode SAT/MAX pada langkah ini merupakan pendekatan untuk mencari

efesiensi hubungan antar komponen, yang diikuti dengan langkah melokalisir permasalahan disain.

  Sehingga, kesalahan disain dapat terlihat pada scope kecil atau besar atau terbatas. Lokalisir kesalahan ini memberikan kestabilan pada arsitektur karena mengurangi dampak perubahan terhadap keseluruhan arsitektur piranti lunak massal.

  Hasil dan Pembahasan

  Kami melakukan pengujian pendekatan yang diusulkan ini mempergunakan eLearning Product Line Architecture (eLPLA) ;Murwantara 2012, dengan Component Model seperti terlihat pada Gambar 2.

  Gambar 2. eLearning Product Line Architecture eLPLA merupakan pengembangan arsitektur piranti lunak massal yang berbasis pada beberapa produk dalam domain eLearning Open Source, antara lain: MOODLE, ATUTOR dan CLAROLINE. Pada arsitektur piranti lunak massal ini terdapat komponen dengan variabilitas eksternal (VE) dan variabilitas internal (VI). Berdasarkan informasi tersebut, dibangun Hypergraph berdasarkan pair-matrix dependensi, yang terlihat pada Tabel 1. Kemudian dibentuk Hypergraph yang melibatkan VE dan VI, terlihat pada Gambar 3(a), dimana selanjutnya VI dibentuk menjadi Sub-Hypergraph untuk membuat eksplisit variabilitas Internal, terlihat pada Gambar 3(b). dan menjadi detail hypergraph pada Gambar 4.

  (1) maka CNF yang terbentuk dimasukkan dalam constraint rumusan 1, jika memenuhi aturan dikatakan tidak ada konflik dalam disain. Akan tetapi jika terdapat bagian yang konflik, maka dilakukan partisi dengan memisahkan bagian yang tidak memenuhi aturan. Kemudian pendekatan SAT MAX melakukan lokalisir dengan metode partisi sliding windows; Jose 2011, metode ini memisahkan elemen berdasarkan kelompok edge, sehingga setiap kelompok (berdasarkan vertices

  (a) (b)

  1

  1

  7

  1

  1

  1

  Gambar 3. Hypergraph eLPLA (a) dan Sub-Hypergraph

  1

  VI 1 (b).

  Hypergraph yang dihasilkan kemudian digabungkan menjadi Detail Hypergraph, dalam bentuk Grammar menjadi seperti dibawah ini:

  Detail Hypergraph a={VE1,VI1 3 } b={VE1,VE2,VI4} c={VE2,VI3} d={VI1 2 ,VI3} e={VI1 1 ,VI2} f={VE3,VI5} g={VE2,VE3,VE4}

  Transformasi CNF CNF

  a:{VE1 ∨ VI1 3 } b:{VE1 ∨ VE2 ∨ VI4} c:{VE2 ∨ VI3} d:{VI1 2 ∨ VI3} e:{VI1 1 ∨ VI2} f:{VE3 ∨ VI5} g:{VE2 ∨ VE3 ∨ VE4}

  Edge yang terbentuk diperiksa mempergunakan aturan dibawah ini: H edge

  6

  1

  Tabel 1. Pair-Matrix Komponen

  1

  VE1 VE2 VE3 VE4 VI1 VI2 VI3 VI4 VI5

  1

  1

  1

  2

  1

  1

  5

  3

  1

  1

  4

  1

  1

  • SAT iff edge < 2 n
Hypergraph) elemen dapat dikonfirmasikan tanpa harus melakukan verifikasi sekaligus seluruh elemen arsitektur.

  Kesimpulan

  Telah diusulkan pendekatan untuk identifikasi kesalahan disain arsitektur piranti lunak massal menggunakan Hypergraph dan SAT/SMT. Pada hasil penelitian ini identifikasi kesalahan disain dapat dilakukan pada saat disain dikerjakan, sehingga dapat mengurangi kemungkinan kesalahan pada saat implementasi. Lebih jauh lagi, komponen dengan variabilitas eskternal dan internal dapat lebih eksplisit pada proses konfigurasi. Sehingga stabilitas arsitektur dapat dipertahankan saat konfigurasi dan rekonfigurasi dilakukan.

  Penelitian selanjutnya adalah memperjelas kemampuan SAT/SMT untuk mendeteksi relasi antar komponen didalam disain arsitektur piranti lunak massal.

  Ucapan Terima kasih

  Penelitian ini dibiayai oleh Lembaga Penelitian dan Pengabdian Masyarakat (LPPM) Universitas Pelita Harapan, No. Proyek P-002-FIK/IX/2011.

  Daftar pustaka

  Czarnecki, K, 1999, Generative Programming, Phd Dissertation, Ilmenau Technical University, German. Czarnecki, K., Antkiewicz, M., Kim, C. H. P., Lau, S., & Pietroszek, K. , 2005, Model-driven software product lines, Companion to the 20th annual ACM SIGPLAN conference on Object- oriented programming, systems, languages, and applications - OOPSLA ’05, 126. New York, New York, USA: ACM Press. Doi:10.1145/1094855.1094896 Hans, M., and Jørgensen, B. N., 2012, Cardinality-dependent Variability in Orthogonal Variability Models, Proceeding of Variability Modelling and System, pp.165-172, Leipzig, German Jose, M., 2011, Cause Clue Clauses : Error Localization using Maximum Satisfiability , Proceeding of PLDI 2011,pp 437-446, ACM, California, USA. Kang, K. C., Kim, S., Lee, J., Kim, K., & Shin, E. ,1998, FORM : A feature-oriented reuse method with domain-specific reference architectures, Annuals of Software Engineering, 5, 143-168. Murwantara, I. M. , 2011, Initiating Layers Architecture Design for Software Product Line. Proceeding URKE 2011, 48-51, IEEE. Murwantara, I. M., Yugopuspito, P., Saputra, S., 2012, Hybrid AHP for Decision Modeling of Non-Functional Factor of a Software Product Line, sedang dalam proses review pada conference ICASCE 2012, IEEE, Jakarta. Pahl, C. ,2006, An ontology for software component matching. International Journal on Software Tools for Technology Transfer, 9(2), 169-178. doi:10.1007/s10009-006-0015-9 Tischer, C., Muller, A., Ketterer, M., & Geyer, L. ,2007, Why does it take that long? Establishing Product Lines in the Automotive Domain, 11th International Software Product Line Conference (SPLC 2007), 269-274. IEEE, doi:10.1109/SPLINE.2007.20 White, J., Schmidt, D. C., Benavides, D., Trinidad, P., & Ruiz Cortés, a. , 2008, Automated Diagnosis of Product-Line Configuration Errors in Feature Models, 2008 12th International Software Product Line Conference, 225-234. IEEE, doi:10.1109/SPLC.2008.16