Bab III Usulan Metode dan Rekayasa Domain … Bab III Usulan Metode dan Rekayasa Domain Penjadwalan...
Transcript of Bab III Usulan Metode dan Rekayasa Domain … Bab III Usulan Metode dan Rekayasa Domain Penjadwalan...
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
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
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.
30
Gambar III.2 Diagram fitur Job
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
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.
33
ModelPenjadwalan
Penjadwalan
Alpha Beta Gamma
SingleMachine
IdenticalParallelMachine
FlowShop
JobShop
OpenShop
MixedShop
ProportionalParallelMachine
UnrelatedParallelMachine
…... …...
MaximumMachine
SequencerJobAlgortima
Penjadwalan
…... …... …...
Gambar III.3 Diagram fitur Alpha
34
Gambar III.4 Diagram fitur Beta
35
Gambar III.5 Diagram fitur Gamma
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.
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.
38
Gambar III.6 Diagram fitur Algoritma
39
Gambar III.7 Diagram fitur Sequencer
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 :
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
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
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
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.
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.
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.
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.
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().
49
Gambar III.19 Diagram Sequence Frozen-Spot
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.
51
Gambar III.20 Diagram Kelas Job
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
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
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
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
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.
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().
58
Gambar III.28 Diagram Kelas Algoritma
Gambar III.29 Diagram Kelas Sequencer
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>
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> …..
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
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
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
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
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.