vdm

48
VDM SarMag TI 03 Vienna Development Method Denny Satria Jennifer S K Karamoy William

Upload: william-gunawan

Post on 30-Jun-2015

114 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: VDM

VDM

SarMag TI 03

ViennaDevelopment Method

Denny Satria

Jennifer S K Karamoy

William

Page 2: VDM

INTRODUCTIONVienna Development Method

Page 3: VDM

Vienna Development Method (VDM)

Vienna Development Method (VDM) adalah salah satu dari Metode Formal terpanjang yang ditetapkan untuk pengembangan sistem berbasis komputer. Berasal dari kerja yang dilakukan di Vienna IBM Laboratory di tahun 1970-an yang telah berkembang untuk memasukkan sekelompok teknik dan alat berdasarkan bahasa spesifikasi formal yaitu Bahasa VDM-SL. Bahasa ini memiliki bentuk yang diperpanjang oleh VDM++ yang mendukung pemodelan sistem berorientasi objek dan konkuren.

Page 4: VDM

Dukungan untuk VDM termasuk alat komersial dan akademik untuk model analisis, termasuk dukungan untuk menguji dan membuktikan sifat model dan membuat kode program dari model VDM divalidasi. Ada riwayat penggunaan industri VDM dan perlengkapannya dan pertumbuhan badan penelitian di formalisme telah menyebabkan kontribusi penting kepada rekayasa sistem kritis, kompiler, sistem bersamaan dan dalam logika untuk ilmu komputer.

Page 5: VDM

Sistem Komputasi dapat dimodelkan dalam VDM-SL pada tingkat yang lebih tinggi yang dicapai dengan menggunakan bahasa pemrograman yang memungkinkan analisis desain dan identifikasi fitur utama termasuk cacat pada tahap awal pengembangan sistem.

Model yang telah disahkan bisa diubah menjadi desain sistem rinci melalui proses perbaikan. Bahasa ini memiliki semantik formal yang memungkinkan bukti sifat model ke tingkat tinggi. Ia juga memiliki subset executable, sehingga model dapat dianalisa dengan pengujian dan dapat dilakukan melalui antarmuka pengguna grafis, sehingga model dapat dievaluasi oleh ahli yang tentu sudah tidak asing dengan bahasa pemodelan itu sendiri.

Page 6: VDM

Formal methods

Dalam ilmu komputer dan rekayasa perangkat lunak, metode formal adalah jenis teknik matematis yang berbasis untuk pengembangan, spesifikasi dan verifikasi sistem perangkat lunak dan perangkat keras. Penggunaan metode formal untuk desain software dan hardware. Yang dimotivasi oleh harapan bahwa , seperti dalam disiplin ilmu teknik lainnya, melakukan analisis matematis yang tepat dapat memberikan kontribusi terhadap keandalan dan kekokohan desain. Namun, tingginya biaya dengan menggunakan metode formal berarti bahwa mereka biasanya hanya digunakan dalam pengembangan sistem high-integritas, di mana keselamatan atau keamanan sangat penting.

metode formal yang terbaik digambarkan seperti penerapan fundamental ilmu komputer teoritis, bahasa formal, teori automata, dan semantik program, tetapi juga sistem aljabar jenis dan tipe data untuk masalah dalam perangkat lunak dan spesifikasi perangkat keras dan verifikasi.

Page 7: VDM

metode formal dapat digunakan pada beberapa tingkatan:

Level 0: spesifikasi formal dapat dilakukan dan kemudian sebuah program yang dikembangkan dari informal. Ini telah dikenal metode formal lite. Ini mungkin pilihan biaya yang paling efektif dalam banyak kasus.

Level 1: pengembangan formal dan verifikasi formal dapat digunakan untuk menghasilkan program dengan cara yang lebih formal. Misalnya, bukti sifat atau penyempurnaan dari spesifikasi untuk program dapat dilakukan. Ini mungkin yang paling tepat dalam sistem integritas tinggi yang melibatkan keselamatan atau keamanan.

Page 8: VDM

Level 2: Teorema Prover dapat digunakan untuk menjalankan mesin sepenuhnya.Hal ini bisa sangat mahal dan hanya praktis bermanfaat jika biaya kesalahan sangat tinggi (misalnya, di bagian-bagian penting dari desain mikroprosesor).

Informasi lebih lanjut mengenai ini diperluas seperti dengan semantik bahasa pemrograman, gaya metode formal mungkin secara kasar diklasifikasikan sebagai berikut:

   

Page 9: VDM

Semantik Denotasional, di mana makna dari suatu sistem dinyatakan dalam teori matematika domain. Para pendukung metode tersebut bergantung pada sifat baik dipahami dari domain untuk memberi makna pada sistem pengkritik menunjukkan bahwa tidak setiap sistem mungkin secara intuitif atau alami dipandang sebagai suatu fungsi.

 Operasional semantik, di mana makna dari suatu sistem dinyatakan sebagai urutan tindakan model komputasi sederhana. Para pendukung metode tersebut menunjukkan kesederhanaan model mereka sebagai sarana untuk kejelasan ekspresif.

Semantik aksioma, di mana arti sistem dinyatakan dalam prasyarat dan postconditions yang benar sebelum dan setelah sistem melakukan tugas masing-masing.

Page 10: VDM

VDM-SLThe Vienna Development Method - Specification Language

Page 11: VDM

VDM-SL

VDM – SL merupakan suatu model yang berorientasi pada bahasa spesifikasi (Specification Language)

Spesifikasi pada VDM-SL terdiri dari model matematika yang dibangun dari tipe data sederhana seperti sets, lists and mappings.

Bahasa spesifikasi bagian dari VDM-SL sudah distandarisasi di bawah naungan International Standards Organisation (ISO) dan British Standards Institute.

Page 12: VDM

Isi Model VDM-SL

Berikut ini merupakan isi dari model VDM-SL : Tipe Data Fungsi dan Operasi Himpunan Komposit Objek dan invariants Map Sequences

Page 13: VDM

13

Tipe Data

Type Symbol

nat

nat1

int

real

char

bool

token

quote

Values

Natural numbers

nat excluding 0

Integers

Real Numbers

Characters

Booleans

Structureless tokens

Named quote values

Example Values

0, 1, 2, …

1, 2, 3, …

…,-1,0,1,2,…

-23.334

‘g’, ‘@’

true, false

Not applicable

<Red>, <Bio>

Operators

+,-,*,/,…

+,-,*,/,…

+,-,*,/,…

+,-,*,/,…

=, <>

and, or, …

=, <>

=, <>

Beberapa tipe data pada VDM-SL :

Page 14: VDM

Tipe Data

Tipe Konstruktor pada VDM – SL :

| Union types

[_] Optional types

:: Record types

set of _ Finite sets

seq of _ Finite sequences

map _ to _ Finite mappings

Page 15: VDM

Fungsi

Ada dua cara untuk bisa menetapkan fungsi di VDM-SL : Fungsi Implisit

contoh : SQRTP(x:real)r:real

pre x >=0

post r*r = n and r>=0

Fungsi Explisit

contoh : SqList: seq of nat -> seq of nat

SqList(s) == if s = [] then []

else [(hd s)**2] ^ SqList(tl s)

Page 16: VDM

Operasi

Operasi adalah kumpulan variabel eksternal yang dapat melakukan akses dan perubahan

Operasi dapat dikumpulkan ke dalam modul

Contoh :

Page 17: VDM

Himpunan

Himpunan dapat didefinisikan secara : Enumeration

contoh : { jan, feb, mar, april, . . . , des } Subrange (integers only): {integer1,...,integer2} contoh : {12,...,20} =

Comprehension

contoh : { x**2 | x:nat & x < 5 }

Page 18: VDM

Himpunan

Himpunan dengan tipe konstruktor

Contoh:set of nat1 sets of non-zero Natural numbers

set of Student sets of student records

set of (seq of char) sets of sequences of characters

(e.g. sets of names)

set of (set of int) sets of sets of integers,

e.g.{ {3,56,2},{-2},{},{-33,5} }

Page 19: VDM

Beberapa contoh notasi himpunan :

Notasi Himpunan

Page 20: VDM

Komposit Objek dan invariants

Sebuah komposit objek memiliki number of field.

contoh :

Sebuah tipe data invarian adalah ekspresi Boolean yang digunakan untuk membatasi jenis data yang hanya berisi nilai-nilai yang memenuhi ekspresi.

Page 21: VDM

Komposit Objek dan invariants

contoh :

Page 22: VDM

Map

Pemetaan adalah hubungan fungsional antara dua himpunan nilai: domain dan range. Pemetaan umum di gunakan pada banyak model.

contoh :

Page 23: VDM

Map

Nilai Pemetaan dapat didefinisikan dengan enumerasi atau comprehension sebagai himpunan maplets.

Operator digunakan untuk mengekstrak domain dan range, pemetaan lookup dan untuk menggabungkan pemetaan oleh union

Page 24: VDM

Sequences

Pada VDM-SL, sequence adalah urutan perintah hingga dari kumpulan nilai.

contoh :

Urutan hingga dengan tipe konstruktor adalah: seq of X

contoh : » seq of nat1» seq of (seq of char)

Page 25: VDM

Modul

Modul mengikat model dan kumpulan operasi ke dalam suatu unit.

Modul adalah kumpulan tipe data. Modul dengan impor / ekspor list dapat

mengatur apa yang bisa digunakan pada interface.

Kita dapat mengubah detail internal satu tipe data tanpa perlu mengubah tipe data yang menggunakannya.

Page 26: VDM

Modul

contoh modul :

Page 27: VDM

VDMTOOLSVDM-SL Toolbox

Page 28: VDM

VDMTools

VDMTools adalah kumpulan tool yang memungkinkan anda untuk mengembangkan dan menganalisis model sistem komputasi.

Pada saat digunakan pada tahap awal development system, model ini dapat bekerja sebagai spesifikasi sistem, atau sebagai bantuan pada saat memeriksa konsistensi dan kelengkapan kebutuhan user.

Model ini ditunjukkan baik dalam VDM-SL ISO atau Object Oriented Formal Specification Language VDM++.

Page 29: VDM

VDM-SL Toolbox menyediakan berbagai alat untuk pemeriksaan otomatis dan validasi model dalam VDM-SL sebelum pelaksanaan.

Page 30: VDM

VDMTools Overview

Specification Manager Syntax Checker Type Checker Interpreter dan Debugger Generation of Integrity Properties Code Generator

Page 31: VDM

Syntax Checking

Memeriksa apakah syntax pada spesifikasi file sudah benar

Parsing spesifikasi: Pilih file, tekan Syntax Check. Jika ada error, Error List muncul.

Mengoreksi syntax error: Diberi asumsi pada pesan error. Dibetulkan pada editor.

Kalau syntax sudah benar, re-run syntax checker lagi. Sekarang, jika tukar ke Module View, akan terlihat DefaultMode ditandai dengan

Page 32: VDM

Type Checking

Sekali spesifikasi telah melewati syntax check, type checker dapat diaplikasikan.

Pilih modul DefaultMode pada Module View, jalankan type checker. Setelah memeriksa tipe, Toolbox update info status menggunakan simbol jika sukses, jika gagal.

Walaupun spesifikasi telah melewati operasi type checking, tidak menjamin sudah benar dan mungkin ada beberapa error(seperti division by zero)

Page 33: VDM

Untuk identifikasi run-time error, type checker mempunyai sebuah option yang dapat melaporkan error yang berpotensial untuk terjadi run-time error.

Type Checker menilai apakah ekspresi adalah tipe yang diharapkan pada posisinya dalam sebuah spesifikasi.

Page 34: VDM

Validating Specification

Spesifikasi dikembangkan untuk satu tujuan: biasanya untuk mendapatkan pemahaman yang lebih baik tentang behaviour yang diinginkan dari sebuah sistem komputasi yang diusulkan, atau untuk memeriksa sifat desain seperti safety, atau berfungsi sebagai dasar untuk desain detail berikutnya atau coding.

Tidak hanya benar syntax dan type, tapi juga harus mengungkap behaviour sistem yang dimodelkan, meskipun abstrak.

Page 35: VDM

Validasi adalah proses meningkatkan keyakinan bahwa spesifikasi formal secara akurat mencerminkan persyaratan informal untuk sistem yang dimodelkan.

Toolbox menyediakan support untuk validasi melalui animasi dan pengujian menggunakan interpreter dan debugger - melaksanakan bagian dari spesifikasi pada nilai input yang dipilih - dan melalui generasi sifat integritas

Page 36: VDM

Validation: 1. Evaluasi ekspresi menggunakan interpreter

Interpreter memungkinkan anda untuk evaluasi dan debug ekspresi dan statement. Debugger memungkinkan anda untuk mengatur breakpoints, step melalui evaluasi, periksa variabel.

Response Pane Dialog Pane

Page 37: VDM

Validation: 2. Mengatur Breakpoint

Breakpoint menyebabkan interpreter untuk break eksekusi ketika evauasi functions/operations.

Co: Atur breakpoint pada fungsi ToRed di traffic.vdm dengan mengetik break ToRed

Jika anda mengatir breakpoint pada module yang aktif, sederhana hanya menyebut nama fungsi/operasi. Jika lain modul, harus disebutkan nama modulnya.

Lokasi breakpoint sekarang muncul. Lalu dapat menggunakan perintah debug.

Page 38: VDM

Anda sekarang dapat menggunakan perintah debug untuk memulai evaluasi bukan perintah cetak yang digunakan sebelumnya.

Debug memaksa interpreter untuk berhenti pada breakpoint

Print mengabaikan breakpoint Menghapus breakpoint: delete <no>

Page 39: VDM

Validation:3. Dynamic Type Checking

Walaupun type checker melaporkan tidak ada error, mungkin masih ada tipe errpr sebab secara umum tidak mungkin untuk menemukan semua tipe error dengan analisis statis sederhana informasi tipe.(berdasarkan pada tanda fungsi dan operasi). Jadi, contohnya, jika sebuah fungsi dideklarasi seperti sebuah integer, tetapi diaplikasikan ke sebuah ekspresi yang mengevaluasi ke real. Ini tidak akan menjadi tipe error status karena int adalah subtipe real, jadi aplikasi mungkin membenarkan.

Page 40: VDM
Page 41: VDM

Validation: 4. Checking Integrity Properties

Dynamic Type Checker memeriksa run-time error untuk beberapa nilai input spesifik.

Integrity Examiner menawarkan sebuah cara yang lebih umum untuk menyelidiki kemungkinan run-time error, meskipun kurang intuitif untuk orang yang lebih familiar dengan pemrograman daripada matematika

Page 42: VDM

Integrity Examiner mencari tempat yang berpotensi terjadi run-time error dan menghasilkan serangkain sifat integritas yang mewakili kondisi dimana harusnya tidak terjadi run-time error.

Page 43: VDM

Systemmatic Testing

Membantu untuk melihat seberapa baik test yang diberikan mengatasi spesifikasi. Ada 3 step yang termasuk dalam menghasilkan laporan coverage test

Menyiapkan file test coverage: berisi informasi tentang struktur spesifikasi

Uji spesifikasi dengan membuat panggilan eksekusi interpreter

Laporan Pretty Print: Pretty Printer mengambil spesifikasi dan file coverage test dan menghasilkan versi terbaik spesifikasi dengan info yang dimasukan

Page 44: VDM

1. Tcov reset untuk me-reset test coverage file jadi tidak ada informasi tentang testing yang diberikan untuk spesifikasi.

2. Print untuk mengevaluasi bentuk berbeda dari spesifikasi

3. tcov write vdm.tc (membuat file)

4. rtinfo vdm.tc untuk menampilkan tabel informasi pada test coverage file. Terdiri dari daftar berbagai fungsi dan operasi yang dipanggil selama testing dan presentase spesifikasinya yang diuji paling tidak 1x.

Page 45: VDM

Pretty Printing

Pretty Printing mentransformasikan sebuah spesifikasi dari format inputnya ke versi cetak cantik dari spesifikasi. Khususnya digunakan untuk tujuan dokumentasi.

Page 46: VDM

Generating Code

Dapat secara otomatis file vdm diterjemahkan ke C++

Page 47: VDM

Fasilitas Link Dinamis

Dapat menjadi kombinasi, dimana sebagian dalam VDM-SL, sebagian dalam C++

Page 48: VDM

THANK YOU