• Tidak ada hasil yang ditemukan

Tutorial SPL in ABS - RSE - Fasilkom UI - Universitas Indonesia

N/A
N/A
Protected

Academic year: 2023

Membagikan "Tutorial SPL in ABS - RSE - Fasilkom UI - Universitas Indonesia"

Copied!
9
0
0

Teks penuh

(1)

LABORATORIUM FORMAL METHODS IN SOFTWARE ENGINEERING (FMSE) FAKULTAS ILMU KOMPUTER UNIVERSITAS INDONESIA

Tutorial SPL in ABS

FMSE Training – A New Approach in Modeling Requirement Changes

8 Januari 2016

(2)

1

Daftar Isi

1. Membuat SPL di ABS ... 2

 Core Module ... 2

 Feature Model ... 3

 Delta Modeling ... 4

 ProductConfiguration ... 5

 Product Selection ... 6

2. Menjalankan SPL di ABS ... 6

 Menjalankan Base Product ... 6

 Menjalankan Varian ProdukMenggunakan Delta ... 7

(3)

2

1. Membuat SPL di ABS

Untuk membuat SPL di ABS terdapat 5 langkah yang perlu dilakukan:

Core Module

Langkah pertama yang diperlukan adalah membuat base product yang nantinya produk-produk lain dibuat dengan memodifikasi base product menggunakan delta. Pada tutorial kali ini, akan digunakan kembali module Account yang telah ada pada tutorial sebelumnya. Seluruh source

code pada tutorial ini dapat Anda download pada

http://fmse.cs.ui.ac.id/?open=event/abs/2016-material kemudian download Full- AccountABS.zip

Silakan pahami source code dengan mengikuti langkah-langkah pada tutorial ini.

module Account;

export *;

import Customer,CorpIndvCustomerImpl from CustomerIF;

interface Account { Int getAid();

Int deposit(Int x);

Int 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;

}

(4)

3

Feature Model

Feature model dari Account dapat Anda lihat pada FeatureModel.abs. Adapun bentuk diagramnya dapat dilihat pada gambar berikut.

Gambar lingkaran di atas persegi menandakan bahwa fitur tersebut optional. Sementara kotak yang diwarnai menandakan parameter dan batasan dari fitur. Untuk fitur Type, gambar menyatakan bahwa fitur yang dapat dipilih hanya satu yaitu Check atau Save.

Grup dari fitur dapat dibedakan menjadi inclusive (group allof) atau alternative (group oneof) .Dalam sebuah grup terdapa tcomma-separated list dari deklarasi fitur. Setiap deklarasi fitur dapat berupa optional (opt) dan memiliki batasan (ifin:), exclusions (exclude:) atau requires terhadap fitur lain (require:).

Representasi teks dari gambar tersebut dapat dilihat di bawah ini.

Manfaat utama dari feature model terasa saat mendefinisikan produk baru. Feature model akan mencegah terealisasikannya produk baru yang menyalahi feature model.

root Account { group allof {

Type {

Group oneof {

Check {ifin: Type.i == 0;},

Save {ifin: Type.i> 0; exclude: Overdraft;}

} Inti;

},

opt Fee {Int amount in [0..5];}, opt Overdraft

} }

(5)

4

Delta Modeling

Pada ABS, produk-produk baru dalam SPL direalisasikan dengan mengaplikasikan delta ke coreproduct.

Delta pada ABS dapat menambah, menghapus atau memodifikasi class dan interface. Modifikasi yang diizinkan antara lain:

 Menambah dan menghapus field/variabel

 Menambah, menghapus dan memodifikasi method

 Menambah interfaceyang diimplementasi Contoh dari delta dapat dilihat pada DFee.abs

Pada contoh di atas terdapat method original. Method ini memanggil versi asli dari method yang dimodifikasi (dalam hal ini method deposit).

Untuk memodifikasi nilai dari field atau variabel, cara yang dapat dilakukan adalah menghapusnya terlebih dahulu lalu kemudian menambahkan kembali dengan nilai yang berbeda. Contohnya seperti ilustrasi berikut dengan delta DSave pada file DSave.abs.

Delta ini memodifikasi nilai interest pada classAccountImpl dengan cara yang telah disebutkan sebelumnya seperti pada gambar berikut ini.

Delta DFee (Int fee); // Implements feature Fee uses Account;

modifies class AccountImpl {

modifies Int deposit(Int x) { Intresult = x;

if (x>=fee) result = original(x-fee);

return result;

}

deltaDSave (Int i);

usesAccount;

modifiesclass AccountImpl { removesIntinterest;

addsIntinterest = i;

}

(6)

5

ProductConfiguration

Contoh product configuration pada AccountABS dapat dilihat pada AccountPL.abs

Padaproduct configuration terdapat tigabagian yang penting yaitu:

Application condition (klausa when) yang menandakanfitur yang direalisasikan oleh delta dan memicu aplikasi dari delta.

Parameter delta yang mengikuti atribut fitur.

 Urutan aplikasi delta (klausa after) untukmenjaga agar tidak terjadi konflik antar delta.

Productline Accounts;

featuresFee, Overdraft, Check, Save, Type;

delta DType(Type.i) when Type;

delta DFee(Fee.amount) when Fee;

delta DOverdraft after Dcheck when Overdraft;

delta DSave(Type.i) after DType when Save;

delta Dcheck after Dtype when Check;

(7)

6

Product Selection

Langkah terakhir adalah product selection yang contohnya terdapat di bawah ini. Dapat Anda lihat pada Products.abs

Untuk membuat produk cukup menuliskan fitur-fitur yang direalisasikan di dalamnya dan menyatakan nilai pada delta/fitur yang membutuhkan parameter.

2. Menjalankan SPL di ABS

Ada duajenislangkah yang dapatdilakukanuntukmenjalankan SPL di ABS

Menjalankan Base Product

Eclipse  Menu RunRun Configurations…Pilih ABS Java BackendNew_configuration

Untuk ABS Project pilih Nama Project yang ingin dijalankan (contoh Test)Untuk ABS Product pilih<base>Untuk Run Target pilih AccountPilih draw sequence diagram jika ingin melihat sequence diagram ApplyRun

// basic product

product CheckingAccount (Type{i=0},Check);

// Account with Fee and parameter

product AccountWithFee (Type{i=0},Check,Fee{amount=1});

// Account with overdraft

product AccountWithOverdraft (Type{i=0},Check,Overdraft);

// should be refused

product SavingAccountWithOverdraft (Type{i=1},Save,Overdraft);

(8)

7

Menjalankan Varian ProdukMenggunakan Delta

Caranya hamper serupa dengan menjalankan core product namun pada pilihan ABS Product, pilihlah sesuai dengan produk yang diinginkan.Untukselanjutnya, akan dijalankan produk AccountWithFee.

(9)

8 Perbedaan dengan core product dapat dilihat saat proses debugging, nilai deposit menjadi 99

berbeda dengan core product yang menghasilkan 100. Hal ini terjadi karena delta mengubah method deposit.

Referensi

Dokumen terkait

David Tripe Centre for Banking Studies Massey University Palmerston North Phone: +64 6 350-5799 ext 2337 Fax: +64 6 350-5651 Draft version : December 2001 Abstract: This