LinguSQL & Studi Kasus Aplikasi Transaksi Saham

Slides:



Advertisements
Presentasi serupa
Latihan Soal 1. Dalam membagun aplikasi tidak lepas dari SDLC(System Development Life Cycle), yang tidak masuk dalam kategori tahapan SDLC adalah a. Analisa.
Advertisements

REKAYASA PERANGKAT LUNAK
Pengembangan Sistem Informasi
Rekayasa Perangkat Lunak dan Proses Software
Software Engineering Chapter 4
Lecturer : Bambang Warsuta, S.Kom, M.T.I
PETEMUAN 7 ETIKA PROFESI.
Pengujian Sofware – strategi
BAB 2 METODE REKAYASA PERANGKAT LUNAK
METODE REKAYASA PERANGKAT LUNAK
Testing dan Implementasi Sistem
Pembuatan Prototipe Perangkat Lunak
PENGUJIAN / TESTING Ana Kurniawati.
Studi Kasus LinguSQL : Perdagangan Saham
PENGEMBANGAN APLIKASI ABSENSI, CUTI DAN IJIN BERBASIS Wahyudhi Utomo
BAB I DASAR – DASAR TEKNIK PERANGKAT LUNAK
Prototyping Aplikasi Teknologi Informasi
PERANCANGAN APLIKASI DELIVERY VIA SMS PADA RESTAURANT Agus Triatmaja,
PRODUSEN MAKANAN “RAOS” DENGAN MICROSOFT VISUAL APLIKASI PENGOLAHAN DATA TRANSAKSI PENJUALAN PADA for further detail, please visit
PERSEDIAAN APLIKASI for further detail, please visit
Perancangan Perangkat Lunak
Oleh: Asep Hidayatullah (071187)
APLIKASI ADMINISTRASI PEMBAYARAN PADA KLINIK DAARUS SHIFA Ratna Mulianingrum, for further detail, please visit
SISTEM KEDIKLATAN DI BADAN PENDIDIKAN DAN PELATIHAN Filda Angellia,
PEMBUATAN APLIKASI GENERIK DENGAN POWERBUILDER
“ MEMBUAT APLIKASI MOBILE MEDIA PLAYER MENGGUNAKAN Aristo Oktobrian,
Methods for Software Engineering CHAPTER 5 Software Project Planning Software engineering: a practitioner’s approach / Roger S. Pressman.—5th ed.
APLIKASI KAMUS PSIKOLOGI PADA PERANGKAT MOBILE DENGAN Harry Prasetyo Diputra for further detail, please visit
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 1 Pengujian Cacat (Defect Testing) l Pengujian program untuk mengungkap adanya.
SISTEM INFORMASI AKADEMIK DI SMA NEGERI 1 CIPARAY     SKRIPSI   Diajukan sebagai Salah Satu Syarat kelulusan Pada Program Studi Sistem Informasi Jenjang.
MODEL PROSES REKAYASA PERANGKAT LUNAK
Aplikasi Penyewaan VCD/DVD Biohazard Dengan Menggunakan Java 2 Se Dan Abdul Halim for further detail, please visit
MENJADI PUSH DOWN AUTOMATA (PDA) YANG EKIVALEN UNTUK “APLIKASI PROGRAM MENGUBAH CONTEXT FREE GRAMMAR (CFG) for further detail, please visit
Rekayasa Perangkat Lunak
Rekayasa Perangkat Lunak
Systems Development Life Cycle
proses PERANGKAT LUNAK
Pengenalan Rekayasa Perangkat Lunak
ANALISA DAN PERANCANGAN SISTEM INFORMASI
RPL.
METode rekayasa perangkat lunak
Tahapan Proyek Pembuatan Situs Web
MAKMUR MENGGUNAKAN VISUAL BASIC 6
Latihan Soal 1. Dalam membagun aplikasi tidak lepas dari SDLC(System Development Life Cycle), yang tidak masuk dalam kategori tahapan SDLC adalah a. Analisa.
MENGGUNAKAN ASP DAN ACCESS APLIKASI WEB MERAKIT & MENGENAL KOMPONEN KOMPUTER DENGAN for further detail, please visit
REKAYASA PERANGKAT LUNAK
Analisa dan Perancangan Sistem
Pengembangan Tool Pembuat Media Pembelajaran Animatif Berbasis Gambar dan Teks Sebagai Sarana Alternatif Pengayaan Konten Multimedia Pada portal e-Learning.
Pengantar Teknologi Informasi (Teori)
SISTEM PERANCANGAN for further detail, please visit
ANALISA DAN PERANCANGAN SISTEM INFORMASI
REKAYASA PERANGKAT LUNAK
M0414 Analisa Sistem Informasi
Rekayasa Perangkat Lunak
DAN JASA KOTA DEPOK DENGAN MENGGUNAKAN ARCVIEW 3
APLIKASI RENTAL CD/DVD MENGGUNAKAN Nursan Tri agung
PERANCANGAN TRANSAKSI APLIKASI PENJUALAN PONSEL Khendrik
PENGUJIAN / TESTING.
Rekayasa Perangkat Lunak
Interaksi Manusia dan Komputer (Proses Desain)
Pengembangan Sistem Informasi
TESTING DAN QA SOFTWARE PERTEMUAN 18
Penguji 2 : Nelly Indriani W,S.Si. M.T.
Pengembangan Sistem Informasi
PI. Fakultas Ilmu Komputer
Pertemuan 8 RPL Oleh : Syukriya al-Asyik S.Kom
Pengujian Perangkat Lunak
Analisis Persyaratan Perangkat Lunak dan Spesifikasi
SIDANG SKRIPSI Perancangan Sistem Informasi Perparkiran
Fathiah, S.T.,M.Eng Universitas Ubudiyah Indonesia
Transcript presentasi:

LinguSQL & Studi Kasus Aplikasi Transaksi Saham Rikky Wenang P. Fakultas Ilmu Komputer UI R.3208 rwenang@ui.edu

Sebelum memulai saya punya sebuah kartun yang saya harap relevan untuk topik pembahsan seminar kali ini .......penggambaran stasiun nasa yang memberikan perintah dalam beragam satuan ukuran ke sebuah satelit, disini terlihat dia menggunakan satuan2 seperti furlong,rods,fathoms,cubit, dan lain sebagainya. The result : chaos

1999, Lockheed Martin engineering team used English units of measurement while the agency's team used the more conventional metric system for a key spacecraft operation.They lost a $125 million Mars orbiter. Doesn’t mean that the engineers are stupid, just to show that the smallest mistake costs a lot.

Tujuan : Pengenalan LinguSQL sebagai tool pengembangan aplikasi perangkat lunak Pengenalan prosedur dasar pengembangan komponen perangkat lunak dengan LinguSQL

Daftar Isi Overview LinguSQL Development Process Demo

LinguSQL

Latar Belakang LinguSQL merupakan tool hasil riset fakultas ilmu komputer universitas indonesia. Konsep bahasa dikembangkan sejak tahun 2003, pengembangan sejak tahun 2005. Masih dalam tahap pengembangan, terbuka untuk saran dan kritik.

Apa itu LinguSQL ? Tool pengembangan komponen yang mengintegrasikan proses pengujian : Whitebox Pengujian alur algoritma di dalam sebuah perangkat lunak, mis. formal method, model checking. Blackbox Pengujian karakteristik input/output, mis. unit testing,skenario. Spesifik untuk aplikasi database Menggunakan bahasa abstrak Lingu untuk scripting Tidak executable, harus diubah menjadi bahasa konkrit lain misal Java, C++ Kenapa abstrak ?

Karakteristik LinguSQL Komplemen proses pengembangan sistem populer => (SDLC, waterfall,RUP) Berfokus pada komponen kritis yang memerlukan pengujian secara intensif Butuh sumber daya waktu dan manusia lebih. Hasil akhir yang diharapkan : Komponen terverifikasi secara formal Komponen yang telah tervalidasi dengan berbagai macam input

Contoh Tampilan LinguSQL

Demo 1 : Aplikasi LinguSQL

Gambaran Besar

Cara Kerja LinguSQL

Metodologi Pengembangan

Proses Pengembangan 4 proses pengembangan komponen dengan LinguSQL : Identifikasi kebutuhan data dan fungsi Verifikasi spesifikasi komponen secara formal Validasi input/output komponen Transformasi ke bahasa konkrit Bandingkan dengan sdlc, gatheringg- analisa&desian - konstruksi – testing - repeat

Proses 1 : Identifikasi kebutuhan data dan fungsi Analogi dengan analisa kebutuhan dan desain sistem pada metodologi konvensional Berfokus kepada data dan fungsi yang sangat kritis untuk aplikasi tersebut. Mis. proses transaksi pada bursa saham, proses kliring pada sistem perbankan, dll. Hasil akhir adalah struktur data dan algoritma fungsi dengan bahasa Lingu

Proses 2 : Proses Verifikasi Proses verifikasi membutuhkan spesifikasi formal untuk tiap prosedur yang akan diuji. Spesifikasi disusun berdasarkan prosedur yang ada beserta prekondisi dan postkondisi yang diharapkan. Prosedur + Spesifikasi => LinguHOL script Spesifikasi dibuktikan kebenarannya dengan bantuan HOL theorem prover Kasus tertentu membutuhkan bantuan manusia untuk melakukan pembuktian.

Proses 3 : Proses Validasi Proses validasi melakukan pengujian prosedur secara blackbox. memeriksa output yang dihasilkan jika diberi input dengan jangkauan tertentu Spesifikasi harus didefinisikan untuk memeriksa hasil output prosedur Validasi dilakukan terhadap database dengan data yang digenerate secara otomatis. Salah satu fitur LinguSQL adalah data generator

Proses 4 : Proses Transformasi Proses transformasi mengubah skrip Lingu menjadi bahasa konkrit, mis. Java. Fitur transformasi bersifat modular Lingu memiliki portabilitas yang luas Dapat dikembangkan untuk bahasa-bahasa pemrograman konkrit lainnya Transformasi menghasilkan komponen yang merupakan bagian dari sistem informasi yang lebih besar.

Contoh Kode Lingu : SET validation fairness (sex::String) :: Bool { result0 :: RegistrationTable; do call evaluate(); result0 := d.PassTab; call changeSex(sex); } return result0 == Passtab; pre T; post return == T; type RegistrationTable = Record {| ID :: String; Name :: String; Sex :: Integer; Category :: Integer; StudyProgramme :: String; |} type SETdb = Dbase {| SubmitTab :: Table AnswerFormTable; MasterTab :: Table RegistrationTable; HealthyAFormTab :: Table AnswerFormTable; SolutionsTab :: Table SolutionTable; PassTab :: Table RegistrationTable; |} class SETutility (d::SETdb) { method filterUnknown() :: () ids, okids :: Table {| ID :: String; |}; do { ids := findAll s<-d.SubmitTab where T found s.ID,s.Name; insertAll i<-ids,r<-d.MasterTab where i.ID==r.ID to okids; delete ids where ids.ID in okids.ID; insertAll s<-d.submitTab, i <-ids where s.ID==i.ID to d.UnknownAFormTab; }

Struktur Data : Record = Struktur data representasi dari tabel data type RegistrationTable = Record {| ID :: String; Name :: String; Sex :: Integer; Category :: Integer; StudyProgramme :: String; |} DBase = representasi dari database yang memiliki tabel-tabel data type SETdb = Dbase {| SubmitTab :: Table AnswerFormTable; MasterTab :: Table RegistrationTable; HealthyAFormTab :: Table AnswerFormTable; SolutionsTab :: Table SolutionTable; PassTab :: Table RegistrationTable; |}

Struktur Class Memiliki method dengan parameter dan return value Memiliki operator database native, mis. Findall, insertall, delete, dsb. Seluruh parameter dalam class merupakan pass-by-value class SETutility (d::SETdb) { method filterUnknown() :: () ids, okids :: Table {| ID :: String; |}; do { ids := findAll s<-d.SubmitTab where T found s.ID,s.Name; insertAll i<-ids,r<-d.MasterTab where i.ID==r.ID to okids; delete ids where ids.ID in okids.ID; insertAll s<-d.submitTab, i <-ids where s.ID==i.ID to d.UnknownAFormTab; }

Struktur Validation Definisi metode pengujian blackbox Menggunakan method yang telah didefinisikan sebelumnya Memiliki spesifikasi prekondisi dan postkondisi validation fairness (sex::String) :: Bool { result0 :: RegistrationTable; do call evaluate(); result0 := d.PassTab; call changeSex(sex); } return result0 == Passtab; pre T; post return == T;

LinguSQL Demo : Aplikasi Transaksi Saham

Studi Kasus Aplikasi Transaksi Saham 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.

Studi Kasus (2) Prosedur Transaksi : Broker pembeli dan penjual memberikan penawaran jual/beli saham Sistem mencocokkan permintaan dan penawaran yang cocok Sistem mencatatkan transaksi yang terjadi Penyelesaian (pembayaran) transaksi

Pengembangan dengan LinguSQL Proses 1: Identifikasi Kebutuhan Identifikasi objek dari skenario penggunaan sistem. Identifikasi prosedur kritis yang perlu dilakukan oleh komponen program.

Identifikasi Data Prosedur Transaksi : Broker pembeli dan penjual memberikan penawaran jual/beli saham Sistem mencocokkan permintaan dan penawaran saham yang cocok Sistem mencatatkan transaksi yang terjadi Penyelesaian (pembayaran) transaksi

Identifikasi Data (2) Representasi Data dalam Lingu : # Data Penawaran Transaksi type TransactionTable = Record {| Id :: Integer; Timestamp :: String; Broker_Id :: Integer; Stock_Id :: Integer; Amount :: Integer; Price :: Integer;|} # Data Transaksi Final Saham type FinalTransactionTable = Record {| Timestamp :: String; Buy_Id :: Integer ; Sell_Id :: Integer ; Buyer_Broker_Id :: String; Seller_Broker_Id :: String; # Data Saham type StockListTable = Record {| Id :: Integer; Stock_Name :: String; Stock_Volume :: Integer; Current_Price :: Integer; Update_Timestamp :: String; |} # Data Broker type BrokerListTable = Record Broker_Name :: String; Trading_Limit :: Integer; |} |}

Identifikasi Prosedur Fungsi Utama => Pemetaan transaksi Mencocokan permintaan pembelian dan penjualan dengan harga yang sesuai. Fungsi Pendukung => memastikan operasi sesuai aturan transaksi saham. Pemeriksaan kevalidan permintaan Pemeriksaan trading limit Pemeriksaan kevalidan broker saham

Identifikasi Prosedur (2) method filterInvalidBrokerTransaction () :: () ok_ids,ids :: Table {| Id :: Integer; |}; do { // Ambil seluruh ID dari order pembelian saham ids := findAll d<-database.BuyTransactionTab where T found d.Id; // Ambil seluruh ID order pembelian yang memiliki ID broker yang valid ok_ids := findAll d<-database.BuyTransactionTab, b<-database.BrokerTab where d.Broker_Id == b.Id found d.Id; // Hapus ID order pembelian yang terdapat di tabel ok_ids, // sisanya adalah ID order yang tidak memiliki ID broker yang valid delete ids where ids.Id in ok_ids.Id; // Masukkan data order yang tersisa ke tabel transaksi invalid insertAll d<-database.BuyTransactionTab, i<-ids where d.Id == ids.Id to database.InvalidTransactionTab; }

Proses 2 : Verifikasi Prosedur Verifikasi pada LinguSQL menggunakan bantuan HOL theorem prover Membutuhkan spesifikasi tambahan untuk tiap-tiap prosedur Prekondisi : kondisi yang harus dipenuhi sebelum prosedur Postkondisi : kondisi yang harus dipenuhi setelah prosedur Skrip Lingu harus diubah menjadi skrip LinguHOL untuk melakukan verifikasi.

Skrip LinguHOL val filterInvalidBrokerTransaction_def = Define REF ( BrokerTab : BrokerListTable set), REF ( BuyTransactionTab : TransactionTable set), REF ( InvalidTransactionTab : TransactionTable set) ) = pre (empty InvalidTransactionTab /\ ~(empty BrokerTab) /\ ~(empty BuyTransactionTab) ) post ( ALLof InvalidTransactionTab (satisfy r. ALLof BrokerTab(satisfy q. ~(r.Broker_Id = q.Id)))) do /{ let badids = select BuyTransactionTab I (only r. ALLof BrokerTab(satisfy t. ~(t.Id = r.Broker_Id))) in insert badids InvalidTransactionTab I ALL /} return void`; (*----- the verification -----*) reduce defs filterInvalidBrokerTransaction_def ; L0min_vcg.autoverify MY_TAC ; L0min_vcg.VCs; L0min_vcg.conclude();

Demo : Verifikasi Skrip LinguHOL

Bagaimana Verifikasi Mencegah Kesalahan ? Algoritma “filter invalid broker” yang benar : pre (empty InvalidTransactionTab /\ ~(empty BrokerTab) /\ ~(empty BuyTransactionTab) ) post ( ALLof InvalidTransactionTab (satisfy r. ALLof BrokerTab(satisfy q. ~(r.Broker_Id = q.Id)))) do /{ let badids = select BuyTransactionTab I (only r. ALLof BrokerTab(satisfy t. ~(t.Id = r.Broker_Id))) in insert badids InvalidTransactionTab I ALL /} return void`;

Demo : Verifikasi Prosedur yang Benar

Bagaimana Verifikasi Mencegah Kesalahan ? Algoritma “filter invalid broker” yang salah : pre (empty InvalidTransactionTab /\ ~(empty BrokerTab) /\ ~(empty BuyTransactionTab) ) post ( ALLof InvalidTransactionTab (satisfy r. ALLof BrokerTab(satisfy q. ~(r.Broker_Id = q.Id)))) do /{ let badids = select BuyTransactionTab I (only r. ALLof BrokerTab(satisfy t. (t.Id = r.Broker_Id))) in insert badids InvalidTransactionTab I ALL /} return void`;

Demo : Verifikasi Prosedur yang Salah

Bagaimana Verifikasi Mencegah Kesalahan ? Pembuktian spesifikasi dengan menggunakan formal method : Hoare Triple {P} C {Q} Mengidentifikasikan kesalahan logika Pitfall verifikasi : Verifikasi => proses berdasarkan asumsi Analisa kebutuhan yang benar => Spesifikasi yang benar

Proses 3 : Validasi Prosedur Proses validasi melakukan pengujian terhadap output sebuah prosedur sesuai dengan inputnya. Pengujian lebih berfokus ke output state database setelah dilakukan prosedur. Pengujian dilakukan dengan bantuan data generator untuk melakukan populasi data sesuai spesifikasi.

Skrip Validasi validation checkInvalidBrokerFilter() :: Bool { temp_trans :: TransactionTable; temp_broker :: BrokerListTable; isNotInInvalid, isInValid :: Bool; isNotInInvalid2, isInValid2 :: Bool; do temp_trans.Id := 10; temp_trans.Broker_id := 1; temp_trans.Stock_id := 5; temp_trans.Amount := 10; temp_trans.Price := 100; temp_broker.Id := 1; temp_broker.Trading_Limit := 1000; insertAll x<-temp_trans where T to database.BuyTransactionTab; insertAll y<-temp_broker where T to database.BrokerTab; call filterInvalidBrokerTransaction(); isNotInInvalid := find a<-database.InvalidTransactionTab where a.Id == temp_trans.Id found F otherwise T; isInValid := find a<-database.BuyTransactionTab where a.Id == temp_trans.Id found T otherwise F; } return isNotInInvalid /\ IsInValid; pre T; post T;

Demo : Validasi Skrip Lingu

Proses 4 : Transformasi Kode Jika verifikasi dan validasi sukses, kode Lingu diubah ke bahasa konkrit untuk implementasi. Aspek portabilitas meminimalkan masalah migrasi aplikasi dari satu bahasa ke bahasa lain di masa depan. LinguSQL saat ini mampu melakukan transformasi Lingu ke Java. Menggunakan Atribute Grammar Hasil java bisa di-compile namun belum bisa dijalankan secara independen

Demo : Transformasi Skrip Lingu

Penutup LinguSQL sebagai tool pengembangan aplikasi database yang menekankan kepada pengujian secara formal dan blackbox. LinguSQL adalah teknologi komplemen bukan substitusi dari bahasa konkrit. Hasil akhir yang diharapkan adalah komponen kode yang : Terverifikasi secara formal Tervalidasi dengan jangkauan input tertentu

Terima Kasih Kritik & Saran : - rwenang@ui.edu - ade@cs.ui.ac.id