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.