BAB 2 TINJAUAN PUSTAKA
2.1 Landasan Teori
2.1.1
Software Engineering
Menurut Sommerville (2011: 7), “Software Engineering adalah disiplin ilmu yang mempelajari semua aspek produksi perangkat lunak, mulai dari tahap awal spesifikasi sistem hingga pemeliharaan sistem setelah produk sudah digunakan.”
1. Engineering discipline Engineeer menerapkan teori, metode, dan tools yang cocok dengan proses pengembangan yang dilakukan. Ketika tidak ada teori dan metode yang bisa ditetapkan, engineer akan berusaha untuk menemukan solusi dari permasalahan. Mereka juga sadar bahwa mereka harus bekerja dengan batasan organisasi dan keuangan sehingga perlu mencari solusi dengan memperhitungkan batasan-batasan tersebut. 2. All aspect of software production Software engineering tidak hanya memperhatikan proses teknis dari pengembangan software; tetapi juga termasuk aktivitas seperti manajemen proyek software dan pengembangan alat, metode, dan teori untuk mendukung produksi software,” (Sommerville, 2011: 7). Ada 2 alasan mengapa software engineering itu penting: 1. Masyarakat bergantung pada sistem software yang canggih sehingga diperlukan kemampuan untuk dapat memproduksi sistem yang bisa diandalkan dan terpercaya secara cepat dan ekonomis.
7
8
2. Menggunakan metode software engineering untuk sistem software biasanya lebih murah untuk jangka panjang daripada membuat program seperti proyek personal. Untuk kebanyakan tipe sistem, mayoritas pengeluaran
adalah
biaya
perubahan
software.”
(Sommerville, 2011: 8).
2.1.2
Psikologi
“Psikolog mendefinisikan psikologi sebagai ilmu yang mempelajari kehidupan. Tapi definisi tersebut tidak bisa membedakan disiplin modern dari psikologi dari cabang ilmu alam lainnya yang juga mempelajari tentang kehidupan seperti biologi. Jadi, psikologi didefinisikan sebagai ilmu alam yang mempelajari tentang tingkah laku dan proses mental,” Lahey (2012: 2). “Psikologi dianggap sebagai ilmu pengetahuan alam karena psikolog mencoba untuk memahami manusia dengan berpikir kritis pada observasi yang hati-hati dan terkontrol. Istilah tingkah laku merajuk pada tindakan nyata manusia yang bisa dilihat oleh orang lain secara langsung. Sedangkan proses mental merajuk pada pikiran, emosi, perasaan, dan motif pribadi yang tidak bisa dilihat oleh orang lain secara langsung,” Lahey (2012: 2). “Tujuan dari psikologi adalah mendeskripsikan, memprediksi, memahami, dan mempengaruhi tingkah laku dan proses mental. 1. Describe Informasi yang dikumpulkan melalui studi ilmiah membantu psikolog untuk mendeskripsikan tingkah laku dan proses mental dengan akurat. 2. Predict Riset memberikan psikolog alat untuk memprediksi tingkah laku yang akan datang dengan baik. 3. Understand Kita dapat memahami tingkah laku dan proses mental ketika kita bisa menjelaskannya. Selalu ada hal baru yang dapat dipelajari. Penjelasan yang sekarang masih bersifat sementara dan bukan
9
kebenaran. Semua teori itu bisa berkembang, atau bahkan ditolak, dengan studi di masa yang akan datang.
4. Influence Terakhir, psikolog ingin melampaui ketiga hal di atas untuk mempengaruhi tingkah laku yang bermanfaat. Lahey (2012: 3)
2.1.3
Database Menurut Connoly dan Begg (2015: 63), Database merupakan kumpulan data beserta deskripsi dari data itu sendiri yang terhubung secara logikal, yang dirancang untuk memenuhi kebutuhan informasi dari sebuah organisasi. Sebuah database dapat berupa satu atau lebih tempat penampungan data yang dapat digunakan secara bersamaan dari berbagai departemen atau pengguna. Semua data terintegrasi dengan jumlah duplikasi yang minimal, daripada file-file yang tidak saling berhubungan dengan data yang redundan. Sebuah database tidak lagi menjadi milik satu departemen, namun satu perusahaan dimana setiap departemen saling terintegrasi satu sama lain, begitu juga juga dengan database di dalamnya. Database tidak hanya memuat data operasional suatu perusahaan, tapi juga deskripsi dari data-data tersebut. Sebagai tambahan, Silberschatz, Korth, dan Sudarshan (2006: 1) mengungkapkan bahwa database merupakan sekumpulan data yang memuat informasi yang relevan bagi sebuah perusahaan. Menurut Fathansyah (2002), tujuan pengelolaan data dalam database adalah untuk memperoleh data yang dicari dengan mudah dan cepat. Selain itu, menurut Kadir (2002), basis data dapat disebut sebagai kumpulan data yang saling berhubungan, yang diorganisasi sedemikian rupa agar kemudian dapat dimanfaatkan lagi. Tujuan pemanfaatan database adalah sebagai berikut: a.
Kecepatan dan kemudahan (Speed)
10
Pemanfaatan
database
memungkinkan
untuk
dapat
menyimpan, memanipulasi, dan/atau menampilkan kembali data dengan cepat dan mudah. b.
Efisiensi ruang penyimpanan (Space)
Mengeksekusi sejumlah code, atau dengan membuat relasi antar kelompok data yang saling berhubungan untuk menghindari redundansi (pengulangan) data. c.
Keakuratan (Accuracy)
Menentukan ketidak-akuratannya penyimpanan data dengan penerapan code atau pembentukan relasi antar data bersama dengan penerapan aturan/batasan tipe data, domain data, keunikan data, dll dalam database. d.
Ketersediaan (Availability)
Seiring dengan bertambahnya waktu, ruang penyimpanan data pun juga akan semakin bertambah. Database dapat menghapus atau memindahkan data yang sudah jarang atau bahkan yang tidak pernah digunakan lagi ke media penyimpanan. e.
Kelengkapan (Completeness)
Penambahan
struktur
database
untuk
mengakomodasi
kebutuhan kelengkapan data yang semakin berkembang. f.
Keamanan (Security)
Menentukan siapa saja yang dapat mengakses database dengan menggunakan sistem security. g.
Kebersamaan dan pemakaian
Menghindari inkonsistensi data dalam lingkungan multi-user, karena pemakai database tidak terbatas hanya pada satu pemakaian dalam satu waktu saja.
2.1.4
NoSQL
Menurut Orina (2013), NoSQL adalah suatu cara penyimpanan data (datastore), dimana cara menyimpan dan mengambil kembali datanya dapat dilakukan dengan cepat, seperti basis data relasional
11
pada umumnya, tetapi tidak berdasarkan relasi matematis antar-tabel seperti pada basis data relasional. Basis data NoSQL dapat bekerja lebih cepat dibandingkan basis data relasional dengan SQLnya. Tetapi karena masih merupakan teknologi baru yang masih terus berkembang, NoSQL belum setangguh SQL yang sudah berusia puluhan tahun. Pertumbuhan website yang
sangat
pesat
menyebabkan
berkembangnya NoSQL karena menjadi alternatif untuk mempercepat akses dibanding menggunakan basis data relasional. Umumnya untuk penyimpanan dan pengambilan kembali data Key-Values dilakukan pada dokumen berukuran besar dengan format XML atau JSON. NoSQL menjadi populer karena tidak semua data berbentuk relasional, sehingga NoSQL dapat menjadi alternatif untuk menangani dan mengelola data-data tersebut. Contoh dokumen data yang tidak disimpan dalam bentuk relasional dapat dilihat pada : Hadoop/Hbase, Cloudata Google’s big table clone, Amazone SimpleDB, Facebook, Twitter, Digg, CouchDB, dan Linkedln. Dari berbagai contoh tersebut, Cloudata dari Google, dengan data yang sangat besar dan user/customer yang bersifat mobile, merupakan contoh yang familiar dan menarik dari basis data NoSQL. Alasan penggunaan basis data NoSQL oleh Google sebagai search engine terpopuler saat ini, dapat dijelaskan sebagai berikut. Google memerlukan suatu storage layer untuk melakukan peng-indeks-an pencarian terbalik (inverted search index). Akan tetapi hal tersebut tidak dapat ditangani oleh RDBMS. BigTable berada di bagian atas pada GFS file system milik Google, user/customer yang mobile, dan yang paling penting, terdapatnya ribuan perangkat keras yang menyediakan speed dan redundancy. Selain itu, akibat data yang berantakan dan tidak terstruktur, software tidak dapat menyimpan data dalam bentuk SQL. Dengan berbagai alasan tersebut kemudian Google menggunakan basis data NoSQL
12
2.1.4.1 Perkembangan NoSQL NoSQL
dikembangkan
karena
adanya
berbagai
kebutuhan, yaitu: 1. Data Store (Penyimpanan Data): Dimana data disimpan dalam ukuran exabyte. Sebuah exabyte sama dengan satu miliar gigabytes (GB) data. Menurut Internet.com, jumlah tambahan data yang disimpan pada tahun 2006 adalah 161 exabyte. Hanya 4 tahun kemudian pada tahun 2010, jumlah data yang disimpan hampir mencapai 1.000 exabyte yang merupakan peningkatan lebih dari 500%. Dengan kata lain, ada banyak data yang disimpan di dunia dan yang hanya akan terus tumbuh. 2. Interconnected Data (Data yang saling berhubungan): sehingga data di seluruh dunia menjadi lebih terhubung. Pembuatan web didukung dengan adanya hyperlink, blog memiliki pingbacks dan setiap sistem jaringan utama sosial memiliki tag yang mengaitkan sesuatu dengan yang lainnya. Sistem utama yang dibangun untuk saling berhubungan. 3. Complex Data Structure (Struktur data yang rumit): dalam hal ini berarti NoSQL dapat dengan mudah menangani struktur hirarkis data bersarang. Sedangkan pada SQL pada RDBMS, hal ini rumit dan sulit dilakukan, karena butuh beberapa tabel relasional dengan berbagai macam kunci. Selain itu, ada hubungan antara kinerja dan kompleksitas data. Kinerja dapat menurunkan dalam RDBMS tradisional seperti yang kita menyimpan sejumlah besar data yang dibutuhkan dalam aplikasi jejaring sosial dan web semantik.
2.1.4.2 Kategori NoSQL NoSQL dapat dibagi atas 4 (empat) kategori dasar, yaitu:
13
1) Key-values Stores Adalah suatu hash table yang memiliki sebuah key unik dan pointer ke item tertentu dari data. Pemetaan ini biasanya diikuti oleh mekanisme cache untuk memaksimalkan kinerja. Contohnya pada Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB. Jenis aplikasi yang dapat menggunakannya adalah aplikasi content caching. Sedangkan contoh penerapan aplikasinya adalah pada pembuatan forum software, dimana terdapat sebuah home-profile page yang memiliki statistik apa yang telah dilakukan oleh user/pengguna-nya, seperti berapa jumlah pesan yang telah dikirim dan juga apa saja 10 pesan terakhir yang dikirm/diterima penggunanya. Home-profile page ini membaca dari key berdasarkan user_id dan meretrieve string JSON yang mewakili semua informasi yang relevan. Hal ini diulangi kembali setiap 15 menit dan dicatat di key-store.
2) Column Family Stores Adalah tempat yang dibuat untuk menyimpan dan memproses jumlah data yang sangat besar, yang tersebar di berbagai lokasi. Di sini masih terdapat beberapa key, tapi untuk mengacu ke multiple columns. Dalam hal ini, BigTable (model dari
Column
Family
NoSQL
milik
Google),
baris
diidentifikasikan oleh suatu baris key dengan data yang terurut dan disimpan oleh key tersebut. Kolom-kolom itu diatur oleh column family.
3) Document Databases Diinspirasikan oleh Lotus Notes dan mirip dengan key-value stores. Model ini pada dasarnya merupakan dokumen yang menyimpan kumpulan key-value collections. Dokumen yang semi-terstruktur disimpan dalam format seperti JSON. Contohnya adalah: CouchDB dan MongoDb. Jenis aplikasi yang menggunakannya adalah aplikasi web.
14
4) Graph Databases Adalah suatu basis data yang dibangun oleh kumpulan node, relasi antara notes dan karakteristik node. Pada basis data ini tidak digunakan tabel yang terdiri dari baris dan kolom serta struktur SQL yang kaku, tetapi memakai model graf yang dapat diterapkan di berbagai mesin (lokasi). Contoh dari basis data graf (Graph Database) ini adalah Neo4J, InfoGrid, dan Infinite Graph. Aplikasi yang menggunakannya biasanya jenis aplikasi yang bersifat social networking seperti Facebook dan Twitter. Selain keempat kategori tersebut, menurut seorang ahli yang (Robert Rees, 2010), ada tambahan kategori lain dari NoSQL, yaitu Basis data XML, Distributed Peer Stores, dan Object Stores. Contoh dari basis data XML adalah Exist, Oracle, dan MarkLogic. Basis data XML ini biasanya digunakan pada aplikasi yang bersifat publishing, seperti pada perusahaan penerbitan buku, Sedangkan contoh dari Distributed Peer Stores adalah Cassandra, HBase, Riak. Cara ini umumnya dipakai pada system yang tersebar (terdistribusi). Dan yang terakhir, contoh dari Object Stores adalah Oracle Coherence, db4o, ObjectStore, GemStone, dan Polar. Umum object stores digunakan pada jenis aplikasi keuangan.
15
Gambar 1 Perbedaan SQL dengan NoSQL
Pada Gambar 1 terlihat bahwa dengan menggunakan NoSQL, data
dapat
didistribusikan
dan
secara
otomatis
melalui database nodes, sekaligus juga dapat mencatat data tersebut. Jika kita ingin mencatat dan menyimpan data ke-20 entitas pada suatu database cluster dengan 3 nodes, maka mungkin
saja
data
tersebut
dicatat
di
semua nodes. Database tidak perlu melakukan sinkronisasi antar-node terlebih dahulu, juga tidak memerlukan 2 fase commit,
dan Client 1
dapat
melihat
perubahan
pada Node 1 sebelum Client 2 selesai menulis ke-20 entitas. Sedangkan pada RDBMS, hal tersebut tidak dapat dilakukan. 2.1.4.3 Keuntungan NoSQL Berbagai keuntungan jika menggunakan NoSQL dalam pengelolaan basis data yaitu:
1. Pola pikir yang fleksibel (Elastic Scaling), dimana hal ini dapat dijelaskan sebagai berikut. Selama puluhan tahun, DBA (Database
Administrator)
selalu
berpikir
untuk
16
membeli server yang lebih besar kemampuannya karena peningkatan volume basis data, dari pada memikirkan penyebaran
basis
data
melalui multiple
hosts karena
peningkatan jumlah beban. Padahal jika terjadi peningkatan transaksi dan permintaan, basis data dapat disimpan tersebar dengan menggunakan teknik cloud computing atau dengan kata lain menggunakan lingkungan yang virtual. Hal ini akan lebih ekonomis dibanding membeli server dengan kemampuan yang lebih besar dan canggih. Basis data seperti ini dapat dengan mudah diterapkan dengan menggunakan NoSQL dibanding dengan SQL pada RDBMS. NoSQL didesain untuk menekan biaya hardware.
2. Data yang dikelola volumenya besar (Big Data), yang disebabkan oleh hal-hal berikut ini. Transaksi selama berpuluh tahun, yang semakin lama semakin pesat pertumbuhan dan perkembangannya, mengakibatkan volume data yang meningkat tajam pula. O’Reilly menyebut hal
ini
sebagai
suatu
“revolusi
industri
dari
data”.
Ketidakmampuan RDBMS menangani peningkatan volume data yang sangat besar akibat pertambahan jumlah transaksi yang pesat, tidak dapat ditolerir lagi oleh perusahaanperusahaan besar. Sehingga perusahaan-perusahaan tersebut beralih menggunakan system pengelolaan basis data NoSQL, seperti Hadoop, yang dapat menangani jumlah data yang sangat besar dengan mudah. 3. DBA (Database Administrator) berkurang peranannya pada sistem basis data dengan NoSQL. Seperti
diketahui,
walaupun
selama
bertahun-tahun
para vendor mengklaim sudah melakukan berbagai perbaikan, tetap saja sistem RDBMS tercanggih sekalipun memerlukan para DBA yang terlatih. Sedangkan pada NoSQL, peranan DBA menjadi berkurang karena NoSQL memang didesain untuk mengurangi peranan manusia seperti perbaikan otomatis,
17
adanya penyebaran/distribusi data sehingga data yang harus dikelola tidak terlalu besar, dan model datanya lebih sederhana. Tetapi untuk data yang kritis, tetap diperlukan DBA.
2.1.5 MongoDB
Menurut
Ghalib,
Basith,
Alfiansyah,
Dannish
(2011);
MongoDB merupakan sebuah sistem basis data yang berbasis dokumen (Document Oriented Database) dan termasuk sistem basis data yang menganut paham NoSQL. NoSQL merupakan singkatan dari Not Only SQL, artinya sebuah database tidak hanya harus menggunakan perintah SQL untuk melakukan proses manipulasi data. MongoDB tidak mengenal tabel, kolom dan baris, melainkan koleksi dan dokumen. Koleksi dalam MongoDB dapat kita anggap sebagai sebuah folder (directory) dan dokumen dapat kita anggap sebagai berkas (file) di dalam folder (koleksi) tersebut. Dokumen yang terdapat dalam MongoDB memiliki atribut yang berbeda dengan dokumen lain walaupun berada di dalam satu koleksi. Hal ini tidak dapat dilakukan dalam RBMS di mana sebuah baris dalam tabel tidak mungkin memiliki kolom yang berbeda dengan baris yang lain jika berada di dalam satu tabel. Kelebihan MongoDB adalah: 1. Performanya lebih cepat dibandingkan dengan MySQL. 2. Mampu meng-backup data secara realtime. Dikenal dengan istilah replication. 3. Memecah sebuah database yang besar menjadi beberapa bagian untuk optimalisasi performa database. Dikenal dengan istilah auto-sharding. 4. Mendukung Python. 5. Dapat digunakan di Windows dan Linux. 6. Proses SELECT, INSERT, UPDATE, dan DELETE ringan. 7. Adanya fitur map/reduce untuk mempermudah proses agregasi.
18
8. Mampu
menyimpan
data
yang
sangat
besar
dengan
menggunakan GridFS.
2.1.6
OOP Menurut Clark (2011, p1-3), Object Oriented Programming adalah sebuah pendekatan dalam pengembangan perangkat lunak dimana struktur perangkat lunak ini berdasarkan pada interaksi dari suatu objek dengan objek yang lain untuk menyelesaikan tugas. Object oriented merupakan suatu cara untuk melakukan pemodelan sistem dengan berorientasikan pada obyek-obyek yang terlibat pada sistem tersebut. Fitur yang paling penting dalam object oriented adalah bahwa seluruh proses pengembangan didasarkan pada sebuah konsep tunggal utama. Obyek-obyek dalam dunia nyata menjadi komponenkomponen dalam analisis dan perancangan model dan akhirnya menjadi bagian dari kode akhir (Britton, 2001, p4).
Keuntungan dari object oriented adalah: 1.
Merupakan konsep umum yang dapat digunakan untuk memodelkan hampir semua fenomena dan dapat dinyatakan dalam bahasa umum. Misalnya : a. Kata benda menjadi object class. b. Kata kerja menjadi behavior. c. Kata sifat menjadi attributes.
2.
Memberikan informasi yang jelas tentang konteks dari sistem.
3.
Mengurangi biaya maintenance
4.
Memudahkan dalam mencari hal yang diubah.
5.
Membuat perubahan menjadi bersifat lokal, tidak berpengaruh terhadap modul lainnya.
Alasan-alasan mengapa pendekatan object oriented diperlukan, adalah para praktisi perangkat lunak mencari sebuah pendekatan baru
19
pada pengembangan sistem yang akan menghasilkan perangkat lunak yang lebih: 1. Maintainable (Dapat Dipelihara) Selama masa hidupnya, sebuah aplikasi akan diminta untuk diubah untuk memenuhi persyaratan-persyaratan baru. 2. Testable (Dapat Diuji) Unit-unit
piranti
lunak
yang
dibangun
menggunakan
pendekatan object oriented menghasilkan hasil yang mencukupi dan independen dengan interface yang didefinisikan dengan jelas. Ini berarti setiap unit dapat diuji dengan hati-hati dalam suatu isolasi sebelum disatukan kembali ke dalam sistem. Integrasi dapat dilaksanakan secara berangsur sehingga kesalahan-kesalahan yang ditemukan dapat dilacak ke modul yang salah. 3. Reusable (Dapat Digunakan Kembali) Karena banyak masalah yang berisi fitur-fitur yang sama, cara yang pasti untuk menghasilkan piranti lunak yang efisien adalah dengan menggunakan kembali solusi-solusi dari software yang telah ada, daripada menulis ulang kode tersebut. 4. Able to Cope with Large and Complex System (Mampu Mencakup Sistem yang Besar dan Kompleks) Sistem peranti lunak sekarang ini lebih besar dan lebih komplek dari pada yang sebelumnya. Sekarang kebanyakan aplikasi software membutuhkan sebuah GUI untuk dapat diterima.
20
Tabel 2 Terminologi dalam Object Oriented
Istilah
Definisi Unit piranti lunak menyatukan data dan metode-metode
Object
secara bersama-sama untuk manipulasi data.
Class
Template untuk menciptakan object. Item data yang didefinisikan sebagai bagian dari sebuah
Attribute
class atau object. Prosedur atau fungsi yang didefinisikan sebagai bagian dari sebuah class atau object, menunjuk pada interface
Operation
umum prosedur. Prosedur atau fungsi yang didefinisikan sebagai bagian dari sebuah class atau object, menunjuk pada
Method
implementasi prosedur. Permintaan yang dikirim ke sebuah object untuk
Message
menjalankan salah satu dari metodenya.
Encapsulation
Penggabungan data dan operasi ke sebuah object Membuat rincian detail dari sebuah object yang tidak
Data Hiding
dapat diakses oleh object lain. Mekanisme untuk mendefinisikan sebuah class baru dari
Inheritance
class yang sudah ada. Kemampuan yang dipakai untuk menyembunyikan implementasi – impelmentasi yang berbeda di balik
Polymorphism sebuah interface umum.
2.1.7
Python
21
Python adalah bahasa yang memiliki beberapa alasan agar dipilih untuk diterapkan pada machine learning. Pertama, sintaks yang jelas. Kedua, mempermudah dalam memanipulasi teks (Harington, 2012). 1.
Executable pseudo-code Sintaks yang jelas dari Python dikenal dengan executable
pseudo-code. Instalasi Python secara default sudah membawa tipe data tingkat tinggi seperti lists, tuples, dictionaries, sets, queues, dan lain-lain yang tidak harus diprogram secara manual. Tipe data tingkat tinggi pada Python membuat konsep-konsep abstrak mudah diterapkan. Dengan Python pemrograman dengan object-oriented, procedural, functional, dan sebagainya dapat dijalankan. Selain itu Python dapat digunakan untuk memproses dan memanipulasi teks yang membuatnya cocok untuk mengolah data non-numerik. Python juga memiliki beberapa regular expression yang dapat digunakan. Dan ada juga beberapa library yang dapat digunakan untuk mengakses webpages, memanipulasi teks, dan meng-extract data dari HTML.
1.
Kepopuleran Python Python merupakan bahasa yang populer dan mudah untuk
dipelajari. Kepopulerannya tersebut membuat modul-modulnya tersedia untuk banyak aplikasi. Python populer pada ilmu ilmiah dan keuangan. Library untuk ilmu ilmiah (seperti SciPy dan NumPy) memungkinkan untuk melakukan operasi vektor dan matriks. Hal ini membuat code lebih mudah dibaca dan memungkinkan untuk menulis code seperti aljabar linear. Selain itu, librariy tersebut mempercepat perhitungan karena disusun menggunakan bahasa tingkat rendah (C dan Fortran). 1.
Kelebihan Python dibanding bahasa lainnya. Python merupakan bahasa tingkat tinggi yang dapat membuat
matriks matematika seperti MATLAB. MATLAB memiliki sejumlah fitur built-in yang membuat machine learning lebih mudah. MATLAB juga sangat cepat.
22
Pada low level language seperti Java dan C, terdapat library matriks matematika, namun dibutuhkan banyak code untuk dapat melakukan hal-hal sederhana. Anda harus melakukan typecast pada variabel, dan menulis setter dan getter setiap kali sneeze dalam Java; melakukan subclassing
dan
memilih
metode
sub-class
walaupun
tidak
menggunakannya, sehingga harus menulis banyak code-code yang terkadang membosankan untuk melakukan hal-hal sederhana. Hal ini tidak terjadi dalam Python. Python bersih, ringkas, dan mudah dibaca. Python mudah bagi non-programmer untuk digunakan. Python merupakan bahasa tingkat tinggi yang memungkinkan untuk menghabiskan lebih banyak waktu untuk memahami datanya dan sedikit waktu yang berkaitan dengan bagaimana sebuah mesin mengolah data.
2.1.8
UML Unified modeling language adalah bahasa pemodelan untuk sistem atau perangkat lunak yang berparadigma (berorientasi objek) (Nugroho, 2010). Pemodelan (modeling) sesungguhnya digunakan untuk penyederhanaan permasalahan-permasalahan yang kompleks sedemikian rupa sehingga lebih mudah dipelajari dan dipahami. UML menyediakan
bahasa
pemodelan
visual
yang
memungkinkan
pengembang sistem untuk membuat cetak biru atas visi mereka dalam bentuk yang baku. Sebagai sebuah sketsa, UML berfungsi sebagai jembatan dalam mengkomunikasikan beberapa aspek dari sistem.
2.1.8.1 Use Case Diagram Menurut (Sommerville, 2011, p. 124), use case adalah sebuah teknik yang dipakai untuk menganalisa kebutuhan sistem dari user. Use case diagram menggambarkan interaksi antara aktor dan use case dalam sebuah sistem. Di dalam use case diagram terdapat aktor dan proses. Aktor dilambangkan dengan gambar seperti orang, sedangkan
23
proses berbentuk elips dan di dalamnya terdapat nama dari proses tersebut. Aktor dan proses dihubungkan dengan sebuah garis lurus. Simbol-Simbol pada Use Case Diagram: 1. Use Case Use case merupakan representasi sebuah proses. Biasanya diwakili dengan kata kerja yang diletakkan kedalam sebuah diagram berbentuk elips.
Gambar 2 Use Case
2. Actor Actor atau aktor merupakan representasi subjek yang terlibat dalam proses sebuah sistem. Subjek yang direprsentasikan tidak hanya terbatas pada manusia, namun juga dapat mewakili subjek non manusia seperti sistem komputer atau sebuah organisasi.
Gambar 3 Aktor
3. Use Case Relationship
24
Use case relationship merupakan penghubung antar aktor dengan use case yang ada. Hubungan antar aktor dan use case direpresntasikan dengan sebuah garis lurus. Representasi garis lurus digunakan untuk menghubungkan aktor tertentu dengan use case tertentu yang saling berkaitan.
Gambar 4 Use Case Relationship
4. System Boundary System boundary, atau dapat diartikan sebagai batasan sistem. System boundary, merupakan garis batas antar use case dengan aktor. Garis batas yang merepresentasikan batasan biasanya memiliki nama untuk mengklasifikasikan nama proses atau tujuan dari serangkaian proses yang ada.
Gambar 5 System Boundary
25
Contoh Use Case Diagram:
Gambar 6 Contoh penggunaan Use Case Diagram
2.1.8.2 Sequence Diagram Menurut (Sommerville, 2011, p. 126), sequence diagram dipakai untuk menggambarkan interaksi antara aktor dan objek di dalam sistem dan juga interaksi antar objek tersebut. Sebuah sequence diagram akan menunjukkan urutan interaksi yang terjadi dari sebuah use case tertentu. Objek dan aktor yang terlibat ditulis di bagian atas diagram yang kemudian ditarik garis putus-putus secara vertikal dari daftar tersebut. Interaksi antar objek ditandai dengan panah horisontal. Kotak pada garis putus-putus menandakan jangka waktu hidup dari objek bersangkutan. Gambar 7 menunjukkan contoh sequence diagram:
26
Gambar 7 Sequence Diagram
2.1.8.3 Class Diagram Menurut (Sommerville, 2011, p. 129), class diagram dipakai saat membangun sebuah sistem berorientasi objek untuk menunjukkan kelas-kelas di dalam sistem dan asosiasi di antara kelas-kelas tersebut. Asosiasi yang dimaksud adalah sebuah hubungan antar kelas yang menunjukkan adanya relasi di antara mereka. Untuk menambah detil dari class diagram, di dalamnya
ditambahkan
informasi
mengenai
Attributes
(karakteristik-karakteristik dari sebuah kelas) dan operasioperasi dari class tersebut. Gambar 8 dan Gambar 9 menunjukkan contoh sebuah class diagram:
27
Gambar 8 Class Diagram dan Asosiasi
Gambar 9 Class Diagram Consultation
28
2.1.8.4 Activity Diagram Menurut (Sommerville, 2011, p. 123), activity diagram menunjukkan aktivitas sebuah proses sistem dan alur kontrol dari satu aktivitas ke aktivitas lain. Awal dari proses ditandai dengan lingkaran hitam penuh dan akhir proses ditandai dengan lingkaran hitam penuh didalam lingkaran lain. Aktivitas ditandai dengan persegi panjang yang merupakan penjelasan dari subproses yang spesifik. Sedangkan, panah menunjukkan alur dari kerja aktivitas satu ke aktivitas yang lain
Gambar 10 Activity Diagram
2.1.9 Machine Learning Menurut (Harrington, 2012, p. 124), machine learning terletak di persimpangan ilmu komputer, teknik, statistik dan sering muncul di bidang ilmu lainnya. Setiap bidang yang memerlukan penafsiran dan pengolahan data mendapatkan keuntungan jika menggunakan teknik Machine Learning. Machine learning akan membantu untuk dapat melalui semua data dan mengekstrak beberapa informasi.
29
Machine Learning menggunakan statistik. Praktik dari engginering menerapkan ilmu pengetahuan untuk memecahkan masalah. Dalam engginering memecahkan masalah dilakukan dengan menentukan solusi untuk memecahkan seluruh permasalahan. Ada banyak masalah dimana solusinya tidak dapat ditentukan. Karena tidak cukup mengerti tentang masalah atau tidak memiliki daya komputasi yang cukup benar untuk memodelkan masalah, maka diperlukan statistik. Dalam Machine Learning, dapat dilihat instance data. Setiap instance data terdiri dari sejumlah fitur. Klasifikasi, merupakan salah satu tugas penting dari Machine Learning yang digunakan untuk menempatkan bagian data yang tidak diketahui ke dalam kelompok yang dikenal. Dalam membangun atau melatih pengklasifikasian, harus menempatkan data sesuai kelasnya. Data ini disebut training set. Tabel 3 Data Training Set
No 1
Weight (g)
Wingspan Webbed feet? Back (cm) color 1000.1 125.0 No Brown
Speccies Buteo jamaicensis Sagitarius
2
3000.7
200.0
No
Gray
Serpentarius Sagittarius
3 4
3300.0 4100.0
220.3 136.0
No Yes
Gray Black
Serpentarius Gavia immer Calothorax
5
3.0
11.0
No
Green
Lucifer Campephilus
6
570.0
75.0
No
Black
Principalis
30
Pada tabel 3 terdapat beberapa nilai dari empat bagian burung yang akan diukur. Yaitu mengukur berat badan, lebar sayap, jenis kaki, dan warna punggungnya. Empat hal yang telah diukur disebut feature/atribut. Setiap baris dalam feature merupakan turunannya. Pada tabel Feature, pertama dan kedua (weight dan wingspan), menggunakan numerik sehingga bisa mengambil nilai desimal. Feature ketiga (webbed feet) menggunakan biner yang hanya bisa mendapatkan hasil 1 atau 0. Feature keempat (back color) adalah penghitungan dengan menggunakan palet warna yang umumnya digunakan. Salah satu tugas Machine Learning yaitu Classification. Classification digunakan untuk mengindentifikasi sesuatu dengan menggunakan feature dari data yang sudah di kumpulkan. Ada banyak algoritma dalam mengklasifiksikan data. Setelah memutuskan algoritma yang akan digunakan untuk pengklasifikasian, tahap selanjutnya melatih algoritma. Dalam metode ini, data yang diberikan secara acak dibagi menjadi dua set independen yaitu training set dan test set. Biasanya, dua-pertiga dari data yang dialokasikan untuk training set dan sisanya sepertiga dialokasikan untuk test set. Untuk melatih algoritma yang kita masukkan agar datanya berkualitas dikenal sebagai training set. Training set adalah himpunan contoh pelatihan yang akan kita gunakan untuk melatih algoritma Machine Learning. Pada tabel 3 training set memiliki enam contoh data training. Setiap contoh data training memiliki empat feature dan satu variable sasaran. Variabel sasaran merupakan sesuatu yang akan diprediksi berdasarkan algoritma Machine Learning. Dalam klasifikasi variabel target, mengambil nilai nominal. Dalam training set, variabel sasarannya diketahui. Machine Learning mencari berbagai hubungan antara feature dan variabel sasaran. Sedangkan test set digunakan untuk menghitung akurasi model yang telah dibuat (Han & Kamber, 2011:370).
31
2.1.10 Bootstrap Bootstrap
adalah
framework
CSS
yang
menyediakan
kumpulan komponen-komponen interface dasar pada web yang telah dirancang sedemikian rupa untuk digunakan bersama-sama. Selain itu, Bootstrap juga menyediakan sarana untuk membangun layout halaman dengan mudah dan rapi, serta modifikasi pada tampilan dasar HTML untuk membuat seluruh halaman web yang dikembangkan senada dengan komponen-komponen lainnya.
2.1.11 HTML
Menurut (Meloni, 2012, p.2), HTML adalah bahasa yang digunakan untuk menjelaskan bagaimana teks, grafik, dan data-data yang mengandung informasi lain dapat diorganisir dan dihubungkan satu dengan yang lain.
2.1.12 CSS Menurut (Meloni, 2012, p.46), Cascading Style Sheet (CSS) merupakan bahasa yang didefinisikan untuk mengkonstruksi huruf, warna, dan posisi. CSS digunakan untuk mendeskripsikan bagaimana informasi pada suatu halaman web dibentuk dan ditampilkan. 2.1.13 jQuery
JQuery adalah Javascript library yang mempunyai kapasitas kecil, memiliki akses yang cepat dan mempunyai banyak fitur. Hal ini membuat
dokumentasi
HTML
menjadi
lebih
manipulative;
pemanggilan code Javascript ketika didalam tag HTML, animasi dan Ajax jauh lebih sederhana dengan API yang mudah digunakan untuk bekerja di banyak browser. Dengan kombinasi yang fleksibel dan diperpanjang, jQuery telah mengubah cara pandang jutaan orang untuk menulis Javascript.
32
2.1.14 Bottle Bottle merupakan kerangka web Python yang cepat, sederhana dan ringan. Hal ini didistribusikan sebagai modul file tunggal dan tidak memiliki dependensi selain standar library pada Python.
2.1.15 XML
XML adalah sebuah meta-language (bahasa yang digunakan untuk mendeskripsikan bahasa lain) yang memungkinkan seorang desainer membuat sendiri tag yang menyediakan fungsi yang tidak tersedia pada HTML (Connolly dan Begg, 2010, p.1073). XML merupakan sebuah versi meta-language turunan dari Standard Generalized Markup Language (SGML); didesain khusus untuk dokumen
website,
menciptakan
tag
mendefinisikan,
yang sendiri;
dapat dan
mendukung memiliki
mentransmisikan,
perancang
untuk
kemampuan
untuk
memvalidasikan
dan
menginterpretasikan data antara aplikasi dan organisasi.
2.1.16 Javascript
MJavascript adalah bahasa pemrograman dalam web, dimana Javascript yang akan mengatur perilaku suatu website. Javascript sudah banyak dipakai oleh kebanyakan website modern. Meskipun memiliki nama dan basis sintaks Java, Javascript adalah bahasa yang jauh berbeda dari Java.
33
2.1.17 Scrum Rubin (2013: 1) mengatakan bahwa, “Scrum adalah salah satu teknik agile software development yang cocok diterapkan untuk mengembangkan produk atau servis yang inovatif.” “Teknik ini diawali dengan membuat product backlog. Pekerjaan itu sendiri dikerjakan secara iterasi (pengulangan) untuk setiap fitur, dalam rentang waktu seminggu sampai sebulan. Di setiap iterasi, tim mengerjakan semua tugas (seperti designing, building, dan testing) yang diperlukan untuk memproduksi fitur yang lengkap, bisa berjalan, dan layak diproduksi. Biasanya jumlah pekerjaan yang ada di product backlog lebih banyak daripada yang bisa dikerjakan oleh tim dalam satu iterasi. Jadi, di awal setiap iterasi, tim langsung menentukan item (yang ada di dalam product backlog) terpenting berikutnya yang akan mereka kerjakan di iterasi berikuntya. Di akhir setiap iterasi, tim melakukan review bersama para stakeholder untuk mendapatkan feedback dari mereka. Berdasarkan feedback yang mereka dapat, product owner dan tim bisa saja mengganti pekerjaan yang sudah mereka rencanakan untuk dikerjakan berikutnya dan bagaimana tim membuat rencana kerjanya. Setelah itu, tim seharusnya sudah berhasil menambah peningkatan di produk mereka. Atau bahkan produk tersebut berpotensial untuk bisa langsung dipasarkan (jika memang layak),” (Rubin, 2013: 2).
1. Product Backlog Menurut Rubin (2013: 2), “Product backlog adalah sebuah daftar yang berisi urutan prioritas dari fitur-fitur dan kebutuhankebutuhan lainnya yang diperlukan untuk membangun satu produk sukses. Sesuai kalimat sebelumnya, selalu kerjakan item yang paling penting atau yang memiliki prioritas tertinggi. Ketika anda kehabisan sumber daya (contoh: waktu), pekerjaan yang belum selesai adalah item-item yang prioritasnya lebih rendah dari item-item yang sudah diselesaikan.”
34
“Product owner, dengan dibantu masukan dari stakeholder dan Scrumteam, adalah pihak yang paling bertanggung jawab dalam menentukan dan mengatur urutan pekerjaan di dalam product backlog. Product owner biasanya menentukan urutan-urutan ini berdasarkan pertimbangan nilai, biaya, pengetahuan, dan resiko. Tapi urutan ini bisa saja berubah, bahkan mengalami penambahan atau pengurangan, seiring dengan berubahnya kondisi bisnis dan bertambahnya pemahaman Scrum team terhadap produk,” (Rubin, 2013: 18-19).
2. Sprint Planning Menurut Rubin (2013: 21-22), “Sprint Planning adalah tahap di mana product owner, development team, dan Scrum Master menentukan product backlog terpenting yang akan mereka buat di sprint berikutnya. Selama sprint planning, product owner dan development team menyetujui sprint goal yang harus mereka capai di sprint berikutnya. Dengan menggunakan goal ini, development team melihat kembali product backlog dan menentukan fitur dengan prioritas tertinggi yang bisa mereka capai di sprint yang akan datang dalam suatu keadaan di mana mereka bisa bekerja dengan nyaman dalam jangka waktu tertentu.”
3. Sprint Backlog Menurut Rubin (2013: 22), “Sprint backlog adalah backlog ke2 yang berisi sekumpulan tugas yang berhubungan dengan item-item di product backlog. Tim memecahkan satu item di product backlog menjadi sekumpulan tugas yang diperlukan untuk menyelesaikan item tersebut. Setelah itu, tim juga memberikan estimasi waktu yang dibutuhkan untuk menyelesaikan setiap tugas.”
35
2.2 Related Work
2.2.1
Jurnal
2.2.1.1 SPK Pemilihan Calon Pendonor Darah Potensial dengan Algoritma C4.5 dan Fuzzy Tahani SPK Pemilihan Calon Pendonor Darah Potensial dengan Algoritma C4.5 dan Fuzzy Tahani adalah aplikasi yang bertujuan untuk membangun sebuah aplikasi Sistem Penunjang Keputusan (SPK) yang dapat menghasilkan daftar calon pendonor darah potensial berdasarkan hasil penambangan data pada database transaksi pelayanan donor darah dengan menggunakan algoritma data mining C4.5 dan database Fuzzy Tahani. Penelitian ini dibangun oleh tiga orang yang berasal dari Negara Indonesia yaitu Mahmud Yunus, Hary Soekotjo Dahlan dan Purnomo Budi Santoso. Pembuatan penelitian ini bermula dari masalah yang dialami oleh Unit Tranfusi Darah (UTDC) PMI Kota Malang yang seringkali mengalami kondisi kritis, yaitu minimnya persediaan darah aman yang dibutuhkan
masyarakat.
Metode
penelitian
yang
digunakan
untuk
digunakan mencakup 4 hal: 1. Data penelitian 2. Variabel Penelitian 3. Konsep Solusi Masalah 4. Desain Sistem Algoritma
data
mining
C4.5
melakukan explorasi data guna menemukan hubungan tersembunyi antara sejumlah variabel input dengan variabel target dalam bentuk pohon keputusan (decision tree). Variabel input meliputi atribut (1) golongan darah; (2) jenis kelamin; (3) usia; (4) berat badan; (5) tekanan
36
darah; (6) kadar hemoglobin (HB); dan (7) kadar hematocrit (HCT), sedangkan variabel output/targetnya adalah atribut Donor Lagi yang berisikan nilai ‘Ya’ atau ‘Tidak’. Metode database fuzzy model Tahani digunakan untuk melakukan perangkingan data hasil penambangan dengan melakukan query fuzzy yang melibatkan variabel fuzzy (1) usia; (2) tekanan darah; (3) berat badan dan (4) kedekatan tempat tinggal. Data pembelajaran untuk membentuk aturan pohon keputusan adalah data transaksi donor darah yang terjadi pada tahun 2010 hingga 2011. Pengukuran keakuratan prediksi terhadap data calon pendonor darah potensial yang dihasilkan, dilakukan dengan membandingkannya dengan data transaksi donor darah yang terjadi pada periode tahun 2012. Akurasi hasil prediksinya adalah (1) 90,56% untuk semua golongan darah; (2) 88,64% untuk golongan darah A; (3) 93,33% untuk golongan darah B; (4) 84,62% untuk golongan darah AB dan (5) akurasi prediksi sebesar 91,03% untuk golongan darah O. Rata-rata tingkat akurasi prediksi pemilihan calon pendonor darah potensial dengan algoritma data mining C4.5 adalah sebesar 89,64%. Luaran (output) dari SPK yang dibangun, berupa daftar calon pendonor darah potensial yang dapat digunakan oleh UTDC PMI Kota Malang, sebagai bahan pertimbangan dalam menghubungi atau meminta masyarakat untuk menjadi pendonor darah sukarela utamanya di saat kondisi kritis.
37
2.2.1.2 Short Message Service (SMS) Aplikasi untuk Pencegahan Penyakit di Negara Berkembang
Dalam 10 tahun terakhir, jumlah ponsel telah mengalami pertumbuhan yang sangat pesat di negara berkembang, sehingga menghubungkan jutaan orang yang sebelumnya
tidak
berhubungan.
Ponsel
yang
memungkinkan untuk layanan pesan singkat (SMS), memberikan kesempatan baru dan inovatif untuk upaya pencegahan penyakit.Tujuan dari penilitian ini adalah untuk menggambarkan karakteristik dan hasil intervensi SMS untuk pencegahan penyakit di negara-negara berkembang
dan
memberikan
rekomendasi
untuk
pekerjaan di masa depan. Sebanyak 34 aplikasi SMS dijabarkan, di antaranya 5 memiliki temuan evaluasi. Banyak aplikasi yang dimulai oleh proyek dengan mode intervensi bervariasi antara satu arah atau komunikasi dua arah, dengan atau tanpa insentif, dan dengan permainan edukatif. Hambatan utama yang ditemukan adalah bahasa, waktu pesan, fluktuasi jaringan selular, kurangnya insentif keuangan, data pribadi, dan omset ponsel. Ulasan ini menggambarkan bahwa sementara banyak aplikasi SMS untuk pencegahan penyakit ada, beberapa telah dievaluasi.
38
2.2.1.3 Model Aplikasi Sistem Pakar Sebagai Mediator Pemeliharaan Perkawinan
Masalah sederhana,
pemeliharaan
masyarakat
awam
perkawinan sudah
tidaklah
pasti
tidak
mengetahui dasar- dasar dari petugas Badan Penasihatan, Pembinaan dan Pelestarian Perkawinan (BP4) dan hakim dalam memberikan mediasi bagi pasangan suami-istri yang sedang dilanda krisis rumah tangga. Pada mesin inferensinya, model aplikasi sistem pakar sebagai mediator pemeliharaan perkawinan ini menggunakan metode penelusuran maju (forward chaining). Untuk menghitung tingkat kepercayaan, menggunakan metode faktor
kepastian
representasi
(certainty
pengetahuannya
factor)
dan
menggunakan
metode kaidah
produksi (production rule). Dikarenakan aturan-aturan yang dibuat sesuai dengan keinginan pakar, sehingga dapat memberikan nasehat yang sesuai dengan kondisi dan
situasi
yang
dirasakan
oleh
pemohon
dan
penggunaan metode forward chaining pada inference engine dapat diterapkan secara baik. Nilai kepercayaan yang diberikan oleh pakar dan yang dihasilkan dari sistem ini sama dengan hasil perhitungan secara manual dengan menggunakan teori Certainty Factor, sehingga keakuratan hasilnya sudah sesuai dengan perhitungan yang diharapkan. Antar muka pengguna sistem pakar ini, sederhana dan mudah digunakan.