Heru Suhartanto, PhD http://www.cs.ui.edu/~heru “Grid computing merupakan suatu cara pemanfaatan sumber daya komputasi secara murah untuk mencapai kinerja komputasi yang tinggi tanpa harus mengetahui di mana lokasi sumber daya tersebut berada” Heru Suhartanto adalah dosen tetap Fakultas Ilmu Komputer UI sejak 1986 dan saat ini menjabat sebagai Wakil Dekan Non Akademik. Saat ini mata kuliah yang diajarkan adalah Topics in Parallel Computation pada Program Pasca Sarjana Magister Ilmu Komputer dan Calculus I pada program Sarjana. Ia merupakan Sarjana Matematika dari Universitas Indonesia dengan tahun kelulusan 1986. Pada tahun 1990, ia meraih gelar , MSc in Computer Science dari University of Toronto, Canada. Gelar PhD in Parallel Computing diperolehnya pada tahun 1998 dari University of Queensland, Australia. Dari beberapa pengalaman risetnya, pada tahun 2003 – 2005 ia menjadi Principal Researcher, Indonesian International Joint Research Program with Universiteit Utrecht, Netherland, funded by The Ministry of Research and Technology Research Program, Republic of Indonesia, on Developing Technology for Specifying and Generating Critical Data Processing Programs. MuPl2Java Translator Secara umum, menerjemahkan merupakan tindakan merubah suatu bentuk menjadi bentuk yang lain. Dalam istilah linguistik, menerjemahkan merupakan proses merubah satu bahasa ke bahasa yang lain, tanpa mengubah arti sebenarnya dari bahasa yang diterjemahkan. Alat untuk menerjemahkan sering disebut dengan translator (penerjemah). Penerjemah atau translator bisa berupa orang atau berupa alat otomatis yang dibuat oleh manusia. Menerjemahkan bukan merupakan tugas yang tidak penting, meskipun itu dikerjakan oleh alat otomatis atau orang. Untuk mendapatkan hasil yang akurat, ada aturan-aturan tentang bagaimana menerjemahkan harus diselesaikan. Aturan-aturan ini terkadang tergantung pada keduanya, bahasa yang akan diterjemahkan dan bahasa hasil dari terjemahan (kita akan menunjuk kedua bahasa tersebut sebagai sumber (source) dan target language, secara berturut-turut) Untuk menghasilkan terjemahan yang baik, ada beberapa aspek yang perlu diperhatikan. Pada dasarnya, aspek penting dalam menterjemahkan adalah grammar dan semantik dari sumber dan target. Grammar menentukan bagaimana suatu bahasa ditulis, sedangkan semantik merupakan makna dari bahasa itu. Dalam kasus programming language, grammar memiliki aturan yang ketat dalam membuat suatu bahasa. Makna tidak rancu diijinkan, dimana kalimat tertentu dari suatu bahasa hanya memiliki satu dan hanya satu makna tunggal. Jadi, kita memiliki sebuah semantik unik untuk sebuah kalimat unik. Kita harus benar-benar memahami semantik dan grammar masing-masing bahasa sebelum di terjemahkan. Langkah pertama dalam menterjemahkan adalah mengekstrak dan memahami makna dari apa yang akan di terjemahkan. Hal ini diselesaikan dengan menyesuaikan input pada grammar dan semantik dari source language. Kemudian kita mencoba untuk menyusun maknanya menjadi target language dengan menyesuaikannya dengan grammar dari target language dan bagaimana menunjukkannya sebagai semantik.
http://www.ui.edu
Ini harus dikerjakan secara seksama untuk mendapatkan hasil makna yang tepat antara source dan target language. uPL merupakan bahasa percobaan yang dikembangkan oleh tim Utrecht University (UU). uPL mendukung sequential imperative program, ditambahkan dengan propertisnya. Program ditulis dalam uPL yang bisa digunakan untuk menghasilkan kondisi verifikasi. Kita menggunakan tool yang disebut dengan xMECH untuk menghasilkan kondisi verifikasi mereka, yang didasarkan pada properties yang ditulis di program. Hal lainnya, saat ini Java merupakan bahasa pemrograman yang sangat terkenal. Didasarkan pada paradigm objek oriented, Java menawarkan kelebihan-kelebihan pada bahasa pemrograman yang ada. Modularity dan reusability merupakan salah satu kelebihan objek oriented. Program Java dapat dijalankan pada banyak Platform dengan menggunakan Java Virtual Machine sebagai interpreter. Ide utama pengembangan uPL ke Java translator adalah untuk mengotomatisasi pengubahan dari uPL program ke Java program. uPL program bermanfaat untuk fungsi verifikasi. Menggunakan xMECH, kita bisa memverifikasi program yang akan dibuat. Setelah program diverifikasi, kita bisa menerjemahkannya ke program Java yang bisa kita pertimbangkan sebagai bahasa pemrograman yang up to date saat ini. Model Kompilator Berbasis Pascal Kompilator adalah suatu program yang membaca program yang ditulis dengan bahasa tertentu (bahasa sumber) dan menerjemahkannya ke bahasa lain (bahasa tujuan). Contoh bahasa-bahasa sumber adalah bahasa-bahasa pemrograman tradisional seperti Fortran, Pascal, dan Cobol, sedangkan bahasa tujuan pada umumnya merupakan bahasa mesin atau bahasa assembly yang tergantung pada jenis mesinnya. Proses kompilasi dapat dibagi menjadi dua bagian, yaitu bagian analisis dan sintesis. Dalam proses analisis, program sumber diuraikan menjadi program dalam bahasa tingkat menengah. Proses sintesa akan mengubah representasi menengah tersebut menjadi program dalam bahasa tujuan. Tahap-tahap kompilasi yang dilakukan oleh kompilator IKI40800 dimulai dari analisis leksikal (scanner), analisis sintaks (parser), analisis semantik (context checker) kemudian lagsung dibentuk kode tujuan. Model kompilator bahasa IKI40800 ini merupakan suatu simulasi. Program sumber merupakan program dalam bahasa IKI40800 yang dibuat dalam bentuk file teks. Sedangkan program tujuan berada dalam suatu “memori” berbentuk array satu dimensi. Memori tersebut digunakan untuk menyimpan kode tujuan, alokasi variable, dan memori run time. Perangkat keras yang dibutuhkan adalah Personal Computer IBM/Compatible dengan kebutuhan memori sesuai dengan kebutuhan kompilator Turbo Pascal versi 5.5 yaitu minimal 448 KB RAM untuk menjalankan integrated environment. Sedangkan perangkat lunak yang digunakan adalah kompilator Turbo Pascal versi 5.5, dengan sistem operasi MS-DOS versi 3.0 ke atas. Model kompilator IKI40800 yang telah dijelaskan di atas adalah suatu model yang relatif sederhana dari suatu kompilator dan dapat dijadikan bahan perkuliahan pemahaman bagaimana suatu kompilator dibuat. Beberapa pengembangan yang dapat dilakukan terhadap model ini adalah sebagai berikut:
http://www.ui.edu
Pembentukan kode tujuan dikembangkan lagi sehingga menghasilkan kode dalam bahasa mesin atau Assembly, bukan lagi bahasa mesin semu. Pengembangan tata bahasa IKI40800 dan kompilatornya, misalnya penambahan kalimat case, for loop, array multi-dimesi, dan sebagainya. Penambahan prosedur untuk optimasi kode tujuan. Optimasi ini akan sangat berguna untuk mengurangi ukuran program tujuan, atau pun mempercepat eksekusi program tujuan. Penambahan tahap pembentukan kode menengah, supaya dapat dilakukan optimisasi kode yang lebih baik. Model Pemroses Bahasa Pemrograman Dengan tools berbasis Java Tujuan utama pengalihan basis bahasa pemrograman adalah penyediaan keluwesan bagi pemakai untuk tidak tergantung pada kompilator yang komersial dan lebih memudahkan pemakai untuk mengembangkan model kompilator tersebut bahasa Java yang gratis (public domain softwares). Dalam model terbaru ini seluruh kompunent dikembangkan dengan bahasa Java dan menghasilkan kompilator dalam bahasa Java. Perbedaan dengan modul Pascal adalah dalam hal penganalisisi leksikal dan sintak atau parsing. Pada model terdahulu, perancang suatu kompilator harus memahami teori dasar bahasa pemrograman (terutama leksikal dan sintak) dan mengimplementasikan teori tersebut langsung. Walaupun ini sangat bermanfaat dalam memahami bagaimana penerapan teori bahasa pemrograman, namun ia kurang efisien untuk pengembangan suatu pemroses bahasa dengan lebih efisien dan cepat. Pada model terdahulu, jika terjadi penambahan atau perubahan spesifikasi kompilator tersebut, perlu dilakukan perubahan yang banyak pada modul terkait yakni pada modul penganalisis leksikal dan sintak. Dengan pendekatan baru ini, hanya sedikit bagian yang perlu direvisi pada modul leksikal dan sintak, sehingga pemakai bisa berkonsentrasi untuk pengembangan model lebih lanjut. Dalam pengembangan ini, JLEX atau JavaLex dipakai sebagai pembentuk penganalisis leksikal dan Cup atau JavaCup dipakai sebagai pembentuk penganalisis sintak. Perubahan pada analisis leksikal cukup dilakukan perubahan pada spesifikasi bagaimana pola suatu token dibentuk, dan perubahan tata bahasa (grammar) dalam suatu parsing cukup hanya dilakukan perubahan susunan atau penambahan fitur-fitur tata bahasa. Perancang pemroses/kompilator tidak perlu terlalu dalam mengimplementasikan teori bahasa. Sedangkan modul-modul lainnya disesuaikan dengan bahasa pemrograman Java. Sama seperti model kompilator sebelumnya, model ini belum mengimplementasikan metoda atau prosedur atau function, array multi dimensi, teknik object oriented programming, kelas atau modul. Fitur-fitur ini dan fitur-fitur tambahan lainnya, dapat dengan sangat mudah ditambahkan dengan memperkaya penganalisis leksikal (scanner), penganalisis sintak (parser), dan modul atau kelas-kelas pendukung lainnya. Penerjemah Lingu ke Java Lingu adalah sebuah bahasa tingkat tinggi yang difokuskan pada transaksi basis data. Walaupun demikian, apabila dibandingkan dengan bahasa SQL, Lingu adalah bahasa yang lebih sederhana dan berbeda dari cara penulisan. Akan tetapi, Lingu menawarkan beberapa fitur-fitur yang dapat dipertimbangkan sebagai alternatif yang menarik, antara lain:
http://www.ui.edu
Lingu merupakan bahasa abstrak sehingga memungkinkan logika pada Lingu pada tingkatan yang lebih tinggi. Lingu merupakan bahasa yang kecil dan sederhana. Dengan kesederhanaan Lingu, bahasa ini lebih mudah digunakan. Lingu memiliki dukungan untuk uji coba dan validasi. Hal ini memberikan opsi untuk menjaga kesesuaian program yang dibuat dengan fungsi yang didefinisikan. Lingu dapat diverifikasi dengan menghasilkan kondisi-kondisi verifikasi yang dapat dibuktikan dengan menggunakan alat Bantu pembuktian teori (theorem prover). Fitur-fitur yang diberikan Lingu memungkinkan penggunaannya sebagai landasan spesifikasi untuk suatu sistem. Dengan adanya kemampuan untuk memverifikasi dan mengujicobakan Lingu, maka implementasi sistem, terutama yang sifatnya kritikal, mampu dijamin validitasnya. Walaupun demikian, Lingu merupakan bahasa yang tidak dapat dieksekusi. Oleh karena itu, dibutuhkan transformasi dari bahasa Lingu di tingkat abstrak menjadi bahasa yang sifatnya kongkrit, yaitu program komputer. Java diambil sebagai pilihan untuk bahasa target dari hasil transformasi Lingu. Ide pengembangan penerjemah Lingu ke Java adalah untuk mengotomatisasi transformasi bahasa Lingu menjadi bahasa Java. Lingu dapat digunakan untuk melakukan verifikasi terhadap program yang hendak dibuat. Dengan menggunakan penerjemah Lingu ke Java, spesifikasi yang sudah terbukti kebenarannya dapat dihasilkan program Java. Idealnya, program yang dihasilkan tidak terpaku pada bahasa Java saja. Fokus sistem hanya bertumpu pada spesifikasi yang dituliskan dalam Lingu dan kemudian dapat direalisasikan ke dalam berbagai macam bahasa pemrograman sebagai bentuk konkrit sesuai dengan kebutuhan. Penerjemah Lingu ke Java dikembangkan dengan menggunakan sistem UUAG sebagai alat bantu. UUAG merupakan sistem attribute grammar yang dihasilkan oleh Universitas Utrecht. Sistem tersebut membantu pengembangan aplikasi yang tergolong dalam kelompok kompilator yang mencangkup aplikasi penerjemah. Hasil akhir implementasi adalah aplikasi dalam bahasa pemrograman Haskell. Penerjemah Lingu ke Java dapat dimodifikasi untuk menghasilkan penerjemahpenerjemah lainnya yang berfungsi untuk menerjemahkan Lingu ke dalam bahasa-bahasa pemrograman lain. Hal ini dilakukan dengan hanya mendefinisikan aksi semantik penerjemahan untuk target bahasa yang baru dan kemudian digunakan sebagai pengganti definisi aksi semantik penerjemahan yang lama. LinguSQL LinguSQL adalah sebuah tool untuk melakukan proses verifikasi dan transformasi sebuah skrip Lingu. Apa itu Lingu? Lingu adalah sebuah bahasa pemrograman abstrak yang dikembangkan dalam RUTI kerjasama antara Universitas Indonesia dengan Universitas Utrecht Belanda. Lingu dikhususkan secara spesifik untuk pengembangan aplikasi yang sangat bergantung pada operasi database. Istilah bahasa abstrak yang digunakan pada konteks bahwa Lingu memiliki tingkat kompleksitas dan fungsionalitas yang lebih sederhana dibandingkan dengan sebuah bahasa pemrograman umum, misalnya C, Java, dll. Pada tahapan implementasinya, bahasa abstrak ini akan ditransformasikan menjadi sebuah bahasa konkrit yang akan digunakan pada proyek tersebut, misalkan C, Java, dsb. Hal ini
http://www.ui.edu
memberikan keleluasaan untuk melakukan porting dari sebuah platform ke platform lainnya. Konsep yang mendasari Lingu adalah sebuah visi akan pengembangan perangkat lunak yang efisien dan memiliki tingkat keterjaminan kualitas yang lebih tinggi dibandingkan dengan proses-proses pengembangan yang telah ada saat ini. Lingu merupakan sebuah bahasa abstrak yang unik yang menggabungkan konsep verifikasi program dan ujicoba (testing) secara terintegrasi. Penggabungan kedua buah metode pengujian untuk perangkat lunak ini akan lebih mempunyai keterjaminan kualitas perangkat lunak jika dibandingkan dengan proses yang hanya memakai salah satu saja. Proses verifikasi yang digunakan oleh Lingu adalah dengan menggunakan sebuah theorem prover. Skrip Lingu memiliki sebuah bagian khusus yang berisi spesifikasi dari program yang akan dijalankan. Spesifikasi-spesifikasi ini dibuat sesuai dengan bagaimana sistem yang dikembangkan akan digunakan. Spesifikasi yang dihasilkan pada skrip ini diberikan ke theorem prover dan kemudian akan diproses apakah valid atau tidak. Dalam kondisi spesifikasi yang diujikan tidak dapat dipecahkan oleh theorem prover, LinguSQL akan meminta bantuan expert assistance dalam memecahkan spesifikasi tersebut. Disamping proses pengujian whitebox yang diwakilkan oleh proses verifikasi, Lingu juga akan diuji secara black-box. Pengujian ini dilakukan dengan mendefinisikan skenarioskenario untuk program yang dikembangkan. Skenario yang dihasilkan akan diujikan pada sebuah database yang berisi set data asli. Data ini di-generate secara otomatis oleh automatic test generator yang terdapat dalam LinguSQL. Proses transformasi ke bahasa konkrit akan dilakukan setelah kedua proses verifikasi dan ujicoba dilakukan dengan sukses. Proses ini mengubah skrip Lingu, yang merupakan bahasa abstrak, menjadi sebuah bahasa konkrit. Pada versi ini LinguSQL hanya dapat melakukan transformasi ke dalam bahasa Java. Hasil dari transformasi ini kemudian diimplementasikan untuk live-run di lingkungan kerja organisasi tersebut. SILAKIP Laporan Akuntabilitas Kinerja Instansi Pemerintah (LAKIP) merupakan suatu laporan pertanggungjawaban yang dibuat oleh setiap instansi pemerintah di setiap tahunnya. Hal ini dilakukan untuk mewujudkan transparansi di pemerintahan. Dalam upaya menciptakan penyelenggaraan pemerintahan dan pembangunan yang efisien, efektif, partisipatif, transparan dan akuntabel, maka setiap unit kerja pemerintah diharuskan untuk menyusun Rencana Strategis serta dokumen pertanggungjawaban kinerja. Dokumen tersebut selain berfungsi untuk merencanakan landasan kerja selama periode anggaran, juga berperan sebagai tolak ukur untuk melakukan evaluasi atau penilaian kinerja. Dalam penyusunan dokumen-dokumen tersebut, perlu diperhatikan aspek transparansi dan akuntabilitas. Transparansi dan akuntabilitas inilah yang membedakan antara kegiatan-kegiatan yang terkendali dan yang tidak terkendali. Kegiatan yang terkendali merupakan cerminan bahwa kegiatan tersebut direncanakan dan dinilai hasilnya oleh pihak yang berwenang dengan adanya suatu alat pertanggungjawaban periodik. Maka dari itu, disinilah peran LAKIP sangat diperlukan. LAKIP telah diterapkan pada setiap instansi pemerintah di Indonesia. Untuk studi kasus kali ini, dilakukan analisis terhadap suatu instansi pendidikan tinggi di bawah Direktorat
http://www.ui.edu
Jenderal Pendidikan Tinggi. Instansi yang dipilih untuk studi kasus adalah Universitas Indonesia (UI) yang juga merupakan klien dari pengembangan SILAKIP dan tempat dimana penulis menjadi sivitas akademika. SILAKIP (Sistem Informasi Kinerja Instansi Pemerintah) adalah sistem yang menangani pengelolaan laporan akuntabilitas dari tiap sub-unit hingga tingkat unit dengan melakukan otomasi proses bisnis yang berlangsung selama ini dan membuat dokumentasi dari data-data yang ada. Dalam lingkup studi kasus yang dilakukan di lingkungan UI ini, sub-unit merupakan fakultas atau direktorat sedangkan unit merupakan tingkat universitas. Dengan sistem ini, proses bisnis pembuatan LAKIP akan lebih terarah sesuai pedoman yang berlaku. Untuk ke depannya, diharapkan sistem ini dapat dijadikan acuan dan dapat diadopsi oleh instansi pemerintah lain. SILAKIP juga dapat memberikan kemudahan dalam integrasi laporan dan pengukuran kinerja masing-masing instansi pemerintah. Secara garis besar, fungsi-fungsi yang dapat diakomodir oleh sistem ini adalah pengelolaan komponen-komponen LAKIP Unit (Renstra Unit dan Renja SubUnit) serta pengelolaan komponen-komponen LAKIP Sub-Unit (RS Sub-Unit, RKT SubUnit, PKK Sub-Unit, dan PSS Sub-Unit).
http://www.ui.edu