IF 5124 ‐ Evolusi Perangkat Lun ak -...

23
IF F5124 4 ‐Ev Eksplor Anggy Ardian Reny M volusi rasi CVS 10/ y Trisna to Wib Medikaw i Pera SNT ‐ To /9/2013 doli [23 owo [2 wati [23 angka ortoiseC 3512116 351213 351211 at Lun VS 6] 37] 19] nak

Transcript of IF 5124 ‐ Evolusi Perangkat Lun ak -...

 IF

 

     

     

F51244 ‐ EvEksplor

AnggyArdianReny M

volusirasi CVS

10/

y Trisnato WibMedikaw

i PeraSNT ‐ To

/9/2013 

doli [23owo [2wati [23

angkaortoiseC

3512116351213351211

at LunVS 

6] 37] 19] 

nak

 

LANDASAN TEORI

Concurrent Versioning System (CVS)

CVS (Concurrent Versioning System) adalah sebuah sistem kendali versi, atau

suatu program manajemen versi yang mengatur perubahan versi file pada suatu proyek

yang melibatkan banyak file dan atau banyak developer. CVS adalah nenek moyang

dari revision control system, direlease pada tahun 1986. Suatu program manajemen

versi memungkinkan banyak developer mengerjakan suatu proyek secara bersama dan

juga memungkinkan satu developer yang mengerjakan suatu proyek untuk mengontrol

versi file-file yang sedang dikembangkan. CVS biasanya digunakan sebagai salah satu

bagian penting dalam pengembangan perangkat lunak dimana sistem ini berfungsi

melacak dan mengkoordinasi setiap perubahan source code yang dilakukan oleh

banyak developer. Karena kegunaanya, CVS saat ini sangat populer di dunia

pengembangan perangkat lunak dengan metodelogi open source.

CVS adalah program manajemen versi yang dirancang untuk menangani proyek

dengan file teks murni seperti program, dokumentasi dalam format teks (misalnya

dalam txt, html, sgml atau LaTex), bukan file atau dokumen biner seperti dokumen

milik Microsoft Office

Bug biasanya muncul pada saat perangkat lunak sedang dimodifikasi, dan

mungkin tidak disadari keberadaan bug tersebut untuk waktu yang lama. Dengan

menggunakan CVS, versi software sebelum bug terjadi dapat dilacak dan dapat dilihat

perubahan apa yang dilakukan yang menyebabkan timbulnya bug.

Jika ada banyak developer yang mengerjakan suatu proyek, kemungkinan

terjadinya proses saling menimpa (overwrite) program akan sangat besar. CVS dapat

membantu mengatasi hal ini dengan cara memisahkan/mengisolasi developer yang satu

dengan yang lain. Setiap developer bekerja di direktori masing-masing kemudian CVS

menggabungkan proyek saat semua developer telah menyelesaikan pekerjaannya.

Prinsip Kerja CVS

CVS merupakan sistem yang berjalan secara client server, bila ingin

menjalankan CVS developer harus terhubung dengan server, tetapi dapat juga berjalan

standalone dengan menggunakan server localhost.

Dalam CVS, file dalam suatu proyek disimpan pada tempat penyimpanan yang

disebut dengan repository. Jika ingin mengakses file dalam repository, developer harus

log

rep

dis

To

kek

IDE

ters

Ge

Wi

exp

me

ma

gin terlebih

pository ke d

alin kembali

rtoiseCVS

CVS b

kurangan da

E (integrate

sebut dicipt

neral Public

indows shel

plorer, sehin

enu window

anajemen sou

dahulu, se

direktori tem

i ke reposito

Gam

bekerja den

ari CVS. P

ed developm

takanlah To

c License. T

ll dengan m

ngga tidak b

ws explorer

urce code su

etelah itu m

mpat bekerja

ory, disebut j

mbar 1: Arsi

gan comma

ada saat ini

ment environ

ortoise CVS

Tidak seper

menambahka

berjalan di

r sehingga

uatu perangk

Gambar 2

melakukan

. Setelah pe

juga melakuk

itektur CVS

and line in

i pengemban

ment) grafis

S salah satu

rti kebanyak

an entri ke

window lai

sangat mem

at lunak.

2: TortoiseCV

checkout y

kerjaannya s

kan checkin

Client-Serv

nterface, ini

ngan progra

s, maka unt

u front-end

kan CVS, C

dalam me

in. TortoiseC

mudahkan d

VS

yaitu menya

selesai maka

atau commi

ver

i merupakan

am banyak m

tuk memenu

client yang

CVS ini term

nu kontekst

CVS terinte

developer d

alin file da

a file-file tad

it.

n salah sat

menggunaka

uhi kebutuha

g dirilis ole

masuk dalam

tual dari fi

egrasi denga

dalam prose

ari

di

tu

an

an

eh

m

le

an

es

EKSPLORASI CVS

1. Spesifikasi Perangkat Lunak

Berikut ini adalah spesifikasi perangkat lunak CVSNT :

1. Bisa berjalan diatas Sistem Operasi windows

2. Dapat menyimpan semua versi dari tiap file yang dibuat

3. Dapat mengatur hak akses file

4. Memungkinkan akses terhadap file secara bersamaan (konkuren file)

5. Menyimpan hanya perubahan file

6. Dapat melakukan pencatatan perubahan yang ada pada file awal, sehingga disk space

yang digunakan lebih sedikit

7. Dapat melakukan branching (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

8. Sangat berguna digunakan untuk proyek yang melibatkan banyak orang, terutama

dalam menghindari konflik terhadap perubahan pada file yang sama.

2. Kelebihan dan Kekurangan Perangkat Lunak

Berikut ini adalah kelebihan dari CVS:

1. Menu TortoisCVS terintegrasi dengan menu Windows Explorer

TortoisCVS memungkinkan para developer untuk bekerja dengan file yang dikontrol

oleh CVS langsung dari Windows Explorer. TortoiseCVS memenuhi dan

menyediakan environment “point-end-click” dengan penggunaan dan konfigurasi

yang sangat mudah, hanya dengan klik kanan semua menu dapat diakses.

2. Terdapat banyak resoure dan referensi yang membahas tentang CVS, sehingga pada

tahap awal penggunaan, developer mendapat panduan dengan mudah. Resource yang

ada berupa buku dan tutorial on-line.

• O'Reilly's "Open Source Development with CVS", 3rd edition, dapat diakses

pada http://cvsbook.red-bean.com/ (under the GPL) Buku dapat diakses pada:

http://www.oreilly.com/catalog/1932111816/

• LinuxChix's own Jenn Vesperman wrote O'Reilly's "Essential CVS", dari

http://www.oreilly.com/catalog/cvs/

SVN merupakan versioning sistem yang serupa dengan CVS berikut ini adalah

perbandingan antar CVS dan SVN dilihat dari kriteria: repository format, speed, tags

& branches, meta data, file types, rollback, transactions, availability, internal

architecture and code. Kolom dengan background berwarna pink merupakan

kekurangan dan backgroud berwarna biru merupakan kelebihan

No Compared item CVS SVN

1 Repository format

CVS is based on RCS files of

versions control. Each file connected

to CVS is an ordinary file containing

some additional information. It is

quite natural that the tree of these

files repeats the file tree in the local

directory. Thus, with CVS you

should not be anxious about data

loss, and you can easily correct RCS

files if necessary.

The basis of SVN is a relational

database (BerkleyDB) either set of

binary files (FS_FS). On one hand,

this settles many problems (for

example, concurrent access through

the file share) and enables new

functionalities (for example,

transactions at operations

performance). However, on the other

hand, data storage now is not

transparent, or at least is not available

for user interference. That is why the

utilities for "curing" and "recovering"

of the repository (database) are

provided.

2 Speed

CVS works more slowly. As a whole, due to some constructive

solutions, SVN really works faster

than CVS. It transmits less

information through the network and

supports more operations for offline

mode. However, there is the reverse of

the medal. Speed increasing is

achieved basically at the expense of

full backup of all work files on your

computer.

3

Tags & Branches

(!!!

IMPORTANT)

To our point of view, these are

implemented properly.

The SVN developers assert with pride

that they have got rid of 3

measurements by working with tags

and branches. In practice it means that

they have substituted both concepts

for a capability of copying file(s) or

directories within the repository with

saving the history of changes. That is,

both tag creation and branch creation

are substituted for copying within the

repository. From the SVN developers'

viewpoint, this is very elegant

decision, which simplifies one's life.

However, we think that there is

nothing to be proud of. As for

branches, everything is not so bad,

now branches are nothing but separate

folders in the repository, which earlier

have had some interconnection. As for

tags, everything is much worse. Now

you cannot tag a code, this function is

simply missing. Certainly, to some

extent this is compensated by

universal numbering of files in SVN,

that is, the whole repository gets the

version number, but not each separate

file. However, we suppose you will

not deny that it is not very convenient

to store a four- digit number instead of

a symbolic tag.

4 Meta data

CVS allows to store of only files and

nothing else.

SVN allows to "attach" to a file any

number of all possible named

attributes. Excellent functionality, but

it is not quite clear what it is necessary

for.

5 File types

CVS was initially intended for text

data storage. That is why storage of

other files (binary, unicode) is not

trivial and requires special

information, as well as adjustments

on either server or client sides.

SVN manipulates all the file types and

does not require your instructions.

6 Rollback

CVS allows to rollback any commit

in the repository, even if this may

require some time (each file should

be processed independently)

SVN does not allow rollback of

commit. Authors suggest copy good

repository state to the end of trunk to

overwrite bad commit. However bad

commit itself will remain in

repository.

7 Transactions

In CVS the support of transactions by

the principle "all or nothing" is

completely absent. For example,

when you checkin several files

(transfer them to the server), it is

possible that the operation will be

completed only for some of these

files, and will not be completed for

the rest (due to conflicts, for

example). As a rule, it is sufficient to

correct the situation and to repeat the

operation for the remaining files (not

for all files). That is, the files will be

checked in in two steps. No cases of

the repository damage due to absence

of this functionality were observed.

SVN does support transactions by the

principle "all or nothing". Probably

this is an advantage of the system.

8 Availability

Presently CVS is supported

everywhere where you might need it.

SVN not yet so widly used, as the

result there are places where it support

still not implemented.

9

Internal

architecture and

code.

CVS is very old system. Initially

CVS was written as bunch of scripts

around RCS executable. Later this

packaged into single executable. But

internal structure of code is poor and

have lots of historical fixes. Till now

there was several attempts to rewrite

CVS from scratch, but as it is known

without success. We, personally,

tried to extract client code to make

better integration between plug-in

and CVS, but without success. Right

now we not think that CVS may

grows too much in its functionality.

Subversion authors really spent some

time on internal SVN architecture.

Still not know how good are some

decisions they make. But one is clear,

the code is well expandable, and

future improvements are coming.

9. Fitur-fitur dari Perangkat Lunak TortoiseCVS

Berikut fitur-fitur yang terdapat pada aplikasi Tortoise CVS :

a. Sandboxes (direktori Kerja)

TortoiseCVS memiliki metode kerja yang unik seperti kebanyakan VCS yang

lain, developer dapat mengolah sebuah file secara konkuren. bekerja dengan cara

mengambil file dari repository dan disalin kesebuah direktori kerjayang dinamakan

sandboxes.

b. Check Out Modul

Proyek yang dikerjakan atau dikembangkan disebut dengan modul. Saat pertama

kali mengambil modul dari CVS server disebut dengan Checkout, sehingga akan

secara automotais tercipta sebuah sandbox yang baru untuk mengerjakan sebuah

modul. Saat checkout pada TortoiseCVS biasanya akan muncul beberapa dialog

seperti :

- Protocol

- Server

- Port

- Repository Directory

- Username

- Password

- CVS Root

- Module

c. Repository

Repository CVS adalah sebuah tempat atau folder dimana menyimpan secara

lengkap salinan versi semua file dan direktori yang ada dalam version control.

Repository pada TortoiseCVS dapat diakses dengan alamat yang sesuai pada server

lokasi repository.

d. Window Explorer dan TortoiseCVS

Saat checkout modul, eksplorasi TortoiseCVS bekerja dengan windows. Terlihat

bahwa file akan muncul pada windows explorer dengan ikon yang berbeda.

e. Update Sandbox

Sandbox yang kita miliki dapat di-update jika ingin bekerja sama dengan user

lain. Istilah updating juga dikatakan saat proses perubahan dari server ke direktori

kerja.

f. Commit Repository

Commit berarti membuat modifikasi pada local direktori ke repository. Sehingga

module pada repository akan ikut berubah sesuai dengan perubahan versi yang

dilakukan pada sandbox. Sebelum melakukan commit, pastikan sudah tidak ada

conflict pada user lainnya.

g. Watch, Edit dan Unedit

Fitur ini dibuat agar repository tetap terjaga dengan beberapa semantic keamanan

yang dilakukan pada TortoiseCVS, sehingga tidak semua user dapat melakukan

pengolahan terhadap semua modul yang ada direpository.

h. Tagging dan Labelling

Dalam pengembangan sebuah proyek, pemberian label sangat diperlukan. Karena

dengan labeling kita dapat melihat dengan jelas version-version yang telah

dikerjakan oleh user. Sedangkan Tagging dapat digunakan untuk modul agar dapat

diberi tanda sehingga mudah dalam pengolahan atau rekonstruksi di waktu kedepan..

i. Branching dan Merging

Fitur ini biasanya selalu dimiliki oleh seluruh CVS, yang berfungsi untuk

melakukan percabangan yang berguna untuk mengontrol perubahan selama proses

lifecycle dari suatu proyek..

j. Binary dan Unicode

Pembacaan file akan dilakukan secara otomatis oleh TortoiseCVS, karena saat

pertama berjalan, ekstensi file akan dilihat terlebih dahulu lau akan dilanjutkan

dengan memilah file tersebut apakah binary atau Unicode.

k. File Revision History

Metode yang disediakn oleh TortoiseCVS ada 2, yaitu dengan cara me-review

dengan history file dan melihat Revision Graph nya.

BEKERJA DENGAN CVS

A. Persiapan server

Langkah pertama yang dipersiapkan adalah intallasi dan konfigurasi server CVS. Pada

eksplorasi ini, lokasi server berada 1 mesin dengan aplikasi client (localhost). Berikut ini

merupakan langkah-langkah yang dilakukan untuk installasi server :

1. Download server CVS

Server untuk CVS yang akan dipergunakan adalah CVSNT. CVSNT dapat di download

pda alamat berikut :

http://www.idevelopment.info/data/Programming/change_management/cvsnt/PROGRA

MMING_Installing_CVSNT.shtml

2. Install server CVS

Lakukan installasi server CVSNT

3. Setting repository CVS

Setelah proses installasi selesai, selanjutnya adalah setting lokasi repository yang akan

digunakan untuk menyimpan secara lengkap salinan file-file pekerjaan dari berbagai

direktori yang berada di area CVS. Untuk melakukan setting repository dapat dilakukan

dengan membuka command promt (CMD) windows dan ketikkan perintah berikut :

cvs -d "lokasi_repository" init

Asumsi dari repositori pada eksplorasi ini adalah di “F:\cvs_repo”.

B. Persiapan Client

Saat ini, terdapat banyak aplikasi client untuk CVS. Pada eksplorasi kali ini, aplikasi client

yang digunakan adalah TortoiseCVS. Langkah-langkah untuk mempersiapkan TortoiseCVS

adalah sebagai berikut :

1. Download aplikasi TortoiseCVS

TortoiseCVS dapat di download pada link berikut :

http://tortoisecvs.sf.net/

2. Install TortoiseCVS

3. Cek apakah installasi berhasil

Untuk melakukan crosschek, lakukan klik kanan pada salah satu folder di windows

explorer. Apabila installasi berhasil, maka akan tampak tambahan menu sebagai berikut :

C. Bekerja dengan TortoiseCVS

Sekarang tiba saatnya untuk bekerja dengan CVSNT menggunakan aplikasi client

TortoiseCVS. Adapaun langkah yang dilakukan adalah sebagai berikut :

1. Membuat module baru

Module di dalam CVS dapat diibaratkan project pada beberapa software yang lain. Module

ini nantinya akan menghubungkan file-file yang berada di folder/direktori dengan folder

repository. Untuk membuat module baru, lakukan dengan memilih folder untuk modulnya,

lalu Klik Kanan – CVS – Make New Module.

Pada eksplorasi ini, diasumsikan folder yang akan dijadikan module adalah

“F:\tugasCVS\modulCVS”. Selanjutnya, atur agar koneksi yang digunakan sesuai dengan

lokasi repository. Pada bagian protocol dapat dipilih, apakah repository berada di sebuah

server jaringan atau bahkan berada pada local server. Pada eksplorasi ini, akan dilakukan

setting seperti gambar berikut :

Tekan tombol OK, akan muncul jendela informasi bahwa proses pembuatan module sudah

berhasil.

Lokasi Repository 

Lokasi Server 

Nama Module 

Hasilnya, folder “modulCVS” akan terdapat tanda seperti gambar dibawah. Untuk

selanjutnya, modulCVS inilah yang disebut dengan sandbox :

Hal ini menyatakan bahwa folder “modulCVS” sudah berada di bawah manajemen CVS.

Dalam lingkungan multiuser, area modul “modulCVS” inilah yang akan menjadi area kerja

yang terhubung dengan repositori dan module milik user lain. Setiap aktifitas yang dilakukan

oleh user lain dapat terlihat perubahannya melalui modul ini.

Catatan :

Bentuk status icon folder / file pada module Tortoise ditunjukkan pada gambar berikut :

2. Menambah File Baru (CVS Add)

Langkah selanjtnya adalah menambahkan file baru kedalam module. File ini nantinya akan

diakses dan dimodifikasi oleh user yang lain melalui module yang dimiliki user-user tersebut.

Untuk menambahkan file baru, awali dengan menambahkan file melalui windows explorer di

dalam module tersebut. Pada eksplorasi kali ini, digunakan sebuah file .txt seperti gambar

berikut :

Sampai tahap ini, file “file_CSV.txt” ini belum bisa dibaca oleh user lain. Agar file ini

available terhadap user lain, maka harus di add-kan ke dalam module yang dapat diartikan

didaftarkan ke repository. Hal ini ditunjukkan pada gambar berikut :

Hasilnya, akan terjadi penambahan tanda seperti pada gambar berikut :

Pada langkah ini, posisi file_CVS masih berada di local sandbox / module kita (belum

dikirim ke repository), sehingga belum bisa dibaca oleh user lain.

3. Crosscheck terhadap kemungkinan perbedaan data antar user & Repository (CVS Diff)

Sebelum dikirim ke repository, ada baiknya dilakukan pengecekan terlebih dahulu apakah isi

di dalam file yang kita modifikasi terjadi perbedaan dengan isi file yang sama di dalam

repository ataupun di sandbox user lain. Untuk file pertama yang akan kita simpan ke

repository, hal ini tidak berlaku. Akan tetapi untuk file yang sifatnya modifikasi dari

repository, hal ini menjadi sangat penting.

Untuk melakukan crosscheck, pilih pilihan “CVS Diff”.

4. Menyimpan file ke dalam repository (CVS Commit)

Selanjutnya, agar bisa diakses oleh user lain, maka file yang dibuat dikirim kedalam

repository. Untuk mengirim file kedalam repository, lakukan perintah commit. Dalam

lingkungan multiuser,

Commit dapat dilakukan oleh antar user dengan cara melakukan percabangan sehingga jika

terjadi kesalahan pada repository di waktu kedepan, maka akan ada history yang dapat

menjadi recovery.

Hasilnya, terjadi perubahan tanda icon pada file “file_CSV”.

Pada kondisi ini, file CVS sudah bisa dimodifikasi oleh user lain karena sudah terdaftar di

repository.

5. Mengambil file dari repository (CVS check out)

Apabila kita tidak mulai membuat file dari awal, maka kita dapat mengambil file dari

repository untuk dimasukkan ke dalam sandbox. Proses checkout dapat dilakukan berada.

6. Mengembangkan alur yang berbeda (Branching & Merging)

Salah satu fitur utama dalam sebuah sistem version kontrol adalah adanya kemampuan untuk

mengisolasi perubahan kedalam bagian terpisah pada proses pengembangan, dimana hal ini

dinamakan Branch.

Branch berguna untuk mengontrol perubahan dalam proses pengembangan. Sebagai contoh,

kita sudah merilis sebuah software dengan versi 1.0. Kemudian, kita menambah beberapa

fitur tambahan untuk dipersiapkan kedalam versi 2.0. Dalam jeda antara versi pertama dan

pengembangan versi kedua, dapat diciptakan beberapa kemungkinan dan akan sangat

mungkin terjadinya bug. Untuk itu branch dapat dipergunakan dengan tanpa mengganggu

versi yang pertama.

HUBUNGAN DENGAN EVOLUSI PERANGKAT LUNAK & CONFIGURATION

MANAGEMENT

Perubahan merupakan kenyataan hidup bagi sebuah sistem perangkat lunak besar,

beberapa penyebab terjadinya perubahan adalah adanya perubahan pada kebutuhan dan

persyaratan organisasi, ditemukan error, ada penambahan alat/komputer baru pada sistem, dll.

Perubahan ini penting segera dilaksanakan mengingat software merupakan aset yang penting

bagi perusahaan. Pada perusahaan besar, mayoritas bugdet lebih di khususkan untuk merubah

dan mengembangkan software yang sudah ada dari pada untuk membangun software baru.

Oleh karena itu perubahan dan evolusi software wajib dilakukan.

Configuration Management (CM) memiliki tugas yang sangat penting pada evolusi

perangkat lunak, yaitu mengelola policy, proses dan tools yang digunakan untuk perubahan

software. Salah satu tugasnya adalah melakukan managemen versi dan rilis. CM sangat

dibutuhkan karena sangatlah gampang untuk kehilangan kendali tentang apa yang sudah

diubah. Untuk itu perlu CASE Tool seperti CVS yang sudah dibahas diatas.