IF 5124 ‐ Evolusi Perangkat Lun ak -...
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.