5 BAB II TINJAUAN PUSTAKA 2.1 Algoritma Genetika 2.1.1 Pengertian algoritma genetika Algoritma genetika adalah suatu algoritma pencarian yang meniru mekanisme dari genetika alam. Algoritma Genetika banyak dipakai pada aplikasi bisnis, teknik maupun pada bidang keilmuan lainnya. Algoritma ini dimulai dengan kumpulan solusi yang disebut dengan populasi. Solusi-solusi dari sebuah populasi diambil dan digunakan untuk membentuk populasi yang baru. Hal ini dimotivasi dengan harapan bahwa populasi yang baru dibentuk tersebut akan lebih baik daripada yang lama. Solusi-solusi yang dipilih untuk membentuk solusisolusi yang baru dipilih sesuai dengan fitness mereka masing-masing. Menurut sebuah buku yang berjudul “Adaption in Natural and Artificial System” yang terbit pada tahun 1975, dijelaskan bahwa prinsip algoritma genetika yang diambil dari teori Darwin yaitu setiap makhluk hidup akan menurunkan satu atau beberapa karakter ke anak atau keturunannya. Proses ini akan dapat terjadi terbentuknya variasi yang disebabkan karena adanya mutasi, sehingga keturunan yang dihasilkan dapat mempunyai kelebihan bahkan tidak memiliki kekurangan dari orangtuanya. Setiap makhluk hidup akan mengalami seleksi alam, sehingga makhluk hidup yang mempunyai kemampuan untuk beradaptasi dengan lingkungan sekitarnya dapat bertahan sampai generasi selanjutnya. Semakin bagus atau sesuai fitness dari sebuah solusi maka solusi tersebut mempunyai peluang besar untuk dipilih. Proses ini dilakukan berulang sampai kondisi tertentu dipenuhi. 2.1.2 Sejarah algoritma genetika Sejak pertama kali dirintis oleh John Holland pada tahun 1960-an, AG telah dipelajari, diteliti dan diaplikasikan secara luas pada berbagai bidang. AG banyak digunakan pada masalah praktis yang berfokus pada pencarian parameterparameter optimal. Hal ini membuat banyak orang mengira bahwa AG hanya bisa 6 digunakan untuk masalah optimasi. Algoritma Genetika dalam kenyataanya juga memiliki performansi yang bagus untuk masalah-masalah selain optimasi. Beberapa buku juga menyebutkan algoritma genetika dengan nama Classical GA atau Canonical GA. Keuntungan penggunaan AG sangat jelas terlihat dari kemudahan implementasi dan kemampuannya untuk menemukan solusi yang bagus (bisa diterima) secara cepat untuk masalah-masalah berdimensi tinggi. Ciri utama dari GA adalah tidak terlalu cepat dalam menemukan solusi optimal, tetapi memiliki heuristik yang baik untuk masalah kombinatorial. Ciri lainnya adalah algoritma genetika lebih menitikberatkan pada rekombinasi atau crossover. Artinya bagian GA yang paling penting untuk menemukan solusi adalah rekombinasi atau crossover. Inisialisasi awal, akan dibangkitkan secara acak sejumlah individu sebagai suatu populasi. Jumlah individu dalam populasi tersebut selalu tetap selama proses evolusi. Algoritma Genetika telah banyak diaplikasikan untuk dapat menyelesaikan masalah dan pemodelan dalam bidang teknologi, bisnis, dan entertainment, seperti : a. Optimasi AG digunakan untuk optimasi numerik dan optimasi kombinatorial seperti Traveling Salesman Problem (TSP), perancangan Integrated Circuit atau IC [LOU93], Job Shop Scheduling [GOL91], optimasi video, dan suara. b. Pemrograman Otomatis AG telah digunakan untuk melakukan proses evolusi terhadap program komputer untuk merancang struktur komputasional, seperti celluler automata dan sorting networks. c. Machine Learning AG telah berhasil diaplikasikan untuk memprediksi struktur protein. AG juga berhasil diaplikasikan dalam perancangan neural network (jaringan syaraf tiruan) untuk melakukan proses evolusi terhadap aturan-aturan pada learning classifier systems atau symbolic production systems. AG juga dapat digunakan untuk mengkontrol robot. 7 d. Model Ekonomi AG telah digunakan untuk memodelkan proses-proses inovasi dan pembangunan bidding strategies. e. Model Sistem Imunisasi AG telah berhasil digunakan untuk memodelkan berbagai aspek pada sistem imunisasi alamiah, termasuk somatic mutation selama kehidupan individu dan menemukan keluarga dengan gen ganda (multi-gene families) sepanjang waktu evolusi. f. Model Ekologis AG telah berhasil digunakan untuk memodelkan fenomena ekologis seperti host-parasite co-evolutions, simbiosis dan aliran sumber daya dalam ekologi. g. Interaksi antara Evolusi dan Belajar AG telah digunakan untuk mempelajari bagaimana proses belajar satu individu bisa mempengaruhi proses evolusi suatu spesies dan sebaliknya. 2.1.3 Pengertian populasi AG Populasi adalah kumpulan kromosom. Kromosom ini dibentuk dari komponen-komponen penyusun yang disebut dengan gen dan nilainya dapat berupa bilangan numerik, biner, simbol, maupun karakter, tergantung dari permasalahan yang ingin diselesaikan. Penggambaran tentang populasi dapat dilihat pada gambar dibawah ini : 8 Gambar 2.1 Susunan dari Populasi ( Sumber : http://personal.ftsl.itb.ac.id, 2009 ) Terdapat beberapa definisi penting yang harus dipahami dalam algoritma genetika, yaitu : a) Gen Gen merupakan nilai yang menyatakan satuan dasar yang membentuk suatu arti tertentu dalam satu kesatuan gen yang dinamakan kromosom. b) Kromosom / Individu Kromosom merupakan gabungan dari gen-gen yang membentuk nilai tertentu dan menyatakan solusi yang mungkin dari suatu permasalahan. c) Populasi Populasi merupakan sekumpulan individu yang akan diproses bersama dalam satu satuan siklus evolusi. d) Fitness Fitness menyatakan seberapa baik nilai dari suatu individu yang didapatkan. 9 e) Seleksi Seleksi merupakan proses untuk mendapatkan calon induk yang baik. f) Crossover Crossover merupakan proses pertukaran atau kawin silang gen-gen dari dua induk tertentu. g) Mutasi Mutasi merupakan proses pergantian salah satu gen yang terpilih dengan nilai tertentu. h) Generasi Generasi merupakan urutan iterasi dimana beberapa kromosom bergabung. i) Offspring Offspring merupakan kromosom baru yang dihasilkan. 2.1.4 Operasional AG Seperti halnya proses evaluasi di alam, suatu algoritma genetika yang sederhana umumnya terdiri dari tiga operator yaitu operator reproduksi, crossover (persilangan), dan mutasi. Struktur umum dari sistem algoritma genetika dapat diselesaikan dengan langkah-langkah sebagai berikut : 1. Membangkitkan populasi awal. Populasi awal ini dibangkitkan secara random sehingga didapatkan solusi awal. Populasi itu sendiri terdiri dari sejumlah kromosom yang merepresentasikan solusi yang diinginkan. 2. Membentuk generasi baru. Tiga operator yang digunakan untuk membentuk generasi baru yaitu reproduksi/seleksi, perkawinan silang dan mutasi. Proses ini dilakukan berulang-ulang sehingga didapatkan jumlah kromosom yang cukup untuk membentuk generasi baru, dimana generasi baru ini merupakan representasi dari solusi baru. 3. Evaluasi solusi. Proses ini akan mengevaluasi setiap populasi dengan menghitung nilai fitness setiap kromosom dan mengevaluasinya sampai terpenuhi kriteria berhenti, apabila kriteria berhenti belum terpenuhi maka akan dibentuk lagi generasi baru dengan mengulangi langkah 2. 10 Blok diagram algoritma genetika dapat dilihat pada gambar di bawah ini : Gambar 2.2 Siklus Algoritma Genetika ( Sumber : http://personal.ftsl.itb.ac.id, 2009 ) Terdapat tiga kondisi selesai yang dapat menghentikan proses siklus algoritma genetika ini, yaitu: 1. Setelah beberapa generasi berturut-turut nilai fitness terbaik dari populasi tidak mengalami perubahan kembali 2. Jumlah generasi atau iterasi maksimum telah tercapai. 3. Nilai fitness terbaik minimal telah tercapai. 2.1.4.1 Membangun generasi awal Langkah pertama dalam algoritma ini adalah membentuk sejumlah populasi awal yang digunakan untuk mencari penyelesaian optimal. Populasi awal yang dibangun dalam ide tugas akhir ini dengan menggunakan bilangan random (acak) dengan range bilangan yang telah ditentukan. 2.1.4.2 Representasi kromosom Representasi kromosom merupakan proses pengkodean dari penyelesaian asli dari suatu permasalahan. Pengkodean kandidat penyelesaian ini disebut 11 dengan kromosom. Pengkodean tersebut meliputi penyandian gen, dimana satu gen mewakili satu variabel. Berikut ini adalah contoh dari representasi kromosom dimana phenotype space dikodekan ke dalam kromosom-kromosom biner di dalam genotype space dan sebaliknya. Encoding X1 = 7 dan X2 = 5 0 1 1 1 0 1 0 1 1 0 1 1 1 0 1 0 1 1 X1 = 7 dan X2 = 5 Decoding Phenotype space Genotype space (binary encoding) Gambar 2.3 Representasi Kromosom Menggunakan Binary Encoding ( Sumber : Suyanto, 2008 ) 2.1.4.3 Fungsi fitness Fungsi fitness digunakan untuk proses evaluasi kromosom agar memperoleh kromosom yang diinginkan. Fungsi ini membedakan kualitas dari kromosom untuk mengetahui seberapa baik kromosom yang dihasilkan. Fungsi fitness tersebut sebagai berikut. Fitness 1 1 penalty ................................................. (2.1) Berdasarkan persamaan diatas nilai fitness ditentukan oleh nilai penalty. Penalty tersebut menunjukkan jumlah pelanggaran kendala pada suatu kromosom. Semakin tinggi nilai fitness akan semakin besar kemungkinan kromosom tersebut terpilih ke generasi berikutnya. Nilai penalty akan berbanding terbalik dengan nilai fitness, semakin kecil nilai penalty (jumlah pelanggaran) semakin besar nilai fitnessnya. 12 Rumus fungsi fitness : 1 1 (BpxNp) ................................................. (2.2) Keterangan : Bp = Bobot pelanggaran Np = Indikator Pelanggaran 2.1.4.4 Seleksi Setiap kromosom yang terdapat dalam populasi akan melalui proses seleksi untuk dipilih menjadi orangtua. Sesuai dengan teori Evolusi Darwin maka kromosom yang baik akan bertahan dan menghasilkan keturunan yang baru untuk generasi selanjutnya. Ada beberapa metode seleksi, yaitu : 1. Steady-State Selection Pemikiran utama dari metode seleksi ini adalah sebagian kromosom dari generasi lama tetap bertahan atau berada di generasi selanjutnya. Algoritma genetika menerapkan pemikiran tersebut dengan cara, didalam setiap generasi sejumlah kromosom yang mempunyai nilai fitness tinggi dipilih untuk diproses untuk menghasilkan keturunan yang baru sedangkan kromosom dengan nilai fitness rendah dibuang. 2. Elitism Proses seleksi dilakukan secara random, maka tidak ada jaminan bahwa suatu individu bernilai fitness tertinggi akan selalu terpilih, meskipun individu memiliki nilai fitness yang tinggi akan terpilih, namun mungkin saja individu tersebut akan rusak (nilai fitness-nya menurun) karena proses pindah silang. Pengkopian kromosom perlu dilakukan untuk menjaga agar individu bernilai fitness tertinggi tersebut tidak hilang selama proses evolusi. 3. Roulette Wheel Selection Sesuai dengan namanya, algoritma ini menirukan permainan roulettewheel dimana masing-masing kromosom menempati potongan lingkaran pada 13 roda roulette secara proporsional sesuai dengan nilai fitness-nya. Sebagai ilustrasi, perhatikan gambar berikut ini : Kromosom Fitness K1 2 K2 1 K3 1 K4 4 Jumlah 8 K1 k4 K2 k3 Gambar 2.4 Seleksi Orang Tua Menggunakan Algoritma Roulette-Wheel ( Sumber : Suyanto, 2008 ) Gambar diatas menunjukkan bahwa kromosom dengan nilai fitness yang lebih besar dalam roda roulette memiliki peluang lebih besar untuk terpilih sebagai orang tua, meskipun demikian semua kromosom tetap memiliki peluang untuk terpilih sebagai orang tua. Algoritma Roulette Wheel memang sengaja memberikan peluang kepada semua kromosom untuk bisa terpilih sebagai orang tua, karena ada kemungkinan jika kromosom dengan nilai fitness rendah dikawinkan dengan kromosom fitness tinggi akan menghasilkan dua kromosom anak yang memiliki nilai fitness jauh lebih tinggi dari kedua orang tuanya. 2.1.4.5 Rekombinasi Rekombinasi atau crossover adalah proses kawin silang antara dua kromosom yang terpilih sebagai orang tua dengan suatu metode seleksi orang tua tertentu yang menghasilkan dua anak (offspring). Jumlah kromosom dalam populasi yang mengalami persilangan ditentukan oleh paramater yang disebut dengan crossover rate (probabilitas persilangan). Jenis rekombinasi ada 2 yaitu : 14 1. Rekombinasi satu titik (One point crossover) Contoh : titik Orangtua 1 1 0 1 1 0 1 0 1 1 0 1 0 1 1 1 0 Anak 1 Orangtua 2 0 1 1 0 1 1 1 0 0 1 1 1 0 1 0 1 Anak 2 Gambar 2.5 Contoh Rekombinasi Satu Titik ( Sumber : Suyanto, 2008 ) Rekombinasi satu titik dilakukan dengan cara membangkitkan suatu titik rekombinasi, misalkan titik ke-2 seperti yang terlihat pada gambar diatas. Rekombinasi menghasilkan dua anak, dimana anak 1 mewarisi gen ke-1 dan gen ke-2 yang berasal dari orangtua 1 dan gen-3 sampai gen-8 berasal dari orangtua 2, begitu juga sebaliknya, pada anak kedua mendapatkan gen ke-1 dan ke-2 dari orangtua 2 dan gen ke-3 sampai gen ke-8 berasal dari orangtua 1. 2. Rekombinasi dua titik (Two point crossover) Contoh : Titik 1 Titik 2 Orangtua 1 1 0 1 1 0 1 0 1 1 0 1 0 1 1 0 1 1 Anak 1 Orangtua 2 0 1 1 0 1 1 1 0 0 1 1 1 0 1 1 0 Anak 2 Gambar 2.6 Contoh Rekombinasi Dua Titik ( Sumber : Suyanto, 2008 ) Rekombinasi dua titik, gen dari kedua orangtua diwariskan secara menyilang (zigzag) kepada kedua anaknya berdasarkan kedua posisi titik tersebut seperti yang ditunjukkan oleh gambar diatas. 15 2.1.4.6 Mutasi Mutasi juga merupakan salah satu operator penting dalam algoritma genetika selain crossover. Metode dan tipe mutasi yang dilakukan juga tergantung pada encoding dan permasalahan yang diangkat. Berdasarkan encoding-nya terdapat beberapa macam, diantaranya adalah sebagai berikut : 1. Binary Encoding Melakukan inversi pada bit yang terpilih, 0 menjadi 1 dan sebaliknya, 1 menjadi 0. Contoh : 11001001 => 10001001 2. Permutation Encoding Memilih dua nilai dari gen dan menukarnya. Contoh : ( 1 2 3 4 5 8 9 7 ) => ( 1 8 3 4 5 6 2 9 7 ) Beberapa operator mutasi telah diciptakan untuk representasi permutasi, seperti metode inversion, insertion, displacement, dan reciprocal exchange mutation. a) Inversion Mutation Inversion mutation memilih dua posisi dalam sebuah kromosom dengan cara acak dan kemudian menginversikan substring di antara dua posisi tersebut. b) Insertion Mutation Insertion Mutation memilih sebuah gen dengan cara acak dan memasukkan ke dalam kromosom dengan cara acak pula. c) Displacement Mutation Displacement Mutation memilih sebuah sub/sekelompok gen dengan cara acak kemudian memasukkan ke dalam kromosom dengan cara acak. d) Reciprocal Exchange Mutation (REM) Reciprocal Exchange Mutation memilih dua posisi secara acak, kemudian menukar dua gen dalam posisi tersebut. 16 3. Value Encoding Menentukan sebuah nilai kecil yang akan ditambahkan atau dikurangkan pada salah satu gen dalam kromosom. Contoh : ( 1.29 5.68 2.86 4.11 5.55 ) => ( 1.29 5.68 2.73 4.22 5.55 ) 4. Tree Encoding Node yang terpilih akan diubah. 2.1.4.7 Kondisi Berhenti Offspring merupakan kromosom baru yang dihasilkan setelah melalui proses-proses di atas, setelah offspring terbentuk kemudian dihitung fitness-nya apakah sudah optimal atau belum, jika sudah optimal berarti offspring tersebut merupakan solusi optimal, tetapi jika belum optimal maka akan diseleksi kembali, begitu seterusnya sampai terpenuhi kriteria berhenti. 2.1.5 Kontrol Parameter Algoritma Genetika Kontrol parameter AG diperlukan untuk mengendalikan operatoroperator seleksi. Pemilihan parameter AG menentukan penampilan kinerja algoritma Genetika dalam memecahkan masalah. Terdapat dua parameter dasar dari algoritma Genetika, yaitu probabilitas crossover (Pc) dan probabilitas mutasi (Pm). Probabilitas crossover menyatakan seberapa sering proses crossover akan terjadi antara dua kromosom orangtua, apabila tidak terjadi crossover, satu orangtua akan dipilih secara random dengan probabilitas yang sama dan diduplikasi menjadi anak, jika probabilitas crossover 100% maka keseluruhan keturunan dibuat dengan crossover namun jika probabilitas crossover 0% maka seluruh generasi baru dibuat dari salinan kromosom-kromosom dari populasi lama yang belum tentu menghasilkan populasi yang sama dengan populasi sebelumnya karena adanya penekanan selektif. Hasil penelitian yang sudah pernah dilakukan oleh praktisi AG menunjukkan bahwa angka probabilitas crossover sebaiknya cukup tinggi, yaitu antara 80% sampai 95% untuk memberikan hasil yang baik. Beberapa 17 masalah tertentu probabilitas crossover 60% akan memberikan hasil yang lebih baik. Probabilitas mutasi menyatakan seberapa sering bagian-bagian kromosom akan dimutasikan, jika tidak ada mutasi maka keturunan akan diambil/disalin langsung setelah crossover tanpa perubahan. Saat mutasi dilakukan, bagianbagian kromosom diubah, jika probabilitas mutasi 100% maka keseluruhan kromosom akan diubah sedangkan jika probabilitasi mutasi 0% maka tidak ada yang akan diubah. Probabilitas mutasi dalam AG seharusnya diberi nilai yang kecil. Umumnya, probabilitas mutasi diset untuk mendapatkan rata-rata satu mutasi per kromosom, yaitu angka / allele = l/(panjang kromosom). Berdasarkan hasil yang sudah pernah dicoba menunjukkan bahwa angka probabilitas terbaik adalah antara 0,5% sampai 1%. Hal ini karena tujuan mutasi adalah menjaga perbedaan kromosom dalam populasi, untuk menghindari terjadinya konvergensi prematur. Parameter lain yang juga ikut menentukan efisiensi kinerja AG adalah ukuran populasi, yaitu banyaknya kromosom dalam satu populasi, jika terlalu sedikit kromosom dalam populasi, AG mempunyai kemungkinan yang sedikit pula untuk melakukan crossover dan hanya sebagian kecil dari ruang pencarian yang diekplorasi sebaliknya, jika terlalu banyak jumlah kromosom, AG cenderung menjadi lambat dalam menemukan solusi. Ukuran populasi yang sering digunakan oleh peneliti yang sudah ada adalah antara 20 sampai 30, tetapi kadang ukuran 50 sampai 100 dilaporkan baik. Beberapa penelitian menunjukkan bahwa ukuran populasi yang terbaik tergantung dari pengkodean, yaitu ukuran dari barisan yang dienkodekan. Artinya, jika terdapat ukuran kromosom 32 bit, ukuran populasi seharusnya juga 32, begitu pula jika ukuran kromosom 16 bit, maka ukuran populasi adalah 16. Penekanan selektif dilakukan dengan memilih jenis seleksi yang sesuai. Umumnya, jenis seleksi roda rolet sering digunakan, terkadang jenis ranking serta turnamen. Terdapat juga beberapa metode lebih lanjut yang mengubah parameter seleksi ini selama eksekusi AG. Yang perlu diperhatikan dalam seleksi adalah 18 prinsip elitism, yang dapat dilakukan dalam seleksi untuk update generasi, biasanya digunakan steady-state update. 2.2 Perkembangan Metode Penjadwalan Algoritma-algoritma yang dibuat untuk tujuan memecahkan persoalanpersoalan yang ada saat ini telah banyak ditemukan. Berdasarkan perkembangannya metode atau algoritma tersebut mulai diterapkan untuk memecahkan persoalan penjadwalan, antara lain algoritma semut atau Ant Colony Optimization (ACO) dengan pendekatan Max Min Ant System (MMAS), Taboo Search, dan teknik pewarnaan graf (Coloring Graph). 2.2.1 Ant Colony Optimization Ant Colony Optimization (ACO) terinspirasi oleh koloni-koloni semut dalam mencari makan. Semut-semut tersebut meninggalkan zat (pheromone) di jalan yang mereka lalui. Algoritma ACO ini merupakan algoritma pencarian berdasarkan probabilistik berbobot, sehingga butir pencarian dengan bobot yang lebih besar akan berakibat memiliki kemungkinan terpilih yang lebih besar pula. 2.2.2 Tabu Search Tabu Search adalah salah satu metode metaheuristik yang dipergunakan untuk memecahkan permasalahan-permasalahan optimasi global. Tabu Search merupakan suatu teknik optimasi yang menggunakan short-term memory untuk menjaga agar proses pencarian tidak terjebak pada nilai optimum lokal. Metode ini menggunakan Tabu List untuk menyimpan sekumpulan solusi yang baru saja dievaluasi. Selama proses optimasi, pada setiap iterasi solusi yang akan dievaluasi akan dicocokkan terlebih dahulu dengan isi Tabu List untuk melihat apakah solusi tersebut sudah ada pada Tabu List apabila solusi tersebut sudah ada, maka akan dievaluasi lagi pada iterasi berikutnya. Saat sudah tidak ada lagi solusi yang menjadi anggota Tabu List, maka nilai terbaik yang baru saja diperoleh merupakan solusi yang sebenarnya. 2.2.3 Coloring Graph Teknik pewarnaan graf merupakan salah satu subjek yang menarik dan terkenal dalam bidang graf. Teori-teori mengenainya telah banyak dikembangkan 19 dan berbagai algoritma dengan kelebihan dan kelemahan masing-masing telah dibuat untuk menyelesaikannya. Aplikasi dari teknik ini juga telah banyak diterapkan di berbagai bidang, salah satunya adalah membuat jadwal. Perencanaan jadwal disini khususnya diterapkan pada pekerjaan-pekerjaan atau hal-hal yang saling terkait, misalnya hal-hal yang berlangsung pada waktu yang sama, atau pekerjaan yang menggunakan sumber daya yang sama, dan sebagainya. Teknik pewarnaan graf akan membuat jadwal kerja yang dapat menghasilkan hasil yang maksimum dengan cara yang paling efisien 2.3 Perangkat Permodelan Sistem Menurut Hartono (1999) perangkat pemodelan sistem merupakan suatu cara untuk mengetahui baik secara global maupun terinci bagaimana sistem itu nantinya diterapkan dengan menggunakan model keterhubungan antar entitas yang bertujuan untuk mengetahui mekanisme penggambaran data, hubungan data dan batasan data. Langkah-langkah dalam pembuatan dan perancangan suatu perangkat permodelan sistem adalah sebagai berikut : 2.3.1 Diagram konteks Diagram konteks merupakan diagram yang menggambarkan sebuah sistem secara garis besar dan dari diagram ini dapat dipecah menjadi proses-proses atau bagian yang lebih kecil lagi yang disebut DFD. 2.3.2 Data flow diagram (DFD) DFD adalah suatu gambaran grafis dari suatu sistem yang menggunakan sejumlah bentuk-bentuk simbol untuk menggambarkan bagaimana data mengalir melalui proses yang saling berkaitan. Simbol yang digunakan pada DFD untuk maksud mewakili (Hartono,1999): 20 1. External entity (kesatuan luar) atau boundary (batas sistem) Batas sistem digunakan untuk memisahkan suatu sistem dengan lingkungan luarnya. Gambar 2.7 Notasi kesatuan luar di DFD (Sumber : Hartono,1999) 2. Process (Proses) Proses adalah kegiatan atau kerja yang dilakukan oleh orang, mesin atau komputer dari hasil suatu arus data yang masuk ke dalam proses untuk dihasilkan arus data yang akan keluar dari proses. identifikasi identifikasi atau Nama Proses atau Nama proses Pemroses Gambar 2.8 Notasi proses di DFD (Sumber : Hartono,1999) 2. Data flow (arus data) Arus data (data flow) di DFD diberi simbol suatu panah. Arus data ini mengalir diantara proses, simpanan data dan kesatuan luar. a 1 Nama arus data Kesatuan Luar Proses Gambar 2.9 Arus Data dari kesatuan luar ke proses (Sumber : Hartono,1999) 2.3.3 Flowchart Flowchart atau bagan alur merupakan metode untuk menggambarkan tahap-tahap penyelesaian masalah (prosedur) beserta aliran data dengan simbol- 21 simbol standar yang mudah dipahami. Flowchart banyak digunakan di pusat-pusat layanan seperti kantor pemerintahan, bank, rumah sakit, organisasi masyarakat, dan perusahaan. Tujuan utama penggunaan flowchart adalah untuk menyederhanakan rangkaian proses atau prosedur untuk memudahkan pemahaman pengguna terhadap informasi tersebut, oleh karena itu design sebuah flowchart harus ringkas, jelas, dan logis. Simbol-simbol dalam flowchart adalah sebagai berikut: 1. ; Terminal. Menunjukkkan awal atau akhir suatu proses. 2. ; Preparation. Persiapan proses atau pemberian nilai awal. 3. ; Data. Menunjukkan proses masukkan, pembacaan atau percetakan data. 4. ; Process. Menunjukkan proses pelaksanaan instruksi (selain proses percabangan). 5. ; Decision Menunjukkkan proses pemilihan alternative atau pengecekan kondisi. 6. ; Predefined Process. Menunjukkan proses yang telah didefinisikan. 7. ; Connector. Merupakan penghubung pada satu halaman. 8. ; Off-page connector. Merupakan penghubung pada halaman lain. 9. ; Document Merupakan dokumen (arsip) dari hasil proses. 22 10. ; Arrow. Merupakan arah aliran proses. 2.4 Konsep Database Management System (DBMS) 2.4.1 Definisi Database dan DBMS Database adalah kumpulan data terhubung yang disimpan secara bersamasama pada suatu media, tanpa adanya suatu kerangkapan data, sehingga mudah untuk digunakan kembali, dapat digunakan oleh satu atau lebih program aplikasi secara optimal, data disimpan tanpa mengalami ketergantungan pada program yang akan menggunakannya, data disimpan sedemikian rupa sehingga apabila ada penambahan, pengambilan dan modifikasi data dapat dilakukan dengan mudah dan terkontrol (Kadir, 2002). DBMS (database management system) merupakan kumpulan tabel yang saling berkaitan bersama dengan program sebagai pengelolanya. Basis data adalah kumpulan datanya, sedangkan program pengelolanya berdiri sendiri dalam suatu paket program untuk membaca data, mengisi data, menghapus data, melaporkan data dalam basis data (Kadir, 2002). 2.4.2 Bahasa DBMS Menurut Kadir (2002) DBMS merupakan perantara bagi pemakai dengan database dalam media penyimpanan seperti harddisk maupun removeable disk. Cara berinteraksi antara pemakai dengan database tersebut diatur dalam suatu bahasa khusus yang ditetapkan oleh perusahaan pembuat DBMS. Bahasa itu disebut sebagai bahasa Database atau Database Language yang terdiri atas sejumlah perintah (statement) yang diformulasikan dan dapat diberikan pemakai dan dikenali oleh DBMS untuk melakukan suatu aksi seperti permintaan (query) data tertentu. Contoh bahasa database seperti SQL (Structured Query Language). Sebuah bahasa database biasanya dapat dikelompokkan ke dalam tiga kategori yaitu : 23 1. Data Definition Language (DDL) DDL adalah bahasa yang dispesifikasikan untuk mendefinisikan tipe data dan objek-objek database. Terdapat beberapa contoh perintah dalam DDL seperti pada tabel berikut : Tabel 2.1 Contoh perintah Data Definition Language (DDL) PERINTAH CREATE TABLE/DATABASE ALTER TABLE DROP TABLE/DATABASE CREATE INDEX DROP INDEX FUNGSI Membuat tabel atau database baru Menambah satu atau lebih kolom (field) pada tabel baru Menghapus suatu tabel atau database Membuat indeks Menghapus tabel yang sudah terindeks Sumber (Abdulkadir, 2002) 2. Data Manipulation Language (DML) DML adalah bahasa yang diperbolehkan pemakai untuk mengakses atau memanipulasi data yang telah diorganisasikan sebelumnya dalam model data yang tepat. Beberapa perintah yang termasuk dalam DML seperti pada tabel berikut : Tabel 2.2 Contoh perintah Data Manipulation Language (DML) PERINTAH SELECT UPDATE DELETE INSERT FUNGSI Menentukan data/informasi yang akan keluar dari tabel Mengubah isi record pada suatu tabel Menghapus sebuah field Menyisipkan suatu record Sumber (Abdulkadir, 2002) 3. Data Control Language (DCL) DCL adalah kelompok perintah yang dipakai untuk melakukan otorisasi terhadap pengaksesan data dan pengalokasian ruang. Misalnya, suatu database bisa di akses si A, tetapi tidak bisa diaksses oleh si B. Termasuk dalam 24 katagori DCL yaitu pernyataan-pernyataan GRANT, REVOKE, COMMIT, ROLLBACK. 2.4.3 Komponen DBMS Menurut Kadir (2002) suatu sistem basis data yang lengkap akan memiliki komponen-komponen pendukung utama, yaitu : 1. Perangkat keras (hardware) a. Unit Pusat Pengolah (central processing unit) berjumlah minimal satu untuk sistem stand alone atau lebih banyak lagi (multiprocessor) untuk sistem besar. b. Media penyimpanan data, berupa harddisk untuk keperluan back-up data. c. Media input berupa keyboard, mouse, dan lain-lain. d. Perangkat jaringan untuk koneksi berupa LAN card, modem, dan lain-lain. e. Media output berupa monitor untuk tampilan visual, dan lain-lain. 2. Perangkat lunak (software) Perangkat lunak yang digunakan untuk mengoperasikan sistem basis data adalah sistem operasi dan program pendukung DBMS. Sistem operasi adalah program yang mengaktifkan atau mengfungsikan sistem komputer, mengendalikan seluruh sumber daya seperti proses I/O, manajemen file-file. 3. Basis data (database) Sistem database dapat memiliki beberapa database. Setiap database memiliki sejumlah objek database seperti tabel, indeks, prosedur tersimpan dan lainlain. Selain menyimpan data, setiap database juga menyimpan definisi struktur baik untuk database maupun objek-objeknya secara detail. 4. Pemakai (user) Manusia merupakan elemen penting pada sistem basis data. Pemakai ini terbagi atas empat kategori : a. Application programmer (pemrogram aplikasi) Pemakai yang berinteraksi dengan basis data dengan menggunakan bahasa pemrograman visual, seperti PHP dan Visual Basic. 25 b. Casual user (pemakai mahir) Pemakai yang berinteraksi dengan database tanpa menulis modul program, tetapi mampu menggunakan query untuk mengakses database. c. End user (pemakai akhir) Pemakai yang berinteraksi dengan database dengan murni melalui program aplikasi yang telah jadi, contoh kasir. d. Specialist user (pemakai ahli) Pemakai yang menulis aplikasi basis data non-konvensional tetapi untuk keperluan khusus, seperti pada implementasi expert system, di mana bisa mengakses basis data baik dengan DBMS maupun tidak. 5. Perangkat lunak lain Aplikasi lain bersifat opsional, artinya ada tidaknya bergantung pada kebutuhan. DBMS yang digunakan lebih berperan dalam pengorganisasian data dalam database. Sementara bagi pemakai database khususnya end user dapat dibuatkan program aplikasi khusus untuk melakukan pengisian, pengubahan dan pengambilan data 2.4.4 Kegunaan DBMS Menurut Kadir (2002) tujuan awal dan utama dalam pengelolaan data dalam sebuah basis data adalah agar dapat diperoleh data dengan mudah dan cepat. Selain itu pemanfaatan basis data dilakukan untuk memenuhi tujuan-tujuan berikut ini : 1. Kecepatan dan kemudahan Basis data memungkinkan untuk dapat menyimpan dan melakukan perubahan terhadap data dan menampilkan kembali dengan cepat dan mudah. 2. Efisiensi ruang penyimpanan (space) Efisiensi ruang penyimpanan dapat dilakukan karena terjadi penekanan jumlah redundansi data, baik dengan penerapan sejumlah pengkodean atau menggunakan relasi-relasi antar kelompok data yang saling berhubungan satu sama lain. 26 3. Keakuratan (accuracy) Pemanfaatan pengkodean atau pembentukan relasi antar data bersama dengan menerapkan aturan tipe data, domain data dan lainnya secara ketat dapat menekan ketidakakuratan pemasukan data atau penyimpanan data. 4. Ketersediaan (availibility) Pertumbuhan data sejalan dengan waktu yang semakin membutuhkan ruang penyimpanan yang besar, padahal tidak semua data digunakan karena itu dapat dipilih adanya data utama, data transaksi, hingga data kadaluarsa. 5. Kelengkapan (completeness) Lengkapnya data yang dikelola dalam sebuah basis data bersifat relatif. Record-record data dapat ditambahkan untuk menambah kelengkapan. 6. Keamanan (security) Membangun basis data, sehingga dapat ditentukan siapa saja yang berhak menggunakan basis data dan operasi apa saja yang boleh dilakukan sehingga keamanan terjamin. 7. Kebersamaan pemakaian (share ability) Pemakaian basis data umumnya tidak terbatas pada satu pemakai atau satu lokasi saja. Basis data juga dapat dikelola oleh sistem yang didukung lingkungan banyak pemakai (multiuser). 2.5 Bahasa Pemrograman Microsoft Visual C# Visual studio C# adalah bahasa pemrograman baru yang diciptakan oleh Microsoft (dikembangkan di bawah kepemimpinan Anders Hejlsberg yang juga telah menciptakan berbagai macam bahasa pemrograman termasuk Borland Turbo C++ dan Borland Delphi). Bahasa C# juga telah distandarisasi secara internasional oleh ECMA. C# bisa digunakan untuk membangun berbagai macam jenis aplikasi, serta aplikasi berbasis windows (desktop) dan aplikasi berbasis web serta aplikasi berbasis web services seperti halnya pada bahasa pemrograman yang lain. 27 Beberapa alasan kenapa memilih C#, yaitu : a) Sederhana C# bersifat sederhana, karena bahasa ini didasarkan kepada bahasa C dan C++. Seperti C dan C++ atau bahkan Java dalam C# pun akan ditemukan aspek-aspek yang begitu familiar, seperti statements, expression, operators dan beberapa fungsi yang diadopsi langsung dari C dan C++, tetapi dengan berbagai perbaikan yang membuat bahasanya menjadi lebih sederhana. b) Object Oriented Language C# memenuhi syarat-syarat sebagai sebuah bahasa pemrograman yang bersifat Object Oriented, yaitu encapsulation, inheritance dan polymorphism. c) Powerfull dan Fleksibel C# bisa digunakan untuk membuat berbagai macam aplikasi, seperti aplikasi pengolah kata, grafik, spreadsheets, atau bahkan membuat kompiler untuk sebuah bahasa permrograman. d) Efisien C# tidak memiliki terlalu banyak keyword, sehingga dapat mengurangi kerumitan. e) Modular Kode C# ditulis dengan pembagian masing kelas-kelas (classes) yang terdiri dari beberapa routines yang disebut sebagai member methods. Class-Class dan metode-metode ini dapat digunakan kembali oleh program atau aplikasi lain. Hanya dengan memberikan informasi yang dibutuhkan oleh Class dan metode yang dimaksud, maka dapat dibuat suata kode yang dapat digunakan oleh satu atau beberapa aplikasi dan program (reusable code). 2.6 Database SQL Server SQL Server express adalah DBMS yang dikembangkan oleh Microsoft yang merupakan perkembangan lebih lanjut dari MSDE (Microsoft Database Engine). SQL Server Express didistribusikan secara cuma-cuma tanpa biaya lisensi apapun dalam pemakaiannya. 2.6.1 Komponen SQL Server SQL Server 2005 terdiri atas beberapa komponen sebagai berikut: a. Relational Database Engine : komponen utama atau jantung SQL Server 2005. 28 b. Analysis Services : basis dari solusi intelijen bisnis yang ampuh (powerful), dan mendukung aplikasi-aplikasi OLAP (Online Analytical Processing), serta data minning. c. Data Transformation Service (DTS) : sebuah mesin untuk membuat solusi ekspor dan impor data, serta untuk mentransformasi data ketika data tersebut ditransfer. d. Notification Services: sebuah framework untuk solusi dimana pelanggan akan dikirimi notifikasi ketika sebuah event muncul. e. Reporting Services: service yang akan mengambil data dari SQL Server, dan menghasilkan laporan-laporan. f. Service broker: sebuah mekanisme antrian yang akan menangani komunikasi berbasis pesan diantara service. g. Native HTTP Support: dukungan yang memungkinkan SQL server 2005 yang (jika diinstall pada Windows Server 2003) akan merespon request terhadap HTTP end point, sehingga memungkinkan pembangunan sebuah web service untuk SQL Server tanpa menggunakan IIS. h. SQL server Agent : akan mengotomatiskan perawatan database dan mengatur task, event dan alert. i. .NET CLR (Common Language Runtime): akan memungkinkan pembuatan solusi menggunakan managed code yang ditulis dalam salah satu bahasa .NET. j. Replication: serangkaian teknologi untuk menjalin dan mendistribusikan data dan obyek database dari sebuah database ke database lain, dan melakukan sinkronisasi untuk menjaga konsistensinya. k. Full-Text Search: memungkinkan pengindeksan yang cepat dan flexibel untuk query berbasis kata kunci (terhadap data teks yang disimpan dalam database). 2.6.2 Keunggulan SQL Server Keunggulan SQL Server Express adalah dapat diintegrasikan oleh IDE Visual Studio 2005 beserta fitur-fitur DBMS khas keluarga SQL Server seperti : 29 a. Dukungan prosedur penyimpanan b. View, Trigger, dan Cursors c. Utilitas manajemen berbasis commandline seperti sqlcmd dan osql d. Utilitas manajemen berbasis GUI dengan bantuan SQL Management Studio Express (dipasang secara terpisah) e. Dukungan Transact-SQL f. Advanced Query Optimizer g. Dukungan XML secara native seperti dengan Xquery h. SQL CLR, melakukan perintah sql dalam bahasa standar CLR seperti C# i. Utilitas konfigurasi server dengan SQL Configuration Manager 2.6.3 Tipe Data SQL Server Ada 7 kategori tipe data yang disediakan oleh SQL Server : Tabel 2.3 Katagori Tipe Data Katagori Tipe Data Exact numeric Approximate numeric Monetary Date and time Character Binary Tipe data tertentu/spesial Tujuan Menyimpan sebuah angka pasti dengan atau tanpa desimal Menyimpan angka numeric dengan atau tanpa desimal Menyimpan nilai dengan desimal, biasanya digunakan untuk menyimpan data mengenai uang Menyimpan informasi tanggal Menyimpan karakter Menyimpan data binary Menyimpan data yang membutuhkan penanganan khusus, seperti XML atau GUIDs (Globally Unique Identifiers) Sumber (http://msdn.microsoft.com/en-us/library/ms189826(SQL.90).aspx., 2012) 30 Berikut ini adalah penjelasan dari masing-masing katagori dari tipe data tersebut : 1. Tipe Data Exact Numeric Tabel 2.4 Tipe Data Exact Numeric Tipe Data bigint int smallint tinyint decimal (p,s) Besar File 8 bytes 4 bytes 2 bytes 1 bytes 5-17 bytes tergantung tingkat presisi yang dibutuhkan 5-17 bytes tergantung tingkat presisi yang dibutuhkan numeric (p,s) Range Nilai -2E63 sampai 2E63-1 -2E31 sampai 2E31-1 -32,768 sampai 32,767 0 sampai 255 -10E38+1 sampai 10E38-1 -10E38+1 sampai 10E38-1 Sumber (http://msdn.microsoft.com/en-us/library/ms189826(SQL.90).aspx., 2012) 2. Tipe Data Approximate Numeric Tabel 2.5 Tipe Data Approximate Numeric Tipe Data float (p) real Besar File 4 atau 8 bytes 4 bytes Range Nilai -2.23E308 sampai 2.23E308 -3.4E38 sampai 3.4E38 Sumber (http://msdn.microsoft.com/en-us/library/ms189826(SQL.90).aspx., 2012) 3. Tipe Data Monetary Tabel 2.6 Tipe Data Monetary Tipe Data money Besar File 8 bytes smallmoney 4 bytes Range Nilai -922,337,203,685,477.5808 sampai 922,37,203,685,477.5807 -214,748.3648 sampai 214,748.3647 Sumber (http://msdn.microsoft.com/en-us/library/ms189826(SQL.90).aspx., 2012) 31 4. Tipe Data Date and Time Tabel 2.7 Tipe Data Date and Time Tipe Data datetime Besar File 8 bytes smalldatetime 4 bytes Range Nilai 1 January 1753 hingga 31 Desember 9999, dengan tingkat akurasi hingga 3.33 milliseconds 1 Januari 1900 sampai 6 Juni 2079 dengan tingkat akurasi hingga 1 menit Sumber (http://msdn.microsoft.com/en-us/library/ms189826(SQL.90).aspx., 2012) 5. Tipe Data Character Tabel 2.8 Tipe Data Character Tipe Data char (n) Besar File 1-8000 bytes nchar (n) varchar (n) varchar (max) 2-8000 bytes 1-8000 bytes Hingga 2 GB nvarchar (n) nvarchar (max) 2-8000 bytes Hingga 2 GB text Hingga 2 GB ntext Hingga 2 GB Range Nilai Maksimum mencapai 8000 karakter Maksimum 4000 karakter Mencapai 8000 karakter Maksimum mencapai 1,073,741,824 karakter Maksimum 4000 karakter Maksimum mencapai 536,870,912 karakter Maksimum mencapai 1,073,741,824 karakter Maksimum mencapai 536,870,912 karakter Sumber (http://msdn.microsoft.com/en-us/library/ms189826(SQL.90).aspx., 2012) 6. Tipe Data Binary Tabel 2.9 Tipe Data Binary Tipe Data binary (n) varbinary (n) varbinary (max) image Besar File 1-8000 bytes 1-8000 bytes Hingga 2 GB Hingga 2 GB Sumber (http://msdn.microsoft.com/en-us/library/ms189826(SQL.90).aspx., 2012) 32 7. Tipe Data Spesial Tipe data spesial dengan tujuan tertentu pada dasarnya terdiri dari: bit, timestamp, uniqueidentifier, sql_variant, cursor, table, dan XML. Demikianlah ketujuh kategori tipe data yang terdapat di SQL Server. Mengetahui karakteristik tipe data merupakan sebuah pekerjaan penting karena dengan pemilihan tipe data yang tepat dapat mengurangi beban kerja server komputer. Performa server dapat ditingkatkan secara optimal dengan menerapkan tipe data yang tepat.