BAB II TINJAUAN PUSTAKA
2.1
Rekayasa Perangkat Lunak Berorientasi Objek Pengembangan perangkat lunak berorientasi objek adalah suatu strategi
pengembangan perangkat lunak yang mengorganisasikan perangkat lunak sebagai kumpulan objek yang berisi data dan operasi yang diberlakukan terhadapnya (Rosa A.S dkk. 4). Sehingga dalam penggunaannya rekayasa perangkat lunak berorientasi objek memiliki banyak keuntungan di antaranya adalah: a.
kemudahan pemeliharaan dengan menerapkan model objek, pola-pola yang cenderung tetap dan stabil dapat dipisahkan dan pola-pola yang mungkin sering berubah-ubah.
b.
meningkatkan produktivitas dengan adanya kelas dan objek yang ditemukan dalam suatu masalah masih dapat dipakai ulang untuk masalah lain yang melibatkan objek tersebut.
c.
kecepatan pengembangan dapat mengurangi kesalahan pada saat pengodean, sehingga hal ini dapat mempercepat pada saat pengodean.
d.
adanya konsistensi karena sifat pewarisan dan penggunaan notasi yang sama pada saat analisis, perancangan maupun pengodean
e.
meningkatkan kualitas perangkat lunak karena pendekatan pengembangan lebih dekat dengan dunia nyata dan adanya konsistensi pada saat pengembangan, perangkat lunak yang dihasilkan akan mampu memenuhi kebutuhan pemakai serta mempunyai sedikit kesalahan.
9
10
Ada tiga pilar utama dalam rekayasa perangkat lunak berorientasi objek yaitu: a.
Encapsulation (pengkapsulan) penyembunyian informasi.
b.
Inheritance (turunan)
c.
Polymorphism (method/fungsi yang sama akan tetapi berbeda cara penerapannya).
2.2
Software Development Life Cycle (SDLC) Pada awal pengembangan perangkat lunak, para pembuat program
(programmer)
langsung
melakukan
pengodean
perangkat
lunak
tanpa
menggunakan prosedur atau tahapan pengembangan perangkat lunak. Dan ditemuilah kendala-kendala seiring dengan perkembangan skala sistem-sistem perangkat yang besar. Software Development Life Cycle (SDLC) adalah proses mengembangkan atau mengubah suatu sistem perangkat lunak dengan menggunakan mode-model dan metodologi yang digunakan orang untuk mengembangkan sistem-sistem perangkat lunak sebelumnya (Rosa A.S dkk. 24). Tahapan Software Development Life Cycle secara umum adalah sebagai berikut: a.
Perencanaan, adalah tahapan proses untuk mengetahui kenapa sistem tersebut dibangun, dan menjelaskan pengalokasian sumber daya untuk membangun sistem tersebut. Pada tahapan ini dilakukan kegiatan yang meliputi inisiasi proyek, analisa kelayakan dan manajemen proyek.
b.
Analisa, adalah tahapan proses untuk mengetahui apa yang akan dilakukan oleh sistem, siapa yang yang akan menggunakannya, dimana dan kapan sistem tersebut akan digunakan. Pada tahapan ini dilakukan kegiatan untuk as-is sistem dan to-be sistem, requirement gathering, dan sistem proposal.
11
c.
Desain, adalah proses untuk mengetahui bagaimana sistem akan beroperasi, meliputi perangkat keras (hardware), perangkat lunak (software), basis data (database), program, antarmuka (user interface) yang dibutuhkan untuk melakukan pengembangan sistem tersebut. Pada tahapan ini dilakukan kegiatan yang meliputi: strategi desain, arsitektur sistem, spesifikasi basis data dan berkas (file), dan kode program.
d.
Implementasi, adalah tahapan untuk proses mengeksekusi sistem secara real. Pada tahapan ini dilakukan kegiatan yang meliputi: konstruksi, instalasi dan bantuan (support). Dalam Software Development Life Cycle terdapat beberapa model dalam
penerapan tahapan prosesnya, di antaranya adalah sebagai berikut: a.
Struktural Desain 1. Waterfall 2. Parallel 3. Phase
b.
Rapid Application Development (RAD) 1. Prototyping 2. Thowaway-Prototype
c.
Agile Development 1. Extreme Programming
2.3
Unified Modeling Language (UML) Secara umum UML merupakan bahasa untuk visualisasi, spesifikasi,
konstruksi, serta dokumentasi. Dalam rangka kerangka visualisasi, para pengembang menggunakan UML sebagai suatu cara untuk mengkomunikasikan idenya kepada para programmer serta calon pengguna sistem/perangkat lunak. Dengan adanya bahasa yang bersifat standar, komunikasi perancang dengan programer serta calon pengguna dapat di harapkan lebih baik.
12
UML ditemukan pertama kali oleh Grady Booch, Ivar Jacobson dan James Rumbagh pada tahun 1990-an. Mereka berdua memadukan dan mengadopsi ideide serta kemampuan tambahan dari masing-masing metodenya dan berusaha membuat metodologi terpadu. UML merupakan alat bantu yang sangat baik di dunia pengembangan/perancangan sistem berorientasi objek. Hal ini dikarenakan UML menyediakan bahasa pemodelan visual yang memungkinkan pengembang sistem untuk membuat rencana/prototipe mereka dalam bentuk baku, mudah dimengerti serta dilengkapi dengan mekanisme yang efektif untuk berbagi dan mengkomunikasikan rancangan mereka dengan yang lain. UML bukan merupakan bahasa pemrogaman, tetapi model-model yang tercipta berhubungan langsung dengan berbagai bahasa pemrogaman, sehingga merupakan hal yang mungkin melakukan pemetaan (mapping) langsung dari model-model yang dibuat dengan UML ke bahasa-bahasa pemrogaman berorientasi objek, seperti Java, Borland Delphi, C++, PHP, Visual Basic dan lain-lain atau bahkan dihubungkan secara langsung ke dalam sebuah objectoriented database. Begitu juga mengenai pendokumentasian dapat dilakukan seperti; requirements, arsitektur, design, source code, project plan, tests, dan prototypes. UML sebagai bahasa untuk dokumentasi memiliki model-model yang sesuai untuk mengintegrasikan seluruh komponen pengembangan sistem. Dokumentasi pada aplikasi-aplikasi modern, mutlak perlu sebagai dasar untuk analisis pengembangan dan pengujian lebih lanjut. Seperti bahasa-bahasa lainya, UML mendefinisikan notasi dan syntaks atau semantik.
Notasi
UML
merupakan
sekumpulan
bentuk
khusus
untuk
menggambarkan berbagai diagram piranti lunak. Setiap bentuk memiliki makna tertentu dan sytaks UML mendefinisikan bagaimana bentuk-bentuk tersebut dapat dikombinasikan. UML terdiri atas 13 jenis diagram dan 3 kategori seperti tertulis yang dapat dilihat pada tabel berikut ini.
13
Tabel 2.1 Jenis diagram UML No Diagram
Kegunaan
1
Class,
Class
fitur
Kategori dan
hubungan-
hubungan 2
Object
Contoh konfigurasi dari contoh contoh
3
Component
Struktur dan koneksi komponen
4
Composite Structure
Dekomposisi runtime pada class
5
Package
Struktur hirarki compile-time
6
Deployment
Pemindahan artefak ke node
7
Activity
Behaviour prosedural dan parallel
8
Use Case
Bagaimana pengguna berinteraksi dengan sebuah sistem
9
State Machine
Bagaimana event mengubah objek
Stucture Diagrams
Behavior Diagrams
selama aktif 10
Interaction Overview
Campuran Sequence dan activity diagram
11 12
Sequence Communication
Interaksi antar objek; penekanan pada sequence
Interaction
Interaksi antar objek, penekanan
Diagrams
pada jalur 13
Timing
Interaksi anta objek penekanan pada timing
14
2.4
Pemrogaman Berorientasi Objek Seperti penulis yang telah sebutkan di atas, bahwa ada tiga pilar utama
dalam pengembangan perangkat lunak berorientasi objek yaitu enkapsulasi, inheritance dan polimorphism. Sebelum melangkah lebih jauh, penulis ingin membahas apa itu objek dan bagaimana cara menggunakan tiga pilar utama pemrogaman berorientasi objek tersebut. Secara prinsip objek merupakan sebuah elemen yang dapat diselidiki atau dapat dipahami. Apabila kita meruju kepada objek dari sudut pandang nyata berarti objek merupakan sesuatu yang memiliki bentuk dan masa, nama. Jika kita berbicara konsep maka objek bukan hanya sesuatu yang dapat dilihat dan dirasakan, akan tetapi termasuk sesuatu yang masih bersifat ide dan gagasan. Dalam konsep pemrogaman, objek akan ditinjau dari kedua hal tersebut yaitu elemen yang memiliki bentuk dan masa serta sesuai yang masih berbentuk ide ataupun gagasan. Sehingga pemrogaman melihat bahwa sesuatu yang abstrak dan konkret merupakan objek yang dapat diimplementasikan ke dalam sebuah perangkat lunak. Contoh dari objek adalah layar, pohon, kendaraan. Setiap objek memiliki sesuatu yang dapat dibedakan antara objek satu dengan yang lain, dimana setiap objek secara umum memiliki kondisi tetap dan operasi ataupun metode (method). Secara sederhana objek memiliki pengenal/properti/atribut dan metode. Ini berarti pemrogaman berorientasi objek berarti sebuah teknik pemrogaman
yang
dalam
proses
pengembangannya
menggunakan
terminologi/pendekatan berbasis objek, dimana setiap objek memiliki atribut beserta fungsi/metode yang dapat saling berinteraksi satu dengan yang lain seperti halnya objek (Stendy B. Sakur, 178) .
15
Dengan pemrogaman berorientasi objek akan memberikan keuntungan agar dalam proses pengembangan perangkat lunak akan lebih mudah karena hanya akan menyesuaikan model pemrogaman sesuai dengan model yang telah dibuat. Pengkapsulan (encapsulation) merupakan sebuah teknik yang digunakan di dalam pemrogaman berorientasi objek untuk melakukan penyembunyian informasi yang tidak diperlukan oleh user atau objek lain (Stendy B. Sakur, 179). Data disini adalah atribut dan method yang ada di dalam sebuah class. Dengan cara ini para pengembang perangkat lunak yang menggunakan tipe data baru tidak perlu memahami bagaimana tipe data tersebut di bentuk, akan tetapi cukup memahami antarmuka dari class tersebut Penurunan sifat (Inheritance) merupakan sebuah teknik yang digunakan di dalam pemrogaman berorientasi objek yang merepresentasikan pemodelan turunan dari dunia nyata, dimana setiap data tipe data baru (class baru) dapat merupakan turunan dari tipe data induknya sehingga class turunan dapat memiliki semua sifat-sifat dari induknya (Stendy B. Sakur, 179). Contoh class kendaraan adalah class induk dan motor adalah class turunan dari class kendaraan, sehingga class motor memiliki atribut dan method yang sama sesuai dengn class kendaraan. Polymorphism dalam segi bahasa satu kata poly berarti banyak dan sedangkan morphism merupakan bentuk/model atau form. Dengan kata lain polymorphism adalah model atau form yang dapat digunakan pada objek yang beragam (Stendy B. Sakur, 179). Objek yang berbeda yang berasal dari satu induk yang sama dapat memiliki fungsi yang sama akan tetapi pola penerapan yang berbeda-beda. Sebagai contoh, class mamalia memiliki method bergerak, dimana class manusia dan class primata adalah class turunan dari class mamalia. Sehingga pada saat class manusia melaksanakan method bergerak akan berbeda pola penerapannya dibandingkan dengan class primata. Jika class manusia memanggil metode bergerak maka class manusia akan melakukannya dengan berjalan sedangkan class primata akan melakukan metode bergerak dengan cara berayun.
16
Visibility, tampilan atribut atau method yang terdapat di dalam sebuah class. Class yang telah dibentuk secara default memiliki data dan fungsi yang bersifat global atau dengan kata lain public, dimana seluruh objek dari class lain dapat mengakses atribut dan method tersebut. Di dalam pemrogaman berorientasi objek terdapat lima keyword penting yaitu: a.
public, apabila menggunakan keyword ini maka data dan method dari class yang bersangkutan dapat di akses dari luar class.
b.
private, apabila menggunakan keyword ini maka data dan method dari class yang bersangkutan tidak dapat di akses dari luar class
c.
protected, mengizinkan class turunan untuk mengakses data atau method yang berasal dari class induk
d.
final, digunakan untuk mencegah agar fungsi dari class induknya tidak dapat di definisikan kembali di class turunan.
e.
abstract, kebalikan dari class final. Fungsi ini harus harus di deklarasikan di class turunannya. Sekalipun teknik pemrogaman berorientasi objek digunakan untuk
menyembunyikan member data secara lengkap, seorang programmer dapat melakukan pengaturan nilai pada member data secara langsung tanpa harus membuat objek terlebih dahulu dari tipe data tersebut, yaitu keryword static. Overloading, merupakan konsep yang terdapat dalam pemrogaman berorientasi objek di mana teknik ini mengijinkan pembuatan fungsi lebih dari satu dengan nama fungsi yang sama, namun memiliki tipe data dan jumlah parameter yang berbeda. Selain overlaoding terdapat fungsi yang akan bermanfaat pada saat kita membuat konsesp polymorphism yaitu overriding. Konsep ini hanya serupa dengan konsep overloading, namun fungsi overriding digunakan untuk melakukan pendefinisian ulang untuk sebuat method yang ada pada kelas induk pada kelas turunannya. Jika pada overloading membuat fungsi nama fungsi yang sama akan tetapi berbeda pada jumlah parameter beserta dengan tipe datanya,
17
overriding membuat fungsi dan tipe data sera parameter yang sama dan tidak boleh berbeda antara kelas induk dan turunannya. 2.5
Basis Data Sistem basis data adalah sistem terkomputerisasi yang tujuan utamanya
adalah memelihara data yang sudah diolah atau informasi dan membuat informasi tersedia saat dibutuhkan ( Rosa A.S, 44). Sedangkan menurut Junindar dalam basis data adalah kumpulan data yang saling berhubungan satu dengan lainnya yang tersimpan di perangkat keras komputer dan diperlukan suatu perangkat lunak untuk memanipulasi basis data tersebut. Sistem manajemen basis data (database-management sistem/DBMS) adalah perangkat lunak yang digunakan untuk mengendalikan data, melakukan penyimpanan, pengambilan, keamanan dan integritas data. Bahasa yang digunakan di dalam DBMS adalah Structure Query Language (SQL). Tidak hanya perangkat lunak yang memiliki alur hidup, dalam membuat perencanaan basis data juga memiliki alur hidup yang disebut sebagai Database Life Cycle (DBLC). Fase-fase dalam DBLC terdiri dari: a.
Analisa kebutuhan (requirement), dilakukan dengan cara pembuatan Entity Relationship Diagram (ERD).
b.
Melakukan desain lojik basis data (logical), dilakukan dengan cara pembuatan Conceptual Data Model (CDM).
c.
Melakukan desain fisik basis data (physical), dilakukan dengan cara pembuatan Physical Data Model (PDM)
d.
Implementasi, pembuatan SQL dan implementasi pada DBMS Dalam perancangan basis data pada tahap Conceptual Data Model terdapat
dua buah teknik yaitu teknik normalisasi dan teknik denormalisasi. Normalisasi
18
merupakan sebuah upaya untuk memperoleh sebuah basis data dengan struktur yang baik (ruang penyimpanan yang efisien) dengan cara menerapkan sejumlah aturan (bentuk normal) pada setiap tabel yang menjadi anggota basis data tersebut (Ir. Harianto Kristanto, 18). Normalisasi dilakukan dengan tujuan agar data yang ada tidak redundan dan memiliki integritas yang kuat sehingga ketika melakukan relasi antara tabel satu dengan yang lain akan dengan mudah kita menjaga integritas dan mendapatkan datanya. Permasalahan yang di hadapi dalam melakukan normalisasi yaitu: 1.
Redundansi data (ruang penyimpanan)
2.
Penyimpanan dalam proses modifikasi data (anomalies) : a. insert anomalies b. update anomalies c. delete anomalies Pada
sejumlah
kasus,
penerapan
normalisasi
secara
ketat
dapat
mengakibatkan menurunnya performansi pemanfaatan basis data. Dengan pertimbangan tertentu normalisasi ini dapat di langgar. Pelanggaran aturan normalisasi atau menjabarkan suatu tataan basis data yang telah normal untuk meningkatkan performa pengaksesan data pada basis data disebut juga dengan denormalisasi. Satu-satunya alasan mengapa dalam perancangan basis data boleh melakukan denormalisasi adalah pertimbangan performansi. Jika performa yang diperoleh bisa menjadi lebih baik, maka normalisasi yang telah dilakukan cukup beralasan untuk dilanggar. Berikut ini perbandingan antara normalisasi dengan denormalisasi: 1.
Normalisasi
akan
meningkatkan
integritas
data
tetapi
juga
akan
meningkatkan sintaks query yang kompleks. 2.
Denormalisasi akan mengurangi integritas data dan juga akan mengurangi sintaks query yang kompleks.
19
3.
Denormalisasi dapat meningkatkan performansi dengan mengendalikan redundansi untuk mengurangi perhitungan, kompleksitas perintah dan jumlah tabel yang dilibatkan (join). Cara untuk melakukan denormalisasi ada 3 yaitu:
1.
Melalui pembuatan kolom baru pada tabel
2.
Mengabungkan kolom pada tabel satu dengan yang lain.
3.
Melalui pembuatan tabel baru.
2.6
PHP (PHP: Hypertext Preprocessor) Hypertext PreProcessor atau dikenal dengan nama PHP merupakan salah
satu aplikasi perangkat lunak server yang sangat banyak sekali digunakan karena kemudahan dan kehandalan yang dimilikinya. PHP ditemukan pertama kali oleh Rasmus Lerdorf. Penemuan ini bermula dari keinginan sederhana Rasmus Lerdorf untuk mempunyai alat bantu (tools) dalam memonitor pengunjung yang melihat situs web pribadinya. Inilah sebabnya pada awal pengembangannya, PHP merupakan singkatan dari Personal Home Page tools, sebelum akhirnya dipaksakan menjadi singkatan rekursif dari PHP: Hypertext Preprocessor. Pertengahan tahun 1995 dirilis PHP/FI (FI adalah singkatan dari Form Interpreter) yang memiliki kemampuan dasar membangun aplikasi web, memproses form, dan mendukung database. PHP khususnya PHP versi 5 ke atas sudah mendukung konsep OOP dengan baik. Berikut beberapa penerapan OOP dengan PHP.
20
Listing 2.1 Class, pengkapsulan, method dan visibility PHP nama = $nama; } // nama method dan visibility nya public function setUmur ($umur) { $this-‐>umur = $umur; } // nama method dan visibility nya public function getName () { return $this-‐>nama; } // nama method dan visibility nya public function getUmur () { return $this-‐>umur; } } /* End class */
Listing 2.2 Pembuatan objek baru PHP // new instance objek $perempuan = new Manusia (); $perempuan-‐>setName ('Wahyuningtyas'); // call method $perempuan-‐>setUmur (28); echo $perempuan-‐>getName() .'
'; echo $perempuan-‐>getUmur() .'
';
21
Listing 2.3 Construktor dan destruktor PHP session-‐>set_userdata(`nilai`,'34'); } // ketika sebuah class, di tutup maka // akan menjalankan destruct untuk melakukan penghapusan session public function __destruct() { $this-‐>session-‐>sess_destroy(); } public function index () { // do struf } public function view() { // do stuff } }
Listing 2.4 Inheritance PHP
2.7
Laravel Framework Kerangka kerja (framework) merupakan sebuah kerangka kerja yang dibuat
dengan konsep pemrogaman berbasis objek dan menggunakan pola desain arsitektur
yang
bertujuan
untuk
memudahkan
programmer
dalam
mengembangkan sebuah software. Kerangka kerja (framework) ini biasanya
22
sudah berisi pustaka, basis data manajamen, session dan kode sumber program lain yang siap digunakan dalam proses pengembangan. Desain arsitektur yang sering digunakan adalah Model View Controller (MVC)
Gambar 2.1 Arsitektural pattern MVC MVC merupakan sebuah metode pengembangan dengan cara memisah data (model) dari tampilan (view) dan bagaimana cara memprosesnya (controller). Dalam arsitektur MVC aliran aplikasi dimulai dari controller yang di load. Controller yang di eksekusi akan menentukan bagaimana cara mengakses basis data dari model. Setelah itu, controller akan memutuskan tampilan mana yang akan di tampilkan. Model merupakan komponen yang berhubungan dengan basis data yang memiliki beberapa metode untuk memanipulasi data. Ketika data akan di ambil, di manipulasi atau bahkan di hapus semuanya berada di dalam model. Seperti contoh: SQL Query di buat di model dan controller memanggil sebuah model untuk mengeksekusi SQL Query tersebut. Sehingga ketika ada perubahan di dalam basis data maka yang dirubah adalah model. Views merupakan komponen yang berisikan tampilan ke pengguna. Biasanya berisi kode HTML. Controller merupakan komponen yang merupakan jembatan penghubung antara model dengan view. Controller memiliki beberapa metode-metode yang
23
memilki fungsi untuk memutuskan langkah apa yang harus di ambill, apa yang harus dilakukan terhadap input dari pengguna, data apa saja yang dimanipulasi dan ditampilkan untuk di sajikan kepada pengguna. Laravel adalah kerangka aplikasi web PHP 5.3 yang ditulis oleh Taylor Otwell. Kerangka kerja ini ditulis dengan PHP 5.3 fitur dalam pikiran. Kombinasi fitur dan sintaks sangat ekspresif telah menyebabkan kerangka kerja ini mulai populer. Framework ini menganut alur sistem berbasis MVC.
Gambar 2.2 Struktur berkas Laravel Framework
24
Listing 2.5 Contoh controller pada Laravel data[`title`] = "Welcome"; return View::make('welcome.hello'); } } /* end file Welcome.php */
Listing 2.6 Contoh model di Laravel has_many(`Comment`); } }
Disamping memiliki pola arsitektur MVC, Laravel juga menyediakan beberapa pustaka (library) yang sangat membantu proses pengembangan perangkat lunak dengan PHP seperti contoh pustaka artisan dan pustaka migrations.
25
Migrations merupakan salah satu pustaka Laravel yang digunakan untuk melakukan memelihara basis data dengan cara terstruktur dan terorganisir. Ketika menjalankan migrations, jejak perubahan akan tersimpan secara otomatis di dalam sebuah table dengan nama “migration”. Listing 2.7 Contoh migrations create(); $table-‐>increments('id'); $table-‐>string('username', 30); $table-‐>string('email', 40)-‐>unique(); $table-‐>enum('gender', array('M','F'),'M'); $table-‐>date('birthday'); $table-‐>integer('education_id', 10)-‐>nullable(); $table-‐>integer('topic_id', 10)-‐>nullable(); $table-‐>enum('role_id', array('kaprodi','tatausaha','dosen','caba'))-‐>nullable(); $table-‐>enum('is_attempt',array('0','1'),'0'); $table-‐>timestamps(); }); DB::table('users')-‐>insert(array( 'username' => 'Purwandi', 'email' => '
[email protected]', 'password' => Hash::make('222'), 'role_id' => 'kaprodi', 'created_at' => date('Y-‐m-‐d H:i:s'), 'updated_at' => date('Y-‐m-‐d H:i:s') )); } /** * Revert the changes to the database. * * @return void */ public function down() { Schema::table('users', function($table) { $table-‐>drop(); }); } }
26
2.8
Git Version Control Kontrol versi (version control) adalah sebuah sistem yang mencatat setiap
perubahan terhadap sebuah berkas atau kumpulan berkas sehingga pada suatu dapat dikembalikan kepada salah satu versi dari berkas tersebut (Scott Chacon, 1). Dengan adanya kontrol versi memungkinkan untuk mengembalikan berkas anda pada kondisi/keadaan sebelumnya, mengembalikan seluruh proyek pada keadaan sebelumnya, membandingkan perubahan setiap saat, melihat siapa yang terakhir melakukan perubahan terbaru pada suatu objek sehingga berpotensi menimbulkan masalah, siapa yang menerbitkan isu, dan lainnya. Ada beberapa macam sistem kontrol versi yaitu: a.
Sistem kontrol versi lokal, sistem kontrol ini hanya berjalan pada komputer individu. Permasalahan yang muncul ketika menggunakan sistem ini adalah para pengembang tidak bisa melakukan kolaborasi dengan pengembang pada sistem lainnya.
Gambar 2.3 Diagram kontrol versi lokal
27
b.
Sistem kontrol versi terpusat, menggunakan sebuah server untuk menyimpan setiap versi berkas, dan beberapa klien yang dapat melakukan checkout berkas dari server pusat. Permasalahan yang muncul ketika menggunakan sistem ini adalah jika server mati untuk beberapa jam, maka tidak ada seorangpun yang bisa berkolaborasi atau menyimpan perubahan terhadap apa yang mereka telah kerjakan. Jika harddisk yang menyimpan basis data mengalami kerusakan, dan salinan yang belum tersimpan, anda akan kehilangan setiap perubahan dari proyek kecuali snapshot yang dimiliki oleh setiap kolaborator pada komputernya masing-masing.
Gambar 2.4 Diagram kontrol versi terpusat c.
Sistem kontrol versi terdistribusi, sistem versi kontrol ini adalah perbaikan dari sistem versi kontrol sebelumnya yaitu dengan cara terdistribusi. Dengan version kontrol yang terdistribusi, maka tidak ada satu kode dasar terpusat dan sistem ini memiliki banyak remote komputer pusat (server). Para pengembang tidak hanya melakukan checkout untuk snapshot terakhir setiap berkas, namun mereka memiliki salinan penuh ketika melakukan pengkopian (clone) dari repositori tersebut. Jadi, jika server mati, dan sistem berkolaborasi melalui server tersebut, maka pengembang manapun dapat mengirimkan salinan repositori tersebut kembali ke server. Setiap checkout pada sistem kontrol versi terdistribusi merupakan sebuah backup dari keseluruhan data.
28
Gambar 2.5 Diagram kontrol versi terdistribusi Git merupakan salah satu dari perangkat lunak sistem versi kontrol terdistribusi yang open source. Git dibuat oleh Linus Torvalds ketika beliau membangun kernel linux. Listing 2.8 Perintah untuk membuat repo baru dan pengkopian // membuat repositori baru git init // untuk melakukan penggandaan lokal repositori git clone /path/to/repositori // untuk melakukan penggandaan jika menggunakan remote server git clone username@host:/path/to/repository
29
Setiap kali repositori baru Git dibuat, repositori lokal terdiri dari 3 (tiga) pohon (tree) yang dikelola oleh Git. Tree yang pertama adalah area kerja, dimana pada bagian ini memegang berkas yang sebenarnya. Tree yang kedua adalah bagian yang bertindak sebagai indeks area pementasan (stagging). Tree yang terakhir adalah bagian yang menunjuk ke pesan pekerjaan (commit) terakhir yang dibuat.
Gambar 2.6 Tree Git Listing 2.9 Perintah diff, add dan commit // untuk menampilkan perbedaan antara area kerja dengan indeks git diff // untuk menambahkan berkas baru ke dalam index git add
// untuk melakukan commit ke HEAD git commit -‐sam "Commit message"
Cabang digunakan untuk mengembangkan fitur yang terisolasi satu sama lain. Cabang dengan nama “master” adalah cabang standar (default) ketika repositori dibuat. Ketika proses pengembangan pada sebuah cabang dianggap selesai, maka cabang tersebut dapat digabungkan kembali ke cabang “master”.
30
Gambar 2.7 Ilustrasi branch dan master pada Git Listing 2.10 Perintah branch, checkout dan merge // membuat branch baru $ git branch // untuk mengetahui jumlah branch dan ada di posisi branch apa saat ini $ git branch -‐v * auth 19a97e5 Fix issue number #18 full-‐screen 390920f Add prototype jquery fullsreen api lock-‐ip f344aae Update code master ce69371 [ahead 9] Merge branch 'auth' // checkout ke branch master $ git checkout master Switched to branch 'master' // merge branch auth ke branch master $ git merge auth
Untuk dapat berkolaborasi untuk proyek Git apapun, perlu mengatur adanya remote server repositories. Remote server repositories adalah sekumpulan versi dari proyek Anda yang didistribusikan di internet atau di jaringan. Dalam sebuah lokal repositori git dapat memiliki beberapa remote server repositories, yang masing-masing bisanya disertai dengan akses terbatas untuk membaca saja ataupun baca/tulis. Ketika bekerja dengan menggunakan remote server repositories ada dua istilah yang digunakan yaitu pull dan push. Pull merupakan perintah Git untuk melakukan update perubahan yang berasal dari remote server repositories ke local repositories. Sedangkan push digunakan untuk menyimpan perubahan yang berasal dari local repositories ke remote server repositories.
31
Listing 2.11 Perintah untuk menambah repo baru, push dan pull // untuk menambah remote repositori git git remote add /path/to/repositori // untuk menyimpan perubahan yang berasal dari lokal ke remote server git push // untuk mengupdate perubahan yang berasal dari remote server ke lokal git pull
GitHub adalah sebuah situs web yang beralamatkan di https://github.com merupakan penyedia layanan remote server repositories git yang open source. GitHub memberikan dua macam layanan remote server repositories yaitu repositori yang bersifat public dan private. Untuk layanan public remote server repositories tidak dikenakan biaya/gratis, sedangkan untuk private remote server repositories dikenakan biaya yang beragam.
Gambar 2.8 Contoh proyek public di GitHub
32
2.9
HTML5 HTML5 bukan hal yang tunggal atau teknologi monolitik, akan tetapi
HTML5 merupakan kumpulan fitur, teknologi dan API yang membawa kekuatan dekstop dan pengalaman multimedia ke web sementara – sehingga meningkatkan kekuatan inti dari web yang berdasarkan konektifitas dan interaktivitas. HTML5 merupakan revisi kelima dari HTML markup languange yang di dalamnya membawa CSS3 dan serangkain javascript API baru. Bersama-sama, teknologi ini memungkinkan untuk membuat aplikasi yang kompleks yang sebelumnya hanya dapat dibuat untuk platform desktop. Tujuan dibuatnya HTML5 antara lain: 1.
Fitur baru di dasarkan pada HTML, CSS, Document Object Model (DOM) dan Javascript.
2.
Mengurangi kebutuhan plugin eksternal (seperti flash).
3.
Penangan masalah yang lebih spesifik.
4.
Lebih banyak markup untuk menggantikan scripting.
5.
HTML5 merupakan perangkat mandiri. Fitur baru dalam HTML5 antara lain:
1.
Class Multimedia, elemen video dan audio untuk media pemutaran
2.
Class Offline and Storage, dukungan yang lebih baik untuk penyimpanan secara offline, aplikasi web dapat berjalan cepat dan bekerja walaupun tidak adanya koneksi internet. Hal ini dikarenakan aplikasi HTML5 cache, Indexed DB dan File API
3.
Class Performance and Integration
4.
Class Semantic, elemen konten yang lebih spesifik, seperti artikel, footer, header, navigation, section serta penambahan bentuk form kontrol seperti kalender, tanggal, waktu, e-mail, URL, search.
5.
Class CSS3
33
6.
Class 3D, Graphics and Effects, terdapat teknologi SVG, Canvas, WebGL dan CSS3 3D fitur yang memungkin hal ini terjadi
7.
Class Connectivity, konektifitas yang lebih efisien ini berarti real-time chating, game yang lebih cepat dan komunikasi yang lebig baik
8.
Class Device Access, dimulai dengan Geolocation API, Aplikasi Web dapat menyajikan kaya, perangkat-sadar fitur dan pengalaman. Inovasi perangkat akses yang luar biasa sedang dikembangkan dan dilaksanakan, dari audio / video input untuk akses. Di dalam class multimedia, teknologi HTML5 dilengkapi dengan fitur-
fitur baru salah satu fitur tersebut adalah fullscreen API . Dengan fitur tersebut element pada HTML dapat dibuat menjadi fullscreen. Contoh implementasi fullscreen API terdapat pada aplikasi web yang menyediakan layanan video streaming seperti youtube 2.10 Javascript dan Ajax Javascript diperkenalkan pertama kali oleh Netscape pada tahun 1995. Pada awalnya bahasa ini dinamakan “LiveScript” yang berfungsi sebagai bahasa sederhana untuk browser Netscape Navigator 2. Javascript adalah bahasa yang berbentuk kumpulan skrip yang pada fungsinya berjalan pada suatu dokumen HTML, sepanjang sejarah internet bahasa ini adalah bahasa skrip pertama untuk web. Bahasa ini adalah bahasa pemrograman untuk memberikan kemampuan tambahan terhadap bahasa HTML dengan mengijinkan pengeksekusian perintah perintah di sisi user, yang artinya di sisi browser bukan di sisi server web.
34
Javascript bergantung kepada browser (navigator) yang memanggil halaman web yang berisi skrip skrip dari Javascript dan tentu saja terselip di dalam dokumen HTML. Javascript juga tidak memerlukan kompilator atau penterjemah khusus untuk menjalankannya (pada kenyataannya kompilator Javascript sendiri sudah termasuk di dalam browser tersebut). Lain halnya dengan bahasa “Java” (dengan mana JavaScript selalu di banding bandingkan) yang memerlukan kompilator khusus untuk menterjemahkannya di sisi user/klien. Listing 2.12 Contoh penggunaan javascript <script language="javascript"> //
Ajax kependekan dari Asynchronus Javascript and XML merupakan salah satu teknik berbasis javascript untuk membuat “background server call” dan meminta data dari server sebatas yang diperlukan saja, tanpa harus melakukan load halaman secara keseluruhan. Contohnya, dalam pembuatan form email baru, server memberikan pesan apa yang cocok untuk nama pengguna dengan nama tertentu berdasarkan kombinasi nama pengguna tanpa harus melakukan load keseluruhan halaman. Secara garis besar, ada empat komponen pembentuk Ajax, yaitu : 1.
Presentasi berbasis peramban web;
2.
Data yang diambil dari server biasanya dalam bentuk json, xml;
3.
Pemrosesan
data
XMLHttpRequest; 4.
Javascript
di
balik
layar
dengan
menggunakan
objek
35
2.11
Ujian Saringan Masuk Ujian saringan masuk salah satu mekanisme penerimaan mahasiswa baru
yang bertujuan menjaring calon mahasiswa dari berbagai latar belakang kedaerahan, termasuk calon dari lulusan luar negeri, yang memiliki kemampuan akademik yang memadai dalam mengikuti program pendidikan tinggi di universitas. Ujian saringan masuk dilakukan secara serentak sesuai dengan jadwal yang telah ditentukan. Materi tes ujian saringan masuk terdiri dari beberapa bagian/topik permasalahan. Topik pada setiap antara jenjang pendidikan satu dengan yang lain berbeda, misalnya jika calon mahasiswa berasal dari jenjang SMU pada saat ujian berlangsung maka akan mendapatkan bagian/topik soal basis data dan matematika dasar, sedangkan untuk jenjang D3 maka bagian/topik yang harus dikerjakan matematika diskrit dan lainnya. Pada masing-masing topik terdapat batas waktu dan bobot, sehingga mahasiswa yang telah melewati batas waktu tersebut (belum selesai) dianggap selesai. Pada setiap topik dapat memuat beberapa soal yang harus dikerjakan, dan setiap soal yang dikerjakan antara satu mahasiwa dengan yang lainnya berbeda. Calon mahasiswa yang dinyatakan lulus harus memenuhi kriteria nilai/passing grade yang ditentukan oleh fakultas.
36