10 “Rekayasa perangkat lunak adalah sebuah disiplin dimana dalam menghasilkan perangkat lunak bebas dari kesalahan dan dalam pengiriman anggaran tepat waktu serta memuaskan keinginan pemakai.” 2. Menurut Fritz Bauer : “Rekayasa perangkat lunak adalah penetapan dan penggunaan prinsip rekayasa dalam rangka memperoleh perangkat lunak yang dapat dipercaya dan dapat bekerja secara efisien pada mesin nyata.” 3. Menurut IEEE 610.12 : “Rekayasa perangkat lunak adalah sebuah studi pendekatan dan aplikasi secara sistematis, disiplin pengembangan operasi dan pemeliharaan perangkat lunak yang kesemuanya itu merupakan aplikasi rekayasa yang berkaitan dengan perangkat lunak.” Dari ketiga pengertian tersebut, arti yang diberikan Fritz Bauer sangat sesuai dengan tujuan dan sasaran dari rekayasa perangkat lunak. Pernyataan Stephen R. Schach terbatas pada menanggulangi kekurangan yang terjadi jika tidak menerapkan rekayasa perangkat lunak. Pengertian yang diberikan IEEE 610.12 paling baik dalam menyampaikan wujud dari rekayasa perangkat lunak. Rekayasa perangkat lunak merupakan ilmu yang penting untuk diperdalam karena teknologi ini memberikan stabilitas, kontrol, dan organisasi aktifitas yang jika tidak terkontrol dapat menjadi sangat kacau. 11 Ada beberapa tujuan dilakukan rekayasa perangkat lunak. Tujuan tersebut antara lain: 1. Untuk membangun software yang benar dan benar sebuah software (Right Software and Software Right). 2. Untuk membangun software yang tepat (correct). 3. Dikelola dengan baik untuk pemeliharaan kebenarannya (correctness). 2.2. Data Synchronization Data synchronization merupakan proses penyeragaman data yang dapat terjadi antara dua sumber atau lebih. Penyeragaman data ini dapat berjalan secara berkesinambungan dan dari waktu ke waktu baik dari target penyimpanan data maupun sebaliknya. Data synchronization dapat berupa file maupun database. File synchronization biasanya digunakan untuk backup hard drive secara eksternal. Dapat juga berupa database synchronization yang akan digunakan pada pembuatan aplikasi penjualan ini. Sedangkan model data synchronization dapat digolongkan menjadi dua macam, yakni: 1. Wholesale transfer. Dalam kasus ini, data akan ditransfer ke salah satu host untuk perbandingan local. 2. Timestamp synchronization. Dalam kasus ini, perubahan data akan ditandai dengan perubahan waktu pada data. Dimana penyeragaman akan dilakukan berdasarkan waktu update data tersebut. 12 2.2.1 Mode Operasi Database Synchronizer Dalam database synchronizer, dikenal beberapa mode operasi yang digunakan, diantaranya adalah: 1. Database to files Mode ini akan mengambil database yang sudah ada dan menghasilkan skema untuk setiap objek yang diindikasikan. Setiap objek yang berhasil diindikasikan akan menunjukkan table statis dari database. Untuk dapat menjalankan mode operasi ini, diperlukan koneksi ke database lokal dan hak akses penuh ke lokasi file tertentu/folder sebagai target operasi. 2. Database to database Mode ini akan mengambil database yang sudah ada untuk dijadikan sebagai sumber saat mengupdate data dan skema pada database target. Dengan demikian database target akan memiliki data dan skema yang sama dengan database sumbernya. 3. Files to database Mode ini merupakan penyederhanaan dari mode operasi yang kedua diatas. Dimana pada mode operasi ini akan dibuat perbandingan sementara pada satu / lebih file yang telah dikodekan, untuk kemudian mensikronkan database target berdasarkan file ini. Koneksi ke database lokal diperlukan pada mode operasi ini. Pada file yang telah dibuat ini, dapat ditentukan fungsi atau batasan yang dapat dimodifikasi sesuai kebutuhan yang diharapkan pada database target. Mode operasi ini disebut juga sebagai mode operasi manual. 13 Beberapa mode operasi diatas dapat membantu dalam pengembangan aplikasi yang memiliki fitur untuk mensikronkan database. Namun untuk aplikasi berbasis web, seperti yang kita ketahui kebanyakan host hanya membuka port tertentu saja untuk setiap koneksi share IP/domain nya. Hal ini mengakibatkan database target tidak dapat di remote secara online dari luar jaringan yang telah ditentukan/dibatasi. Sehingga mode operasi yang kedua, yakni database to database tidak dapat diterapkan pada proses pembuatan aplikasi ini. Port koneksi database menggunakan 3306 dan port koneksi share IP/domain yang biasanya dapat diakses adalah port 80 untuk akses publik, port 21 untuk akses FTP (File Transfer Protocol), dan port 22 untuk akses SSH (Secure Shell). 2.3. Extensible Markup Language (XML) XML merupakan bahasa markup (campuran) untuk keperluan umum yang disarankan W3C untuk membuat dokumen markup keperluan pertukaran data antar system yang beraneka ragam. XML merupakan kelanjutan dari HTML (Hyper Text Markup Language) yang merupakan bahasa standar dalam Internet. XML didesign untuk mampu menyajikan data secara ringkas dan sesuai dengan kebutuhan saja. Karena kemampuannya dalam menggambarkan isi dari sebuah dokumen, maka XML juga dapat digunakan untuk menggambarkan sembarang konten database, namun dengan tetap memperhatikan struktur dan cara yang telah distandarkan. 14 2.3.1 Keunggulan XML Keunggulan XML dapat disederhanakan sebagai berikut: 1. Pintar (Intelligence). XML dapat menangani berbagai tingkat (level) kompleksitas. 2. Dapat beradaptasi. Dapat mengadaptasi untuk membuat bahasa sendiri. Seperti Microsoft membuaat bahasa MSXML atau Macromedia mengembangkan MXML. 3. Mudah pemeliharaannya. 4. Sederhana. XML lebih sederhana. 5. Mudah dipindah-pindahkan (Portability). XML mempunyai kemudahan perpindahan (portabilitas) yang lebih bagus. 2.3.2 Peranan XML Dalam Proses Sikronisasi Database Seperti yang dijelaskan pada bagian mode operasi sikronisasi database diatas, maka diperlukanlah sebuah file yang dijadikan sebagai media dalam proses sikronisasi database ini. File ini akan dihasilkan oleh sistem dan digunakan sebagai sumber data yang bersifat sementara. Menciptakan file update database dalam format XML bertujuan agar server pusat maupun server cabang dapat membaca untuk selanjutnya akan digunakan sebagai data perbandingan yang terbaru. Dimana server pusat membaca data update terbaru berupa penjualan perhari dari server cabang. Sedangkan server cabang akan membaca update data harga, PPN dan diskon dari server pusat. Untuk lebih spesifik, penulis membagi proses ini kedalam 2 (dua) proses, yakni: 15 1. Server cabang membaca konten XML ke server pusat berupa update data, PPN dan diskon serta meng-upload konten XML ke server pusat menggunakan koneksi FTP atau SSH. 2. Server pusat membaca konten XML yang telah diupload dari server cabang berupa update data penjualan sesuai tanggal transaksi dan mengenerate konten XML data PPN dan diskon barang. Sebagai gambaran awal, contoh konten XML dapat dilihat pada kode baris dibawah ini: <?xml version="1.0"?> <note> <to>[email protected]</to> <from>[email protected]</from> <heading>Perihal: seminar nasional</heading> <body>Jangan lupa hadiri seminar budaya nasional hari ini di Sabuga</body> </note> 2.4. MySQL MySQL adalah sistem database yang berjalan sebagai server multi-user yang dapat digunakan untuk mengakses sejumlah database. Nama MySQL diambil dari nama pengembang pertamanya yakni Michael Widenius, yang dapat didistribusikan secara gratis dibawah lisensi GNU Public. Beberapa aplikasi blog menggunakan MySQL sebagai databasenya seperti Wordpress, Drupal, dan 16 Joomla. MySQL juga banyak digunakan pada aplikasi berbasis web berskala besar termasuk Wikipedia, Google dan Facebook. 2.5. Aplikasi berbasis web Word Wide Web (WWW), lebih dikenal dengan web, merupakan salah satu layanan yang didapat oleh pemakai komputer yang terhubung ke internet. Web pada awalnya adalah ruang informasi dalam internet, dengan menggunakan teknologi hypertext, pemakai dituntun untuk menemukan informasi dengan mengikuti link yang disediakan dalam dokumen web yang ditampilan dalam browser web. Sejalan dengan perkembangan teknologi informasi, aplikasi web selain digunakan untuk mendapatkan informasi juga digunakan sebagai sarana untuk mempermudah pekerjaan seorang administrator jaringan dalam mengelola jaringan komputer, biasanya aplikasi berbasis web digunakan sebagai alat bantu dalam mengkonfigurasi server pada jaringan komputer. Berikut adalah beberapa alasan kenapa aplikasi berbasis web digunakan: 1. Akses informasi mudah. 2. Mempermudah dalam mengkonfigurasi server. 3. Informasi mudah didistribusikan. 4. Bebas platform, dalam hal ini informasi atau pengeksekusian aplikasi dapat dikerjakan atau disajikan oleh web browser pada sistem operasi mana saja karena adanya standar dokumen berbagai tipe data dapat disajikan. 17 Prinsip dasar cara kerja dari aplikasi berbasis web adalah sebagai berikut : 1. Aplikasi web disimpan dalam dokumen yang disebut dengan halamanhalaman web (web pages). 2. Web page kemudian disimpan dalam komputer yang disebut dengan web server, komputer web server ini akan melayani permintaan dari client yang akan menggunakan aplikasi web. 3. Komputer client melakukan eksekusi aplikasi melalui web browser yang terdapat pada komputer client dengan memasukkan alamat dari aplikasi web yang ditempatkan di web server. Pada Gambar 2.1 diperlihatkan cara kerja dari sebuah aplikasi yang berbasis web. Gambar 2.1 Cara kerja aplikasi berbasis web 2.6. Barcode Scanner / Barcode Reader .Barcode scanner merupakan perangkat alat elektronik yang digunakan untuk membaca cetakan kode barcode. Barcode scanner terdiri dari cahaya infra 18 merah, lensa dan sebuah sensor cahaya optik yang berguna menterjemahkan impuls ke dalam rangkaian listrik. Hampir semua rangkaian pada barcode scanner dilengkapi sirkuit untuk menganalisa data gambar barcode yang disediakan oleh sensor dan mengirimkan konten barcode ke dalam scanner melalui output port. Teknik penggunaan barcode scanner dapat digolongkan berdasarkan metode scanningnya, yakni: 4. Pen or wand-type readers: membutuhkan seorang operator untuk menyentuhkan pena secara merata ke gambar barcode. 5. Semi-automatic handheld readers: operator harus mendekatkan barcode scanner ke gambar barcode dengan posisi terdekat. 6. Fix-mount readers for automatic reading: dalam hal ini tidak dibutuhkan operator, hanya saja posisi gambar barcode scanner harus diatur berdekatan dengan sistematik, sehingga dapat terbaca dengan tepat. 7. Reader gates for automatic scanning: posisi gambar barcode harus berada dibawah gerbang pemindai dalam waktu tertentu, untuk meng-capture kode dengan akurat. 19 Gambar 2.2 Barcode scanner / barcode reader dengan gagang tangan 2.7. Local Area Network Local Area Network (LAN) adalah sejumlah komputer yang saling dihubungkan bersama di dalam satu areal tertentu yang tidak begitu luas, seperti di dalam satu kantor atau gedung. Secara garis besar terdapat dua tipe jaringan atau LAN, yaitu jaringan Peer to Peer dan jaringan Client-Server. Pada jaringan peer to peer, setiap komputer yang terhubung ke jaringan dapat bertindak baik sebagai workstation maupun server. Sedangkan pada jaringan Client-Server, hanya satu komputer yang bertugas sebagai server dan komputer lain berperan sebagai workstation. Ciri-ciri jaringan komputer: 1. Berbagi perangkat keras (hardware). 2. Berbagi perangkat lunak (software). 3. Berbagi saluran komunikasi (internet). 20 4. Berbagi data dengan mudah. 5. Memudahkan komunikasi antar pemakai jaringan. LAN tersusun dari beberapa elemen dasar yang meliputi komponen hardware dan software, yaitu : 1. Komponen Fisik Personal Computer (PC), Network Interface Card (NIC), Concentrator , kabel, konektor, topologi jaringan. 2. Komponen Software Sistem operasi jaringan, Network Adapter Driver, Protokol Jaringan. 2.8. Sistem Operasi Ubuntu Ubuntu merupakan sistem operasi komputer berbasis Debian GNU / Linux Terdistribusi. Kata Ubuntu sendiri diambil dari bahasa Afrika Selatan, yang memiliki makna ideologi “kemanusiaan untuk orang lain” dan dapat didistribusikan secara bebas sebagai perangkat lunak. Ubuntu dirilis pertama kali pada 20 Oktober 2004, dan diperbaharui pada setiap enam bulan sekali untuk menciptakan sistem operasi yang up-to-date. Karena Ubuntu fokus pada kegunaannya, maka sistem operasi Ubuntu dapat diinstall menggunakan Live-CD tanpa perlu menyediakan ruang khusus pada hard drive atau tanpa perlu me-restart komputer. Pada kasus ini, penulis menggunakan Ubuntu 9.04 (Jaunty Jackalope) sebagai server pusat. Dimana didalamnya akan terinstall beberapa servis untuk kebutuhan aplikasi. Seperti Apache Web Server, PHP dan MySQL. 21 2.9. Personal Home Pages (PHP) PHP adalah salah satu bahasa Server-side yang didesain khusus untuk aplikasi web. PHP dapat disisipkan diantara bahasa HTML dan karena bahasa Server side, maka bahasa PHP akan dieksekusi di server, sehingga yang dikirimkan ke browser adalah “hasil jadi” dalam bentuk HTML, dan kode PHP anda tidak akan terlihat. PHP dahulunya merupakan proyek pribadi dari Rasmus Lerdorf (dengan dikeluarkannya PHP versi 1) yang digunakan untuk membuat home page pribadinya. Versi pertama ini berupa kumpulan script perl. Untuk versi keduanya, Rasmus menulis ulang script-script PERL tersebut menggunakan bahasa C, kemudian menambahkan fasilitas untuk Form HTML dan koneksi MySQL. Setelah mengalami perkembangan oleh suatu kelompok open source(termasuk Rasmus), maka mulai versi 3 nya, PHP telah menampakkan keunggulannya sebagai salah satu bahasa server scripting yang handal. Melalui perkembangan yang pesat ini banyak fasilitas yang ditambahkan dan oleh kelompok ini PHP disebut sebagai "PHP: Hypertext Preprocessor" . Sintak yang digunakan berasal dari bahasa C , Java maupun Perl. PHP merupakan bahasa script yang digunakan untuk membuat halaman web yang dinamis. Dinamis berarti halaman yang akan ditampilkan dibuat saat halaman itu diminta oleh client. Mekanisme ini menyebabkan informasi yang diterima client selalu yang terbaru. Semua script PHP dieksekusi pada server dimana script tersebut dijalankan. Oleh karena itu, spesifikasi server lebih 22 berpengaruh pada eksekusi dari script PHP daripada spesifikasi client. Namun tetap diperhatikan bahwa halaman web yang dihasilkan tentunya harus dapat dibuka oleh browser pada client. Dalam hal ini versi dari html yang digunakan harus didukung oleh browser client. PHP termasuk dalam Open Source Product. Jadi anda dapat merubah source code dan mendistribusikannya secara bebas. PHP juga diedarkan secara gratis. PHP juga dapat berjalan diberbagai web server seperti Apache, IIS dan lain sebagainya. 2.10. Apache Web Server Apache merupakan web server yang paling banyak dipergunakan di Internet. Program ini pertama kali didesain untuk sistem operasi lingkungan UNIX. Namun demikian, pada beberapa versi berikutnya Apache mengeluarkan programnya yang dapat dijalankan di Windows. Berdasarkan sejarahnya, Apache dimulai oleh veteran developer National Center for Supercomputing Application (NCSA) httpd. Saat itu pengembangan NCSA httpd sebagai web server mengalami stagnasi. Rob Mc Cool meninggalkan NCSA dan memulai sebuah proyek baru bersama para webmaster lainnya, menambal bug, dan menambahkan fitur pada NCSA httpd. Mereka mengembangkan program ini lewat mailing list. Dengan berpijak pada NCSA httpd versi 1.3, Team Apache mengeluarkan rilis pertama kali secara resmi Apache versi 0.6.2. Nama Apache diambil dari kata “A Patchy Web Server”, server perbaikan yang penuh dengan tambalan (patch). Tambalan yang dimaksud adalah 23 penambahan fitur dan penambalan bug dari NCSA httpd Versi 1.3. Saat ini Apache dipergunakan secara luas. Hal ini disebabkan karena programnya yang gratis, dengan kinerja relatif stabil. Dalam pengembangannya pun mempergunakan sistem bazaar, yakni tiap orang dibuka kesempatan seluas-luasnya untuk dapat memberikan kontribusi dalam mengembangkan program. Kontribusi dikomunikasikan lewat mailing list. Apache mempunyai program pendukung yang cukup banyak. Hal ini memberikan layanan yang cukup lengkap bagi penggunanya. Beberapa dukungan Apache : 1. Kontrol Akses. Kontrol ini dapat dijalankan berdasarkan nama host atau nomor IP. 2. Common Gateway Interface (CGI) , yang paling terkenal untuk digunakan adalah Practical Extraction and Report Language (Perl) didukung oleh Apache dengan menempatkannya sebagai modul (mod_perl). 3. Personal Home Page (PHP Hypertext Processor) : program dengan metode semacam CGI, yang memproses teks dan bekerja di server. Apache mendukung PHP dengan menempatkannya sebagai salah satu modulnya (mod_php). Hal ini membuat kinerja PHP menjadi lebih baik 4. Secure Socket Layer (SSL) : adalah mekanisme pembungkus data yang berlalu-lalang antara client dan server dengan suatu enkripsi data. Apache mendukung SSL dengan menempatkannya sebagai salah satu modulnya (mod_ssl).