Tutorial Abstract Behavioral Specification (ABS) - RSE

advertisement
LABORATORIUM RELIABLE SOFTWARE ENGINEERING (RSE)
FAKULTAS ILMU KOMPUTER UNIVERSITAS INDONESIA
Tutorial Abstract
Behavioral Specification
(ABS)
RSE Training - A New Approach in Modeling Requirement Changes
Jumat, 8 Januari 2016
Daftar Isi
1.
Instalasi ................................................................................................................................................. 3

Eclipse ............................................................................................................................................... 3

Eclipse Plugin – ABS Tool .................................................................................................................. 3
2.
Membuat ABS Model pada Eclipse ....................................................................................................... 4
3.
Membuat Core ABS Module ................................................................................................................. 5
4.
Menjalankan ABS Model ..................................................................................................................... 10
2
1. Instalasi
Note : Anda dapat mengabaikan bagian ini, karena pada PC Lab sudah ter- install eclipsemodelling-luna. Anda dapat membukanya melalui shortcut pada Dekstop. Ada dua
aplikasi eclipse pada Desktop, maka pastikan aplikasi yang Anda buka adalah eclipsemodelling bukan eclipse biasa. Jika tidak ada, anda dapat membuka aplikasi dengan
melalui C:/eclipse-modelling/eclipse/eclipse.exe
 Eclipse
Untuk pelatihan ini, IDE yang digunakan adalah Eclipse dan disarankan menggunakan Eclipse
modeling tools versi Luna. Untuk mengunduhnya silahkan menuju link berikut:
https://eclipse.org/downloads/packages/eclipse-modeling-tools/lunar
Kemudian pilih versi yang sesuai
 Eclipse Plugin – ABS Tool
Untuk menginstall plugin ABS di Eclipse, silahkan mengikuti langkah-langkah berikut:
Eclipse  Menu Help  Install New Software  Pilih Add  Masukkan Alamat update site ABS
Tool (http://tools.hats-project.eu/update-site)  Pilih 4 komponen pertama dari ABS untuk
diinstal (seperti gambar di bawah ini)  Klik Next  Next  Finish
3
2. Membuat ABS Model pada Eclipse
Setelah melakukan instalasi plugin ABS pada Eclipse, kita dapat membuat ABS model dan
menjalankan model tersebut.
Langkah-langkah:
1. Open Perspective ABS dengan membuka Menu Window  Open Perspective  Pilih
Other…  Klik ABS. Setelah itu akan muncul menu dari ABS plugin, yang terdiri dari
Generate Maude Code, Execute Model (Maude), Generate Java Code, Debug Model (Java),
dan Start SDEdit (Java).
4
2. Buat project ABS baru. Pilih menu New  Other  ABS  ABS Project. Klik Next
Masukkan nama Project, misal AccountABS. Klik Finish
3. Buat modul ABS baru. Klik kanan pada project AccountABS, pilih menu New  ABS Module
(New File). Masukkan nama file, misal Account.abs. Klik Finish.
3. Membuat Core ABS Module
Core ABS Module terdiri dari beberapa komponen, antara lain:
1. Module
Pembuatan Core ABS module dimulai dengan pembuatan nama module. Tambahkan kode
berikut ke dalam file Account.abs.
Contoh:
module Account;
export *;
import Customer,CorpIndvCustomerImpl from CustomerIF;
Statement Import digunakan untuk menggunakan class-class yang didefinisikan di module
lain sedangkan statement Export digunakan agar class-class pada modul tersebut dapat
digunakan modul lain juga.
2. Interface
Interface di ABS mirip dengan interface di Java, memiliki nama dan dapat mengextend
interface lainnya. Body dari interface terdiri dari deklarasi method dimana nama setiap
method diawali dengan huruf kecil. Setiap kelas pada ABS harus memiliki satu interface
Berikut adalah contoh interface pada ABS. Silakan tambahkan juga kode berikut kedalam
Account.abs
5
interface
Int
Int
Int
}
Account {
getAid();
deposit(Int x);
withdraw(Int x);
3. Class
Class pada ABS harus mengimplementasi paling tidak satu interface. ABS tidak mengenal
konsep class inheritance, konsep tersebut digantikan dengan konsep delta modeling. Class
pada ABS tidak memiliki constructor tetapi class-nya memiliki parameter. Berikut adalah
contoh dari impelementasi class pada ABS.
class AccountImpl(Int aid, Int balance, Customer owner) implements
Account { // Core Product
Int getAid() { return aid; }
Int deposit(Int x) { balance = balance + x; return balance;}
Int withdraw(Int y) {
if (balance - y >= 0) {
balance = balance - y;
}
return balance;
}
}
Tambahkan kode diatas ke dalam Account.abs
4. Atribut
Berikut adalah beberapa tipe data yang dikenal oleh ABS :
o Bool = True | False
Tipe data Boolean dengan nilai dapat berupa true atau false
o Unit
Tipe data yang tidak mengembalikan nilai (mirip dengan void di Java)
o Int
Tipe data integer berupa bilangan bulat
o Rat
Tipe data rational berupa bilangan rasional
o String
Sama dengan tipe data String yang umumnya dikenal di bahasa seperti Java
o Fut<T>
Tipe data future, yang tidak bisa secara eksplisit dikonstruksi dan hasil dari pemanggilan
metod secara asinkronus. Nilai dari future hanya dapat diperoleh dengan menggunakan
ekspresi get.
o List<A> = Nil | Cons(A, List<A>)
Tipe data list dengan Nil menandakan list kosong
6
5. Method
Method pada ABS memiliki nama, parameter, dan return type.
 Pemanggilan Method
Ada dua jenis pemanggilan method yang dikenal di ABS, synchronous atau
asynchronous. Untuk pemanggilan method secara synchronous sama dengan
pemanggilan method biasa di Java, yaitu namaObject.namaMethod. Contoh:
Bool b = x.m(5);
Untuk pemanggilan method secara asynchronous dapat dilakukan dengan sintaks
namaObject!namaMethod. Return type dari Method Asynchronous disimpan di variable
dengan statement Fut. Contoh:
Fut<Bool> f = x!m(5);
Untuk mendapatkan nilai dari sebuah future variable, dapat menggunakan sintaks get.
Task yang sedang berjalan diblok hingga nilai future dapat diperoleh. Sementara itu,
tidak ada task lain dalam COG yang dapat dijalankan. Contoh:
Bool b = f.get;
Pada asynchronous method call, terdapat statement await untuk menunda task yang
sedang berjalan hingga statements selanjutnya (guard) bernilai true. Task tidak ditunda
jika guardnya telah bernilai true. Saat task sedang ditunda, task lain akan dikerjakan
terlebih dahulu.
Fut<Bool> f = x!m();
await f?;
await this.x == True;
await f? & this.y > 5;

Main Method
Main Method ditandai dengan block yang diawali dan diakhiri dengan kurung
kurawal ({}). Pada main method ini dapat dibuat object baru dengan statement
New. Statement new membuat sebuah objek baru dari sebuah nama class dan
argument. Objek di ABS dapat dibuat dengan dua cara. Cara pertama adalah
menciptakan objek dalam COG yang sama yaitu menggunakan statement new dan
7
menciptakan objek dalam COG yang berbeda yaitu menggunakan statement new
cog.
Contoh:
{
Customer c = new local CorpIndvCustomerImpl(17);
Account a = new AccountImpl(1,1,c);
Fut<Int> dep = a!deposit(100);
Fut<Int> withd = a!withdraw(10);
await dep? & withd?;
Int deposit = dep.get;
Int withdraw = withd.get;
Int net = deposit+withdraw;
}
Silakan tambahkan juga kode diatas ke dalam Account.abs
6. Comment
// this is a comment
module A; // this is also a comment
/ *this
is a multiline
comment* /
Jika Anda megikuti langkah-langkah diatas dengan benar maka module Account.ABS akan
terlihat seperti dibawah ini.
8
module Account;
export *;
import Customer,CorpIndvCustomerImpl from CustomerIF;
interface
Int
Int
Int
}
Account {
getAid();
deposit(Int x);
withdraw(Int x);
class AccountImpl(Int aid, Int balance, Customer owner) implements
Account { // Core Product
Int getAid() { return aid; }
Int deposit(Int x) { balance = balance + x; return balance;}
Int withdraw(Int y) {
if (balance - y >= 0) {
balance = balance - y;
}
return balance;
}
}
{
Customer c = new local CorpIndvCustomerImpl(17);
Account a = new AccountImpl(1,1,c);
Fut<Int> dep = a!deposit(100);
Fut<Int> withd = a!withdraw(10);
await dep? & withd?;
Int deposit = dep.get;
Int withdraw = withd.get;
Int net = deposit+withdraw;
}
Lengkapi module Account.abs dengan module CustomerData.abs dan Customer.abs yang
tersedia di http://fmse.cs.ui.ac.id/?open=event/abs/2016-material. Silakan copy dua file
tersebut kedalam project AccountABS. Sehingga Project Explorer AccountABS terlihat
seperti gambar berikut.
9
4. Menjalankan ABS Model
Setelah membuat Core ABS model, module tersebut dapat dijalankan dengan langkah sebagai
berikut:
1. Klik ikon
Generate Java Code pada toolbar ABS Plugin. Setelah dijalankan akan muncul
folder gen pada project AccountABS yang berisi hasil generated Java Code.
2. Klik ikon
Debug Model (Java) pada toolbar ABS Plugin untuk melakukan debug dari hasil
generated Java Code. Klik
menjalankan eksekusi per step.
3. Untuk melihat visualisasi dari proses debug Java Model, dapat me-klik ikon
(Java) pada toolbar ABS plugin.
Contoh sequence diagram yang dihasilkan adalah seperti di bawah ini.
Start SDEdit
10
Download