BAB 2 LANDASAN TEORI Landasan teori dan dasar pengetahuan penelitian ini adalah metoda-metoda terkait dengan: bahasa pemrograman, sejarah PHP, algoritma sorting, kompleks algoritma, algoritma merge sort, serta algoritma selection sort. Pelaksana dari penelitian ini menggunakan referensi yang berhubungan dengan objek penelitian. Refrensi tersebut diambil dari beberapa penelitian sebelumnya yang berhubungan dengan penelitian ini, antara lain: 1.
Analisis perbandingan algortima bubble sort, merge sort, dan quick sort dalam proses pengurutan kombinasi angka dan huruf, Penulis Anisya sonita
2.
Analisis algoritma insertion sort, merge sort, dan implementasinya dalam Bahasa pemograman C++, Penulis Arief Hendra saptadi
Kedua referensi tersebut memiliki kelebihan dan kekuranan yang tersaji pada Tabel 1 berikut: Tabel 1 Perbandingan kelebihan dan kekurangan penelitian Judul penelitan
Hasil penelitian
Kelebihan
Dari 1. hasil A analisa
Abstrak jelas
Kekurangan Perhitungan
selisih
Analisis perbandingan algortima
perbandingan
sehingga
waktu
dalam
bubble sort, merge sort, dan
Algoritma Bubble
dengan
tidak
di
proses
Sort, Quick Sort,
membaca
secara detil
pengurutan kombinasi angka dan
dan Merge Sort,
abstraknya saja
huruf
dapat disimpulkan
pembaca dapat
bahwa Algoritma
mengetahui
Quick
hasil
quick
sort
dalam
memiliki
Sort waktu
ujian
jelaskan
dari
penelitian
yang lebih cepat dan Bubble Sort membutuhkan waktu komputasi yang paling lama
6 http://digilib.mercubuana.ac.id/
Tabel 2 Lanjutan perbandingan kelebihan dan kekurangan penelitian Judul penelitan
Hasil penelitian Dari 1.
A
hasil
Kelebihan
Kekurangan
Memaparkan
Abstrak terlalu singkat
secara
dan tidak detil
Analisis algoritma insertion sort,
pengujian
jelas
merge sort, dan implementasinya
diketahui
bahwa
dan
dalam Bahasa pemograman C++
algoritma
merge
latar belakang
lengkap
sort lebih cepat
dari
dibandingankan
permasalahan
insert sort untuk
yang ada dan
data >1000
solusi yang di tawarkan dalam penelitian
2.1 Bahasa Pemrograman Bahasa pemrograman adalah notasi yang digunakan untuk menulis program (komputer). Bahasa ini dibagi menjadi tiga tingkatan yaitu bahasa mesin, bahasa tingkat rendah dan bahasa tingkat tinggi. PHP adalah sebuah kepanjangan dari Hypertext Preprocessor, PHP atau Hypertext Preprocessor ialah sebuah bahasa pemrograman yang berupa kode atau script yang bisa ditambahkan ke dalam Bahasa Pemrograman HTML. PHP itu sendiri sering kali digunakan untuk hal merancang, membuat dan juga memprogram sebuah website. PHP juga sangat sering digunakan untuk membuat sebuah ataupun beberapa CMS. CMS ialah sebuah software atau perangkat lunak yang mempunyai kegunaan untuk memanipulasi semua atau beberapa isi dari sebuah halaman website (NuSphere 2017). 2.2 Sejarah PHP Pembuat dan pengembang bahasa pemrograman PHP adalah seorang programmer laki-laki yang menempat dan lahir di Denmark. Programmer ini bernama Rasmus Lerdorf yang lahir pada tahun 1968 tepatnya pada 22 November 1968. Bahasa pemrograman PHP dibuat dan dikembangkan oleh Rasmus Lerdof pada awal tahun 1995 (NuSphere 2017).
7 http://digilib.mercubuana.ac.id/
PHP digunakan dan dijalankan di sebuah halaman website untuk mengolah isi data dari website tersebut yang akan dilihat oleh para pengunjung dari website tersebut. PHP dengan HTML diibaratkan sebagai dua komponen yang saling bekerja sama dan menyatu yang tidak dapat dipisahkan. Hal tersebut karena kedua bahasa pemrograman ini yaitu PHP dan HTML saling melengkapi semua data dan isi dari suatu website. Script yang terdiri dari komponen PHP menyatu dengan script HTML. PHP mempunyai kegunaan juga untuk membuat sebuah halaman utama atau homepage dari sebuah website menjadi lebih bagus dan bersifat dinamis serta elegan. Bahasa pemrograman PHP dapat memudahkan Web Developer yang menggunakan MySQL untuk melihat informasi detail mengenai websitenya dan data-data pengunjung serta data-data lainnya secara otomatis akan disimpan di dalam database. PHP sendiri
bisa
juga
digunakan
untuk
membuat
game
di
website
(NuSphere 2017). 2.3 Algoritma Menurut corrmen et al. 2001 menjelaskan bahwa algoritma adalah deretan instruksi yang jelas untuk memecakan masalah, yaitu untuk memperoleh keluaran yang diinginkan dari suatu masukan. Ada 3 definisi tentang algoritma yang dijelaskan saputra et al. 2010 diantaranya : a) Teknik penyusunan langkah-langkah penyelesaian masalah dalam bentuk kalimat dengan jumlah kata terbatas tetapi tersusun secara logis dan sistematis b) Suatu prosedur yang jelas untuk menyelesaikan suatu persoalan dengan menggunakan langkah-langkah tertentu dan terbatas jumlahnya c) Susunan
langkah
yang
pasti,
yang
bila
diikuti
maka
akan
mentransformasi data input menjadi output yang berupa informasi Algoritma merupakan suatu prosedur untuk menyelesaikan suatu masalah yang tersusun secara logis dan sistematis serta akan memperoleh data masukan menjadi keluaran yang diinginkan berupa informasi.
8 http://digilib.mercubuana.ac.id/
2.4 Algoritma Sorting Algoritma sorting adalah kumpulan langkah-langkah penyelesaian dalam suatu masalah dengan metode tertentu, sedangkan sorting didefinisikan sebagai pengurutan sejumlah data berdasarkan nilai kunci tertentu untuk mengurutkan nilai
dari
yang terkecil
(ascending) atau sebaliknya
(descending) (Khalid et al., 2013). 2.5 Algoritma Merge Sort Menurut Arief (2013), merge sort adalah metode pengurutan yang menggunakan pola divide and conquer. Strateginya adalah dengan membagi sekelompok data yang akan diurutkan menjadi beberapa kelompok kecil terdiri dari maksimal dua nilai untuk dibandingkan dan digabungkan lagi secara keseluruhan. Langkah-langkah kerja dalam merge sort: 2. Divide, yaitu memilah elemen – elemen dari rangkaian data menjadi dua bagian dan mengulangi pemilahan hingga satu elemen terdiri maksimal dua nilai 3. Conquer, dengan mengurutkan masing-masing elemen 4. Kombinasi, yaitu mengkombinasikan dua bagian tersebut secara rekursif untuk mendapatkan rangkaian data berurutan. Proses rekursi berhenti jika mencapai elemen dasar. Hal ini terjadi bilamana bagian yang akan diurutkan menyisakan tepat satu elemen. Sisa pengurutan satu elemen tersebut menandakan bahwa bagian tersebut telah terurut sesuai rangkaian (Arief, 2013). 2.6 Algoritma Selection Sort Selection sort adalah jenis perbandingan di tempat. Ini memiliki kompleksitas O (n2), membuatnya tidak efisien dalam daftar besar, dan umumnya berperforma lebih buruk daripada jenis penyisipan serupa. Jenis seleksi dicatat karena kesederhanaannya, dan juga memiliki keunggulan kinerja dibandingkan algoritma yang lebih rumit dalam situasi tertentu. Algoritma menemukan nilai minimum, menukarnya dengan nilai pada posisi pertama, 9 http://digilib.mercubuana.ac.id/
dan mengulang langkah-langkah ini untuk sisa daftar. Itu tidak lebih dari n swap, dan dengan demikian berguna di mana swapping sangat mahal (Khan Academy 2017). Menurut Sultannullah (2011), metode selection sort merupakan perbaikan dari metode bubble sort dengan mengurangi jumlah perbandingan. Selection sort merupakan metode pengurutan dengan mencari nilai data terkecil dimulai dari data diposisi 0 hingga diposisi N-1. Jika terdapat N data dan data terkoleksi dari urutan 0 sampai dengan N-1 maka algoritma pengurutan dengan metode selection sort adalah sebagai berikut: 1. Cari data terkecil dalam interval j = 0 sampai dengan j = N-1 2. Jika pada posisi pos ditemukan data yang terkecil, tukarkan data diposisi pos dengan data di posisi i jika k. 3. Ulangi langkah 1 dan 2 dengan j = j+i sampai dengan j = N-1, dan seterusnya sampai j = N - 1. 2.7 Kompleksitas (T(n)) Algoritma Kompleksitas suatu algoritma merupakan ukuran seberapa banyak komputasi yang dibutuhkan algoritma tersebut untuk mendapatkan hasil yang diinginkan (Wisudawan dan Fahmy, 2007). Hal-hal yang mempengaruhi kompleksitas waktu: 1. Waktu yang dibutuhkan unutk menjalankan algoritma tersebut 2. Ruang memori yang dibutuhkan untuk menjalankan algoritma yang berkaitan dengan struktur data dari program Kompleksitas mempengaruhi performa atau kinerja dari suatu algoritma. Kompleksitas dibagi menjadi 3 jenis yaitu, worst case, best case, dan average case. Masing-masing jenis kompleksitas ini menunjukkan kecepatan atau waktu yang dibutuhkan algoritma untuk mengeksekusi sejumlah kode (Gibson, 2012). Menurut Tjaru (2010) kompleksitas algoritma dinyatakan secara asimptotik dengan notasi big-O. Jika kompleksitas waktu untuk menjalankan suatu algoritma dinyatakan dengan T(n), dan memenuhi:
10 http://digilib.mercubuana.ac.id/
T(n) ≤ C(f(n)) untuk n ≥ n0, maka kompleksitas dapat dinyatakan dengan T(n) = O(f(n) Menurut Tjaru (2010) menyatakan bahwa terdapat dua jenis penggunaan notasi Big O, yaitu infinite asymptotics dan infinitesimal asymptotics. Perbedaan kedua jenis penggunaan notasi ini hanya pada aplikasi. Sebagai contoh, pada infinite asymptotics dengan persamaan: T(n) = 2n2 -2n +2 Untuk n yang besar, pertumbuhan T(n) akan sebanding dengan n2 dan dengan mengabaikan suku yang tidak mendominasi, maka ditulis: T(n) = O(n2) Pada infinitesimal asymptotics, Big O digunakan untuk menjelaskan kesalahan dalam aproksimasi untuk sebuah fungsi matematika, sebagai contoh: 𝑥
(𝑒) 𝑋 = 1 + + 1
𝑥2 2
+ 0 | (𝑥 3 ), 𝑥 → 0
Kesalahannya memiliki selisih: (𝑒)𝑋
𝑥 𝑥2 − (1 + + ) 1 2
2.8 Notepad ++
Gambar 2 Notepad++ v5.9 (Sumber: http://www.notepad-plus-plus.org/) http://digilib.mercubuana.ac.id/
11
Notepad++ adalah program aplikasi pengembang yang berguna untuk mengedit teks dan skrip kode pemrograman. Versi terbaru program ini adalah Notepad++ v5.9, yang dirilis pada tanggal 06 April 2012. Software Notepad++ dibuat dan dikembangkan oleh tim Notepad++ (Supono dan Putratama, 2016). Perangkat lunak komputer ini memiliki kelebihan pada peningkatan kemampuan sebuah program text editor, lebih dari sekedar program Notepad bawaan Windows. Notepad++ bisa mengenal tag dan kode dalam berbagai bahasa pemrograman. Fitur pencarian tingkat lanjut dan pengeditan teks yang tersedia juga cukup ampuh, sangat membantu tugas seorang programmer atau developer dalam menyelesaikan tulisan kode programnya. Program Notepad++ banyak diaplikasikan dan digunakan oleh kalangan pengguna komputer di bidang pemrograman aplikasi desktop dan web. Notepad++ merupakan software gratis (open source). Notepad++ dapat dijalankan di sistem operasi Win2K, Windows XP, Vista, dan Windows 7 (Supono dan Putratama, 2016). Info Software Pengembang Notepad++, sebagai berikut
Jenis: Aplikasi Pengembang
Fungsi dan kegunaan: Software pengedit teks dan kode program
Target kalangan penggguna: Pemrogram aplikasi dan pengembang web
Pengembang: Notepad++ Team
Versi terbaru: Notepad++ v5.9
Tanggal rilis: 06 April 2012
Halaman info produk: http://www.notepad-plus-plus.org/
Download: Unduh Notepad++ v5.9 di sini
Ukuran file sumber: 5,6 MB
Harga: Gratis
2.9 XAMPP Pengertian XAMPP adalah perangkat lunak (free software) bebas, yang mendukung untuk banyak sistem operasi, yang merupakan kompilasi dari 12 http://digilib.mercubuana.ac.id/
beberapa program. Nama XAMPP merupakan singkatan dari X (empat sistem operasi apapun), Apache, MySQL, PHP dan Perl. Fungsi XAMPP sebagai server yang berdiri sendiri (localhost), yang terdiri beberapa program antara lain Apache HTTP Server, MySQL database, dan penerjemah bahasa yang ditulis dengan bahasa pemrograman PHP dan Perl (Pattianakotta, 2015). Program ini tersedia dalam General Public License (GNU) dan bebas, yang merupakan web server yang mudah digunakan sehingga dapat menampilkan halaman web yang dinamis. XAMPP dapat diperoleh dengan mengunduh langsung dari website resmi (Pattianakotta, 2015). Program yang terdapat dalam XAMPP, berupa server HTTP Apache atau server Web/WWW Apache. Server web yang dapat dijalankan di banyak sistem operasi seperti (Unix, BSD, Linux, Microsoft Windows dan Novell Netware serta platform lainnya) yang berguna untuk melayani dan memfungsikan situs web. Server HTTP merupakan protokol yang digunakan untuk
melayani
fasilitas
web/www
ini
menggunakan
HTTP
(Pattianakotta, 2015). phpMyAdmin adalah perangkat lunak bebas yang ditulis dalam bahasa pemrograman PHP yang digunakan untuk menangani administrasi MySQL melalui World Wide Web (jejaring jagat jembar). phpMyAdmin mendukung berbagai operasi MySQL, diantaranya (mengelola basis data, tabel-tabel, bidang (fields), relasi (relations), indeks, pengguna (users), perijinan (permissions), dan lain-lain. Pada dasarnya, mengelola basis data dengan MySQL harus dilakukan dengan cara mengetikkan baris-baris perintah yang sesuai (command line) untuk setiap maksud tertentu. Jika seseorang ingin membuat basis data (database), ketikkan baris perintah yang sesuai untuk membuat basis data (Suharyo, 2013). phpMyAdmin merupakan bagian untuk mengelola basis data MySQL yang ada di komputer. phpMyAdmin, dapat membuat database, membuat tabel, mengisi data, dan lain-lain dengan mudah, tanpa harus menghafal baris perintahnya. Ketikkan alamat http://localhost/phpmyadmin pada browser, maka akan
13 http://digilib.mercubuana.ac.id/
muncul halaman phpMyAdmin, selanjutnya dapat membuat (create) basis data baru, dan mengelolanya (Suharyo, 2013). 2.10 MySQL MySQL adalah sebuah perangkat lunak sistem manajemen basis data SQL (bahasa Inggris: database management system) atau DBMS yang multithread, multi-user, dengan sekitar enam juta instalasi di seluruh dunia. MySQL AB membuat MySQL tersedia sebagai perangkat lunak gratis dibawah lisensi General Public License (GPL), tetapi mereka juga menjual dibawah lisensi komersial untuk kasus-kasus dimana penggunaannya tidak cocok dengan penggunaan GPL (Pattianakotta, 2015). MySQL dimiliki dan disponsori oleh sebuah perusahaan komersial Swedia MySQL AB, di mana memegang hak cipta hampir atas semua kode sumbernya. Kedua orang Swedia dan satu orang Finlandia yang mendirikan MySQL AB adalah: David Axmark, Allan Larsson, dan Michael "Monty" Widenius (Pattianakotta, 2015). 2.11 Diagram Alir (flowchart) Diagram Alir (flowchart) adalah penggambaran secara grafik dari langkah-langkah dan urutan-urutan prosedur dari suatu program. Flowchart menolong analis dan programmer untuk memecahkan masalah kedalam segmen-segmen yang lebih kecil dan menolong dalam menganalisis alternatif-alternatif lain dalam pengoperasian. Diagram alir ini merupakan suatu urutan-urutan logika atau langkah-langkah dalam pembuatan program yang berguna untuk mempermudah dalam menganalisa kode program (Rosita, 2016).
14 http://digilib.mercubuana.ac.id/
Gambar 3 Simbol Flowchart (Sumber: www.mbaskool.com) 2.12 Unified Modelling Language (UML) Menurut Rosita (2016), Unified Modelling Language (UML) adalah suatu alat untuk memvisualisasikan dan mendokumentasikan hasil analisa dan desain yang berisi sintak dalam memodelkan sistem secara visual. UML juga merupakan satu kumpulan konvensi pemodelan yang digunakan untuk menentukan atau menggambarkan sebuah sistem software yang terkait dengan objek. Dengan menggunakan model, diharapkan dapat mempermudah penulis dalam membangun, menganalisis serta mengembangkan aplikasi yang sedang dibuat. Ada beberapa macam jenis UML, dalam penulisan laporan dan pembangunan aplikasi ini, penulis hanya menggunakan 3 jenis UML yaitu use case diagram, activity diagram dan sequence diagram (Rosita, 2016). Untuk lebih lengkapnya tentang berbagai tipe dari diagram UML bisa dilihat pada Tabel 2 di bawah ini.
15 http://digilib.mercubuana.ac.id/
Tabel 3 Tipe diagram UML Diagram
Tujuan
Activity
Perilaku procedural dan parallel
Class
Class, fitur dan relasinya
Communication
Interaksi diantara objek. Lebih menekankan ke link
Component
Struktur dan koneksi dari komponen
Composite Structure Deployment Interaction Overview
Dekomposisi sebuah class saat runtime Penyebaran/ instalasi ke klien Gabungan antara activity dan sequence diagram
Object
Contoh konfigurasi instance
Package
Struktur hierarki saat kompilasi
Sequence
Interaksi antar objek. Lebih menekankan pada urutan
State Machine
Bagaimana event mengubah sebuah objek
Timing
Interaksi antar objek. Lebih menekankan pada waktu
Use Case
Bagaimana user berinteraksi dengan sebuah sistem.
2.13
Use Case diagram Menurut Dharwiyanti (2003), use case diagram merupakan pemodelan untuk kelakuan (behavior) sistem informasi yang akan dibuat. Use case mendekripsikan sebuah interaksi antara suatu atau lebih aktor dengan sistem informasi yang akan dibuat. Secara kasar use case digunakan untuk mengetahui fungsi apa saja yang ada di didalam sebuah sistem informasi dan siapa saja yang berhak menggunakan fungsi-fungsi itu Untuk contoh penggunaan use case diagram dapat dilihat pada Gambar 4. Use case diagram terdiri dari:
16 http://digilib.mercubuana.ac.id/
Gambar 4 Contoh use case diagram 1. Use Case Use case dibuat berdasarkan keperluan actor mengenai hal yang dilakukan actor. Use case diberi nama yang menyatakan apa hal yang dicapai dari hasil interaksinya dengan actor. Use case dinotasikan dengan gambar (horizontal elipse), penamaan use case biasanya menggunakan kata kerja. 2. Actor Actor menggambarkan orang, sistem, atau entitas eksternal yang menyediakan
atau
menerima
informasi
dari
sistem
serta
menggambarkan sebuah tugas atau peran dan bukannya posisi sebuah jabatan. Actor memberi input atau menerima informasi dari sistem. 3. Relationship Menggambarkan bagaimana actor terlibat dalam use case. Ada 4 jenis relasi yang bisa timbul pada use case diagram, yaitu: a. Association antara actor dan use case b. Axssociations antara use case c. Generalization atau Inheritence antara use case d. Generalization atau Inheritence antara actors e. System Boundary Boxes
17 http://digilib.mercubuana.ac.id/
Digambarkan dengan kotak disekitar use case, untuk menggambarkan jangkauan sistem anda. Biasanya digunakan apabila memberikan beberapa alternatif sistem yang dapat dijadikan pilihan. Alasan menggunakan use case diagram pada perancangan aplikasi pada penelitian kali ini adalah membantu memahami persyaratan fungsional sebuah sistem serta mewakili gambaran eksternal sebuah sistem (Dharwiyanti, 2003). 2.14
Activity Diagram Dharwiyanti (2003), activity diagram atau diagram aktivitas yaitu salah satu jenis diagram pada UML yang dapat memodelkan proses-proses apa saja yang terjadi pada sistem. Activity diagram dipakai pada model bisnis untuk memperlihatkan urutan aktifitas proses bisnis. Diagram aktivitas menggambarkan aktivitas sistem bukan apa yang dilakukan actor. Activity diagram sangat bermanfaat apabila kita membuat diagram ini terlebih dahulu dalam memodelkan sebuah proses untuk membantu memahami proses secara keseluruhan. Berikut terlihat pada Gambar 5 adalah gambar perancangan sistem menggunakan activity diagram.
Gambar 5 Contoh activity diagram (Sumber: www.lucidchart.com) 18 http://digilib.mercubuana.ac.id/
2.15
Sequence diagram Dharwiyanti (2003), sequence diagram yaitu salah satu jenis diagram pada UML yang menjelaskan interaksi objek yang berdasarkan urutan waktu, sequence diagram juga dapat menggambarkan urutan atau tahapan yang harus dilakukan untuk dapat menghasilkan sesuatu seperti pada use case diagram.
Gambar 6 Contoh squence diagram Sequence diagram menjelaskan interaksi objek yang disusun berdasarkan urutan waktu. Secara mudahnya sequence diagram adalah gambaran tahap demi tahap, termasuk kronologi (urutan) perubahan secara logis yang seharusnya dilakukan untuk menghasilkan sesuatu (Dharwiyanti, 2003). Banyaknya diagram sekuen yang harus digambar adalah minimal sebanyak pendefinisian use case yang memiliki proses sendiri atau yang penting semua use case yang telah didefinisikan interaksi jalannya pesan sudah dicakup pada diagram sekuen sehingga semakin banyak use case yang didefinisikan maka diagram sekuen yang harus dibuat juga semakin banyak (Dharwiyanti, 2003).
19 http://digilib.mercubuana.ac.id/
2.16 Metode Pengujian Black Box Menurut Pressman (2005), pengujian Black Box merupakan proses menjalankan program dengan maksud menemukan kesalahan dan berfokus pada persyaratan fungsional perangkat lunak. Pengujian ini memungkinkan perekayasa perangkat lunak mendapatkan serangkaian kondisi input yang sepenuhnya menggunakan semua persyaratan fungsional untuk suatu program. Pengujian dimaksudkan untuk mengetahui apakan fungsi-fungsi, masukan dan keluaran dari perangkat lunak sesuai dengan spesifikasi yang dibutuhkan. Pengujian black box berusaha untuk menemukan kesalahan dalam kategori sebagai berikut: 1. Fungsi-fungsi yang tidak benar atau hilang 2. Kesalahan interface 3. Kesalahan dalam struktur data atau akses database eksternal 4. Inisialisasi dan kesalahan terminasi 5. Validitas fungsional 6. Kesensitifan sistem terhadap nilai input tertentu 7. Batasan dari suatu data
Gambar
7
Sistem kerja dai teknik pengujian (Sumber: https://widuri.raharja.info)
black
box
20 http://digilib.mercubuana.ac.id/