BAB II LANDASAN TEORI
2.1
Pengertian Sistem
Menurut Baridwan (1993, p.169), perancangan sistem terutama ditujukan untuk menghilangkan kekurangan atau kelemahan sistem yang sedang berlaku, dan meningkatkan kelebihan sistem yang berlaku. Ada dua maksud atau tujuan utama dari perancangan sistem yaitu : 1. Untuk memenuhi kebutuhan system. 2. Untuk memberikan gambaran yang jelas dan rancangan bangunan yang lengkap kepada pemrogram komputer dan ahli-ahli teknik lainnya yang terlibat. Dalam mendefinisikan sistem terdapat dua kelompok pendekatan, yaitu pendekatan yang menekankan pada prosedur dan pendekatan yang menekankan pada komponen atau elemennya. Pendekatan sistem yang lebih menekankan pada prosedur mendefinisikan sistem sebagai berikut: suatu sistem adalah jaringan kerja dari prosedur-prosedur yang saling berhubungan, berkumpul bersama-sama untuk melakukan suatu kegiatan atau untuk menyelesaikan suatu sasaran yang tertentu, Dari definisi sistem tersebut, terlebih dahulu harus dipahami apakah sebenarnya prosedur-prosedur itu. Suatu prosedur adalah urutanurutan yang tepat dari tahaptahapan instruksi untuk menerapkan apa yang harus dikerjakan, siapa yang mengerjakannya, kapan dikerjakan, dan bagaimana mengerjakannya. Pendekatan sistem yang lebih menekankan pada elemen atau komponennya mendefinisikan sistem sebagai berikut: sistem adalah kumpulan dari elemen-elemen yang berinteraksi untuk mencapai suatu tujuan terentu. Dengan demikian dapat disimpulkan bahwa sistem adalah sebuah tatanan yang terdiri dari sejumlah komponen fungsional dengan satuan fungsi atau tugas khusus yang saling berhubungan dan secara bersama-sama bertujuan untuk memenuhi suatu proses atau pekerjaan tertentu.
2.2
Rekayasa Piranti Lunak ( Software Engineering )
Pressman (2005) menyimpulkan, rekayasa piranti lunak adalah salah satu disiplin yang mengintegrasikan antara proses, metode, dan tools pada sebuah pengembangan piranti
lunak komputer. Tujuan dari rekayasa piranti lunak tersebut adalah untuk menghasilkan piranti lunak yang ekonomis yang dapat diandalkan. Rekayasa piranti lunak merupakan suatu proses pemecahan masalah pelanggan dengan pengembangan sistematik dan evolusi dari sistem piranti lunak yang besar, berkualitas tinggi dan memenuhi batasan biaya, waktu serta batasan-batasan lainnya.
2.2.1 Pengertian Piranti Lunak Pada dasarnya piranti lunak digunakan oleh semua orang di dunia industri baik secara langsung maupun tidak langsung. Piranti lunak memegang dua peranan, yakni sebagai produk dan sebagai sarana untuk membuat sebuah produk. Menurut Pressman (2005), piranti lunak adalah produk yang dirancang dan dibangun oleh software engineer. Produk ini meliputi program-program yang dijalankan dalam komputer, dan dokumen-dokumen baik dalam bentuk hard-copy maupun virtual dan data yang mengkombinasikan angka, teks, serta meliputi representasi dari informasi gambar, video, dan audio. Berikut ini adalah beberapa karakteristik piranti lunak jika dibandingkan dengan produk lain seperti hardware (piranti keras) : 1.
Piranti lunak bersifat intangible, kita tidak dapat merasakan bentuk dari piranti lunak dan perancangan dari piranti lunak sulit untuk dibayangkan.
2.
Mudah untuk mengembangkan suatu piranti lunak, akan tetapi sulit untuk mengembangkan suatu piranti lunak yang mudah dimengerti dan mudah dimodifikasi.
3.
Piranti lunak tidak dapat rusak akan tetapi dapat ketinggalan zaman.
2.2.2 Proses Rekayasa Piranti Lunak Rekayasa perangkat lunak adalah suatu disiplin ilmu yang membahas semua aspek produksi perangkat lunak, mulai dari tahap awal requirement capturing (analisa kebutuhan pengguna), specification (menentukan spesifikasi dari kebutuhan pengguna), desain, coding, testing sampai pemeliharaan sistem setelah digunakan. Rekayasa piranti lunak difokuskan pada penentuan macam-macam elemen, penganalisaan, perancangan dan pengorganisasian elemen-elemen tersebut kedalam sebuah sistem
hingga
menjadi
sebuah
produk,
layanan,
mentransformasikan informasi atau sebagai pengendali.
atau
teknologi
yang
dapat
Pressman (2005) mengemukakan bahwa dalam rekayasa perangkat lunak terdapat dua kelas pemodelan: analysis models dan design models. Analysis models merepresentasikan kebutuhan-kebutuhan pelanggan dengan tiga domain yang berbeda: domain informasi, domain fungsi, dan domain behavioral. Design models merepresentasikan karakteristik dari piranti lunak untuk mempermudah pengembang dalam mengembangkan piranti lunaknya secara efektif: arsitekturnya (the architecture), antarmuka pemakainya (the user interface), dan detail level komponennya (component-level detail). Dalam rekayasa piranti lunak terdapat suatu pendekatan yang disebut
waterfall.
Waterfall disebut juga sebagai classic life cycle atau linear sequential model. Model ini merupakan paradigma rekayasa perangkat lunak yang paling tua dan paling banyak dipakai. Model ini mengusulkan sebuah pendekatan perkembangan perangkat lunak yang sistematik dan sekunsial. Berikut di bawah ini rangkaian aktivitas proses dalam model Waterfall (Pressman, 1997:25): 1.
Tahapan Rekayasa Sistem Tahapan ini sangat menekan pada masalah pengumpulan kebutuhan pengguna pada tingkatan sistem dengan menentukan konsep sistem beserta antarmuka yang menghubungkannya dengan lingkungan sekitar. Hasilnya berupa spesifikasi sistem.
2.
Tahapan Analisis Pada tahap ini dilakukan pengumpulan kebutuhan elemen-elemen di tingkat perangkat lunak. Dengan analisis harus dapat ditentukan domain-domain data atau informasi, fungsi, proses, atau prosedur yang diperlukan beserta unjuk kerjanya, dan antarmuka. Hasilnya berupa spesifikasi kebutuhan perangkat lunak.
3.
Tahapan Perancangan Pada tahap perancangan, kebutuhan-kebutuhan perangkat lunak, yang dihasilkan pada tahap analisis, ditransformasikan ke dalam bentuk arsitektur perangkat lunak yang memiliki karakteristik mudah dimengerti dan tidak sulit untuk diterapkan.
4.
Tahapan Pemrograman Tahap ini melakukan penerapan hasil rancangan ke dalam baris-baris kode program yang dapat dimengerti oleh komputer.
5.
Tahapan Pengujian
Setelah perangkat lunak selesai diterapkan, pengujian dapat segera dimulai. Pengujian terlebih dahulu dilakukan pada setiap modul. Jika tidak ada masalah, modul tersebut akan diintegrasikan hingga membentuk perangkat lunak secara utuh. Kemudian dilakukan pengujian di tingkat perangkat lunak yang memfokuskan pada masalahmasalah logika internal, fungsi internal, potensi masalah yang mungkin terjadi dan pemeriksaan hasil apakah sudah sesuai dengan permintaan. 6.
Tahapan Pengoperasian dan Pemeliharaan Dalam masa operasional sehari-hari, suatu perangkat lunak mungkin saja mengalami kesalahan atau kegagalan dalam menjalankan fungsi-fungsinya. Atau, pemilik bisa saja meminta peningkatan kemampuan perangkat lunak pada pengembangnya. Dengan demikian, kedua faktor ini menyebabkan perlunya perangkat lunak dipelihara dari waktu ke waktu. Biasanya ini merupakan tahapan yang panjang dari perangkat lunak.
Agar dapat lebih jelas, berikut di bawah ini Gambar 2.1 model Waterfall (Kusnassriyanto Saiful. 1997.)
Gambar
Rekayasa Sistem
2.1
Analisa
(Kusnassr
Desain
iyanto
Pengkodean
Pengujian
Saiful. Pemeliharaan
1997.) 2.3
Unified Modelling Language
Unified Modelling Language (UML) adalah sekumpulan simbol dan diagram untuk memodelkan perangkat lunak. Desain dalam bentuk simbol dan diagram, kemudian dapat diterjemahkan menjadi kode program. Telah tersedia alat-alat (tools) yang dapat membuat kode program berdasarkan UML Class Diagram. Implementasi kode program dari diagram UML dapat menggunakan bahasa pemrograman apa saja dengan syarat bahasa pemrograman tersebut harus mendukung pemrograman berorientasi objek (PBO). UML adalah bahasa standar untuk membuat model. Model adalah deskripsi masalah atau topik dari aplikasi yang akan dibuat. Dengan menggunakan model, tim pengembang
akan terbantu dalam memahami lingkup masalah yang akan dipecahkan. Model adalah visualisasi dari aplikasi yang akan dibangun. Dengan UML semua anggota tim dapat berbicara dengan bahasa yang sama. UML menyediakan beberapa jenis diagram untuk merepresentasikan entities dan relationship yang terdapat di dalam aplikasi. Tahapan pembangunan aplikasi berorientasi objek pada umumnya bersifat iteratif dan incremental. Proses pembangunan aplikasi dibagi menjadi beberapa siklus. Setiap kali satu siklus dilakukan, dilakukan evaluasi sebagai bahan untuk memulai siklus berikutnya.
Setiap siklus biasanya terdiri atas: a. Tahap analisa permintaan b. Tahap analisa system c. Tahap desain d. Tahap implementasi UML akan digunakan pada tahap analisa dan desain. UML terdiri atas 13 jenis diagram resmi seperti tertulis dalam tabel 2.1 (Munawar. 2005).
Tabel 2.1 Jenis diagram resmi UML (Munawar. 2005) No.
Diagram
Kegunaan
1.
Activity
Perilaku prosedural dan parallel
2.
Class
Class, Fitur, dan relasinya
3.
Communication
Interaksi diantara objek. Lebih menekankan ke link
4.
Component
Struktur dan koneksi dari komponen
5.
Composite structure
Dekomposisi sebuah class pada saat runtime
6.
Deployment
Penyebaran / instalasi ke klien
7.
Interaction overview
Gabungan sequence dan activity diagram
8.
Object
Contoh konfigurasi dari contoh-contoh
9.
Package
Struktur hierarki saat kompilasi
10.
Sequence
Interaksi antar objek. Lebih menekankan pada urutan
11.
State machihne
Bagaimana event mengubah sebuah objek selama aktif
12.
Timing
Interaksi antar objek. Lebih menekankan pada
waktu 13.
Use case
Bagaimana user berinteraksi dengan sebuah sistem
2.3.1 Use Case Diagram Use case diagram adalah proses permodelan berdasarkan perspektif pengguna sistem. Use case diagram terdiri atas diagram untuk use case dan actor.
Tabel 2.2 Notasi use case diagram Notasi
Nama symbol
Keterangan
Actor
Sebuah actor mencirikan suatu bagian outside user / susunan yang berkaitan dengan user yang berinteraksi dengan sistem
Use case
Use case adalah rangkaian sekelompok yang saling terkait dan membentuk sistem secara teratur yang dilakukan atau diawasi oleh sebuah actor.
Arus Sistem boundry
Mengambarkan data sistem boudry mengambarkan batas suatu sistem
Depedency
Hubungan semantic antaa dua benda. Berubah mengakibatkan benda satunya berubah pula.
2.3.2 Activity Diagram Activity Diagram adalah teknik untuk mendeskripsikan logika prosedural, proses bisnis dan aliran kerja dalam banyak kasus. Activity diagram mempunyai peran seperti halnya flowchart, akan tetapi perbedaannya dengan flowchart adalah activity diagram bisa mendukung perilaku paralel sedangkan flowchart tidak bisa. Diagram ini sangat mirip dengan sebuah flowchart karena kita dapat memodelkan sebuah alur kerja dari satu aktivitas ke aktivitas lainnya atau dari satu aktivitas ke dalam keadaan sesaat (state). Seringkali bermanfaat bila kita membuat sebuah activity diagram terlebih dahulu dalam memodelkan sebuah proses untuk membantu kita memahami proses
secara keseluruhan. Activity diagram juga sangat berguna ketika kita ingin menggambarkan perilaku parallel / menjelaskan bagaimana perilaku dari berbagai use case berinteraksi.
Berikut ini adalah notasi-notasi yang digunakan dalam pemodelan activity diagram dan contoh activity diagram: Tabel 2.3 Tabel notasi Activity diagram (munawar, 2005:109)
2.3.3 Sequence Diagram Sequence diagram digunakan untuk memberikan gambaran detail dari setiap use case diagram yang telah dibuat sebelumnya. Setiap objek yang terlibat dalam sebuah use case digambarkan dengan garis putus-putus vertikal, kemudian message dikirim oleh objek digambarkan dengan garis horizontal secara kronologis dari atas ke bawah. Sequence diagram biasa digunakan untuk menggambarkan skenario atau rangkaian langkah-langkah yang dilakukan sebagai respon dari sebuah kejadian (event) untuk menghasilkan output tertentu. Masing-masing objek, termasuk aktor, memiliki lifeline vertikal. Pesan digambarkan sebagai garis berpanah dari satu objek ke objek lainnya. Notasinotasi yang digunakan dalam pemodelan sequence diagram adalah:
Tabel 2.4 Notasi sequence diagram (fowler, 2005:81) Notasi
Nama simbol
Keterangan
Aktor
Merupakan
sebuah
peran
yang
dimainkan seorang pengguna dalam kaitanya dengan sistem Activation
Merupakan waktu yang dibutuhkan suatu obyek untuk menyelesaikan suatu aktifitas
Kelas bondary
Adalah yang memodelkan interaksi antara satu atau lebih actor dengan sistem
Kelas control
Digunakan
untuk
memodelkan
“perilaku mengatur” khusus satu atau beberapa use case saja Kelas entitas
Memodelkan informasi yang harus disimpan oleh sistem
Life line
Digambarkan dengan garis putusputus
yang
mengambar
bahwa
hadirnya objek terhadap waktu. Aliran pesan
Digambarkan dengan tanda panah, yang
mengambarkan
komunikasi
antar objek
2.4
Perancangan Basis Data Perancangan basis data merupakan langkah untuk menentukan basis data yang
diharapakan dapat mewakili seluruh kebutuhan penguna. Perancangan basis data diperlukan agar kita bisa memiliki basis data yang kompak dan efisien dalam pengunaan ruang penyimpanan (tambah, ubah, hapus) data dalam merancang suatu basis data diperlukan pendekatan dengan model konseptual yang mengunakan data relational, dimana dapat mengunakan diagram keterhubungan entitas.
2.4.1 Basis Data Basis data terdiri dari 2 kata, yaitu Basis dan Data. Basis kurang lebih dapat diartikan sebagai markas atau gudang, tempat bersarang atau berkumpul. Sedangkan Data adalah representasi fakta dunia nyata yang mewakili suatu objek seperti manusia (pegawai, siswa, pembeli, pelanggan) yang direkam dalam bentuk angka, huruf, symbol, teks, gambar, atau kombinasinya.(Fathansyah, 1999:2) Basis Data sendiri dapat di definisikan dalam sejumlah sudut pandang seperti: (Fathansyah, 1999:2) Himpunan kelompok data (arsip) yang salaing berhubungan yang diorganisasikan sedemikian rupa agar kelak dapat dimanfaatkan kembali dengan cepat dan mudah. Kumpulan data yang saling berhubungan yabg disimpan secara bersamaan sedemikian rupa dan tampa pengulangan (redun-rasi) yang tidak perlu, untuk memenuhi berbagai kebutuhan. Kumpulan file/table/arsip yang saling berhubungan yang disimpan dalam media elektronik
2.4.2 Basis data untuk multimedia Akhir-akhir ini basis data banyak diarahkan untuk juga dapat menampung data multimedia seperti gambar, suara, music, dan video. Saat ini data multimedia kebanyakan disimpan luar basis data, yaitu system file biasa yang terpisah dari basis data . disimpan fieldfield tambahan yang bersifat deskriptif yang menyatakan berbagai sifat (property) dari tiap data multimedia dan lokasi fisik dimana data multimedia tersebut berada. Akan tetapi cara seperti ini tentu saja tidak memungkinkan terpenuhnya sejumlah kebutuhan seperti melakukan pengindexan bwerdasarkan data multimedianya yang selanjutnya dipakai untuk keperluan Query (fathansyah, 1999:174)
2.4.3 Diagram Entity Relantionship (E-RD) Model Entity-Relantionship yang berisi komponen-komponen Himpunan Entitas dan Himpunan
Relasi
yang
masing-masing
dilengkapi
dengan
atribut-atribut
yang
merepresentasikan seluruh fakta dari “dunia nyata” yang kita tinjau, dapat digambarkan dengan lebih sistematis dengan mengunakan Diagram Entity-Relantionship (E_RD). notasinotasi simbolik di dalam Diagram E-R yang dapat kita gunakan adalah:
Table 2.9 Notasi Diagram E-R (Fathansyah, 1999:80)
Notasi
Deskripsi Menyatakan hinpunan entitas E Atribut A sebagai key Himpunan Relasi R R link
1.
Entitas dan himpunan entitas Entitas meupakan individu yang mewakili sesuatu yang nyata (eksistensinya) dan
dapat dibedakan dari sesuatu yang lain. (fathansyah , 1999:73) Sekelompok entitas yang sejenis dan berada dalam lingkup yang sama membentuk sebuah hinpunan Entits (entity set). Sederhananya, entitas menunjukan pada individu suatu objek, sedang himpunan entitas menunjukan pada rumpun (family) dari indivudu tersebut. Seseorang memang dapat menjad sebuah entitas, tapi dapat berada pada himpuna entitas yang berbedadengan seseorang yang lain. Dalam berbagai pembahasan atau literature, penyebutan himpunan entitas (yang kurang praktis) ini sering kali digantikan dengan sbuah entitas saja. Karna itu sering kita temui, penggunaan istilah Entitas (entity) di sebuah literature sebenarnya menunjukan pada himpunan Entitas
2.
Atribut Setiap entitas pasti memliki atribut yang mendeskripsikan karakteristik (property) dari
entitas tersebut. Sebagai mana telah disebutkan sebelumnya, penentuan atau pemilihan atribut-atribut yang relevan bagi sebuah entitas merupakan hal penting lainya dalam pembentukan model data.penempatan atribut bagi sebuah entitas umumnya memang didasarkan pada fakta yang ada. Tetapi tidak selalu seperti itu. Kelak akan kita lihat, karena
proses normalisasi atau pertimbangan-pertimbangan kompronistis, ada sejumlah atribut yang kita ciptakan sendiri dan tidak di kenal di dunia nyata yang sesunguhnya.
Jenis-jenis atribut: 2.1 Key dan Atribut Deskriptif Key adalah satu atau gabungan dari beberapa atribut yang dapat membedakan semua baris data (row) dalam table secara unik. Ada tiga macam key yang diterapkan pada satu table. Superkey, merupakan satu atau lebih atribut (kumpulam atribut) yang dapat membedakan setiap baris data dalam sebuah table secara unik. Candidate-Key merupakan kumpulan atribut minimal yang dapat membedakan setiap baris data dalam sebuah table secara unik. Pada sebuah table dimungkinkan adalanya lebih dari satu Candidat-key. Salah satu dari Candidat-Key ini (jika ada memang lebih dari satu) dapat dijadikan sebagai key primer (Primary key). 2.2 Atribut Sederhana dan Atribut Komposit Atribut Sederhana adalah atribut atomik yang tidak dapat dipilih lagi, sementara atribut komposit merupakan atribut yang masih dapat di uraikan lagi menjadi sub-sub atribut yang masing-masing memiliki makna. 2.3 Atribut bernilai tunggal dan Atribut bernilai banyak Atribut bernilai tunggal ditunjukan pada atribut-atribut yang memiliki paling banyak satu nilai untuk setiap baris data. Sedangkan Atribut bernilai banyak ditunjukan pada atribut-atribut yang dapat kita isi dengan lebih dari satu nilai, tetapi jenisnya sama. 2.4 Atribut harus bernilai dan Nilai Null Ada sejumlah atribut pada sebuah table yang kita teteapkan harus berisi data. Jadi nilainya tidak boleh kosong, atribut semacam ini disebut atribut harus bernilai (Mandatory Attribut). Adapula atribut-atribut lain pada pada suatu table yang nilainya boleh dikosongkan (Non Mandatory, Attribut). 2.5 Atribut Turunan Atribut turunan adalah atribut yang nilai-nilainya di peroleh dari pengolahan atau dapat diturunkan dari atribut atau table lain yang berhubungan. 3.
Relasi (relationship) dan himpuan relasi (relationship sets)
Relasi menunjukan adanya hubungan diantara sejumlah entitas yang berasal dari himpunan entitas yang berbeda. Kumpulan semua relasi diantara entitas-entitas yang terdapat pada himpunan entitas – himpunan entitas tersebut membentuk himpunan relasi (relantionship Sets). Sebagaimana istilah himpunan entitas yang banyak sekali diangkat menjadi entitas (walaupun sebenarnya memiliki perbedaan makna), istilah himpunan Relasi jarang sekali digunakan dan lebih sering disingkat dengan istilah relasi saja.
4.
Kardinalitas Kardinalitas relasi menunjukan jumlah maksimum entitas yang dapat berelasi dengan
entitas pada himpunan entitas yang lain. Dari sejumlah kemungkinan banyaknya hubungan antara entitas tersebut, kardinalitas relasi merujuk kepada hubungan maksimum yang terjadi dari himpunan entitas yang lain dan begitu juga sebaliknya.
Berikut adalah contoh pengambaran relasi antar himpunan entitas lengkap dengan kardinat relasi dan atribut-atributnya 1. Relasi satu ke satu (one-to-oneI) Adanya relasi antara himpunan entitas Dosen dengan Himpunan entitas Jurusan. Himpunan relasinya kita beri nama “Mengepalai”. Para relasi ini, setiap dosen paling banyak megepalai satu jurusan (walaupun memang tidak semua dosen yang menjadi ketua jurusan). Dan setiap jurusan pasti dikepalai oleh paling banyak satu orang dosen. Maka pengambaranya adalah
Gambar 2.6 contoh relasi one to one (fathansyah, 1999: 80)
2. Relasi satu-ke-banyak (one ro many) Adanya relasi antara himpunan entitas dosen dengan himpunan entitas kuliah. Himpunan relasinya kita beri nama “Mengajar”. Pada relasi ini, setiap dosen dapat mengajar lebih dari satu mata kuliah, sedang setiap mata kuliah, diajar hanya oleh paling banyak satu dosen. Maka pengambaranya adalah:
Gambar 2.7 contoh relasi one to many (fathansyah, 1999:81) 3. Relasi banyak-ke-banyak (many-to-many) Adanya relasi antar himpunan entitas mahasiswa dengan himpunan entitas kuliah. Himpunan relasinya kita beri nama “Mempelajari”. Pada relasi ini, setiap mahasiswa bisa mempelajari lebih dari satu mata kuliah. Demikian juga sebaliknya, setiap mata kuliah dapat dipelajari oleh lebih dari satu orang mahasiswa.
Gambar 2.8 contoh relasi many to many (fathansyah, 1999:82)
2.4.4 MYSQL Adalah sebuah perangkat lunak sistem manajemen basis data SQL atau DBMS yang multithread, multi-user dengan sekitar 6 juta instalasi diseluruh dunia.(Wikipedia.org)
MySQL AB membuat MySQL tersedia sebagai perangkat lunak gratis dibawah lisensi GNU General Public License(GPL), tetapi mereka juga menjual dibawah lisensi komersial untuk kasus – kasus dimana pengunanya tidak cocok dengan GPL MySQL adalah Relational Database Management System (RDBMS) yang didistribusikan secara gratis dibawah lisensi GPL (General Public License). Dimana setiap orang bebas untuk menggunakan MySQL, namun tidak boleh dijadikan produk turunan yang bersifat komersial. MySQL sebenarnya merupakan turunan salah satu konsep utama dalam database sejak lama, yaitu SQL (Structured Query Language). SQL adalah sebuah konsep pengoperasian database, terutama untuk pemilihan atau seleksi dan pemasukan data, yang memungkinkan pengoperasian data dikerjakan dengan mudah secara otomatis. Keandalan suatu sistem database (DBMS) dapat diketahui dari cara kerja optimizer-nya dalam melakukan proses perintah-perintah SQL, yang dibuat oleh user maupun program-program aplikasinya. Sebagai database server, MySQL dapat dikatakan lebih unggul dibandingkan database server lainnya dalam query data. Hal ini terbukti untuk query yang dilakukan oleh single user, kecepatan query MySQL bisa sepuluh kali lebih cepat dari PostgreSQL dan lima kali lebih cepat dibandingkan Interbase.
2.5
Algoritma Pencarian Berurutan (Sequencial sarching)
Algoritma pencarian (searching algorithm) adalah algoritma yang menerima sebuah argumen kunci dan dengan langkah-langkah tertentu akan mencari rekaman dengan kunci tersebut. Setelah proses pencarian dilaksanakan, akan diperoleh salah satu dari dua kemungkinan, yaitu data yang dicari ditemukan (successful) atau tidak ditemukan (unsuccessful).
Metode pencarian data dapat dilakukan dengan dua cara yaitu pencarian internal (internal searching) dan pencarian eksternal (external searching). Pada pencarian internal, semua rekaman yang diketahui berada dalam pengingat komputer sedangakan pada pencarian eksternal, tidak semua rekaman yang diketahui berada dalam pengingat komputer, tetapi ada sejumlah rekaman yang tersimpan dalam penyimpan luar misalnya pita atau cakram magnetis. Selain itu metode pencarian data juga dapat dikelompokkan menjadi pencarian statis (static searching) dan pencarian dinamis (dynamic searching). Pada pencarian statis, banyaknya rekaman yang diketahui dianggap tetap, pada pencarian dinamis, banyaknya rekaman yang diketahui bisa berubah-ubah yang disebabkan oleh
penambahan atau penghapusan suatu rekaman. Ada dua macam teknik pencarian yaitu pencarian sekuensial dan pencarian biner.
Perbedaan dari dua teknik ini terletak pada keadaan data. Pencarian sekuensial digunakan apabila data dalam keadaan acak atau tidak terurut. Sebaliknya, pencarian biner digunakan pada data yang sudah dalam keadaan urut. 2.5.1 Macam – macam Algoritma Pencarian 2.5.1.1. Algoritma Knuth-Morris-Pratt Algoritma Knuth-Morris-Pratt adalah salah satu algoritma pencarian string dikembangkan secara terpisah oleh Donald E. Knuth pada tahun 1967 dan James H. Morris
bersama Vaughan
R.
Pratt
pada
tahun
1966,
namun
keduanya
mempublikasikannya secara bersamaan pada tahun 1977. Cara Kerja Algoritma Knuth-Morris Perhitungan penggeseran pada algoritma ini adalah sebagai berikut, bila terjadi ketidakcocokkan pada saat pattern sejajar dengan menganggap ketidakcocokan pertama terjadi di antara ,
dengan dan
.
dan
Berarti,
tidak sama dengan
sangat beralasan bila ada sebuah awalan akhiran
, kita bisa
. Ketika kita menggeser, dari pattern akan sama dengan sebagian
dari sebagian teks. Sehingga kita bisa menggeser pattern agar awalan
tersebut sejajar dengan akhiran dari . Dengan kata lain, pencocokkan string akan berjalan secara efisien bila kita mempunyai tabel yang menentukan berapa panjang kita seharusnya menggeser seandainya terdeteksi ketidakcocokkan di karakter ke- dari pattern. Tabel itu harus memuat
yang merupakan posisi karakter
sehingga kita bisa menggeser pattern sebesar
setelah digeser, relatif terhadap teks.
Secara sistematis, langkah-langkah yang dilakukan algoritma Knuth-MorrisPratt pada saat mencocokkan string: 1.
Algoritma Knuth-Morris-Pratt mulai mencocokkan pattern pada awal teks.
2.
Dari kiri ke kanan, algoritma ini akan mencocokkan karakter per karakter pattern dengan karakter di teks yang bersesuaian, sampai salah satu kondisi berikut dipenuhi: 1.
Karakter di pattern dan di teks yang dibandingkan tidak cocok (mismatch).
2.
Semua
karakter
di
pattern
cocok.
Kemudian
algoritma
akan
memberitahukan penemuan di posisi ini. 3.
Algoritma kemudian menggeser pattern berdasarkan tabel next, lalu mengulangi langkah 2 sampai pattern berada di ujung teks.
2.5.1.2 Algoritma brute force dalam pencarian string Algoritma brute force merupakan algoritma pencocokan string yang ditulis tanpa memikirkan peningkatan performa. Algoritma ini sangat jarang dipakai dalam praktik, namun berguna dalam studi pembanding dan studi-studi lainnya. Cara kerja Algoritma brute force Secara sistematis, langkah-langkah yang dilakukan algoritma brute force pada saat mencocokkan string adalah: 1.
Algoritma brute force mulai mencocokkan pattern pada awal teks.
2.
Dari kiri ke kanan, algoritma ini akan mencocokkan karakter per karakter pattern dengan karakter di teks yang bersesuaian, sampai salah satu kondisi berikut dipenuhi: 1.
Karakter di pattern dan di teks yang dibandingkan tidak cocok (mismatch).
2.
Semua
karakter
di
pattern
cocok.
Kemudian
algoritma
akan
memberitahukan penemuan di posisi ini. 3.
Algoritma kemudian terus menggeser pattern sebesar satu ke kanan, dan mengulangi langkah ke-2 sampai pattern berada di ujung teks.
Berikut adalah Algoritma brute force yang sedang bekerja mencari string:
Gambar 2.9 Algoritma brute force
2.6
PHP similar_text
2.6.1 Devinisi
Para similar_text() fungsi mengembalikan jumlah pencocokan karakter dari dua string.
2.6.2 Penggunaan Hal ini juga dapat menghitung kesamaan dari dua string dalam persen. 2.6.3 Sintaksis similar_text(string1,string2,percent)
Parameter
Description
string1
Required. Specifies the first string to be compared
string2
Required. Specifies the second string to be compared
percent
Optional. Specifies a variable name for storing the similarity in percent
Contoh 1 The output of the code above will be: 7
Contoh 2 Hasil persentase 63.6363636364 %