BAB III ANALISA DAN PERANCANGAN 3.1 Inception 3.1.1 Model Bisnis dan Kebutuhan 3.1.1.1 Gambaran Umum Sistem Seperti telah dijelaskan sebelumnya bahwa REST merupakan suatu gaya arsitektur aplikasi berorientasi layanan. Suatu aplikasi berorientasi layanan pasti berjalan dengan konsep sistem terdistribusi yang dalam aplikasi ini digunakan konsep client-server. Karena itulah maka pada implementasi pembangunan aplikasi ini akan dibangun satu buah aplikasi untuk client yang akan berinteraksi secara dua arah, yaitu interaksi dengan pengguna dan interaksi dengan server sebagai tindak lanjut dari action trigger yang diberikan oleh pengguna, dan juga aplikasi berorientasi layanan di sisi server yang akan berisi API-API yang nantinya akan digunakan oleh aplikasi client. Karena gaya arsitektur yang digunakan adalah REST, maka aplikasi client akan berinteraksi atau memanggil API yang ada di server dengan menggunakan HTTP_REQUEST dengan berbagai metode di dalamnya. Begitu pula pada sisi server akan memberikan balikan dengan menggunakan HTTP_RESPONSE yang dalam aplikasi akan diimplementasikan berupa response file berformat json ataupun xml. 3.1.1.2 Fungsi Utama Sistem Sesuai dengan penjelasan-penjelasan sebelumnya fungsi utama dari sistem ini terbagi menjadi dua, yaitu fungsi server (REST server) sebagai tempat 64 65 penyimpanan data serta tempat dimana user dapat meminta data dengan menggunakan metode HTTP_REQUEST, dan fungsi client (Social Network application) sebagai tempat user berinteraksi dengan aplikasi jejaring sosial yang didalamnya tetap berhubungan dengan sistem server. A. Fungsi Utama REST Server REST server ini adalah tempat dimana user ataupun aplikasi dapat memanggil dan menggunakan REST API yang ada untuk memperoleh, menambah, merubah ataupun menghapus resource atau data. Gambar 3.1 Flow chart pemanggilan REST API oleh user Gambar 3.2 Flow chart pemanggilan REST API oleh klien 66 B. Fungsi Utama Client Application Aplikasi klien ini merupakan aplikasi dimana user berinteraksi, dan di dalamnya terdapat pemanggilan REST API. Pada sisi aplikasi ini tidak terdapat proses penyimpanan data yang tetap, karena semua data disimpan di sisi REST server. Dengan kata lain aplikasi ini adalah sebagai media implementasi dari REST server yang telah di buat. Gambar 3.3 Flow chart ruang lingkup client application 67 3.1.1.3 Analisa Masalah Saat ini hampir setiap orang selalu menggunakan media jejaring sosial, namun bagi orang awam mereka tidak akan mengetahui ataupun mungkin tidak akan memikirkan bagaimana system tersebut dibangun bagaimana sistem tersebut bekerja. Oleh karena itu diharapkan dengan pembahasan dan implementasi pembangunan sebuah simulasi jejaring sosial ini dapat membantu dalam memahami bagaimana suatu aplikasi yang memanfaatkan model arsitektur RESTful bekerja. REST API merupakan model arsitektur yang saat ini banyak digunakan karena beberapa keunggulannya dibandingan gaya arsitektur lainnya, walaupun pada kenyataannya setiap model arsitektur memang memiliki kelebihan dan kekurangan. Maka dari itu dengan mencoba membangun suatu REST server yang berisi API dan mengimplementasikannya pada suatu aplikasi klien dapat kita ketahui bagaimana model arsitektur REST ini bekerja. 3.1.1.4 Analisa Kebutuhan A. Kebutuhan Perangkat Keras Pada dasarnya perangkat keras yang dibutuhkan untuk dapat mengakses web ini setidaknya adalah sebuah komputer ataupun sebuah mobile device yang dapat mengakses internet, membuka aplikasi browser dan dapat berinteraksi dengan halaman web apapun merknya dan bagaimanapun kecepatannya. Untuk mobile application dibutuhkan mobile device yang sudah memiliki browser yang mendukung teknologi web HTML 5, CSS 3 dan javascript karena website ini dibangun dengan teknologi tersebut 68 Namun berikut penulis berikan rekomendasi perangkat keras yang dibutuhkan oleh seorang user. Tabel 3.1 Kebutuhan perangkat keras pengguna No Hardware Recommended specification user computer Minimum specification user computer 1 Processor Intel Pentium or AMD Athlon Intel Pentium Dual Core or AMD Phenom 2 Memory 256MB 2GB 3 Display 1024px X 768px with 16bit color 1280px X 800px with 16bit color 4 Input Keyboard and mouse Keyboard and mouse 5 Hard Drive 10GB 10GB 6 Connection Internet Connection Internet Connection Untuk hardware disisi server memang dibutuhkan sebuah server yang tangguh dikarenakan server akan terus diberikan beban dengan request-request dari banyak user dan akan mengakibatkan server akan melakukan banyak proses internal ataupun proses ke database. Tabel 3.2 Kebutuhan perangkat keras server No Hardware Minimum specification Recommended specification web server and database web server and database server computer server computer 1 Processor Processor : Intel Pentium Quad Core or AMD Phenom X4 Processor : Intel Pentium Core i7 or AMD Phenom X8 2 Memory Memory : 16GB Memory : 32GB 3 Display Display : 1280px X 800px with 16bit color Display: 1280px X 800px with 16bit color 4 Input Keyboard and mouse Keyboard and mouse 5 Hard Drive Hard Drive : 1TB Hard Drive : 2TB 6 Connection Internet Connection Internet Connection 69 B. Kebutuhan Perangkat Lunak Untuk dapat mengakses website ini pasti dibutuhkan akses internet dan aplikasi untuk melakukan browsing internet yang telah mendukung teknologi web HTML 5, CSS 3, dan javascript . Tabel 3.3 Kebutuhan perangkat lunak No Software Software for user Software for server Software for development 1 Operating System Microsoft Windows, Linux, Mac Microsoft Windows, Linux, Mac Operating System : Microsoft Windows, Linux, Mac 2 Browser Mozilla Firefox, Opera, Google Chrome Mozilla Firefox, Opera, Google Chrome Browser : Mozilla Firefox, Opera, Google Chrome 3 Web server tidak butuh Apache Server Web server : Apache Server 4 Security tidak butuh Anti virus Anti spyware Firewall tidak butuh 5 Text Editor tidak butuh tidak butuh Notepad++, CodeLobster 6 Image Editor tidak butuh tidak butuh Adobe Photoshop, Corel Draw Untuk dapat menjalankan aplikasi di sisi klien dengan menggunakaan mobile device, maka diperlukan device yang sudah memiliki spesifikasi seperti pada tabel 3.4. Tabel 3.4 Kebutuhan software mobile device No Minimum specification mobile device 1 Operating System 2 Web browser with support HTML 5, CSS 3, and Javascript 3 Have Internet Connection 70 C. Kebutuhan Pengguna Sistem yang dibangun merupakan sebuah web service RESTful yang di dalamnya terdapat resource-resource yang dapat digunakan oleh para developer untuk membangun aplikasi pihak ketiga atau aplikasi lainnya ataupun yang berkepentingan untuk mengolah data yang ada.API-API yang bersifat publik dapat diakses dan dimanfaatkan oleh para developer dengan menggunakan HTTP_REQUEST yang pastinya dengan menggunakan method-method yang ada pada HTTP, seperti GET, PUT, POST, dan DELETE. Oleh karena itu untuk menggunakan API yang ada maka setidaknya para pengguna haruslah mengetahui bagaimana konsep HTTP_REQUEST dan HTTP_RESPONSE, bagaimana membuat suatu HTTP_REQUEST, bagaimana menangkap dan memahami suatu HTTP_RESPONSE dan pastinya bagaimana mengimplementasikannya pada suatu bahasa pemrograman. D. Kebutuhan Fungsional Karena sistem ini merupakan suatu sistem yang di dalamnya terdapat dua sistem yang dibangun untuk dapat saling berinteraksi, maka kebutuhan fungsional untuk dua sistem tersebut dipisahkan. a. Kebutuhan Fungsional REST Server Tabel 3.5 menunjukan daftar kebutuhan fungsional sistem untuk REST server. Sistem pada REST server ini berisi fungsi-fungsi yang nantinya akan menghandle setiap permintaan resource dari klien sesuai dengan HTTP method yang digunakan. 71 Tabel 3.5 Kebutuhan fungsional untuk REST server no code module name method description actor 1 REQ1101 user method PUT menyimpan data user baru AC22 2 REQ1102 POST merubah data user yang AC22 ada 3 REQ1103 DELETE menghapus data user yang ada AC22 4 REQ1104 GET mengambil data user yang ada AC22 5 REQ1201 stream method PUT menyimpan data stream baru AC22 6 REQ1202 POST merubah data stream yang ada AC22 7 REQ1203 DELETE menghapus data stream yang ada AC22 8 REQ1204 GET mengambil data stream yang ada AC22 9 REQ1301 comment method PUT menyimpan data comment AC22 baru 10 REQ1302 POST merubah data comment yang ada 11 REQ1303 DELETE menghapus data comment AC22 yang ada 12 REQ1304 GET mengambil data comment AC22 yang ada AC22 13 REQ1401 conversation PUT method menyimpan data conversation baru AC22 14 REQ1402 POST merubah data conversation yang ada AC22 15 REQ1403 DELETE menghapus data conversation yang ada AC22 16 REQ1404 GET mengambil data conversation yang ada AC22 17 REQ1501 message method PUT menyimpan data message AC22 baru 18 REQ1502 POST merubah data message yang ada 19 REQ1503 DELETE menghapus data message AC22 yang ada 20 REQ1504 GET mengambil data message AC22 yang ada AC22 72 Tabel 3.5 Kebutuhan fungsional untuk REST server (lanjutan) no code module name method description actor 21 REQ1601 relation method PUT menyimpan data relation baru AC22 22 REQ1602 POST merubah data relation yang ada AC22 23 REQ1603 DELETE menghapus data relation yang ada AC22 24 REQ1604 GET mengambil data relation yang ada AC22 b. Kebutuhan Fungsional Client Application Tabel 3.6 menunjukan daftar kebutuhan fungsional inti sistem untuk aplikasi klien, dan pada lampiran C disertakan pula daftar kebutuhan fungsional dari aplikasi klien yang dibangun secara lebih mendetail. Aplikasi klien yang dibangun ini merupakan aplikasi jejaring sosial yang sederhana dimana pengguna dapat membuat status, memberi komentar dan saling mengirim pesan. Tabel 3.6 Kebutuhan fungsional untuk client application no code module name description actor 1 REQ01 account registration pendaftaran akun baru AC21 2 REQ02 account activation pengaktifan akun AC01 3 REQ03 reset password penggantian kata sandi AC21 4 REQ04 account login log in akun AC21 5 REQ05 account logout log out akun AC21 6 REQ06 manage profile melihat dan merubah profil akun AC21 7 REQ07 manage relation menambah relasi dengan akun lain AC21 8 REQ08 manage stream membuat dan menghapuss streeam status AC21, AC22 9 REQ09 manage conversation membuat suatu obrolan dengan akun lain AC21, AC22 73 E. Kebutuhan Antarmuka Client Application Tabel 3.7 menunjukan daftar kebutuhan antarmuka utama sistem untuk aplikasi klien. Antarmuka untuk aplikasi klien berupa jejaring sosial ini adalah sebagai tempat implementasi dari kebutuhna fungsional yang telah disebutkan pada tabel 3.6. Tabel 3.7 Kebutuhan utama antarmuka sistem untuk aplikasi klien No Antarmuka Kebutuhan 1 Antarmuka publik 1. Welcome page 2. Question page 3. About page 2 Antar muka pengguna 1. Sign in page 2. Sign up page 3. Reset password page Activation page 3 Antar muka pengguna exist 1. Stream page 2. Conversation page Profile page 3.1.2 Analisa Kelayakan Dengan membandingkan sistem yang akan dibangun dengan sistem yang sudah ada dan sudah dipakai oleh publik, walaupun REST API yang akan dibangun masih sangat jauh dibandingkan dengan REST API yang sudah terkenal seperti REST API milik Facebook (http://developers.facebook.com) dan Twitter (https://dev.twitter.com), namun secara konsep REST API yang akan dibangun memiliki konsep yang sama hanya saja dalam hal keamanan dan dokumentasi masih banyak terdapat kekurangan karena melihat juga perbandingan waktu pengerjaan, tujuan pembangunan dan team pembangun sistem. 3.1.3 Perancangan Prototipe Konsep Prototipe konsep dari sistem ini secara inti adalah bagaimana membangun suatu web service dengan arsitektur REST sehingga aplikasi klien dapat 74 mengaksesnya dengan menggunakan HTTP_REQUEST serta memperoleh balikan berdasarkan permintaan yang dikirimkan. Gambar 3.4 menjelaskan tentang gambaran inti dari konsep web service REST. Gambar 3.4 Gambaran singkat konsep REST API 3.1.4 Implementasi Prototipe Konsep Berdasarkan prototipe konsep di atas, maka untuk dapat melihat bagaimana konsep tadi berjalan dibutuhkan minimal dua buah sistem yang terpisah yaitu sistem pada pihak yang menyediakan service, dan sistem sebagai pihak yang membuat request. Karena pembangunan sistem yang dilakukan di mesin yang sama, yang seharusnya dilakukan pada dua mesin yang berbeda, maka untuk membedakan dua sistem tersebut dilakukan pemisahan folder pada web server. 3.1.5 Pengujian Sistem Untuk tahap inception ini belum dibutuhkan pengujian, karena pada tahap ini baru dibuat konsep-konsep dan pengumpulan kasus dan kebutuhan. Pada tahap ini belum dilakukan implementasi nyata dalam pembangunan sistem. 75 3.2 Elaboration 3.2.1 Model Bisnis dan Kebutuhan Secara garis besar model bisnis dan kebutuhan sistem sudah dijelaskan pada tahapan sebelumnya (tahap inception), namun pada tahap ini bila diperlukan akan dilakukan tambahan-tambahan untuk melengkapi apabila ada yang terlewat. 3.2.1.1 Kebutuhan Sistem A. Kebutuhan Aktor Pada sistem ini secara keseluruhan terdapat lima aktor termasuk di dalamnya pengguna dan sistem yang memiliki priviledge dan fungsi masingmasing, namun yang terlibat langsung atau berinteraksi langsung di dalam sistem hanyalah tiga aktor, yaitu ahix, ahix application dan ahix services. Adapun otoritas atau behaviour setiap pengguna digambarkan pada tabel 3.8. Tabel 3.8 Actor Glossary no code name description priviledge 1 AC01 user Merupakan aktor yang 1.Account bersifat umum Registration (general) dalam 2.Account aplikasi ini. Activation 3.Reset Password Aktor ini akan 4.Account Login menjadi kelas orang 5.Account Logout tua (parent class) dari kelas aktor lainnya, yaitu administrator dan ahix. 2 AC11 administrator Merupakan aktor yang 1.Manage User dapat mengatur apa 2.Manage Content yang ada didalam aplikasi, baik itu mengatur konten, mengatur pengguna ataupun lainnya. 76 Tabel 3.8 Actor Glossary (lanjutan) no code name 3 AC12 ahix description priviledge Merupakan aktor utama dari aplikasi ini. 1.Manage Profile 2.Manage Relation 3.Manage Aktor ini adalah Conversation pelaku utama dari 4.Manage Stream aplikasi ini, karena 5.Question aktor inilah yang paling banyak melakukan interaksi dengan aplikasi dan dengan aktor lainnya. Aktor ahix adalah aktor user yang telah melakukan proses registrasi dan telah mengaktifkan akunnya. 4 AC21 ahix website Merupakan website dari aplikasi ini sendiri dimana user melakukan interaksi 1. User Interface, 2.Validation and check input 5 AC22 ahix service Merupakan web service yang menyediakan dan melayani segala kebutuhan yang berhubungan dengan data dan merupakan sistem yang berkomunikasi langsung dengan database 1.Response request data, 2.CRUD to database 6 AC23 other system Merupakan sistem atau aplikasi lain yang terhubung dengan sistem ini 1.Response request data 3.2.2 Analisa Kebutuhan dan Pembangunan Sistem Berdasarkan kebutuhan-kebutuhan yang sudah didefinisikan sebelumnya, maka dapat disimpulkan untuk pembangunan sistem ini akan terbagi menjadi dua cakupan. Pertama adalah membangun web service yang menyediakan REST API 77 dengan memanfaatkan web server Apache dengan bahasa pemrograman PHP serta database MySQL. Kedua adalah membangun aplikasi pihak klien yang nantinya akan menggunakan API yang sudah dibuat sebelumnya sebagai transaksi data karena pada aplikasi pihak klien ini tidak akan terdapat proses penyimpanan, perubahan atau penghapusan data. Aplikasi ini akan dibangun dengan memanfaatkan web server Apache, bahasa pemrograman PHP juga. 3.2.3 Perancangan Sistem Karena dalam perencanaan dan pembangunan sistem ini menggunakan metode pengembangan USDP, maka semua rancangan dan pengembangan menggunakan konsep use case driven, yaitu semua berdasarkan kasus-kasus yang ada dalam pembangunan aplikasi yang di gambarkan dalam bentuk diagram use case. Oleh karena itu semua berawal dari pembuatan use case dari kasus-kasus yang ditemukan yang nantinya akan dikembangkan dan lebih dijelaskan dalam bentuk diagram-diagram UML lainnya. 3.2.3.1 UML UML ini akan menggambarkan sistem aplikasi ini yang tentunya berdasarkan atas kebutuhan-kebutuhan fungsional yang sudah di paparkan sebelumnya. Dengan adanya diagram-diagram UMl ini maka dapat terlihat bagaimana konsep dari sistem yang dibangun serta bagaimana proses yang berlangsung di dalamnya. 78 A. REST Server Use Case Diagram Gambar 3.5 REST server use case B. Client Application Use Case Diagram Gambar 3.6 Use case secara keseluruhan aplikasi klien 79 Gambar 3.5 menggambarkan ruang lingkup dari REST server yang dibangun yang di dalamnya merupakan kumpulan dari API-API dari resource yang ada. Sedangkan gambar 3.6 menggambarkan ruang lingkup secara keseluruhan dari web aplikasi jejaring sosial yang akan dibangun sebagai tempat dimana nanti REST API akan diimplementasikan. Pada bagian lampiran D dari laporan ini pun disertakan diagram use case yang lebih mendetail beserta penjelasannya. C. REST API call Sequence Diagram Gambar 3.7 Sequence REST API call Pada saat suatu API dipanggil maka yang dilakukan pertama kali oleh sistem adalah memeriksa siapa yang memanggil API apakah admin atau hanya pengguna biasa, hal ini akan berpengaruh pada hasil keluaran dari API. 80 Kemudian sistem akan memeriksa resource apa yang ingin diakses dan dengan menggunakan HTTP_METHOD apa API dipanggil yang akan merelasikan maksud pemanggilan API dengan fungsi-fungsi yang ada pada sistem. Setelah resource dan HTTP_METHOD sudah diketahui dan fungsi yang akan dipanggil ditemukan, maka sistem akan berkomunikasi dengan sistem basis data sesuai dengan maksud pemanggilan API. Setelah data yang dibutuhkan sudah terkumpul, maka sistem akan mengatur hasil keluaran dari API sesuai dengan kondisi data masukan dan data yang diterima dari basis data. Untuk sequence diagram aplikasi klien disertakan pada lampiran E yang didalamnya digambarkan alur proses setiap kebutuhan fungsional aplikasi. C. REST API call Activity Diagram Gambar 3.8 Activity REST API call Gambar 3.8 merupakan gambaran lain dari proses pemanggilan API seperti yang dijelaskan pada sequence diagram sebelumnya. Pada bagian lampiran F disertakan pula activity diagram dari proses detail yang ada pada aplikasi klien. 81 D. Client Application Deployment Diagram Gambar 3.9 Deployment diagram sistem Dapat terlihat dari gambar 3.9 bagaimana sistem ini bekerja, gambar di atas merupakan gambaran bagaimana suatu perangkat atau dalam hal ini browser meminta resource berupa halaman website kepada web server yang nantinya akan ditampilkan. Untuk aplikasi pihak ketiga dapat membuat tampilan tersendiri tergantung keinginan dan kebutuhan dari pihak developer bersangkutan dengan menggunakan data yang berasal dari pemanggilan API. 3.2.3.2 Perancangan Model Data Berikut ini adalah rancangan dari basis data yang digunakan yang didalamnya dijelaskan tabel-tabel dan kolom-kolom yang ada. A. Kamus Data Tabel 3.9 Kamus data No 1 Nama Data users Detail activation_code + address + birth_date + birth_place + created_date + email + gender + id + is_login + last_ip + last_login + name + password + photo + relation + school + status + type 82 Tabel 3.9 Kamus data (lanjutan) No Nama Data Detail 2 streams id + content + created_date + last_update + idx + status + user_id 3 comments content + created_date + id + status + stream_id + user_id + idx + last_update 4 conversations id + idx + created_date + last_update + users + status + user_id messages id + idx + created_date + last_update + conversation_id + user_id + content + status relations id + idx + type + status + user_id + user_rel 5 6 B. Struktur Data dan Tabel a. Tabel Pengguna 1. Nama Tabel : users 2. Fungsi : Menyimpan data-data pengguna 3. Kunci Primer : id, activation_code, email 4. Kunci Sekunder : 5. Struktur Tabel : Tabel 3.10 Struktur data tabel users No Nama Kolom Tipe Data Lebar/ Format Keterangan 1 activation_code Varchar 101 kode aktivasi yang di generate secara otomatis oleh sistem pada saat user melakukan registrasi 2 address Varchar 501 alamat lengkap dari user 3 birth_date Datetime yyyy-mm-dd hh:mm:ss 4 birth_place Enum tanggal lahir user ‘active’, kota tempat lahir ‘unconfirm’, user ‘deleted’ 83 Tabel 3.10 Struktur data tabel users (lanjutan) No Nama Kolom Tipe Data Lebar/Format Keterangan 5 created_date Datetime yyyy-mm-dd hh:mm:ss waktu saat registrasi 6 email Datetime yyyy-mm-dd hh:mm:ss alamat email dari user 7 gender Enum ‘male’, ‘female’ jenis kelamin dari user 8 id Integer 6 id unik yang dimiliki user 9 is_login Boolean status online 10 last_ip Varchar 101 alamat ip terakhir 11 last_login Datetime yyyy-mm-dd hh:mm:ss waktu terakhir dari user saat login 12 name Varchar 101 nama lengkap dari user 13 password Varchar 101 kata sandi dari user 14 photo Varchar 501 url dari foto profil 15 school Varchar 501 riwayat pendidikan 16 status Enum ‘active’, ‘inactive, ‘banned status dari user 17 type Enum ‘admin’, ‘ahix tipe dari user b. Tabel Streams 1. Nama Tabel : streams 2. Fungsi : Menyimpan data-data stream 3. Kunci Primer : id, idx 4. Kunci Sekunder : user_id 5. Struktur Tabel : Tabel 3.11 Struktur data tabel streams No Nama Kolom Tipe Data Lebar/Format 1 content Varchar 2 created_date Datetime Keterangan 1001 isi konten stream yyyy-mm-dd hh:mm:ss waktu saat user membuat stream 84 Tabel 3.11 Struktur data tabel streams No Nama Kolom Tipe Data Lebar/Format Keterangan 3 id Integer 6 id unik yang dimiliki stream 4 last_update Datetime yyyy-mm-dd hh:mm:ss waktu terakhir dirubah 5 idx Varchar 101 id unik yang dimiliki stream 6 status Enum ‘active’, ‘block’, ‘delete’ status dari stream 7 user_id Integer 6 user pembuat stream c. Tabel Comments 1. Nama Tabel : comments 2. Fungsi : Menyimpan data-data komentar 3. Kunci Primer : id, idx 4. Kunci Sekunder : user_id, stream_id 5. Struktur Tabel : Tabel 3.12 Struktur data tabel comments No Nama Kolom Lebar/ Format Tipe Data Keterangan 1 content Varchar 1001 konten komentar 2 created_date Datetime yyyy-mm-dd hh:mm:ss waktu saat user membuat komentar 3 id Integer 6 id komentar 4 last_update Datetime yyyy-mm-dd hh:mm:ss waktu terakhir dirubah 5 idx Varchar 101 id unik yang dimiliki komentar 6 status Enum ‘active’, ‘block’ status komentar 7 user_id Integer 6 pembuat komentar 8 stream_id Varchar 101 stream tempat komentar dibuat 85 d. Tabel Conversations 1. Nama Tabel : conversations 2. Fungsi : Menyimpan data-data percakapan 3. Kunci Primer : id, idx 4. Kunci Sekunder : user_id 5. Struktur Tabel : Tabel 3.13 Struktur data tabel conversations No Nama Kolom Lebar/ Format Tipe Data Keterangan 1 users Varchar 1001 user yang terlibat 2 created_date Datetime yyyy-mm-dd hh:mm:ss waktu saat membuat pembicaraan 3 id Integer 6 id unik yang dimiliki setiap pembicaraan 4 last_update Datetime yyyy-mm-dd hh:mm:ss waktu terakhir dirubah 5 idx Varchar 101 id yang dimiliki pembicaraan 6 status Enum ‘active’, ‘block’, ‘delete’ status dari pembicaraan 7 user_id Integer 6 pembuat pembicaraan e. Tabel Messages 1. Nama Tabel : messages 2. Fungsi : Menyimpan data-data pesan 3. Kunci Primer : id, idx 4. Kunci Sekunder : user_id, conversation_id 5. Struktur Tabel : Tabel 3.14 Struktur data tabel messages No Nama Kolom Tipe Data Lebar/ Format Keterangan 1 content Varchar 1001 isi konten dari pesan 2 created_date Datetime yyyy-mm-dd hh:mm:ss waktu saat user membuat pesan 86 Tabel 3.14 Struktur data tabel messages (lanjutan) No Tipe Data Nama Kolom Lebar/ Format 6 Keterangan 3 id Integer id yang dimiliki setiap pesan 4 last_update Datetime yyyy-mm-dd hh:mm:ss waktu terakhir dirubah 5 idx Varchar 101 id yang dimiliki setiap pesan 6 status Enum ‘active’, ‘block’ status dari pesan 7 user_id Integer 6 user pembuat pesan 8 conversation_id Varchar 101 pembicaraan tempat pesan dibuat f. Tabel Relations 1. Nama Tabel : relations 2. Fungsi : Menyimpan data-data relasi 3. Kunci Primer : id, idx 4. Kunci Sekunder : user_id, user_rel 5. Struktur Tabel : Tabel 3.15 Struktur data tabel relations No Nama Kolom Tipe Data Lebar/ Format Keterangan 1 type Enum 'friend', 'brother', 'sister', 'family', jenis relasi 2 id Integer 6 id yang dimiliki setiap relasi 3 idx Varchar 101 id unik yang dimiliki setiap relasi 4 status Enum ‘active’, ‘block’, ‘unconfirm’ status dari relasi 5 user_id Integer 6 user pembuat request relasi 6 user_rel Integer 101 user penerima request relasi 87 g. Tabel Notifications 1. Nama Tabel : notifications 2. Fungsi : Menyimpan data-data pemberitahuan 3. Kunci Primer : id, idx 4. Kunci Sekunder : user_id 5. Struktur Tabel : Tabel 3.16 Struktur data tabel notifications No Nama Kolom Tipe Data Lebar/ Format Keterangan 1 content Varchar 1001 isi konten pemberitahuan 2 created_date Datetime yyyy-mm-dd hh:mm:ss waktu saat user menerima pemberitahuan 3 id Integer 6 id unik yang dimiliki setiap pemberitahuan 4 last_update Datetime yyyy-mm-dd hh:mm:ss waktu terakhir di rubah 5 idx Varchar 101 id unik yang dimiliki setiap pemberitahuan 6 status Enum ‘unopen’, ‘open’, ‘block’ status dari pemberitahuan 7 user_id Integer 6 user penerima pemberitahuan 8 img Varchar 101 gambar link pemberitahuan 9 type Enum 'FR', 'MG', 'CM', 'TG', 'RS' jenis pemberitahuan 10 url Varchar 501 link url pemberitahuan 88 C. Entity Relationship Diagram Berikut ini adalah penggambaran ER-D dari entitas-entitas yang ada pada sistem beserta atributnya. ER-D ini merupakan juga penggambaran resource yang ada atau yang disediakan oleh service. Activation_code id status Created_date address status Last_login type password Birth_place memiliki idx relations users id name Birth_date memiliki gender User_id Is_login email User_rel school type relation photo id memiliki status content status memiliki users id idx memiliki conversations idx Last_update streams Created_date Last_update User_id Terdiri atas status Created_date memiliki id User_id content status content idx messages id Last_update idx User_id comments Created_date conversation_id Last_update Created_date User_id Stream_id Tabel 3.10 ER-Diagram sistem 89 D. Relasi Antar Tabel Gambar 3.44 adalah sebuah class diagram yang nantinya akan menjadi penggambaran relasi antar tabel yang akan diimplementasikan dalam database. Gambar 3.11 Class diagram 3.2.3.3 Perancangan Antarmuka Untuk antarmukan perancangan hanya terdiri atas perancangan antar muka untuk versi desktop, dan perancangan ini baru hanya merupakan wireframe atau kerangka tampilan yang bisa saja tidak mirip persis disaat nanti hasil akhir. 90 A. Perancangan Antarmuka Publik 1. Welcome page Tabel 3.12 Wireframe welcome page Pada halaman awal hanya akan terdapat tulisan-tulisan berupa informasi mengenai aplikasi, selain itu terdapat pula tombol-tombol untuk melakukan pendaftaran dan log in. Pada dropdown kanan atas terdapat form untuk log in dan link untuk reset password. 2. Contact page Tabel 3.13 Wireframe contact page Inti dari halaman ini adalah pengguna harus mengisikan alamat email dan pesan yang akan dikirim kepada admin. 91 3. About page Tabel 3.14 Wireframe about page Halaman ini hanya menampilkan informasi mengenai aplikasi ini, dan informasi ini hanya merupakan teks atau paragraf biasa. B. Perancangan Antarmuka Pengguna 1. Sign in page Tabel 3.15 Wireframe sign in page Untuk melakukan log in pengguna harus memasukan alamat email beserta pasangan kata sandinya. Hanya pengguna yang sudah melakukan aktivasi dan pengguna yang tidak dibanned yang dapat melakukan log in. Untuk versi desktop sign in dibuat berupa dropdown sedangkan untuk versi mobile dibuat sebuah halaman. 92 2. Sign up page Tabel 3.16 Wireframe sign up page Untuk halaman pendaftaran ini antara desktop dan mobile dibedakan seperti pada halaman sign in. Pada versi desktop form pendaftaran ditampilkan dengan kotak dialog sedangkan pada versi mobile dibuat halaman khusus untuk melakukan pendaftaran. 3. Reset password page Tabel 3.17 Wireframe reset password dialog Halaman pengaturan ulang kata sandi ditampilkan seperti halnya halaman untuk melakukan pendaftaran akun baru, yaitu pada versi desktop ditampilkan dengan menggunakan kotak dialog sedangkan pada versi mobile dibuat halaman tersendiri untuk melakukan hal ini. 93 C. Perancangan Antarmuka Pengguna Exist 1. Stream page Tabel 3.18 Wireframe stream page Stream status dari pengguna yang ada akan ditampilkan seperti sebuah list dengan mebnggunakan tag <li> pada HTML. Pada setiap list akan terdapat penjelasan untuk setiap status dan juga tombol komentar yang akan diklik apabila akan menambahakan komentar. Daftar status ini akan dimuat ulang dengan interval waktu yang sudah ditentukan, dan pemuatan ulang ini dilakukan secara asynchronous dengan menggunakan AJAX. Tujuannya adalah agar daftar status yang ditampilkan merupakan daftar status yang terbaru yang dibuat oleh pengguna, 94 2. Conversation page Tabel 3.19 Wireframe conversation page Pesan-pesan yang ada pada suatu obrolan akan ditampilkan seperti pada stream status, yaitu dengan menggunakan tag <li> pada HTML agar terlihat seperti list tersusun. Setiap pengguna dapat melakukan obrolan dengan pengguna lainnya yang aktif. Pada sisi kiri adalah daftar dari obrolan dengan pengguna lain yang pernah dilakukan, dan apabila diklik maka pesan-pesan yang ada pada obrolan tersebut akan ditampilkan pada daftar pesan yang ada di tengah. Baik daftar obrolan ataupun daftar pesan dari obrolan akan dimuat ulang dalam interval waktu tertentu sama halnya seperti pemuatan ulang pada status dan komentar. 95 3. Profile page Tabel 3.20 Wireframe profile page Pada halaman profil akan ditampilkan informasi mengenai pengguna seperti nama, alamat, tempat lahir dan tanggal lahir. Selain itu pada halaman ini akan ditampilkan pula stream status dari pengguna tersebut. Tombol untuk menambahkan sebuah relasi dengan pengguna akan terdapat pada halaman ini apabila memang belum ada relasi dengan pengguna. Apabila telah memiliki relasi maka tombol akan digantikan dengan keterangan dari relasi. Pengguna dapat pula membuat status baru dari halaman ini. Sama seperti pada halaman stream, pada halaman ini pun berlangsung proses pemuatan ulang secara asychronous dengan interval tertentu. 96 3.2.4 Gambaran Interaksi Sistem 1. REQ01 - Account Registration Gambar 3.21 Proses pendaftaran akun Pengguna membuka halaman registrasi akun baru kemudian mengisi data dirinya, data yang telah dimasukan tersebut akan dikirim sebagai parameter API. API yang digunakan adalah API resource user dengan method PUT. Parameter masukan yang dikirim tersebut akan ditangkap REST server untuk kemudian akan dijadikan sebuah query SQL sebagai proses untuk menambahkan data baru. Setelah data telah ditambahkan ke database, maka sistem akan mengirim link aktivasi melalui email yang berasal dari data masukan pengguna. 2. REQ02 - Account Activation Gambar 3.22 Proses aktivasi akun 97 Aktivasi akun dimulai saat pengguna membuka emailnya dan mengklik link aktivasi yang telah dikirim dari proses pendaftaran sebelumnya. Saat link aktivasi diklik, maka browser akan melakukan perpindahan halaman dan sistem akan melakukan pengecekan untuk memastikan bahwa link yang diklik valid. Saat link sudah dinyatakan valid maka selanjutnya pengguna akan diminta untuk melengkapi data dirinya untuk profil pengguna. 3. REQ03 - Reset Password Gambar 3.23 Proses penggantian kata sandi Untuk melakukan pergantian kata sandi, maka pengguna harus memasukan alamat email yang valid dan digunakan pada saat melakukan pendaftaran. Email tersebut akan dikirim ke REST server untuk dicek apakah valid atau tidak. Apabila email yang dimasukan valid maka sistem akan mengirim email yang akan memberi petunjuk langkah berikutnya yang harus dilakukan pengguna untuk mengganti kata sandinya. 98 4. REQ04 - Account Login Gambar 3.24 Proses log in akun Pada saat log in, pengguna harus memasukan alamat email dan pasangan kata sandinya. Kedua data tersebut akan menjadi parameter untuk dikirim ke REST server dan dilakukan pengecekan apakah email dan kata sandi tersebut valid atau tidak. Jika email dan kata sandi tersebut valid, sistem akan merubah status akun tersebut menjadi online dan sistem pada aplikasi klien akan membuat sebuah session yang berisikan data-data dari pengguna. 5. REQ05 - Account Logout Gambar 3.25 Proses log out akun 99 Proses log out dimulai pada saat pengguna mengklik tombol atau link untuk sign out. Pada saat aksi tersebut dilakukan maka aplikasi klien akan meminta REST server untuk merubah status pengguna di database menjadi offline dan kemudian sistem akan menghapus seluruh data session dari pengguna. 6. REQ06 - Manage Profile Gambar 3.26 Proses pendaftaran akun Pengguna dapat melihat data profil dirinya ataupun data profil akun lainnya. Pada saat hal ini dilakukan, aplikasi klien akan menggunakan API dengan resource user dan method GET untuk mengambil data-data pengguna yang akan dilihat profilnya. Apabila pengguna melihat halaman profil milik dirinya sendiri, maka pengguna dapat melakukan perubahan data profilnya. Dengan memanggil API resource user dengan method POST serta parameter yang berasal dari data yang diisikan pengguna, maka sistem akan merubah data dari pengguna tersebut. 100 7. REQ07 - Manage Relation Gambar 3.27 Proses membuat relasi Pada saat melihat profil dari pengguna lain, seorang pengguna dapat menambahkan relasi pertemanan dengan pengguna tersebut. Hal ini dapat dilakukan hanya dengan mengklik tombol yang ada di halaman tersebut. Namun proses ini membutuhkan persetujuan dari kedua belah pihak. 8. REQ08 - Manage Stream Gambar 3.28 Proses membuat status Pengguna dapat membuat sebuah status baru ataupun mengomentari status yang sudah ada. Pada saat hal ini dilakukan, aplikasi klien akan memanggil API dengan resource stream atau comment dengan method PUT. 101 9. REQ09 - Manage Conversation Gambar 3.29 Proses membuat pesan Untuk melakukan sebuah obrolan dengan pengguna lain, pengguna harus mengetahui alamat email atau id dari pengguna lain yang akan diajak melakukan suatu obrolan. Dengan menghubungkan antara id pengguna dengan id pengguna yang diajak mengobrol, maka sistem dapat menambah sebuah data obrolan antara kedua pengguna tersebut di database. Setelah obrolan terbentuk maka kedua pengguna tersebut dapat saling mengirim pesan. Untuk membuat sebuah obrolan dan mengirim pesan, sistem menggunakan HTTP method yang sama yaitu method PUT. Hanya saja resource yang dipanggil berbeda. 102 3.2.5 Implementasi Awal Kerangka Perancangan Sistem Berdasarkan kerangka perancangan yang telah dibuat sebelumnya, implementasi pada tahap ini dilakukan dengan mempersiapkan segala kebutuhan teknis yang nanti akan dilakukan pada tahap berikutnya (tahap construction). Kerangka perancangan telah dituangkan dalam bentuk diagram-diagram UML yang pada kasus ini menggunakan use case diagram, sequence diagram , dan activity diagram serta dengan membuat wireframe untuk nantinya akan menjadi mockup tampilan aplikasi. Dengan disusunnya segala kebutuhan sistem serta proses yang ada didalamnya yang dituangkan secara teori serta dalam bentuk diagram-diagram UML, maka berdasarkan itu semua dapat tergambarkan bagaimana nanti proses interaksi yang akan berlangsung antara aplikasi klien dengan REST API yang telah dibuat. 3.2.6 Pengujian Awal Kerangka Perancangan Sistem Pada tahap ini dilakukan pengujian terhadap perancangan sistem yang telah dibuat sebelumnya dengan cara menganalisa dan memberi kasus-kasus pada rancangan yang ada, serta melihat dan menyimpulkan apakah rancangan yang sudah dibuat sudah memenuhi kebutuhan awal yang sudah didefinisikan. Melihat dari diagram-diagram UML serta wireframe yang telah dibuat secara keseluruhan inti dari sistem yang akan dibangun sudah terdapat di dalamnya tinggal bagaimana nanti merealisasikannya pada tahap berikutnya.