BAB 2 LANDASAN TEORI
2.1
Teori yang berkaitan dengan Software Engineering
2.1.1 Rekayasa Piranti Lunak Menurut Pressman (2015, pp. 4) Perangkat lunak adalah : 1. Instruksi (progam komputer) yang ketika dijalankan menghasilkan fitur, fungsi dan kinerja yang diharapkan. 2. Struktur data yang memungkinkan program-program untuk memanipulasi data. 3. Dokumen yang menggambarkan operasi dan penggunaan dari suatu program.
2.1.2 Kategori Piranti Lunak Menurut Pressman (2015, pp. 7) terdapat 7 kategori dalam rekayasa piranti lunak, yaitu : 1. System Software Merupakan software yang berfungsi untuk memberikan pelayanan bagi software lainnya. 2. Application Software Merupakan software yang menyelesaikan masalah bisnis yang spesifik. 3. Engineering/Scienific Software Merupakan software yang membantu ilmuwan untuk membantu masalah dalam bidang sains. 4. Embedded Software Merupakan software yang digunakan pada suatu perangkat sehingga dapat langsung digunakan oleh pengguna. 5. Product-Line Software Merupakan software yang dibuat spesifik untuk banyak jenis pengguna. 6. Web Applications Merupakan
software
yang
terintegrasi, dan aplikasi bisnis.
menyediakan
database
perusahaan
yang
7. Artificial Intelligence Software Merupakan software yang dapat menciptakan robot, pengenalan pola (suara atau gambar), kecerdasan jaringan syaraf, dan pembuktian teorema.
2.1.3 Agile Development Menurut Pressman (2015, pp. 66) Agile Software engineering yang mengkombinasi filosofi dan kumpulan pedoman pengembangan perangkat lunak.
2.1.4 Metodologi Scrum Menurut Kenneth S. Rubin (2013, pp.1 - 3) Scrum merupakan sebuah pendekatan dari agile yang dilakukan untuk mengembangkan produk serta layanan agar lebih inovatif . Pada tahun 1986 Harvard Business Review mengangkat kembali scrum dalam sebuah artikel kemudian scrum dijuluki “The new product Development Game” (Takeuchi and Nonaka, 1986). Scrum menekankan pada penggunaan scalable, pentingnya penggunaan scrum dalam suatu tim yang diorganisir secara perorangan setelah itu diuraikan oleh masingmasing manajemen didalam setiap proses dalam tim tersebut. Pola pengembangan software dengan menggunakan metode scrum meliputi : 1. Product Backlog Product backlog merupakan kebutuhan projek yang diutamakan atau fitur yang menyediakan nilai bisnis untuk pengguna. Fitur dapat ditambah ke backlog setiap saat yang disebut sebagai Product Backlog Item. Product Backlog memiliki product owner yang bertugas sebagai pengawas dalam product backlog untuk melakukan penambahan ataupun pengurangan yang dilakukan secara terus menerus dalam product backlog.
Gambar 2.1 Scrum Product Backlog (Sumber : Essential Scrum: A Practical Guide To The Most Popular Agile Proses, 2013 pp. 19)
2.
Sprints Dalam scrum, pekerjaan dilakukan secara berulang atau seperti siklus
dalam suatu waktu disebut sprints. Sprints merupakan sebuah timeboxed yang memiliki tanggal mulai dan berakhirnya suatu pekerjaan. Sprint baru akan langsung mengikuti proses penyelesaian sprint sebelumnya.
Gambar 2.2 Karakterisktik Sprint (Sumber : Essential Scrum: A Practical Guide To The Most Popular Agile Proses, 2013 pp. 21)
3. Sprint Planning Didalam sprint terdapat Sprint Planning yang kegunaannya untuk menjamin pekerjaan dalam hitungan minggu ataupun bulan sesuai kesepakatan dalam satu tim yang bertujuan mendefinisikan secara jelas apa yang harus dicapai. Unit kerja yang dibutuhkan untuk mencapai kebutuhan yang telah ditetapkan dan harus sesuai dengan waktu yang telah ditetapkan. Batas waktu sprints bervariasi sesuai dengan backlog yang digunakan dalam sprints.
Gambar 2.3 Scrum Planning (Sumber : Essential Scrum: A Practical Guide To The Most Popular Agile Proses, 2013 pp. 21)
2.1.5
Mode View Controller Menurut Septian (2011, pp. 9) MVC Model View Controller merupakan suatu
pendekatan didalam perangkat lunak yang digunakan sebagai pemisah aplikasi logika dan aplikasi presentasi .
Hal ini meminimalkan script presentasi, contoh dari file
presentasi yakni HTML,CSS, Java Script kemudian dipisahkan dari jenis PHP scripting ataupun yang biasa diartikan menghindari terjadinya keadaan spaghetti code. a. Model
Model mempresentasikan struktur data yang sudah dibangun. Biasanya kelas model ini berisi fungsi-fungsi yang membantu user ataupun developer untuk dapat mengelola , memasukkan ataupun merubah informasi yang terdapat didalam database. b. View View merupakan sebuah informasi yang diberikan untuk user, berupa tampilan yang biasa disebut dengan user interface. Pada umumnya view merupakan suatu halaman didalam web itu sendiri . c. Controller Controller bertugas sebagai penghubung antara Model dan View serta beberapa sumber lainnya yang dibutuhkan untuk melakukan proses dari HTTP request untuk melakukan proses generate suatu halaman didalam web. 2.1.6 Interaksi Manusia dan Komputer 2.1.6.1Pengertian Interaksi Manusia dan Komputer Menurut Aprudi (2014, pp. 13) Interaksi manusia dan komputer merupakan desain yang harus menghasilkan kesesuaian antara pengguna, sistem dan pelayanan yang dibutuhkan untuk menciptakan kinerja tertentu baik dalam kualitas dan optimalitas dari sebuah layanan. Desain interaksi manusia dan komputer harus mempertimbangkan banyak aspek perilaku manusia dan kebutuhan pengguna.
2.1.6.2Delapan Aturan Emas Menurut Shneiderman (2012, pp. 74-76) Terdapat delapan aturan emas yaitu: 1. Berusaha untuk konsisten Urutan tindakan pada program harus konsisten serta istilah konsisten yang dilakukan dalam perintah, tindakan ataupun istilah yang identik pada menu harus sama. 2. Memenuhi kebutuhan universal Program menyediakan satu tombol untuk memudahkan pengguna memasuki halaman atau bagian yang dituju secara langsung. Sebagai contoh tombol help sangat berguna bagi pengguna baru dan juga menyediakan tombol fungsi yang memudahkan pengguna yang ahli.
3. Memberikan umpan balik yang informatif Memberikan umpan balik disetiap tindakan pengguna, misalnya didalam suatu tindakan ada pemberitahuannya (notification). 4. Desain dialog yang menghasilkan keadaan akhir Suatu umpan balik yang informatif dan memberikan indikasi bahwa cara yang dilakukan sudah benar. 5. Mencegah kesalahan yang terjadi Jika terjadi kesalahan maka sistem harus bisa mendeteksi dan kesalahan tersebut dapat segera diatasi dengan penanganan yang sederhana. 6. Memberikan pembalikan aksi yang mudah Hal yang
dapat mengurangi kekhawatiran pengguna ketika
pengguna telah melakukan kesalahan karena sistem mengizinkan pengguna untuk mundur ke tindakan sebelum kesalahan terjadi.
7. Mendukung pusat kendali internal Memberikan kesan bahwa pengguna memiliki kendali penuh dalam penggunaan aplikasi dan sistem memberi respon dari setiap tindakan yang dilakukan pengguna. 8. Mengurangi beban ingatan jangka pendek Dengan keterbatasannya ingatan manusia maka dibutuhkan tampilan yang sederhana ataupun banyak tampilan halaman yang sebaiknya disatukan.
2.1.7 Object-Oriented Analysis and Design (OOAD) Menurut Pasupathy&Bhavani (2015, pp. 541) Object-Oriented Analysis and Design merupakan pendekatan teknikal yang digunakan untuk analisis, desain sebuah aplikasi, sistem , atau bisnis dengan menerapkan pendekatan object-oriented dan pemodelan visual di seluruh proses pengembangan aplikasi untuk menciptakan kualitas aplikasi yang lebih baik. Keuntungan dari OOAD adalah : 1. Membuat bayangan dari sistem sebelum melakukan coding. 2. Memudahkan proses pengembangan aplikasi.
3. Megurangi biaya dan modifikasi dalam pengembangan aplikasi. 4. Pengendalian dependensi.
2.1.8 Unified Modelling Language (UML) Menurut Whitten & Bentley (2007 pp. 371) Unified Modeling Language (UML) suatu kumpulan rancangan dari model yang digunakan untuk menggambarkan sistem dari sisi perangkat lunak dan dari sisi segi objek. Perkembagan UML berawal dari pengembangan sistem berorientasi objek yang dikembangkan sebelumnya oleh James Rumbaugh dan Grady Booch dimana bertujuan untuk menciptakan standar tunggal dalam proses pengembangan sistem berorientasi objek di tahun 1994. Kemudian melalui kerja sama antara James Rumbaugh, Grady Booch dan Ivar Jacobson mengembangkan standar baru didalam bahasa pemodelan yang berorientasi pada objek. Dan pada tahun 1997, UML versi 1.0 resmi diluncurkan. Melalui pengembangan yang lebih lanjut, saat ini bahasa pemodelan berorientasi objek yang digunakan menjadi UML versi 2.0.
2.1.8.1Use Case Diagram Menurut Whitten & Bentley (2007 pp. 246) Use case menjelaskan fungsi sistem dari perspektif pengguna yang dapat dimengerti. Use case mewakili satu tujuan dari sistem dan menjelaskan urutan kegiatan dan interaksi pengguna untuk mencapai tujuan pembuatan sistem.
Gambar 2.4 Contoh Use Case (Sumber: System Analysis & Design Method, Whitten danBentley, 2007, pp. 246) Menurut Whitten & Bentley (2007 pp.
247) sebuah use case digram
digambarkan dengan komponen sebagai berikut : 1. Use Case Use case digambarkan dalam bentuk elips yang merupakan aktivitas sistem yang dilakukan oleh actor.
Use Case Gambar 2.5 Contoh Use Case
2. Actor Actor merupakan pelaku yang melakukan interaksi dengan sistem.
Gambar 2.6 Contoh Actor (Sumber: System Analysis & Design Method,Whitten dan Bentley, 2007, pp. 247)
3. Boundary Boundary merupakan garis batas antara use case dengan actor. Biasanya boundary memiliki nama untuk mengklasifikasikan proses use case diagram.
System’s Name
Gambar 2.7 Contoh Boundary
4. Relationship Relationship digambarkan dalam bentuk tanda panah yang menghubungkan antara actor dengan use case. Terdapat beberapa bentuk relationship yaitu :
a. Association Relationship antara actor dengan sebuah use case.
Gambar 2.8 Contoh Association Relationship (Sumber: System Analysis & Design Method,Whitten dan Bentley, 2007, pp. 248)
b. Extends Use Case
Sebuah use case yang mencakup langkah-langkah ektraksi dari use case yang lebih kompleks dengan tujuan untuk menyederhanakan use case aslinya.
Gambar 2.9 Contoh Extends Use Case (Sumber: System Analysis & Design Method,Whitten dan Bentley, 2007, pp. 249)
c. Uses atau Include Uses atau include berfungsi untuk menjelaskan hubungan ketergantungan yang terjadi pada use case.
Gambar 2.10 Contoh Uses atau Include (Sumber: System Analysis & Design Method,Whitten dan Bentley, 2007, pp. 249)
2.1.8.2Use Case Narrative Menurut Whitten & Bentley (2007, pp. 256) penjelasan secara narasi akan membantu mempercepat pemahaman terhadap sistem
karena keterangannya yang
bersifat high-level (gambaran tingkat tinggi dan secara luas).
2.1.8.3Activity Diagram Menurut Whitten & Bentley (2007 pp. 391) Activity Diagram digunakan untuk membuat model dari tahapan proses atau aktvitas dari sebuah sistem. Activity diagram berbeda dengan flowchart karena dalam activity diagram menyediakan sebuah mekanisme untuk menggambarkan aktivitas yang terjadi secara paralel. Activity diagram dapat dibuat untuk setiap use case. Menurut Whitten & Bentley (2007 pp. 391) sebuah activity digram digambarkan dengan komponen sebagai berikut : 1. Initial node Digambarkan dalam bentuk lingkaran penuh yang mewakili proses awal dari activity diagram. 2. Actions Digambarkan dalam bentuk persegi panjang yang melengkung untuk mewakili setiap tahapan sistem. Urutan kegiatan dibuat sebanyak aktivitas sistem. 3. Flow Digambarkan dalam bentuk panah yang menunjuk ke action dalam activty diagram. Kebanyakan dalam pembuatan flow tidak dibutuhkan kata-kata untuk mengidentifikasi proses. 4. Decision Digambarkan dalam bentuk belah ketupat dengan satu atau dua panah yang mengarah keluar. Panah yang dibuat untuk mengidentifikasi kondisi. 5. Merge
Digambarkan dalam bentuk belah ketupat dengan dua panah, yakni satu panah mengarah ke dalam dan panah yang lain mengarah ke luar. Merge berfungsi untuk menyatukan kembali beberapa alur aktivitas menjadi satu alur dalam sebuah sistem.
6. Fork Digambarkan dalam bentuk satu tanda panah yang mengarah ke dalam balok hitam dan dua panah mengarah ke luar dari balok hitam. Fork berperan untuk memecah alur paralel dalam sebuah aktivitas. 7. Join Digambarkan dalam bentuk dua atau lebih tanda panah yang mengarah ke dalam balok hitam dan satu panah mengarah ke luar dari balok hitam. Semua action yang masuk ke dalam join harus telah komplit sebelum melanjutkan proses selanjutnya. 8. Activity Final Digambarkan dalam bentuk lingkaran penuh diikuti dengan lingkaran lain diluarnya yang menggambarkan akhir dari proses activity diagram.
. Gambar 2.11 Contoh Activity Diagram (Sumber: System Analysis & Design Method,Whitten dan Bentley, 2007, p 392)
2.1.8.4Class Diagram Menurut Whitten & Bentley (2007 pp. 400), Class Diagram menggambarkan struktur sistem obyek yang menunjukkan kelas-kelas yang telah disusun oleh sistem. Class diagram menghubungkan antara entitas orang, benda, dan data untuk menciptakan hubungan dalam sistem. Sebuah class diagram digambarkan dengan komponen sebagai berikut : 1.
Class
Class digambarkan sebagai kotak yang berisi tiga bagian yaitu class, attribute, dan method
Gambar 2.12 Contoh Class pada Class Diagram
2.
Relationship Gambaran relasi dari sebuah class diagram yang dideskripsikan melalui garis yang menghubungkan satu kelas dengan kelas lainnya. Beberapa relasi dalam class diagram, yaitu : a. Associations Associations merupakan hubungan dimana suatu method didalam sebuah kelas yang memanggil method
dari objek kelas lain. Association digambarkan
melalui garis lurus tanda panah yang mengarah dari satu kelas ke kelas lainnya. b. Aggregation Aggregation merupakan hubungan suatu objek pada kelas berbeda yang merupakan bagian dari kelas lain, namun objek dari kelas tersebut dapat berdiri sendiri. Hubungan antar kelas digambarkan melalui garis lurus pada sebuah kelas yang mengarah pada kelas lain dengan bentuk segi belah ketupat pada kelas yang dituju. c. Composition Composition memiliki hubungan yang hampir sama dengan aggregations, namun hubungan composition menyatakan bahwa bagian dari objek suatu kelas tidak dapat dipisahkan dari kelas yang memiliki kaitan dengan kelas yang dituju. Hubungan antar kelas digambarkan melalui garis lurus pada sebuah kelas yang mengarah pada kelas lain dengan bentuk segi belah ketupat penuh.
3.
Multiplicity Multiplicity menunjukkan berapa banyak objek dari suatu kelas yang saling terelasi dengan kelas lainnya. Multiplicity akan memberikan keterangan pada salah satu jenis hubungan class diagram yang disebut association.
Tabel 2.1 Keterangan dari multiplicity Mulplicity
Description
1
Terdapat satu objek pada sebuah kelas
*
Terdapat banyak objek pada sebuah kelas
0..1
Tidak terdapat objek hingga satu objek pada sebuah kelas
0..*
Tidak terdapat objek hingga terdapat banyak
objek
yang
nilainya
tak
terhingga pada sebuah kelas. 1..*
Terdapat satu objek hingga banyak objek yang nilainya tak terhingga pada sebuah kelas
2.1.8.5Sequence Diagram Sequence diagram merupakan diagram yang menggambarkan interaksi antara satu actor dan sistem untuk skenario use case. Satu sequence diagram kemungkinan memiliki beberapa diagram untuk satu buah use case. Menurut Whitten & Bentley (2007 pp.
394) sebuah sequence digram
digambarkan dengan komponen sebagai berikut : 1.
Actor Actor pada sequence diagram digambarkan sama seperti actor pada use case
2.
System System pada sequence diagram digambarkan dalam bentuk kotak yang isinya diawali dengan titik dua (:) yang mengartikan indikasi dari sistem.
3.
Lifelines Lifelines digambarkan dengan garis putus-putus yang menunjuk hubungan antara actor dengan sistem.
4.
Activation bars Bar yang dibuat untuk menyatukan lifelines untuk mengindikasi jangka waktu interaksi.
5.
Input message Input message digambarkan dalam bentuk panah secara horizontal yang menunjuk dari actor ke sistem untuk mengindikasi pesan input. Huruf pertama pada pesan input harus menggunakan huruf kecil dan huruf awal pada kata-kata tambahannya harus menggunakan huruf kapital.
6.
Output messages Output messages digambarkan dalam bentuk panah secara horizontal yang menunjuk dari sistem ke actor. Notasi penulisan bisa dilakukan dengan bebas.
Gambar 2.13 Contoh Sequence Diagram (Sumber: System Analysis & Design Method, Whitten danBentley, 2007, pp. 396)
2.1.9 Hypertext Markup Language (HTML) Menurut Tittel& Noble (2011, pp. 10-11) HTML (Hypertext Markup Language) digunakan sebagai pembuatan dalam halaman sebuah web. Dengan pembelajaran HTML (Hypertext Markup Language) sebuah halaman web dapat disambungkan ke WWW (World Wide Web) yang merupakan kumpulan dokumen di internet. Informasi dapat disampaikan secara baik ke dalam dunia online dengan struktur tampilan serta dan pembangunan dokumen web yang lebih efektif. HTML (Hypertext Markup Language) memiliki label yang lebih spesifik untuk menjadikan perintah didalam dokumen tersebut. Adapun label yang dimaksud bertuliskan sebagai berikut: “” kemudian diakhiri dengan tanda kurung siku dengan tanda garis miring di dalamnya, seperti berikut : “< /html>” Label – label tersebut tidak terlihat secara langsung didalam web browser, namun menjadi elemen penting dalam HTML (Hypertext Markup Language) karena label-label tersebut membuat sebuah halaman menampilkan isinya melalui Markup. Tugas markup sendiri sebagai pengarah dalam web browser. serta cara menampilkan dokumen HTML (Hypertext Markup Language).
2.1.10 Cascading Style Sheet Menurut Pouncy and York (2011, pp. 3), Cascading Style Sheets (CSS) merupakan sebuah bahasa yang dirancang untuk mendeskripsikan tampilan HTML. Penggunaan CSS dapat membantu memanipulasi warna, backgroung, user interface, dan efek visual lainnya.
2.1.11 Bootstrap Menurut Spurlock (2013, pp.1) Bootstrap adalah suatu produk open source yang diciptakan oleh 2 orang yang bekerja di perusahaan media sosial Twitter yakni Mark Otto dan Jacob Thornton pada Agustus 2011.
Bootstrap dapat dikatakan sebagai HTML, CSS dan kerangka JS paling popular untuk pengembangan secara responsive. Framework yang intuitif dan powerfull dalam pengembangan web yang lebih cepat dan lebih mudah. Bootstrap dikelola melalui GitHub agar membantu nerds membuat web yang menarik dan compatible dengan media yang digunakan untuk mengkases web tersebut.
2.1.12 Black Box Testing Menurut Pressman (2010, pp. 484), black box testing adalah suatu pengujian yang ditujukan pada tampilan perangkat lunak. Black box testing memeriksa beberapa aspek penting dari sistem, seperti aspek yang dilihat hanya pada fungsionalitas dan output, lebih fokus pada hasil dan tanpa melihat proses yang terjadi di dalam sistem. Menurut Pressman (2010, pp. 495), tujuan utama dari black box testing adalah mencari kesalahan atau error dengan kategori sebagai berikut :
2.2
1.
Mencari fungsi yang salah atau kurang.
2.
Mencari kesalahan pada tampilan.
3.
Mencari kesalahan pada struktur data atau akses database.
4.
Mencari kesalahan pada behavior atau performa.
5.
Mencari kesalahan pada inisialisasi (awal) dan akhiran.
Teori yang terkait dengan tema penelitian
2.2.1 Pengertian Hacker Hacker ialah seseorang dengan kemampuan menganalisa serta mempelajari dan selanjutnya dapat membuat , memodifikasi atau bahkan mengeskploitasi suatu sistem yang terdapat dalam suatu perangkat. Seperti perangkat lunak komputer dan perangkat keras komputer yang mencakup program komputer, serta administrasi. Pengertian hacker didalam HOL Network Security merupakan seseorang yang dikatakan ahli dibidang teknik informatika , ataupun mereka yang memberikan sumbangan bermanfaat untuk jaringan komputer, serta membuat program kemudian memberikannya kepada orang lain melalui internet. Seorang hacker mempunyai minat dan pengetahuan yang mendalam dalam dunia teknik informatika yang berupaya mengenal pasti kelemahan serta kekurangan suatu sistem dengan melakukan uji coba.
Hacker mempunyai etika yang dimana para hacker tidak akan melakukan kerusakan secara sembarangan terhadap suatu sistem.
2.2.2 Information Security Menurut Awad, Hassanien, & Baba (2013, pp. 231) Information security merupakan standar yang harus dipenuhi untuk mencegah adanya kerentanan pengamanan informasi .kerentanan yang dimaksud berhubungan dengan aplikasi berbasis web yang akan digunakan oleh pengguna. Berikut definisi dari informasi security : 1. Menurut Wang et al., kerentanan merupakan suatu hal yang dikatakan cacat didalam perangkat lunak dan dengan mudah digunakan oleh seorang hacker untuk mengakses kedalam sistem dan jaringan. 2. Kelemahan dalam sistem dimanfaatkan oleh pengguna jahat kemudian menimbulkan kerugian serta kerusakkan didalam aplikasi web. Setelah mengetahui kerentanan tersebut, sebagai pengguna tentu dapat mempertimbangkan kerentanan dari aplikasi web yang digunakan dalam jangka penggunaan sistem untuk mempertimbangkan mengenai keamanan informasinya .
2.2.3 Sosial Media Menurut Barbier & Feng (2013, pp.1), Social media diartikan sebagai aplikasi berbasis internet yang dibangun diatas fondasi ideologi dan teknologi web 2.0 yang memungkinkan penciptaan dan pertukaran user-generated content. Berikut adalah jenis-jenis situs social media, yaitu: 1.
Jejaring sosial - Facebook - Linkedin - Meetup
2.
Blogging - Huffington post - Business Insider - Techcrunch
- Perezhilton 3.
Media sharing - Youtube - Flickr - Ustreamtv
Menurut Kailer dan Mandl (2013, pp. 10-11), Berikut ini adalah contoh fitur social media yang ditemukan dan ditugaskan ke masing-masing social building blocks yaitu sebagai berikut :
Tabel 2.2 Contoh Penerapan Fungsi Social Media Building Block
Social Media Feature Blog Comments in customer reviews
Conversations
Discussion platform for customers (misalnya, papan pesan) Sending messages to other customers Users-created Blog
Identity
Public customer profile
Presense
Determine online status of other users
Relationships
Manage contacts inside the online store
Tabel 2.2 Contoh Penerapan Fungsi Social Media (lanjutan) Building Block
Social Media Feature Add custom advantage/ disadvantage to reviews or ratings Custom like-functionality for a product Customer ratings and reviews
Reputation
Detailed customer ratings (additional to the overall rating) Liking product detail via sosial network (misalnya facebook) People-based reputation system (misalnya top reviewer) Rating the helpfulness of reviews
Sharing
Add personal information to reviews or ratings Rating the wish lists of other users Product recommendation via e-mail
Sharing of a product wish list Sharing product details via sosial network Uploading user generated media (misalnya foto produk) User defined tags Groups
Making followers (misalnya Twitter)
2.2.4 Website Menurut Fathansyah (2012, pp. 464) Word Wide Web (WWW) merupakan sistem informasi yang terdistribusi berbasis hypertext. Dokumen yang dikelola dalam web beraneka jenis dan macam. Dapat berupa pengolah kata, tabel basis data, presentasi,lembar kerja yang beragam format diantaranya .pdf , .xls , .doc , .ppt , .html , .dbf
2.2.5 Web Application Menurut Pressman (2015, pp. 9) Pada saat ini Web Application telah berkembang menjadi alat komputasi yang canggih yang tidak hanya memberikan fungsi stand-alone kepada pengguna, tapi sudah terintegrasi dengan database perusahaan dan aplikasi bisnis.
2.2.6 Python Menurut Lutz (2013, pp. 5) Python adalah bahasa pemograman open source yang digunakan untuk aplikasi standalone dan juga aplikasi script atau yang disebut (scripting application) didalam berbagai domain. Python dirancang untuk memberikan kemudahan kepada programer baik dari segi efisiensi waktu, maupun kemudahan dalam pengembangan program dan dalam hal kompabilitas dengan sistem. Python merupakan salah satu bahasa pemrograman tingkat tinggi (High Level Language) yang bersifat interpreter, interaktif, dan berorientasi objek. Di dalam bahasa python sendiri pun terdapat bahasa tingkat rendah (Low Level Languange) yang berhubungan dengan bahasa mesin atau assembly. Python memiliki beberapa kelebihan dibandingkan dengan bahasa pemrograman lainnya, yaitu: 1. Pemrograman tingkat tinggi (High Level Language).
2. Mudah dipelajari. 3. Mudah digunakan. 4. Mudah dalam pengembangan. 5. Manajemen memori dinamis. 6. Pemrograman berorientasi objek (Object Oriented Programming). 7. Platform independent. 8. Bersifat open source dan tidak berbayar.
2.2.7 Fungsi Init Init adalah konstraktor. Method yang pertama kali di eksekusi saat pertama kali membuat instance class, yang akan otomatis dipanggil ketika objek di inisiasi.
2.2.8 Database Menurut Connolly dan Begg (2010, pp. 65), Database adalah kumpulan dari data-data logis yang saling terhubung dan dirancang untuk memenuhi kebutuhan informasi
suatu organisasi. Database digunakan dalam kehidupan sehari-hari baik
secara sadar maupun tidak sadar, contoh dari database yang sering digunakan dalam kehidupan sehari-hari yaitu : 1. Pembayaran dengan kartu kredit 2. Pembayaran paket liburan pada agen travel 3. Pembayaran belanja di supermarket 4. Mencari buku diperpustakaan
2.2.9
NoSQL Menurut Orina (2013, pp. 21) NoSQL merupakan suatu cara untuk penyimpanan
data (datastore) yang dapat menyimpan dan mengambil kendali datanya dapat dilakukan dengan cepat. Berbeda dengan basis data relasional pada umumnya, NoSQL tidak bekerja berdasarkan relasi matematis antar-tabel. NoSQL menjadi banyak digunakan karena tidak semua data berbentuk rasional, sehingga NoSQL dapat menjadi alternatif untuk menangani dan mengelola data-data tersebut. NoSQL mulai dikembangkan karena adanya berbagai kebutuhan, yaitu :
1. Data Store (Penyimpanan Data) Data disimpan dalam ukuran exabyte yang berarti satu miliar gigabytes (GB) data. Menurut Internet.com, jumlah tambahan data yang disimpan pada tahun 2006 adalah 161 exabyte. Pada tahun 2010, jumlah data yang disimpan hampir mencapai 1.000 exabyte yang berarti terjadi peningkatan lebih dari 500% dari 4 tahun sebelumnya. Dengan kata lain, ada banyak data yang disimpan di dunia dan yang hanya akan terus tumbuh. 2. Interconnected Data (Data yang Saling Berhubungan) Sebuah sistem dibangun untuk saling terhubung, 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. 3. Complex Data Structure (Struktur Data yang Rumit) Pada SQL dan RDBMS sangat sulit untuk menangani struktur data yang rumit karena butuh beberapa table relasional dengan berbagai macam kunci. Dalam hal ini, NoSQL dapat dengan mudah menangani struktur hirarkis.
2.2.9.1 Keuntungan NoSQL Menurut Orina (2013, pp. 124) Berbagai keuntungan jika menggunakan NoSQL dalam pengelolaan basis data yaitu: 1. Elastic Scaling (Pola pikir yang fleksibel), dimana hal ini dapat dijelaskan sebagai berikut. Selama berpuluh tahun, DBA (Database Administrator) selalu berpikir untuk membeli server yang lebih besar kemampuannya karena peningkatan volume basis data, dari pada memikirkan penyebaran basis data melalui multiplehosts 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. Big Data (Data yang dikelola volumenya besar), yang disebabkan oleh halhal seperti, 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 perusahaan-perusahaan 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. Database Administrator (DBA) berkurang peranannya pada sistem basis data dengan NoSQL. Seperti diketahui, walaupun selama bertahun-tahun pada 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, 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.2.9.2 Kategori NoSQL Menurut Orina (2013, pp. 121) Kategori NoSQL diantaranya adalah sebagai berikut : 1. Key-Values Stores merupakan suatu hash table yang memiliki key yang teridentifikasi secara unik kemudian key tersebut berada dalam item tertentu. 2. Column Family Stores merupakan suatu tempat yang dibuat sebagai media penyimpanan dan memproses jumlah data dengan ukuran yang sangat besar.
3. Document Databases hampir sama dengan kinerja dari Key-Values Stories, dokumen yang menyimpan kumpulan dari Key-Value Collections memiliki format seperti JSON. 4. Graph Databases merupakan suatu basis data yang terdiri dari kumpulankumpulan node. Berelasi antara notes dan karakteristik dari node itu sendiri.
2.2.9.3 Perbandingan Cara kerja NoSQL dan RDBMS
Gambar 2.14 Perbandingan cara kerja NoSQL dan RDBMS (Sumber: Trend Penggnaan NoSQL untuk Basis Data Non Relasional, Orina, 2013, pp. 123)
Menurut Orina (2013, pp. 124) Dalam gambar tersebut sudah terlihat bahwa dengan menggunakan NoSQL dapat dengan mudah didistribusikan secara otomatis melalui database nodes kemudian mencatat dan menyimpan data database tidak perlu melakukan sinkronisasi antar node sedangkan dalam RDBMS hal tersebut tidak dapat dilakukan.
2.2.10 MongoDB Menurut Hartati & Nugroho (2012, pp. 3) MongoDB tidak seperti sistem basis data relasional, sering disebut sebagai tempat penyimpanan data yang berorientasi pada dokumen dan dapat menyimpan data yang memiliki berbagai tipe. MongoDB
menyimpan data dalam format serupa dengan notasi JSON (Java Script Object Notation) lebih tepat menggunakan format penyimpanan data BSON (Binary JSON) karena, selain menangani data teks, juga mampu untuk menyimpan data biner (binary). { "First_Name": "Adi", "Last_Name" : "Nugroho", "phone_numbers": [ "+0222 1234 5678", "+62 1234 456 678" ] }
Gambar 2.15 Struktur Penyimpanan Data dalam MongoDB (Sumber: MongoDB: Implementasi VLDB (Very Large Database) Untuk Sistem Basis Data Tersebar (Distributed Database),Hartati & Nugroho, 2012, pp. 3)
Sebenarnya MongoDB tidak menggunakan JSON, melainkan BSON (Binary JSON) penggunaan BSON tidak mengubah cara menjalankan data yang ada namun BSON mempercepat pemrosesan serta pencarian data yang diinginkan. Alasan menggunankan BSON karena MongoDB didesain untuk cepat, bukan efisiensi dalam penggunaan space. Adapun kelebihan dari BSON dibandingkan JSON pada umumnya adalah karena elemen-elemennya juga mampu menyimpan data berformat biner (binary). Dalam sistem basis data MongoDB, pengembang tidak perlu memberikan kunci primer
(primary key) untuk setiap elemen yang ada pada masing-masing dokumen, karena secara otomatis setiap elemen dalam dokumen yang masuk ke basis data akan memiliki _id-nya masing-masing yang bernilai unik, yang didapatkan dari sistem (terutama berdasarkan waktu elemen masuk ke sistem serta nama/alamat komputer yang digunakan). Di dalam MongoDB juga terdapat collections yang dikenal sebagai tables di RDBMS. Tetapi collections berbeda dengan tables. Perbedaannya terletak pada isinya. Misalnya terdapat sebuah collection yang bernama DVD. Dalam collection tersebut tidak hanya berisi tentang DVD saja, tetapi dapat juga berisi tentang CD, tapes, dan lainlain. Dengan kata lain, tidak ada batasan dalam memasukan data ke dalam collection tersebut. Sedangkan di RDBMS, table hanya boleh dimasukkan data yang sudah didefinisikan. Di dalam MongoDB, collection sangat sederhana, yaitu pengelompokkan data yang mirip. Misalnya DVD, CD, tape collections memiliki kesamaan yaitu memiliki nama penyanyi, album, dan isi album. Semuanya tergantung pada dokumen apa sajakah yang akan disimpan pada collection yang sama tersebut. Database di dalam MongoDB dapat disebut dengan collections of collections, yaitu kumpulan dari beberapa collections. MongoDB merupakan sistem basis data yang ideal untuk implementasi sitem tersebar. Hal ini disebabkan selain karena kemampuannya menangani data yang jumlahnya sangat banyak, juga karena MongoDB mampu menangani sejumlah data yang tersebar di beberapa komputer sekaligus dengan cara sedemikian rupa sehingga beban masing-masing server akan merata (load balancing). Lebih bagus lagi, MongoDB juga memungkinkan pemograman “memandang” keseluruhan data pada sistem tersebar itu secara logika bersifat tunggal. MongoDB akan mengelola data dalam sistem tersebar diluar pengetahuan pemograman sehingga pemograman bisa lebih berfokus pada logika bisnis yang diperlukan aplikasi, serta memikirkan juga dimana data yang dibutuhkan aplikasi berada. Hal yang memungkinkan terjadinya transparasi basis data dari pemograman data yang memungkinkan beban server yang merata adalah konsep shard. Shard sesungguhnya adalah himpunan bagian dari keseluruhan data dimana pada dasarnya serupa dengan partisi horizontal seperti yang dikenal pada sistem basis data tersebar selama ini.
2.2.11 PyMongo Distribusi PyMongo mengandung tools untuk berinteraksi dengan database MongoDB
dari Python. Package PyMongo merupakan sebuah driver dari bahasa
Python ke database MongoDB.
2.2.12 Framework Menurut Septian (2011, pp. 7) Framework sebagaimana arti didalam Bahasa Indonesia yaitu kerangka kerja yang dapat dikatakan sebagai kumpulan dari suatu library (class) yang bisa diturunkan ataupun dapat juga langsung digunakan fungsinya oleh modul-modul serta fungsi yang akan dikembangkan. Framework juga dapat dikatakan sekumpulan library yang diorganisasikan didalam sebuah rancangan arsitektur untuk memberikan kecepatan, ketepatan, kemudahan dan konsistensi didalam pengembangan aplikasi yang sedang dibuat.
2.2.13 Bottle Bottle merupakan kerangka web untuk python yang bekerja dengan cepat, sederhana dalam penggunaan, dan memudahkan proses pengembangan web application dengan ringan. Hal ini didistribusikan sebagai modul file tunggal dan tidak memiliki dependensi selain standar library pada python. Bottle memiliki beberapa kegunaan seperti, dapat digunakan sebagai standalone web server, mendukung JSON data client, dan menyambungkan ke database dan fitur lainnya.
2.3
Hasil Penelitian atau Produk Sebelumnya Dilihat dari beberapa jurnal terdahulu yang juga membahas tentang aplikasi
sejenis, maka akan dijelaskan lebih terperinci seperti sebagai berikut : 1. Yovita Tunardi dan Rita Layona (NoSQL Technology in Android Based Mobile Chat Application using MongoDB, 2014) Melakukan penelitian tentang “NoSQL Technology in Android Based Mobile Chat Application using MongoDB”. Teknologi relational database sangat sering digunakan
dalam
pengembangan
aplikasi
karena
keunggulannya
yang
terstruktur dan memungkinkan dimanipulasi dengan mudah. Namun, seiring dengan perkembangan zaman, teknologi tersebut masih dirasa kurang karena data yang semakin banyak dan data harus dapat diakses dengan cepat sehingga kemudian muncul teknologi baru yaitu non-relational database atau yang sering dikenal dengan istilah database NoSQL. Seiring dengan berkembangnya teknologi penyimpanan data yang sebelumnya bersifat relational mulai berubah ke arah non-relational atau yang sering dikenal dengan istilah teknologi NoSQL. Penyimpanan data pada NoSQL tidak lagi didasarkan pada relasi antar tabel tapi menggunakan metode lain yang salah satunya adalah document-oriented. Metode tersebut diaplikasikan secara khusus pada MongoDB. Konsep tersebut membawa harapan baru karena keunggulannya yang dapat menangani data yang sangat besar dengan performa yang menjanjikan dan sangat cocok untuk pengembangan sistem yang agile. Tujuan dari penelitian ini adalah mengukur performa dari NoSQL khususnya MongoDB dengan cara mengimplementasikannya ke dalam mobile chat application yang berbasis Android. Hasil dari penelitian ini adalah sebuah mobile chat application yang menggunakan MongoDB sebagai teknologi penyimpanan datanya. Melalui penelitian ini dapat ditarik simpulan bahwa penerapan teknologi NoSQL khususnya MongoDB memberikan keunggulan khusus dalam hal penyimpanan data yang lebih ringan dan pengaksesan data yang lebih cepat. 2. Kartika Kurniarin (Penerapan MongoDB dan CodeIgniter pada Permainan Kokology, 2012) Melakukan penelitian tentang “Penerapan MongoDB dan CodeIgniter pada Permainan Kokology”. MongoDB merupakan basis data NoSQL yang dikembangkan sejak Oktober 2007 oleh 10Gen dan dirilis publik sejak Februari 2009. MongoDB merupakan NoSQL dengan konsep document oriented. Dalam tiap dokumen MongoDB tidak harus memiliki struktur yang sama. Karakteristik MongoDB yang ini dianggap cocok jika diimplementasikan dengan permainan kokology yang tiap skenarionya memiliki struktur yang berbeda. MongoDB mendukung beberapa bahasa pemrograman antara lain bahasa pemrograman PHP sedangkan Codeigniter merupakan kerangka kerja dengan bahasa
pemrograman PHP. Kerangka kerja Codeigniter banyak digunakan oleh pengembang aplikasi berbasis web yang pemula. Untuk untuk mengetahui apakah MongoDB dapat diintegrasikan dengan Codeigniter maka dibuat aplikasi permainan kokology dengan menggunakan MongoDB dan Codeigniter. 3. Alexander A S Gunawan dan Jimmy Linggarjati (Pengembangan Program Aplikasi Enchanced Machine Control dengan Python untuk Metode Interpolasi Newton, 2012). Melakukan penelitian tentang “Pengembangan Program Aplikasi Enchanced Machine Control dengan Python untuk Metode Interpolasi Newton”. Masalah yang dihadapi dunia industri saat ini ialah mesin yang kurang fleksibel untuk diubahsesuaikan karena dirancang oleh manufaktur yang berdasarkan standar tertentu. Penelitian ini mencoba untuk mengembangkan program untuk mesin CNC (Komputer Numerically Controlled) agar mesin tersebut dapat menjalankan metode interpolasi Newton menggunakan bahasa pemrograman Python. Platform yang digunakan dalam mesin CNC ini adalah perangkat lunak EMC (Enhanced Machine Control) dengan menggunakan GUI (Graphical User Interface) AXIS pada sistem operasi Linux Ubuntu. Metode interpolasi Newton digunakan untuk membentuk suatu kurva dengan sejumlah titik tertentu. Dengan mengubah kurva tersebut menjadi G-Code yang dapat dibaca oleh mesin CNC, mesin tersebut dapat bergerak mengikuti kurva yang sudah dibuat pada perangkat lunak. Penelitian ini merupakan contoh bagaimana cara untuk mengubahsesuaikan mesin CNC sehingga dapat sesuai dengan kebutuhan pemakai. Hasil pengujian dapat berjalan dengan baik sampai dengan empat pasang data masukan dan untuk masukan yang lebih banyak akan menimbulkan osilasi pada kurva hasil interpolasi.