MAKALAH SEMINAR KERJA PRAKTEK CVS (CONCURRENT VERSIONING SYSTEM) SEBAGAI SISTEM PENGENDALI VERSI PENGEMBANGAN PERANGKAT LUNAK PADA PT JAKARTA SOFTWARE KOMUNIKASI Agung Setiawan1, Adian Fatchur Rochim, ST, MT2 Jurusan Teknik Elektro Fakultas Teknik Universitas Diponegoro Jl. Prof. Sudharto, Tembalang, Semarang, Indonesia
Abstrak : Pengelolaan proyek pengembangan perangkat lunak merupakan proses yang kompleks dan penuh resiko. Kesulitannya dapat dianalogikan dengan pemain sirkus yang menimang puluhan bola di udara. Seorang project manager harus mampu mengelola permintaan klien, waktu yang terbatas, anggaran yang ketat, ketersediaan personil, dan perubahan yang senantiasa terjadi. Mencoba mengelola proyek dengan tanan kosong sama dengan mendaki gunung tanpa perlengkapan yang memadai. Dalam dunia pengembangan perangkat lunak telah banyak perangkat pembantu yang tersedia dan siap pakai dan banyak diantaranya adalah gratis dan open source. Version control adalah salah satu perlengkapan dasar dalam membangun aplikasi perangkat lunak. Tanpa penggunaan version control, tim pengembang akan disibukkan dengan masalah koordinasi yang menghabiskan energi. Dengan adanya sistem pengendali versi ini maka sebuah perangkat lunak dapat dipecah menjadi beberapa modul dan masing-masing modul ini dikerjakan oleh individu programmer yang berbeda. Kemudian modul-modul yang terpisah dapat disatukan di server repository pengendali versi menjadi suatu aplikasi yang utuh. Kata-kunci : Version Control, CVS, Commit, Checkout
1. PENDAHULUAN 1.1 Latar Belakang Sistem komputer menyediakan suatu sistem solusi berupa perangkat lunak untuk menyelesaikan suatu masalah di berbagai sektor sehingga mendorong setiap pihak untuk dapat menggunakan dan memanfaatkannya secara optimal. Sistem kendali versi memegang peranan penting dalam mendukung suatu proses pengembangan sebuah perangkat lunak dari segi manajemen kode sumber dimana proses pengembangan dilakukan oleh beberapa programmer sekaligus. PT JAKARTA SOFTWARE KOMUNIKASI (Jaksoft) sebagai perusahaan jasa dan solusi perangkat lunak tidak lepas dari penggunaan sistem kendali versi sebagai alat bantu untuk melakukan manajemen terhadap kode sumber. Dengan adanya sistem pengendali versi ini maka sebuah perangkat lunak dapat dipecah menjadi beberapa modul dan
1
Mahasiswa Jurusan Teknik Elektro UNDIP Dosen Jurusan Teknik Elektro UNDIP
2
masing-masing modul ini dikerjakan oleh individu programmer yang berbeda. Kemudian modul-modul yang terpisah ini dapat disatukan di server repository pengendali versi menjadi suatu aplikasi yang utuh. 1.2 Tujuan Tujuan dari Kerja Praktek di PT JAKARTA SOFTWARE KOMUNIKASI adalah : a) Mengetahui tentang pengelolaan proyek pengembangan perangkat lunak menggunakan Concurrent Versioning System. b) Mengetahui tentang teknologi sistem pengendali versi pada pengembangan perangkat lunak. 1.3 Batasan Masalah Makalah ini hanya membahas masalah instalasi, konfigurasi, cara kerja dan fungsi-fungsi pada sistem pengendali versi dengan menggunakan CVS (Concurrent Versioning System) pada mesin lokal dan program klien TortoiseCVS.
2. DASAR TEORI 2.1 Version Control Pengontrol versi (atau disebut juga pengontrol revisi, atau manajemen kode sumber) merupakan suatu sistem pengelolaan berbagai revisi dari suatu unit informasi baik berupa dokumen, program, ataupun informasi lainnya yang disimpan dalam media penyimpanan komputer. Sistem ini utamanya digunakan dalam proses pengembangan perangkat lunak dimana tiap anggota dalam tim pengembang dapat saling melakukan perubahan terhadap sebuah berkas yang sama. Tiap-tiap perubahan yang dilakukan biasanya diidentifikasikan dengan menggunakan angka ataupun karakter yang kemudian diistilahkan sebagai "nomor revisi", ataupun sederhananya disebut "revisi". Misalnya sekumpulan berkas yang disertakan saat inisialisasi disebut sebagai "revisi 1", kemudian saat terjadi perubahaan atas satu atau beberapa berkas yang ada disebut sebagai "revisi 2", dan seterusnya.
Gambar 2 Prinsip Kerja CVS
2.2.1 Fitur CVS 1. CVS dapat mengambil kembali versi lama software. 2. CVS dapat menyimpan semua versi dari tiap file yang dibuat. 3. CVS memungkinkan akses file secara bersamaan baik untuk dibaca atau ditulisi. 4. CVS menyimpan hanya perubahan file, tidak keseluruhan file 5. CVS dapat melakukan forking (menciptakan cabang dalam pengembangan perangkat lunak sehingga ada dua versi atau lebih yang dikembangkan dengan jalur yang berbeda, yang berasal dari perangkat lunak yang sama) 2.3 TortoiseCVS
Gambar 1 Pohon Historis dari Sebuah Proyek yang Menggunakan Pengontrol Versi
2.2 CVS CVS ( Concurrent Versioning System ) adalah sebuah sistem pengendali versi berbasis clientserver yang digunakan pada proses pengembangan perangkat lunak. CVS mengatur perubahan versi file pada suatu proyek yang melibatkan banyak file dan atau banyak pengembang. Dengan ini, kita dapat merekam sejarah file sumber dan dokumen. Sehingga memungkinkan kita untuk selalu mengtrack file-file yang kita kerjakan saat kita sedang mengerjakan suatu proyek bersama - sama..
TortoiseCVS adalah CVS klien untuk Microsoft Windows yang dirilis oleh General Public License. Tidak seperti kebanyakan CVS, CVS ini termasuk dalam Windows shell dengan menambahkan entri ke dalam menu kontekstual dari file explorer, sehingga tidak berjalan di window lain. TortoiseCVS terintegrasi dengan menu windows explorer sehingga sangat memudahkan pengguna dalam proses manajemen source code suatu perangkat lunak. 3. REVISION CONTROL MENGGUNAKAN CVS 3.1 Persyaratan Sistem Dari segi hardware, spesifikasi PC yang digunakan untuk server minimal memiliki sisa HD 200 MB dengan kapasitas RAM 128 MB dan dengan sistem operasi diatas Windows XP. Server yang digunakan adalah CVSNT.
Sisi klien, program yang dibutuhkan adalah TortoiseCVS dengan minimal hardware yang memiliki sisa HD 200 MB dengan kapasitas RAM 64 MB. CVSNT berfungsi untuk menyediakan layanan CVS server atau layanan berbasis port 2401. Tanpa adanya CVSNT pada server maka TortoiseCVS tidak bisa bekerja pada klien.
3.2 Instalasi TortoiseCVS
1) Download paket TortoiseCVS dari link berikut 2) 3) 4) 5) 6) 7)
http://tortoisecvs.org/download.shtml secara gratis. Aktifkan file installer TortoiseCVS tadi dengan cara klik dua kali atau klik kanan lalu pilih open. Pilih lokasi instalasi dari TortoiseCVS. Lokasi default adalah C:\Program Files\TortoiseCVS Pilih tipe instalasi TortoiseCVS. Jika pada saat proses instalasi tidak terdapat masalah maka proses instalasi telah berhasil. Restart komputer setelah proses instalasi selesai. Buka Windows Explorer lalu klik kanan pada sembarang area. Jika muncul menu TortoiseCVS maka program telah berhasil diinstal
2) Ketikkan perintah cvs –d direktori_path init direktori path adalah lokasi direktori yang akan kita gunakan sebagai repository server. Misal pada kasus ini adalah direktori “repositoryCVS” yang terdapat pada drive C. cvs –d C:\repositoryCVS init 3) Kemudian CVS akan membuat direktori dengan nama “CVSROOT” pada direktori “repositoryCVS” tadi. 4) Jika sudah terdapat direktori “CVSROOT” berarti pembuatan repository telah berhasil
Gambar 4 Direktori CVSROOT
3.4 Membuat Modul Baru Pembuatan modul dilakukan pada direktori tempat pengembang perangkat lunak bekerja, atau disebut dengan sandbox. Misal sanbox adalah D:\sanboxCVS 1) Buat direktori “database” di dalam sandbox, direktoi inilah yang akan digunakan sebagai nama modul baru. 2) Buat file “databaseConnection.php” didalam direktori “database”. 3) Ketikkan isi file, misal: Gambar 3 Menu TortoiseCVS
3.3 Membuat Repository
$host="";
Agar dapat bekerja dengan CVS, terlebih dahulu harus membuat repository server yang berguna menyimpan file-file dalam proyek pengembangan perangkat lunak. Berikut langkah lengkap membuat repository pada CVS 1) Buka Command Prompt pada Windows dengan cara klik Start Menu > All Programs > Accessories > Command Prompt.
$username=""; $password=""; mysql_connect($host,$username,$password); mysql_select_db($database); ?>
4) Klik kanan pada area kosong di direktori “database” dan pilih CVS > Make New Module. 5) Ada beberapa parameter yang harus diisi pada kotak dialog yang muncul: a. CVSROOT :connection string dari repository server tempat untuk menyimpan modul baru ini. b. Protocol : pilih locally mounted folder(:local:) karena menggunakan mesin server lokal. c.Repository folder: ketikkan “C:/repositoryCVS” d. Module: gunakan nama default, yaitu nama folder module.
3.5 Commit Modul Modul baru yang telah diciptakan tidak otomatis masuk kedalam repository server, kita perlu menambahkannya dengan cara: 1) 2) 3) 4)
Klik kanan file “databaseConnection.php, pilih CVS Add. Klik kanan lagi, kali ini pilih Cvs Commit. Pada kotak dialog yang muncul ketikkan komentar seperlunya lalu tekan OK Module baru sudah tersimpan pada server
3.6 Checkout Modul Checkout adalah mengambil module yang terdapat pada repository untuk disimpan pada sandbox guna kepentingan pengembangan module. Untuk melakukan checkout misal kita membuat sandbox baru dengan nama direktori “sandboxCVS2” untuk membedakan dengan sandbox yang pertama. Adapun proses checkout dilakukan sebagai berikut: 1)
2)
Masuk pada sandbox “sandboxCVS2”, kemudian klik kanan pada area kosong dan pilih CVS Checkout. Kotak dialog muncul. Isikan beberapa parameter yaitu: a) CVSROOT : conection string untuk melakukan koneksi dengan repository. b) Protocol : pilih local c) Repository Folder: Repository tempat menyimpan module yang akan kita ambil. d) Module:nama modul yang akan kita ambil
Gambar 5 Dialog membuat modul baru
6) Tekan OK dan modul baru sudah tercipta
Gambar 7 Dialog Checkout Modul Gambar 6 Modul database
3)
Tekan OK maka modul “database” sudah terdapat pada sandbox “sandboxCVS2”
3.7 Melakukan Perubahan Modul Proses pengembangan perangkat lunak selalu diwarnai dengan perubahan-perubahan modul, 1) Edit file yang ingin ditambahkan source codenya. 2) Simpan file. 3) File yang telah mengalami perubahan ini tidak otomatis tersimpan ke repository. Oleh karena itu, perlu dilakukan commit file 4) Klik kanan file dan pilih CVS Commit. 5) Modul baru sudah tersimpan di repository.
3.8 Update Sandbox Saat kita bekerja bersama dengan orang lain maka bisa saja modul atau file dalam repository sudah diubah oleh teman kita dan sudah di commit kembali ke repository. Untuk menyamakan modul yang kita miliki di direktori kerja kita dengan modul yang terbaru yang berada di repository karena perubahan tadi maka kita perlu melakukan updating. Updating dapat bekerja di file tunggal, satu set file yang dipilih, atau secara keseluruhan pada semua hirarki folder. Update dapat dilakukan dengan cara pilih file atau folder yang diinginkan, klik kanan dan pilih CVS Update. Dialog proses akan muncul menunjukkan proses update yang sedang berjalan. Ketika orang lian juga melakukan update, hasilnya akan bersatu dengan file kita atau istilahnya merging. CVS akan selalu menjaga setiap perubahan yang telah dilakukan terhadap file yang sama. Repository tidak akan terpengaruh oleh proses update jika kita menerima laporan conflict dalam proses update.
Gambar 8 History File
3.10 File Revision History TortoiseCVS menyediakan dua metode untuk mereview dan bekerja dengan history dari file. Pertama dari dialog history, kita dapat melihat history dari file dengan cara klik kanan file tersebut dan pilih CVS > History seperti cara diatas tadi. TortoiseCVS juga menyediakan dialog Revesion Graph yang secara grafis memperlihatkan history dari file, kita dapat melihatnya dengan cara klik kanan file dan pilih CVS > Revision Graph.
3.9 Mengganti Versi Module Adakalanya pengembang perlu untuk mengganti kembali perubahan yang telah di checkin dan kembali lagi ke revisi awal file. Hal tersebut dapat dilakukan dengan langkah sebagai berikut: 1). Klik kanan di file dan pilih CVS > History untuk membuka dialog history 2). Muncul dialog history file yang menampilkan versi-versi suatu file lengkap beserta komentar perubahan yang telah terjadi ketika dilakukan commit file. 2). Klik kanan di revisi yang kita butuhkan dan pilih option “Save this revision as” 3). Ketika dialog Save As muncul klik tombol “Save”. 4). Kita telah mendapatkan versi lama dari sebuah file
Gambar 9 Dialog Revision Graph
Seperti dialog history, dialog Revision Graph juga akan menampilkan keterangan dan operasi CVS pada setiap revisi, tag atau branch . 4. PENUTUP 4.1 Kesimpulan 1. CVS ( Concurrent Versioning System ) sangat bermanfaat untuk mengontrol versi dari perangkat lunak yang masih dalam tahap pengembangan. 2. Dengan CVS, kita bisa mengambil kembali versi lama perangkat lunak yang pernah dibuat. 3. CVS memungkinkan para pengembang untuk bekerjasama dalam sebuah proyek pengembangan perangkat lunak yang melibatkan banyak orang. 4. CVS memungkinkan para pengembang untuk bekerjasama tanpa dibatasi oleh daerah geografi karena semua kode sumber berada di server repository. 5. Repository adalah tempat penyimpanan kode sumber suatu proyek pengembangan perangkat lunak. 6. Pengembang bekerja per modul pada direktori kerja mereka sendiri-sendiri untuk kemudian disatukan di server repository melalui commit. 7. Commit adalah melakukan upload kode sumber dari direktori lokal ke server repository. . 4.2 Saran 1. Dengan tercapainya tujuan dari kerja praktek ini, maka penyusun berharap, PT. Jakarta Software Komunikasi tidak menutup kemungkinan untuk melakukan hubungan lebih jauh lagi dan masih selalu terbuka untuk memberi kesempatan kepada mahasiswa Universitas Diponegoro untuk melaksanakan kerja praktek ataupun penelitian untuk tugas akhir. 2. Untuk menghindari adanya conflict file pada kode sumber maka dalam pengembangan perangkat lunak ada pembagian kerja per modul kepada tiap pengembang. 3. Untuk meningkatkan kinerja maka sebaiknya server repository terpasang pada suatu mesin tersendiri terpisah dari server-server lainnya.
4. Diperlukan proteksi terhadap server repository sehingga kode sumber tidak bisa dicuri. 5. Untuk mempertimbangkan penggunan revision control terbaru seperti SVN dan GIT.
DAFTAR PUSTAKA [1] Harrsion, Lesley, TortoiseSVN 1.7 Beginner’s Guide, Packtpub, Birmingham, 2011 [2] Kemper, Chris, Foundation Version Control for Web Developers, friendsofED, Newcastle, 2012. [3] Loeliger, Jon;Matthew McCullogh, Version Control with Git, 2nd Edition, Oreilly, San Francisco, 2012 [4] Mason, Mike, Pragmatic Guide to Subversion,Pragmatic Bookshelf, New Jersey,2010 [5] Muhardin, Endy., Konsep dan Penggunaan Subversion, Penerbit Artivisi, Jakarta, 2007. [6] Supriyanto., “Setting CVS Server dan Cara Penggunaannya”, Info Linux, No 07, Juli 2005, h. 56-61. [7] --, CVS, http://en.wikipedia.org/wiki/Concurrent_Version s_System, September 2012 [8] --, Guided Tour to Cvs, http://netbeans.org/kb/docs/ide/cvs.html, Desember 2012 [9] --, Revision Control, http://en.wikipedia.org/wiki/Revision_control, September 2012. [10] --, Introduction to CVS on bigmazzy with Tortoise CVS, http://www.math.uaa.alaska.edu/~afkjm/cs401/c vshelp.html, Oktober 2012
BIOGRAFI PENULIS AGUNG SETIAWAN (L2F008002). Dilahirkan di Batang, 26 Juni 1990, menempuh pendidikan dasar di SD Negeri 02 Bandar Batang, SMP Negeri 01 Bandar Batang, SMA Negeri 01 Pekalongan. Saat ini masih menjadi Mahasiswa Jurusan Teknik Elektro Fakultas Teknik Universitas Diponegoro Semarang konsentrasi Teknik Informatika dan Komputer. Mengetahui dan Mengesahkan Dosen Pembimbing
Adian Fatchur Rochim ST.,MT. NIP. 197302261998021001