Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

PROMELA & SPIN Budi Rahardjo Kuliah Metoda Formal 2004.

Presentasi serupa


Presentasi berjudul: "PROMELA & SPIN Budi Rahardjo Kuliah Metoda Formal 2004."— Transcript presentasi:

1 PROMELA & SPIN Budi Rahardjo Kuliah Metoda Formal 2004

2 PROMELA & SPIN - Budi Rahardjo2 PROMELA & SPIN PROMELA = PROcess MEta Language –Sebuah bahasa untuk men-spesifikasi-kan sistem –Menggabungkan CSP, C, SDL SPIN merupakan tools untuk melakukan (model) checking terhadap sistem yang dituliskan dalam PROMELA

3 Bahasa PROMELA

4 PROMELA & SPIN - Budi Rahardjo4 OBJECTS Ada 3 objects (akan dijelaskan nanti) –Processes –Message channels –State variables Object ini bisa ditransalasikan menjadi finite state machine

5 PROMELA & SPIN - Budi Rahardjo5 Executability of statements Dalam PROMELA tidak ada perbedaan antara conditions dan statements Eksekusi dari statement bergantung kepada sifat executability nya PROMELA statement bisa executable atau blocked bergantung kepada nilai dari variable atau isi dari message channels Jika kondisi benar (holds) maka statement dieksekusi. Jika tidak, maka dia akan terblokir (blocked) sampai condition holds

6 PROMELA & SPIN - Budi Rahardjo6 Variabel & Data Types Ada 6 predefined data types –Bit, bool, byte, short, int, chan –Ukuran (1), (1), (8), (16), (32) bit, kecuali channel –Chan -> message channel, yaitu sebuah object yang dapat menyimpan beberapa nilai yang disatukan menjadi sebuah struktur –Contoh penggunaan boolflag; intstate; bytemsg;

7 PROMELA & SPIN - Budi Rahardjo7 Array Variabel dapat dinyatakan sebagai array byte state[N] state[0] = state[3] + 5 * state[3*2/n] Declaration dan assigments selalu executable

8 PROMELA & SPIN - Budi Rahardjo8 Process proctype A() { byte state; state = 3} merupakan deklarasi sebuah proses dengan sebuah variable yang bernama state Tanda titik koma (semicolon) merupakan statement separator (bukan statement terminator). Ada dua statement separator: anak panah -> dan titik koma ;. Keduanya ekivalen

9 PROMELA & SPIN - Budi Rahardjo9 Contoh byte state = 2; proctype A() { (state == 1) -> state = 3} proctype B() { state = state – 1}

10 PROMELA & SPIN - Budi Rahardjo10 Initial Process init { run A(); run B() } Proses init sama seperti main() pada program Bahasa C

11 PROMELA & SPIN - Budi Rahardjo11 Message Channels chan a, b; chan c[3] chan qname = [16] of { byte, int, chan, byte} qname!expr mengirimkan nilai dari ekspresi expr ke channle qname?msg membaca sebuah message dari head dari channel tersebut, dan menyimpannya dalam variabel msg

12 PROMELA & SPIN - Budi Rahardjo12 Control Flow Case selection Repetition Unconditional jumps

13 PROMELA & SPIN - Budi Rahardjo13 Case Selection if :: (a != b) -> option1 :: (a == b) -> option2 fi Statement pertama berfungsi sebagai guard Jika lebih dari satu guard yang executable, dipilih salah satu secara random Jika semua guard tidak ada yang executable, maka proses menjadi blocked sampai ada salah satu yang bisa dieksekusi

14 PROMELA & SPIN - Budi Rahardjo14 Repetition byte count; proctype counter() { do :: count = count +1 :: count = count -1 :: (count == 0) -> break od } Hanya ada satu option yang dapat dieksekusi pada satu saat.

15 PROMELA & SPIN - Budi Rahardjo15 Jump proctype Euclid(in x, y) { do :: (x > y) -> x = x – y :: (x y = y – x :: (x == y) -> goto done od done: skip }


Download ppt "PROMELA & SPIN Budi Rahardjo Kuliah Metoda Formal 2004."

Presentasi serupa


Iklan oleh Google