5 BAB 2 TINJAUAN PUSTAKA 2.1 Social Media Menurut Barbier & Feng (2013:1), Social media didefinisikan sebagai "sekelompok aplikasi berbasis internet yang membangun di atas fondasi ideologi dan teknologi web 2.0, dan yang memungkinkan penciptaan dan pertukaran user-generated content." Berikut adalah berbagai jenis situs social media, termasuk jejaring sosial (misalnya, facebook, linkedin, dll), blogging (misalnya, huffington post, business insider, engadget, dll), micro-blogging (misalnya, twitter, tumblr, plurk, dll), wiki (misalnya, wikipedia, wikitravel, wikihow, dll), social news (misalnya, digg, slashdot, reddit, dll), social bookmarking (misalnya, delicious, stumbleupon, dll), media sharing (misalnya, youtube, flickr, ustreamtv , dll), opinion, reviews and ratings (misalnya, epinions, yelp, cnet, dll), dan community Q&A (misalnya, yahoo answers, wikianswers, dll.). Menurut Kietzmann dan Hermkens (2011:243) terdapat 7 kegunaan dari social media yang digambarkan sebagai berikut Gambar 2.1 Fungsi Social Media 5 6 Menurut Kailer dan Mandl (2013:10-11), Berikut ini adalah contoh fitur social media yang ditemukan dan ditugaskan ke masing-masing social building blocks yaitu sebagai berikut: Tabel 2.1 Contoh Penerapan Fungsi Social Media Building Block Conversations Identity Presense Relationships Reputation Sharing Groups Social Media Feature Blog Comments in customer reviews Discussion platform for customers (misalnya, papan pesan) Sending messages to other customers Users-created Blog Public customer profile Determine online status of other users Manage contacts inside the online store Add custom advantage/ disadvantage to reviews or ratings Custom like-functionality for a product Customer ratings and reviews Detailed customer ratings (additional to the overall rating) Liking product detail via social network (misalnya facebook) People-based reputation system (misalnya top reviewer) Rating the helpfulness of reviews Rating the wish lists of other users Add personal information to reviews or ratings Manage events and dates Product recommendation via e-mail Sharing of a product wish list Sharing product details via social network Uploading user generated media (misalnya foto produk) User defined tags Making followers (misalnya Twitter) 2.2 Pemograman Berorientasi Objek Pemograman berorientasi objek merupkaan konsep pemograman yang lebih mengfokuskan pada objek – objek pembentuk sebuah program dari pada proses program itu sendiri (Robertson, 2006:192). Sebuah objek merupakan kumpulan dari aktivitas yang mempengaruhi sebuah kejadian (Wegner, 1991: 9). Perancangan berorientasi objek menyelesaikan masalah dengan mengandaikan sebuah masalah menjadi sebuah kumpulan objek yang berbeda yang melakukan fungsi tertentu dan saling berhubungan satu dengan lainnya. Sebuah program yang berorientasi objek merupakan sekumpulan objek yang berinteraksi satu dengan lainnya, tiap objek bertanggung jawab pada kejadian dan datanya (Robertson, 2006:192). 7 2.2.1 Class Pada implementasi pemograman berorientasi objek dibutuhkan sebuah cetak biru (template) untuk membuat sebuah objek yang dinamakan dengan kelas (class). Sebuah kelas memiliki variable dan method yang akan digunakan ketika objeknya dibuat. Variable yang dideklarasikan di dalam sebuah kelas menjadi penampung nilai dalam memory dan fungsi objek dieksekusi di dalam suatu program. 2.2.2 Inheritance Orientasi Objek memiliki kemampuan untuk mewariskan sifat dari sebuah kelas ke kelas lain yang disebut sebagai pewarisan (inheritance). Dengan adanya kemampuan ini membuat programmer untuk dapat menggunakan kembali code yang sudah ada pada sebuah kelas untuk kelas lainnya (kelas turunan) yang memiliki kriteria yang sama dengan penambahan sifat baru. 2.2.3 Enkapsulasi Menurut Robertson (2006:195-196), enkapsulasi berarti membungkus suatu objek sehingga informasi objek tersebut tidak diketahui oleh objek lainnya. Dengan enkapsulasi tiap modul pada program dapat bekerja secara mandiri tanpa terikat oleh sistem secara keseluruhan. Sehingga tiap module dapat digunakan kembali ke berbagai sistem lainnya. Hal ini juga memudahkan untuk melakukan perbaikan atau mengembangkan suatu modul. 2.2.4 Akses Kontrol Public dan Private Pada sebuah kelas memiliki akses kontrol untuk setiap variable dan method yang dimilikinya. Akses kontrol public memberikan hak akses untuk seluruh bagian program. Akses kontrol private memberikan hak akses hanya untuk kelas itu sendiri. Akses kontrol protected memberikan hak akses untuk kelas itu sendiri dan kelas yang menjadi kelas turunannya. 8 2.3 MVC Design Patern Model View Controller (MVC) merupakan sebuah design patern fundamental yang membedakan antara logika tampilan pengguna dan logika proses bisnis (Gupta & Govil, 2010:1047), MVC membagi sebuah applikasi menjadi 3 komponen utama yaitu model, view, dan controller. 2.3.1 Model Model lebih dikenal sebagai komponen yang mengandung logika bisnis yang melakukan manipulasi data pada database dan memberikan notifikasi perubahan data yang terjadi kepada view (Freeman & Robson, 2004:537-540). Model juga didefinisikan sebagai komponen yang menggambarkan bentuk bisnis karena model biasanya merupakan objek yang dibutuhkan dalam sebuah applikasi seperti user, customer, transaksi, pembayaran, gudang, dan lainnya. 2.3.2 View View sebagai lapisan yang mempresentasikan model. View biasanya mengambil data yang akan ditampilkan langsung dari model. Tampilan dari view biasanya terdiri dari gabungan window, panel, button, text label, dan lainnya (Freeman & Robson, 2004:537-540). 2.3.3 Controller Controller sebagai komponen penghubung antara model dan view. Controller akan mengolah inputan dari pengguna, melakukan validasi, dan memanggil fungsi model untuk melakukan manipulasi data. Jika ada data yang ingin ditampilkan, controller akan mengolah data tersebut dari model agar dapat di tampilkan ke layar oleh view (Freeman & Robson, 2004:537-540). MVC Design patern memberikan konsep separation of concern yang kuat terhadap ketergantungan komponen aplikasi. Keuntungan lainnya adalah menurunkan coupling atau ketergantungan antar kelasnya. Dengan MVC tim pengembang dapat melakukan coding secara paralel tanpa mempengaruhi atau merusak struktur sistem aplikasi. Hal ini memberikan 9 programmer untuk dapak fokus terhadap pekerjaan yang sesuai dengan keahlian mereka. 2.4 Shneiderman's "Eight Golden Rules of Interface Design" Menurut Shneiderman (2010:74-76), untuk mendesain antarmuka dibagi menjadi 8 aturan emas yaitu: 1. Strive for consistency Urutan tindakan – tindakan seharusnya bersifat konsisten dalam sebuah situasi serta penggunaan istilah yang identik pada menu, layar bantuan, dan petunjuk. 2. Cater to universal usability Memiliki fasilitas yang melayani kebutuhan pengguna. Fasilitas – fasiliatas yang ada dapat membantu pengguna tertentu untuk melakukan tindakan. Sebagai contohnya adalah kegunaan help untuk pengguna pemula atau shortcut untuk pengguna yang lebih berpengalaman. 3. Offer informative feedback Setiap tindakan yang operatif dapat menggunakan sistem umpan balik. Tindakan yang sederhana atau sering dilakukan tidak memerlukan umpan balik yang rumit, sedangkan tindakan penting memerlukan umpan balik. 4. Design dialog to yield closure Urutan tindakan – tindakan diurutkan ke beberapa bagian yaitu awal, tengah, akhir. Dengan pembagian tersebut, informasi seperti umpan balik dapat disampaikan secara efektif ke pengguna. 5. Offer simple error handling Desainlah sistem yang tidak dapat melakukan kesalahan yang terlalu fatal. Jika kesalahan terjadi, sistem dapat menyelesaikan kesalahan tersebut dengan memberi instruksi langkah – langkah penanganan kesalahan yang sederhana. 6. Permit easy reversal of actions Fungsi yang cukup berguna untuk pengguna. Jika pengguna melakukan kesalahan, sistem mengizinkan pengguna untuk mundur ke tindakan sebelum kesalahan terjadi. Pengguna dapat memundurkan sebuah atau sejumlah tindakan. 10 7. Support internal locus of control Pengguna ingin mengontrol sebuah sistem daripada sistem yang mengontrol semua tindakan. Buatlah sistem yang membuat pengguna menjadi initiator (orang yang menjalankan sistem). 8. Reduce short-term memory load Manusia memiliki ingatan jangka pendek sehingga tidak selalu dapat memproses informasi sehingga memerlukan desain yang sederhana. 2.5 Accessibility, Usability and User Experience Dalam pembuatan halaman web, seorang developer berusaha untuk membuat halaman yang mudah digunakan oleh user. Dalam istilah usability, hal tersebut akan dibahas. Menurut Constantine Stephanidis, usability adalah: Usability adalah penggunaan produk oleh pengguna untuk mencapai tujuan yang efektif, efisien, dan memuaskan. Yang dimaksud dengan efektif adalah ketepatan pencapaian tujuan oleh pengguna saat menggunakan sebuah produk; efisien adalah penggunaan sumber daya yang sesuai dalam pencapaian tujuan; memuaskan adalah penggunaan yang mendapat nilai positif dari user. Usability memiliki beberapa aspek yang perlu diperhatikan yaitu: Flexibility: sistem dapat disesuaikan dengan keinginan user; learnability (ease of learning): waktu yang diperlukan untuk mencapai tingkat-tingkat dalam sistem; memorability: kemampuan sebuah sistem untuk kembali ke tingkat tertentu; safety: kemampuan sebuah sistem melindungi user dari kondisi yang tidak diinginkan. Usability juga relatif dengan Accessibility yang menjelaskan jangkauan user untuk mengakses sistem. Definisi Accessibility adalah penggunaan produk, layanan, lingkungan, dan fasilitas oleh orang-orang dalam jangkauan luas. User Experience (disingkat UX) adalah pandangan seorang user dalam berinteraksi dengan sistem. UX bersifat relatif dengan usability. UX mendeskripsikan pendapat user terhadap interface, sedangkan usability 11 memfokuskan interface yang efektif dan efisien untuk pengguna. Usability memiliki peran besar dalam membentuk UX yang efektif. UX tidak dapat diukur secara angka atau kuantitatif dikarenakan UX tergantung kepada perasaan para user yang bersifat subjektif setiap individunya. 2.6 Unified Modeling Language (UML) Menurut Nugroho (2010:6), definisi UML (Unified Modeling Language) adalah bahasa perancangan model sistem atau perangkat lunak yang berkonsep pada objek. Perancangan model (modeling) sesungguhnya digunakan untuk menyederhanakan masalah-masalah yang kompleks dalam bentuk visual sehingga lebih mudah dipelajari dan dipahami. 2.6.1 Use-Case Diagram Use-case diagram menggambarkan fungsi-fungsi yang ada dalam sistem. Tujuan dari diagram ini adalah mendeskripsikan fungsi – fungsi sistem secara visual yang melibatkan relasi “actor” sebagai manusia yang berinteraksi dengan sistem. Diagram use case menjelaskan fungsi sistem secara keseluruhan sampai ke bagian fungsi yang lebih spesifik (Bell, 2003:2). Gambar 2.2 Use Case Diagram 12 Menurut Whitten & Bentley (2007:246) terdapat komponen penyusun use case diagram yang terdiri dari: 1. Use case Use case merupakan gambaran aktivitas actor terhadap sistem. Use case digambarkan dalam bentuk elips yang berisi aktivitas sistem yang dapat dilakukan actor. 2. Actor Actor merupakan pelaku yang melakukan aktivitas terhadap sistem seperti memberi inputan, merubah informasi, dan menerima informasi dari sistem 3. Boundary Boundary adalah gambaran mengenai batasan area yang memisahkan actor dan use case dalam menjalankan suatu sistem. Boundary memiliki bentuk berupa segi empat yang berada mengelilingi use case pada sebuah sistem. Pada bagian atas boundary tercantum nama sistem tersebut. 4. Relationship Relationship merupakan hubugan yang terjadi antara sistem dan actor. Sebuah relasi di gambarkan dengan sebuah garis yang terhubung antara use case dan actor. Berikut tipe – tipe dari relasi yang ada pada use case diagram : a. Association Relasi asosiasi merupakan hubungan yang terjadi antara actor dan sistem yang digambarkan dalam sebuah garis lurus yang terbubunga ke dua sisi actor dan use case. Gambar 2.3 Contoh Relasi Association 13 b. Extends Extends adalah hubungan yang bertujuan untuk menghasilkan use case baru yang merupakan hasil ekstraksi fungsi dari use case yang asli dan bersifat kompleks menjadi bentuk use case yang lebih sederhana dan mudah dimengerti. Extends digambarkan dalam bentuk use case yang saling terhubung dengan tanda panah yang menunjuk kepada use case utama. Setiap tanda panah diberi keterangan <<extends>> untuk memperjelas hubungan use case yang terjadi. Gambar 2.4 Contoh Relasi Extends c. Uses Uses atau Include adalah hubungan yang menjelaskan tentang ketergantungan antara satu use case dengan use case yang lain dimana sebuah use case akan berjalan terlebih dahulu sebelum use case lainnya berjalan. Hubungan uses digambarkan dengan tanda panah dari satu use case yang menunjuk use case lain yang bergantung pada use case tersebut. Tanda panah tersebut diberi keterangan <<Uses>> yang menjelaskan tentang hubungan ketergantungan yang terjadi pada use case. 14 Gambar 2.5 Contoh Relasi Uses 2.6.2 Class Diagram Class diagram memperlihatkan hubungan antar entitas (orang, benda, dan data) menciptakan relasi dalam sistem. Class diagram dapat menciptakan hubungan kelas-kelas yang bersifat logika (Bell, 2003:3). Gambar 2.6 Contoh Class Diagram Menurut Whitten & Bentley (2007:400), sebuah class diagram memiliki komponen sebagai berikut: 1. Class Class digambarkan sebagai kotak yang berisi komponen – komponen class seperti nama class, atribut dan method. a. Nama class ditulis pada baris kotak pertama. b. Atribut ditulis pada baris kotak kedua ditulis dengan nama atribut dan tipe datanya serta disertai dengan simbol “+” untuk menunjukan public, simbol “-“ untuk menunjukan private, dan simbol “#” untuk menunjukan protected. 15 c. Method ditulis pada baris kotak ketiga yang ditulis dengan nama method, parameter, dan return value yang juga disertai dengan simbol “+” untuk menunjukan public, simbol “-“ untuk menunjukan private, dan simbol “#” untuk menunjukan protected. 2. Relationship Gambaran mengenai relasi dalam class diagram dideskripsikan melalui garis yang menghubungkan satu kelas dengan kelas yang lainnya. Beberapa relasi dalam class diagram, antara lain : a. Asosiasi Asosiasi merupakan hubungan antara dua kelas yang saling menyatakan objek sebagai kebutuhan kelas lain. Objek dinyatakan dalam sebuah nilai yang disebut multiplicity. Hubungan asosiasi antar dua kelas digambarkan melalui garis lurus tanda panah yang mengarah dari satu kelas ke kelas lainnya. b. Agregasi Agregasi merupakan hubungan yang menggambarkan tentang suatu objek pada kelas berbeda yang merupakan bagian dari objek kelas lain, namun objek dari kelas tersebut dapat berdiri sendiri walaupun merupakan bagian dari kelas lain. Hubungan antar-kelas yang digambarkan melalui garis lurus pada sebuah kelas yang mengarah pada kelas lain dengan bentuk segi belah ketupat pada kelas yang dituju. c. Komposisi Komposisi memiliki hubungan yang hampir sama dengan agregasi, namun hubungan komposisi menyatakan bahwa bagian dari objek suatu kelas tidak dapat dipisahkan dari kelas yang memiliki kaitan dengan kelas yang dituju. Hubungan antar-kelas yang digambarkan melalui garis lurus pada sebuah kelas yang mengarah pada kelas lain dengan bentuk segi belah ketupat penuh. 16 3. Multiplicity Multiplicity menunjukkan berapa banyak objek dari suatu kelas yang saling terelasi dengan kelas lainnya. Tabel 2.2 Deskripsi mengenai multiplicity Multiplicity Description 1 Terdapat satu objek pada sebuah kelas. * Terdapat banyak objek pada sebuah kelas. 0..1 Tidak terdapat/ nol objek hingga satu objek pada sebuah kelas. Tidak terdapat/ nol objek hingga terdapat 0..* banyak objek yang nilainya tak terhingga pada sebuah kelas. 1..* Terdapat satu objek hingga banyak objek yang nilainya tak terhingga pada sebuah kelas. 2.6.3 Sequence Diagram Sequence diagram menampilkan detail jalannya sebuah usecase. Sequence diagram memiliki dua dimensi yaitu vertikal dan horizontal. Garis vertikal menjelaskan urutan perintah yang akan dilakukan; garis horizontal menampilkan objek kelas yang akan melakukan perintah–perintah tersebut secara berurutan (Bell, 2003:5). Gambar 2.7 Contoh Sequence Diagram 17 Menurut Whitten & Bentley (2007:394) terdapat komponen komponen yang digunakan dalam sequence diagram, yaitu : 1) Actor Pelaku yang berinteraksi ke dalam sistem yang ditampilkan dengan simbol aktor use case. 2) System Gambaran mengenai sistem yang akan dijalankan oleh actor. System dalam sequence diagram digambarkan dalam bentuk kotak dengan tanda notasi titik dua yang mengawai nama sistem di dalam kotak tersebut. 3) Lifelines Garis putus-putus tegak lurus yang menyambungkan hubungan antara actor dan sistem. Lifelines menunjukkan hubungan interaksi antara actor dengan sistem yang dijalankan. 4) Input messages Input messages ditunjukkan melalui bentuk garis tanda panah yang mengarah dari actor menuju balok di sisi kanan sistem. Penulisan dalam memberi keterangan pada input messages memiliki aturan untuk menggunakan huruf kecil pada kata pertama yang dilanjutkan dengan kata kedua dengan huruf kapital pertama, dimana kedua kata tersebut disambung tanpa spasi. Kemudian, diikuti dengan tanda kurung yang berisi parameter dengan aturan nama yang sama dan dipisahkan oleh tanda koma jika terdapat lebih dari satu parameter. 5) Output messages Output messages ditunjukkan melalui garis tanda panah yang mengarah dari sistem menuju actor secara horizontal. Pada output messages, pesan yang dikirim kepada actor merupakan jawaban atas pesan yang pernah dikirim sebelumnya. Sistem penulisan pada output messages bersifat umum. 6) Frame Frame memiliki gambaran berupa sebuah kotak yang berfungsi untuk menambahkan satu atau lebih pesan untuk membagi sequence diagram dalam menjalankan fungsi khusus 18 seperti fungsi loops (perulangan), alternative fragment (alternatif), atau optional (pilihan). 2.6.4 Activity Diagram Activity diagram menampilkan alur kegiatan antar dua atau lebih objek kelas dari awal sampai akhir. Activity diagram menggambarkan proses bisnis dari sebuah aplikasi yang lebih sederhana daripada sequence diagram (Bell, 2003:7). Gambar 2.8 Contoh Activity Diagram 19 Menurut Whitten & Bentley (2007:390), sebuah activity diagram digambarkan dalam komponen – komponen sbeagai berikut: 1. Initial node Sebagai bentuk awal dari sebuah proses yang digambarkan dalam bentuk lingkaran penuh. 2. Actions Aktivitas yang dilakukan actor secara struktural sebagai langkahlangkah yang membentuk suatu sistem. Actions digambarkan dalam bentuk persegi panjang yang melengkung dengan penjelasan mengenai aktivitas yang terjadi dalam sistem. 3. Flow Setiap flow pada activity diagram memberikan petunjuk ke mana alur sistem selanjutnya akan berjalan. Dalam hal ini, flow menghubungkan satu actions dengan action lainnya. Setiap flow yang melewati decision akan memiliki keterangan kondisi dalam tanda kurung siku “[ ]”. 4. Decision Decision memiliki bentuk segi belah ketupat dengan salah satu flow yang mengarah ke dalam dan dua atau lebih flow mengarah ke luar. Sebuah decision akan menunjukkan kondisi yang akan dilakukan actor dalam sebuah sistem. Aktivitas yang dilakukan berdasarkan kondisi yang berbeda dapat membagi alur sistem ke dalam beberapa actions. 5. Merge Merge berperan untuk menyatukan kembali beberapa alur aktivitas sebagai hasil dari pemecahan simbol decision menjadi satu alur aktivitas dalam sebuah sistem. Sebuah merge memiliki bentuk yang hampir sama dengan decision, namun salah satu flow yang mengarah ke luar dan beberapa flow mengarah ke dalam. 6. Fork Fork berperan untuk memecah alur secara paralel dengan permulaan aksi yang terjadi secara berurutan. Fork digambarkan dengan satu buah tanda panah yang mengarah ke dalam balok 20 hitam dan dua buah tanda panah yang mengarah ke luar dari balok hitam. 7. Join Setiap simbol join akan menggabungkan alur aktivitas yang telah dilakukan dalam sistem. Join akan menggabungkan hasil dari pemecahan fork menjadi satu aksi sebagai alur aktivitas selanjutnya. 8. Activity Final Activity Final merupakan simbol yang terletak paling bawah dalam sebuah sistem dan menjadi akhir dari seluruh aktivitas atau proses bisnis yang berlangsung. 2.7 Metodologi Agile dengan Scrum Metodologi Agile merupakan sebuah metodologi pengembangan proyek dengan memecahkannya menjadi beberapa tahapan yang berulang (Paul & Singh, 2012:2). Setiap tahapan dijalankan dalam sebuah periode waktu yang singkat. Proses pengembangan proyek berlangsung dalam tahapan berulang tersebut, mulai dari planning, requirement analysis, design, coding dan testing. Hasil produk pada setiap akhir tahapan akan dipresentasikan kepada customer untuk mendapatkan umpan balik dari mereka, dengan begitu dapat mengurangi resiko kesalahan pada sebuah produk. Scrum merupakan salah satu metode agile dengan mengfokuskan pada tiap tahapan berulang yang disebut sebagai sprint. Sebuah sprint memiliki durasi paling lama ialah 30 hari (Sharma, Sarkar & Gupta, 2012:4). Scrum dimulai dengan membentuk sebuah tim dengan beragam keahlian yang akan diberi beberapa tugas dengan bobot dan prioritas yang harus selesai untuk tiap sprintnya. Proses scrum adalah sebagai berikut: 21 Gambar 2.9 Scrum Process 1. User Requirement Sebuah proyek dengan scrum dimulai dengan mengumpulkan kebutuhan – kebutuhan klien dalam membuat sebuah produk. Kebutuhan tersebut tidak selalu sama, dalam arti kebutuhan bisa berubah sewaktu – waktu selama pengembangan produk. Klien bisa menambahkan, mengubah, atau menghilangkan fitur yang ada nantinya. 2. Product Backlog Product backlog (daftar tugas yang akan dikerjakan) merupakan tindakan untuk menyusun kebutuhan pengguna menjadi daftar tugas yang lebih sistematis dengan memiliki beberapa kriteria yaitu prioritas, estimasi bobot dan lama pengerjaan. Penulisan sebuah tugas dalam scrum dituliskan dengan format story seperti “As a <tipe user> I want to <do some action> so that <hasil yang diharapkan>” (Sharma, Sarkar & Gupta, 2012:4). Dengan demikian tim dengan mudah mengerti maksud dan hasil yang diharapkan dari sebuah tugas. 3. Sprint Planning Perencanaan untuk menentukan jumlah sprint yang akan dilakukan untuk menyelesaikan sebuah proyek dan lama tipe sprint yang akan dilakukan. 4. Sprint Backlog Pada sprint planning juga menentukan daftar produk backlog yang akan dikerjakan pada sprint tersebut. Sprint backlog adalah daftar backlog untuk sebuah sprint tertentu (Sharma, Sarkar & Gupta, 2012:4). 22 5. Sprint Sprint merupakan tahapan utama dalam metodologi scrum (Paul & Singh, 2012:2). Sprint merupakan tahapan proses pengerjaan proyek yang terdiri dari : - Daily Scrum Daily scrum merupakan pertemuan singkat yang terdiri dari tim dan scrum master (orang yang memimpin sebuah scrum) yang membicarakan tentang pekerjaan yang telah selesai dan akan dilakukan pada hari itu. Tujuan dari daily scrum adalah untuk menjaga prioritas dan jalannya pengembangan produk agar tetap fokus pada kebutuhan produk. - Proses mengembangkan produk Pada tahap scrum, setelah tim mengetahui peran dan tugasnya masing – masing, maka selanjutnya tim akan mulai mengerjakan tugas tersebut sesuai keahliannya. Programmer melakukan implementasi kode, Designer merancang user interface, dan project manager memantau kerja timnya. 6. Sprint Review Setelah sprint berakhir, terdapat satu aktifitas yang disebut dengan sprint review. Sprint review melibatkan tim scrum dan pihak terkait lainnya untuk melakukan inspeksi pada pekerjaan yang telah selesai dilakukan selama sprint. Inspeksi ini memuat diskusi mengenai pekerjaan scrum. Pertemuan sprint review ini dihadiri oleh product owner, tim pengembang, customer, dan stakeholders. Selanjutnya tim mengadakan sprint retrospective. Pada sprint retrospective, tim berkesempatan untuk meninjau dirinya sendiri dan membuat perencanaan mengenai peningkatan yang akan dilakukan pada sprint berikutnya. Setiap sprint yang selesai akan meningkatkan kemajuan pada produk yang dikembangkan. Tahap akhir terjadi ketika manajemen dari tim merasa variabel dari waktu, kompetisi, permintaan, harga, dan kualitas telah sesuai untuk versi terbaru yang akan dirilis, dengan demikian proyek dinyatakan "closed". Tahap ini mempersiapkan produk yang telah dikembangkan untuk beberapa kelengkapan umum lainnya 23 seperti integrasi, pengujian sistem, dokumentasi, persiapan materi pelatihan penggunaan sistem, dan persiapan materi pemasaran. 2.8 AJAX dengan JSON (JavaScript Object Notation) Pada generasi web 2.0, AJAX (Asynchronus JavaScript and XML) menjadi teknologi yang popular untuk mengembangkan web services. AJAX merupakan sekumpulan teknologi pada bagian front-end (Web browser) dalam bentuk script yang ditanamkan pada HTML untuk memberikan akses web yang lebih cepat dalam mengakses data ke server (Tanenbaum dan Wetherall, 2011:679). AJAX menggunakan XML sebagai wadah untuk menampung perjalanan data antara client dan server. JSON adalah alternatif lain untuk XML sebagai wadah yang lebih sederhana dan lebih mudah untuk dibaca. JSON merupakan wadah pertukaran data yang menggunakan kata kunci untuk menunjukan sebuah nilai tertentu (Peng, Cao, & Xu, 2011:1). 2.9 RESTful Web Services Menurut Fielding (2000:86), Represetational State Transfer (REST) style merupakan sebuah konsep arsitektur pada sebuah sistem distribusi hypermedia (text, audio, video, image). RESTful web services merupakan sebuah web services yang menerapkan konsep REST sebagai arsitektur komunikasi data pada jaringan (Adamczyk, Smith, Johnson, & Hafiz, 2011). Menurut Fielding (2000:88-92) REST memiliki 4 prinsip penting yaitu sebagai berikut : 1. Resources Identification Informasi yang diberi nama dapat menjadi sebuah resources. Informasi tersebut dapat berupa bagian dari aplikasi yang berbentuk kumpulan text, video, gambar, ataupun audio. REST menggunakan resources identification untuk mengidentifikasi sumber daya agar tiap komponen dapat saling berinteraksi. 24 2. Manipulation of resources through representation Representasi merupakan sebuah format tampilan resources sebagai tanggapan dari permintaan yang diminta oleh client. Format tampilan dapat berbeda dengan struktur dari resources. Format Tampilan dapat berupa kumpulan dari beberapa resources. 3. Self-descriptive messages Ketika server melakukan respon atas permintaan dari client untuk resources tertentu maka format tampilan (representasi) akan dikirim sebagai pesan. Pesan dikirim melalui HTTP dengan berbagai method seperti get, update, post, dan delete. Media pesan dapat berupa XML (Extensible Markup Language) atau JSON (Javascript Object Notation). 4. Hypermedia as the engine of application state (HATEOAS) Sebuah hubungan antara client dan server tidak perlu saling mengetahui satu sama lainnya. Artinya client tidak perlu mengetahui proses yang terjadi di server dalam mengolah resources menjadi respon akhir. Interaksi antara client dan server disimpan sebagai pesan dalam bentuk hypermedia seperti link atau url. Contoh dari sebuah routing RESTful web services untuk mengakses resource user: Tabel 2.3 Contoh RESTful Routing Domain: http://example-backend/v1 Endpoint Method Kegunaan /users POST Membuat atau menambah entry data baru /users GET Mengambil semua data user /users/:id GET mengambil data user tertentu sesuai dengan id /users/:id DELETE menghapus data user tertentu sesuai dengan id /users/:id PUT Mengupdate data user tertentu sesuai dengan id 25 Format tampilan user untuk method GET { status: 200, data :{ id: 1, name: Budi, email: [email protected], status: aktif, relation:{ friends: 23, follower: 12, following: 11 } } } Gambar 2.10 Contoh Code dengan Method GET 2.10 PHP PHP (singkatan rekursif PHP: Hypertext Preprocessor) adalah bahasa pemrograman pengembangan web yang ditanamkan ke dalam HTML. PHP bersifat open source dan berbasis server – side scripting. Pemrosesan pada server – side dilakukan di server sehingga developer atau pengguna bisa melakukan pemrograman apa pun yang dapat dilakukan seperti mengumpulkan data formulir, menghasilkan konten halaman yang dinamis, mengirim dan menerima cookies, dan lain – lain. (http://php.net/manual/en/intro-whatcando.php) 2.11 Laravel Laravel adalah framework aplikasi web dengan syntax (unsur – unsur bahasa) yang elegan dan ekspresif yang bertujuan untuk membuat proses pengembangan web menjadi menyenangkan bagi developer tanpa mengorbankan fungsionalitas aplikasi. Laravel berupaya untuk mengurangi penderitaan pembangunan web dengan mengurangi tugas-tugas umum yang sering digunakan dalam sebagian besar proyek-proyek web seperti otentification, routing, session, dan caching. (http://laravel.com/docs/4.2#) 26 2.12 AngularJS AngularJS merupakan sebuah framework MVC yang bagian cliennya untuk aplikasi web dinamis yang bisa menggunakan HTML sebagai template dan memperluas syntax HTML untuk mengekspresikan komponen aplikasi secara jelas. AngularJS bersifat framework full front–end, artinya tidak bisa digunakan untuk melakukan akses langsung ke database server. Untuk dapat melakukan manipulasi data maka dibutuhkan sebuah back-end sebagai web service yang menyediakan layanan agar dapat memanipulasi data pada database server. (https://docs.angularjs.org/guide/introduction) Pada arsitektur 3 tiers yang memiliki sisi client dan server, angularJS berfungsi sebagai sisi client yang dapat melakukan komunikasi terhadap server dengan menggunakan AJAX dan JSON atau XML. AngularJS memiliki controller yang dapat mengatur tingkah laku dari sebuah halaman web. Controller tersebut akan melakukan berbagai validasi, mengatur event button, dan melakukan request – response ke server. AngularJS memiliki berbagai fitur utama yang memanfaatkan HTML dengan baik. Salah satunya adalah directive. Directive merupakan fitur utama dari angularJS yang memberikan programmer kemampuan yang sama dengan jQuery. Directive sama seperti melakukan inject pada sebuah modul javascript ke dalam seluruh atau sebagian dari HTML. Fitur lainnya adalah data binding. Dengan data binding, dapat mengikat sebuah model ke dalam view HTML. Ketika atribut dari model berubah maka view dari HTML juga akan langsung berubah secara sinkronisasi. 2.13 HTML dan CSS Menurut Tittel dan Noble (2011:10-11), HTML (Hypertext Markup Language) dan CSS (Cascading Style Sheet) digunakan untuk membuat halaman web. Dengan pembelajaran HTML dan CSS, sebuah halaman web dapat diperkenalkan ke WWW (World Wide Web) yang merupakan kumpulan dokumen – dokumen di internet. Informasi dapat disampaikan secara baik ke dunia online dengan desain dan pembangunan dokumen web yang efektif. HTML terdiri dari label – label spesifik yang menjadi perintah di dalam sebuah dokumen. Label – label tersebut dituliskan di dalam tanda kurung siku “< html >” dan diakhiri dengan tanda kurung siku dengan tanda 27 garis miring di dalamnya “< /html>”. Label – label ini tidak akan terlihat secara langsung pada web browser, namun tetap menjadi elemen penting dalam HTML karena label – label tersebut membuat sebuah halaman menampilkan isinya melalui Markup. Markup digunakan untuk mengarahkan web browser tentang cara menampilkan dokumen HTML. Markup itu sendiri merupakan bahasa yang umum, sedangkan HTML lebih spesifik. CSS merupakan jenis markup selain HTML. CSS menjelaskan cara sebuah halaman akan ditampilkan, sedangkan HTML lebih memfokuskan isi daripada penampilan halaman. Penggunaan CSS memerlukan penelitian lebih lanjut tentang manipulasi warna, background, user interface, dan halaman untuk media lain (PDA, mobile, media lain yang spesifik). 2.14 Web Socket Teknologi websocket digunakan untuk meningkatkan peforma web dan juga bagian dari HTML5 yang merupakan generasi berikut dari pengembangan HTML. Teknologi websocket ini sering digunakan saat ini karena memiliki komunikasi dua arah yang bersifat real time dan terkoneksi secara bersamaan. Dalam hal ini , teknologi websocket menggunakan fullduplex single socket connection sehingga pesan dapat dikirim antara client dan server. Penggunaan teknologi websocket juga dapat mrmbantu dalam pengembangan aplikasi chat yang lebih baik pada web. Tabel 2.4 Deskripsi dan Jenis Websocket Server Server Pywebsocket Phpwebsocket jWebSocket web-socket-ruby Socket.io Deskripsi - Server websocket dikembangkan dengan Python. - Secara independen menetapkan socket web server. - Dapat diinstal pada server apache. - Python harus diinstal pada server. - Server websocket beroperasi pada lingkungan PHP. - Google Chrome adalah browser yang didukung. - Java-based WebSocket server. - Bisa diinstal pada server atau Apache Tomcat. - Java Virtual Machine harus diinstal. - Ruby-based WebSocket server. - Teknologi client dikembangkan. - Kerangka aplikasi real time untuk node.js 28 2.15 MongoDB MongoDB adalah sebuah database berbasis dokumen yang bersifat open source dan menyediakan high performance, high availability, dan automatic scaling. Sebuah record di dalam mongoDB adalah sebuah dokumen yang datanya terdiri dari pasangan field dan value. Secara formal, dokumen mongoDB adalah dokumen BSON. BSON adalah sebuah representasi biner dari JSON dengan tambahan jenis informasi. Di dalam dokumen itu juga berisi nilai dari tipe data BSON yang mencakup dokumen lain, array, dan array dari dokumen. (http://docs.mongodb.org/manual/core/crud-introduction/) Gambar 2.11 Contoh Collection pada mongoDB Berikut adalah struktur suatu dokumen dalam penggunaan mongoDB yang terbagi menjadi 2 jenis data model design yaitu sebagai berikut 1. Embedded Data Models Dengan menggunakan model data ini, data terkait dalam suatu struktur tunggal atau dokumen. Skema ini umumnya dikenal sebagai "denormalized" model. Berikut adalah contoh model pada embedded data models: Gambar 2.12 Contoh Embedded Data Model 29 Model ini dipakai ketika: a. Hubungan antara entitas merupakan one to one relationships dengan dokumen yaitu id dari parent dokumen memiliki satu relasi dengan entitas pada child dokumen. b. Hubungan antara entitas merupakan one to many relationships dengan dokumen yaitu id dari parent dokumen memiliki lebih dari satu relasi dengan entitas pada child dokumen. Gambar 2.13 Model One To One Relationships Gambar 2.14 Model One To Many Relationships 30 2. Normalized Data Models Pada model data ini menggambarkan relasi atau hubungan referensi antara dokumen. Berikut adalah contoh model dari normalized data model: Gambar 2.15 Contoh Normalized Data Model Secara umum, Model ini dipakai: a. Ketika embedding akan menghasilkan duplikasi data tetapi tidak akan memberikan keuntungan kinerja membaca yang cukup untuk melebihi implikasi dari suatu duplikasi. b. Untuk menunjukkan hubungan many to many relationships yang lebih komplek. c. Untuk model large hierarchical data sets. 2.16 Analisa Produk Sejenis 2.16.1 Trello Gambar 2.16 Logo Trello 31 Trello adalah aplikasi berbasis aplikasi berbasis web yang melayani project management dalam bentuk visual. Dengan menggunakan papan kerja, pengguna dapat memasukkan ide, bugs, dan tugas yang dapat dilihat oleh pengguna dalam satu tim. Pengguna dapat membuat dan mengatur tugas untuk pengguna lain dalam bentuk kartu. Kartu tersebut dapat diatur letaknya sesuai dengan kepentingan, jenis tugas, atau kondisi tugas. 2.16.2 Google Drive Gambar 2.17 Logo Google Drive Google Drive adalah aplikasi penyimpanan data yang dapat melakukan sinkronisasi dan berbagi data dengan pengguna lain. Dengan fungsi sinkronisasi, sebuah komputer dapat berhubungan dengan komputer lain ataupun mobile device. Dengan hubungan tersebut, para pengguna dapat melihat data – data yang sama dari beberapa komputer. File – file yang termasuk dalam sinkronisasi akan diupdate secara real time sehingga memungkinkan lebih dari satu orang mengerjakan dokumen yang sama. 2.16.3 GitHub Gambar 2.18 Logo GitHub 32 GitHub adalah aplikasi berbasis web yang melayani hosting. GitHub menyediakan fasilitas distributed revision control dan source code management. Distributed revision control menurunkan versi coding, berfungsi untuk mencegah kesalahan atau eror pada beberapa bagian. Source code management memungkinkan suatu source code dikerjakan lebih dari satu orang. GitHub tidak bersifat real time sehingga pengguna harus melakukan push and pull jika ingin mengirip atau mengunduh code dari server. Push mengirim code ke server kemudian pull memberi code tersebut ke pengguna lain untuk melihat perubahan – perubahan yang telah terjadi di dalam code. Tabel 2.5 Perbandingan Produk Sejenis Feature Trello Google GitHub Drive Digital Workspace Comment √ √ √ √ Upload-Download File √ √ √ √ File Management √ Deadline √ Real-time √ √ Notification √ √ √ Rating Search √ √ √ √ √ √ √ √