IV-1
BAB IV
PEMBANGUNAN PERANGKAT LUNAK
Pada bab ini dijelaskan mengenai analisis dan perancangan perangkat lunak yang dibangun.
IV.1 Deskripsi Umum Perangkat Lunak
Perangkat lunak yang dibangun diberi nama DedSched. DedSched adalah perangkat lunak berbasis web yang memanfaatkan basis data deduktif. Adapun alasan perangkat lunak berbasis web yaitu untuk memudahkan dalam mengimplementasikan perangkat lunak. DedSched dibangun untuk melakukan proses penjadwalan dari sejumlah resource dengan batasan-batasan tertentu dengan studi kasus penjadwalan mata kuliah. Masukan untuk DedSched adalah fakta dan batasan mengenai resource. Sedangkan keluarannya adalah tabel waktu yang berisi jadwal seluruh resource. DedSched dirancang sedemikian rupa agar dapat digunakan dengan data yang berbeda-beda dan tidak terbatas pada penjadwalan mata kuliah. Sistem basis data deduktif yang digunakan dikembangkan dengan menggunakan basis data relasional, mesin inferensi, dan web server inferensi. Pembahasan mengenai perancangan basis data deduktif ini dapat dilihat pada Subbab IV.2. Arsitektur perangkat lunak yang dibangun dapat dilihat pada Gambar IV-1.
Gambar IV-1 Arsitektur perangkat lunak
IV.2 Perancangan Basis Data Deduktif
Basis data deduktif yang digunakan pada perangkat lunak yang dibangun terdiri dari dua komponen utama, yaitu basis data relasional (RDBMS) dan mesin inferensi. Selain itu, terdapat satu komponen pendukung, yaitu web server inferensi. Komponen pendukung ini digunakan oleh komponen utama untuk saling berkomunikasi. Alasan penggunaan basis data deduktif seperti ini karena tidak ditemukan aplikasi basis data deduktif yang dapat digunakan bersama aplikasi pengembang perangkat lunak.
Untuk mengimplementasikan basis data deduktif ini, diperlukan beberapa perangkat lunak pendukung, yaitu:
1. RDBMS, contoh: MySQL
2. Mesin inferensi, contoh: SWI-Prolog
3. PSP (Prolog Server Pages). PSP yang digunakan pada basis data deduktif ini adalah PSP versi 0.4 yang dapat diaplikasikan bersama mesin inferensi Prolog. Oleh karena itu, sebelum melakukan instalasi PSP, perangkat lunak SWI-Prolog harus terlebih dahulu terinstalasi. PSP yang digunakan pada basis data deduktif ini didapat dari: http://www.benjaminjohnston.com.au/
4. Web Server Inferensi yang dapat melakukan parse pada file dalam bahasa PSP. Pada PSP versi 0.4, web server yang dapat digunakan adalah Apache pada Linux dan IIS (Internet Information Services) pada Windows. Konfigurasi IIS untuk dapat menjalankan PSP dapat dilihat pada Lampiran A.
Aplikasi DedSched melakukan sejumlah aksi untuk memperoleh hasil proses inferensi yang dilakukan oleh Mesin Inferensi, yaitu:
1. Mengambil semua fakta dari RDBMS.
2. Membangun suatu file prolog dalam bahasa PSP yang berisi fakta yang telah diambil. Contoh: facts.prolog
3. Mengambil semua batasan dari RDBMS.
4. Membangun suatu file prolog dalam bahasa PSP yang berisi batasan yang telah diambil. Contoh: rules_priority.prolog, rulesI.prolog, rulesII.prolog
5. Membangun suatu file prolog dalam bahasa PSP yang berisi penggunaan fakta dan penerapan batasan. Contoh: apply_rules_priority.prolog, apply_rules_typeI_typeI.prolog. File prolog dalam bahasa PSP inilah yang menjadi media komunikasi antara Aplikasi DedSched dengan Web Server Inferensi.
6. Melakukan request pada Web Server Inferensi untuk melakukan parse file prolog pada poin 5.
7. Menerima hasil mekanisme inferensi yang telah disesuaikan dalam bahasa PHP. 8. Menggunakan data yang diterima untuk proses selanjutnya, seperti menentukan
prioritas berdasarkan bobot setiap fakta.
Bersamaan dengan aksi yang dilakukan oleh Aplikasi DedSched, Web Server Inferensi melakukan sejumlah aksi sebegai berikut:
1. Melakukan parse pada file prolog yang dibangun oleh Aplikasi DedSched. 2. Mengirimkan hasil parsing berupa query ke Mesin Inferensi untuk diproses.
3. Menerima fakta turunan dari Mesin Inferensi sesuai dengan query yang diberikan. 4. Menyusun fakta turunan agar dapat diterima sebagai data dalam bahasa PHP.
Untuk proses-proses yang berhubungan langsung dengan pendefinisian fakta atau batasan, seperti manipulasi batasan, Aplikasi DedSched langsung berkomunikasi dengan RDBMS. Web server Inferensi untuk mengimplementasikan basis data deduktif terpisah dengan web server utama pada Aplikasi DedSched agar model proses tetap dapat digunakan apabila terdapat basis data deduktif yang sesungguhnya. Mekanisme aliran data pada Aplikasi DedSched dengan DDBMS yang dirancang dapat dilihat pada Gambar IV-2.
Gambar IV-2 Mekanisme Aliran Data Aplikasi DedSched - DDBMS
Agar rancangan basis data deduktif mendekati basis data deduktif yang sebenarnya, komunikasi Aplikasi DedSched dengan RDBMS seharusnya digantikan dengan komunikasi Web Server Inferensi dengan RDBMS. Namun, hal ini tidak dilakukan karena dalam tahap implementasi, Web Server Inferensi belum memiliki dokumentasi yang jelas mengenai komunikasi yang dapat dilakukan dengan RDBMS. Untuk mengantisipasi hal tersebut, Aplikasi DedSched menggunakan suatu web server yang telah teruji dan memiliki dokumentasi yang jelas mengenai komunikasi dengan RDBMS.
IV.3 Spesifikasi Kebutuhan Perangkat Lunak
Pada bagian ini akan dideskripsikan seluruh fitur utama yang dibutuhkan perangkat lunak yang dibangun dalam bentuk deskripsi fungsional dan deskripsi non-fungsional.
IV.3.1 Kebutuhan Fungsional
Tabel IV-1 Tabel kebutuhan Fungsional
Kode Use Case Nama Kebutuhan Deskripsi
SRS-F-01 Manipulasi resource Menambahkan, mengubah, dan menghapus resource
dalam basis data deduktif
SRS-F-02 Manipulasi batasan Menambahkan, mengubah, dan menghapus batasan
dalam basis data deduktif.
SRS-F-03 Penjadwalan Melakukan proses penjadwalan resource dengan
menerapkan batasan-batasan
SRS-F-04 Mengatur ulang jadwal
solusi
Mengatur ulang jadwal solusi secara manual oleh pengguna
SRS-F-05 Menampilkan jadwal
solusi
Menampilkan jadwal solusi berupa tabel waktu
IV.3.2 Kebutuhan Non Fungsional
Kebutuhan fungsional untuk perangkat lunak ini dapat dilihat pada Tabel IV-2.
Tabel IV-2 Tabel kebutuhan Non-Fungsional
Kode Use Case Nama Kebutuhan Deskripsi
SRS-NF-1 User-friendly Menyediakan antarmuka yang user-friendly.
SRS-NF-2 Informasi penjadwalan
Menampilkan info resource yang sedang dijadwalkan
IV.4 Model Use Case
Model use case perangkat lunak dapat dilihat pada subbab berikut.
IV.4.1 Diagram Use Case
Diagram use case perangkat lunak menggambarkan objek-objek yang berinteraksi dengan sistem. Diagram ini dapat dilihat pada Gambar IV-3.
Pengguna
Manipulasi resource
Manipulasi batasan
Penjadwalan DDBMS
Mengatur Ulang Jadwal Solusi
Menampilkan Jadwal Solusi
Gambar IV-3 Diagram Use Case
IV.4.2 Definisi Aktor
Tabel IV-3 Tabel Definisi Aktor
No Aktor Deskripsi
1 Pengguna Aktor yang menggunakan sistem secara langsung dan
melakukan eksekusi fungsi-fungsi utama yang ada dalam sistem.
2 DDBMS (Deductive
Database Management System)
Sistem basis data deduktif yang memiliki kemampuan sebagai media penyimpanan data sekaligus mampu mendeduksi fakta turunan dari fakta-fakta dan aturan-aturan yang ada.
IV.4.3 Definisi Use Case
Definisi use case yang terdapat pada perangkat lunak yang dibangun dapat dilihat pada Tabel IV-4.
Tabel IV-4 Tabel Definisi Use Case
No Use Case Deskripsi No.SRS
1 Manipulasi resource
Menambahkan, mengubah, dan menghapus resource dalam basis data.
SRS-F-01 2 Manipulasi
batasan
Menambahkan, mengubah, dan menghapus batasan dalam basis data
SRS-F-02
3 Penjadwalan Melakukan proses penjadwalan resource dengan
menerapkan batasan-batasan
SRS-F-03 4 Mengatur
ulang jadwal solusi
Mengatur ulang jadwal solusi secara manual oleh pengguna
Prekondisi: use case Penjadwalan
SRS-F-04
5 Menampilkan jadwal solusi
Menampilkan jadwal hasil berupa tabel waktu Prekondisi: use case Penjadwalan
SRS-F-05
IV.4.4 Skenario Use Case
Skenario (flow of event) yang menggambarkan urutan interaksi aktor dengan use case, dari awal sampai akhir terbagi menjadi beberapa skenario sebagai berikut.
1. Use Case: Manipulasi resource
Skenario normal use case manipulasi resource dapat dilihat pada Tabel IV-5 dan skenario alternatif dapat dilihat pada Lampiran B.1.
Tabel IV-5 Tabel Skenario Use Case Manipulasi Resource
Aksi Aktor Reaksi Sistem
Skenario Normal (S-01-01) 1. Pengguna memilih menu Menambah
resource
2. Menampilkan form yang berisi kotak teks sebagai masukan dari pengguna
3. Pengguna mengisi form menambahkan resource
4. Melakukan validasi masukan pengguna 5. Menerima masukan pengguna
Aksi Aktor Reaksi Sistem
data deduktif 7. DDBMS melakukan penyimpanan fakta
resource
8. DDBMS mengembalikan status penyimpanan fakta resource
9. Menampilkan pesan status penyimpanan (berhasil atau gagal)
2. Use Case: Manipulasi batasan
Skenario normal use case manipulasi batasan dapat dilihat pada Tabel IV-6 dan skenario alternatif dapat dilihat pada Lampiran B.2.
Tabel IV-6 Tabel Skenario Use Case Manipulasi Batasan
Aksi Aktor Reaksi Sistem
Skenario Normal (S-02-01) 1. Pengguna memilih menu Menambah
batasan
2. Menampilkan form yang berisi kotak teks sebagai masukan dari pengguna
3. Pengguna mengisi form menambahkan batasan.
4. Melakukan validasi masukan pengguna 5. Menerima masukan pengguna
6. Menambahkan fakta batasan pada basis data deduktif
7. DDBMS melakukan penyimpanan fakta batasan
8. DDBMS mengembalikan status penyimpanan fakta batasan
9. Menampilkan pesan status penyimpanan (berhasil atau gagal)
3. Use Case: Penjadwalan
Skenario normal use case penjadwalan dapat dilihat pada Tabel IV-7 dan skenario alternatif dapat dilihat pada Lampiran B.3.
Tabel IV-7 Tabel Skenario Use Case Penjadwalan
Aksi Aktor Reaksi Sistem
Skenario Normal (S-03-01) 1. Pengguna memilih menu Penjadwalan
resource
2. Menjadwalkan resource sesuai dengan fakta resource dan fakta batasan yang ada 3. Menampilkan status proses penjadwalan 4. Menampilkan pesan status penjadwalan
(berhasil atau gagal)
4. Use Case: Mengatur ulang jadwal solusi
Skenario normal use case mengatur ulang jadwal solusi dapat dilihat pada Tabel IV-8 dan skenario alternatif dapat dilihat pada Lampiran B.4
.
Tabel IV-8 Tabel Skenario Use Case Mengatur Ulang Jadwal Solusi
Aksi Aktor Reaksi Sistem
Skenario Normal (S-04-01) 1. Pengguna memilih menu Pengaturan
ulang jadwal solusi
2. Menampilkan seluruh fakta jadwal solusi yang terdapat pada basis data deduktif 3. Pengguna memilih fakta jadwal solusi
untuk diatur ulang
4. Pengguna memilih menu Tampilkan jadwal solusi lain untuk fakta jadwal yang dipilih
5. Menampilkan pilihan slot pasangan jadwal solusi lainnya yang dapat digunakan 6. Pengguna memilih pasangan slot jadwal
solusi lainnya
7. Melakukan validasi fakta jadwal solusi yang baru
8. Menampilkan pesan status pengaturan ulang jadwal solusi (berhasil atau gagal)
5. Use Case: Menampilkan jadwal solusi
Prekondisi: Terdapat fakta jadwal solusi pada basis data deduktif.
Skenario normal use case Menampilkan Jadwal Solusi dapat dilihat pada Tabel IV-9 dan skenario alternatif dapat dilihat pada Lampiran B.5.
Tabel IV-9 Tabel Skenario Use Case Menampilkan Jadwal Solusi
Aksi Aktor Reaksi Sistem
Skenario Normal (S-05-01) 1. Pengguna memilih menu Tampilkan
jadwal solusi
2. Mengambil fakta jadwal solusi pada basis data deduktif dan membangun tampilan dalam bentuk tabel waktu
3. Menampilkan jadwal solusi pada browser
IV.5 Model Interaksi dengan Diagram Sequence
Diagram sequence dari perangkat lunak yang dibangun antara lain: 1. Diagram Sequence Manipulasi Resource
Diagram sequence manipulasi resource menggambarkan perilaku sistem dalam melakukan proses manipulasi resource. Diagram sequence ini dapat dilihat pada Gambar IV-4. Langkah aksi yang dilakukan dapat dilihat pada Tabel C-1.
: Pengguna : DDBMS Antarmuka <<boundary>> KoneksiDB <<control>> KontrolDB <<control>> 1 : manipulasi_resource() 2 : connect_to_db() 3 : connect() 4 : handle_connection 5 : select_db() 6 : is_resource_exist() 7 : build_query() 8 : query 9 : result 10 : process_result() 11 : show_result() 12 : close_connection() 13 : disconnect()
Gambar IV-4 Diagram Sequence Manipulasi Resource
2. Diagram Sequence Manipulasi Batasan
Diagram sequence manipulasi batasan menggambarkan perilaku sistem dalam melakukan proses manipulasi batasan. Diagram sequence ini dapat dilihat pada Gambar IV-5. Langkah aksi yang dilakukan dapat dilihat pada Tabel C-2.
: Pengguna : DDBMS Antarmuka <<boundary>> KoneksiDB <<control>> KontrolDB <<control>> 1 : manipulasi_batasan() 2 : connect_to_db() 3 : connect() 4 : handle_connection 5 : select_db() 6 : is_batasan_exist() 7 : build_query() 8 : query 9 : result 10 : process_result() 11 : show_result() 12 : close_connection() 13 : disconnect()
Gambar IV-5 Diagram Sequence Manipulasi Batasan
3. Diagram Sequence Penjadwalan Resource
Diagram sequence ini menjelaskan proses yang dilakukan dalam menjadwalkan resource. Diagram ini dapat dilihat pada Gambar IV-6. Langkah aksi yang dilakukan dapat dilihat pada Tabel C-3.
[num resource] loop : Pengguna : DDBMS Antarmuka <<boundary>> KoneksiDB <<control>> KontrolDB <<control>> 1 : menjadwalkan_resource() 2 : connect_to_db() 3 : connect() 4 : handle_connection 5 : select_db() 6 : get_resource() 7 : resource 8 : create_file_facts() 9 : create_file_rule_priority() 10 : apply_batasan_prioritas() 11 : resource_dengan_bobot_prioritas 12 : prioritas_resource() 13 : get_resource_max_prioritas() 14 : create_file_ruleI_ruleII() 15 : apply_batasan_tipeI_tipeII() 16 : resource_dengan_bobot_tipeII 17 : simpan_resource() 18 : get_resource_max_bobot() 19 : isBacktrack() 20 : update_resource() 21 : simpan_jadwal() 22 : status_db 23 : proses_status_penjadwalan() 24 : show_status() 25 : close_connection() 26 : disconnect()
Gambar IV-6 Diagram Sequence Proses Penjadwalan Resource
4. Diagram Sequence Pengaturan Ulang Jadwal Solusi
Diagram sequence ini menjelaskan proses yang dilakukan dalam pengaturan ulang jadwal solusi. Diagram ini dapat dilihat pada Gambar IV-7. Langkah aksi yang dilakukan dapat dilihat pada Tabel C-4.
: Pengguna : DDBMS Antarmuka <<boundary>> KontrolDB <<control>> 1 : atur_ulang_jadwal_solusi() 2 : tampilkan_resource() 3 : pilih_resource() 4 : resource_terpilih 5 : ambil_solusi_lain() 6 : solusi_lain 7 : proses_solusi_lain() 8 : tampilkan_solusi_lain() 9 : optimasi_resource() 10 : resource_teroptimasi 11 : proses_resource_teroptimasi() 12 : status_optimasi 13 : proses_status_optimasi() 14 : show_status()
Gambar IV-7 Diagram Sequence Pengaturan Ulang Jadwal Solusi
5. Diagram Sequence Menampilkan Jadwal Solusi
Diagram sequence ini menjelaskan proses yang dilakukan dalam menampilkan jadwal solusi. Diagram ini dapat dilihat pada Gambar IV-8. Langkah aksi yang dilakukan dapat dilihat pada Tabel C-5.
: Pengguna : DDBMS Antarmuka <<boundary>> KoneksiDB <<control>> KontrolDB <<control>> 1 : permintaan_jadwal_solusi() 2 : connect_to_db() 3 : connect() 4 : handle_connection 5 : select_db() 6 : ambil_jadwal_solusi() 7 : jadwal_solusi 8 : proses_jadwal_solusi() 9 : tampilkan_jadwal_solusi() 10 : close_connection() 11 : disconnect()
Gambar IV-8 Diagram Sequence Menampilkan Jadwal Solusi
IV.6 Diagram Kelas Perangkat Lunak
Diagram kelas perangkat lunak yang dibangun dapat dilihat pada Gambar IV-9. Berikut adalah penjelasan singkat dari kelas yang dibangun:
1. Antarmuka
Antarmuka merupakan kelas untuk menerima masukan dari pengguna dan menampilkan hasil yang diberikan perangkat lunak. Kelas ini merupakan kelas boundary yang menghubungkan perangkat lunak dengan pengguna.
2. KoneksiDB
Kelas koneksiDB adalah kelas yang mengatur koneksi dengan basis data. Tipe kelas ini adalah kelas controller.
3. KontrolDB
Kelas kontrolDB adalah kelas yang mengatur transaksi data dengan basis data. Tipe kelas ini adalah kelas controller.
4. DDBMS
DDBMS adalah kelas basis data deduktif yang mengatur penyimpanan data dan mekanisme deduksi. Tipe kelas ini adalah kelas controller.
Antarmuka +menu +resource +connect_to_db() +close_connection() +show_result() +show_status() +tampilkan_resource() +tampilkan_solusi_lain() +tampilkan_jadwal_solusi() DDBMS +fakta +aturan +status_db +query +result +execute_query() +pembobotan_resource_prioritas() +cari_resource_tipeI() +pembobotan_resource_tipeII() +proses_simpan() +proses_update() +cek_resource_teroptimasi() +update_jadwal_solusi() KoneksiDB +atribut_db +handle_connection +connect() +select_db() +disconnect() KontrolDB +query +fakta_turunan +is_resource_exist() +is_batasan_exist() +build_query() +proses_result() +proses_status_penjadwalan() +proses_status_optimasi() Scheduler +jadwal +status_penjadwalan +get_resource() +apply_batasan_prioritas() +prioritas_resource() +apply_batasan_tipeI_tipeII() +get_resource_max_prioritas() +simpan_resource() +get_resource_max_bobot() +isBacktrack() +update_resource() +simpan_jadwal() Optimizer +solusi_lain +resource_teroptimasi +status_optimasi +ambil_solusi_lain() +proses_solusi_lain() +proses_resource_teroptimasi() Viewer +jadwal_solusi +ambil_jadwal_solusi() +proses_jadwal_solusi()
Gambar IV-9 Diagram kelas perangkat lunak
IV.7 Rancangan Antarmuka Perangkat Lunak
Rancangan antarmuka layar utama perangkat lunak dapat dilihat pada Gambar IV-10 dan keterangan mengenai antarmuka dapat dilihat pada Tabel IV-10. Rancangan antarmuka setiap menu dapat dilihat pada Lampiran D.
Gambar IV-10 Rancangan Antarmuka Layar Utama
Header Panel Menu Panel Layar Utama Menu 1 Menu 2 Menu 3 Menu 4 Menu 5
Tabel IV-10 Keterangan Antarmuka Layar Utama
Id Jenis Keterangan
Layar Utama Panel Berisi content dari setiap menu yang terdapat pada panel menu.
Panel ini berubah sesuai dengan aksi yang diberikan pengguna.
Menu Panel Berisi menu-menu yang merupakan fitur utama dari perangkat
lunak.
Header Label Header halaman web perangkat lunak.
Menu 1 Link Link untuk melakukan manipulasi terhadap resource, yaitu
mendefinisikan, menambah, mengedit, dan menghapus resource.
Menu 2 Link Link untuk melakukan manipulasi terhadap batasan, yaitu
menambah, mengedit, dan menghapus batasan.
Menu 3 Link Link untuk melakukan proses penjadwalan berdasarkan resource
dan batasan yang telah didefinisikan.
Menu 4 Link Link untuk mengatur ulang jadwal yang dihasilkan pada proses
penjadwalan.
Menu 5 Link Link untuk menampilkan jadwal hasil yang didapatkan dari proses