Bab IV Implementasi Domain
Pada implementasi domain framework Penjadwalan akan dilakukan implementasi terhadap frozen-spot, dan DSL dari framework Penjadwalan.
IV.1 Lingkungan Implementasi Lingkungan implementasi terdiri dari lingkungan perangkat keras dan lingkungan perangkat lunak yang digunakan dalam pengembangan sistem. Lingkungan perangkat keras digunakan untuk keseluruhan sistem adalah sebagai berikut : 1. Processor Intel Pentium 4 1.70 GHz 2. RAM 512 MB. Sedangkan lingkungan perangkat lunak yang digunakan dalam pengembangan sistem adalah sebagai berikut: 1. Sistem Operasi Windows XP 2. Bahasa Pemrograman Java versi 1.5 3. IDE Eclispe Ganymede
IV.2 Implementasi Frozen-spot dan Hot-spot Frozen-spot dan hot-spot diimplementasikan dengan bahasa pemograman Java dengan menggunakan IDE Eclipse Ganymede. Dari hasil perancangan, implementasi frozen-spot dan hot-spot framework dijabarkan dalam kelas-kelas Java dan dibagi kedalam beberapa paket sebagai berikut :
66
Tabel IV.1 Kelas-kelas implementasi framework No. 1.
Paket org.jannia.schedulingframework
Kelas (.java)
Keterangan Ini adalah kelas yang berisi konteks dari framework. Melalui
Context
kelas ini kita dapat mengakses properti-properti framework seperti Alpha, Beta, Gamma, Job, Algortihm dan Sequencer. SchedulingFramework
Kelas ini adalah kelas yang digunakan oleh pengguna untuk menginisisiasi
framework.
Pengguna
menggunakan
framework ini dengan menginstanisasi kelas ini dengan parameter file DSL. 2.
org.jannia.schedulingframework.
Enum yang berisi tipe-tipe algoritma seperti Lawler
AlgorithmListEnum
Algortihm, Moore Algorithm dsb.
enums
Enum yang berisi tipe-tipe job yaitu Mono operation dan
JobTypeEnum
multi operation. Enum yang berisi tipe-tipe operation yaitu preemptable dan
OperationTypeEnum
non-preemptable. PrecedenceTypeEnum
Enum yang berisi tipe-tipe precedence seperti chains, tree, dan sp-graph.
SchedulingTypeEnum
Enum yang berisi tipe-tipe penjadwalan seperti single machine, parallel machine, flowshop, dll. Enum yang berisi tipe-tipe sequencer seperti processing time
SequencerListEnum
sequencer, release time sequencer, dll.
67
Tabel IV.1 Kelas-kelas implementasi framework (lanjutan) No.
Paket
3.
org.jannia.schedulingframework.
Kelas (.java) ExecutionErrorException
Keterangan Tipe exception yang dilemparkan saat terjadi kesalahan pada saat eksekusi framework.
exception ParseErrorException
Tipe exception yang dilemparkan saat terjadi kesalahan pada saat parsing DSL.
WeaveErrorException
Tipe exception yang dilemparkan saat terjadi kesalahan pada saat proses weave framework.
4.
org.jannia.schedulingframework.
AlgorithmCoordinator
Kelas yang memiliki template method untuk hot-spot algortima.
kernel JobCoordinator
Kelas yang memiliki template method untuk hot-spot job.
ModelCoordinator
Kelas yang memiliki template method untuk hot-spot alpha, beta dan gamma.
SequenceCoordinator
Kelas yang memiliki template method untuk hot-spot sequencer.
5.
org.jannia.schedulingframework.
CampbellAlgorithmComponent
Kelas implementasi untuk komponen algortima Campbell.
kernel.components
ChainPrecedenceComponent
Kelas implementasi untuk komponen precedence bertipe chain. Kelas implementasi untuk komponen tipe penjadwalan
FlowshopComponent
flowshop. IdenticalParallelMachineComponent
Kelas implementasi untuk komponen tipe penjadwalan dengan identical parallel machine.
68
Tabel IV.1 Kelas-kelas implementasi framework (lanjutan) No.
Paket
Kelas (.java)
Keterangan Kelas implementasi untuk komponen tipe penjadwalan
JobshopComponent
jobshop. LawlerAlgorithmComponent
Kelas implementasi untuk komponen algortima Lawler.
MinimaxCriterionComponent
Kelas implementasi untuk komponen kriteria optimasi minimax.
MixedshopComponent
Kelas implementasi untuk komponen tipe penjadwalan mixedshop.
MooreAlgorithmComponent
Kelas implementasi untuk komponen algortima Moore.
OpenshopComponent
Kelas implementasi untuk komponen tipe penjadwalan openshop.
ProcessingTimeSequencerComponent
Kelas implementasi komponen sequencer processing time.
ProportionalMachineComponent
Kelas implementasi untuk komponen tipe penjadwalan dengan proportional machine.
ReleaseTimeSequencerComponent
Kelas implementasi untuk komponen sequencer release time.
SerialBatchComponent
Kelas implementasi untuk komponen batch tipe serial.
SingleMachineComponent
Kelas implementasi untuk komponen tipe penjadwalan single machine.
StartTimeSequencerComponent
Kelas implementasi untuk komponen sequencer start time.
UnrelatedParallelMachineComponent
Kelas implementasi untuk komponen tipe penjadwalan dengan unrelated parallel machine.
69
Tabel IV.1 Kelas-kelas implementasi framework (lanjutan) No.
Paket
6.
org.jannia.schedulingframework.
Kelas (.java)
Keterangan
FrameworkComponent
Interface untuk semua komponen framework.
org.jannia.schedulingframework.
DSLParser
Kelas untuk memparsing file DSL.
kernel.processor
Executor
Kelas yang berfungsi untuk mengeksekusi framework.
Weaver
Kelas yang berfungsi untuk melakukan proses weave
kernel.components.intf 7.
framework. 8. 9.
org.jannia.schedulingframework.
ParserHelper
Kelas yang berisi method bantuan untuk melakukan parsing.
kernel.processor.helper
WeaverHelper
Kelas yang berisi method bantuan untuk melakukan weave.
org.jannia.schedulingframework.
Algorithm
Interface untuk hot-spot algortihm.
spots
Alpha
Interface untuk hot-spot alpha.
Batch
Interface untuk hot-spot batch.
BatchElement
Interface untuk hot-spot element batch.
Beta
Interface untuk hot-spot beta.
Gamma
Interface untuk hot-spot gamma.
Job
Interface untuk hot-spot job.
MonoOperationJob
Interface untuk hot-spot job (mono operation).
MultiOperationJob
Interface untuk hot-spot job (multi operation)
Operation
Interface untuk hot-spot operation.
Precedence
Interface untuk hot-spot precedence.
Sequencer
Interface untuk hot-spot sequencer.
70
Tabel IV.1 Kelas-kelas implementasi framework (lanjutan) No.
Paket
Kelas (.java)
10.
org.jannia.schedulingframework.
DefaultBatchElement
Implementasi default untuk batch element.
spots.defaults
DefaultOperation
Implementasi default untuk operation.
71
Keterangan
IV.3 Implementasi DSL DSL dalam framework ini akan diimplimentasikan menggunakan XML. Berikut ini adalah sebagian dari skema XML (XML schema) yang akan akan digunakan sebagai acuan XML dari framework. <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:annotation> <xsd:documentation xml:lang="en"> XML Schema for SchedulingFramework Author:pipo
… Gambar IV.1 Header XML schema penjadwalan Header ini adalah penanda file skema XML yang mengacu pada standar skema dari W3C.Header terdiri dari beberapa tag yang mendeskripsikan dari skema yang dibentuk.
<xsd:element name="scheduling"> <xsd:annotation> <xsd:documentation xml:lang="en"> Root element for the Scheduling DSL <xsd:complexType> <xsd:all> <xsd:element name="version" minOccurs="0" type="xsd:string">
… <xsd:element name="scheduling-elements" minOccurs="1" maxOccurs="1"> <xsd:complexType> <xsd:all> <xsd:element ref="job" minOccurs="1" maxOccurs="1"> <xsd:element ref="alpha" minOccurs="1" maxOccurs="1"> <xsd:element ref="beta" minOccurs="1"
… Gambar IV.2 Elemen XML schema scheduling
72
Elemen skema XML scheduling adalah elemen akar (root) dari skema ini. Pembacaan dan penurutan file akan diawali dari elemen ini. Elemen ini memiliki sub elemen yaitu scheduling-element yang berisi elemen-elemen dari penjadwalan. scheduling-element memiliki sub element yaitu job, alpha, beta, gamma, algorithm, dan sequencer. Masing-masing sub elemen ini mendefinisikan elemen dari penjadwalan.
<scheduling xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="org/jannia/schedulingframework/ kernel/dsl/DSL.xsd">
1.0 <description>penjadwalan awal
Nur Afif <notes>Contoh penjadwalan <scheduling-elements>
… Gambar IV.3 Implementasi XML elemen scheduling Elemen skema XML job ini adalah elemen yang merepresentasikan Job dalam penjadwalan. Elemen ini memiliki sub elemen yaitu mono-operation yang menyatakan apakah Job ini mono operation atau multi operation. Selain itu terdapat juga sub elemen operations yang menyatakan Operation yang termasuk kedalam Job ini.
<xsd:element name="job"> <xsd:complexType> <xsd:all> <xsd:element name="job-elements" minOccurs="0" maxOccurs="1"> <xsd:complexType> <xsd:all> <xsd:element name="description" minOccurs="0" type="xsd:string"> <xsd:element name="mono-operation" minOccurs="1" maxOccurs="1">
… <xsd:element name="operations" minOccurs="1" maxOccurs="1"> <xsd:complexType> <xsd:sequence> <xsd:element ref="operation" minOccurs="1" maxOccurs="unbounded">
… Gambar IV.4 Elemen XML schema job 73
Berikut ini adalah contoh implementasi skema XML tersebut kedalam instan file XML.
<job> <job-elements> <description>description <mono-operation value="false" />
<preemptable>true <processing-time>220 0
…
… Gambar IV.5 Implementasi XML elemen job
IV.4 Implementasi Komponen-Komponen Implementer Komponen-komponen
implementer
adalah
komponen-komponen
yang
membangun framework. Setiap komponen mengimplementasikan fungsi-fungsi tersendiri dalam framework. Komponen-komponen implementer yang terdapat dalam framework penjadwalan ini adalah sebagai berikut : Tabel IV.2 Tabel komponen-komponen implementer framework No. 1.
Nama
Fungsi
SingleMachineComponent
Komponen untuk menangani penjadwalan dengan tipe satu mesin.
2.
JobShopComponent
Komponen untuk menangani penjadwalan tipe job shop
3.
OpenShopComponent
Komponen untuk menangani penjadwalan tipe open shop
4.
FlowShopComponent
Komponen untuk menangani penjadwalan tipe flow shop
74
Tabel IV.2 Tabel komponen-komponen implementer framework (lanjutan) No. 5.
Nama
Fungsi
MixedShopComponent
Komponen untuk menangani penjadwalan tipe mixed shop
6.
ChainPrecedenceComponent
Komponen untuk menangani precedence bertipe chain
7.
InTreePrecedenceComponent
Komponen untuk menangani precedence bertipe in-tree
8.
OutTreePrecedenceComponent
Komponen untuk menangani precedence bertipe out-tree
9.
SPPrecedenceComponent
Komponen untuk menangani precedence bertipe serial-paralel
10.
SerialBatchComponent
Komponen untuk menangani batch bertipe serial
11.
ParalelBatchComponent
Komponen untuk menangani batch bertipe parallel
12.
ElementBatchComponent
Komponen untuk menangani batch bertipe element
13.
MinimaxCriterionComponent
Komponen untuk menangani kriteria penjadwalan minimax.
14.
MinisumCriterionComponent
Komponen untuk menangani kriteria penjadwalan minisum.
15.
LawlerAlgorithm Component
Komponen untuk algortima penjadwalan Lawler.
16.
MooreAlgorithm Component
Komponen untuk algoritma penjadwalan Moore.
17.
JohnsonAlgorithm Component
Komponen untuk algoritma penjadwalan Johnson.
18.
CampbellAlgorithmComponent
Komponen untuk algoritma penjadwalan Campbell.
19.
NawazAlgorithmComponent
Komponen untuk algoritma penjadwalan Nawaz.
75
Tabel IV.2 Tabel komponen-komponen implementer framework (lanjutan) No. 20.
Nama
Fungsi
SahniAlgorithmComponent
Komponen untuk algoritma penjadwalan Sahni.
21.
DueDateSequencerComponent
Komponen untuk sequencer menggunakan due-date.
22.
ReleaseTimeSequencerComponent
Komponen untuk sequencer menggunakan release-time.
23.
StartTimeSequencerComponent
Komponen untuk sequencer menggunakan start-time.
24.
DeadlineTimeSequencerComponent
Komponen untuk sequencer menggunakan deadline-time.
25.
ProcessingTimeSequencerComponent Komponen untuk sequencer menggunakan processing-time.
26.
CostWeightSequencerComponent
Komponen untuk sequencer menggunakan cost-weight.
76