Bab III Usulan Metode dan Rekayasa Domain … Bab III Usulan Metode dan Rekayasa Domain Penjadwalan...

39
27 Bab III Usulan Metode dan Rekayasa Domain Penjadwalan III.1 Usulan Metode Pembangunan Framework ANALISIS DOMAIN DOMAIN PERSOALAN PERANCANGAN DOMAIN IMPLEMENTASI DOMAIN MODEL FITUR : 1. Diagram Fitur 2. Kesamaan dan keberagaman 3. Aspek konfigurasi ARSITEKTUR FRAMEWORK : 1. Frozen spot 2. Hot-spot 3. Domain Specific Language IMPLEMENTASI FRAMEWORK : 1. Implementasi frozen dan hot spot. 2. Implementasi DSL. 3. Implementasi komponen- komponen emplementer. Gambar III.1 Usulan metode pembangunan framework Usulan metode pembangunan framework yang diajukan yaitu dengan menggunakan rekayasa domain (domain engineering). Rekayasa domain berbeda dengan rekayasa aplikasi dimana rekayasa aplikasi ditujukan hanya untuk membangun aplikasi tunggal sedangkan rekayasa domain ditujukan untuk pembangunan keluarga sistem (family of system) dalam suatu domain. Framework adalah aplikasi setengah jadi yang dapat digunaulang dan dikhususkan untuk

Transcript of Bab III Usulan Metode dan Rekayasa Domain … Bab III Usulan Metode dan Rekayasa Domain Penjadwalan...

Page 1: Bab III Usulan Metode dan Rekayasa Domain … Bab III Usulan Metode dan Rekayasa Domain Penjadwalan III.1 Usulan Metode Pembangunan Framework ANALISIS DOMAIN DOMAIN PERSOALAN PERANCANGAN

27

Bab III

Usulan Metode dan Rekayasa Domain Penjadwalan

III.1 Usulan Metode Pembangunan Framework

ANALISIS DOMAIN

DOMAIN PERSOALAN

PERANCANGAN DOMAIN

IMPLEMENTASI DOMAIN

MODEL FITUR :1. Diagram Fitur2. Kesamaan dan keberagaman3. Aspek konfigurasi

ARSITEKTUR FRAMEWORK :1. Frozen spot2. Hot-spot3. Domain Specific Language

IMPLEMENTASI FRAMEWORK :1. Implementasi frozen dan hot

spot.2. Implementasi DSL.3. Implementasi komponen-

komponen emplementer.

Gambar III.1 Usulan metode pembangunan framework

Usulan metode pembangunan framework yang diajukan yaitu dengan

menggunakan rekayasa domain (domain engineering). Rekayasa domain berbeda

dengan rekayasa aplikasi dimana rekayasa aplikasi ditujukan hanya untuk

membangun aplikasi tunggal sedangkan rekayasa domain ditujukan untuk

pembangunan keluarga sistem (family of system) dalam suatu domain. Framework

adalah aplikasi setengah jadi yang dapat digunaulang dan dikhususkan untuk

Page 2: Bab III Usulan Metode dan Rekayasa Domain … Bab III Usulan Metode dan Rekayasa Domain Penjadwalan III.1 Usulan Metode Pembangunan Framework ANALISIS DOMAIN DOMAIN PERSOALAN PERANCANGAN

28

menghasilkan bermacam-macam aplikasi dalam suatu domain. Karena itu

framework tidak dibangun dengan rekayasa yang spesifik untuk satu jenis aplikasi

melainkan framework mencakup sebuah domain dan diperlukan rekayasa domain

untuk membangun framework tersebut.

Rekayasa domain untuk pembangunan framework ditujukan untuk menghasilkan

framework yang memenuhi kebutuhan domain dan dapat digunaulang dalam

lingkup domain tersebut. Rekayasa domain untuk membangun framework terdiri

dari tahapan berikut :

1. Analisis domain

Analisis domain dalam pembangunan framework menggunakan

pemodelan fitur, pemodelan fitur dipilih dengan alasan berikut :

a) Pemodelan fitur menggambarkan konsep. Konsep disini tidak memiliki

semantik yang didefinisikan sehingga konsep bisa berupa apapun.

Karena itu sangat cocok menggunakan pemodelan fitur untuk

menggambarkan elemen-elemen dan struktur-struktur yang terdapat

dalam domain, dan bukan hanya objek-objek.

b) Model fitur yang dihasilkan oleh pemodelan fitur akan

menggambarkan kesamaan (commonalities) dan keberagaman

(variabilities) dari sebuah domain sehingga akan memudahkan dalam

mengidentifikasi hot-spot pada langkah selanjutnya.

c) Pemodelan fitur tidak memerlukan semantik seperti halnya model

objek sehingga lebih mudah bagi seorang pakar domain yang tidak

memahami mengenai kelas, objek, pewarisan, design pattern dsb.

Hasil utama dari tahap analisis domain adalah model fitur yang

menyatakan kesamaan dan keberagaman serta aspek konfigurasi yang ada

dalam sebuah domain, kesamaan dan keberagaman ini diekspresikan

menggunakan diagram fitur.

2. Perancangan domain

Setelah model fitur di dapatkan dari hasil analisis domain, maka model

fitur tersebut digunakan untuk membentuk frozen/hot spot dalam

framework, dengan bantuan kartu hot-spot (hot spot card). Selain itu

Page 3: Bab III Usulan Metode dan Rekayasa Domain … Bab III Usulan Metode dan Rekayasa Domain Penjadwalan III.1 Usulan Metode Pembangunan Framework ANALISIS DOMAIN DOMAIN PERSOALAN PERANCANGAN

29

dalam tahap ini dihasilkan bahasa spesifik domain (Domain Specific

Language /DSL) dari domain tersebut. DSL ini adalah bahasa yang

digunakan untuk mengkonfigurasi framework. Dengan DSL maka

penggunaan framework menjadi lebih mudah dan cepat

3. Implementasi domain

Pada tahap ini dilakukan implementasi terhadap frozen/hot spot dalam

framework serta mengimplementasi DSL. Selain itu komponen-komponen

implementer dari framework juga diimplemetasikan.

III.2 Rekayasa Domain Penjadwalan

Pada tahap ini akan dilakukan rekayasa domain terhadap domain penjadwalan.

Rekayasa domain akan terdiri dari tiga tahap yaitu analisis domain, perancangan

domain dan implementasi domain.

III.2.1 Analisis Domain

Analisis domain melibatkan penetapan lingkup, menganalisis kesamaan,

keberagaman, dan kebergantungan di dalam satu keluarga sistem, dan

pengembangan kebutuhan-kebutuhan yang dapat dikonfigurasi dan digunaulang.

Analisis domain akan dilakukan dengan menggunakan pemodelan fitur, dimana

konsep penjadwalan akan di dekomposisi menjadi fitur-fitur dan digambarkan

kedalam diagram fitur.

1. Job

Job adalah fitur yang terdapat pada konsep penjadwalan, Job adalah entitas

yang akan dijadwalkan. Sebuah Job dapat terdiri dari satu atau lebih

Operation. Job dengan satu Operation dinamakan Mono Operation Job dan

Job yang terdiridari lebih dari satu Operation di sebut Multi Operation Job.

Job merupakan fitur mandatory pada konsep penjadwalan. Berikut adalah

diagram fitur Job :

Tabel III.1 Tabel Fitur Job

No Fitur Deskripsi 1. Job Job adalah entitas yang akan dijadwalkan yang terdiri dari Operation. 2. Operation Operation adalah entitas yang terdapat dalam Job yang mempunyai

properti-properti yang akan dijadwalkan.

Page 4: Bab III Usulan Metode dan Rekayasa Domain … Bab III Usulan Metode dan Rekayasa Domain Penjadwalan III.1 Usulan Metode Pembangunan Framework ANALISIS DOMAIN DOMAIN PERSOALAN PERANCANGAN

30

Gambar III.2 Diagram fitur Job

Page 5: Bab III Usulan Metode dan Rekayasa Domain … Bab III Usulan Metode dan Rekayasa Domain Penjadwalan III.1 Usulan Metode Pembangunan Framework ANALISIS DOMAIN DOMAIN PERSOALAN PERANCANGAN

31

Tabel III.1 Tabel Fitur Job (lanjutan)

No Nama Fitur

Deskripsi

4. Multi Operation Job

Multi-Operation Job adalah Job yang memiliki lebih dari satu Operation yang akan dijadwalkan.

5. Preemptable Operation

Preemptable Operation adalah Operation yang dapat di interupsi oleh Operationyang lain saat di jalankan.

6. Non-Preemptable Operation

Non-Preemptable Operation adalah Operation yang tidak dapat di interupsi oleh Operation yang lain saat di jalankan.

7. Cost Cost adalah nilai beban dari Operation 8. Benefit Benefit adalah nilai keuntungan dari Operation jika mempertimbangkan

faktor Precendence. 9. Deadline

time Deadline time adalah batas waktu penyelesaian dari Operation

10. Release time Release time adalah waktu Operation diselesaikan 11. Start time Start time adalah waktu Operation dimulai 12. Due date Due date adalah waktu yang ditujukan selesainya Operation. 13. Processing

time duration

Processing time duration adalah jumlah waktu untuk penyelesaian Operation

14. Setup time duration

Processing time duration adalah jumlah waktu untuk menyiapkan Operation sebelum di proses.

Tabel III.1 menunjukkan daftar fitur-fitur dan subfitur-subfitur yang terdapat pada

Job.

2. Model Penjadwalan.

Model Penjadwalan adalah properti-properti yang mendefinisikan

penjadwalan itu sendiri. Perilaku sebuah instan dari penjadwalan akan

bergantung dari Model Penjadwalan yang dimilikinya. Sebuah instan dari

penjadwaan harus memiliki fitur Model Penjadawalan ini. Model Penjadwalan

dapat dibagi lagi menjadi tiga subfitur yaitu Alpha, Beta, dan Gamma.

1. Alpha

Alpha adalah fitur yang mendefinisikan tipe dari penjadwalan. Tipe

penjadwalan dapat berupa penjadwalan dengan single machine, multiple

machine, flowshop, openshop dan sebagainya. Alpha adalah fitur yang

sifatnya mandatory.

2. Beta

Beta adalah fitur yang mendefinisikan konstrain-konstrain yang ada pada

penjadwalan.Konstrain-konstrain dalam penjadwalan terbagi atas dua

Page 6: Bab III Usulan Metode dan Rekayasa Domain … Bab III Usulan Metode dan Rekayasa Domain Penjadwalan III.1 Usulan Metode Pembangunan Framework ANALISIS DOMAIN DOMAIN PERSOALAN PERANCANGAN

32

bagian yaitu konstrain mengenai ada urutan (precedence) yang harus

ditaati pada Operation, serta konstrain mengenai kumpulan (batch) yang

mungkin ada pada Operation.

3. Gamma

Gamma adalah fitur yang mendefinisikan kriteria-kriteria optimasi pada

penjadwalan. Terdapat beberapa kriteria optimasi pada penjadwalan antara

lain :

a. Meminimasi completion time

b. Meminimasi maksimum lateness.

c. Meminimasi maksimum earliness.

d. Meminimasi maksimum promptness, dan sebagainya.

Gamma adalah fitur yang sifatnya mandatory.

Tabel III.2 Tabel fitur Model Penjadwalan Alpha

No Nama Fitur

Deskripsi

1. Model Penjadwalan

Model penjadwalan adalah properti-properti yang mendefinisikan masalah penjadwalan.

2. Alpha Alpha adalah properti yang mendefisikan tipe penjadwalan 3 Jumlah

Maksimum Mesin

Jumlah Maksimum Mesin adalah jumlah maksimum mesin yang akan digunakan.

4. Single Machine

Single Machine mendefinisikan tipe penjadwalan dengan mesin tunggal

5. Identical Parallel machine

Identical Parallel Machine mendefinisikan tipe penjadwalan dengan beberapa mesin identik dengan susunan paralel.

6. Uniform Parallel machine

Uniform Parallel Machine mendefinisikan tipe penjadwalan dengan beberapa mesin seragam dengan susunan paralel.

7. Unrelated Parallel machine

Unrelated Parallel Machine mendefinisikan tipe penjadwalan dengan beberapa mesin yang tidak saling berhubungan dengan susunan paralel.

8. Flow Shop Flow Shop adalah pengaturan dimana terdapat sejumlah mesin di shop, dan job menggunakan mesin dengan urutan sama, job mempunyai routing yang sama

9. Job shop Job Shop adalah pengaturan dimana beberapa mesin tersedia di shop dan masing-masing job mempunyai route nya sendiri.

10. Open shop Open Shop adalah pengaturan dimana beberapa mesin tersedia di shop. Job-job tidak mempunyai routing yang tetap. Job-job dapat menggunakan mesin-mesin dengan sembarang urutan.

11. Mixed Shop Job Shop adalah pengaturan dimana beberapa mesin tersedia di shop. Beberapa job mempunyai routing sendiri dan lainnya tidak.

Page 7: Bab III Usulan Metode dan Rekayasa Domain … Bab III Usulan Metode dan Rekayasa Domain Penjadwalan III.1 Usulan Metode Pembangunan Framework ANALISIS DOMAIN DOMAIN PERSOALAN PERANCANGAN

33

ModelPenjadwalan

Penjadwalan

Alpha Beta Gamma

SingleMachine

IdenticalParallelMachine

FlowShop

JobShop

OpenShop

MixedShop

ProportionalParallelMachine

UnrelatedParallelMachine

…... …...

MaximumMachine

SequencerJobAlgortima

Penjadwalan

…... …... …...

Gambar III.3 Diagram fitur Alpha

Page 8: Bab III Usulan Metode dan Rekayasa Domain … Bab III Usulan Metode dan Rekayasa Domain Penjadwalan III.1 Usulan Metode Pembangunan Framework ANALISIS DOMAIN DOMAIN PERSOALAN PERANCANGAN

34

Gambar III.4 Diagram fitur Beta

Page 9: Bab III Usulan Metode dan Rekayasa Domain … Bab III Usulan Metode dan Rekayasa Domain Penjadwalan III.1 Usulan Metode Pembangunan Framework ANALISIS DOMAIN DOMAIN PERSOALAN PERANCANGAN

35

Gambar III.5 Diagram fitur Gamma

Page 10: Bab III Usulan Metode dan Rekayasa Domain … Bab III Usulan Metode dan Rekayasa Domain Penjadwalan III.1 Usulan Metode Pembangunan Framework ANALISIS DOMAIN DOMAIN PERSOALAN PERANCANGAN

36

Tabel III.3 Tabel fitur Model Penjadwalan Beta

No Nama Fitur

Deskripsi

1. Beta Beta adalah konstrain-konstrain dari masalah penjadwalan. 2. Precedence Precedence adalah konstrain pada operasi yang menyatakan pengurutan

operasi berdasarkan kepentingan atau rangkaian. 3. Chain Chain adalah konstrain precendence antara operation yang membentuk

sekumpulan rantai (chain). 4. Tree Tree adalah konstrain precendence antara operation yang membentuk

sekumpulan pohon (tree). 5. In-Tree In-tree adalah konstrain precendence antara operation yang membentuk

sekumpulan in-tree 6. Out-tree Out-tree adalah konstrain precendence antara operation yang

membentuk sekumpulan out-tree 7. Serial

Parallel Graph

Serial Parallel Graph adalah konstrain precendence antara operation yang membentuk sekumpulan serial parallel graph.

8. Batch Batch adalah konstrain yang menyatakan pengelompokan sejumlah operasi dalam sebuah grup eksekusi (batch).

9. Serial Batch Serial batch adalah pengelompokan operasi kedalam batch-batch yang nantinya diproses secara serial dalam setiap batch.

10. Parallel Batch

Parallel batch adalah pengelompokan operasi kedalam batch-batch yang nantinya diproses secara parallel dalam setiap batch.

Tabel III.4 Tabel fitur Model Penjadwalan Gamma

No Nama Fitur

Deskripsi

1. Gamma Gamma adalah kriteria yang dioptimasi dalam penjadwalan. 2. Make Span Make span adalah optimasi dengan meminimasi completion time. 3. Minimax

Lateness Minimax Lateness adalah optimasi dengan meminimasi maksimum lateness dari job.

4. Minimax Earliness

Minimax Earliness adalah optimasi dengan meminimasi maksimum earliness dari job.

5.

Minimax Flowtime

Minimax Flowtime adalah optimasi dengan meminimasi maksimum flowtime dari job.

6 Minimax Promptness

Minimax Promptness adalah optimasi dengan meminimasi maksimum promptness dari job.

7. Minisum Average Completion

Minisum Average Completion adalah optimasi dengan meminimasi hasil penjulmlahan (sum) dari average completion.

8. Minisum Average Weighted Completion

Minisum Average Weighted Completion adalah optimasi dengan meminimasi hasil penjulmlahan dari average weighted completion.

9. Minisum Total completion

Minisum Total completion adalah optimasi dengan meminimasi hasil penjulmlahan dari total completion.

10. Minisum Average Tardiness

Minisum Average Tardiness adalah optimasi dengan meminimasi hasil penjulmlahan dari average tardiness.

11. Minisum Average Earliness

Minisum Average Earliness adalah optimasi dengan meminimasi hasil penjulmlahan dari average earliness.

Page 11: Bab III Usulan Metode dan Rekayasa Domain … Bab III Usulan Metode dan Rekayasa Domain Penjadwalan III.1 Usulan Metode Pembangunan Framework ANALISIS DOMAIN DOMAIN PERSOALAN PERANCANGAN

37

Tabel III.2, tabel III.3, dan tabel III.4 menunjukkan daftar fitur-fitur dan

subfitur-subfitur yang terdapat pada Model Penjadwalan.

3. Algoritma Penjadwalan.

Model Penjadwalan mendefinisikan algortima yang digunakan dalam

melakukan penjadwalan terhadap Job yang ada. Ada beberapa algortima yang

umum digunakan dalam penjadwalan seperti Lawler Algorithm, Moore

Algorithm, Johnson Algorithm, dan sebagainya.

Tabel III.5 Tabel fitur Algoritma Penjadwalan

No Nama Fitur

Deskripsi

1. Algortima Penjadwalan

Algortima Penjadwalan adalah algortima yang digunakan untuk menjadwalkan operasi-operasi pada Job.

3. Lawler Algorithm

Algortima Lawler untuk menyelesaikan masalah 1|prec|fmax

4. Moore Algorithm

Algortima Moore untuk menyelesaikan masalah 1|du|U

5. Johnson Algorithm

Algortima Johnson untuk menyelesaikan masalah F2|prmu|Cmax

6. Campbell Algorithm

Algortima Campbell untuk menyelesaikan masalah F|prmu|Cmax

7. Nawaz Algorithm

Algortima Nawaz untuk menyelesaikan masalah F|prmu|Cmax

8. Sahni Algorithm

Algortima Sahni untuk menyelesaikan masalah P|pmtn,di|fmax

9. Algortima Custom

Algoritma Custom adalah algortima dengan implementasi custom.

Tabel III.5 menunjukkan daftar fitur-fitur dan subfitur-subfitur yang terdapat

pada Algoritma Penjadwalan.

4. Sequencer.

Sequencer adalah pengurutan Operation pada sebuah Job berdasarkan nilai

dari suatu attribut tertentu. Sequencer dapat didasarkan atas nilai due date,

release time, start time, deadline time pada suatu Operation.

Page 12: Bab III Usulan Metode dan Rekayasa Domain … Bab III Usulan Metode dan Rekayasa Domain Penjadwalan III.1 Usulan Metode Pembangunan Framework ANALISIS DOMAIN DOMAIN PERSOALAN PERANCANGAN

38

Gambar III.6 Diagram fitur Algoritma

Page 13: Bab III Usulan Metode dan Rekayasa Domain … Bab III Usulan Metode dan Rekayasa Domain Penjadwalan III.1 Usulan Metode Pembangunan Framework ANALISIS DOMAIN DOMAIN PERSOALAN PERANCANGAN

39

Gambar III.7 Diagram fitur Sequencer

Page 14: Bab III Usulan Metode dan Rekayasa Domain … Bab III Usulan Metode dan Rekayasa Domain Penjadwalan III.1 Usulan Metode Pembangunan Framework ANALISIS DOMAIN DOMAIN PERSOALAN PERANCANGAN

40

Tabel III.6 Tabel fitur Sequencer

No Nama Fitur

Deskripsi

1. Sequencer Sequencer adalah pengurutan operasi dalam sebuah job berdasarkan nilai tertentu.

3. Due date sequencer

Due date sequencer mengurutkan operasi berdasarkan nilai due date nya.

4. Release time sequencer

Due date sequencer mengurutkan operasi berdasarkan nilai release time nya.

5. Start time sequencer

Due date sequencer mengurutkan operasi berdasarkan nilai start time nya.

6. Deadline time sequencer

Due date sequencer mengurutkan operasi berdasarkan nilai deadline nya.

7. Processing time duration sequencer

Due date sequencer mengurutkan operasi berdasarkan nilai processing time nya.

8. Setup time duration sequencer

Due date sequencer mengurutkan operasi berdasarkan nilai setup time nya.

9. Benefit weight sequencer

Due date sequencer mengurutkan operasi berdasarkan nilai benefit nya.

10. Sequencer Custom

Sequencer Custom adalah sequencer dengan implementasi custom.

Tabel III.6 menunjukkan daftar fitur-fitur dan subfitur-subfitur yang terdapat pada

Sequencer.

III.2.2 Perancangan domain

Untuk tahap perancangan domain akan dilakukan identifikasi hot-spot, perancangan

framework , dan perancangan DSL untuk framework.

III.2.2.1 Identifikasi Hot-Spot

Berdasarkan diagram fitur pada tahap analisis domain dapat di tentukan kesamaan dan

keberagaman yang ada pada domain Penjadwalan. Hot-spot merupakan titik-titik

variabilitas dari sebuah sistem. Sebuah fitur yang memiliki subfitur alternatif adalah

kandidat hot-spot karena subfitur alternatif mencerminkan variabilitas sistem.

Berikut beberapa hot-spot yang teridentifikasi adalah sebagai berikut :

Page 15: Bab III Usulan Metode dan Rekayasa Domain … Bab III Usulan Metode dan Rekayasa Domain Penjadwalan III.1 Usulan Metode Pembangunan Framework ANALISIS DOMAIN DOMAIN PERSOALAN PERANCANGAN

41

1. Job

Nama : Job

derajat fleksibilitas

adaptasi tanpa restart

adaptasi oleh end-user

Deskripsi :

Job adalah entitas yang akan dijadwalkan yang terdiri dari operation.

Variabilitas:

Job dapat dibagi menjadi 2 jenis yaitu : 1. Mono Operation Job 2. Multi Operation Job.

Gambar III.8 Kartu hot-spot Job

2. Operation

Nama : Operation

derajat fleksibilitas

adaptasi tanpa restart

adaptasi oleh end-user

Deskripsi :

Operation adalah entitas yang terdapat dalam job yang mempunyai properti-properti yang akan dijadwalkan. Variabilitas:

Operation memiliki properti ini yang akan menjadi dasar dalam penjadwalan operation tersebut, antara lain:

1. Cost 2. Benefit 3. Deadline Time 4. Release Time 5. Start Time 6. Due date 7. Processing Time Duration 8. Setup Time Duration

Operation dapat dibagi menjadi dua bagian yaitu : 1. Preemptable operation 2. Non-preempatble operation

Gambar III.9 Kartu hot-spot Operation

Page 16: Bab III Usulan Metode dan Rekayasa Domain … Bab III Usulan Metode dan Rekayasa Domain Penjadwalan III.1 Usulan Metode Pembangunan Framework ANALISIS DOMAIN DOMAIN PERSOALAN PERANCANGAN

42

3. Alpha

Nama : Alpha

derajat fleksibilitas

adaptasi tanpa restart

adaptasi oleh end-user

Deskripsi :

Alpha adalah properti yang mendefisikan tipe penjadwalan Variabilitas:

Alpha memiliki alternatif tipe sebagai berikut : 1. Single Machine 2. Parallel Machine

a. Identical Parallel Machine b. Uniform Parallel Machine c. Unrelated Parallel Machine

3. Flow Shop 4. Job Shop 5. Open Shop 6. Mixed Shop

Alpha juga memiliki properti Jumlah Maksimum Mesin yang harus ditetapkan.

Gambar III.10 Kartu hot-spot Alpha

4. Beta

Nama : Beta

derajat fleksibilitas

adaptasi tanpa restart

adaptasi oleh end-user

Deskripsi :

Beta adalah konstrain-konstrain dari masalah penjadwalan.

Variabilitas :

Beta memiliki properti : 1. Precedence, dengan alternatif

a. Chain b. Tree

i. In-Tree ii. Out-tree

c. Serial Parallel Graph 2. Batch, dengan alternatif

a. Serial Batch b. Parallel Batch

Gambar III.11 Kartu hot-spot Beta

Page 17: Bab III Usulan Metode dan Rekayasa Domain … Bab III Usulan Metode dan Rekayasa Domain Penjadwalan III.1 Usulan Metode Pembangunan Framework ANALISIS DOMAIN DOMAIN PERSOALAN PERANCANGAN

43

5. Gamma

Nama : Gamma

derajat fleksibilitas

adaptasi tanpa restart

adaptasi oleh end-user

Deskripsi :

Gamma adalah kriteria yang dioptimasi dalam penjadwalan.

Variabilitas:

Gamma memiliki properti sebagai berikut : 1. Make Span 2. Minimax Lateness 3. Minimax Earliness 4. Minimax Flowtime 5. Minimax Promptness 6. Minisum Average Completion 7. Minisum Average Weighted Completion 8. Minisum Total completion 9. Minisum Average Tardiness 10. Minisum Average Earliness

Gambar III.12 Kartu hot-spot Gamma

6. Precedence

Nama : Precedence

derajat fleksibilitas

adaptasi tanpa restart

adaptasi oleh end-user

Deskripsi :

Precedence adalah konstrain pada operasi yang menyatakan pengurutan operasi berdasarkan kepentingan atau rangkaian. Variabilitas:

Precedence memiliki alternatif tipe sebagai berikut : 1. Chain 2. Tree

a. In-Tree b. Out-tree

3. Serial Parallel Graph

Gambar III.13 Kartu hot-spot Precedence

Page 18: Bab III Usulan Metode dan Rekayasa Domain … Bab III Usulan Metode dan Rekayasa Domain Penjadwalan III.1 Usulan Metode Pembangunan Framework ANALISIS DOMAIN DOMAIN PERSOALAN PERANCANGAN

44

7. Batch

Nama : Batch

derajat fleksibilitas

adaptasi tanpa restart

adaptasi oleh end-user

Deskripsi :

Batch adalah konstrain yang menyatakan pengelompokan

sejumlah operasi dalam sebuah grup eksekusi (batch).

Variabilitas :

Batch memiliki alternatif : 1. Serial batch 2. Parallel batch

Batch terdiri dari beberapa batch elemen yang harus didefinisikan.

Gambar III.14 Kartu hot-spot Batch

8. Batch Element

Nama : Batch Element

derajat fleksibilitas

adaptasi tanpa restart

adaptasi oleh end-user

Deskripsi :

Batch elemen adalah sekumpulan operation yang

dikelompokan.

Variabilitas :

Batch elemen mendifinisikan operation yang termasuk di dalamnya baik itu penambahan, pengurangan, penghapusan dsb.

Gambar III.15 Kartu hot-spot Batch Element

9. Algoritma

Nama : Algortima

derajat fleksibilitas

adaptasi tanpa restart

adaptasi oleh end-user

Deskripsi :

Algortima Penjadawalan adalah algortima yang digunakan

untuk menjadwalkan operasi-operasi pada Job.

Page 19: Bab III Usulan Metode dan Rekayasa Domain … Bab III Usulan Metode dan Rekayasa Domain Penjadwalan III.1 Usulan Metode Pembangunan Framework ANALISIS DOMAIN DOMAIN PERSOALAN PERANCANGAN

45

Variabilitas:

Algortima mempunyai alternatif sebagai berikut : 1. Lawler Algorithm 2. Moore Algorithm 3. Johnson Algorithm 4. Campbell Algorithm 5. Nawaz Algorithm 6. Sahni Algorithm

Algoritma juga dapat diimplementasi dengan custom.

Gambar III.16 Kartu hot-spot Algoritma

10. Sequencer

Nama : Sequencer

derajat fleksibilitas

adaptasi tanpa restart

adaptasi oleh end-user

Deskripsi :

Sequencer adalah pengurutan operasi dalam sebuah job

berdasarkan nilai tertentu.

Variabilitas :

Sequencer mempunya alternatif sebagai berikut : 1. Due date sequencer 2. Release time sequencer 3. Start time sequencer 4. Deadline time sequencer 5. Processing time duration sequencer 6. Setup time duration sequencer 7. Benefit weight sequencer

Sequencer juga dapat diimplementasi dengan custom.

Gambar III.17 Kartu hot-spot Sequencer

III.2.2.2 Perancangan Framework

Setiap hot-spot yang diidentifikasi pada kartu hot-spot akan dirancang model

objeknya dalam sebuah diagram kelas mengikuti FCP. Derajat fleksibilitas adaptasi

tanpa restart akan menunjukkan hook method yang diimplementasi pada kelas

terpisah (separation principle) sedangkan adaptasi oleh end-user akan menunjukkan

bahwa hot-spot tersebut dapat dikonfigurasi menggunakan kakas eksternal dalam

DSL domain Penjadwalan. Implementasinya akan berupa file XML (Extensible

Markup Language) dengan skema tertentu.

Page 20: Bab III Usulan Metode dan Rekayasa Domain … Bab III Usulan Metode dan Rekayasa Domain Penjadwalan III.1 Usulan Metode Pembangunan Framework ANALISIS DOMAIN DOMAIN PERSOALAN PERANCANGAN

46

III.2.2.2.1 Perancangan Frozen-spot

Frozen-spot atau kernel adalah bagian yang relatif tetap dan tidak berubah pada

framework. Frozen-spot ini nantinya akan memanggil hot-spot yang didefinisikan

oleh pengguna framework. Berikut ini adalah diagram kelas dari frozen-spot.

Beberapa kelas utama dalam frozen-spot ini adalah :

1. Kelas SchedulingFramework

Kelas SchedulingFramework ini adalah inti dari framework

Penjadwalan. Pengguna akan menggunakan kelas ini untuk menjalankan

framework. Kelas ini mempunyai konstruktor dengan parameter nama file

XML yang akan digunakan sebagai DSL dari framework ini.

2. Kelas DSLParser

Kelas DSLParser ini adalah kelas yang berfungsi untuk melakukan parsing

terhadap file XML yang diberikan. Kelas ini akan memeriksa keabsahan

sintaks dan semantik dari XML yang diberikan dengan membandingkannya

dengan skema XML dari framework Penjadwalan.

3. Kelas Weaver

Kelas Weaver ini adalah kelas yang berfungsi untuk melakukan proses

perajutan kelas-kelas dari framework. Perajutan adalah proses dimana sebuah

kelas akan diinjeksikan kedalam kelas lain dengan teknologi reflection yang

dimiliki oleh bahasa pemrograman Java yang memungkinkan untuk

memodifikasi kelas pada saat runtime. Dengan melakukan perajutan kelas

maka kelas-kelas pada framework akan terangkai sesuai dengan DSL yang

dispesifikasikan oleh pengguna.

4. Kelas Executor

Kelas Executor ini adalah kelas yang berfungsi untuk mengeksekusi

framework setelah dilakukan proses perajutan. Kelas ini akan memanggil

metode-metode pada kelas koordinator masing-masing hot-spot.

Page 21: Bab III Usulan Metode dan Rekayasa Domain … Bab III Usulan Metode dan Rekayasa Domain Penjadwalan III.1 Usulan Metode Pembangunan Framework ANALISIS DOMAIN DOMAIN PERSOALAN PERANCANGAN

47

Gambar III.18 Diagram Kelas Frozen-Spot

5. Kelas JobCoordinator

Kelas JobCoordinator ini adalah kelas template dari hot-spot Job. Kelas

ini mengandung metode template processJob() yang akan memanggil

metode hook assignOperation() dan assignOperations() pada

hot-spot.

6. Kelas ModelCoordinator

Kelas ModelCoordinator ini adalah kelas template dari hot-spot Alpha,

Beta, dan Gamma. Kelas ini mengandung metode template

processModel() yang akan memanggil metode-metode hook pada hot-

spot.

Page 22: Bab III Usulan Metode dan Rekayasa Domain … Bab III Usulan Metode dan Rekayasa Domain Penjadwalan III.1 Usulan Metode Pembangunan Framework ANALISIS DOMAIN DOMAIN PERSOALAN PERANCANGAN

48

7. Kelas AlgorithmCoordinator

Kelas AlgorithmCoordinator ini adalah kelas koordinator dari hot-spot

Algortihm. Kelas ini mengandung metode template processAlgortihm()

yang akan memanggil metode hook executeAlgorithm() pada hot-spot.

8. Kelas SequencerCoordinator

Kelas SequencerCoordinator ini adalah kelas koordinator dari hot-spot

Sequencer. Kelas ini mengandung metode template processSequencer()

yang akan memanggil metode hook executeSequencer() pada hot-spot.

Gambar III.19 adalah diagram sekuen dari frozen-spot. Pengguna menginisiasi

framework melalui kelas SchedulingFramework dengan memasukkan parameter

file DSL dalam bentuk XML. File DSL ini kemudian akan di baca oleh kelas

DSLParser. Oleh DSLParser file ini akan di parsing berdasarkan file schema

yang ada. Jika proses parsing berhasil maka SchedulingFramework akan

melakukan proses weave yang akan dilakukan oleh kelas Weaver. Kelas Weaver ini

akan merajut kelas-kelas framework termasuk kelas-kelas hot-spot yang didefinisikan

oleh pengguna, dan juga akan meng-generate kelas-kelas yang diperlukan pada saat

runtime. Setelah proses weaving selesai maka ScedulingFramework akan

memanggil Executor yang akan melakukan eksekusi kelas-kelas framework sesuai

dengan konfigurasi. Executor akan memanggil JobCoordinator,

ModelCoordinator, Algortihm Coordinator, dan Sequence

Coordinator. Masing-masing kelas ini akan memanggil implementasi hot-spot

dari pengguna. Kemudian pengguna dapat mengakses hasi dari eksekusi berupa daftar

dari Operation yang telah dijadwalkan.

III.2.2.2.2 Perancangan Hot-spot

1. Job

Dalam framework Penjadwalan Job akan di definisikan ke dalam design pattern

Strategy (separation principle) dimana terdapat kelas-kelas yaitu

JobCoordinator, interface Job dan interface MonoOperation dan

MultiOperation. JobCoordinator adalah kelas dimana pemrosesan Job

akan dilakukan, kelas ini memiliki template method yaitu processJob().

Page 23: Bab III Usulan Metode dan Rekayasa Domain … Bab III Usulan Metode dan Rekayasa Domain Penjadwalan III.1 Usulan Metode Pembangunan Framework ANALISIS DOMAIN DOMAIN PERSOALAN PERANCANGAN

49

Gambar III.19 Diagram Sequence Frozen-Spot

Page 24: Bab III Usulan Metode dan Rekayasa Domain … Bab III Usulan Metode dan Rekayasa Domain Penjadwalan III.1 Usulan Metode Pembangunan Framework ANALISIS DOMAIN DOMAIN PERSOALAN PERANCANGAN

50

Metode processJob()ini akan memanggil hook method pada attribut job

atau dimana atribut ini adalah interface Job. Attribut job bisa bertipe

MonoOperation ataupun MultiOperation . Interface ini memiliki

hook method assignOperation() atau assignOperations().

Metode-metode ini nantinya akan diimplementasikan oleh kelas yang

mengimplementasi interface tersebut.

2. Operation

Operation adalah part of dari Job. Dalam framework Job dapat

diimplementasikan menjadi beberapa cara. Diagram kelas dibawah

menunjukkan bahwa Operation didefinisikan sebagai interface yang nantinya

akan diimplementasikan beserta metode-metode nya. Umumnya dalam instan

framework jumlah objek Operation ini jumlahnya banyak karena itu

mengimplementasikan setiap Operation kedalam kelas tersendiri tidak cocok,

karena itu framework juga dapat menyediakan implementasi default dari

Operation ini yang nantinya tinggal digunakan oleh pengguna.

3. Alpha

Dalam framework Alpha diimplementasikan menggunakan design pattern

Strategy (separation principle). Template method ditempatkan pada kelas

ModelCoordinator yaitu processModel(), metode ini nantinya akan

memanggil hook method pada interface Alpha yaitu

getSchedulingType() dan getMaximumMachine(). Kelas yang

mengimplementasikan interface ini akan mengimplementasikan hook method

ini. Karena implementasi Alpha dalam framework terbilang sangat sederhana

dan hook method yang dimiliki tidak membutuhkan proses yang rumit maka

implementasi dalam framework nya dapat digantikan dengan cara deklaratif

yaitu mendefinisikan properti-properti Alpha ini pada DSL yang dimiliki oleh

framework.

Page 25: Bab III Usulan Metode dan Rekayasa Domain … Bab III Usulan Metode dan Rekayasa Domain Penjadwalan III.1 Usulan Metode Pembangunan Framework ANALISIS DOMAIN DOMAIN PERSOALAN PERANCANGAN

51

Gambar III.20 Diagram Kelas Job

Page 26: Bab III Usulan Metode dan Rekayasa Domain … Bab III Usulan Metode dan Rekayasa Domain Penjadwalan III.1 Usulan Metode Pembangunan Framework ANALISIS DOMAIN DOMAIN PERSOALAN PERANCANGAN

52

Gambar III.21 Diagram Kelas Operation

+processModel()

-alpha : Alpha-beta : Beta-gamma : Gamma

ModelCoordinator

+getSchedulingType()+getMaximumMachine() : Integer

«implementation class»Alpha

1 1

...SchedulingTypeEnum.SINGLE_MACHINE...

...alpha.getSchedulingType()...

+getSchedulingType()+getMaximumMachine() : Integer

«interface»Alpha

Gambar III.22 Diagram Kelas Alpha

Page 27: Bab III Usulan Metode dan Rekayasa Domain … Bab III Usulan Metode dan Rekayasa Domain Penjadwalan III.1 Usulan Metode Pembangunan Framework ANALISIS DOMAIN DOMAIN PERSOALAN PERANCANGAN

53

4. Beta

Dalam framework Beta mempunyai implementasi yang mirip dengan Alpha.

Beta diimplementasikan menggunakan design pattern Strategy (separation

principle). Template method ditempatkan pada kelas ModelCoordinator

yaitu processModel(), metode ini nantinya akan memanggil hook

method pada interface Beta yaitu isSingleCriterion(),

isStaticScheduling() dan beberapa metode lain. Kelas yang

mengimplementasikan interface ini akan mengimplementasikan hook method

ini. Berbeda dengan Alpha, Beta memiliki implementasi yang rumit karena di

dalamnya terdapat dua hot-spot lain yaitu Precedence dan Batch, kedua hot-

spot ini harus dideklarasikan dalam Beta, atau di deklarasikan pada DSL yang

ada.

Gambar III.23 Diagram Kelas Beta

5. Gamma

Gamma juga memiliki behavior yang mirip dengan Alpha dan Beta. Gamma

diimplementasikan menggunakan design pattern Strategy (separation

principle). Template method ditempatkan pada kelas ModelCoordinator

Page 28: Bab III Usulan Metode dan Rekayasa Domain … Bab III Usulan Metode dan Rekayasa Domain Penjadwalan III.1 Usulan Metode Pembangunan Framework ANALISIS DOMAIN DOMAIN PERSOALAN PERANCANGAN

54

yaitu processModel(). Metode ini nantinya akan memanggil hook method

pada interface Gamma yaitu isMakeSpan(), isMinimaxLateness(),

isMinimaxTardiness() dan beberapa metode lain Kelas yang

mengimplementasikan interface ini akan mengimplementasikan hook method

ini. Implementasi Gamma juga sangat sederhana dan hook method yang

dimiliki tidak membutuhkan proses yang rumit sehingga implementasi nya

dapat digantikan secara deklaratif yang di definisikan pada DSL pada

framework.

Gambar III.24 Diagram Kelas Gamma

6. Precedence

Implementasi Precedence dalam framework menggunakan design pattern

Strategy (separation principle). Precedence merupakan bagian dari hot-spot

Beta dan template method dari hot-spot ini terdapat di kelas

ModelCoordinator yaitu pada metode processModel()

mendeklerasikan Precedence kedalam DSL sangat rumit sehingga Precedence

Page 29: Bab III Usulan Metode dan Rekayasa Domain … Bab III Usulan Metode dan Rekayasa Domain Penjadwalan III.1 Usulan Metode Pembangunan Framework ANALISIS DOMAIN DOMAIN PERSOALAN PERANCANGAN

55

dibuat hot-spot tersendiri sehingga dapat dideklarasikan programatically. Hot-

spot ini memiliki dua dua hook method yaitu getPrecedenceType() dan

processPrecedence()

Gambar III.25 Diagram Kelas Precedence

7. Batch

Implementasi Bacth dalam framework menggunakan design pattern Strategy

(separation principle). Seperti halnya pada Precedence hot-spot ini adalah

bagian dari Beta dan template method hot-spot ini terdapat pada kelas

ModelCoordinator yaitu metode processModel(). Metode ini

nantinya akan memanggil hook method pada attribut beta yaitu

getBatch(). Kemudian dari Batch ini terdapat hook method yaitu

getBatchElements(). Batch juga sulit dideklarasikan dengan DSL

Page 30: Bab III Usulan Metode dan Rekayasa Domain … Bab III Usulan Metode dan Rekayasa Domain Penjadwalan III.1 Usulan Metode Pembangunan Framework ANALISIS DOMAIN DOMAIN PERSOALAN PERANCANGAN

56

karena itu dibentuk hot-spot tersendiri untuk mendeklarasikannya secara

programatically.

Gambar III.26 Diagram Kelas Batch

8. Batch Element

Batch Element memiliki behavior yang sama dengan Operation, Batch

Element adalah part of dari Batch. Batch Element dapat diimplementasikan

dalam beberapa cara yaitu:

1. Setiap objek Batch Element dapat diimplementasikan dari interface

BacthElement tapi karena terdapat banyak objek Batch Element

pada framework, maka cara ini kurang baik.

2. Framework menyediakan implementasi default untuk Batch Element

ini sehingga pengguna tinggal menggunakan implementasi tersebut.

Page 31: Bab III Usulan Metode dan Rekayasa Domain … Bab III Usulan Metode dan Rekayasa Domain Penjadwalan III.1 Usulan Metode Pembangunan Framework ANALISIS DOMAIN DOMAIN PERSOALAN PERANCANGAN

57

Gambar III.27 Diagram Kelas Batch Element

9. Algoritma

Implementasi Algoritma dalam framework menggunakan design pattern

Strategy (separation principle). Template method terdapat pada kelas

AlgorithmCoordinator yaitu metode processAlgorithm().

Metode ini nantinya akan memanggil hook method pada attribut algorithm

yang merupakan tipe interface Algorithm. Kelas yang mengimplementasi

interface Algorithm akan mengimplementasikan hook method tersebut

yaitu executeAlgorithm ().

10. Sequencer

Implementasi Sequencer dalam framework menggunakan design pattern

Strategy (separation principle). Template method terdapat pada kelas

SequencerCoordinator yaitu metode processSequencer().

Metode ini nantinya akan memanggil hook method pada attribut sequencer

yang merupakan tipe interface Sequencer. Kelas yang mengimplementasi

interface Sequencer akan mengimplementasikan hook method tersebut

yaitu executeSequencer().

Page 32: Bab III Usulan Metode dan Rekayasa Domain … Bab III Usulan Metode dan Rekayasa Domain Penjadwalan III.1 Usulan Metode Pembangunan Framework ANALISIS DOMAIN DOMAIN PERSOALAN PERANCANGAN

58

 

Gambar III.28 Diagram Kelas Algoritma

Gambar III.29 Diagram Kelas Sequencer

Page 33: Bab III Usulan Metode dan Rekayasa Domain … Bab III Usulan Metode dan Rekayasa Domain Penjadwalan III.1 Usulan Metode Pembangunan Framework ANALISIS DOMAIN DOMAIN PERSOALAN PERANCANGAN

59

III.2.2.3 DSL Penjadwalan

Bahasa spesifikasi penjadwalan merupakan meta model penjadwalan untuk

menspesifikasi model persoalan proses penjadwalan. Model persoalan

penjadwalan dapat dispesifikasi menggunakan bahasa ini. Bahasa spesifikasi

berbentuk blok-blok pernyataan berikut: (1) blok informasi dokumentasi pembuat,

tanggal pembuatan dan sebagainya (2) blok informasi umum teknis seperti mono-

operation, dan sebagainya. (3) field , (4) field , (5) field , (6) data instan

persoalan, dan (7) algoritma-algoritma penyelesaian. Bahasa ini merupakan titik

awal bahasa spesifikasi persoalan penjadwalan. Bahasa ini telah dapat mencakup

hampir semua persoalan penjadwalan single, openshop, jobshop, mixed shop serta

banyak konstrain dan banyak fungsi obyektif. Berikut ini adalah DSL untuk

penjadwalan dalam bentuk pasangan <attribute>=<value>

Penjadwalan {

// 1. Blok informasi umum dokumentasi model-id <string> [versi <string>] [deskripsi <string>] [author <string>] [tanggal_pembuatan <date>] [catatan<string>] // job yang akan dijadwalkan 2. Job {

job { job-id <integer> [nama <string>] [deskripsi <string>] mono-operation [false | true] operations {

operation { operation-id <integerr> preemptable [false | true] [cost-weight <integer>] [benefit-weight <integer>] [release-time <integer>] [start-time <integer>] [due-date <integer>] [deadline <integer>] processing-time <integer > [setup-time <integer>]

} operation {

operation-id <integerr>

Page 34: Bab III Usulan Metode dan Rekayasa Domain … Bab III Usulan Metode dan Rekayasa Domain Penjadwalan III.1 Usulan Metode Pembangunan Framework ANALISIS DOMAIN DOMAIN PERSOALAN PERANCANGAN

60

preemptable [false | true] [cost-weight <integer>] [benefit-weight <integer>] [release-time <integer>] [start-time <integer>] [due-date <integer>] [deadline <integer>] processing-time <integer > [setup-time <integer>]

} …..

} }

} //Job 3. Operation {

operation-id <integer> preemptable [false | true] [cost-weight <integer>] [benefit-weight <integer>] [release-time <integer>] [start-time <integer>] [due-date <integer>] [deadline <integer>] processing-time <integer > [setup-time <integer>]

} // Operation

// 4. Alpha Tipe-penjadwalan {

tipe [ single-machine | identical-parallel-machines | propotional-parallel-machine | unrelated-parallel-machine | flowshop | jobshop | openshop | mixedshop |

] jumlah-mesin-maksimal <integer>

} // Tipe-penjadwalan // 5. Beta Konstrain {

single-criterion [false | true] static-scheduling [false | true] deterministic-scheduling [true | false] precedence [ not-exists | chains | tree | in-tree | out-tree | sp-graph ] precedence-part { operation { predecessor { operation-id<integer> operation-id<integer> ….. } successor { operation-id<integer> operation-id<integer> …..

Page 35: Bab III Usulan Metode dan Rekayasa Domain … Bab III Usulan Metode dan Rekayasa Domain Penjadwalan III.1 Usulan Metode Pembangunan Framework ANALISIS DOMAIN DOMAIN PERSOALAN PERANCANGAN

61

} }

} batch [not-exist | serial batch | parallel batch] batch-elements-list { batch-element { batch-element-id<integer> [nama<string>] operations { operation-id<integer> operation-id<integer> ….. }

} batch-element {

batch-element -id<integer> [nama<string>] operations { operation-id<integer> operation-id<integer> ….. }

} ……

}

} //Konstrain

// 5. Gamma Kriteria-optimasi {

// Criterion [makespan-criterion [exists | not-exists]] [minimax-tardiness-criterion [exists | not-exists]] [minimax-lateness-criterion [exists | not-exists]] [minimax-earliness-criterion [exists | not-exists]] [minimax-flow-time-criterion [exists | not-exists]] [minimax-promptness-criterion [exists | not-exists]] [min-of-average-completion-time-criterion [exists | not-exists]] [min-of-average-weighted-completion-time-criterion [exists | not-exists]] [min-of-total-completion-time-criterion [exists | not-exists]] [min-of-total-average-tardiness [exists | not-exists]] [min-of-total-average-earliness [exists | not-exists]]

} // Kriteria-optimasi

// 6. Algoritma Algoritma {

// Kelas Algortima – dependency injection [kelas-algortima <string>] // Pilihan Algortima [algoritma-predifined [Lawler-algorithm| Moore-algorithm | Campbell-algorithm]]

} // Algoritma

Page 36: Bab III Usulan Metode dan Rekayasa Domain … Bab III Usulan Metode dan Rekayasa Domain Penjadwalan III.1 Usulan Metode Pembangunan Framework ANALISIS DOMAIN DOMAIN PERSOALAN PERANCANGAN

62

// 7. Sequencer Sequencer {

// Kelas Sequencer – dependency injection [kelas-sequencer <string>] // Pilihan Sequencer [sequencer-predifined [Due-date-sequencer|Release-time-sequencer|Start-time-sequencer]]

} // Sequencer

} //Penjadwalan

Gambar III.30 DSL Penjadwalan

III.3 Teknik Implementasi

Framework adalah aplikasi setengah jadi yang ditujukan untuk digunakan dalam

berbagai macam aplikasi di dalam sebuah domain, karena itu framework harus

dibangun dengan sefleksibel mungkin.

Untuk membangun aplikasi yang fleksibel dibutuhkan teknik implementasi

tertentu seperti metaprogramming, bytecode manipulation, dan XML untuk

implementasi DSL.

III.3.1 XML dan XML Schema.

XML (Extensible Markup Language) adalah bahasa markup serbaguna untuk

mendeskripsikan berbagai macam data. [9] XML menggunakan markup tags

seperti halnya HTML. XML disebut extensible karena pengguna dapat

mendefinisikan sendiri elemen-elemen markup dari XML yang diinginkan. Dalam

framework ini XML digunakan untuk mendefinisikan DSL dari framework.

Untuk mendeskripsikan struktur dari sebuah dokumen XML, digunakan XML

Schema. XML schema adalah dokumen yang berisi definisi struktur, konten,

semantik dan konstrain dari sebuah dokumen XML. [10] Sebuah dokumen XML

yang mengacu ke suatu XML schema harus mengikuti aturan dalam XML schema

tersebut. Dalam framework yang dibangun digunakan XML schema sebagai acuan

dari semua DSL yang didefinisikan oleh pengguna framework. Dengan adanya

XML schema maka dimudahkan untuk melakukan parsing dan validasi terhadap

Page 37: Bab III Usulan Metode dan Rekayasa Domain … Bab III Usulan Metode dan Rekayasa Domain Penjadwalan III.1 Usulan Metode Pembangunan Framework ANALISIS DOMAIN DOMAIN PERSOALAN PERANCANGAN

63

XML yang diberikan pengguna. XML schema yang digunakan dalam framework

ini adalah XML schema dari W3C.

Untuk mengekstrak data dari sebuah dokumen XML dibutuhkan teknik-teknik

tertentu. Ada banyak teknik yang dapat digunakan untuk memproses dokumen

XML antara lain SAX, DOM, transformasi, pull parsing dan data binding. [10]

Dalam framework ini digunakan teknik data binding. Data binding adalah teknik

pemrosesan XML yang sangat memudahkan pemrogram untuk melakukan

penelusuran elemen-elemen XML karena elemen-elemen tersebut dikonversi

kedalam hirarki kelas-kelas yang strogly typed sehingga pemrosesan menjadi

XML sangat mudah seperti halnya melakukan navigasi objek. [11]

Kakas yang digunakan yaitu XMLBeans. Kakas ini akan mengkompilasi XML

schema kedalam kelas-kelas Java, dan melakukan binding elemen-elemen sebuah

dokumen XML kedalam kelas-kelas Java tersebut.

III.3.2 Metaprogramming

Metaprogramming adalah mengenai merepresentasi dan memanipulasi

komponen-komponen yang mengimplementasi fungsionalitas dasar sistem. Pada

metaprogramming, pemrogram membuat program yang merepresentasi dan

memanipulasi program lain atau diri sendiri. Program yang merepresentasi dan

memanipulasi program lain atau diri sendiri disebut metaprogram [3]

Salah satu tipe dari metaprogramming adalah reflection. Reflection adalah

kemampuan program untuk memanipulasi sebagai data sesuatu yang

merepresentasi state program selama eksekusinya [11]. Terdapat dua aspek

manipulasi pada reflection yaitu (1) introspection, kemampuan program

mengobservasi dan dengan demikian menalar mengenai state nya. (2)

Intercession, kemampuan program memodifikasi state eksekusi atau mengubah

interpretasi atau artinya.

Dalam framework ini metaprogramming digunakan yaitu untuk melakukan late

binding. Late binding yang dimaksudkan yaitu mengubah struktur program pada

saat runtime dengan melakukan pemuatan (loading) dan menginstanisasi sebuah

kelas tertentu kemudian melakukan binding/injeksi kelas tersebut ke tempat yang

Page 38: Bab III Usulan Metode dan Rekayasa Domain … Bab III Usulan Metode dan Rekayasa Domain Penjadwalan III.1 Usulan Metode Pembangunan Framework ANALISIS DOMAIN DOMAIN PERSOALAN PERANCANGAN

64

diinginkan. Kelas yang dimaksud tersebut dideklarasikan di DSL framework

kemudian akan di binding pada saat runtime.

Kakas yang digunakan yaitu Java reflection, dengan Java reflection kita

dimungkinkan untuk meload sebuah kelas kedalam JVM, dan dimungkinkan

untuk mengubah struktur sebuah kelas dengan menambah dan mengurangi field

dan meng-invoke sebuah method.

III.3.3 Bytecode manipulation

Bytecode manipulation adalah teknik yang digunakan untuk melakukan

manipulasi bytecode.[12] Bytecode adalah bahasa intermidiate yang berisi

sekumpulan instruction set yang dimengerti oleh interpreter dari sebuah bahasa

pemrograman. Interpreter ini umunya disebut dengan virtual machine. Virtual

machine ini nantinya akan menerjemahkan bytecode menjadi instruksi-intruksi

mesin yang sebenarnya sesuai platform yang ditujukan. Java dan Smalltalk adalah

contoh bahasa pemrograman yang menggunakan pendekatan bytecode ini.

Dalam bahasa pemrograman Java, bytecode adalah hasil dari proses kompilasi

yang disimpan dalam file berekstensi class. Pada saat runtime, virtual machine

pada Java yang bernama JVM (Java Virtual Machine), akan me-load stream

bytecode tersebut untuk diproses. Karena representasi kelas-kelas pada saat

runtime berbentuk bytecode, maka diperlukan teknik bytecode manipulation untuk

memanipulasi kelas-kelas tersebut. Dengan bytecode manipulation dimungkinkan

untuk melakukan manipulasi kelas dengan bebas, seperti mengganti nama kelas,

menambahkan field, menambahkan method, manipulasi isi method. Dengan

bytecode manipulation kita juga dimungkinkan untuk menulis source code,

mengkompilasi dan menambahkannya kedalam bytecode pada saat runtime, hal

ini sangat penting untuk program yang meng-generate source code pada saat

runtime.

Framework ini memerlukan bytecode manipulation karena framework akan meng-

generate source code untuk DSL yang tidak didefiniskan kelasnya oleh

pengguna. Misalnya pengguna framework hanya mendefisikan elemen

penjadwalan Job pada DSL maka framework akan meng-generate sebuah kelas

Job untuk DSL tersebut agar dapat dieksekusi. Source code kelas yang di generate

Page 39: Bab III Usulan Metode dan Rekayasa Domain … Bab III Usulan Metode dan Rekayasa Domain Penjadwalan III.1 Usulan Metode Pembangunan Framework ANALISIS DOMAIN DOMAIN PERSOALAN PERANCANGAN

65

akan dikompilasi menjadi bytecode dan di load kedalam JVM pada runtime

dengan memanfaatkan teknik bytecode manipulation.

Kakas yang digunakan adalah Javassist. Javaassist adalah kakas yang bagus untuk

melakukan bytecode manipulation karena memiliki abstraksi pada level source

code sehingga pengguna tidak perlu memahami instruksi-instruksi bytecode cukup

memanipulasi pada level source dan Javassist akan mengkompilasinya kedalam

bytecode.