• Tidak ada hasil yang ditemukan

STUDI PEMBANGUNAN FRAMEWORK BERORIENTASI OBJEK TESIS. NUR AFIF NIM: (Program Studi Rekayasa Perangkat Lunak)

N/A
N/A
Protected

Academic year: 2021

Membagikan "STUDI PEMBANGUNAN FRAMEWORK BERORIENTASI OBJEK TESIS. NUR AFIF NIM: (Program Studi Rekayasa Perangkat Lunak)"

Copied!
18
0
0

Teks penuh

(1)

i

STUDI PEMBANGUNAN FRAMEWORK

BERORIENTASI OBJEK

STUDI KASUS PEMBANGUNAN FRAMEWORK PENJADWALAN

TESIS

Karya tulis sebagai salah satu syarat untuk memperoleh gelar Magister dari

Institut Teknologi Bandung

Oleh

NUR AFIF

NIM: 23506030

(Program Studi Rekayasa Perangkat Lunak)

INSTITUT TEKNOLOGI BANDUNG

2009

(2)

i

ABSTRAK

STUDI PEMBANGUNAN FRAMEWORK

BERORIENTASI OBJEK

STUDI KASUS PEMBANGUNAN FRAMEWORK PENJADWALAN

Oleh Nur Afif NIM: 23506030

Sebuah framework dapat diartikan sebagai aplikasi “setengah jadi” yang dapat digunaulang dan dapat dikhususkan untuk menghasilkan bermacam-macam aplikasi dalam sebuah domain tertentu

Tesis ini mengajukan sebuah metode yang dapat digunakan untuk mengembang-kan sebuah framework berorietasi objek. Metode yang diajumengembang-kan yaitu menggabungkan rekayasa domain (domain engineering) dan pengembangan

framework dituntun hot-spot (hot-spot driven). Rekayasa domain ditujukan untuk

pembangunan keluarga sistem (family of system) dalam suatu domain karena itu

framework cocok dikembangkan dengan rekayasa domain. Tesis ini juga

mengemukakan studi kakas-kakas yang digunakan dalam rekayasa domain seperti pemodelan fitur (feature modelling) dan bahasa spesifik domain (DSL – Domain

Specific Language). Metode yang diajukan juga menggunakan pengembangan framework dituntun hot-spot untuk mengedintifikasi hot-spot dan frozen spot pada framework dengan menggunakan kakas-kakas seperti kartu hot-spot dan

prinsip-prinsip konstruksi framework (FCP – Framework Construction Principle).

Studi kasus yang diambil dalam tesis ini untuk menerapkan metode yang diajukan adalah domain penjadwalan (scheduling). Penjadwalan diambil sebagai contoh kasus karena penjadwalan adalah cabang ilmu yang telah terdefinisi dengan bagus dan memiliki banyak literatur sehingga lebih mudah untuk memahami domainnya. Selain itu penjadwalan juga memiliki titik-titik keberagaman sehingga cocok untuk diaplikasikan kedalam framework.

Sebuah framework harus dirancang dan diimplementasikan untuk digunakan se-fleksibel mungkin. Karena itu implementasi framework memerlukan teknik-teknik khusus. Tesis ini juga mengemukakan teknik-teknik implementasi untuk

framework.seperti metaprogramming dan bytecode manipulation.

Kontribusi tesis ini adalah mengajukan metode pengembangan framework ber-orientasi objek dengan menggabungkan metode dan kakas seperti yang tersebut diatas, sehingga pembangunan framework untuk sebuah domain menjadi lebih mudah dan terstruktur.

Kata kunci : gunaulang, rekayasa domain, hot-spot, frozen-spot, penjadwalan, fleksibilitas.

(3)

ii

ABSTRACT

STUDY OF OBJECT-ORIENTED

FRAMEWORK DEVELOPMENT

CASE STUDY SCHEDULING FRAMEWORK DEVELOPMENT

By Nur Afif NIM: 23506030

A framework can be defined as a “semi-complete” appication which can be reuse and specialized to produce many application in a specific domain.

This thesis propose a method that can be used to developing an object oriented framework. This method combines domain engineering and hot-spot driven framework development. Domain engineering is aimed to develop family of system in a domain, which is also suitable to developing framework. This thesis also presents study about tools used in domain engineering such as feature modeling and domain specific language (DSL). The proposed method also using hot-spot driven framework development to identify hot-spots and frozen-spots of the framework by using tools such as hot-spot card and framework construction principle (FCP).

Chosen case study for implementing the proposed method is scheduling domain. Scheduling was chosen because scheduling is a well-defined science and has many literature so is relatively easy to understands the domain. Scheduling also has many variety spots which is suitable to be implements as framework.

A framework must be designed and implemented to use as flexible as possible. So to implements a framework, special techniques is needed. This thesis also presents implementation techniques for framework such as metaprogramming and bytecode manipulation.

Contribution of this thesis is to propose a method for developing an object-oriented framework by combining methods and tools as mentioned above so we can develop object-oriented framewok for a domain, easier and in a structured way.

(4)

iii

HALAMAN PENGESAHAN

STUDI PEMBANGUNAN FRAMEWORK

BERORIENTASI OBJEK

STUDI KASUS PEMBANGUNAN FRAMEWORK PENJADWALAN

Oleh

Nur Afif

NIM: 23506030

(Program Studi Rekayasa Perangkat Lunak)

Institut Teknologi Bandung

Menyetujui Pembimbing

Tanggal ………..

Dr. Ing. M. Sukrisno Mardiyanto NIP. 130 938 170

(5)

iv

PEDOMAN PENGGUNAAN TESIS

Tesis S2 yang tidak dipublikasikan terdaftar dan tersedia di Perpustakaan Institut Teknologi Bandung, dan terbuka untuk umum dengan ketentuan bahwa hak cipta ada pada pengarang dengan mengikuti aturan HaKI yang berlaku di Institut Teknologi Bandung. Referensi kepustakaan diperkenankan dicatat, tetapi pengutipan atau peringkasan hanya dapat dilakukan seizin pengarang dan harus disertai dengan kebiasaan ilmiah untuk menyebutkan sumbernya.

Memperbanyak atau menerbitkan sebagian atau seluruh tesis haruslah seizin Dekan Sekolah Pasca Sarjana, Institut Teknologi Bandung.

(6)

v

Untuk Bapak dan Mama juga Chica dan Zhilmi dan juga untuk Jannia “the one among all zeroes”

(7)

vi

KATA PENGANTAR

Bismillahirahmanirrahim, pertama-tama penulis mengucapkan puji syukur kehadirat ALLAH SWT atas limpahan rahmat dan karunia-NYA sehingga penulis dapat menyelesaikan tesis ini, dan juga penulis mengucapkan sholawat dan salam kepada Nabi Muhammad SAW yang telah membawa cahaya kedalam seluruh alam semesta.

Penulis sangat berterima kasih atas bimbingan, saran, kritik, serta nasehatnya kepada Dr. Ing. M. Sukrisno Mardiyanto selaku pembimbing dalam pengerjaan tesis ini.

Penulis juga mengucapkan terima kasih kepada Dr. Ir. Bambang Hariyanto, ST., MT. atas segala saran dan kritiknya, juga kepada Yani Widyani, S.T., M.T. selaku penguji proposal, seminar dan pra-sidang atas masukan-masukannya. Serta kepada Achmad Imam K. S.T., M.Sc., Ph.D. dan Bugi Wibowo, S.T., M.T. atas kesediannya sebagai penguji dalam sidang tesis ini dan atas masukan-masukannya.

Penulis juga mengucapkan terima kasih Ir. Hira Laksmiwati, M.Sc selaku wali akademik dan juga rekan-rekan S2 RPL 2006 yang telah memberikan dorongan dan semagat dalam pengerjaan tesis ini.

(8)

vii

DAFTAR ISI

ABSTRAK ... i

ABSTRACT ... ii

HALAMAN PENGESAHAN ... iii

PEDOMAN PENGGUNAAN TESIS ... iv

KATA PENGANTAR ... vi

DAFTAR ISI ... vii

DAFTAR LAMPIRAN ... ix

DAFTAR GAMBAR ... x

DAFTAR TABEL ... xiv

DAFTAR SINGKATAN ... xvi

DAFTAR ISTILAH ... xvii

Bab I Pendahuluan ... 1

I.1 Latar Belakang ... 1

I.2 Rumusan Masalah ... 2

I.3 Tujuan Tesis ... 2

I.4 Ruang Lingkup dan Batasan ... 3

I.5 Metodologi ... 3

Bab II Landasan Teori ... 4

II.1 Rekayasa Domain ... 4

II.1.1 Analisis Domain ... 5

II.1.2 Perancangan Domain ... 6

II.1.3 Implementasi Domain ... 7

II.2 Pemodelan Fitur ... 7

II.2.1 Model Fitur ... 9

II.2.2 Diagram Fitur ... 10

II.2.3 Kesamaan Dan Keberagaman ... 13

II.3 Framework Berorientasi Objek (Object Oriented Framework) ... 14

II.3.1 Prinsip-prinsip Konstruksi Framework ... 16

(9)

viii

II.4 Deskripsi Sistem Penjadwalan ... 22

II.4.1 Teori Penjadwalan ... 22

II.4.2 Notasi-notasi Penjadwalan ... 24

Bab III Usulan Metode Dan Rekayasa Domain Penjadwalan ... 27

III.1 Usulan Metode Pengembangan Framework ... 27

III.2 Rekayasa Domain Penjadwalan ... 29

III.2.1 Analisis Domain ... 29

III.2.2 Perancangan Domain ... 40

III.2.2.1 Identifikasi Hot-spot ... 40

III.2.2.2 Perancangan Framework ... 45

III.2.2.2.1 Perancangan Frozen-Spot ... 46

III.2.2.2.2 Perancangan Hot-Spot ... 48

III.2.2.3 DSL Penjadwalan ... 59

III.3 Teknik Implementasi ... 62

III.3.1 XML dan XML Schema ... 62

III.3.2 Metaprogramming ... 63

III.3.3 Bytecode manipulation ... 64

Bab IV Implementasi Domain ... 66

IV.1 Lingkungan Implementasi ... 66

IV.2 Implementasi Frozen-spot dan Hot-spot ... 66

IV.3 Implementasi DSL ... 72

IV.4 Implementasi Komponen-komponen Implementer ... 74

Bab V Penutup ... 77

IV.1 Kesimpulan ... 77

IV.2 Saran ... 78

(10)

ix

DAFTAR LAMPIRAN

Lampiran A ... 80 Lampiran B ... 121 Lampiran C ... 137

(11)

x

DAFTAR GAMBAR

Gambar II.1 Rekayasa Domain [1] ... 5

Gambar II.2 Pemodelan Fitur [3] ... 9

Gambar II.3 Diagram Fitur ... 11

Gambar II.4 Diagram Fitur dengan fitur mandatory ... 12

Gambar II.5 Diagram Fitur dengan fitur optional ... 12

Gambar II.6 Diagram Fitur dengan fitur alternatif ... 13

Gambar II.7 Diagram Fitur dengan fitur or ... 13

Gambar II.8 Arsitektur Framework [4] ... 16

Gambar II.9 Konsep Template-Hook [5] ... 17

Gambar II.10 Diagram Kelas FCP [5] ... 18

Gambar II.11 Proses Pengembangan Hot-Spot Driven [4] ... 20

Gambar II.12 Kartu Hot-Spot [4] ... 21

Gambar III.1 Usulan metode pembangunan framework ... 27

Gambar III.2 Diagram fitur Job ... 30

Gambar III.3 Diagram fitur Alpha ... 33

Gambar III.4 Diagram fitur Beta ... 34

Gambar III.5 Diagram fitur Gamma ... 35

Gambar III.6 Diagram fitur Algoritma... 38

Gambar III.7 Diagram fitur Sequencer ... 39

Gambar III.8 Kartu hot-spot Job ... 41

Gambar III.9 Kartu hot-spot Operation ... 41

Gambar III.10 Kartu hot-spot Alpha ... 42

Gambar III.11 Kartu hot-spot Beta ... 42

Gambar III.12 Kartu hot-spot Gamma ... 43

Gambar III.13 Kartu hot-spot Precedence ... 43

Gambar III.14 Kartu hot-spot Batch ... 44

Gambar III.15 Kartu hot-spot Batch Element ... 44

Gambar III.16 Kartu hot-spot Algoritma ... 45

(12)

xi

Gambar III.18 Diagram Kelas Frozen-Spot ... 47

Gambar III.19 Diagram Sequence Frozen-Spot ... 49

Gambar III.20 Diagram Kelas Job ... 51

Gambar III.21 Diagram Kelas Operation ... 52

Gambar III.22 Diagram Kelas Alpha ... 52

Gambar III.23 Diagram Kelas Beta ... 53

Gambar III.24 Diagram Kelas Gamma ... 54

Gambar III.25 Diagram Kelas Precedence ... 55

Gambar III.26 Diagram Kelas Batch ... 56

Gambar III.27 Diagram Kelas Batch Element ... 57

Gambar III.28 Diagram Kelas Algoritma ... 58

Gambar III.29 Diagram Kelas Sequencer ... 58

Gambar III.30 DSL Penjadwalan ... 62

Gambar IV.1 Header XML schema penjadwalan... 72

Gambar IV.2 Elemen XML schema scheduling... 72

Gambar IV.3 Implementasi XML elemen scheduling ... 73

Gambar IV.4 Elemen XML schema job ... 73

Gambar IV.5 Implementasi XML elemen job ... 74

Gambar A.1 Interface Job ... 80

Gambar A.2 Interface MonoOperationJob ... 80

Gambar A.3 Implementasi Interface MonoOperationJob ... 81

Gambar A.4 Interface MultiOperationJob ... 81

Gambar A.5 Implementasi Interface MultiOperationJob ... 81

Gambar A.6 Interface Operation... 82

Gambar A.7 Implementasi Interface Operation ... 83

Gambar A.8 Penggunaan Kelas DefaultOperation ... 83

Gambar A.9 Interface Alpha ... 84

Gambar A.10 Implementasi Interface Alpha ... 85

Gambar A.11 Interface Beta ... 86

Gambar A.12 Implementasi Interface Beta ... 86

Gambar A.13 Interface Precedence ... 87

(13)

xii

Gambar A.15 Interface Batch ... 88

Gambar A.16 Implementasi Interface Batch ... 89

Gambar A.17 Interface BatchElement ... 90

Gambar A.18 Implementasi Interface BatchElement ... 90

Gambar A.19 Penggunaan DefaultBatchElement ... 90

Gambar A.20 Interface Gamma ... 91

Gambar A.21 Implementasi Interface Gamma ... 92

Gambar A.22 Interface Algortihm ... 94

Gambar A.23 Implementasi Interface Algortihm ... 94

Gambar A.24 Interface Sequencer ... 95

Gambar A.25 Implementasi Interface Sequencer ... 96

Gambar A.26 Elemen DSL Job Dengan Kelas ... 97

Gambar A.26 Elemen DSL Job Tanpa Kelas... 97

Gambar A.27 Elemen DSL Operation Dengan Kelas ... 98

Gambar A.28 Elemen DSL Operation Tanpa Kelas ... 98

Gambar A.29 Elemen DSL Alpha Dengan Kelas ... 99

Gambar A.30 Elemen DSL Alpha Tanpa Kelas ... 100

Gambar A.31 Elemen DSL Beta Dengan Kelas ... 101

Gambar A.32 Elemen DSL Beta Tanpa Kelas ... 101

Gambar A.33 Elemen DSL Precedence Dengan Kelas ... 102

Gambar A.34 Elemen DSL Precedence Tanpa Kelas ... 102

Gambar A.35 Elemen DSL Batch Dengan Kelas ... 104

Gambar A.36 Elemen DSL Batch Tanpa Kelas ... 104

Gambar A.37 Elemen DSL BatchElement Dengan Kelas ... 105

Gambar A.38 Elemen DSL BatchElement Tanpa Kelas ... 105

Gambar A.39 Elemen DSL Gamma Dengan Kelas ... 106

Gambar A.40 Elemen DSL Gamma Tanpa Kelas ... 107

Gambar A.41 Elemen DSL Algortihm Dengan Kelas ... 109

Gambar A.42 Elemen DSL Algortihm Tanpa Kelas ... 109

Gambar A.43 Elemen DSL Sequencer Tanpa Kelas ... 110

Gambar A.44 Elemen DSL Sequencer Tanpa Kelas ... 110

(14)

xiii

Gambar A.46 Penggunaan Kelas Context ... 112

Gambar A.47 Diagram kelas sistem penjadwalan ... 113

Gambar A.49 Implementasi Kelas CustomJob ... 115

Gambar A.50 Implementasi Kelas CustomSequencer ... 116

Gambar A.51 Implementasi Kelas CustomAlgortihm ... 117

Gambar A.52 DSL framework ... 118

Gambar A.53 DSL framework bagian Job ... 119

Gambar A.54 DSL framework bagian Gamma ... 119

Gambar A.55 DSL framework bagian Algortihm ... 119

Gambar A.56 DSL framework bagian Sequencer ... 120

Gambar A.57 Contoh Penggunaan Framework ... 120

Gambar C.1 Source code kelas DSLParser ... 141

(15)

xiv

DAFTAR TABEL

Tabel II.1 Tabel notasi diagram fitur [1] ... 10

Tabel II.2 Framework Construction Principles [5] ... 17

Tabel II.3 Derajat fleksibilitas Hot-Spot [4] ... 21

Tabel III.1 Tabel Fitur Job ... 29

Tabel III.2 Tabel fitur Model Penjadwalan Alpha ... 32

Tabel III.3 Tabel fitur Model Penjadwalan Beta ... 36

Tabel III.4 Tabel fitur Model Penjadwalan Gamma ... 36

Tabel III.5 Tabel fitur Algoritma Penjadwalan ... 37

Tabel III.6 Tabel fitur Sequencer ... 40

Tabel IV.1 Kelas-kelas implementasi framework ... 67

Tabel IV.2 Tabel komponen-komponen implementer framework ... 74

Tabel A.1 Daftar method pada hot-spot Job... 81

Tabel A.2 Daftar method pada hot-spot Operation ... 83

Tabel A.3 Daftar method pada hot-spot Alpha ... 85

Tabel A.4 Daftar method pada hot-spot Beta ... 86

Tabel A.5 Daftar method pada hot-spot Precedence ... 88

Tabel A.6 Daftar method pada hot-spot Bacth ... 89

Tabel A.7 Daftar method pada hot-spot Bacth Element ... 90

Tabel A.8 Daftar method pada hot-spot Gamma ... 92

Tabel A.9 Daftar method pada hot-spot Algorithm ... 95

Tabel A.10 Daftar method pada hot-spot Sequencer ... 96

Tabel A.11 Daftar elemen DSL Job ... 97

Tabel A.12 Daftar elemen DSL Operation ... 98

Tabel A.13 Daftar elemen DSL Alpha ... 100

Tabel A.14 Daftar elemen DSL Beta ... 101

Tabel A.15 Daftar elemen DSL Precedence ... 103

Tabel A.16 Daftar elemen DSL Batch ... 105

Tabel A.17 Daftar elemen DSL Batch ... 106

(16)

xv

Tabel A.19 Daftar elemen DSL Algortihm ... 109 Tabel A.20 Daftar elemen DSL Sequencer ... 111

(17)

xvi

DAFTAR SINGKATAN

SINGKATAN Deskripsi Pemakaian pertama

pada halaman CRC

Class-Responsibility-Collaboration

19

DE Domain Engineering 3

DOM Document Object Model 63

DSL Domain Specific Language 3

FCP Framework Construction

Principle

16

IDE Integrated Development

Environment

66

JVM Java Virtual Machine 64

OOAD Object-Oriented Analysis and Design

19

SAX Simple API for XML 63

UML Unified Modeling Language 19

W3C World Wide Web Consortium 63

(18)

xvii

DAFTAR ISTILAH

Bahasa Asing/Inggris Bahasa Indonesia Pemakaian pertama pada halaman

Application engineering Rekayasa aplikasi 5

Bytecode manipulation Manipulasi bytecode 3

Design pattern Pola rancangan 3

Domain analysis Analisis domain 4

Domain design Perancangan domain 4

Domain engineering Rekayasa domain 3

Domain implementation Implementasi domain 4

Domain specific language Bahasa spesifik domain 3

Feature diagram Diagram fitur 8

Feature model Model fitur 6

Feature modeling Pemodelan fitur 3

Framework construction

principle Prinsip konstruksi

framework

16

Hook method Metode hook 16

Hot-spot card Kartu hot-spot 21

Hot-spot driven Dituntun hot-spot 19

Template method Metode template 16

Referensi

Dokumen terkait