Anda di halaman 1dari 4

Verification in Component Software

Rakhmad Azhari Fakultas Ilmu Komputer Universitas Indonesia, email:rakhmad@cs.ui.ac.id Abstrak


Penerapan teknik verifikasi dengan metode formal dalam proses pengembangan software (perangkat lunak) secara komersial saat ini masih menemui kesulitan yang cukup berat. Sementara itu, paradigma pemograman berbasiskan komponen hadir sebagai paradigma yang dapat mengubah proses pengembangan perangkat lunak komersial secara drastis dengan segala kelebihan dibandingkan dengan paradigma pemograman lainnya. Oleh karena itu, perlu disusun sebuah metodologi baru untuk menerapkan teknik verifikasi dengan metode formal pada pengembangan perangkat lunak komersial yang memanfaatkan paradigma pemograman berbasiskan komponen sehingga di masa yang akan datang, dapat dihasilkan perangkat lunak yang lebih baik.

Kata kunci: Verifikasi, Metode Formal, Component Software, Software Engineering, Component-based Development. 1. Pendahuluan
Metode formal (formal method) telah dikenal sejak lama dan telah digunakan sebagai salah satu alat bantu dalam ilmu komputer untuk menghasilkan produk yang lebih baik, baik produk berupa perangkat lunak (software) maupun perangkat keras (hardware). Penerapan teknik verifikasi dengan metode formal dalam produksi perangkat keras secara komersial telah berhasil dengan baik, sebagaimana yang telah dilakukan oleh AMD, Intel, IBM dan beberapa perusahaan besar lainnya. [5] menjelaskan beberapa contoh keberhasilan penerapan teknik verifikasi dengan metode formal dalam bidang perangkat keras. Permasalahan baru yang muncul kemudian adalah bagaimana cara untuk menerapkan teknik verifikasi dengan metode formal pada pengembangan perangkat lunak. Tidak seperti proses produksi perangkat keras, pada proses pengembangan perangkat lunak tidak terdapat sebuah standar yang diterima dan digunakan oleh semua pihak secara luas. Terdapat banyak paradigma pemograman yang digunakan, variasi bahasa pemograman yang dikuasai dan metodologi yang digunakan dalam pengembangan perangkat lunak tersebut. Banyaknya variasi dari faktor-faktor penentu dalam proses pengembangan perangkat lunak menjadikan para ahli dalam metode formal tidak dapat merumuskan sebuah mekanisme yang dapat menjadi standar dalam melakukan verifikasi terhadap perangkat lunak tersebut. Paper ini akan membahas mengenai upayaupaya yang telah dilakukan oleh para peneliti di bidang metode formal dalam menyusun sebuah mekanisme yang dapat memudahkan penerapan teknik verifikasi dengan metode formal dalam bidang pengembangan perangkat lunak secara komersial, masalah-masalah yang ditemukan dalam upaya penerapan teknik verifikasi dengan metode formal, hasil yang telah berhasil diperoleh, dan langkah-langkah yang dapat ditempuh di masa yang akan datang.

2. Software Engineering Komersial


Secara garis besar, proses pengembangan sebuah perangkat lunak secara komersial terdiri dari langkah-langkah yang seringkali disebut dengan System Development Life Cycle (SDLC) seperti berikut ini: Planning Tahapan ini meliputi proses perencanaan pembuatan perangkat lunak, perkiraan dana yang dibutuhkan, dan mendapatkan gambaran tentang proses bisnis klien. Analysis Dalam tahapan ini, tim pengembang akan melakukan analisis terhadap permasalahan

yang dihadapi oleh klien, analisis terhadap proses bisnis klien, dan kemudian mengajukan sebuah solusi yang dapat mengatasi persoalan tersebut. Design Pada tahapan ini, para pengembang sistem akan melakukan pemetaan dari hasil analisis menjadi sebuah rancangan sebagai landasan dalam proses implementasi. Implementation Dalam tahapan ini, para pengembang perangkat lunak akan membuat program dengan mengacu kepada hasil perancangan yang telah dibuat. Testing Tahapan ini berguna untuk memeriksa apakah perangkat lunak tersebut telah memenuhi semua persyaratan (requirement) yang telah ditentukan, dan apakah perangkat lunak tersebut telah bebas dari semua bugs (kesalahan) yang dapat mengganggu kinerja sistem. Diantara tahapan-tahapan diatas, tahapan testing merupakan tahapan yang seringkali memakan waktu pengembangan yang cukup lama, dikarenakan jumlah kemungkinan masukan yang dapat ditangani oleh perangkat lunak tersebut, sehingga memperbesar kemungkinan munculnya kesalahan program. Berbagai macam metodologi telah menyusun berbagai macam metode pengujian terhadap perangkat lunak yang dihasilkan, namun tidak pernah ada satu metode yang dapat menjamin bahwa perangkat lunak tersebut tidak memiliki kesalahan (bug) sama sekali. Oleh sebab itu, keberadaan metode formal dalam perangkat lunak dianggap sebagai solusi untuk menghindari terjadinya kesalahan dalam sebuah perangkat lunak.

1. Framework of modelling system, dimana bahasa yang digunakan akan dideskripsikan; 2. Bahasa spesifikasi untuk membantu pembuatan deskripsi terhadap properti sistem yang akan diverifikasi; 3. Metode verifikasi untuk melakukan pemeriksaan terhadap deskripsi sebuah sistem, apakah telah memenuhi spesifikasi yang telah ditentukan. Dalam [5] terdapat penjelasan mengenai pendekatan lain yang digunakan dalam mengklasifikasikan metode formal berdasarkan kebutuhan penguasaan terhadap teknik matematika dan theorem prover. Berdasarkan kedua kriteria tersebut, metode formal dapat diklasifikasikan menjadi 2 (dua) kelas: Light-weight Metode formal yang termasuk dalam kelas ini adalah metode formal yang tidak membutuhkan tingkat penguasaan yang tinggi mengenai pengetahuan matematis dan theorem prover. Salah satu contohnya adalah automated consistency checker, yang salah satu fiturnya dapat melakukan pemeriksaan terhadap sintaks dan kesalahan tipe dari sebuah spesifikasi. Heavy-duty Metode formal yang tergolong dalam kelas ini mengharuskan penggunanya memiliki pengetahuan matematis tentang metode formal yang kuat dan memiliki skill yang baik tentang theorem prover. Anggota dari klasifikasi ini adalah mechanical theorem prover, contohnya adalah PVS dan ACL2. Penjelasan mengenai beberapa paradigma yang dapat digunakan dalam membangun sebuah spesifikasi perangkat lunak dijelaskan dalam [10]. Dalam [6] dijelaskan mengenai kriteriakriteria yang menyusun klasifikasi dari metode verifikasi. Klasifikasi yang terjadi dalam metode formal menunjukkan banyaknya pendekatan yang dapat digunakan dalam melakukan sebuah teknik verifikasi. Setiap pengguna dapat memilih teknik verifikasi yang sesuai dengan kemampuan (skill) matematis dan paradigma pemograman yang dikuasai. Sebagai contoh, seorang yang tidak memiliki latar belakang yang kuat mengenai theorem prover dapat memilih teknik verifikasi yang bersifat otomatis, sehingga tidak perlu membuang waktu dalam mempelajari lebih lanjut mengenai theorem prover.

3. Metode formal dalam Ilmu Komputer


Metode formal merupakan bidang penelitian dalam bidang ilmu komputer yang sudah dilakukan sejak lama. Menurut [6], definisi dari metode formal adalah teknik-teknik yang dapat digunakan untuk melakukan verifikasi terhadap kebenaran (correctness) dari sebuah sistem komputer, yang dapat berbentuk perangkat keras, perangkat lunak, ataupun kombinasi keduanya. Metode formal pada awalnya diterapkan terhadap sistem yang memiliki sifat safety-critical, akan tetapi saat ini metode formal juga diterapkan terhadap commercial critical, ataupun mission critical. Metode formal secara umum dapat dijabarkan menjadi 3 (tiga) komponen penyusunnya, yaitu:

4. Component-based Technology
Paradigma component-software pertama kali diusulkan pada konferensi NATO di Garmisch pada tahun 1968 tentang ide untuk perangkat lunak yang dapat dibuat secara massal. Sejak saat itu sudah terdapat banyak definisi mengenai komponan dalam perangkat lunak, namun saat ini definisi dalam [9] adalah yang paling banyak digunakan: Komponen dalam perangkat lunak adalah sebuah unit yang dikomposisikan dengan interface dan ketergantungan antara komponen telah dispesifikasikan dalam contract secara eksplisit. Masing-masing komponen dapat dikembangkan secara independen dan komposis antar komponen dapat dilakukan oleh pihak lain. Saat ini, telah banyak alat (tools) yang dapat digunakan oleh pengembang sebuah perangkat lunak untuk menggunakan paradigma ini, antara lain yang sangat terkenal saat ini adalah teknologi .NET dari Microsoft, teknologi JavaBeans yang merupakan bagian dari J2EE(Java 2 Enterprise Edition) dari Sun Microsystems , CORBA yang merupakan keluaran dari OMG, dan XML sebagai format standar yang digunakan dalam paradigma ini. Paradigma ini dapat memudahkan penyusunan spesifikasi dari sebuah perangkat lunak, dikarenakan pembuatan spesifikasi dapat dilakukan untuk setiap komponen saja. Cara ini akan menurunkan kompleksitas dari proses verifikasi, sehingga dapat berjalan lebih cepat. [4] membahas mengenai pendekatanpendekatan yang telah dikembangkan dalam paradigma ini dan melakukan klasifikasi terhadap pendekatan-pendekatan tersebut dan membahas secara singkat mengenai teknikteknik verifikasi yang telah dikembangkan khusus untuk perangkat lunak yang dikembangkan dengan menggunakan paradigma component-software ini. Pada saat ini, perangkat lunak yang dikembangkan dengan menggunakan paradigma ini masih terbatas pada domain tertentu, seperti pada embedded system dan critical system.

perangkat lunak yang dikembangkan dengan menggunakan paradigma pemograman berbasiskan komponen (component based development).

5.1 Upaya-upaya Penelitian


Beberapa penelitian memberikan gambaran mengenai penggunaan alat bantu dalam melakukan verifikasi, ataupun menjelaskan secara rinci mengenai langkah-langkah yang harus diambil dalam proses penerapan teknik verifikasi dengan metode formal dengan menggunakan studi kasus. Dalam [4] dijelaskan bahwa teknik verifikasi akan lebih mudah diterapkan pada perangkat lunak yang dibangun berbasiskan komponen, bahkan cukup dengan menggunakan teknik yang paling konvensional. Proses verifikasi dapat dilakukan dengan menambahkan kode validasi / verifikasi dalam spesifikasi komponen tersebut, atau yang dikenal dengan contract. Contoh penerapan teknik verifikasi dalam aplikasi berbasiskan komponen dijelaskan dalam [8]. Dalam penelitian tersebut, diajukan sebuah tool bernama MAGIC yangdapat digunakan untuk melakukan verifikasi terhadap program yang dibuat dengan bahasa C. Proses verifikasi dilakukan dengan menggunakan finite automaton. Tool MAGIC bekerja berdasarkan paradigma abstract-verify-refine. Tool tersebut telah diujicobakan terhadap kode program dari kernel Linux, dan kode program dari OpenSSL. [3] juga memperkenalkan sebuah alat bantu verifikasi yang dinamakan ASML (Abstract State Machine Language). Penggunaan alat bantu ini lebih mudah dipahami oleh pengembang perangkat lunak, karena ASML menggunakan IDL (Interface Definition Language) yang sudah umum digunakan dalam mengembangkan sebuah aplikasi untuk sistem yang terdistribusi. Dalam [2] dijelaskan mengenai teknik embedding pemograman logika ke dalam sebuah theorem prover. Dalam [7] diperkenalkan sebuah framework (kerangka kerja) dengan berbasiskan pada logika UNITY. Kerangka kerja ini ditujukan untuk aplikasi terdistribusi yang dikembangkan secara komponen. Kerangka kerja ini diterapkan pada sebuah studi kasus sistem evoting.

5. Verifikasi dalam Component-based Software Engineering


Pembahasan dalam bagian ini akan ditekankan pada proses penerapan metode formal dalam

Kerangka kerja yang berbasiskan UNITY juga diajukan dalam [1]. Formalisasi dalam kerangka kerja ini termasuk dalam kategori light-weight dengan penerapan menggunakan PLP.

Daftar Pustaka
[1] Ade Azurat and I.S.W.B. Prasetya. Some Agreements on Component Software Verification. [2] Ade Azurat and I.S.W.B. Prasetya. A survey on embedding programming logics in a theorem prover. Technical Report UU-CS-2002-007, Institute of Information and Computing Sciences Untrecht University, P.O.Box 80.089 3508 TB Utrecht, The Netherlands, January 2002. [3] Mike Barnett and Wolfram Schulte. Spying on Component: A Runtime Verification Technique. Technical report, Microsoft Research, 2001. [4] Gerd Beneken, Ulrike Hammerschall, Manfred Broy, and et.al. Componentware State of the Art 2003. Technical report, Institut fr Informatik, Technische Universitt Mnchen, Boltzmannstr. 3, 85748 Garching, Germany, September 2003. [5] Constance Heitmeyer. On the Need of Practical Formal Methods. Technical report, Naval Research Laboratory, Washington, DC, 20375, USA. [6] Michael Huth and Mark Ryan. Logic in Computer Science : Modelling and Reasoning about Systems. Cambridge University Press, 2004. [7] A.Azurat, I.S.W.B. Prasetya, T.E.J. Vos and S.D. Swierstra. A UNITY-based Framework towards Component Based Systems. [8] Sagar Chaki, Edmund Clarke, Alex Groce, Somesh Jha and Helmut Veith. Modular Verification of Software Components in C. Technical report, NLR-ONR. [9] Clement Szyperski, Dominik Gruntz, and Stephan Murer. Component Software : Beyond Object-Oriented Programming. AddisonWesley, 2nd edition, 2003. [10] Axel van Lamsweerde. Formal Specification: a Roadmap. The Future of Software Engineering, ACM Press, 2000.

5.2 Hambatan dalam Penerapan Metode Formal


Hambatan-hambatan yang dihadapi dalam penerapan metode formal adalah: Ruang Lingkup Terbatas Penerapan metode formal pada perangkat lunak saat ini memiliki ruang lingkup terbatas yang telah didefinisikan sebelumnya. Biaya Sebagian besar penerapan teknik verifikasi membutuhkan biaya yang cukup besar dalam merekrut ahli-ahli dalam metode formal. Kekurangan Panduan Metode formal sulit diterapkan karena para pengembang tidak memiliki panduan yang baik untuk menerapkan metode formal tersebut. Kekurangan alat bantu feedback Permasalahan lain adalah teknik metode formal tidak memiliki alat bantu feedback yang baik.

Kesimpulan
Dari penjelasan pada bagian-bagian sebelummya, maka dapat diambil kesimpulan sebagai berikut: 1. Penerapan metode formal dalam proses pengembangan perangkat lunak dapat dikatakan masih jauh dari kata memuaskan. 2. Sebuah teknik verifikasi dengan menggunakan metode formal tidak mudah untuk dikuasai. 3. Penerapan metode formal dapat dilakukan dengan baik untuk sejumlah kasus dengan domain yang telah didefinisikan dan khusus. 4. Paradigma pemograman yang berbasiskan komponen dapat lebih memudahkan dalam penerapan metode formal. Sedangkan untuk saran pengembangan lebih lanjut yang dapat penulis berikan adalah: 1. Penggunaan notasi yang lebih humanreadable 2. Tools yang lebih mudah digunakan oleh orang awam. 3. Pengembangan sebuah metodologi standar untuk menerapkan teknik verifikasi terhadap perangkat lunak.

Anda mungkin juga menyukai