Studi Kasus LinguSQL : Perdagangan Saham Api Perdana, S.Kom E-seminar Nasional Software Quality Assurance using Formal Method Fakultas Ilmu Komputer UI 9 January 2008 Daftar Presentasi • Tujuan Presentasi • Fakta Singkat • Kasus Kesalahan Perangkat Lunak Transaksi Saham • Bisnis Proses Transaksi Saham • Aturan dan Batasan Transaksi Saham • Bisnis Proses pada LinguSQL • Kasus Verifikasi pada LinguSQL • Algoritma Verifikasi pada LinguSQL • Kesimpulan Tujuan Presentasi • Tujuan Utama : – Pengenalan Sistem Transaksi Saham sebagai Studi Kasus LinguSQL • Cakupan : – Pengenalan singkat mengenai pasar saham – Pengenalan proses bisnis transaksi saham BEI – Pengenalan kasus kesalahan pemrograman pada aplikasi transaksi saham – Simplifikasi studi kasus yang akan digunakan LinguSQL – Identifikasi kasus verifikasi pemrograman dengan LinguSQL – Algoritma kasus verifikasi dengan LinguSQL Pengenalan Pasar Saham dan Prosedur Transaksi Saham Fakta Singkat • Pasar modal adalah pasar dimana instrumen-instrumen finansial jangka panjang seperti saham, ekuitas, mutual funds dan instrumen derivatif diperdagangkan.* • Pasar modal di Indonesia sudah ada sejak zaman pemerintah Hindia Belanda tahun 1912, namun perdagangan elektronik baru dilakukan pada tahun 1995 melalui Bursa Efek Jakarta. • Bursa Efek Jakarta dan Bursa Efek Surabaya bergabung menjadi Bursa Efek Indonesia pada 1 Desember 2008. • Bursa Efek Indonesia diproyeksikan melakukan transaksi harian sebesar 3,35 Triliun Rupiah pada tahun 2008.** * dikutip dari situs bursa efek indonesia, http://www.bei.co.id/MainMenu/Education/MengenalPasarModal/tabid/137/lang/en-US/language/en-US/Default.aspx ** dikutip dari situs republika http://www.republika.co.id/koran_detail.asp?id=315840&kat_id=389 Studi Kasus • Pasar saham sangat cocok sebagai studi kasus LinguSQL, karena : – Bersifat mission-critical – Melibatkan kepentingan finansial dalam jumlah yang besar – Sistem elektronik yang melibatkan pencatatan transaksi ke dalam basis data – Telah terdapat kasus-kasus kesalahan pada programming yang menyebabkan kerugian finansial pada transaksi pasar saham Contoh Kesalahan Aplikasi Pasar Saham • 1 Maret 07 : Kesalahan pada aplikasi Dow Jones menyebabkan kesalahan penghitungan data indeks saham selama 70 menit. Kerugian berkisar jutaan dollar.* • 7 November 07 : Kesalahan penampilan data harga saham oleh Infolect di London Stock Exchange menyebabkan closing auction diperpanjang selama 3 jam. ** • 8 Desember 05 : Kelemahan verifikasi aplikasi transaksi saham menyebabkan pegawai sekuritas memasukkan harga penjualan perdana saham J-Com sebesar 610.000 saham dengan harga 1 Yen. Harga penjualan yang benar adalah 610.000 yen untuk 1 saham, yang menyebabkan kerugian sebesar 347 juta dollar. **** • 8 November 83 : Akumulasi kesalahan pembulatan indeks saham di Vancouver Stock Exchange menyebabkan penurunan indeks saham sebesar +- 500 poin. *** * http://business.timesonline.co.uk/tol/business/industry_sectors/media/article1454771.ece ** http://www.ft.com/cms/s/0/73eb3454-8d52-11dc-a398-0000779fd2ac.html *** www5.in.tum.de/~huckle/Vancouv.pdf **** http://search.japantimes.co.jp/cgi-bin/nb20051209a2.html Proses Bisnis Transaksi Saham Proses Perdagangan 1. 2. 3. 4. 5. Seorang investor yang ingin melakukan transaksi jual-beli saham harus melalui broker/sekuritas yang terdaftar di bursa saham. Perintah pembelian/penjualan yang diberikan kepada broker akan diteruskan ke lantai bursa. Di lantai bursa, trader akan memasukkan penawaran pembelian/penjualan tersebut ke dalam Jakarta Automatic Trading System (JATS). Apabila terdapat penawaran pembelian/penjualan yang cocok (matched) dengan perintah investor, sistem JATS akan memfinalisasikan transaksi tersebut. Penyelesaian transaksi (kliring & pembayaran) akan diselesaikan 3 hari setelah kejadian transaksi sebenarnya. Diagram Transaksi Saham Diambil dari : http://www.bei.co.id/MainMenu/Trading/StockTradingMechanism/tabid/81/lang/en-US/language/en-US/Default.aspx Batasan dan Aturan Transaksi Saham • Aktifitas transaksi saham memiliki aturan dan batasan yang ditentukan oleh : – Regulasi perdagangan saham – Praktik ekonomi lokal, mis. periode transaksi, proses penyelesaian, hari libur, dll. – Keterbatasan sistem, mis. jumlah transaksi • Aturan dan batasan tersebut dapat digunakan sebagai titik verifikasi LinguSQL. Batasan dan Aturan Transaksi Saham Contoh Aturan dan Batasan : • • • • • • Transaksi saham hanya dapat dilakukan pada hari kerja, Senin-Kamis (9.30-12.00, 13.30-16.00) dan Jumat (9.30-11.30, 14.00-16.00). Tiap broker/sekuritas memiliki batas jumlah transaksi (trading limit) sesuai jumlah jaminan untuk aktifitas transaksi selama satu hari. Harga penawaran penjualan dan pembelian yang diajukan oleh broker tidak boleh lebih/kurang sebesar X% dari harga normal (X adalah variabel yang ditentukan oleh regulator sesuai dengan nilai saham, antara 20-50%) Sistem melakukan keputusan pemetaan penjualan dan pembelian berdasarkan prioritas harga dan waktu.Harga yang lebih tinggi akan lebih diprioritaskan daripada harga rendah, apabila sama akan diproses berdasarkan waktu pencatatan. Sistem harus melakukan pemeriksaan data transaksi untuk mencegah data-data invalid masuk ke dalam database, misal kesalahan entri data, data yang tidak sesuai skema baku, kesalahan sistem broker, dll. Sistem harus memberi peringatan apabila terjadi fluktuasi dalam harga saham atau volume perdagangan dalam satu hari. Anomali tersebut dapat menyebabkan sebuah jenis saham diberi status suspend, dan tidak diperdagangkan selama masa penyelidikan. Studi Kasus LinguSQL : Simulasi Transaksi Saham Simulasi Transaksi Saham : Studi Kasus LinguSQL • LinguSQL akan menggunakan sebuah studi kasus sederhana dari sistem transaksi saham yang berdasarkan prosedur nyata. • Sistem ini mensimulasikan aktifitas transaksi saham dari pembelian, penjualan, dan finalisasi transaksi yang terjadi pada pasar saham Indonesia. • Hasil akhir yang diharapkan adalah komponen aplikasi kritis yang : – Terverifikasikan secara formal (whitebox) – Tervalidasikan dengan skenario (blackbox) Diagram Simulasi Transaksi Saham Alur Simulasi Transaksi Saham 1. 2. 3. 4. Seorang trader memasukkan penawaran pembelian saham ke sistem dan kemudian akan tercatat di database permintaan beli saham. Trader lainnya memasukkan penawaran penjualan saham ke sistem dan tercatat di database penawaran jual saham. Sebuah mekanisme atau algoritma penyelesaian transaksi akan berusaha memasangkan/memetakan harga yang cocok antara permintaan jual dan beli. Pada saat pengembangan mekanisme atau algoritma tersebut, sebuah proses verifikasi akan dijalankan untuk memastikan bahwa mekanisme tersebut telah mematuhi secara benar seluruh batasan dan aturan yang ada. • 5. Kasus verifikasi ditentukan oleh pengembang dengan mengacu pada aturan dan batasan pada praktek perdagangan saham. Jika proses pemetaan dan proses verifikasi telah berhasil dilakukan, sistem akan menghasilkan sebuah data transaksi final yangakan tercatat di dalam database transaksi saham. Komponen Transaksi Saham : Studi Kasus LinguSQL Aplikasi transaksi saham yang disimulasikan melibatkan 3 (tiga) komponen inti, yaitu : 1. Database komponen ini berisi data-data yang hendak digunakan dalam proses penyelesaian transaksi. – Database Permintaan Beli Saham Id Timestamp Broker_Id Stock_Id Amount Buy_Price Amount Sell_Price – Database Penawaran Jual Saham Id Timestamp Broker_Id Stock_Id Komponen Transaksi Saham : Studi Kasus LinguSQL – Database Saham Id Update_Timestamp Current_Price Volume Description – Database Transaksi Saham Id Timestamp Broker_Buy_Id Broker_Sell_Id Stock_Id Amount 2. Mekanisme Penyelesaian Transaksi Komponen ini berfungsi untuk melakukan pemetaan antara permintaan beli saham dan penawaran jual saham yang cocok secara harga. Price Komponen Transaksi Saham : Studi Kasus LinguSQL 3. Mekanisme Verifikasi & Validasi – Komponen ini berfungsi untuk melakukan verifikasi dan validasi pada program mekanisme penyelesaian transaksi. – Verifikasi dan validasi dilakukan untuk titik-titik berdasarkan batasan dan aturan dari proses bisnis seperti telah dijelaskan sebelumnya. – Verifikasi dilakukan dengan pembuktian correctness sebuah kode program secara formal. – Validasi dilakukan dengan menjalankan beberapa skenario dan mengecek apakah hasil dari operasi tersebut sesuai dengan yang diharapkan. Kasus Verifikasi Simulasi Transaksi Saham Kasus Verifikasi Simulasi Transaksi Saham • Batasan waktu – Verifikasi pemeriksaan waktu dan periode transaksi yang valid. • Batasan trading limit – Verifikasi trading limit broker untuk tiap transaksi yang dilakukan • Batasan jangkauan harga penawaran – Verifikasi bahwa harga penawaran dan penjualan tidak boleh melebihi/kurang dari batas yang telah ditentukan • Prioritas pemetaan – Verifikasi bahwa sistem melakukan pemetaan berdasarkan prioritas yang telah ditentukan • Pemeriksaan data input – Verifikasi seluruh data transaksi yang masuk telah sesuai dan patuh dengan bentuk dan skema baku yang telah ditentukan • Pemeriksaan Anomali – Verifikasi seluruh transaksi saham untuk mengetahui adanya fluktuasi harga atau volume perdagangan saham Algoritma Verifikasi : Batasan Waktu • • Verifikasi pemeriksaan waktu dan periode transaksi yang valid. Waktu dan periode yang valid adalah Senin-Kamis (9.3012.00, 13.30-16.00) dan Jumat (9.30-11.30, 14.0016.00). Algoritma Prosedur : 1. Untuk pencatatan transaksi, sistem harus memeriksa timestamp dari masing-masing transaksi. 2. Untuk tiap transaksi dengan waktu valid, masukkan ke database yang sesuai. 3. Untuk tiap transaksi dengan waktu invalid, masukkan ke database terpisah untuk pemeriksaan. Algoritma Verifikasi : Batasan Waktu (2) Algoritma Verifikasi Prosedur : 1. Pastikan format waktu yang digunakan sesuai dengan standar baku 2. Lakukan prosedur pemeriksaan waktu 3. Lakukan pemeriksaan untuk seluruh data valid apakah memenuhi batasan waktu. 4. Lakukan pemeriksaan untuk seluruh data tidak valid apakah benar di luar batasan waktu yang ditentukan Algoritma Verifikasi : Batasan Trading Limit • • Verifikasi trading limit broker untuk tiap transaksi yang dilakukan Trading limit masing-masing broker ditentukan oleh KPEI sesuai dengan reputasi dan nilai jaminan. Algoritma Prosedur : 1. Sebelum pencatatan transaksi, sistem harus memeriksa total jumlah transaksi yang telah dilakukan oleh broker tersebut pada hari itu. 2. Lakukan pembandingan antara trading limit dengan total transaksi yang telah dilakukan ditambah transaksi yang akan dilakukan. 3. Jika total transaksi melebihi trading limit maka lakukan penolakan secara otomatis. 4. Jika total transaksi belum melebihi trading limit maka lakukan pencatatan transaksi tersebut. Algoritma Verifikasi : Batasan Trading Limit (2) Algoritma Verifikasi Prosedur : 1. Pastikan trading limit dari broker tidak sama dengan nol atau minus 2. Catatkan transaksi dengan nilai transaksi yang masih dibawah nilai total trading limit 3. Lakukan prosedur pengecekan trading limit untuk transaksi tersebut 4. Sistem harus menerima transaksi tersebut 5. Catatkan transaksi dengan nilai transaksi yang diatas nilai total trading limit 6. Lakukan prosedur pengecekan trading limit untuk transaksi tersebut 7. Sistem harus menolak transaksi tersebut Algoritma Verifikasi : Batasan Jangkauan Harga • • Verifikasi bahwa harga penawaran dan penjualan tidak boleh melebihi/kurang dari batas yang telah ditentukan Batas yang digunakan pada simulasi ini adalah +- 20% Algoritma Prosedur : 1. Sebelum pencatatan transaksi, sistem harus memeriksa harga saham paling terakhir 2. Lakukan pembandingan antara harga saham dengan harga saham yang ditawarkan untuk dibeli/dijual 3. Jika perbedaan mencapai +- 20% maka sistem akan menolak transaksi tersebut 4. Jika perbedaan harga belum tidak melanggar jangkauan tersebut maka sistem akan mencatat transaksi Algoritma Verifikasi : Batasan Jangkauan Harga (2) Algoritma Verifikasi Prosedur : 1. Pastikan nilai saham yang tercatat tidak nol atau minus 2. Catatkan transaksi dengan nilai transaksi yang masih diantara jangkauan harga 3. Lakukan prosedur pengecekan jangkauan harga untuk transaksi tersebut 4. Sistem harus menerima transaksi tersebut 5. Catatkan transaksi dengan nilai transaksi yang berada diatas jangkauan harga 6. Lakukan prosedur pengecekan jangkauan harga untuk transaksi tersebut 7. Sistem harus menolak transaksi tersebut 8. Catatkan transaksi dengan nilai transaksi yang berada dibawah jangkauan harga 9. Lakukan prosedur pengecekan jangkauan harga untuk transaksi tersebut 10. Sistem harus menolak transaksi tersebut Algoritma Verifikasi : Proses Pemetaan Jual/Beli • • Proses pemetaan ini adalah fungsi utama dari sistem simulasi transaksi saham Verifikasi yang dilakukan melingkupi ketepatan prioritas serta kenetralan hasil pemetaan Algoritma Prosedur : 1. Sistem mengambil data-data dari permintaan beli saham dan penawaran jual saham 2. Data-data tersebut diurutkan dari yang memiliki nilai total transaksi paling besar ke yang paling kecil 3. Lakukan pencocokan permintaan pembelian dengan penjualan dimulai dari yang paling besar nilainya 4. Jika ada permintaan/penawaran dengan harga yang sama maka yang diutamakan adalah yang paling dulu terdaftar 5. Masukkan seluruh hasil pemetaan ke database transaksi saham Algoritma Verifikasi : Proses Pemetaan Jual/Beli (2) Algoritma Verifikasi Prioritas : 1. Catatkan beberapa transaksi pembelian dan penjualan dengan nilai yang sama namun waktu yang berbeda ke dalam database 2. Lakukan proses pemetaan transaksi saham 3. Simpan data transaksi saham yang dihasilkan 4. Tukar waktu pencatatan di dalam transaksi pembelian dan penjualan 5. Lakukan proses pemetaan transaksi saham 6. Bandingkan hasilnya dengan data transaksi saham sebelumnya, hasilnya harus berbeda Algoritma Verifikasi : Proses Pemetaan Jual/Beli (3) Algoritma Verifikasi Netralitas : 1. Catatkan beberapa transaksi pembelian dan penjualan ke dalam database 2. Lakukan proses pemetaan transaksi saham 3. Simpan data transaksi saham yang dihasilkan 4. Ubah data broker pada transaksi pembelian dan penjualan pada database 5. Lakukan proses pemetaan transaksi saham 6. Bandingkan hasilnya dengan data transaksi saham sebelumnya, hasilnya harus sama dengan hasil transaksi sebelumnya Algoritma Verifikasi : Pemeriksaan Data Input • • Verifikasi seluruh data transaksi yang masuk telah sesuai dan patuh dengan bentuk dan skema baku yang telah ditentukan Contohnya adalah pemeriksaan kelengkapan data transaksi, broker yang invalid, atau saham yang invalid. Algoritma Prosedur : 1. Sebelum melakukan pencatatan transaksi, sistem melakukan pemeriksaan kelengkapan seluruh field data transaksi. 2. Apabila terdapat field yang hilang maka data tersebut akan dimasukkan ke database tersendiri untuk pemeriksaan. 3. Sistem melakukan pemeriksaan field identitas broker yang melakukan transaksi 4. Apabila broker tersebut invalid atau dalam status suspend maka data tersebut akan dimasukkan ke database tersendiri untuk pemeriksaan. 5. Sistem melakukan pemeriksaan field identitas saham transaksi 6. Apabila saham tersebut invalid atau dalam status suspend maka data tersebut akan dimasukkan ke database tersendiri untuk pemeriksaan. Algoritma Verifikasi : Pemeriksaan Data Input (2) Algoritma Verifikasi Kevalidan Saham: 1. Pastikan seluruh field pada data transaksi telah terisi dengan benar 2. Catatkan transaksi pembelian dengan data identitas saham yang valid 3. Lakukan prosedur pemeriksaan data 4. Sistem harus mencatatkan transaksi tersebut 5. Catatkan transaksi pembelian dengan data identitas saham yang tidak valid 6. Lakukan prosedur pemeriksaan data 7. Sistem harus memasukkan transaksi tersebut ke database tersendiri Algoritma Verifikasi : Pemeriksaan Data Input (3) Algoritma Verifikasi Kevalidan Broker: 1. Pastikan seluruh field pada data transaksi telah terisi dengan benar 2. Catatkan transaksi pembelian dengan data identitas broker yang valid 3. Lakukan prosedur pemeriksaan data 4. Sistem harus mencatatkan transaksi tersebut 5. Catatkan transaksi pembelian dengan data identitas broker yang tidak valid 6. Lakukan prosedur pemeriksaan data 7. Sistem harus memasukkan transaksi tersebut ke database tersendiri Kesimpulan • LinguSQL menggunakan studi kasus transaksi saham karena sifatnya yang mission-critical, bergantung kepada database, serta memiliki kepentingan finansial yang tinggi. • Aplikasi simulasi transaksi saham yang digunakan hanya melibatkan pencatatan transaksi penjualan,pembelian, serta proses pemetaan final transaksi saham. • Verifikasi LinguSQL dilakukan pada tahap pengembangan dan berfungsi untuk memastikan kebenaran algoritma sebuah komponen. • Kasus verifikasi untuk transaksi saham dapat menggunakan batasan dan aturan yang berlaku di dunia nyata. Selanjutnya : Presentasi simulasi transaksi saham dalam LinguSQL dan demo. Terima Kasih