vdm
Post on 30-Jun-2015
114 Views
Preview:
TRANSCRIPT
VDM
SarMag TI 03
ViennaDevelopment Method
Denny Satria
Jennifer S K Karamoy
William
INTRODUCTIONVienna Development Method
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.
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.
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.
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.
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.
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:
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.
VDM-SLThe Vienna Development Method - Specification Language
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.
Isi Model VDM-SL
Berikut ini merupakan isi dari model VDM-SL : Tipe Data Fungsi dan Operasi Himpunan Komposit Objek dan invariants Map Sequences
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 :
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
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)
Operasi
Operasi adalah kumpulan variabel eksternal yang dapat melakukan akses dan perubahan
Operasi dapat dikumpulkan ke dalam modul
Contoh :
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 }
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} }
Beberapa contoh notasi himpunan :
Notasi Himpunan
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.
Komposit Objek dan invariants
contoh :
Map
Pemetaan adalah hubungan fungsional antara dua himpunan nilai: domain dan range. Pemetaan umum di gunakan pada banyak model.
contoh :
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
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)
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.
Modul
contoh modul :
VDMTOOLSVDM-SL Toolbox
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++.
VDM-SL Toolbox menyediakan berbagai alat untuk pemeriksaan otomatis dan validasi model dalam VDM-SL sebelum pelaksanaan.
VDMTools Overview
Specification Manager Syntax Checker Type Checker Interpreter dan Debugger Generation of Integrity Properties Code Generator
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
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)
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.
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.
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
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
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.
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>
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.
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
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.
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
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.
Pretty Printing
Pretty Printing mentransformasikan sebuah spesifikasi dari format inputnya ke versi cetak cantik dari spesifikasi. Khususnya digunakan untuk tujuan dokumentasi.
Generating Code
Dapat secara otomatis file vdm diterjemahkan ke C++
Fasilitas Link Dinamis
Dapat menjadi kombinasi, dimana sebagian dalam VDM-SL, sebagian dalam C++
THANK YOU
top related