Bab IV Implementasi Domain IV.1 Lingkungan Implementasi IV.2

advertisement
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.
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:annotation>
<xsd:documentation xml:lang="en">
XML Schema for
SchedulingFramework
Author:pipo
</xsd:documentation>
</xsd:annotation>
…
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:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:all>
<xsd:element name="version" minOccurs="0"
type="xsd:string"></xsd:element>
…
<xsd:element name="scheduling-elements" minOccurs="1"
maxOccurs="1">
<xsd:complexType>
<xsd:all>
<xsd:element ref="job" minOccurs="1"
maxOccurs="1"></xsd:element>
<xsd:element ref="alpha" minOccurs="1"
maxOccurs="1"></xsd:element>
<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.
<?xml version="1.0" encoding="UTF-8"?>
<scheduling xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="org/jannia/schedulingframework/
kernel/dsl/DSL.xsd">
<version>1.0</version>
<description>penjadwalan awal</description>
<author>Nur Afif</author>
<notes>Contoh penjadwalan</notes>
<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>
<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"></xsd:element>
…
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</description>
<mono-operation value="false" />
<operations>
<operation id="001">
<operation-elements>
<preemptable>true</preemptable>
<processing-time>220</processing-time>
<cost-weight>0</cost-weight>
…
</operation-elements>
</operation>
…
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
Download