Bab II Landasan Teori II.1 Rekayasa Domain - digilib.itb.ac.id · 5 bahasa spesifik domain,...

23
4 Bab II Landasan Teori II.1 Rekayasa Domain Domain adalah bidang pengetahuan yang (1) dibatasi untuk memaksimumkan kepuasan pihak-pihak yang berkepentingan, (2) memasukkan sekumpulan konsep dan terminologi yang dipahami oleh praktisi-praktisi di bidang itu, dan (3) memasukkan pengetahuan bagaimana membangun sistem-sistem perangkat lunak (atau bagian-bagian dari sistem-sistem perangkat lunak) di bidang itu. Domain dari sistem dapat dibagi menjadi dua jenis yaitu domain dari sistem dan domain dari bagian sistem (subsistem). Jenis pertama dari domain disebut sebagai domain vertikal (misalnya domain sistem medical record, domain sistem finansial, dan lain-lain.) dan jenis kedua disebut sebagai domain horisontal (misalnya sistem basis data, pustaka kode numerik, dan lain-lain.) Rekayasa domain adalah aktivitas mengumpulkan, mengorganisasikan, dan menyimpan pengalaman dalam membangun sistem-sistem atau bagian-bagian dari sistem-sistem pada domain tertentu dalam bentuk aset-aset yang dapat digunaulang (reuse) yaitu produk-produk yang dapat digunaulang, juga menyediakan sarana-sarana yang memadai untuk menggunaulang aset-aset ini (yaitu kualifikasi, penyebaran, adaptasi, perakitan, dan sebagainya) ketika membangun sistem-sistem baru. Rekayasa domain terdiri dari tiga tahap [1]: 1. Analisis domain (domain analysis), mendefinisikan sekumpulan kebutuhan yang dapat digunaulang untuk sistem-sistem di domain. Analisis domain mengidentifikasi lingkup, fitur-fitur, dan titik-titik variasi sistem. 2. Perancangan domain (domain design), menetapkan satu arsitektur yang umum (common) untuk sistem-sistem pada satu domain. 3. Implementasi domain (domain implementation), mengimplementasi aset- aset yang dapat digunaulang misalnya framework, komponen-komponen,

Transcript of Bab II Landasan Teori II.1 Rekayasa Domain - digilib.itb.ac.id · 5 bahasa spesifik domain,...

Page 1: Bab II Landasan Teori II.1 Rekayasa Domain - digilib.itb.ac.id · 5 bahasa spesifik domain, generator-generator, dan infrastruktur yang dapat digunaulang (reusable) .Rekayasa domain

4

Bab II

Landasan Teori

II.1 Rekayasa Domain

Domain adalah bidang pengetahuan yang (1) dibatasi untuk memaksimumkan

kepuasan pihak-pihak yang berkepentingan, (2) memasukkan sekumpulan konsep

dan terminologi yang dipahami oleh praktisi-praktisi di bidang itu, dan (3)

memasukkan pengetahuan bagaimana membangun sistem-sistem perangkat lunak

(atau bagian-bagian dari sistem-sistem perangkat lunak) di bidang itu.

Domain dari sistem dapat dibagi menjadi dua jenis yaitu domain dari sistem dan

domain dari bagian sistem (subsistem). Jenis pertama dari domain disebut

sebagai domain vertikal (misalnya domain sistem medical record, domain sistem

finansial, dan lain-lain.) dan jenis kedua disebut sebagai domain horisontal

(misalnya sistem basis data, pustaka kode numerik, dan lain-lain.)

Rekayasa domain adalah aktivitas mengumpulkan, mengorganisasikan, dan

menyimpan pengalaman dalam membangun sistem-sistem atau bagian-bagian dari

sistem-sistem pada domain tertentu dalam bentuk aset-aset yang dapat

digunaulang (reuse) yaitu produk-produk yang dapat digunaulang, juga

menyediakan sarana-sarana yang memadai untuk menggunaulang aset-aset ini

(yaitu kualifikasi, penyebaran, adaptasi, perakitan, dan sebagainya) ketika

membangun sistem-sistem baru. Rekayasa domain terdiri dari tiga tahap [1]:

1. Analisis domain (domain analysis), mendefinisikan sekumpulan

kebutuhan yang dapat digunaulang untuk sistem-sistem di domain.

Analisis domain mengidentifikasi lingkup, fitur-fitur, dan titik-titik variasi

sistem.

2. Perancangan domain (domain design), menetapkan satu arsitektur yang

umum (common) untuk sistem-sistem pada satu domain.

3. Implementasi domain (domain implementation), mengimplementasi aset-

aset yang dapat digunaulang misalnya framework, komponen-komponen,

Page 2: Bab II Landasan Teori II.1 Rekayasa Domain - digilib.itb.ac.id · 5 bahasa spesifik domain, generator-generator, dan infrastruktur yang dapat digunaulang (reusable) .Rekayasa domain

5

bahasa spesifik domain, generator-generator, dan infrastruktur yang dapat

digunaulang (reusable) .

Rekayasa domain dapat diterapkan untuk berbagai permasalahan, seperti

pengembangan framework, pustaka-pustaka komponen, bahasa spesifik domain,

dan generator-generator.

Gambar II.1 Rekayasa Domain [1]

Rekayasa aplikasi (application engineering) adalah proses membangun sistem-

sistem kongkret berbasis pada hasil rekayasa domain. Selama analisis untuk

sistem-sistem baru, pengembang memanfaatkan model domain dan memilih

kebutuhan-kebutuhan (fitur-fitur) dari model domain yang memenuhi.

II.1.1 Analisis Domain

Analisis domain merepresentasikan pendekatan sistematik untuk mengidentifikasi

lingkup, fitur-fitur, dan titik-titik variasi pada domain. Analisis domain tidak

Page 3: Bab II Landasan Teori II.1 Rekayasa Domain - digilib.itb.ac.id · 5 bahasa spesifik domain, generator-generator, dan infrastruktur yang dapat digunaulang (reusable) .Rekayasa domain

6

hanya mengidentifikasi fitur-fitur relevan yang tampak tapi juga fitur-fitur relevan

yang masih merupakan potensi sedini mungkin. Pengetahuan mengenai fitur-fitur

yang direncanakan dan yang masih potensi merupakan syarat untuk memperoleh

rancangan yang tangguh untuk diadaptasi dan diperbesar (scale up).

Tujuan utama dari analisis domain adalah [1] :

Memilih domain dan menetapkan fokus, dan

Mengumpulkan informasi domain yang relevan dan mengintegrasikan ke

dalam domain model yang koheren.

Sumber informasi domain dapat berasal dari sistem yang ada di domain itu

sendiri, pakar-pakar pada domain tersebut, buku-buku pegangan tentang sistem,

prototipe, eksperimen, dan sebagainya.

Analisis domain adalah pemodelan. Pemodelan fitur bertujuan menangkap

kesamaan (commonalities) dan keberagaman (variabilities) dalam abstraksi level

tinggi, tidak terikat mekanisme dan teknologi implementasi. Model fitur (feature

model) merepresentasikan aspek konfigurasi perangkat lunak gunaulang pada

level lebih abstrak.

II.1.2 Perancangan Domain

Perancangan domain bertujuan untuk mengembangkan arsitektur generik untuk

seluruh sistem di satu domain (satu keluarga sistem), dan rancangan-rancangan

yang akan diimplementasikan seperti (1) arsitektur generik satu keluarga sistem,

(2) rancangan komponen-komponen implementasi elementer dan (3) DSL

(Domain Specific Language)

Perancangan domain menghasilkan arsitektur untuk memperoleh struktur yang

luwes yang memenuhi semua kebutuhan dan tetap memberikan tingkat kebebasan

yang besar untuk implementasi. Arsitektur untuk satu keluarga sistem harus lebih

luwes karena harus mencakup himpunan-himpunan kebutuhan sistem-sistem

berbeda di satu keluarga sistem. Arsitektur satu keluarga sistem harus

memasukkan representasi eksplisit keberagaman yang dicakup sehingga

Page 4: Bab II Landasan Teori II.1 Rekayasa Domain - digilib.itb.ac.id · 5 bahasa spesifik domain, generator-generator, dan infrastruktur yang dapat digunaulang (reusable) .Rekayasa domain

7

arsitektur-arsitektur kongkret dapat dikonfigurasi berbasis himpunan-himpunan

kebutuhan yang spesifik. Salah satu cara untuk menangkap variabilitas adalah

dengan menyediakan bahasa konfigurasi spesifik domain untuk menspesifikasikan

arsitektur (struktur) yang dapat dikonfigurasikan.

DSL adalah bahasa berorientasi persoalan. DSL menawarkan cara yang jelas

dalam mengekspresikan konsep-konsep spesifik domain yang kompleks dan

membuat perangkat lunak yang lebih mudah berubah, dan secara signifikan

meningkatkan produktivitas pengembang [2]. Penggunaan bahasa spesifik domain

meningkatkan level abstraksi dengan menspesifikasikan solusi secara langsung

menggunakan konsep-konsep domain persoalan. Produk-produk akhir kemudian

dibangkitkan dari spesifikasi level tinggi ini. Masing-masing bahasa spesifik

domain fokus pada domain tertentu yang memungkinkan otomatisasi dan

mempermudah pendefinisian.

II.1.3 Implementasi Domain

Selama implementasi domain, pengembang menerapkan teknologi-teknologi yang

cocok untuk mengimplementasi komponen-komponen elementer dan bahasa

konfigurasi spesifik domain. Bahasa konfigurasi spesifik domain dapat

diimplementasikan dengan satu deret <attribute>=<value>. Pengembang aplikasi

hanya perlu membuat deret <attribute>=<value> untuk menspesifikasi

komponen-komponen dan/atau sistem yang dikehendaki.

II.2 Pemodelan Fitur

Pada analisis domain, keberagaman dapat diekspresikan dengan pemodelan fitur

(feature modeling) [1]. Pemodelan fitur adalah teknik utama untuk

mengidentifikasi dan menangkap keberagaman. Pemodelan fitur adalah aktivitas

pemodelan properti-properti yang umum (common) dan beragam (variable), serta

kebergantungan-kebergantungannya dan mengorganisasikan properti-properti itu

dalam satu model yang koheren yang disebut model fitur.

Model fitur adalah representasi yang kompak (compact) dari semua sistem yang

dimungkinkan pada satu keluarga sistem[1]. Model fitur digunakan untuk

memodelkan sekumpulan sistem dalam fitur-fitur dan hubungan-hubungan di

Page 5: Bab II Landasan Teori II.1 Rekayasa Domain - digilib.itb.ac.id · 5 bahasa spesifik domain, generator-generator, dan infrastruktur yang dapat digunaulang (reusable) .Rekayasa domain

8

antara fitur-fitur itu. Merancang sistem perangkat lunak dalam istilah-istilah fitur-

fitur lebih alami dibanding dalam istilah-istilah objek-objek atau kelas-kelas.

Sistem perangkat lunak disusun dan sekumpulan fitur-fitur.

Pada model fitur, properti-properti kualitatif konsep direpresentasikan dengan

fitur-fitur. Fitur adalah unit logik perilaku yang dispesifikasikan[1]. Fitur adalah

properti dari konsep domain yang relevan untuk suatu pihak yang berkepentingan

dan digunakan untuk membedakan instan-instan konsep. Fitur adalah bentukan

untuk mengelompokkan kebutuhan-kebutuhan yang terkait. Fitur-fitur adalah cara

untuk mengabstraksikan kebutuhan-kebutuhan.

Pemahaman dan pemodelan keberagaman diperlukan agar pengembangan

perangkat lunak semakin produktif dan terutama meningkatkan gunaulang yang

akan menghasilkan efisiensi pengkodean yang berarti peningkatan produktivitas.

Arsitektur yang luwes dan sekumpulan komponen gunaulang dirancang untuk

memaksimumkan keberagaman untuk memaksimumkan kemampuan

membangkitkan anggota-anggota keluarga sistem. Keluarga sistem membentuk

satu domain, biasanya dapat direpresentasikan menggunakan model fitur.

Pemodelan fitur sangat penting pada rekayasa untuk gunaulang. Perangkat lunak

untuk gunaulang berisi keberagaman yang lebih banyak dibanding sistem-sistem

kongkret. Pemodelan fitur mengatasi dua persoalan, yaitu: (1) fitur-fitur relevan

dan titik-titik variasi tidak dimasukkan ke perangkat lunak, (2) banyak fitur dan

titik variasi dimasukkan tapi tidak pernah digunakan dan ini menyebabkan

kompleksitas, ongkos pengembangan dan ongkos pemeliharaan yang tidak perlu.

Gambar II.2 menunjukkan peran pemodelan fitur untuk menyaring fitur-fitur yang

dikemukakan. Pemodelan fitur menyaring fitur-fitur yang tidak relevan yang

hanya akan memperbesar ukuran elemen. Hasil pemodelan fitur adalah model

fitur yang terdiri dari diagram fitur (feature diagram) dan deskripsi terhadap

diagram-diagram fitur itu.

Page 6: Bab II Landasan Teori II.1 Rekayasa Domain - digilib.itb.ac.id · 5 bahasa spesifik domain, generator-generator, dan infrastruktur yang dapat digunaulang (reusable) .Rekayasa domain

9

Gambar II.2 Pemodelan Fitur [3]

II.2.1 Model Fitur

Model fitur merepresentasikan fitur-fitur umum dan beragam dari sebuah konsep

serta kebergantungan antara fitur-fitur variabel tersebut. Model fitur dibuat pada

tahap pemodelan fitur. [1]

Fitur muncul pada sembarang level seperti level kebutuhan sistem level tinggi,

level arsitektur, level subsistem, level komponen, bahakan pada level

implementasi (yaitu level objek atau prosedur). Pemodelan terhadap semantik

fitur biasanya memerlukan formalisasi pemodelan yang lain seperti diagram

objek, diagram interaksi, atau diagram state-transition.

Model fitur berisi diagram fitur dan beberapa informasi tambahan antara lain

sebagai berikut (1) deskripsi semantiks ringkas masing-masing fitur, (2) alasan

untuk masing-masing fitur, (3) pihak-pihak yang berkepentingan terhadap fitur,

Fitur-fitur relevan yang tampak

Fitur-fitur relevan yang potensial

Fitur-fitur tidak relevan

Pemodelan Fitur

Diagram-diagram fitur Deskripsi diagram-diagram fitur

Model Fitur

Fitur-fitur relevan yang tampak

Fitur-fitur relevan yang potensial

Page 7: Bab II Landasan Teori II.1 Rekayasa Domain - digilib.itb.ac.id · 5 bahasa spesifik domain, generator-generator, dan infrastruktur yang dapat digunaulang (reusable) .Rekayasa domain

10

(4) contoh-contoh sistem dengan fitur yang dikaji, (5) konstrain-konstrain

terhadap fitur, (6) aturan-aturan kebergantungan default, (7) dimana, kapan dan

pada apa fitur tersedia dan diikatkan, dan (8) prioritas-prioritas fitur. Diagram fitur

menyediakan notasi grafis seperti pohon. Diagram fitur menunjukkan hirarki fitur-

fitur. Akar pohon diagram fitur merepresentasikan satu simpul konsep. Semua

simpul lain merepresentasikan tipe-tipe fitur berbeda. Fitur-fitur merepresentasi

karakteristik-karakteristik yang dapat dibedakan dari satu konsep. [3]

II.2.2 Diagram Fitur

Sebuah diagram fitur terdiri dari kumpulan simpul (node), kumpulan sisi (edge),

dan kumpulan dekorasi sisi (edge decoration). Simpul-simpul dan dan tepi-tepi

yang ada membentuk sebuah pohon (tree). Dekorasi sisi adalah garis yang

digambarkan sebagai busur yang menghubungkan sebagian atau semua sisi yang

berasal dari simpul yang sama. Akar (root) dari sebuah diagram fitur

merepresentasikan sebuah konsep, yang disebut simpul konsep (concept node).

Simpul-simpul lainnya dalam diagram fitur merepresentasikan fitur-fitur dan

disebut simpul fitur (feature node). [1]. Berikut ini adalah tabel notasi diagram

fitur :

Tabel II.1 Tabel notasi diagram fitur [1]

Notasi Nama

Simpul konsep (concept node)

Simpul fitur (feature node)

Page 8: Bab II Landasan Teori II.1 Rekayasa Domain - digilib.itb.ac.id · 5 bahasa spesifik domain, generator-generator, dan infrastruktur yang dapat digunaulang (reusable) .Rekayasa domain

11

Tabel II.1 Tabel notasi diagram fitur [1] (lanjutan)

Notasi Nama

Dekorasi sisi untuk fitur opsional

(optional feature)

Dekorasi sisi (edge decoration) untuk

fitur mandatori (mandatory feature)

Dekorasi sisi untuk fitur alternatif

(alternative feature)

Dekorasi sisi untuk fitur or (or

feature)

Pada Gambar II.3 dapat kita lihat sebuah diagram fitur dengan tiga buah simpul

fitur f1, f2, dan f3 dan sebuah simpul konsep C, dimana induk dari f1 adalah C,

induk dari f2 adalah f1, dan induk dari f3 adalah f2. Dengan keterhubungan diatas

kita dapat mengatakan bahwa (1) f1 adalah fitur lansung (direct feture) dari C, (2)

f2 dan f3 adalah fitur tidak lansung (inderect feature) dari C, (3) f2 adalah subfitur

lansung (direct subfeature) dari f1, dan (4) f3 adalah subfitur tidak lansung

(inderect subfeature) dari f1.

Gambar II.3 Diagram Fitur

Page 9: Bab II Landasan Teori II.1 Rekayasa Domain - digilib.itb.ac.id · 5 bahasa spesifik domain, generator-generator, dan infrastruktur yang dapat digunaulang (reusable) .Rekayasa domain

12

Pemodelan fitur mendukung mandatory features, optional features, alternative

features (mutual exclusive dari satu fitur), dan or feature. Mandatory feature

(Gambar II.4) adalah deskripsi satu konsep jika dan hanya jika simpul induk

termasuk dalam deskripsi konsep.

Gambar II.4 Diagram Fitur dengan fitur mandatory

Optional feature (Gambar II.5) dapat dimasukkan di deskripsi satu konsep jika

dan hanya jika simpul induknya termasuk dalam deskripsi. Optional feature dapat

dimasukkan atau tidak dimasukkan, dan jika simpul induk tidak dimasukkan,

optional feature tidak dapat dimasukkan.

Gambar II.5 Diagram Fitur dengan fitur optional

Page 10: Bab II Landasan Teori II.1 Rekayasa Domain - digilib.itb.ac.id · 5 bahasa spesifik domain, generator-generator, dan infrastruktur yang dapat digunaulang (reusable) .Rekayasa domain

13

Satu konsep dapat mempunyai satu himpunan atau levih dari alternative features

(Gambar II.6). Fitur juga dapat mempunyai satu himpunan alternative

subfeatures. Jika induk dari himpunan alternative features dimasukkan di

deskripsi satu konsep, maka tepat satu fitur dari himpunan alternative features

masuk di deskripsi, fitur-fitur lain di himpunan tidak masuk di deskripsi.

C

f1 f2 f3 f4 f5

Gambar II.6 Diagram Fitur dengan fitur alternatif

Konsep dapat mempunyai satu himpunan atau lebih dari or-features (Gambar

II.7). Fitur dapat mempunyai satu himpunan or-subfeatures atau lebih. Jika induk

himpunan or-features dimasukkan di deskripsi satu konsep, maka sembarang

subset himpunan or-features tidak kosong harus dimasukkan di deskripsi.

Gambar II.7 Diagram Fitur dengan fitur or

II.2.3 Kesamaan dan Keberagaman

Diagram fitur dapat merepresentasikan kesamaan dan keberagaman.[1] Common

feature dari satu konsep adalah fitur yang ada di semua instan satu konsep.

Kesamaan diekspresikan dengan mandatory features. Keberagaman diekspresikan

menggunakan optional features, alternative features, optional alternative

Page 11: Bab II Landasan Teori II.1 Rekayasa Domain - digilib.itb.ac.id · 5 bahasa spesifik domain, generator-generator, dan infrastruktur yang dapat digunaulang (reusable) .Rekayasa domain

14

features, dan or-features. Kesemuanya itu disebut variable features. Simpul

dimana variable features dicantolkan disebut titik variasi (variation point).

Pemodelan fitur cocok untuk analisis variabilitas kebutuhan-kebutuhan pada

sistem. Setelah titik-titik variabilitas diidentifikasi maka kemudian pengembang

perlu memilih mekanisme-mekanisme untuk mengimplementasikannya.

Model fitur mengekspresikan variabilitas pada level abstrak. Model fitur juga

berisi kebergantungan-kebergantungan di antara variable features yang

dieskpresikan dalam konstrain dan aturan kebergantungan default. Konstrain

menspesifikasikan kombinasi fitur yang absah dan tidak absah. Aturan

kebergantungan default menyarankan nilai-nilai default untuk parameter-

parameter yang tidak dispesifikasikan berdasar parameter-parameter lain.[3]

II.3 Framework Berorientasi Objek (Object Oriented Framework)

Framework berorientasi objek adalah sebuah teknologi yang menjanjikan untuk

membentuk rancangan dan implementasi perangkat lunak yang handal sehingga

dapat mengurangi ongkos pembangunan dan meningkatkan kualitas perangkat

lunak. Sebuah framework dapat diartikan sebagai aplikasi “setengah jadi” yang

dapat digunaulang dan dapat dikhususkan untuk menghasilkan bermacam-macam

aplikasi dalam sebuah domain tertentu. Berbeda dengan teknik gunaulang pada

paradigma berorientasi objek yang berbasis pada pustaka kelas, framework lebih

ditujukan untuk unit-unit bisnis tertentu (misalnya pemrosesan data atau

komunikasi selular) dan untuk domain-domain aplikasi (misalnya antarmuka

pengguna). [4]

Manfaat-manfaat utama dari framework berorientasi objek sangat beragam yaitu

modularitas, penggunaulangan, dan perluasan. [4]

1. Modularitas (Modularity)

Framework dapat meningkatkan modularitas dengan mengenkapsulasi

detail-detail implementasi yang mudah berubah dibelakang sebuah

antarmuka yang stabil. Modularitas dari sebuah framework dapat

membantu untuk meningkatkan kualitas perangkat lunak dengan

melokalisasi dampak dari perubahan-perubahan rancangan dan

Page 12: Bab II Landasan Teori II.1 Rekayasa Domain - digilib.itb.ac.id · 5 bahasa spesifik domain, generator-generator, dan infrastruktur yang dapat digunaulang (reusable) .Rekayasa domain

15

implementasi. Adanya lokalisasi ini mengurangi usaha yang diperlukan

untuk memahami dan merawat perangkat lunak.

2. Penggunaulangan (Reusability)

Antarmuka yang stabil yang disediakan oleh framework meningkatkan

peggunaulangan dengan mendefinisikan komponen-komponen generik

yang dapat digunaulang untuk membentuk aplikasi baru. Penggunaulangan

pada framework dapat memaksimalkan domain pengetahuan dan usaha

pengembang-pengembang berpengalaman sebelumnya untuk menghindari

pembangunan kembali solusi-solusi yang umum pada pembangunan

perangkat lunak-perangkat lunak. Penggunaulangan pada framework dapat

meningkatkan produktifitas pemrogram serta meningkatkan kualitas,

kinerja dan kehandalan dari perangkat lunak.

3. Perluasan (Extensibility)

Sebuah framework meningkatkan perluasan dengan menyediakan metode-

metode eksplisit untuk digunakan oleh pengembang. Metode-metode ini

secara sistematis melepas ikatan antara antarmuka-antarmuka yang stabil

dan perilaku dari domain aplikasi dengan bagian-bagian aplikasi yang

memerlukan instantiasi. Perluasan ini sangat penting dalam mengurangi

waktu untuk kostumisasi layanan-layanan dan fitur-fitur aplikasi.

Framework memberi peningkatan penting pengembangan komponen gunaulang

berskala besar dibanding komponen gunaulang pada pendekatan tradisional. Pada

penggunaan pustaka (library), pengembang (developer) aplikasi menulis program

utama, menentukan aliran kendali dan kode pengembang memanggil kode

pustaka. Pada penggunaan framework, pengembang aplikasi menulis kode

implementasi spesifiknya, dan framework menentukan aliran kendali dan kode

framework yang memanggil kode implementasi tersebut.

Framework dimaksud untuk mereduksi usaha pengembangan produk perangkat

lunak serta menghasilkan perangkat lunak berkualitas. Aplikasi dibangun

menggunakan framework sebagai basis dan memperluasnya dengan fungsionalitas

spesifik aplikasi. Framework mempermudah pengembangan aplikasi,

Page 13: Bab II Landasan Teori II.1 Rekayasa Domain - digilib.itb.ac.id · 5 bahasa spesifik domain, generator-generator, dan infrastruktur yang dapat digunaulang (reusable) .Rekayasa domain

16

memungkinkan penulisan kode sesedikit mungkin, memungkinkan pemrogram

pemula menulis program bagus.

Secara umum framework dapat dibagi menjadi dua bagian yaitu [4]:

1. Kernel (frozen spot)

Frozen-spot adalah bagian dari framework yang cenderung tetap dan sulit

untuk diubah. Frozen-spot telah dimplementasikan sebelumnya di dalam

framework dan akan selalu ada dalam setiap instan dari framework.

2. Hot-spot

Hot-spot adalah titik fleksibilitas dari framework. Hot-spot akan

diimplementasikan oleh pengguna sesuai kebutuhannya. Hot-spot ini

nantinya akan dipanggil oleh frozen spot sesuai dengan event yang terjadi

dalam framework.

II.3.1 Prinsip-prinsip konstruksi Framework (Framework Construction Principles)

Prinsip konstruksi framework (FCP – framework construction principles)

berurusan dengan bagaimana membuat sebuah framework dapat diperluas. [5]

Gagasan dasar FCP adalah memisahkan antara

1. template method, ditandai sebagai t()

2. hook method, ditandai sebagai h()

Gambar II.8 Arsitektur Framework [4]

Page 14: Bab II Landasan Teori II.1 Rekayasa Domain - digilib.itb.ac.id · 5 bahasa spesifik domain, generator-generator, dan infrastruktur yang dapat digunaulang (reusable) .Rekayasa domain

17

Jika metode melakukan pemanggilan (invoke) metode lain, metode pemanggil

adalah template method dan metode yang dipanggil adalah hook method. Konsep

orientasi objek memungkinkan melakukan overriding terhadap hook method yang

akan mengubah perilaku template method.

Template method t() mempunyai hook h() dimana dua item kongkret dapat

dipasangkan (plugged) pada (h1() dan h2()). Hasil ini di template method dengan

dua perilaku berbeda: t() dengan h1() dan t() dengan h2().

Gambar II.9 Konsep Template-Hook [5]

Kelas yang mempunyai template method ditandai sebagai T. Kelas yang

mempunyai hook method ditandai sebagai H. Kelas yang berisi template method

dan hook method ditandai sebagai TH. Kelas yang mempunyai concrete hook

method ditandai sebagai HA.

Berdasarkan penempatan template method dan hook method di satu kelas atau dua

kelas, kita memperoleh lima FCP:

Tabel II.2 Framework Construction Principles [5]

No. FCP Deskripsi

1 Unification principle t() dan h() di satu kelas TH

2 Separation principle T dan H secara abstrak di-couple

3 Composite principle T dan H secara abstrak di-couple dan T subkelas

dari H, objek T mengacu ke nol atau sejumlah

objek H; t() dan h() mempunyai nama yang sama.

Page 15: Bab II Landasan Teori II.1 Rekayasa Domain - digilib.itb.ac.id · 5 bahasa spesifik domain, generator-generator, dan infrastruktur yang dapat digunaulang (reusable) .Rekayasa domain

18

Tabel II.2 Framework Construction Principles [5] (lanjutan)

No. FCP Deskripsi

4 Decorator principle sama dengan di atas; perbedaannya: objek T

mengacu nol atau satu objek H.

5 Chain-of-

responsibility

principle

t() dan h() membentuk satu method

Diagram kelas dari FCP dari Tabel II.2 digambarkan pada Gambar II.10

Gambar II.10 Konsep Template-Hook [5]

Page 16: Bab II Landasan Teori II.1 Rekayasa Domain - digilib.itb.ac.id · 5 bahasa spesifik domain, generator-generator, dan infrastruktur yang dapat digunaulang (reusable) .Rekayasa domain

19

II.3.2 Pengembangan Framework Dengan Hot-Spot Driven. Framework yang baik umumnya adalah hasil dari beberapa iterasi perancangan.

Sehingga tidak ada framework yang ideal saat pertama dibuat. Karena itu

dibutuhkan metode pengembangan framework yang baik agar dapat dihasilkan

framework yang bagus dengan waktu yang relatif singkat. Proses Pengembangan

Hot-Spot Driven adalah salah satu metode yang dapat digunakan untuk

mengembangkan framework. Gambar II.11 menunjukkan proses pengembangan

framework dengan hot-spot driven.

Proses Pengembangan Hot-Spot Driven terdiri dari beberapa langkah-langkah

pengembangan sebagai berikut :

1. Pendefinisian Model Objek yang Spesifik.

Metodologi Analisis dan Desain Berorintasi Objek (OOAD – Object Oriented

Analysis and Design) mendukung identifikasi awal terhadap objek-objek dan

kelas-kelas yang membentuk sebuah sistem. Misalnya Unified

Modelling Language (UML). Demikian juga dengan penggunaan kartu Class-

Responsibility-Collaboration (CRC) membantu dalam identifikasi awal dari

objek-objek dan asosiasinya.

Pemodelan objek membutuhkan pengetahuan spesifik-domain. Aktifitas ini

dilakukan perekayasa perangkat lunak dibantu dengan ahli pada domain

tersebut. Proses ini sendiri adalah proses yang kompleks dan membutuhkan

banyak iterasi. Objek-objek yang dibentuk harus diperhalus (refine) sampai

memenuhi kebutuhan-kebutuhan yang spesifik terhadap domain tersebut.

2. Identifikasi hot-spot.

Dalam proses ini akan dilakukan identifikasi terhadap hot-spot yang mungkin

muncul dalam framework. Dalam mengidentifikasi hot-spot perekayasa

perangkat lunak harus memperhatikan FCP (Framework Construction

Principle) dan mengkombinasikannya dengan semantik dari domain yang

diteliti. Perekayasa perangkat lunak harus berkolaborasi dengan pakar domain

(domain expert) untuk mengidentifikasi hot-spot.

Page 17: Bab II Landasan Teori II.1 Rekayasa Domain - digilib.itb.ac.id · 5 bahasa spesifik domain, generator-generator, dan infrastruktur yang dapat digunaulang (reusable) .Rekayasa domain

20

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

Umumnya para pakar domain tidak memahami tentang konsep seperti kelas,

objek, pewarisan dsb, apalagi konsep mengenai framework dan pola rancangan

(design pattern), karena itu komunikasi antara perekayasa perangkat lunak dan

pakar domain harus menggunakan cara yang dapat dimengerti oleh keduanya.

Page 18: Bab II Landasan Teori II.1 Rekayasa Domain - digilib.itb.ac.id · 5 bahasa spesifik domain, generator-generator, dan infrastruktur yang dapat digunaulang (reusable) .Rekayasa domain

21

Kartu hot-spot (hot-spot card) adalah salah satu cara yang dapat digunakan.

Nama hot-spot

derajat fleksibilitas

adaptasi tanpa restart

adaptasi oleh end-user

Deskripsi :

Deskripsi umum mengenai semantik hot-spot.

Variabilitas :

Behaviour hot-spot dan contoh situasi-situasi berbeda yang

mungkin muncul.

Gambar II.12 Kartu Hot-Spot [4]

Kartu hot-spot ini menyediakan informasi mengenai nama hot-spot, yang

merupakan sebuah istilah ringkas yang menggambarkan fungsionalitas yang

harus dijaga sefleksibel mungkin. Kartu hot-spot juga menyediakan informasi

mengenai derajat fleksibilitas dari hot-spot apakah hot-spot tersebut dapat

beradaptasi tanpa restart aplikasi dan apakah hot-spot tersebut dapat

diadaptasi oleh end-user. Berikut adalah tabel deskripsinya.

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

Adaptasi Adaptasi

oleh end-userModel objek

Dengan restart Tidak Tambahan hook method

Tanpa restart Tidak Tambahan hook method di kelas

yang berbeda

Dengan restart Ya Tambahan hook method dan

konfigurasi eksternal

Tanpa restart Ya Tambahan hook method di kelas

yang berbeda dan konfigurasi

eksternal

Page 19: Bab II Landasan Teori II.1 Rekayasa Domain - digilib.itb.ac.id · 5 bahasa spesifik domain, generator-generator, dan infrastruktur yang dapat digunaulang (reusable) .Rekayasa domain

22

3. Perancangan (ulang) framework.

Setelah pakar domain dan perekayasa perangkat lunak mengidentifikasi kartu-

kartu hot-spot, perekayasa perangkat lunak harus memodifikasi model objek

untuk mendapatkan fleksibilitas hot-spot yang diinginkan. FCP digunakan

untuk membantu perekayasa perangkat lunak dalam tahap ini. Dalam tahap ini

dihasilkan model objek yang telah dimodifikasi sehingga memenuhi FCP.

4. Penggunaan framework

Framework seharusnya digunakan beberapa kali untuk mengetahui

kelemahannya atau mengidentifikasi hot-spot yang tidak cocok ataupun

mungkin hot-spot yang hilang. Identifikasi hot-spot secara eksplisit dengan

menggunakan kartu hot-spot dan FCP berkontribusi terhadap pengurangan

secara signifikan terhadap siklus iterasi pembangungan framework.

II.4 Deskripsi Sistem Penjadwalan

Penjadwalan (scheduling) merupakan proses pembuatan jadwal-jadwal [6].

Jadwal adalah rencana atau dokumen yang memberitahu kapan sesuatu akan

terjadi, menunjukkan satu rencana pewaktuan aktivitas-aktivitas tertentu yang

merupakan jawaban pertanyaan : “Kapan sesuatu akan berlangsung?”. Pada

proses penjadwalan, kita perlu menspesifikasi tipe dan jumlah masing-masing

sumber daya sehingga dapat menentukan kapan operasi-operasi dapat dilakukan

secara layak. Saat menspesifikasi sumber daya, kita mendefinisi batasan

penjadwalan. Kita mendeskripsi masing-masing operasi dalam kebutuhan sumber

daya, durasi, waktu dapat dimulai, durasi pengolahan, waktu seharusnya telah

selesai, dan sebagainya.

Teori penjadwalan telah dikembangkan sejak tahun 1950-an. Penjadwalan banyak

ditemui pada manufakturing dan rekayasa secara umum [8].

II.4.1 Teori Penjadwalan Teori penjadwalan berkaitan dengan model-model matematika yang berhubungan

dengan proses penjadwalan. Pengembangan model yang bagus menuntun

penemuan teknik-teknik penyelesaian. Pendekatan kuantitatif dimulai dengan

Page 20: Bab II Landasan Teori II.1 Rekayasa Domain - digilib.itb.ac.id · 5 bahasa spesifik domain, generator-generator, dan infrastruktur yang dapat digunaulang (reusable) .Rekayasa domain

23

deskripsi sumber daya–sumber daya dan operasi-operasi serta menerjemahkan

goal keputusan menjadi fungsi objektif eksplisit. Solusi terhadap persoalan

penjadwalan adalah sembarang penyelesaian yang layak, memenuhi batas

kapasitas sumber daya (mesin) dan urutan dimana job-job dilaksanakan. Solusi

menjawab dua pertanyaan : 1.Sumber daya mana yang akan dialokasi untuk

operasi? 2.Kapan operasi dilakukan? [8]

Hubungan antara persoalan penjadwalan dan teknik penyelesaian dapat dikaji

dengan teori kompleksitas. Kompleksitas mengacu pada usaha komputasi oleh

algoritma penyelesaian. Usaha komputasi sering dideskripsi dengan notasi order-

of-magnitude. Misalkan kita menggunakan algoritma untuk menyelesaikan

persoalan berukuran n. Secara teknis, n menunjukkan ukuran (jumlah) informasi

untuk menspesifikasi persoalan. Jumlah komputasi yang diperlukan algoritma

biasanya berbatas atas oleh satu fungsi dari n. Jika order-of-magnitude fungsi

adalah polinom begitu n membesar maka kita sebut algoritma adalah polinom (P).

Jika fungsi adalah O(2n) maka algoritma adalah non-polinom (NP), dalam kasus

ini adalah eksponensial. Kita lebih baik menggunakan algoritma polinom.

Terdapat kelas persoalan NP-complete yang termasuk di dalamnya persoalan

kombinatorial yang sulit. Jika satu darinya dapat diselesaikan dengan algoritma

polinom maka persoalan-persoalan lain pun dapat diselesaikan dengan algoritma

polinomial. Konjekturnya adalah algoritma seperti itu tidak ada. Persoalan

optimisasi sering merupakan persoalan NP-hard. Banyak persoalan penjadwalan

merupakan NP-hard. Dengan memodelkan dalam bahasa spesifikasi maka dapat

dilakukan verifikasi untuk menyatakan kompleksitas persoalan penjadwalan yang

dihadapi.

Shop berisi m ≥ 1 pemroses (atau mesin). Masing-masing pemroses melakukan

satu operasi berbeda. Terdapat n ≥ 1 job. Masing-masing job i mempunyai m

operasi. Waktu pengolahan untuk operasi j job i adalah pj,i. Operasi j job i diolah

pemroses j, 1 ≤j≤m. Satu jadwal untuk pemroses j adalah sekuen tupel (Ji, si, ci), 1

≤ i ≤r, i adalah indeks job J, si adalah waktu mulai job Ji, dan ci adalah waktu

selesai. Job Ji diproses pada pemroses j mulai dari si sampai ci. Tupel-tupel

Page 21: Bab II Landasan Teori II.1 Rekayasa Domain - digilib.itb.ac.id · 5 bahasa spesifik domain, generator-generator, dan infrastruktur yang dapat digunaulang (reusable) .Rekayasa domain

24

diurutkan sehingga si < ci ≤ si+1, 1 ≤ i < r. Dapat terdapat lebih dari satu tupel per

job dan diasumsikan Ji ≠ Ji+1, 1 ≤ i < r. Masing-masing job i menggunakan pj,i

waktu pengolahan pemroses j.

Satu jadwal untuk satu m-shop adalah himpunan jadwal m pemroses. Satu jadwal

untuk masing-masing pemroses di shop. Pada jadwal-jadwal m pemroses, tidak

ada job yang diolah secara simultan pada dua pemroses atau lebih. Waktu

penyelesaian (completion time) jadwal adalah waktu penyelesaian paling akhir

jadwal-jadwal pemroses individu dan merepresentasi waktu dimana semua operasi

telah selesai. Jadwal optimal finish time (OFT) adalah finish time yang

mempunyai waktu finish paling kecil dibanding jadwal-jadwal lain.

Jika himpunan job untuk penjadwalan tidak berubah sepanjang waktu berarti

sistem penjadwalan adalah statik. Jika job-job baru muncul sepanjang waktu

eksekusi sistem berarti sistem penjadwalan adalah dinamis. Meski model dinamis

lebih penting pada aplikasi praktis, model statik sering menangkap esensi sistem

dinamis. Analisis terhadap model statik sering menyingkap prinsip-prinsip dasar

yang berguna untuk model dinamis.

II.4.2 Notasi Persoalan Penjadwalan Notasi untuk menyatakan persoalan penjadwalan adalah tiga field, ||. Field

adalah tipe persoalan. dirinci 12, 1 adalah lingkungan mesin, 2 adalah

jumlah mesin yang tersedia. adalah konstrain-konstrain eksplisit. adalah

kriteria yang dioptimasi.

Tipe penjadwalan terbagi dua, penjadwalan dengan penugasan dan tanpa

penugasan. Lingkungan persoalan penjadwalan tanpa penugasan terbagi sebagai

berikut:

1. Flowshop (F) : terdapat sejumlah mesin di shop. Karakteristik tipe ini adalah

job-job menggunakan mesin dengan urutan sama, job-job mempunyai routing

yang sama.

Page 22: Bab II Landasan Teori II.1 Rekayasa Domain - digilib.itb.ac.id · 5 bahasa spesifik domain, generator-generator, dan infrastruktur yang dapat digunaulang (reusable) .Rekayasa domain

25

2. Jobshop (J) : beberapa mesin tersedia di shop. Masing-masing job mempunyai

route nya sendiri, yaitu menggunakan sumber daya–sumber daya dalam

urutannya sendiri.

3. Openshop (O) : beberapa mesin tersedia di shop. Job-job tidak mempunyai

routing yang tetap. Job-job dapat menggunakan mesin-mesin dengan

sembarang urutan.

4. Mixed shop (X) : beberapa mesin tersedia di shop. Beberapa job mempunyai

routing sendiri dan lainnya tidak.

Konstrain di antaranya adalah konstrain waktu mulai, waktu mulai suatu operasi

pada satu job harus setelah waktu tertentu. Konstrain deadline, konstrain adalah

tidak boleh melampaui waktu tertentu. Konstrain preemption, pmtn, preeemption

dimungkinkan. Operasi dapat diinterupsi dimana operasi akan dilakukan pada

masa datang. Konstrain precedence, prec, mengindikasi operasi dihubungkan

konstrain precedence. Konstrain batch, mengindikasi operasi-operasi

dikelompokkan di batch-batch. P-batch adalah parallel batch dimana operasi-

operasi pada satu batch diolah secara parallel pada satu cummulative resource.

Waktu selesai satu operasi sama dengan waktu selesai batch itu. Konstrain no-

wait, yaitu operasi-operasi di satu job berturutan tanpa waktu tunggu. Konstrain

due date, di=d, yaitu semua due date adalah identik. Konstrain keidentikan

pengolahan, pi=p adalah waktu pengolahan semua identik. Setup time dan removal

time, snsd dan rnsd adalah waktu setup dan removal sumber daya–sumber daya

sebelum dan setelah pengolahan. Penyiapan independen sekuen operasi. Konstrain

unavailibility, unavail, adalah sumber daya–sumber daya tidak tersedia pada satu

waktu tertentu. Konstrain sequencing, apakah job-job perlu secara diurutkan

operasi-operasi tertentu. Konstrain uniquesness, apakah operasi dapat dilakukan

lebih dari satu mesin di shop? Konstrain cummulativity, apakah masing-masing

mesin dapat melakukan lebih dari satu operasi pada satu saat. Konstrain

instantaneously transferred, apakah job dapat secara instan ditransfer dari satu

mesin ke mesin lain.

Page 23: Bab II Landasan Teori II.1 Rekayasa Domain - digilib.itb.ac.id · 5 bahasa spesifik domain, generator-generator, dan infrastruktur yang dapat digunaulang (reusable) .Rekayasa domain

26

Fungsi obyektif tidak harus berupa ekspresi matematika sederhana, dapat berupa

algoritma rumit, misalnya melibatkan sejumlah simulasi. Optimisasi global berisi

sejumlah teknik yang dapat digunakan untuk menemukan elemen terbaik xi di

domain X berkaitan dengan kriteria fF. Kriteria yang biasanya dikaji di dalam

penjadwalan adalah [8]

1. Waktu penyelesaian (completion time), C. Alternatifnya adalah (a) minimisasi

maksimum waktu penyelesaian, disebut makespan, (b) minimisasi rataan atau

total waktu penyelesaian seluruh job, (c) minimisasi rataan atau total waktu

penyelesaian seluruh job mempertimbangkan pembobotan.

2. Durasi penyelesaian (flow time), F. Alternatifnya adalah (a) minimisasi

maksimum durasi penyelesaian, (b) minimisasi rataan atau total durasi

penyelesaian seluruh job, (c) minimisasi rataan atau total durasi penyelesaian

seluruh job mempertimbangkan pembobotan.

3. Durasi tardiness, T. Alternatifnya adalah (a) minimisasi maksimum durasi

tardiness, (b) minimisasi rataan atau total durasi tardiness seluruh job, (c)

minimisasi rataan atau total durasi tardiness seluruh job mempertimbangkan

pembobotan.

4. Durasi lateness, L. Alternatifnya adalah (a) minimisasi maksimum durasi

lateness, (b) minimisasi rataan atau total durasi lateness seluruh job, (c)

minimisasi rataan atau total durasi lateness seluruh job mempertimbangkan

pembobotan.

5. Durasi earliness, E. Alternatifnya adalah (a) minimisasi maksimum durasi

earliness, (b) minimisasi rataan atau total durasi earliness seluruh job, (c)

minimisasi rataan atau total durasi earliness seluruh job mempertimbangkan

pembobotan.

6. Durasi promptness, P, minimisasi terhadap maksimum durasi promptness

7. Jumlah job yang terlambat, U. Alternatifnya adalah (a) minimisasi jumlah job

yang terlambat, (b) minimisasi rataan atau total durasi lateness seluruh job

mempertimbangkan pembobotan.

8. Minimisasi terhadap fungsi ongkos generik