BAB II TINJAUAN PUSTAKA
II.1. Algoritma Pencarian Data Pencarian (Searching) merupakan proses yang fundamental dalam pengolahan data. Proses pencarian adalah menemukan nilai (data) tertentu di dalam sekumpulan data yang bertipe sama (baik bertipe dasar atau bertipe bentukan). Sebagai contoh untuk mengubah (update) data tertentu, langkah pertama yang harus dilakukan adalah mencari keberadaan data tersebut didalam kumpulannya. Jika data yang dicari ditemukan, maka data tersebut dapat diubah nilainya dengan data yang baru. (Rinaldi Munir, 2011 : 395). Metode pencarian data dapat dilakukan dengan dua cara yaitu pencarian internal (internal searching) dan pencarian eksternal (eksternal searching). Pencarian internal adalah pencarian terhadap sekumpulan data yang disimpan di dalam memori utama (primary memory), sedangkan pencarian eksternal adalah pencarian terhadap sekumpulan data yang disimpan di dalam memori sekunder (secondary memory) seperti tape atau disk. Selain itu metode pencarian data dapat dikelompokkan menjadi pencarian statis (static searching) dan pencarian dinamis (dinamic 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.
11
Menurut ( Rinaldi Munir, 2011 : 397 - 418 ) Ada dua macam teknik pencarian data yaitu pencarian beruntun (sequential search) dan pencarian bagi dua (binary search). 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 terurut. II.1.1. Pencarian Beruntun (Sequential Searching) Pencarian beruntun sering disebut pencarian linear merupakan metode pencarian yang paling sederhana. Pencarian beruntun menggunakan prinsip bahwa data yang ada dibandingkan satu persatu secara berurutan dengan yang dicari sampai data tersebut ditemukan atau tidak ditemukan. Pada dasarnya, pencarian ini hanya melakukan pengulangan dari 1 sampai dengan jumlah data. Pada setiap pengulangan, dibandingkan data ke-i dengan yang dicari. Apabila sama berarti data telah ditemukan. Sebaliknya apabila sampai akhir pengulangan tidak ada data yang sama, berarti data tidak ada.
II.1.2. Pencarian Biner (Binary Search) Binary Search adalah algoritma pencarian yang lebih efisien dari pada algorima Sequential Search. Hal ini dikarenakan algoritma ini tidak perlu menjelajahi setiap elemen dari tabel. Kerugiannya adalah algoritma ini hanya bisa digunakan pada tabel yang elemennya sudah terurut baik menaik maupun menurun. Pada intinya, algoritma ini menggunakan prinsip divide and conquer,
12
dimana sebuah masalah atau tujuan diselesaikan dengan cara mempartisi masalah menjadi bagian yang lebih kecil. Algoritma ini membagi sebuah tabel menjadi dua dan memproses satu bagian dari tabel itu saja. Algoritma ini bekerja dengan cara memilih record dengan indeks tengah dari tabel dan membandingkannya dengan record yang hendak dicari. Jika record tersebut lebih rendah atau lebih tinggi, maka tabel tersebut dibagi dua dan bagian tabel yang bersesuaian akan diproses kembali. Dalam kehidupan sehari-hari, sebenarnya kita juga sering melakukan pencarian biner. Misalnya saat ingin mencari suatu kata dalam kamus. Prinsip pencarian biner dapat dijelaskan sebagai berikut : Misalkan indeks kiri adalah i dan indeks kanan adalah j. Pada mulanya, kita inisialisasi i dengan 1 dan j dengan n. 1. Bagi dua elemen larik pada elemen tengah. Elemen tengah adalah elemen dengan indeks k = (i + j) div 2. ( Elemen tengah L[K], membagi larik menjadi dua bagian yaitu bagian kiri L[i..j] dan bagian kanan L[k+1..j]) 2. Periksa apakah L[K] = x, jika L[K] = x maka pencarian selesai sebab x sudah ditemukan. Tetapi jika L[K] ≠ x, harus ditentukan apakah pencarian akan dilakukan di larik bagian kiri atau dilarik bagian kanan. Jika L[K] < x, maka pencarian dilakukan lagi pada larik bagian kiri. Sebaliknya, jika L[K] > x maka pencarian dilakukan lagi pada larik bagian kanan. 3. Ulangi langkah pertama hingga x ditemukan atau i > j yaitu ukuran larik sudah nol. Misalkan larik L dengan delapan buah elemen yang sudah terurut menurun seperti terlihat pada Gambar II.1.
13
81
76
21
18
16
13
10
i=1
2
3
4
5
6
7
7 8=j
Gambar II.1. Kumpulan Data Dalam Pencarian Biner Sumber : Rinaldi Munir, 2011 : 411
Elemen yang dicari adalah x = 18, dengan i = 1 dan j = 8. Indeks elemen tengah k = ( 1 + 8 ) div 2 = 4 81
76
21
18
16
13
10
7
1
2
3
4
5
6
7
8=j
Kiri
Kanan
Gambar II.2. Data yang Ditemukan Dalam Pencarian Biner Sumber : Rinaldi Munir, 2011 : 411
Pembandingan, apakah L[4] = 18, jika ya maka x ditemukan, proses pencarian selesai.
II.2. DFS (Depth First Search) Depth First Search adalah algoritma pencarian mendalam pada suatu simpul dalam setiap level dari yang paling kiri, jika pada level yang paling dalam solusi belum ditemukan, maka pencarian dilanjutkan pada simpul sebelah kanan dan simpul yang disebelah kiri dapat dihapus dari memori. Jika pada level yang paling dalam tidak ditemukan solusi, maka pencarian dilanjutkan pada level sebelumnnya. Demikian seterusnya sampai solusi ditemukan. Setiap data akan dicek satu persatu berdasarkan kata kunci pencarian yang diinputkan. Dalam pencarian file ini, metode DFS dapat diterapkan dengan mengecek apakah nama file mengandung salah satu kata dari kata kunci yang diinputkan. Jika bernilai
14
true, maka file tersebut akan ditampilkan, sebaliknya jika tidak maka akan dilewati. Dengan cara ini, waktu pencarian file akan singkat karena file tidak perlu diperiksa secara keseluruhan. (Suyanto, 2011:16). Secara formal, DFS adalah sebuah pencarian kurang terinformasi (uninformed search) yang berkembang dengan penelusuran yang dimulai dari simpul anak pertama sebuah pohon dan terus masuk hingga simpul yang diinginkan ditemukan, atau hingga mencapai simpul yang tidak mempunyai anak. Setelah itu, terjadi backtracking sehingga penelusurannya kembali ke simpul terdekat yang belum dikunjungi. Berikut adalah ilustrasi pencarian mendalam menggunakan Algoritma DFS, seperti terlihat pada Gambar II.3.
Start t
B
A
C
G
D
E
F
H
Gambar II.3. Ilustrasi Pencarian DFS Sumber : Suyanto, 2011:16
Berdasarkan
Gambar
II.3,
Proses
pencarian
dilakukan
dengan
mengunjungi cabang terlebih dahulu hingga tiba di simpul terakhir. Jika tujuan
15
yang diinginkan belum tercapai maka pencarian dilanjutkan ke cabang sebelumnya, turun ke bawah jika memang masih ada cabangnya. Begitu seterusnya hingga diperoleh tujuan (goal). Operasi semacam ini dikenal dengan sebutan backtracking. Sebagai contoh akan dicari sebuah state F pada contoh sebuah pohon yang ditunjukkan pada gambar II.4. A B D 2
C E
F
G
Gambar II.4. Contoh Pohon Dalam Pencarian DFS Sumber : Suyanto, 2011:17 Langkah Awal : Dimulai dari simpul akar, Kita akan menggunakan dua list info untuk menyimpan langkah yang kita lakukan, yaitu Open dan Close. Open akan menyimpan langkah yang perlu kita lakukan, dan Close akan menyimpan langkah yang telah kita lakukan. Saat ini, kita hanya punya titik awal yang kita pilih, yaitu simpul A. Kita belum melakukan apapun ke simpul tersebut, sehingga sekarang kita tambahkan ke Open. Open : A Close : < kosong >
16
Langkah 1 Kita mengambil simpul awal dari Open dan kemudian menelusuri tetangga-tetangganya. Tetangga-tetangga dari simpul A adalah simpul B dan C. Karena sekarang kita telah selesai dengan simpul A, kita dapat menghapusnya dari Open dan menambahkannya ke Close. Tambahkan dua simpul B dan C tadi ke Open. Sekarang, Open dan Close berisi data sebagai berikut : Open : B, C Close: A Langkah 2 Open kini berisi dua simpul. Untuk depth first search, selalu ditelusuri simpul pertama dari Open. Simpul pertama pada open sekarang adalah simpul B. B bukan tujuan, sehingga ditelusuri tetangga-tetangganya. Karena kini B telah diluaskan, kita dapat menghapusnya dari Open dan menambahkannya ke Close. Kini, simpul baru kita adalah D dan E, dan kita tambahkan simpul ini ke awal dari Open (menggantikan B yang telah dihapus). Open: D, E, C Close: A, B Langkah 3 : Karena D ada di awal dari Open, maka kita meluaskannya. D bukan tujuan, dan tidak berisi satu pun tetangga. Selanjutnya, kita dapat menghapus D dari Open dan menambahkanya ke Close. Open: E, C Close: A, B, D
17
Langkah 4: Sekarang kita meluaskan simpul E dari Open. E bukan tujuan kita, sehingga ditelusuri tetangganya dan menemukan bahwa ia memiliki tetangga F dan G. Karena F adalah tujuan kita, kita masih belum berhenti di sini tentunya. Di samping F berada pada lintasan kita, kita hanya akan berhenti begitu kita akan meluaskan simpul tujuan kita, Kita akan menghapus simpul E dari Open dan menambahkan simpul F dan G ke dalamnya. Kemudian, simpul E ditambahkan ke Close: Open: F, G, C Close: A, B, D, E Langkah 5 Sekarang kita meluaskan simpul F. Karena F adalah tujuan kita, maka kita berhenti. Kita menghapus F dari Open dan menambahkannya ke Close. Karena kita telah sampai di tujuan, maka tidak perlu lagi meluaskan F dan mencari tetangganya. Open dan Close akhir kita akan berisi data sebagai berikut : Open: G, C Close: A, B, D, E, F Lintasan akhir yang akan diambil oleh metode Depth First Search kita adalah nilai terakhir dari Close, yaitu A, B, D, E, F.
II.2.1. Keunggulan dan Kelemahan DFS Ada beberapa keuntungan menggunakan algoritma Depth First Search ini diantaranya adalah sebagai berikut:
18
1. Jika solusi yang dicari berada pada level yang dalam dan paling kiri, maka DFS akan menemukannya dengan cepat. 2. DFS memerlukan memori yang relative kecil karena hanya node-node pada lintasan yang aktif saja yang disimpan. Selain kelebihan, DFS juga memiliki kelemahan, di antaranya adalah sebagai berikut: 1. DFS tidak complete Artinya jika pohon yang dibangkitkan mempunyai level yang sangat dalam (tak terhingga), maka tidak ada jaminan menemukan solusi. 2. DFS tidak optimal Artinya jika terdapat lebih dari satu solusi yang sama tetapi berada pada level yang berbeda, maka DFS tidak menjamin untuk menemukan solusi yang paling baik.
II.3. Sistem Berkas Komputer dapat menyimpan informasi ke beberapa media penyimpanan yang berbeda, seperti magnetic disks, magnetic tapes, dan optical disks. Agar komputer dapat digunakan dengan nyaman, sistem operasi menggunakan sistem penyimpanan dengan sistematika yang seragam. Sistem operasi mengabstraksi properti fisik dari media penyimpanannya dan mendefinisikan unit penyimpanan logis, yaitu berkas. Berkas ditetapkan ke media fisik oleh sistem operasi. Media penyimpanan ini umumnya bersifat non-volatile, sehingga apa yang tersimpan di
19
dalamnya tidak akan hilang jika terjadi gagal listrik maupun system reboot. (Ali Pangera, 2005 : 197) Sistem berkas adalah suatu sistem untuk mengetahui bagaimana cara menyimpan data dari file tertentu dan organisasi file yang digunakan. Sistem berkas menyediakan pendukung yang memungkinkan programmer mengakses file tanpa menyangkut perincian karakteristik penyimpanan. Berkas adalah kumpulan informasi berkait yang diberi nama dan direkam pada penyimpanan sekunder. Dari sudut pandang pengguna, berkas merupakan bagian kecil dari tempat penyimpanan logis, artinya data tidak dapat ditulis ke penyimpanan sekunder kecuali jika berada di dalam berkas. Biasanya berkas mempresentasikan program (baik source maupun bentuk objek) dan data. Data dari berkas dapat bersifat numerik, alfabetik, alfanumerik maupun biner. Format berkas juga bisa bebas, misalnya berkas teks, atau dapat juga diformat pasti. Secara umum, berkas adalah urutan bit, byte, baris atau catatan yang didefenisikan oleh pembuat berkas dan pengguna. Menurut (Ali Pangera, 2005 : 197-203) ada beberapa elemen yang terdapat dalam berkas, yaitu: II.3.1. Atribut Pada Berkas Berkas diberi nama, untuk kenyamanan bagi pengguna dan untuk acuan bagi data yang terkandung di dalamnya. Nama berkas biasanya berupa string atau karakter. Beberapa sistem membedakan penggunaan huruf besar dan kecil dalam penamaan sebuah berkas, sementara sistem yang lain menganggap kedua hal
20
diatas sama. Ketika berkas diberi nama, maka berkas tersebut akan menjadi mandiri terhadap proses, pengguna, bahkan sistem yang membuatnya. Atribut berkas terdiri dari: 1. Nama Merupakan satu-satunya informasi yang tetap dalam bentuk yang bisa dibaca oleh manusia (human-readable form). 2. Type Dibutuhkan untuk sistem yang mendukung beberapa type berbeda. 3. Lokasi Merupakan pointer ke device dan kelokasi berkas pada device tersebut. 4. Ukuran (Size) Ukuran berkas pada saat itu, baik dalam byte, huruf ataupun blok. 5. Proteksi Informasi mengenai kontrol akses, misalnya siapa saja yang boleh membaca, menulis dan mengeksekusi berkas. 6. Waktu, Tanggal dan Identifikasi Pengguna Informasi ini biasanya disimpan untuk pembuatan berkas, modifikasi terakhir yang dilakukan pada berkas dan pengguna terakhir berkas.
II.3.2. Struktur Berkas Jenis berkas dapat digunakan untuk mengidentifikasikan struktur dalam dari berkas. Berkas berupa source dan objek memiliki struktur yang cocok dengan harapan program yang membaca berkas tersebut. Suatu berkas harus memiliki
21
sturktur yang dikenali oleh sistem operasi. Sebagai contoh sistem operasi menginginkan suatu berkas yang dapat dieksekusi memiliki struktur tertentu agar dapat diketahui dimana berkas tersebut ditempatkan di memori dan dimana letak instruksi pertama berkas tersebut. Beberapa sistem operasi mengembangkan ide ini sehingga mendukung beberapa struktur berkas, dengan beberapa operasi khusus untuk memanipulasi berkas dengan struktur tersebut. Kelemahan memiliki dukungan terhadap beberapa struktur berkas adalah ukuran dari sistem operasi dapat menjadi besar. Jika sistem operasi mendefenisikan lima struktur berkas yang berbeda maka ia perlu menampung kode untuk yang diperlukan untuk mendukung semuanya. Setiap berkas harus dapat menerapkan salah satu struktur berkas tersebut. Masalah akan timbul ketika terdapat aplikasi yang membutuhkan struktur informasi yang tidak didukung oleh sistem operasi tersebut. Beberapa sistem operasi menerapkan dan mendukung struktur berkas sedikit struktur berkas. Pendekatan ini digunakan pada MS-DOS dan UNIX. UNIX menganggap setiap berkas sebagai urutan 8-bit byte, tidak ada interpretasi sistem operasi terhadap bit-bit ini. Skema tersebut menawarkan fleksibilitas tinggi tetapi dukungan yang terbatas. Setiap aplikasi harus menambahkan sendiri kode untuk menerjemahkan berkas masukan kedalam struktur yang sesuai. Walau bagaimana pun juga sebuah sistem operasi harus memiliki minimal satu struktur berkas yaitu untuk berkas yang dapat dieksekusi sehingga sistem dapat memuat berkas dalam memori dan menjalankannya.
22
Sistem ini sangat berguna bagi sistem operasi untuk mendukung struktur berkas yang sering digunakan karena akan menghemat pekerjaan program. Terlalu sedikit struktur berkas yang didukung akan mempersulit pembuatan program, terlalu banyak akan membuat sistem operasi terlalu besar dan pemrogram akan bingung. Menempatkan batas dalam berkas dapat menjadi rumit bagi sistem operasi. Sistem disk biasanya memiliki ukuran blok yang sudah ditetapkan dari ukuran sektor. Semua I/O dari disk dilakukan dalam satuan blok dan semua blok (physical
record)
memiliki ukuran yang sama. Tetapi ukuran dari physical
record tidak akan sama dengan ukuran logical record. Ukuran dari logical record akan bervariasi. Memuatkan beberapa logical record ke dalam physical record merupakan solusi umum dari masalah ini. Sebagai contoh pada sistem operasi UNIX, semua berkas didefenisikan sebagai kumpulan byte. Setiap byte dialamatkan menurut batasnya dari awal berkas sampai akhir. Pada kasus ini ukuran logical record adalah 1 byte. Sistem berkas secara otomatis memuatkan byte-byte tersebut kedalam blok pada disk. Ukuran logical record, ukuran blok pada disk, dan teknik untuk memuatkannya menjelaskan beberapa banyak logical record dalam tiap-tiap physical record. Teknik memuatkan dapat dilakukan oleh aplikasi pengguna atau oleh sistem operasi. Berkas juga dapat dianggap sebagai urutan dari beberapa blok pada disk. Konversi dari logical record ke physical record merupakan masalah perangkat lunak. Tempat pada disk selalu berada pada blok, sehingga beberapa bagian pada
23
blok terakhir yang ditempati berkas dapat terbuang. Jika setiap blok berukuran 512 byte , sebuah berkas berukuran 1.949 byte akan menempati empat blok (2.048 byte) dan akan tersisa 99 byte pada blok terakhir. Byte yang terbuang tersebut dipertahankan agar ukuran dari unit tetap blok bukan byte disebut fragmentasi dalam disk. ` II.3.3. Operasi pada Berkas Untuk mendefinisikan berkas secara tepat, kita perlu melihat operasi yang dapat dilakukan pada berkas. Operasi yang dapat dilakukan pada berkas adalah sebagai berikut: 1. Membuat sebuah berkas Ada dua cara dalam membuat berkas. Pertama, tempat baru di dalam sistem berkas harus di alokasikan untuk berkas yang akan dibuat. Kedua, sebuah direktori harus mempersiapkan tempat untuk berkas baru, kemudian direktori tersebut akan mencatat nama berkas dan lokasinya pada sistem berkas. 2. Menulis pada sebuah berkas Untuk menulis pada berkas, kita menggunakan system call beserta nama berkas yang akan ditulisi dan informasi apa yang akan ditulis pada berkas. Ketika diberi nama berkas, sistem mencari ke direktori untuk mendapatkan lokasi berkas. Sistem juga harus menyimpan penunjuk tulis pada berkas dimana penulisan berikut akan ditempatkan. Penunjuk tulis harus diperbaharui setiap terjadi penulisan pada berkas.
24
3. Membaca sebuah berkas Untuk dapat membaca berkas, kita menggunakan system call beserta nama berkas dan di blok memori mana berkas berikutnya diletakkan. Sama seperti menulis, direktori mencari berkas yang akan dibaca, dan sistem menyimpan penunjuk baca pada berkas dimana pembacaan berikutnya akan terjadi. Ketika pembacaan dimulai, penunjuk baca harus diperbaharui.Sehingga secara umum, suatu berkas ketika sedang dibaca atau ditulis, kebanyakan sistem hanya mempunyai satu penunjuk, baca dan tulis menggunakan penunjuk yang sama, hal ini menghemat tempat dan mengurangi kompleksitas sistem. 4. Menempatkan kembali sebuah berkas Direktori yang bertugas untuk mencari berkas yang bersesuaian, dan mengembalikan lokasi berkas pada saat itu. Menempatkan berkas tidak perlu melibatkan proses I/O. Operasi sering ini disebut pencarian berkas. 5. Menghapus sebuah berkas Untuk menghapus berkas kita perlu mencari berkas tersebut di dalam direktori. Setelah ditemukan kita membebaskan tempat yang dipakai berkas tersebut (sehingga dapat digunakkan oleh berkas lain) dan menghapus tempatnya di direktori. 6. Memotong berkas Ada suatu keadaan dimana pengguna menginginkan atribut dari berkas tetap sama tetapi ingin menghapus isi dari berkas tersebut. Fungsi ini mengizinkan semua atribut tetap sama tetapi panjang berkas menjadi nol, hal ini lebih baik dari pada memaksa pengguna untuk menghapus berkas dan membuatnya lagi.
25
II.4. Struktur Direktori Berdasarkan struktur penyimpanannya, directory dapat dibagi menjadi beberapa kategori sebagai berikut: 1. Direktori Satu Tingkat Struktur direktori yang paling sederhana. Semua berkas disimpan di dalam direktori yang sama. Struktur ini tentunya memiliki kelemahan jika jumlah berkasnya bertambah banyak, karena setiap berkas mesti memiliki nama yang unik. 2. Direktori Dua Tingkat Kelemahan dalam direktori tingkat satu dapat diatasi pada sistem direktori tingkat dua. Caranya dengan membuat direktori secara terpisah. Pada direktori tingkat dua, setiap pengguna memiliki direktori berkas sendiri (UFD). Setiap UFD memiliki struktur yang serupa, tetapi hanya berisi berkas-berkas dari seorang pengguna. Ketika seorang pengguna Login master direktori berkas (MFD) dicari. Isi dari MFD adalah indeks dari nama pengguna atau nomor rekening, dan tiap enteri menunjuk pada UFD untuk pengguna tersebut. Ketika seorang pengguna ingin mengakses suatu berkas, hanya UFD-nya sendiri yang diakses. Jadi pada setiap UFD yang berbeda, boleh terdapat nama berkas yang sama. 3. Direktori Dengan Struktur Tree Struktur direktori dua tingkat dapat dikatakan sebagai pohon dua tingkat. Sebuah direktori dengan struktur pohon memiliki sejumlah berkas atau
26
subdirektori lagi. Pada penggunaan yang normal setiap pengguna memiliki direktorinya sendiri-sendiri. Selain itu pengguna tersebut dapat memiliki subdirektori sendiri lagi. Dalam struktur ini dikenal dua istilah, yaitu path relatif dan path mutlak. Path relatif adalah path yang dimulai dari direktori yang aktif. Sedangkan path mutlak adalah path yang dimulai dari direktori akar. 4. Direktori Dengan Struktur Acyclic-Graph Jika sebuah berkas yang ingin diakses oleh dua pengguna atau lebih, maka struktur ini menyediakan fasilitas sharing, yaitu penggunaan sebuah berkas secara bersama-sama. Hal ini tentunya berbeda dengan struktur pohon, dimana pada struktur tersebut penggunaan berkas atau direktori secara bersama-sama dilarang. Pada struktur Acyclic-Graph, penggunaan berkas atau direktori secara bersamasama diperbolehkan. Tapi pada umumnya struktur ini mirip dengan struktur pohon. 5. Direktori Dengan Struktur Graph Masalah yang sangat utama pada struktur direktori “Acyclic-Graph” adalah kemampuan untuk memastikan tidak adanya siklus. Jika pada struktur dua tingkat direktori, seorang pengguna dapat membuat subdirektori, maka akan kita dapatkan
direktori
dengan
struktur
pohon.
Sangatlah
mudah
untuk
mempertahankan sifat direktori pohon setiap kali ada penambahan berkas atau subdirektori pada direktori dengan struktur pohon. Tetapi jika kita menambahkan sambungan pada direktori dengan struktur pohon, maka akan kita dapatkan direktori dengan struktur graph sederhana.
27
Proses pencarian pada direktori dengan struktur Acyclic-Graph, apabila tidak ditangani dengan baik (algoritma tidak bagus) dapat menyebabkan proses pencarian yang berulang dan menghabiskan banyak waktu. Oleh karena itu, diperlukan skema pengumpulan sampah (garbage-collection scheme). Skema ini memeriksa seluruh sistem berkas dengan menandai tiap berkas yang dapat diakses. Kemudian mengumpulkan apa pun yang tidak ditandai sebagai tempat kosong. Hal ini tentunya dapat menghabiskan banyak waktu.
II.4.1. Operasi Pada Direktori Operasi-operasi yang dapat dilakukan pada direktori adalah: 1. Mencari berkas Sebuah berkas dapat ditemukan dalam sebuah struktur direktori. Karena berkas-berkas memiliki nama simbolik
dan nama yang sama dapat
mengindikasikan keterkaitan antara setiap berkas-berkas tersebut, mungkin kita berkeinginan untuk dapat menemukan seluruh berkas yang nama-nama berkas membentuk pola khusus. 2. Membuat berkas Berkas baru dapat dibuat dan ditambahkan kedalam sebuah direktori. 3. Menghapus berkas Apabila berkas sudah tidak diperlukan lagi, kita dapat menghapus berkas tersebut dari direktori.
28
4. Menampilkan isi direktori Seluruh berkas dapat ditampilkan dalam direktori, beserta seluruh isi kandungan direktori untuk setiap berkas dalam daftar tersebut. 5. Mengganti nama berkas Karena nama berkas mempresentasikan isi dari berkas kepada user, maka user dapat merubah nama berkas tersebut. Perubahan nama berkas dapat merubah posisi berkas dalam direktori. 6. Melintasi sistem berkas Ini sangat berguna untuk mengakses sistem direktori dan berkas didalam struktur direktori.
II.5. Flowchart Flowchart merupakan bagan alir program yang sifatnya terperinci tentang langkah-langkah proses didalam program dari awal sampai akhir. Flowchart digunakan sebagai alat bantu pengembangan sistem yang menjelaskan aliran proses yang terjadi pada perancangan sebuah sistem. (Ema Utami, 2005 : 24) Adapun simbol-simbol flowchart seperti pada Tabel II.1 Simbol
Fungsi Terminator Menunjukkan awal dan akhir suatu proses Data Digunakan input/output
untuk
mewakili
data
29
Process Digunakan untuk mewakili proses
Decision Digunakan untuk suatu kondisi yanga kan menghasilkan beberapa kemungkinan jawaban atau pilihan
Predefined process Menunjukkan suatu operasi yang rinciannya ditujukan ditempat lain Preparation Digunakan untuk memberti nilai awal variabel Flow Lines Symbol Menunjukkan arah dari proses On Page Connector Menunjukkan penghubung ke halaman yang sama Off Page Connector Menunjukkan penghubung ke halaman yang baru
Tabel II.1 Simbol-simbol Flowchart Sumber : Ema Utami, 2005 : 25
II.6. UML (Unified Modelling Language) Unified Modeling Language (UML) adalah himpunan struktur dan teknik untuk pemodelan desain program berorientasi objek (OOP) serta aplikasinya. UML adalah metodologi untuk mengembangkan sistem OOP dan sekelompok perangkat tool untuk mendukung pengembangan sistem tersebut. UML mulai diperkenalkan oleh Object Management Group, sebuah organisasi yang telah
30
mengembangkan model, teknologi dan standar OOP sejak tahun 1980-an. Sekarang UML sudah mulai banyak digunakan oleh para praktisi OOP. UML merupakan dasar bagi perangkat (tool) desain berorientasi objek dari IBM. (Sholid, 2006 : 3) UML adalah suatu bahasa yang digunakan untuk menentukan, memvisualisasikan, membangun dan mendokumentasikan suatu sistem informasi. UML dikembangkan sebagai suatu alat untuk analisis dan desain berorientasi objek oleh Grady Booch, Jim Rumbaugh dan Ivar Jacobson. Namun demikian UML dapat digunakan untuk memahami dan mendokumentasikan setiap sistem informasi. Penggunaan UML dalam industri terus meningkat. Ini merupakan standar terbuka yang menjadikannya sebagai bahasa pemodelan yang umum dalam industri peranti lunak dan pengembangan sistem. Untuk dapat memahami UML membutuhkan bentuk konsep dari sebuah bahasa model, dan mempelajari tiga elemen utama dari UML seperti building block, aturan aturan yang menyatakan bagaimana building block diletakkan secara bersamaan, dan beberapa mekanisme umum (common). Menurut (Sholid, 2006 : 6) Dalam merancang sebuah pengembangan software yang disertai gambar atau contoh dari sebuah aplikasi, UML menggunakan langkah-langkah bantu sebagai berikut: 1. Use Case Sebuah use case menggambarkan suatu urutan interaksi antara satu atau lebih aktor dan sistem. Dalam fase requirements, model use case mengambarkan
31
sistem sebagai sebuah kotak hitam dan interaksi antara aktor dan sistem dalam suatu bentuk naratif, yang terdiri dari input user dan respon-respon sistem. Setiap use case menggambarkan perilaku sejumlah aspek sistem, tanpa mengurangi struktur internalnya. Selama pembuatan model use case secara pararel juga harus ditetapkan obyek-obyek yang terlibat dalam setiap use case. 2. Aktor Sebuah aktor mencirikan suatu bagian outside user atau susunan yang berkaitan dengan user yang berinteraksi dengan sistem (Rumbaugh, Booch, dan Jacobson 1999). Dalam model use case, aktor merupakan satu-satunya kesatuan eksternal yang berinteraksi dengan sistem. Terdapat beberapa variasi bagaimana aktor dibentuk. Sebuah aktor sering kali merupakan manusia (human user). Pada sejumlah sistem informasi, manusia adalah satu-satunya aktor. Dan mungkin saja dalam sistem informasi, seorang aktor bisa saja menjadi suatu sistem eksternal. Pada aplikasi real-time dan distribusi, sebuah aktor bisa saja menjadi satu perangkat eksternal I/O atau sebuah alat pengatur waktu. Perangkat eksternal I/O dan pengatur waktu aktor secara khusus lazimnya berada dalam real-time yang tersimpan dalam sistem (real-time embedded systems), sistem berinteraksi dengan lingkungan eksternal melalui sensor dan aktuator. Primary actor (aktor utama) memprakarsai sebuah use case. Jadi, suatu primary aktor memegang peran sebagai proaktif dan yang memulai aksi dalam sistem. Aktor lainnya yang berperan sebagai secondary aktor bisa saja terlibat
32
dalam use case dengan menerima output dan memberikan input. Setidaknya satu aktor harus mendapatkan nilai dari use case. Biasanya adalah primary aktor (aktor utama). Bagaimanapun, dalam real-time embedded systems, primary aktor dapat berperan sebagai perangkat eksternal I/O atau pengatur waktu, penerima utama dari use case bisa menjadi secondary human aktor yang menerima sejumlah informasi dari sistem. 3. Identifikasi Use Case Sebuah use case dimulai dengan masukan/input dari seorang aktor. Use case merupakan suatu urutan lengkap kejadian-kejadian yang diajukan oleh seorang aktor, dan spesifikasi interaksi antara aktor dengan sistem. Use case yang sederhana hanya melibatkan satu interaksi/hubungan dengan sebuah aktor, dan use case yang lebih kompleks melibatkan beberapa interaksi dengan aktor. Use cases yang lebih kompleks juga melibatkan lebih dari satu aktor. Untuk menjabarkan use case dalam sistem, sangat baik bila dimulai dengan memperhatikan aktor dan actions/aksi yang mereka lakukan dalam sistem. Setiap use case menggambarkan suatu urutan interaksi antara aktor dengan sistem. Sebuah use case harus memberikan sejumlah nilai pada satu aktor. Kemudian, kebutuhan fungsional sistem dijelaskan dalam use case yang merupakan suatu spesifikasi eksternal dari sebuah sistem. Bagaimanapun juga, ketika membuat use case, sangatlah penting menghindari suatu dekomposisi fungsional yang dalam beberapa use case kecil lebih menjelaskan fungsi-fungsi individual sistem dari pada menjelaskan urutan kejadian yang memberikan hasil yang berguna bagi aktor.
33
4. Pendokumentasian Model Use Case Use case didokumentasi dalam use case model sebagai berikut: a. Use Case Name Setiap use case diberi nama. b. Summary Deskripsi singkat use case, biasanya satu atau dua kalimat. c. Dependency Bagian ini menggambarkan apakah use case yang satu tergantung pada use case yang lain, dalam arti apakah use case tersebut termasuk pada use case yang lain atau malah memperluas use case lain. d. Actors Bagian ini memberikan nama pada actor dalam use case. Selalu terdapat use case utama (primary use case) yang memulai use case. Disamping itu terdapat juga secondary use case yang terlibat dalam use case. e. Preconditions Satu atau lebih kondisi harus berjalan dengan baik pada permulaan use case. f. Deskripsi Bagian terbesar dari use case merupakan deskripsi naratif dari urutan utama use case yang merupakan urutan yang paling umum dari interaksi antara aktor dan sistem. Deskripsi tersebut dalam bentuk input dari aktor, diikuti oleh respon pada sistem. Sistem ditandai dengan sebuah kotak
34
hitam (black box) yang berkaitan dengan apa yang sistem lakukan dalam merespon input aktor, bukan bagaimana internal melakukannya. g. Alternatif-alternatif Deskripsi naratif dari alternatif merupakan cabang dari urutan utama. Terdapat beberapa cabang alternatif dari urutan utama. h. Postcondition Kondisi yang selalu terjadi di akhir use case, jika urutan utama telah dilakukan. i. Outstanding questions Pertanyaan-pertanyaan
tentang
use
case
didokumentasikan
untuk
didiskusikan dengan para user.
II.7. Visual Studio 2008 Visual Studio 2008 merupakan suatu perangkat lunak yang dapat digunakan untuk pengembangan berbagai macam aplikasi yang memiliki berbagai macam tipe antara lain aplikasi dekstop (windows form, command line (console)), aplikasi web, windows mobile (pocket PC). Visual Studio juga dapat digunakan untuk mengembangkan aplikasi dalam bentuk bahasa mesin yang berjalan diatas windows ataupun dalam bentuk microsoft intermeidate language di atas .Net Framework. Selain itu, visual studio 2008 juga dapat digunakan untuk mengembangkan aplikasi Silverlight, aplikasi windows mobile yang berjalan diatas .Net Compact Framework 3.5. (Muhammad Sadeli, 2009 : 2)
35
II.6.1. Tampilan IDE (Integrated Development Environment) Langkah awal belajar visual studio adalah mengenal IDE (Integrated Development Environment) Visual Studio merupakan lingkungan pengembangan terpadu programmer dalam mengembangkan aplikasinya. Dengan menggunakan IDE progammer dapat membuat user interface, melakukan pengkodingan, melakukan testing dan debugging serta mengkompilasi program menjadi executable. Penguasaan yang baik akan IDE sangat membantu programmer dalam mengefektifkan tugas-tugasnya sehingga dapat bekerja dengan efisien. Salah satu cara untuk mengaktifkan IDE Visual Studio adalah menjalankannya dari menu start, pilih menu Command, pilih Microsoft Visual Studio 2008, seperti terlihat pada Gambar II.5.
Gambar II.5. Tampilan Awal Visual Studio .NET 2008 Sumber : Muhammad Sadeli Untuk membuat sebuah project baru menggunakan Visual Studio .NET 2008, klik menu File-New-Project.
36
Gambar II.6. Menu New Project Sumber : Muhammad Sadeli Setelah itu akan muncul kotak dialog New Project. Pada kotak dialog New Project terdapat beberapa pilihan tool untuk pengembangan aplikasi, seperti 3 Visual Basic, Visual C# dan Visual C++. Pilih Visual Basic kemudian pilih Windows Form Application. Beri nama project yang akan dibuat pada bagian Name dan direktori tempat menyimpan project pada bagian Location.
Gambar II.7. Kotak Dialog New Project Sumber : Muhammad Sadeli
37
Klik OK pada kotak dialog New Project tersebut. Selanjutnya muncul Visual Basic IDE tempat untuk membangun aplikasi Visual Basic .NET 2008. Menu Bar
Toolbar Standar
Form Design
Solution Explorer
Toolbox Komponen
Error List
Properties Windows
Gambar II.8. IDE Visual Studio .NET 2008 Sumber : Muhammad Sadeli
Penjelasan tentang elemen-elemen yang terdapat pada bagian kerja Visual Studio.Net 2008. 1. Menu Bar Merupakan suatu menu yang terdiri dari 11 menu utama , masing-masing memiliki sub menu dan perintah lengkap dengan shortcut key.
38
2. Toolbar Standar Merupakan suatu baris menu yang mempunyai fungsi yang sama pada setiap tool standart, pada umumnya seperti fungsi untuk menyimpan, meng-copy, menambah project baru, mengatur tampilan program dan masih banyak lagi. 3. Form Design Merupakan suatu lembar form yang berfungsi untuk merancang tampilan aplikasi secara visual dengan menempatkan kontrol-kontrol yang diperlukan. 4. Toolbox Merupakan suatu jendela yang berfungsi untuk menampung komponenkomponen standar. 5. Solution Explorer Solution Explorer memberikan tampilan daftar file-file project yang sedang dibuat sehingga dapat diakses langsung. Pada windows solution explorer terdapat beberapa tombol pada toolbar dan tree yang berisi daftar file-file yang digunakan dalam project. 6. Propertis Windows Berfungsi untuk mengatur nilai propertis dari masing-masing komponen yang akan digunakan. 7. Error List Suatu jendela yang berfungsi untuk menampilkan setiap kesalahan dari pembuatan kode program suatu aplikasi.