BAB III ANALISIS DAN PERANCANGAN Pada bab ini, akan dibahas analisis dan perancangan aplikasi web event calendar dengan dukungan web service.
3.1 Analisis Perangkat Lunak Analisis perangkat lunak yang dilakukan terdiri dari arsitektur perangkat lunak, analisis masalah, analisis kebutuhan, tujuan pengembangan, analisis standar event, analisis standar web service, batasan analisis sistem, diagram use-case aplikasi, dan analisis kelas
3.1.1 Arsitektur Perangkat Lunak Aplikasi utama event calendar merupakan aplikasi web yang dapat dijalankan oleh pengguna melalui internet. Pengguna yang menggunakan aplikasi utama dapat dibedakan menjadi tiga jenis: pengguna aplikasi biasa, administrator, dan pengguna web service. Pengguna aplikasi biasa hanya dapat mengakses fungsi penampilan event, pengeksporan event, dan pendaftaran event saja, tetapi administrator dapat mengakses fungsi-fungsi yang lain, seperti penambahan, pengubahan, penghapusan, dan pengimporan event.
Selain aplikasi utama, event calendar juga memiliki dukungan web service dalam bentuk clientserver. Pengguna yang akan menggunakan dukungan web service harus menyediakan program client yang dapat dibuat dengan bantuan WSDL yang telah disediakan. Client ini selanjutnya dapat mengakses fungsi-fungsi web service yang disediakan oleh server. Arsitektur globalnya dapat dilihat pada Gambar III-1.
III-1
III-2
Gambar III-1 Arsitektur aplikasi event calendar
3.1.2 Analisis Masalah Analisis masalah dari aplikasi yang akan dibangun adalah: 1. Bagaimana merepresentasikan masalah penanganan event ke dalam struktur data yang sesuai dengan standar iCalendar. 2. Bagaimana melakukan manajemen event, seperti menambah, mengubah, dan menghapus event. 3. Bagaimana melakukan pengeksporan bentuk data event ke dalam format standar iCalendar. 4. Bagaimana melakukan pengimporan file iCalendar ke dalam aplikasi. 5. Bagaimana menyimpan event-event ke dalam suatu basis data. 6. Bagaimana membuat user interface yang membantu pengguna dalam melakukan manajemen event. 7. Bagaimana menyediakan fungsi login dan logout sebagai administrator untuk melakukan manajemen event. 8. Bagaimana menampilkan event-event yang terjadi dalam bulan dan tahun tertentu. 9. Bagaimana menampilkan visualisasi kalendar yang disesuaikan dengan bulan dan tahun event yang akan ditampilkan. 10. Bagaimana menangani fungsi event yang berulang.
III-3 11. Bagaimana membangun web service yang bisa menyediakan fungsi-fungsi seperti: memberikan event pada bulan dan tahun tertentu, memberikan event sesuai dengan id tertentu, dan memberikan event sesuai kategori event tertentu
3.1.3 Analisis Kebutuhan Analisis kebutuhan dari aplikasi yang akan dibangun adalah: 1.
Aplikasi dapat merepresentasikan masalah penanganan event ke dalam struktur data yang sesuai dengan standar iCalendar.
2.
Aplikasi dapat melakukan manajemen event, yaitu menambah event, mengubah event, dan menghapus event.
3.
Aplikasi dapat melakukan pengeksporan bentuk data event ke dalam format standar iCalendar.
4.
Aplikasi dapat melakukan pengimporan file iCalendar.
5.
Aplikasi dapat menyimpan event-event ke dalam suatu basis data.
6.
Aplikasi dapat menampilkan user interface yang membantu pengguna dalam melakukan manajemen event.
7.
Aplikasi menyediakan fungsi login dan logout sebagai administrator untuk melakukan manajemen event.
8.
Aplikasi dapat menampilkan event-event yang terjadi pada bulan dan tahun tertentu.
9.
Aplikasi dapat menyediakan visualisasi kalendar yang disesuaikan dengan bulan dan tahun event yang akan ditampilkan.
10. Aplikasi mampu menangani fungsi event yang berulang. 11. Web service yang disediakan aplikasi bisa menyediakan fungsi-fungsi seperti: memberikan event pada bulan dan tahun tertentu, memberikan event sesuai dengan id tertentu, dan memberikan event sesuai kategori event tertentu.
3.1.4 Tujuan Pengembangan Aplikasi ini dikembangkan dengan tujuan agar manajemen event bisa dilakukan secara on-line dan terpusat. Agar interoperasi antar aplikasi yang berbeda bisa berjalan lancar, digunakan teknologi web service dan juga dukungan terhadap pengeksporan dan pengimporan event dalam format iCalendar.
III-4 3.1.5 Analisis Standar Event Event yang akan dibuat dalam tugas akhir ini menggunakan standar yang telah ditetapkan dalam RFC2441(iCalendar). Dalam standar iCalendar, ada bagian yang menjelaskan bagaimana suatu event dibentuk yang dinamakan dengan vEvent. Walaupun tidak mengimplementasikan secara persis semua karakteristik vEvent, tetapi hanya mengambil bagian-bagian yang dirasa perlu, bentuk event yang diimplementasikan dalam aplikasi ini menyerupai standar vEvent tersebut, baik dalam atribut-atribut yang digunakan maupun bentuk-bentuk format data untuk masingmasing atribut tersebut.
Atribut-atribut yang dirasa perlu yang akan diimplementasikan adalah id suatu event, timestamp kapan suatu event diubah, ringkasan acara, deskripsi panjang, lokasi, waktu mulai, waktu selesai, aturan pengulangan, kategori event, dan contact person.
Dengan mengikuti standar yang ditetapkan iCalendar, diharapkan interoperabilitas dari aplikasi ini semakin bertambah dengan tidak hanya menyertakan dukungan web service saja, tetapi juga dukungan terhadap standar penanggalan di internet, walaupun tidak secara sempurna.
Event dapat dibagi menjadi dua: event yang terjadi sekali dan event yang berulang. Yang perlu diperhatikan disini adalah adanya penanganan khusus untuk suatu event yang berulang. Penanganan khusus itu berupa aturan yang telah ditetapkan standar iCalendar, yang dinamakan recurrence rule. Aturan yang ditetapkan iCalendar ini telah mencakup secara lengkap semua kemungkinan dari suatu event yang berulang.
3.1.6 Analisis Pengulangan Event Aturan pengulangan event atau recurrence rule merupakan bagian penting dalam menentukan event yang berulang. Karena pengimplementasian aturan ini sangat kompleks dijabarkan dalam iCalendar, maka tugas akhir ini membatasinya dengan menyediakan aturan pengulangan yang umum terjadi saja.
Ada dua jenis pendekatan dalam menangani pemrosesan event yang berulang: 1. Semua event yang memiliki aturan pengulangan tertentu dibentuk semua instans pengulangannya selama jangka waktu tertentu dan dituliskan ke dalam basis data. Hal ini memudahkan komputasi di dalam aplikasi karena aplikasi hanya tinggal mengakses basis data, tetapi pekerjaan ini sangat membebani basis data, terutama untuk event yang
III-5 berulang cukup banyak. Dengan pendekatan ini, pengubahan satu atau beberapa instans pengulangan dari semua instans yang ada dapat dilakukan. 2. Semua
event
yang
memiliki
aturan
pengulangan
tertentu
diperiksa
instans
pengulangannya secara on-the-fly. Hal ini menambah komputasi di dalam aplikasi tetapi tidak membebani basis data. Cukup satu event saja yang dituliskan dalam basis data dan semua instans pengulangannya diperiksa ketika pengguna mengakses bulan dan tahun tertentu. Pendekatan ini tidak memungkinkan pengubahan satu atau beberapa instans pengulangan dari semua instans yang ada.
Aplikasi web event calendar mengimplementasikan pendekatan yang kedua. Sedangkan mengenai aturan yang didukung oleh aplikasi adalah sebagai berikut: 1. Aturan frekuensi(FREQ). Aturan ini berisi frekuensi pengulangan dalam tahun, bulan, minggu, hari, jam, menit atau detik. Sebagai contoh, event yang memiliki aturan frekuensi, FREQ=YEARLY, berarti berulang setiap tahun. 2. Aturan interval(INTERVAL). Aturan ini berisi jangka waktu dari frekuensi pengulangan yang
terjadi.
Sebagai
contoh,
event
yang
memiliki
aturan,
FREQ=WEEKLY;INTERVAL=3, berarti berulang setiap tiga minggu. 3. Aturan jumlah(COUNT). Aturan ini berisi berapa banyak instans dari event yang akan terjadi.
Sebagai
contoh,
event
yang
memiliki
aturan,
FREQ=DAILY;INTERVAL=2;COUNT=5, berarti berulang setiap dua hari sebanyak lima kali.
3.1.7 Analisis Standar Web Service Dalam bab dasar teori telah dijelaskan secara singkat ada dua jenis web service yang dapat digunakan, yaitu REST dan SOAP. Tugas akhir ini akan menggunakan web service dengan jenis SOAP karena pertama, SOAP adalah jenis web service yang berorientasi pada service yang cocok diterapkan pada aplikasi event calendar yang memang menyediakan layanan untuk memanggil metode yang mengolah resource event, kedua, SOAP memiliki standar yang baik dan jelas. REST tidak memiliki standar, tetapi hanya sebuah arsitektur web service. Untuk aplikasi dimana ia mungkin saja berkomunikasi dengan banyak aplikasi lain yang berbeda bahasa maupun platform, standar sangat diperlukan karena menjamin aplikasi-aplikasi ini berbicara dalam bahasa yang sama dan memudahkan pengembangan. Penjabaran SOAP diperjelas dengan disediakannya WSDL, sehingga pengguna web service dapat dengan mudah membuat client untuk mengonsumsi SOAP.
III-6 3.1.8 Analisis WSDL SOAP sebagai standar pertukaran pesan dalam web service mampu berjalan sendiri tanpa bantuan WSDL untuk mendeskripsikannya. Tetapi, hal ini akan menyulitkan pengembangan, karena tanpa bantuan WSDL, para pengembang harus bertanya-tanya seperti apa bentuk pesan yang seharusnya dikirim kepada atau diterima dari penyedia layanan web service. Dengan bantuan WSDL, para pengembang telah dibantu karena telah mengetahui seperti apa pesan yang seharusnya dikirim atau diterima. WSDL dalam pembuatannya terlihat sangat menyulitkan dan membingungkan, tetapi dengan bantuan library dan tools yang telah beredar di internet, pembuatannya menjadi mudah dan cepat.
3.1.9 Batasan Analisis Sistem Batasan analisis sistem pada pengembangan aplikasi adalah: 1. Aplikasi tidak menangani aspek keamanan. 2. Struktur
data
event
disesuaikan
dengan
standar
iCalendar,
tetapi
tidak
mengimplementasikannya secara lengkap. Implementasi yang dilakukan sesuai dengan yang dicantumkan dalam subbab 3 pada bab dasar teori. 3. Kemampuan pengimporan file iCalendar juga dibatasi sesuai dengan struktur data event yang didukung pada poin sebelumnya. 4. Kemampuan aplikasi dalam menangani event yang berulang terbatas pada aturan: event yang berulang tiap: tahun, bulan, minggu, hari, jam, menit, dan detik, interval event yang berulang menurut ketentuan di atas, dan jumlah pengulangan event. 5. Aplikasi hanya mendukung web service dengan standar SOAP.
3.1.10 Diagram Use-Case Untuk Aplikasi Event Calendar Aplikasi event calendar memiliki tujuh fungsi utama, yaitu: melihat event, membuat daftar event pada bulan atau tahun tertentu, mengekspor event ke dalam iCalendar, menambah, mengubah, menghapus event, dan terakhir meminta event berdasarkan syarat tertentu yang dilakukan oleh pengguna web service. Ketiga fungsi yang pertama bisa dilakukan oleh pengguna biasa dan administrator, sedangkan fungsi keempat sampai keenam hanya bisa dilakukan oleh administrator saja. Diagram use-case untuk aplikasi event calendar dapat dilihat pada gambar III2.
III-7
Gambar III-2 Use-case aplikasi event calendar
Pada gambar diatas, use-case meminta event ditambah fungsionalitasnya melalui anak use case: meminta event berdasarkan ID, bulan, dan kategori. Use-case menampilkan event berdasarkan bulan termasuk di dalam kelima use-case: ekspor, ubah, hapus, daftar dan lihat event. Use-case login, logout dan menampilkan kalendar termasuk dalam use-case lihat event.
3.1.11 Analisis Kelas Kelas-kelas utama yang dibutuhkan oleh aplikasi event calendar ini adalah: 1. Event Kelas ini dibutuhkan sebagai kelas yang merepresentasikan data event yang dimasukkan oleh pengguna.
III-8 2. Calendar Kelas ini dibutuhkan sebagai kelas yang merepresentasikan sebuah kalendar Gregorian. 3. EventCalendar Kelas ini dibutuhkan sebagai kelas yang menyimpan obyek-obyek dari kelas event ke dalam suatu kalendar. Merupakan turunan dari kelas Calendar. 4. Date_Time Kelas ini dibutuhkan sebagai kelas yang merepresentasikan data tanggal dan waktu dengan standar date-time. 5. RecRule Kelas ini dibutuhkan sebagai kelas yang menjabarkan aturan pengulangan event. 6. MySQLConn Kelas ini dibutuhkan sebagai kelas yang menangani koneksi basis data event, menyimpan ke dalam basis data event, dan mengubah basis data event. 7. TMainForm Kelas ini dibutuhkan sebagai kelas untuk memudahkan pengguna melakukan manajemen event dan menjadi penghubung antara kelas eventcalendar, dbconnection, dan kelas GUI yang lain. 8. TAddEvent Kelas ini dibutuhkan sebagai kelas yang menangani pembuatan form dan pemrosesan penambahan event. 9. TEditEvent Kelas ini dibutuhkan sebagai kelas yang menangani pembuatan form dan pemrosesan pengubahan event. 10. SOAPServer Kelas ini dibutuhkan sebagai kelas yang menjalankan fungsi server SOAP. 11. TDeleteEvent Kelas ini dibutuhkan sebagai kelas yang menangani pembuatan form dan pemrosesan penghapusan event 12. TExportEvent Kelas ini dibutuhkan sebagai kelas yang menangani pembuatan form dan pemrosesan pengeksporan event. 13. TImportEvent Kelas ini dibutuhkan sebagai kelas yang menangani pembuatan form dan pemrosesan pengimporan event.
III-9 14. TListEvent Kelas ini dibutuhkan sebagai kelas yang menangani penampilan daftar event dalam bulan atau tahun tertentu.
Proses-proses yang terdapat pada aplikasi event calendar adalah: 1. Melihat event pada bulan dan tahun berjalan. Pada proses ini, aplikasi menampilkan daftar event yang terjadi pada bulan dan tahun yang sedang berjalan. Jika pengguna menghendaki melihat daftar event pada bulan dan tahun yang berbeda, aplikasi mengambilkannya dari basis data. 2. Menambah data event ke dalam basis data Pada proses ini, data yang diinputkan oleh user melalui kelas TaddForm diproses oleh aplikasi kemudian dimasukkan ke dalam basis data. 3. Mengubah event yang ada dalam basis data Pada proses ini, aplikasi akan menampilkan daftar event yang hendak diubah pada bulan dan tahun tertentu, kemudian memproses data baru yang dimasukkan dan menyimpan perubahannya ke dalam basis data. 4. Menghapus event yang ada dalam basis data Pada proses ini, aplikasi akan menampilkan daftar event yang hendak dihapus pada bulan dan tahun tertentu, kemudian memproses perintah penghapusan dan menghapus event tertentu yang terdapat dalam basis data. 5. Mengekspor event ke dalam format standar iCalendar. Pada proses ini, aplikasi akan menampilkan daftar event yang hendak diekspor pada bulan
dan
tahun
tertentu,
kemudian
memproses
perintah
pengeksporan
dan
mengembalikan event dalam file format standar iCalendar(ics). 6. Mengimpor event dari file iCalendar ke dalam aplikasi. Pada proses ini, pengguna memasukkan file iCalendar yang ingin diimpor. Setelah itu, aplikasi akan memproses file iCalendar itu dan memasukkannya ke dalam basis data. Komponen file iCalendar yang didukung adalah yang sesuai dengan yang diuraikan pada upa bab tiga bab dasar teori. 7. Menampilkan daftar event dalam bulan atau tahun tertentu. Pada proses ini, aplikasi akan menampilkan daftar semua event yang terjadi dalam bulan tertentu atau tahun tertentu. 8. Mengatur request event dari web service client
III-10 Pada proses ini, web service server akan menerima permintaan dari klien untuk mengambilkan event menurut kategori tertentu. Setelah itu, server akan memproses permintaan dan mengambilkannya dari basis data. Fungsi-fungsi yang disediakan dalam web service adalah pengambilan event berdasarkan id, pengambilan event berdasarkan bulan dan tahun tertentu, dan pengambilan event berdasarkan kategori event tertentu. 9. Login dan logout sebagai administrator Pada proses ini, aplikasi menyediakan form login untuk memasukkan username dan password agar pengguna bisa login sebagai administrator. Aplikasi juga menyediakan pilihan logout untuk adminsitrator. 10. Menampilkan kalender Pada proses ini, aplikasi menampilkan kalender dari bulan dan tahun yang dikehendaki pengguna.
Keterlibatan kelas-kelas analisis pada setiap proses ditunjukkan oleh tabel III-1.
Tabel III-1 Keterlibatan kelas-kelas analisis dengan proses-proses
No 1
Proses Melihat event pada bulan dan tahun berjalan
Kelas yang terlibat TMainForm EventCalendar Event Date_Time RRule MySQLConn
2
Menambah data event ke dalam basis data
TAddEvent Event Calendar Date_Time Rrule MySQLConn
3
Mengubah event yang ada dalam basis data
TEditEvent EventCalendar Event Date_Time
III-11 No
Proses
Kelas yang terlibat Rrule MySQLConn
4
Menghapus event yang ada dalam basis data
TDeleteEvent EventCalendar Event Date_Time Rrule MySQLConn
5
Mengatur request event dari web service client
SOAPServer Event EventCalendar Date_Time MySQLConn
6
Menampilkan daftar semua event dalam bulan dan tahun TListEvent tertentu.
Calendar EventCalendar Event Date_Time Rrule MySQLConn
7
Mengekspor event ke dalam format standar iCalendar.
TExportEvent EventCalendar Event MySQLConn DateTime Calendar Rrule
8
Mengimpor event ke dalam aplikasi
TImportEvent Event Date_Time
III-12 No
Proses
Kelas yang terlibat Rrule MySQLConn
9
Login dan logout sebagai administrator
TMainForm
10
Menampilkan kalender
TMainForm
3.2 Perancangan Secara ringkas, pembahasan mengenai perancangan aplikasi event calendar yang akan dibangun terdiri dari perancangan arsitektural, perancangan kelas, perancangan struktur data, dan perancangan antarmuka aplikasi.
3.2.1 Perancangan Arsitektural Perancangan arsitektural adalah perancangan yang memperlihatkan keterhubungan antar kelas. Keterhubungan antar kelas ini dapat dijelaskan melalui diagram kelas yang dapat dilihat pada gambar III-3.
Dalam gambar III-3, bisa kita lihat ada 14 kelas yang saling berhubungan. Kelas Event, Rrule, Date_Time, Calendar, dan EventCalendar merupakan
kelas-kelas dasar aplikasi. Kelas
EventCalendar merupakan kelas turunan dari kelas Calendar.
Kelas TAddEvent, TEditEvent, TDeleteEvent, TExportEvent, TImportEvent, TMainForm merupakan kelas yang menggunakan kelas-kelas dasar di atas. Kelas-kelas ini adalah kelas yang melakukan manipulasi terhadap kelas-kelas dasar di atas dan merupakan kelas-kelas yang bertanggung jawab terhadap manajemen event.
Kelas SOAPServer adalah kelas yang mengatur pembentukan server web service. Disini segala metode-metode yang disediakan oleh web service disimpan. Terakhir adalah kelas MySQLConn yang mengatur koneksi ke dalam basis data. Kelas ini adalah kelas yang bertanggung jawab terhadap pembacaan dan penulisan basis data event.
III-13
Gambar III-3 Diagram kelas aplikasi event calendar
III-14
3.2.2 Perancangan Kelas Pada bagian ini akan dijelaskan perancangan kelas yang dibuat berdasarkan analisis kelas dan diagram kelas yang didapat dari perancangan arsitektural sebelumnya. Perincian dari kelas-kelas perancangan beserta dengan beberapa operasinya dapat dilihat pada tabel III-2. Perlu diperhatikan bahwa tidak semua operasi dijabarkan disini, tetapi hanya operasi-operasi utama yang dirasa penting.
Tabel III-2 Daftar kelas yang digunakan beserta definisi dan operasinya
No
Nama Kelas
Definisi
1
Event
Kelas
Operasi untuk
merepresentasikan generate_Uid
bentuk data event. 2
Date_Time
Kelas
untuk
merepresentasikan generate_LocalDateTime
bentuk data datetime. 3
Rrule
Kelas untuk mengatur event yang generate_Rrule berulang.
check_MonthInstance parse_Rrule
4
Calendar
Kelas
untuk
merepresentasikan is_LeapYear
sebuah kalendar
get_Weekday get_NumofDays get_DayName get_MonthName
5
EventCalendar
Kelas untuk menampung event-event process_Recurrence dengan bentuk kalendar.
6
TMainForm
Kelas untuk melakukan penampilan show_Form dan manajemen event.
7
TAddEvent
Kelas untuk melakukan penambahan show_Form event
8
TEditEvent
Kelas untuk melakukan pengubahan show_EditForm event.
9
TDeleteEvent
process_Form
process_Form
Kelas untuk melakukan penghapusan show_ChooseEventForm event.
process_Form
III-15 No
Nama Kelas
Definisi
10
TExportEvent
Kelas
Operasi untuk
pengeksporan event 11
TImportEvent
TListEvent
MySQLConn
process_Form
Kelas untuk melakukan pendaftaran show_ChooseTimeEventForm event.
12
process_Form
Kelas untuk melakukan pengimporan show_Form event
11
melakukan show_ChooseEventForm
show_ListEvent
Kelas untuk melakukan koneksi ke __construct database event.
select_DB run_Query close
13
SOAPServer
Kelas untuk menjalankan server init_Server SOAP.
get_EventbyMonth get_EventbyID get_EventbyCategories
3.2.2.1 Kelas Event Kelas ini berisi semua operasi yang berhubungan dengan event. Fungsi utama kelas ini dijelaskan pada Algoritma III-1. Algoritma III-1 Fungsi utama kelas Event Fungsi generate_Uid() Masukan Keluaran Proses
:: ID dalam bentuk string. : Menggabungkan string datetime, id unik, dan hostname.
3.2.2.2 Kelas Date_Time Kelas ini berisi operasi-operasi yang berhubungan dengan format datetime. Fungsi utama kelas ini dijelaskan pada Algoritma III-2. Algoritma III-2 Fungsi utama kelas Date_Time Fungsi generate_DateTime(input year:integer, input month:integer, input day:integer, input hour:integer, input minute:integer, input second:integer) Masukan : Tahun, bulan, hari, jam, menit, detik dalam integer. Keluaran : Datetime Proses : Menggabungkan semua input menjadi datetime.
III-16 3.2.2.3 Kelas Rrule Kelas ini berisi operasi-operasi yang berhubungan dengan aturan event yang berulang. Fungsifungsi utama kelas ini dijelaskan pada Algoritma III-3. Algoritma III-3 Fungsi-fungsi utama kelas Rrule Fungsi generate_Rrule(input freq:string, input interval:integer, input count:integer) Masukan : Frekuensi pengulangan event, interval, dan banyaknya. Keluaran : Rrule dalam bentuk string. Proses : 1. Mengecek pengulangan tipe apa yang diinginkan 2. Men-generate recurrence rule berdasarkan input. Fungsi check_MonthInstance(input parsedrrule:array of string, input month:integer, input year:integer) Masukan : Aturan pengulangan yang telah dibelah, bulan pengecekan dan tahun pengecekan. Keluaran : Array yang berisi instans dari aturan tersebut. Proses : 1. Mengecek apakah ada instans dari aturan itu dalam bulan dan tahun yang dimasukkan 2. Mengembalikan array yang berisi instans dari aturan tersebut. Fungsi parse_Rrule() Masukan Keluaran Proses
:: Array yang berisi aturan pengulangan yang telah dipecah. : 1. Memecah aturan pengulangan menjadi bagian-bagian sederhana.
3.2.2.4 Kelas Calendar Kelas ini berisi operasi-operasi yang berhubungan dengan kalender Gregorian. Fungsi-fungsi utama kelas ini dapat dilihat pada Algoritma III-4. Algoritma III-4 Fungsi-fungsi utama kelas Calendar Fungsi is_LeapYear(input year:integer) Masukan : Tahun Keluaran : Boolean yang berisi true jika tahun kabisat. Proses : Mengecek apakah tahun kabisat atau bukan. Fungsi get_Weekday (input month:integer, input day:integer, input year:integer) Masukan : Tanggal. Keluaran : Hari untuk tanggal tersebut. Proses : Mengecek hari apakah pada tanggal tersebut. Fungsi get_NumofDays(input month:integer) Masukan : Bulan. Keluaran : Jumlah hari III-4 pada Fungsi-fungsi bulan tersebut. utama kelas Calendar Algoritma Proses : Mencari jumlah hari pada bulan tersebut. Fungsi get_DayName(input day:integer) Masukan : Hari. Keluaran : Nama hari. Proses : Mencari nama hari. Fungsi get_MonthName(input month:integer) Masukan : Bulan. Keluaran : Nama bulan. Proses : Mencari nama bulan.
III-17 3.2.2.5 Kelas EventCalendar Kelas EventCalendar adalah kelas turunan dari Calendar yang berisi instans-instans event yang terjadi pada bulan dan tahun tertentu. Prosedur utama kelas ini dijelaskan pada Algoritma III-5. Algoritma III-5 Prosedur utama kelas EventCalendar Prosedur process_Recurrence(input datetime:DateTime) Masukan : Datetime. Keluaran :Proses : 1. Mengambil semua event berulang dalam event calendar. 2. Mengecek instans dari event yang berulang. 3. Mengembalikan array yang berisi semua instans dari event berulang dalam bulan dan tahun tertentu.
3.2.2.6 Kelas TMainForm Kelas TMainForm adalah kelas yang berisi operasi-operasi manajemen event dan penampilan event. Prosedur-prosedur utama kelas ini dijelaskan pada Algoritma III-6. Algoritma III-6 Prosedur-prosedur utama kelas TMainForm Prosedur show_Form(input conn:MySQLConn, input post:array of string) Masukan : Koneksi database dan array of string. Keluaran :Proses : Menampilkan daftar event yang terjadi pada bulan dan tahun tertentu, daftar menu, form login, kalendar.
3.2.2.7 Kelas TAddEvent Kelas ini berisi operasi-operasi yang diperlukan untuk menambah event ke dalam basis data. Prosedur-prosedur utama dari kelas ini dijelaskan pada Algoritma III-7. Algoritma III-7 Prosedur-prosedur utama kelas TAddEvent Prosedur show_Form() Masukan Keluaran Proses
::: Menampilkan form pengisian data event.
Prosedur process_Form(input connection:MySQLConn, input ev:event) Masukan : Koneksi basis data dan event. Keluaran :Proses : Menambah data event ke dalam basis data.
3.2.2.8 Kelas TEditEvent Kelas ini berisi operasi-operasi yang diperlukan untuk mengubah event yang ada dalam basis data. Prosedur-prosedur utama dari kelas ini dijelaskan pada Algoritma III-8.
III-18 Algoritma III-8 Prosedur-prosedur utama kelas TEditEvent Prosedur show_EditForm(input connection:MySQLConn, input ev:event) Masukan : Koneksi basis data dan event. Keluaran :Proses : Menampilkan form pengubahan data event. Prosedur process_Form(input connection:MySQLConn) Masukan : Koneksi basis data. Keluaran :Proses : Mengubah data event dalam basis data.
3.2.2.9 Kelas TDeleteEvent Kelas ini berisi operasi-operasi yang diperlukan untuk menghapus event yang berada dalam basis data. Prosedur-prosedur utama dari kelas ini dapat dilihat pada Algoritma III-9. Algoritma III-9 Prosedur-prosedur utama kelas TDeleteEvent Prosedur show_ChooseEventForm(input connection:MySQLConn, input post:array ) Masukan : Koneksi basis data dan array post. Keluaran :Proses : Menampilkan form pemilihan data event yang akan dihapus. Prosedur process_Form(input connection:MySQLConn, input id:string) Masukan : Koneksi basis data. Keluaran :Proses : Menghapus data event dengan id tertentu dalam basis data.
3.2.2.10 Kelas TExportEvent Kelas ini berisi operasi-operasi yang diperlukan untuk mengekspor event yang berada dalam basis data. Prosedur-prosedur utama dari kelas ini dapat dilihat pada Algoritma III-10. Algoritma III-10 Prosedur-prosedur utama kelas TExportEvent Prosedur show_Form() Masukan Keluaran Proses
::Algoritma III-10 Prosedur-prosedur utama : Menampilkan form pemilihan data event yangkelas akan TExportEvent diekspor. Prosedur process_Form(input connection:MySQLConn, input id:string) Masukan : Koneksi basis data dan event id. Keluaran :Proses : Mengekspor data event dengan id tertentu dalam basis data.
3.2.2.11 Kelas TImportEvent Kelas ini berisi operasi-operasi yang mengatur pengimporan event. Prosedur-prosedur utama dari kelas ini dapat dilihat pada Algoritma III-11.
III-19 Algoritma III-11 Prosedur-prosedur utama kelas TImportEvent Prosedur show_Form() Masukan Keluaran
Proses
::-
: Menampilkan form untuk mengimpor file iCalendar.
Prosedur process_Form(input connection:MySQLConn, input files:array) Masukan : Koneksi basis data dan array $_FILES. Keluaran :-
Proses
: Memasukkan file iCalendar ke dalam basis data.
3.2.2.12 Kelas MySQLConn Kelas ini berisi operasi-operasi yang mengatur koneksi basis data, penjalanan query, pemilihan basis data dan penutupan koneksi basis data. Fungsi dan prosedur utama dari kelas ini dapat dilihat pada Algoritma III-12. Algoritma III-12 Fungsi dan prosedur utama kelas MySQLConn Prosedur __construct(input hostname:string, input username:string, input password:string) Masukan : Nama host, nama pengguna, dan kata kunci. Keluaran :Proses : Melakukan koneksi ke basis data Prosedur select_DB(input databasename:string) Masukan : Nama basis data. Keluaran :Algoritma III-11 Fungsi dan prosedur utama kelas MySQLConn Proses : Memilih basis data. Fungsi run_Query(input query:string) Masukan : Query basis data. Keluaran : Hasil query. Proses : Menjalankan query yang dimasukkan. Prosedur close() Masukan Keluaran Proses
::: Menutup koneksi basis data.
3.2.2.13 Kelas SOAPServer Kelas ini berisi operasi-operasi seperti pembentukan server SOAP dan fungsi-fungsi yang bisa diberikan oleh web service. Fungsi dan prosedur utama kelas ini dapat dilihat pada Algoritma III13. Algoritma III-13 Prosedur dan fungsi utama kelas SOAPServer Prosedur init_Server() Masukan Keluaran Proses
::: Menjalankan server SOAP.
III-20 Algoritma III-12 Prosedur dan fungsi utama kelas SOAPServer Fungsi get_EventbyMonth(input month:integer, input year:integer) Masukan : Bulan dan tahun. Keluaran : Array event dalam bentuk XML. Proses : 1. Mengambil event dari basis data dalam bulan dan tahun yang dimasukkan. 2. Memasukkan event ke dalam array. 3. Mengembalikan array event. Fungsi get_EventbyID(input ID:Event::uid) Masukan : ID event. Keluaran : Event dengan id tertentu. Proses : 1. Mengambil event dari basis data. 2. Mengembalikan event. Fungsi get_EventbyCategories(input categories:string) Masukan : Kategori. Keluaran : Array event dalam bentuk XML. Proses : 1. Mengambil event dari basis data sesuai kategori. 2. Memasukkan event ke dalam array. 2. Mengembalikan array event.
3.2.2.14 Kelas TListEvent Kelas ini berisi operasi-operasi yang mengatur penampilan daftar event dalam bulan tertentu atau tahun tertentu. Prosedur-prosedur utama kelas ini dapat dilihat pada Algoritma III-14. Algoritma III-14 Prosedur utama kelas TListEvent Prosedur show_ChooseTimeEventForm() Masukan :Keluaran :Proses : Form yang menyediakan pilihan bulan dan tahun. Prosedur show_ListEventForm(input post:array) Masukan : array post. Keluaran :Proses : Form yang menyediakan daftar event dalam bulan atau tahun tertentu.
3.2.3 Perancangan Struktur Data Perancangan struktur data utama dalam pembangunan aplikasi event calendar diuraikan pada tabel III-3. Pada tabel ini, perancangan struktur data hanya dibatasi pada kelas-kelas utama yang langsung merepresentasikan masalah manajemen event.
III-21
Tabel III-3 Perancangan struktur data utama No
Struktur Data
Atribut Nama
1
2
3
Event
Calendar
EventCalendar
Tipe
Visibility
uid
String
Private
dtstamp
Date_Time
Private
dtstart
Date_Time
Private
dtend
Date_Time
Private
summary
Text
Private
location
Text
Private
description
Text
Private
categories
Text
Private
rrule
Recrule
Private
organizer
Text
Private
attendee
Text
Private
months_offset_array
Array of Integer
Protected
month_days
Array of Integer
Protected
days_name_array
Array of String
Protected
months_name_array
Array of String
Protected
arrayofevents
Array of Event
Private
arrayofrecEvents
Array of
Private
Reccurence Event 4
Rrule
rrule
String
Private
5
Date_Time
Dt
String
Private
3.2.4 Perancangan Antarmuka Perancangan antarmuka utama aplikasi event calendar dapat dilihat pada gambar III-4.
III-22
Gambar III-4 Rancangan antarmuka utama
Antarmuka untuk penambahan, pengubahan, penghapusan, pendaftaran, dan pengimporan event dapat dilihat pada gambar III-5, III-6, III-7, dan III-8.
Gambar III-5 Rancangan antarmuka penambahan event
III-23
Gambar III-6 Rancangan antarmuka pengubahan event
Gambar III-7 Rancangan antarmuka penghapusan event
Gambar III-8 Rancangan antarmuka pendaftaran event
III-24
Gambar III-9 Rancangan antarmuka pengimporan event