Cara menggunakan elasticsearch mongodb nodejs

Landasan teori dan dasar pengetahuan berikut terdiri atas informasi yang dikumpulkan dari berbagai sumber untuk mendukung proses implementasi Elasticsearch search engine pada Sistem Manajemen Order.

2.1.

Konsep Elasticsearch

2.1.1

Search Engine Search engine adalah aplikasi praktis dari teknik pencarian informasi ke koleksi teks berskala besar. Search engine masuk dalam sejumlah konfigurasi yang mencerminkan aplikasi yang mereka rancang. Web search engines, seperti Google dan Yahoo!, harus dapat menangkap sejumlah terabyte data, dan kemudian memberikan waktu respons subsecond ke jutaan queri yang dikirimkan setiap hari dari seluruh dunia. Enterprise search engines, misalnya Autonomy8 harus dapat memproses beragam sumber informasi di perusahaan dan menggunakan pengetahuan khusus dari perusahaan sebagai bagian dari pencarian dan tugas terkait. Desktop search engines, seperti fitur pencarian Microsoft Vista ™, harus dapat dengan cepat memasukkan dokumen, halaman web, dan email baru saat orang tersebut membuat atau melihatnya. Open source search engines adalah kelas sistem penting lainnya yang memiliki tujuan desain yang agak berbeda daripada search engine komersial. Tiga sistem yang diminati adalah Lucene, Lemur, dan Galago. Lucene adalah search engine berbasis Java yang populer dan telah digunakan untuk berbagai aplikasi komersial. Teknik pengambilan informasi yang digunakannya relatif sederhana (Croft, Metzler, & Strohman, 2015).

2.1.2

Elasticsearch Menurut Gormley & Tong (2015), Elasticsearch adalah open-source search engine yang dibangun di atas Apache Lucene ™, perpustakaan mesin pencari full-text. Lucene bisa dibilang perpustakaan mesin pencari

21 http://digilib.mercubuana.ac.id/

mutakhir, berkinerja tinggi, dan berfitur lengkap yang ada sekarang-baik open source maupun hak milik. Bagaimanapun, elasticsearch jauh lebih baik daripada hanya Lucene dan lebih dari sekedar “hanya” pencarian full-text. Hal ini juga dapat digambarkan sebagai berikut: a. Toko dokumen real-time terdistribusi dimana setiap feld di indeks dan dicari b. Mesin pencari terdistribusi dengan analisis real-time c. Mampu melakukan penskalaan ke ratusan server dan petabyte yang terstruktur dan data tidak terstruktur Dan ini membungkus seluruh fungsionalitas yang ada menjadi suatu server mandiri yang yang dapat berbicara dengan aplikasi melalui RESTful API, menggunakan klien web dari bahasa pemrograman favorit Anda, atau bahkan dari command line. Elasticsearch dapat didownload, digunakan, dan dimodifikasi secara gratis dan tersedia di bawah lisensi Apache 2, salah satu lisensi open source paling fleksibel yang tersedia. Beberapa konsep yang hadir dengan Elasticsearch yang dapat membantu pemahaman sepenuhnya tentang bagaimana elasticsearch bekerja (Gupta, 2014) dapat dijelaskan sebagai beirkut: 1.

Index Elasticsearch menyimpan datanya dalam satu atau lebih indeks. Menggunakan kesamaan dari dunia SQL, pengindeksan mirip dengan sebuah basis data. Ini digunakan untuk menyimpan dokumen dan membacanya. Elasticsearch menggunakan perpustakaan Apache Lucene library untuk menulis dan membaca data dari indeks. Indeks elasticsearch mungkin dibangun lebih dari satu indeks Apache Lucene dengan menggunakan “Shards”.

2.

Dokumen Dokumen adalah entitas utama di dunia elasticsearch. Pada akhirnya, semua kasus penggunaan elasticsearch bisa dilakukan pada titik dimana itu semua tentang mencari dokumen dan menganalisisnya. Dokumen terdiri dari fields, dan masing-masing field diidentifikasi

22 http://digilib.mercubuana.ac.id/

dengan namanya dan bisa mengandung satu atau beberapa nilai. Setiap dokumen mungkin memiliki kumpulan field yang berbeda; tidak ada skema atau struktur yang dipaksakan. 3.

Tipe Setiap dokumen dalam Elasticsearch memiliki tipe yang didefinisikan. Ini memungkinkan kita untuk menyimpan berbagai jenis dokumen dalam satu indeks dan pemetaan yang berbeda untuk jenis dokumen yang berbeda.

4.

Mapping Semua dokumen dianalisis sebelum diindeks. Inputan teks dibagi menjadi token, token mana yang harus disaring keluar, atau proses tambahan apa, seperti menghapus tagar HTML, sangat dibutuhkan. Disinilah tahap pemetaan mulai dimainkan; dia memegang semua informasi tentang rantai analisis.

2.1.3

Denormalisasi pada Elasticsearch Menurut Gormley & Tong (2015), Suatu cara untuk meningkatkan performansi yang dilakukan pada Elasticsearch adalah dengan melakukan denormalisasi data dalam index. Dengan memiliki salinan data pada masing-masing dokumen, hal tersebut dapat mengurangi kebutuhan dilakukannya join antar index. Sebagai contoh, jika ingin dapat menemukan sebuah blogpost dari nama pengguna yang menulisnya, termasuk username dari pengguna blogpost:

23 http://digilib.mercubuana.ac.id/

Sekarang kita dapat menemukan blogpost yang berjudul “Relationship” dari pengguna bernama “John” dengan satu query berikut:

Keuntungan dari denormalisasi data adalah kecepatan. Hal tersebut dikarenakan masing-masing dokumen berisi semua informasi yang diperlukan dalam menentukan apakah data yang ditemukan cocok dengan yang dicari dalam bentuk query sehingga tidak diperlukan lagi join index yang kompleks.

2.1.4

RESTful Application Programming Interface (API) REST adalah koleksi dari prinsip dimana sering disebut sebagai kumpulan standar. Gaya arsitektur dari REST menggambarkan 6 batasan, yaitu: Uniform Interface, Stateless, Cacheable, Client-Server, Layered System, dan Code on Demand. Perlu diketahui bahwa, batasan yang opsional dari arsitektur REST adalah Code on Demand. Jika sebuah service melanggar batasan lain, maka itu tidak akan dapat diaggap sebagai RESTful. Menurut Gormley & Tong (2015), semua bahasa lain dapat berkomunikasi dengan Elasticsearch melalui port 9200 menggunakan Resful API, dapat diakses dengan klien web favorit. Kita bahkan bisa berbicara

dengan

Elasticsearch

melalui

command

line

dengan

menggunakan perintah curl. Request untuk Elasticsearch terdiri dari bagian yang sama seperti HTTP request:

Bagian yang ditandai dengan < > diatas adalah:

24 http://digilib.mercubuana.ac.id/

VERB Metode HTTP atau verb yang sesuai: GET, POST, PUT, atau DELETE. Penjelasan dari metode HTTP diatas dapat dijelaskan sebagai berikut (Fredrich, 2012): 1.

GET Metode HTTP GET digunakan untuk mengambil (atau membaca) representasi sumber daya. GET (dan HEAD) bersifat idempoten, yang berarti membuat beberapa permintaan identik yang berakhir dengan hasil yang sama seperti satu permintaan tunggal. Contoh: GET http://www.example.com/customers/12345/orders

2.

POST Kata kerja POST paling sering digunakan untuk pembuatan sumber daya baru. Secara khusus, ini digunakan untuk menciptakan sumber daya subordinate. Membuat dua permintaan POST yang identik kemungkinan besar akan menghasilkan dua sumber yang berisi informasi yang sama. Contoh: POST http://www.example.com/customers/12345/orders

3.

PUT PUT paling sering digunakan untuk kemampuan update, PUT ke sumber daya URI yang dikenal dengan badan permintaan yang berisi representasi sumber asli yang baru diperbarui. PUT juga dapat digunakan untuk membuat sumber daya pada kasus di mana ID sumber daya dipilih oleh klien dan bukan oleh server. Contoh: PUT http://www.example.com/customers/12345/orders/9876

4.

DELETE DELETE

digunakan

untuk

menghapus

sumber

daya

yang

diidentifikasi oleh URI. HTTP-spec-wise, operasi DELETE bersifat idempoten. Jika menghapus sebuah sumber daya, itu akan terhapus. Berulang kali memanggil DELETE pada sumber daya itu akan berakhir sama, yaitu sumbernya hilang. Contoh: DELETE http://www.example.com/customers/12345/orders

25 http://digilib.mercubuana.ac.id/

PROTOCOL Baik http atau https (jika memiliki proxy https di depan Elasticsearch). HOST Nama host dari setiap node pada cluster Elasticsearch, atau localhost untuk sebuah node pada komputer lokal. PORT Port yang menjalankan layanan HTTP Elasticsearch, secara default 9200. QUERY_STRING Parameter query-string pilihan. BODY Sebuah badan JSON-encoded request (jika request membutuhkan). 2.1.5

Hypertext Transfer Protocol (HTTP) Menurut Nixon (2014), Hypertext Transfer Protocol (HTTP) adalah protokol standar yang mengatur permintaan browser dari komputer client, juga respon dari server. Tugas dari web server adalah untuk memberikan respon yang mempunyai makna biasanya memberikan respon atas permintaan client. Diantara client dan server dimungkinkan adanya adanya perangkat-perangkat lain seperti router, proxy, gateway, dan lain sebagainya. Perangkat tersebut mempunyai tugas untuk mengatur permintaan dan respon diarahkan ke client dan server yang benar.

2.1.6

JavaScript Object Notation (JSON) Elasticsearch menggunakan JavaScript Object Notation, atau JSON, sebagai format serialisasi untuk dokumen. Pemrograman JSON didukung oleh sebagian besar bahasa pemrograman, dan telah menjadi format standar yang digunakan oleh gerakan NoSQL. Sederhana, ringkas, dan mudah dibaca. Mengkonversi objek ke JSON untuk pengindeks-an dalam Elasticsearch jauh lebih sederhana daripada proses yang setara dengan struktur tabel datar. Hampir semua bahasa memiliki modul yang akan mengubah struktur data atau objek menjadi JSON untuk, namun rinciannya spesifik untuk setiap bahasa (Gormley & Tong, 2015).

26 http://digilib.mercubuana.ac.id/

2.1.7

NoSQL NoSQL, yang berarti "not only SQL", adalah sebuah gerakan yang mendorong pengembang dan pelaku bisnis untuk membuka pikiran mereka dan mempertimbangkan kemungkinan baru di luar pendekatan relasional klasik terhadap persistensi data. Dengan NoSQL, berbagai masalah data untuk bagian-bagian berikut menjadi lebih mudah untuk diselesaikan:

Kinerja,

Skalabilitas,

Footprint

yang

Lebih

Kecil,

Produktivitas Pengembang, Fleksibilitas Skema. Untuk meringkas opsi NoSQL, berikut merupakan beberapa model atau kategori yang paling umum (Orient Technologies, 2017): 

Key/Value databases: model data dikurangi menjadi tabel hash sederhana yang terdiri dari pasangan key / value. Hal ini sering mudah didistribusikan di beberapa server. Produk yang paling dikenal dari kelompok ini meliputi Redis, Dynamo, dan Riak.

Column-oriented databases: data disimpan di bagian kolom yang menawarkan fleksibilitas dan agregasi yang lebih mudah. Cassandra dari Facebook, Google's BigTable, dan SimpleDB dari Amazon adalah beberapa contoh database berorientasi kolom.

Document databases: model data terdiri dari koleksi dokumen dimana masing-masing dokumen dapat memiliki beberapa bidang tanpa harus menentukan skema. Produk yang paling dikenal dari kelompok ini adalah MongoDB dan CouchDB.

Graph databases: model domain terdiri dari vertices yang saling terkait oleh edge untuk menciptakan struktur grafik yang kaya. Produk yang paling dikenal dari kelompok ini adalah OrientDB dan Neo4j.

2.2.

Pengembangan Sistem

2.2.1

Software Development Life Cycle (SDLC) Menurut Satzinger, Jackson, & Burd (2012), SDLC merupakan siklus hidup

dari

keseluruhan

proses

dari

pengembangan,

pengerjaan,

penggunaan, dan pembaharuan sebuah sistem informasi.

27 http://digilib.mercubuana.ac.id/

Systems Development Life Cycle (SDLC) mengidentifikasi semua aktivitas yang dibutuhkan untuk membangun, menjalankan, serta memelihara sebuah sistem informasi. Normalnya, SDLC mengikutsertakan semua aktivitas-aktivitas yang merupakan bagian dari systems analysis, systems design, programming, testing, dan maintaining, yang sebagaimana termasuk di dalam proses-proses project management. Beberapa jenis pendekatan yang diterapkan di dalam SDLC: 1.

Predictive approach, pendekatan SDLC yang mengasumsikan bahwa pengembangan proyek dapat direncanakan dan diorganisir terlebih dahulu, sehingga sistem informasi baru yang akan dikembangkan dapat dibangun sesuai dengan perencanaan yang telah dibuat sebelumnya.

2.

Adaptive approach, pendekatan SDLC yang lebih fleksibel, yang mengasumsikan

bahwa

pengembangan

proyek

tidak

dapat

direncanakan secara menyeluruh terlebih dahulu, akan tetapi perencanaan proyek tersebut harus dimodifikasi secara terus-menerus seiring jalannya pengembangan proyek.

Gambar 2.1 Predictive dan Adaptive SDLC (Satzinger, Jackson, & Burd, 2012:227228)

2.2.2

Agile Menurut Ambler & Holitza (2012), Agile adalah usaha untuk membuat proses pengembangan perangkat lunak menjadi lebih baik dan lebih efektif, dan hal itu terlihat semakin populer dan sukses. Agile adalah pendekatan incremental, iteratif untuk menghadirkan perangkat lunak berkualitas tinggi dengan hasil yang sering untuk memastikan nilai selama proses berlangsung. Ini memberi nilai tinggi pada individu, kolaborasi, dan kemampuan untuk merespons perubahan. Agile sendiri hanyalah koleksi 28 http://digilib.mercubuana.ac.id/

metodologi yang baru dan terbaik yang digunakan untuk mengembangkan dan memelihara perangkat lunak. Tim menemukan kesuksesan dengan pendekatan

yang

tetap

sesuai

dengan

prinsip

inti

Agile

dan

memperpanjangnya melampaui tahap pengembangan perangkat lunak ke keseluruhan siklus hidup perangkat lunak. Berikut adalah peran-peran yang ada pada Agile Development: a. Stakeholder, seseorang yang mengalami dampak finansial akibat solusi dan jelas lebih dari sekedar pengguna akhir b. Product Owner, mewakili kebutuhan dan keinginan komunitas stakeholder kepada delivery team. c. Team Member, berfokus untuk menghasilkan solusi bagi yang sebenarnya bagi stakeholder. d. Team Lead, membimbing tim dalam melakukan manajemen daripada mengambil tanggung jawab tersebut sendiri e. Architecture Owner, seseorang yang harus bertanggung jawab untuk memastikan tim dapat mengurangi risiko proyek. f. Agile Mentor, menerapkan proyek agile dan berbagi pengalaman itu dengan tim proyek. Berikut merupakan aktivitas yang terjadi dalam Agile Development: a. Perencaan Agile Biasanya terdiri dari 3 bagian yaitu Release Planning, Iteration Planning, dan Daily Planning. b. Menghadiri Rapat Harian Melakukan perencanaan atas proyek harian dan biasanya dilakukan selama 15 menit setiap harinya. Yang dibahas dalam setiap rapat adalah, Apa yang dilakukan kemarin, Apa yang akan dikerjakan hari ini, dan Apa saja hambatan yang ditemukan. c. Membuat User Story Stakeholder akan membuat user story jika ada produk/fitur baru yang diinginkan dengan format:

29 http://digilib.mercubuana.ac.id/

Gambar 2.2 Format User Story (Ambler & Holitza, 2012:17)

d. Estimasi pekerjaan Tim Agile memperoleh konsistensi dengan menggunakan nilai point yang tidak berbeda berdasarkan kemampuan orang yang melakukan pekerjaan. Tim masih mengakomodasi anggota tim yang lebih cepat dan lebih lambat dalam jumlah poin yang diberikan dalam satu iterasi, namun nilai yang diberikan kepada pemilik produk dan stakeholder (diukur dengan ukuran dan kompleksitas) tetap konsisten. e. Melacak Kecepatan Pada akhir setiap iterasi, tim agile melihat persyaratan telah selesai dan menambahkan jumlah story point yang terkait dengan persyaratan tersebut. Jumlah total story point yang lengkap menjadi kecepatan tim. f. Mengukur Kemajuan dengan Laporan Burndown Laporan Burndown melacak jumlah poin yang telah selesai dan digunakan untuk memantau iterasi tunggal, rilis, dan seluruh proyek backlog. g. Test Driven Development Tim agile menulis banyak tes unit, mengotomatisasi mereka, dan menjalankannya secara berkala melawan kode yang mereka tulis sebagai individu dan melawan kode gabungan mereka yang membentuk keseluruhan aplikasi. h. Integrasi dan Pengerjaan yang Terus Menerus Continuous

integration

merupakan

praktek

secara

teratur

mengintegrasikan dan menguji solusi Anda untuk memasukkan perubahan dibuat untuk definisinya Continuous deployment meningkatkan CI dengan secara otomatis menggelar bangunan sukses. i. Menyajikan Hasil pada Review Iterasi 30 http://digilib.mercubuana.ac.id/

Persiapan untuk pertemuan review iterasi seharusnya tidak dilakukan lebih dari beberapa menit. Tinjauan iterasi berfokus pada menunjukkan apa yang telah dilakukan tim pengembang. j. Mengumpulkan feedback dalam iterasi Rapat Review Mengumpulkan iterasi review feedback secara informal. Product Owner atau Team Lead dapat mencatat atas nama perkembangannya tim, karena anggota tim sering terlibat dalam presentasi dan menghasilkan percakapan. k. Belajar dan Meningkatkan Iterasi Retrospektif Iterasi retrospektif adalah pertemuan dimana the team lead, product owner, dan tim pengembang mendiskusikan bagaimana iterasi tersebut berjalan dan apa yang dapat mereka lakukan untuk memperbaiki iterasi berikutnya. 2.2.3

Scrum Scrum adalah salah satu komponen dari metodologi pengembangan Agile. Scrum merupakan kerangka berpikir dalam mengembangkan software yang memberi penekanan pada self-organization dan semangat kolektivitas. Scrum menguraikan proses untuk mengidentifikasi dan katalogisasi pekerjaan yang perlu dilakukan, memprioritaskan pekerjaan yang perlu dilakukan, dan pelaksanaan pekerjaan menggunakan rilis iteratif (dinamakan dengan sprint) dan memiliki tujuan utama untuk mendapatkan perkiraan berapa lama proses pembangunan sistem akan berlangsung. Menurut (Partogi, 2015), Sprint adalah jantung dari scrum. Durasi sprint biasanya dibatasi maksimal hingga 30 hari untuk membatasi resiko dimana

pasar

sudah berubah

dan menyebabkan

software

yang

dikembangkan sudah tidak relevan dengan keadaan di pasar. Semua acara dalam sprint memiliki batasan waktu (time box) yang dapat dilihat pada tabel berikut. Tabel 2.1 Durasi dalam setiap Sprint

Sprint

Planning

Review

Retrospective

Daily Scrum

30 hari

8 jam

4 jam

3 jam

15 menit

31 http://digilib.mercubuana.ac.id/

Sprint

Planning

Review

Retrospective

Daily Scrum

3 minggu

~6 jam

~3 jam

~2 jam 15 menit

15 menit

2 minggu

~4 jam

~2 jam

~1.5 jam

15 menit

1 minggu

~2 jam

~1 jam

~45 menit

15 menit

Penjelasan untuk setiap sprint diatas akan diuraikan sebagai berikut: 1. Sprint Planning Merupakan aktivitas untuk membuat rencana mengenai Product Backlog Item (PBI) yang akan dikembangkan oleh tim pengembang selama satu sprint berjalan. Pada saat sprint planning, tim pengembang

membua

estimasi

selama

satu

sprint

kedepan

berdasarkan pengalaman ataupun perasaan. 2. Sprint Review Merupakan aktivitas yang dijalankan oleh tim scrum dan stakeholder di akhir sprint untuk mengetahui produk apa saja yang sudah selesai ataupun belum selesai pada sprint tersebut. Pada sprint ini juga dilakukan presentasi untuk PBI yang sudah selesai oleh tim pengembang, pelaksanaan review produk di pasaran, review timeline, budget dan lainnya. 3. Sprint Retrospective Merupakan aktivitas yang difasilitasi oleh Scrum Master untuk mendiskusikan bagaimana proses membangun software dalam sprint. Adapun poin diskusi utama dalam retrospective adalah hal apa yang berjalan dengan baik selama siklus sprint yang perlu dipertahankan, apa saja hal yang salah yang perlu dihentikan, serta apa perubahan yang perlu dimulai untuk meningkatkan sprint berikutnya. 4. Daily Meeting Merupakan aktivitas yang dilakukan setiap harinya oleh tim pengembang untuk memberitahu seluruh tim terkait informasi terbaru dari pengembangan sistem selama sprint berjalan. Terdapat 3 pertanyaan yang umumnya didiskusikan dalam daily meeting, yaitu: a.

Apa yang sudah dikerjakan sejak daily meeting terakhir?

32 http://digilib.mercubuana.ac.id/

b.

Apa rencana yang akan diselesaikan pada daily meeting berikutnya?

c.

Apa hambatan yang dialami?

Tim dalam Scrum dibagi menjadi 3 bagian, yakni: 1.

Scrum Master, seorang servant leader yang membantu timnya menjadi tim terbaik. Scrum Master tidak menugaskan pekerjaan ataupun mengelola orang-orang namun mengelola strategi menuju agility, proses scrum, dan segala hambatan yang ada di dalamnya.

2.

Product Owner, seorang manajer dalam scrum yang bertugas dalam mengelola produk untuk meningkatkan nilai valuasi perusahaan di pasar. Product Owner berperan dalam memaksimalkan nilai bisnis untuk perusahaan melalui software yang dibangun oleh tim pengembang.

3.

Tim Pengembang, sekelompok tim yang secara kesatuan berperan dalam mengembangkan software. Tim tersebut dapat terdiri dari solution architect, test engineer, UX designer, web dan UI designer, database administrator, business analyst, technical writer, software engineer, security engineer, serta build and employment engineer. Namun secara umum, scrum tidak mengenal adanya jabatan-jabatan khusus dalam tim pengembang.

Scrum mendefinisikan dua tingkatan artefak yakni: 1.

Product Backlog Product Backlog berisi daftar rencana mengenai apa yang akan ada di dalam produk. Semua hal yang perlu dilakukan agar produk bernilai tinggi, dimasukkan dalam satu tumpukan Product Backlog agar semua pihak yang memiliki kepentingan terhadap software dapat melihat roadmap dari pengembangan produk. Product Backlog kemudian akan diurutkan oleh Product Owner namun tim pengembang tetap dapat memberikan saran yang dapat membantu. Setiap bagian dari Product

33 http://digilib.mercubuana.ac.id/

Backlog dinamakan dengan Product Backlog Item (PBI). PBI biasanya didetailkan untuk 3 sprint ke depan. 2.

Sprint Backlog Sprint Backlog berisi daftar rencana mengenai bagaimana tim pengembang akan berkolaborasi selama satu sprint ke depan untuk mengembangkan subset dari Product Backlog. Sprint Backlog berisi PBI yang disepakati tim pengembang bersama product owner untuk dikerjakan selama satu sprint beserta taktik untuk mengerjakannya. Tim pengembang memiliki otoritas penuh untuk menugaskan sprint backlog tersebut kepada diri mereka sendiri. Setiap hari tim pengembang memantau pergerakan dari sprint backlog menuju sprint goal (tujuan yang harus dicapai oleh tim pengembang selama sprint berlangsung)

dalam

daily

scrum.

Tim

pengembang

dapat

menambahkan atau mengurangi item dari sprint backlog asalkan tetap mencapai sprint goal. Kemudian, pada setiap akhir sprint dapat ditampilkan sebuah diagram yang disebut dengan burndown chart. Diagram burndown adalah representasi grafis dari jumlah pekerjaan yang harus diselesaikan (estimasi waktu pengerjaan) berbanding dengan timeline pada setiap iterasi. Garis yang ditampilkan dalam grafik adalah garis ideal work remaining line dibandingkan dengan actual work remaining line.

2.3.

Unified Modelling Languange (UML)

2.3.1

Pengertian UML Menurut Satzinger, Jackson, & Burd (2012), Unified Modelling Language (UML) merupakan standar kontruksi model dan notasi dikembangkan secara khusus untuk pengembangan berorientasi objek. Dengan menggunakan UML, dapat membuat model untuk semua jenis piranti lunak. UML muncul karena adanya kebutuhan pemodelan visual untuk

menspesifikasikan,

menggambarkan,

membangun,

dan

mendokumentasi sistem perangkat lunak. Berdasarkan pendapat yang dikemukakan di atas dapat ditarik kesimpulan bahwa UML adalah sebuah

34 http://digilib.mercubuana.ac.id/

bahasa yang berdasarkan grafik atau gambar untuk menvisualisasikan, menspesifikasikan, membangun dan mendokumentasikan sebuah sistem pengembangan perangkat lunak berbasis obyek (object oriented programming). 2.3.2

Use Case Diagram Use case diagram adalah model UML yang digunakan untuk menampilkan use cases dan hubungan mereka secara grafis dengan pengguna. Di UML, orang tersebut dinyatakan sebagai aktor. Aktor selalu berada di luar automation boundary sistem namun bisa juga menjadi bagian dari manual sistem. Terkadang, aktor dari use case bukanlah orang; melainkan, sistem atau perangkat lain yang menerima layanan dari sistem. Aktor direpresentasikan dengan gambar tongkat manusia sederhana. Tongkat manusia itu akan diberi nama yang kemudian menjadi ciri peran aktor tersebut. Use case itu sendiri digambarkan dalam bentuk oval dengan nama use case di dalamnya. Garis penghubung antara aktor dan use case menunjukkan bahwa aktor tersebut terlibat dengan use case terkait. Automation boundary, yang mendefinisikan batas antara bagian komputerisasi dari aplikasi dengan orang yang mengoperasikan aplikasi, digambarkan dengan sebuah persegi panjang berisi use case. Komunikasi aktor dengan use case melintasi automation boundary (Satzinger, Jackson, & Burd, 2012). Berikut merupakan contoh tampilan dari Use Case Diagram.

Gambar 2.3 Use Case Diagram (Satzinger, Jackson, & Burd, 2012:81)

35 http://digilib.mercubuana.ac.id/

2.3.3

Use Case Description Menurut Satzinger, Jackson, & Burd (2012), masing-masing use case yang telah teridentifikasi perlu dijabarkan lagi lebih mendetil agar memperoleh suatu gambaran utuh untuk eksekusi dari setiap use case. Penjabaran mendetil dari use case tersebut dicerminkan dalam use case description. Use case description merupakan deskripsi yang menjelaskan detil pemrosesan untuk sebuah use case. Banyaknya use case description yang dibuat, pada umumnya disesuaikan dengan jumlah use case yang ada. Salah satu jenis use case description adalah Fully Developed Description. Jenis ini mendeskripsikan secara detil informasi dari sebuah use case yang penjelasannya dapat dilihat sebagai berikut:  Use case name, merupakan nama dari use case yang akan dijelaskan pada use case description.  Scenario, merupakan nama skenario dari use case yang akan dijelaskan. Pada umumnya nama skenario dapat disamakan dengan nama dari use case terkait.  Triggering event, merupakan event yang memicu terjadinya use case.  Brief description, merupakan ringkasan singkat secara umum dari use case yang akan dijelaskan.  Actors, merupakan para pelaku atau pengguna sistem yang terkait dengan jalannya sebuah use case.  Related use cases, merupakan use cases lain yang ada keterkaitannya dengan use case yang dijelaskan saat ini.  Stakeholders, merupakan pihak-pihak yang berkepentingan dengan jalannya use case yang akan dijelaskan.  Preconditions, merupakan kondisi awal yang harus terpenuhi agar eksekusi dari use cases dapat terlaksana.  Postconditions, merupakan kondisi yang terjadi setelah use cases selesai dieksekusi.  Flow of activities, mendeskripsikan rincian aliran aktivitas-aktivitas yang terlaksana dari use cases, yang digambarkan secara berurutan. 36 http://digilib.mercubuana.ac.id/

Flow of activities juga akan menggambarkan interaksi aktivitas yang dilakukan oleh actor dengan sistem.  Exception condition, mendeskripsikan aktivitas-aktivitas khusus yang terjadi apabila suatu kondisi tidak terpenuhi pada saat eksekusi dari sebuah use case.

Gambar 2.4 Fully Developed Description (Satzinger, Jackson, & Burd, 2012:123)

2.3.4

Domain Model Class Diagram Class diagram digunakan untuk menunjukkan objek class untuk sistem. Notasinya dari Unified Modelling Language (UML), yang telah menjadi standar untuk model yang digunakan dengan pengembangan system object oriented. Salah satu jenis class diagram UML menunjukkan hal-hal dalam pekerjaan domain user disebut sebagai domain model class diagram. Tipe lain dari notasi class diagram UML digunakan untuk

37 http://digilib.mercubuana.ac.id/

membuat desain class diagram ketika merancang class dari sistem (Satzinger, Jackson, & Burd, 2012). Pada class diagram, notasi persegi panjang akan mewakili class sementara notasi garis yang menghubungkan persegi panjang akan menunjukkan asosiasi antara class. Notasi persegi panjang (kotak) terdiri dari dua bagian, dimana bagian atas berisi nama class, dan bagian bawah berisi atribut class. Nama class selalu diawali dengan huruf kapital, dan nama atribut selalu diawali dengan huruf kecil. Berikut merupakan contoh Domain Model Class Diagram.

Gambar 2.5 Contoh Domain Model Class Diagram (Satzinger, Jackson, & Burd, 2012:103)

2.4.

Ruang Lingkup Pemrograman

2.4.1

Hypertext Preprocessor (PHP) Menurut Nixon (2014), PHP adalah bahasa pemrograman yang digunakan untuk membuat server menghasilkan keluaran output dinamis yang berpotensi berbeda setiap kali browser melakukan pencarian kembali sebuah halaman. PHP hadir dengan ratusan fungsi built-in yang siap digunakan, hal inilah yang membuatnya menjadi bahasa yang sangat kaya. Dengan PHP, menanamkan aktivitas dinamis di halaman web menjadi sesuatu hal yang sederhana. Dengan memberi halaman ekstensi .php, mereka akan memiliki akses instan ke bahasa scripting. Dari sudut pandang pengembang, yang perlu dilakukan adalah menulis kode seperti berikut.

38 http://digilib.mercubuana.ac.id/

Tag awal . Di luar bentuk ini, semuanya dikirim ke klien sebagai HTML langsung. Jadi teks „Here's the latest news‟ adalah output ke browser; dalam tag PHP, fungsi tanggal yang built-in menampilkan hari dalam minggu ini sesuai dengan waktu sistem server. Hasil akhir dari dua kode diatas akan terlihat seperti berikut.

2.4.2

CodeIgniter (CI) CodeIgniter adalah kerangka kerja PHP open source yang kuat dengan footprint yang sangat kecil, dibangun untuk pengembang yang membutuhkan toolkit sederhana dan elegan untuk membuat aplikasi web berfitur lengkap. CodeIgniter memiliki seperangkat fungsionalitas yang sangat kaya, yang akan meningkatkan kecepatan kerja pengembangan situs web. Jika Anda tahu PHP dengan baik, maka CodeIgniter akan mempermudah tugas Anda. CodeIgniter memiliki sejumlah libraries dan helpers yang sangat kaya. Dengan menggunakan CodeIgniter, akan menghemat banyak waktu, jika sedang mengembangkan situs web dari nol. Tidak hanya itu, sebuah situs yang dibangun di CodeIgniter juga aman, karena memiliki kemampuan untuk mencegah berbagai serangan yang terjadi melalui situs web (Tutorials Point, 2015).

2.4.3

JavaScript JavaScript

adalah

sebuah

bahasa

scripting

client-side

yang

keseluruhannya berjalan pada web browser. JavaScript membawa fungsionalitas yang dinamis pada halaman web. Setiap kali terjadi perubahan ketika pointer mouse diarahkan ke sebuat item dalam halaman web, atau ketika kita melihat teks yang baru, warna, maupun sebuah gambar yang muncul di halaman, atau mengambil sebuah obyek pada

39 http://digilib.mercubuana.ac.id/

halaman dan kemudian memindahkannya ke lokasi baru, semua hal tersebut dilakukan oleh JavaScript. Penggunaan Javascript akan lebih optimal jika elemen HTML ditulis secara formal dan terstruktur. Penggunaan JavaScript itu sendiri, dengan cara menempatkan awalan