BAB II LANDASAN TEORI 2.1. Model Proses Incremental Model

advertisement
7
BAB II
LANDASAN TEORI
2.1.
Model Proses Incremental
Model incremental mengkombinasikan elemen dari waterfall model yang
diaplikasikan terhadap pola iteratif. Model incremental mengaplikasikan sekuen
linear pada pola sebagai suatu kemajuan waktu. Setiap sekuen linear
menghasilkan “increment” deliverable dari suatu Perangkat lunak [McDonald,
1993]. Misalnya, perangkat lunak pengolah kata dibangun menggunakan
paradigma incremental mungkin menghasilkan file management dasar, editing,
dan fungsi produksi dokumen di increment pertama, kemampuan editing dan
produksi dokumen yang lebih canggih di increment kedua, pemeriksa spelling and
grammar di increment ketiga, dan kemajuan kemampuan tata letak (layout)
halaman di increment keempat. Perlu dicatat bahwa aliran proses untuk setiap
increment mungkin memasukkan paradigma prototyping.
Saat model incremental digunakan, increment pertama biasanya berupa produk
inti (core product). Yakni kebutuhan dasar yang ditargetkan, tetapi banyak fitur
tambahan yang tidak disampaikan. Produk inti adalah sesuatu yang digunakan
oleh pelanggan. Sebagai hasil penggunaan atau evaluasi, rencana dibangun untuk
increment berikutnya.
Kelebihan Model Incremental diantaranya adalah :
1. Nilai penggunaan dapat ditentukan pada setiap increament sehingga
fungsionalitas sistem disediakan lebih awal.
2. Increment awal berupa prototype untuk membantu memahami kebutuhan
pada increment berikutnya.
3. Memiliki risiko lebih rendah terhadap keseluruhan pengembagan sistem.
4. Prioritas tertinggi pada pelayanan sistem adalah yang paling diuji.
8
Gambar 2. 1 Incremental Process (Craig Larman, Victor R. Basili (June 2003))
2.1.1. Communication
Sebelum kebutuhan dapat
dianalisis, dimodelkan, atau dispesifikasikan,
kebutuhan tersebut harus dikumpulkan melalui aktivitas communication (disebut
juga pemancing kebutuhan). Craig Larman, Victor R. Basili (June 2003)
2.1.2. Planning
Aktivitas communication membantu mendefinisikan gol keseluruhan dan sasaran.
Pada aktivitas planning mencakup himpunan dari management dan technical
practices yang memungkinkan untuk mendefinisikan road map sebagaimana
perjalanannya terhadap gol strategi dan sasaran taktikal.
Planning memiliki beberapa filosofi diantaranya “minimalis”, berargumen bahwa
perubahan selalu menyingkirkan kebutuhan rencana yang detail. Yang lainnya
adalah “tradisionalis”, berargumen bahwa rencana menyediakan sebuah peta jalan
yang efektif, dan lebih detail. Yang lainnya lagi adalah “agilist,” berargumen
bahwa sebuah “planning game” cepat mungkin perlu, tetapi suatu peta jalan akan
digabungkan sebagai “real work” pada permulaan perangkat lunak.
9
2.1.3. Modeling
Dalam rekayasa perangkat lunak, ada dua kelas dari model dibuat: model analisis
dan model desain. Model analisis merepresentasikan kebutuhan customer dengan
menggambarkan suatu perangkat lunak kedalam tiga domain berbeda: domain
informasi,
domain
fungsional,
dan
domain
behavioral.
Model
desain
mereprensentasikan karakteristik dari perangkat lunak yang membantu pelaksana
untuk mengkonstruksi secara efektif, seperti: arsitektur, user interface, dan
component–level detail.
2.1.4. Construction
Aktifitas construction merangkum kumpulan dari contoh coding dan testing yang
menuntun perangkat lunak secara operasional, yaitu perangkat lunak yang sudah
siap untuk diantar ke customer atau end-user. Dalam dunia rekayasa perangkat
lunak modern, coding bisa berupa: (1) kreasi langsung dari source code bahasa
pemrograman, (2) ganerasi otomatis source code seperti menggunakan
representasi desain intermediate dari komponen untuk dibangun, (3) generasi
otomatis dari executable code menggunakan bahasa pemrograman generasi ke-4
(misalnya, Visual C++).
Fokus awal dari testing adalah pada level komponen, sering disebut juga unit
testing. Level lainnya yaitu: (1) integration testing (diadakan sebagai sistem yang
telah dikonstruksi), (2) validation testing yang mengkaji kebutuhan apakah telah
cocok untuk sistem keseluruhan (atau software incrementnya), dan (3) acceptance
testing yang diadakan oleh pengguna dalam sebuah usaha untuk mengetest semua
fitur dan fungsi yang dibutuhkan.
2.1.5. Deployment
Aktifitas deployment merangkum tiga action: delivery, support, and feedback.
Karena model proses perangkat lunak modern adalah evolusioner secara alamiah,
deployment tidak terjadi sekali, tetapi sejumlah waktu pada pergerakan perangkat
lunak menuju penyelesaian. Setiap delivery cycle memperkenalkan customer dan
end-user dengan sebuah operational software increment yang menyediakan fungsi
dan fitur bermanfaat setiap support cycle menyediakan dokumentasi dan bantuan
10
orang untuk semua fungsi dan fitur yang diperkenalkan selama semua siklus
deployment berlangsung. Setiap feedback cycle menyediakan tim perangkat lunak
dengan suatu petunjuk penting yang menghasilkan modifikasi fungsi, fitur, dan
pendekatan yang diambil untuk increment berikutnya. Penyampaian dari software
increment merepresentasikan milestone penting untuk beberapa software project.
2.2.
Konsep Pemodelan UML
UML (Unified Modelling Language) adalah salah satu alat bantu yang sangat
handal di dunia pengembangan sistem yang berorientasi objek. Hal ini disebabkan
karena UML menyediakan bahasa pemodelan visual yang memungkinkan bagi
pengembang sistem untuk membuat cetak biru atas visi mereka dalam bentuk
yang baku, mudah dimengerti serta dilengkapi dengan mekanisme yang efektif
untuk berbagi (sharing) dan mengkomunikasikan rancangan mereka dengan yang
lain.
UML merupakan kesatuan dari bahasa pemodelan yang dikembangkan oleh
Booch, Object modelling Technique (OMT) dan Object Oriented Software
Engineering (OOSE). Metode Booch dari Grady Booch sangat terkenal dengan
nama metode Desain Object Oriented. Metode ini menjadikan proses analisis dan
desain kedalam empat tahapan iteratif, yaitu : identifikasi class-class dan objekobjek, identifikasi semantik dari hubungan objek dan class tersebut, perincian
interface dan implementasi. Keunggulan metode Booch adalah pada detil dan
kayanya akan notasi dan elemen.
UML Dibangun atas model 4+1 view. Model ini didasarkan pada fakta bahwa
struktur sebuah sistem dideskripsikan dalam 5 view dimana salah satu diantaranya
usecase view. Usecase view ini memegang peran khusus untuk mengintegrasikan
content ke view yang lain.
11
Implementation
View
Design View
Use Case
View
Deployment
View
Process View
Gambar 2. 2 Model 4+1 view (Kruchten, Philippe (November 1995))
Use Case view mendefinisikan perilaku eksternal system. Hal ini menjadi daya
tarik bagi end user, analis dan tester. Pandangan ini mendefinisikan kebutuhan
system karena mengandung semua view yang lain yang mendeskripsikan aspekaspek tertentu dari rancangan sistem. Itulah sebabnya usecase view menjadi pusat
peran dan sering dikatakan yang mendrive proses pengembangan perangkat lunak.
Design view mendefinisikan struktur logika yang mendukung fungsi-fungsi yang
dibutuhkan di use case. Design view ini berisi definisi komponen program, classclass utama bersama-sama dengan spesifikasi data, perilaku dan interaksinya.
Informasi yang terkandung di view ini menjadi perhatian para programer karena
menjelaskan
secara
detil
bagaimana
fungsionalitas
sistem
akan
diimplementasikan.
Implementasi view menjelaskan komponen-komponen fisik dari sistem yang akan
dibangun. Hal ini berbeda dengan komponen logic yang dideskripsikan pada
design view, termasuk disini diantaranya file exe, library, dan database. Informasi
yang ada di view ini relevan dengan aktifitas-aktifitas seperti manajemen
konfigurasi dan integrasi sistem.
Process view berhubungan dengan hal-hal yang berkaitan dengan concurrency
didalam sistem. Sedangkan deployment view menjelaskan bagaimana komponenkomponen fisik didistribusikan ke lingkungan fisik seperti jaringan komputer
dimana sistem akan dijalankan. Kedua view ini menunjukkan kebutuhan non
12
fungsional dari sistem seperti toleransi kesalahan dan hal-hal yang berhubungan
dengan kinerja.
Untuk menggambarkan atau mendokumentasikan beberapa aspek dari sebuah
sistem diperlukan sebuah diagram. UML mempunyai sejumlah elemen grafis yang
bisa dikombinasikan menjadi diagram.
2.2.1. Use Case Diagram
Use case diagram adalah deskripsi dari fungsionalitas pada sistem. Penjelasan
dari use case biasanya dibuat dalam teks sederhana sebagai pendokumentasian
pada simbol use case, tetapi dapat juga digambarkan menggunakan activity
diagram. Use case digambarkan sebagai cara pandang terhadap sistem dari luar
oleh actor. Use case mempertegas kebutuhan fungsioional sistem.
Gambar 2. 3 Use Case Diagram (Schulz, Joseph D., 2003)
Use case adalah deskripsi dari sekumpulan aksi yang berurutan sebagai akibat dari
interaksinya dengan actor.
Actor adalah representasi dari pengguna sistem yang berinteraksi dengan use case
tetapi tidak memiliki kontrol terhadap use case tersebut dan berada di luar sistem.
Actor digambarkan sebagai berikut :
13
Gambar 2. 4 Actor (Schulz, Joseph D., 2003)
2.2.2. Class Diagram
Class diagram adalah diagram yang menunjukkan sekumpulan class, interface
dan collaboration serta relationship. Diagram ini biasa ditemukan pada
pemodelan object oriented system. Class Diagram menunjukkan aspek statis dari
sebuah sistem. Class diagram yang termasuk active class menunjukkan proses
dari aspek statis sebuah sistem.
Gambar 2. 5 Class Diagram (Schulz, Joseph D., 2003)
2.2.3. Sequence Diagram
Sequence diagram merupakan diagram interaksi yang menekankan pada waktu
pengiriman message. Sequence diagram juga menunjukkan sekumpulan objek dan
14
pengiriman serta penerimaan message antar objek. Objek yang umumnya
memiliki nama atau instansiasi dari class, tapi dapat pula merupakan turunan dari
hal-hal lain, seperti collaboration, component dan node. Diagram ini digunakan
untuk mengilustrasikan aspek dinamis dari sistem.
Gambar 2. 6 Sequence Diagram (Schulz, Joseph D., 2003)
2.2.4. Deployment Diagram
Deployment diagram menggambarkan arsitektur fisik dari perangkat keras dan
perangkat lunak pada sebuah sistem. Dengan Deployment diagram dapat
diperlihatkan keterhubungan antara Komputer dengan alat yang terhubung
(nodes), serta ketergantungan antar-komponen.
15
Gambar 2. 7 Deployment Diagram (Schulz, Joseph D., 2003)
2.3.
Perancangan Basis Data
Basis data sebagai kumpulan dari data yang saling berhubungan yang diorganisasi
sedemikian rupa agar kemudian dapat dimanfaatkan lagi dengan cepat dan mudah
(Abdul Kadir, 2002: 39).
Definisi basis data (database) sangatlah bervariasi. Basis data dapat dianggap
sebagai kumpulan data yang terkomputerisasi, diatur dan disimpan menurut salah
satu cara yang memudahkan pengambilan kembali. Secara sederhana basis data
dapat diungkapkan sebagai suatu pengorganisasian
data dengan bantuan
komputer yang memungkinkan data dapat diakses dengan mudah dan cepat.
Tujuan awal dan utama dalam pengolahan data pada sebuah basis data adalah agar
dapat menentukan kembali data (data yang dicari) dengan mudah dan cepat. Di
samping itu, pemanfaatan data untuk pengolahan data juga memiliki tujuan-tujuan
tertentu. Secara lengkap, pemanfaatan basis data dilakukan untuk memenuhi
sejumlah tujuan sebagai berikut :
16
1. Kecepatan dan kemudahan (Speed)
Pemanfaatan basis data memungkinkan untuk dapat menyimpan data atau
melakukan perubahan/manipulasi terhadap data atau menampilkan kembali
data tersebut dengan cepat dan mudah.
2. Efesiensi ruang penyimpanan (Space)
Penggunaan ruang penyimpanan di dalam basis data dilakukan
untuk
mengurangi jumlah redundansi (pengulangan) data, baik dengan melakukan
penerapan sejumlah pengkodean atau dengan membuat relasi-relasi (dalam
bentuk file) antar kelompok data yang saling berhubungan.
3. Keakuratan (Accuracy)
Pemanfaatan pengkodean atau pembentukan relasi antar data bersama dengan
penerapan aturan/batasan tipe data, domain data, keunikan data dan
sebagainya dan diterapkan dalam basis data, sangat berguna untuk
menentukan ketidakakuratan pemasukan atau penyimpanan data.
4. Ketersediaan (Availability)
Pertumbuhan data (baik dari jumlah maupun jenisnya) sejalan dengan waktu
akan semakin membutuhkan ruang penyimpanan yang besar. Data yang
sudah jarang atau bahkan tidak pernah lagi digunakan dapat diatur untuk
dilepaskan dari sistem basis data dengan cara penghapusan atau dengan
memindahkannya ke media penyimpanan.
5. Kelengkapan (Completeness)
Lengkap atau tidaknya data yang dikelola bersifat relatif baik terhadap
kebutuhan pemakai maupun terhadap waktu. Dalam sebuah basis data,
struktur dari basis data tersebut juga harus disimpan. Untuk mengakomodasi
kebutuhan kelengkapan data yang semakin berkembang, maka tidak hanya
17
menambah record-record data, tetapi juga melakukan penambahan struktur
dalam basis data.
6. Keamanan (Security)
Sistem keamanan digunakan untuk dapat menentukan siapa saja yang boleh
menggunakan basis data dan menentukan jenis operasi apa saja yang boleh
dilakukan.
7. Kebersamaan pemakai
Pemakai basis data sering kali tidak terbatas hanya pada satu pemakaian saja
atau oleh satu sistem aplikasi saja. Basis data yang dikelola oleh sistem
(aplikasi) yang mendukung lingkungan multiuser, akan dapat memenuhi
kebutuhan ini, tetapi dengan menjaga/menghindari terhadap munculnya
persoalan baru seperti inkonsistensi data (karena data yang sama diubah oleh
banyak pemakai pada saat bersamaan).
2.4.
Interaksi Manusia dan Komputer
Interaksi manusia dan komputer adalah user interface yang berkaitan dengan
evaluasi, desain dan implementasi sistem komputer interaktif untuk digunakan
manusia dalam konteks sosial, dan dengan studi utama fenomena di sekitar
mereka (Claude Ghaoui, 2006).
Interaksi manusia dan komputer (IMK) berkembang sebagai suatu disiplin ilmu
yang
menjalankan penuh inovasi dan kreativitas.
Munculnya Internet,
dikombinasikan dengan jatuhnya harga komputer sehingga meningkatkan
kemampuan seseorang memiliki komputer pribadi, membuat sebuah perubahan
yang sangat cepat dalam bidang teknologi. Hal ini memiliki implikasi besar pada
bidang penelitian, dimana tuntutan masyarakat dan harapan sebagai pengguna
teknologi meningkat.
IMK mempelajari tentang interaksi antara manusia dengan komputer. Interaksi
yang dimaksud bisa terjadi lewat antarmuka suatu perangkat lunak maupun
hardware. Salah satu tujuan dari IMK adalah membuat agar pengguna yang
18
sedang berinteraksi tidak menjadi kebingungan dengan antarmuka yang ada pada
perangkat lunak dan hardware. Web interface termasuk kepada kategori
antarmuka perangkat lunak.
Sebagai suatu disiplin ilmu, IMK relatif masih muda. Sepanjang sejarah
peradaban, inovasi teknologi termotivasi oleh aspirasi dasar manusia dan masalah
yang timbul dari interaksi manusia dan komputer. Desain, kegunaan dan interaksi
diakui sebagai isu-isu inti dalam IMK.
Saat ini
perubahan besar sedang terjadi yang menyentuh semua aspek
masyarakat, perubahan dalam pekerjaan, rumah, bisnis, komunikasi, ilmu
pengetahuan, teknologi, dan rekayasa. Perubahan ini karena melibatkan manusia,
tidak bisa tidak mempengaruhi masa depan IMK karena mereka berhubungan
dengan bagaimana orang berinteraksi dengan teknologi yang semakin dinamis dan
kompleks di dunia. Hal ini membuat IMK memainkan peran penting dalam
membentuk masa depan.
Hal-hal yang perlu diperhatikan didalam IMK diantaranya adalah usability, user
experience, dan user interface.
2.4.1 Usability
Apa itu usability? Usability adalah kualitas atribut yang berhubungan dengan
seberapa mudah sesuatu digunakan. Lebih khusus, mengacu pada seberapa cepat
orang dapat belajar untuk menggunakan sesuatu, seberapa efisien mereka saat
menggunakan, seberapa mudah diingat, seberapa rawan kesalahan dapat terjadi,
dan berapa banyak pengguna menyukai menggunakannya. Jika orang tidak dapat
atau tidak akan menggunakan fitur tersebut, sebaiknya fitur tersebut ditiadakan
(Jakob Nielsen, 2006).
Ringkasnya, usability merupakan ukuran seberapa mudah suatu perangkat lunak
atau hardware digunakan. Tujuan dari aspek usabilitas diantaranya:

Efektif digunakan

Efisien digunakan

Aman digunakan
19

Punya utilitas yang baik

Mudah dipelajari

Mudah diingat bagaimana menggunakannya
Usability didefinisikan melalui lima komponen yakni :
1. Learnability
Learnability menjelaskan tingkat kemudahan pengguna untuk memenuhi tugastugas dasar ketika pertama kali mereka melihat/menggunakan hasil perancangan.
2. Efficiency
Efficiency menjelaskan tingkat kecepatan pengguna dalam menyelesaikan tugastugas setelah mereka mempelajari hasil perancangan.
3. Memorability
Memorability menjelaskan tingkat kemudahan pengguna dalam menggunakan
rancangan dengan baik, setelah beberapa lama tidak menggunakannya.
4. Errors
Errors menjelaskan jumlah error yang dilakukan oleh pengguna, tingkat kesalahan
terhadap error dan cara memperbaiki error.
5. Satisfaction
Satisfaction menjelaskan tingkat kepuasan pengguna dalam menggunakan
rancangan
2.4.2 User Experience
Merupakan pengalaman yang didapat oleh pengguna selama dia berinteraksi
dengan suatu perangkat lunak atau hardware. Aspek usability mempengaruhi
langsung experience yang didapat oleh pengguna selama berinteraksi. Usability
yang baik akan membangun experience yang baik pula di sisi pengguna, dan
sebaliknya.
2.4.3 User Interface
Pengguna atau pengunjung suatu website merupakan salah satu alasan yang
membuat mengapa suatu website masih tetap ada. Jika pengunjung suatu website
20
tidak ada, mengapa website tersebut masih dipertahankan? Suara pengguna atau
pengunjung akhirnya mulai didengar. Pengguna tidak mau lagi dipusingkan
dengan prosedur yang rumit dan antarmuka yang sulit dimengerti. Web dengan
antarmuka yang rumit akan ditinggalkan oleh penggunanya. Hal-hal lain yang
membuat pengguna akan meninggalkan suatu halaman web diantaranya pengguna
tidak menemukan sesuatu yang dicarinya pada web tersebut, banyaknya kesalahan
pada web, dan cara penyajian informasi yang tidak menarik.
Desain antarmuka dari suatu halaman web merupakan suatu masalah bagaimana
menyeimbangkan struktur dan hubungan antara menu, isi, dan dokumen atau
gambar yang terkait. Tujuan desain tersebut adalah untuk membangun hirarki
yang baik dari menu dan halaman, terstruktur dengn baik, mudah untuk
digunakan, dan sesuai dengan keadaan yang sebenarnya (Wilbert O. Galitz 2007).
2.5.
PHP, MySQL dan MVC
2.5.1 PHP
PHP : Hypertext Preprocessor adalah bahasa skrip yang dapat ditanamkan atau
disisipkan ke dalam HTML. PHP banyak dipakai untuk memrogram situs web
dinamis. PHP pertama kali dibuat oleh Rasmus Lerdorf pada tahun 1995. Pada
waktu itu PHP masih bernama Form Interpreted (FI), yang wujudnya berupa
sekumpulan skrip yang digunakan untuk mengolah data formulir dari web. Pada
Juni 2004, Zend merilis PHP 5.0. Dalam versi ini, inti dari interpreter PHP
mengalami perubahan besar. Versi ini juga memasukkan model pemrograman
berorientasi objek ke dalam PHP untuk menjawab perkembangan bahasa
pemrograman ke arah paradigma berorientasi objek.
Beberapa kelebihan PHP dari bahasa pemrograman web, antara lain:
1.
Bahasa pemrograman PHP adalah sebuah bahasa script yang tidak
melakukan sebuah kompilasi dalam penggunaanya.
2.
Web Server yang mendukung PHP dapat ditemukan dimana - mana dari
mulai apache, IIS, Lighttpd, hingga Xitami dengan konfigurasi yang relatif
mudah.
21
3.
Dalam sisi pengembangan lebih mudah, karena banyaknya milis - milis dan
developer yang siap membantu dalam pengembangan.
4.
Dalam sisi pemahamanan, PHP adalah bahasa scripting yang paling mudah
karena memiliki referensi yang banyak.
5.
PHP adalah bahasa open source yang dapat digunakan di berbagai mesin
(Linux, Unix, Macintosh, Windows) dan dapat dijalankan secara runtime
melalui console serta juga dapat menjalankan perintah-perintah system.
2.5.2 MySQL
MySQL adalah sebuah server database open source yang terkenal yang di
gunakan berbagai aplikasi terutama untuk server atau membuat web.MySQL
mempunyai fungsi sebagai SQL (Structured Query Language) yang di miliki
sendiri dan telah di perluas pada MySQL umumnya digunakan bersamaan dengan
PHP untuk membuat aplikasi server yang dinamis dan powerful.
2.5.3 MVC
Model-View-Controller atau MVC adalah sebuah metode untuk membuat sebuah
aplikasi dengan memisahkan data (Model) dari tampilan (View) dan cara
bagaimana memprosesnya (Controller). Dalam implementasinya kebanyakan
framework dalam aplikasi website adalah berbasis arsitektur MVC.
Bagian dari MVC :
1.
Model, Model mewakili struktur data. Biasanya model berisi fungsi-fungsi
yang membantu seseorang dalam pengelolaan basis data seperti
memasukkan data ke basis data, pembaruan data dan lain-lain.
2.
View, View adalah bagian yang mengatur tampilan ke pengguna. Bisa di
katakan berupa halaman web.
3.
Controller, Controller merupakan bagian yang menjembatani model dan
view. Controller berisi perintah-perintah yang berfungsi untuk memproses
suatu data dan mengirimkannya ke halaman web.
Dengan menggunakan metode MVC maka aplikasi akan lebih mudah untuk
dirawat dan dikembangkan. Untuk memahami metode pengembangan aplikasi
22
menggunakan MVC diperlukan pengetahuan tentang pemrograman berorientasi
objek (Object Oriented Programming).
2.6.
Algoritma Sinkronisasi
2.6.1 Algoritma
Dalam matematika dan komputasi, algoritma atau algoritme merupakan
kumpulan perintah untuk menyelesaikan suatu masalah. Perintah-perintah ini
dapat diterjemahkan secara bertahap dari awal hingga akhir. Masalah tersebut
dapat berupa apa saja, dengan catatan untuk setiap masalah, ada kriteria kondisi
awal yang harus dipenuhi sebelum menjalankan algoritma. Algoritma akan dapat
selalu berakhir untuk semua kondisi awal yang memenuhi kriteria, dalam hal ini
berbeda dengan heuristik. Algoritma sering mempunyai langkah pengulangan
(iterasi) atau memerlukan keputusan (logika Boolean dan perbandingan) sampai
tugasnya selesai.
Desain dan analisis algoritma adalah suatu cabang khusus dalam ilmu komputer
yang mempelajari karakteristik dan performa dari suatu algoritma dalam
menyelesaikan masalah, terlepas dari implementasi algoritma tersebut. Dalam
cabang disiplin ini algoritma dipelajari secara abstrak, terlepas dari sistem
komputer atau bahasa pemrograman yang digunakan. Algoritma yang berbeda
dapat diterapkan pada suatu masalah dengan kriteria yang sama.
Terdapat beragam klasifikasi algoritma dan setiap klasifikasi mempunyai alasan
tersendiri. Salah satu cara untuk melakukan klasifikasi jenis-jenis algoritma
adalah dengan memperhatikan paradigma dan metode yang digunakan untuk
mendesain algoritma tersebut. Beberapa paradigma yang digunakan dalam
menyusun suatu algoritma akan dipaparkan dibagian ini. Masing-masing
paradigma dapat digunakan dalam banyak algoritma yang berbeda.

Divide and Conquer, paradigma untuk membagi suatu permasalahan
besar menjadi permasalahan-permasalahan yang lebih kecil. Pembagian
masalah ini dilakukan terus menerus sampai ditemukan bagian masalah
23
kecil
yang
mudah untuk dipecahkan.
Singkatnya
menyelesaikan
keseluruhan masalah dengan membagi masalah besar dan kemudian
memecahkan permasalahan-permasalahan kecil yang terbentuk.

Dynamic programming, paradigma pemrograman dinamik akan sesuai
jika digunakan pada suatu masalah yang mengandung sub-struktur yang
optimal, dan mengandung beberapa bagian permasalahan yang tumpang
tindih . Paradigma ini sekilas terlihat mirip dengan paradigma Divide and
Conquer, sama-sama mencoba untuk membagi permasalahan menjadi sub
permasalahan yang lebih kecil, tapi secara intrinsik ada perbedaan dari
karakter permasalahan yang dihadapi.

Metode serakah. Sebuah algoritma serakah mirip dengan sebuah
Pemrograman dinamik, bedanya jawaban dari submasalah tidak perlu
diketahui dalam setiap tahap; dan menggunakan pilihan "serakah" apa
yang dilihat terbaik pada saat itu.
2.6.2 Sinkronisasi
Sinkronisasi adalah proses pengaturan jalannya beberapa proses pada saat yang
bersamaan.
Tujuan
utama
sinkronisasi
adalah
menghindari
terjadinya
inkonsistensi data karena pengaksesan oleh beberapa proses yang berbeda (mutual
exclusion) serta untuk mengatur urutan jalannya proses-proses sehingga dapat
berjalan dengan lancar dan terhindar dari deadlock atau starvation.
Download