• Tidak ada hasil yang ditemukan

Bab III Usulan Metode dan Rekayasa Domain Penjadwalan. Usulan Metode Pembangunan Framework

N/A
N/A
Protected

Academic year: 2021

Membagikan "Bab III Usulan Metode dan Rekayasa Domain Penjadwalan. Usulan Metode Pembangunan Framework"

Copied!
39
0
0

Teks penuh

(1)

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

(2)

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

(3)

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

(4)

30

(5)

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

(6)

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.

(7)

33

Model Penjadwalan

Penjadwalan

Alpha Beta Gamma

Single Machine Identical Parallel Machine Flow Shop Job Shop Open Shop Mixed Shop Proportional Parallel Machine Unrelated Parallel Machine …... …... Maximum Machine Sequencer Job Algortima Penjadwalan …... …... …...

(8)

34

(9)

35

(10)

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.

(11)

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.

(12)

38

(13)

39

(14)

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.

(15)

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

(16)

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

(17)

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

(18)

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.

(19)

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.

(20)

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.

(21)

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.

(22)

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().

(23)

49

(24)

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.

(25)

51

(26)

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

(27)

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

(28)

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

(29)

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

(30)

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.

(31)

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().

(32)

58

 

Gambar III.28 Diagram Kelas Algoritma

(33)

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>

(34)

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> …..

(35)

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]]

(36)

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

(37)

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

(38)

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

(39)

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.

Gambar

Gambar III.1 Usulan metode pembangunan framework
Gambar III.2 Diagram fitur Job
Tabel III.2 Tabel fitur Model Penjadwalan Alpha  No  Nama
Gambar III.3 Diagram fitur Alpha
+7

Referensi

Dokumen terkait

Kuliah Kerja Nyata (KKN) merupakan suatu bentuk kegiatan pembelajaran lapangan yang dilaksanakan oleh mahasiswa sebagaimana tertuang dalam Surat Keputusan Rektor

Adakah persepsi responden (pelancong Singapura) terhadap kepentingan serta keberkesanan langkah- langkah pencegahan jenayah di bawah Program Bandar Selamat berbeza berdasarkan

 Contoh: events tipe tertentu yang terjadi pada periode waktu. tertentu atau yang terjadi di

TAPM yang berjudul "Pengaruh Pembelajaran Berbasis Masalah terhadap Peningkatan Kemampuan Berpikir Kritis dan Disposisi Matematis Siswa SMA" adalah hasil karya saya sendiri, dan

Hasil pengamatan mekanisme Ketahanan Sistemik Terinduksi Tanaman cabai merah akibat pengaplikasian ekstrak daun Mirabilis jalapa berdasarkan intensitas serangan CMV,

Pada tahap ini peserta didik mengevaluasi hasil belajar tentang materi yang telah dipelajari melalui diskusi kelas untuk menganalisis hasil pemecahan masalah

Jika urutan tampil diatur bergantian antara pria dan wanita, serta finalis dari SMA ”A” tidak tam- pil berurutan, maka susunan urutan tampil yang mungkin ada sebanyak.. Jika