7
BAB II LANDASAN TEORI Topik
Object-Relational
Mapping
didasari
oleh
teori
Object-Oriented
Programming, walaupun teori OOP sudah ada sejak tahun 1960 (McCarthy et al., 1960), untuk kepentingan penelitian ini penulis akan menyajikan kembali teori dasar dari Object-Oriented Programming. Penelitian ini meliputi topik mengenai Object-Relational Mapping dan beberapa tools ORM yang tersedia saat penulisan penelitian ini dibuat untuk bahasa pemograman PHP. Pada bab ini penulis menyajikan dasar-dasar teori dari seluruh aspek mengenai ORM dan PHP.
2.1. Pengenalan tentang Objek Dalam konteks ilmu komputer, objek adalah sebuah entitas yang unik/ memiliki ciri-ciri tersendiri yang dapat dimanipulasi oleh bahasa pemograman (Ostrowski, Birman, Dolev & Ahnn 2008). Bahasa pemograman dapat memanipulasi value, variable, function atau data structuredari suatu objek.
2.1.1. Object Oriented Programming (OOP) OOP menggunakan struktur data yang dimana terdiri dari method, data field dan interactions (Hofstedt 2010). OOP digunakan untuk mendesain program komputer untuk berbagai macam aplikasi. Ada beberapa teknik yang fundamental yang digunakan dalam OOP, antara lain polymorphism, inheritance, modularity, abstraction dan encapsulation. Pada paradigma pemograman ini, prosedur dan fungsi digabung menjadi entitas yang unik yang dikenal sebagai Object (Ostrowski, Birman, Dolev & Ahnn 2008).
8
Object ini merepresentasikan konsep objek secara harfiah yang ada di dunia nyata seperti manusia, mobil, account, invoice dan lain-lain.Object di desain sedemikian rupa sehingga dapat berkomunikasi dengan object lainnya dengan cara memanggil procedures dan functions. Program yang menggunakan metodologi OOP akan terdiri dari koleksi dari object-object yang saling berinteraksi (Hofstedt 2010). Hal ini berbeda dengan software model yang konvensional dimana program terdiri dari sekumpulan task dan sub routine yang harus tuntas.
Langkah pertama mengembangkan program dengan metode OOP adalah mengidentifikasi semua objek yang ingin dimanipulasi dan bagaimana hubungan antar objek tersebut, langkah ini umum disebut dengan data modelling. Saat objek sudah teridentifikasi, langkah selanjutnya adalah melakukan generalisasi objek tersebut menjadil class of object dan definisikan tipe data apa objek itu terbentuk dan berbagai macam sequence logic yang dapat dimanipulasi. Setiap logic sequence dinamakan method.
2.1.2.Teori Dasar Object Oriented Programming Object adalah sebuah instance dari suatu class. Class terdiri dari kombinasi data dan instruksi yang memungkinkan object mampu menerima, mengirim dan memproses data. Beberapa jargon pada Object Oriented Programmingadalah sebagai berikut : •
Class Suatu tipe data yang di definisikan oleh user yang mendefinisikan karakteristik dari object
•
Object
9
Instance dari Class •
Instance Representasi nyata dari Class
•
Method Dengan kata lain adalah kemampuan dari Object. Method adalah bagaimana object melakukan proses. Ketika instruksi dikirim ke object, maka method diimplementasikan
•
Message Passing Proses object mengirim instruksi ke object lain
•
Encapsulation Konsep utama dan paling penting pada OOP adalah encapsulation (Harrison, Sallabi & Eldridge, 2005). Encapsulation dapat diartikan sebagai method yang memberikan kemampuan object untuk beroperasi sementara menyembunyikan mekanisme yang ada pada object.
•
Polymorphism Kemampuan object untuk digunakan secara unik tergantung situasi yang terjadi tanpa merubah sifat object itu sendiri (Harrison et al., 2005)
•
Inheritance Kemampuan class untuk menurunkan properties dari class induk nya. Sub Class memiliki atribut dan sifat yang sama dengan class induknya.
•
Abstraction Kemampuan untuk menyamarkan data-data yang ada pada object.
2.2. PHP
10
Hingga saat ini PHP masih menjadi bahasa pemograman yang dihiraukan oleh kalangan korporasi, karena pendapat dari para programmer di kalangan korporasi tidak sedikit yang menganggap PHP hanya sekedar web scripting language yang sederhana/simple, karena hal itu PHP tidak diperuntukkan untuk penggunaan yang serius, tetapi apakah argumentasi ini masih valid?.
2.2.1 Sejarah PHP PHP adalah server side scripting languageyang diperuntukkan sebagai bahasa pengembangan aplikasi berbasis web untuk menghasilkan halaman web yang dinamis, untuk tujuan tersebut PHP ditanamkan ke dalam HTML yang kemudian di terjemahkan oleh web server apache dengan modul PHP processor. PHP pertama kali dibuat oleh Rasmus Lerdorf (1995) dengan maksud untuk membuat halaman web sederhana dan pada saat itu PHP hanya support procedural programming, oleh karena itu PHP memiliki kepanjangan Personal Home Pageyang kemudian berganti menjadi PHP:Hypertext Preprocessor. Kemudian pada tahun 2004 versi ke-5 PHP lahir, pada versi ini PHP memilki kemampuan object-oriented yang lebih maju dibandingkan dengan versi ke-4dan fasilitas ini berhasil membawa teknik dan metode pengembangan yang sudah diadopsi oleh bahasa Java ke dalam PHP.
Saat ini PHP adalah bahasa pemograman ke-6 yang paling populer setelah Java, C, C++, C# dan Objective C (Tiobe Software 2011).
Tabel 1 Programming Community Index December 2011 (Tiobe Programming 2011)
11
Jika hanya melihat bahasa pemograman khusus web, mungkin PHP adalah bahasa pemograman yang paling populer mengingatApache yang menjadi web server untuk bahasa PHP diinstal hampir 65% dari seluruh server di dunia (Netcraft 2011), 46% diantaranya ter instal modul PHP, diikuti oleh frontpage extension 21%, Perl 12%, Python 2%.
12
Gambar 1Market Share for Top Servers (Netcraft 2011)
2.2.2 Karakteristik PHP PHP memiliki lisensi open source adalah alternatif bahasa pemograman web seperti
Microsoft
ASP.NET/C#/VB.NET,
Macromedia
Coldfusion,
Sun
Microsystem JSP dan CGI/Perl. Contoh aplikasi terkenal yang menggunakan PHP adalah wikipedia yang basis nya dari aplikasi mediawiki. Karakteristik PHP adalah sebagai berikut : •
Familiarity Programmer yang memiliki latar belakang bahasa pemograman yang lain kerap menemukan bahasa PHP memiliki struktur yang sama. Karena
13
kebanyakan bahasa pemograman lain dibangun berdasarkan bahasa C. Dan dibanyak kasus, format kode PHP hampir sama dengan bahasa C sehingga untuk mempelajari bahasa PHP tidak perlu memakan waktu yang lama. •
Simplicity Skrip PHP bisa terdiri dari 1 hingga 10.000 baris kode untuk membangun aplikasi sesuai kebutuhannya. PHP tidak memerlukan (include) library untuk menjalankan fungsi-fungsi dasar PHP. PHP engine akan mengeksekusi program dari sequence pertama ()
•
Efficiency Mulai versi 4, PHP memperkenalkan resource-allocation mechanism dan support untuk object-oriented (OO) programming. Dengan support OO menjadikan PHP lebih efisien dalam membuat program
•
Security PHP menyediakan 2 kerangka levelkeamanan: 1. System-Level Security Safeguards PHP dapat dijalankan dalam konfigurasi safe mode dimana konfigurasi tersebut membatasi user untuk melakukan exploit terhadap
program.
Kemudian
PHP
juga
menyediakan
pembatasan terhadap akses penggunaan memory dan waktu maksimum execution, sehingga dapat mempertimbangkan load yang terjadi di server
14
2. Application-Level Security Safeguards Source code PHP tidak dapat dilihat melalui web browser karena kode tersebut sudah diterjemahkan oleh server •
Flexibility Karena PHP adalah bahasa yang dapat di tanam (embedded), PHP sangat fleksibel untuk mencapai kebutuhan dari programmer. Walau secara umum PHP di tanam di dalam HTML, PHP juga dapat ditanam di dalam Javascript, WML, XML, JSON dan lain-lain. PHP tidak browser specific, sehingga tidak ada requirement yang menjadi patokan browser untuk menjalankan kode PHP. Kode PHP dengan mudah dapat dibaca di berbagai devices tidak hanya PC, tapi smart phone, PDA, PC Tablet dan lain-lain. Serta PHP dapat berjalan diatas platform UNIX, Solaris, FreeBSD dan Windows. PHP juga menawarkan konektifitas terhadap komponen eksternal seperti Enterprise Java Beans (EJB) atau WIN32 COMobjects.
•
Free Strategi pengembangan open-source merupakan hal yang terkenal di dalam industri software. Dengan komunitas open source, PHP berkembang sangat signifikan.
2.2.3 PHP dan Arsitektur Server Arsitektur aplikasi PHP sangat sederhana, dengan mengirimkan HTTP request dari browser ke server, lalu server merespon dengan mengirim balik stream HTML ke browser.
15
Gambar 2 Arsitektur PHP dan Server
Jika request tersebut berisi PHP script, server akan mengirim kode tersebut ke PHP Interpreter dimana pada saat tersebut database juga mungkin terlibat tergantung dari kode PHP.
2.2.4 PHP dan Model View Controller (MVC) Model-View-Controller atau MVC adalah sebuah metode untuk membuat sebuah aplikasi dengan memisahkan data(model) dari tampilan (view) dan bagaimana cara melakukan prosesnya (controller). MVC merupakan arsitektur software yang sudah diperkenalkan semenjak tahun 1978(Trygve, 2003). Walaupun konsep MVC ini sudah berusia 33 tahun, tetapi arsitektur MVC terbukti sesuai dengan kebutuhan pemograman berbasis web khususnya PHP. MVC juga digunakan oleh bahasa pemograman lainnya sepertiRuby on Rails, Apple Cocoa, ASP.NET Framework, dan Apache Struts.
16
Model-View-Controller seperti namanya memiliki bagian-bagian sebagai berikut : •
Model Model mewakili struktur data, biasanya model berisi fungsi-fungsi yang membantu seseorang dalam pengelolaan database seperti create, read, update dan delete (CRUD)
•
View View adalah bagian yang mengatur tampilan ke pengguna. Dalam konteks PHP yaitu halaman web
•
Controller Controller merupakan bagian yang menjembatani model dan view. Controller berisi perintah-perintah yang berfungsi untuk memproses data (model) dan mengirimkannya ke tampilan (view)
Belum ada yang menyatakan mengenai definisi standar dari pattern MVC dan masing-masing framework menggunakan versinya masing-masing, akan tetapi ide utama MVC adalah untuk : •
Memisahkan layer presentation dari model Memungkinkan untuk implementasi user interface yang berbeda-beda serta lebih mudah untuk melakukan tes terhadap program
•
Memisahkan layer Controller dari view
17
2.3. Database Database adalah sekumpulan informasi yang terorganisir sehingga bisa diakses, di manage, dan di update. Database juga merupakan sekumpulan informasi yang saling berkaitan beserta deskripsinya, yang di desain bertujuan untuk kebutuhan informasi dari suatu organisasi (Thomas & Carolyn, 2010)
2.3.1 Database Management System (DBMS) Database management system (DBMS) adalah program yang memungkinkan untuk menyimpan, memodifikasi dan mengekstrak informasi dari database. DBMS memiliki banyak tipe baik dari DBMS yang di desain untuk komputer personal hingga mainframes. DBMS umumnya memiliki :
•
Data Definition Language (DDL) DDL memungkinkan user untuk menentukan spesifikasi tipe data beserta struktur yang akan disimpan ke dalam database
•
Data Manipulation Language (DML) Memungkinkan user untuk melakukan operasi insert, update, delete dan retrieve data di dalam database. DML lebih dikenal dengan Structured Query Language (SQL)
•
Access Control Memberikan akses terhadap kontrol database, contohnya; 1. Security System, memberikan mekanisme otorisasi user untuk mengakses database 2. Integrity System, menjaga konsistensi dari data yang disimpan
18
3. Concurrency Control System, memberikan akses terhadap data secara shared 4. Recovery Control System, dapat melakukan restore ke kondisi data yang baik sebelumnya
2.3.2 Relational Database Management System (RDBMS) Relational Database Management System adalah tipe dari DBMS yang didasari oleh relational data model (Codd, 1970).Dalam relational model, seluruh data tersimpan secara terstruktur dalam tabel yang berhubungan. Setiap relasi memiliki nama dan terdiri dari attribute atau kolom data. Setiap tuple (baris) terdiri dari satu value per attribute. Pada akhirnya database yang sama dapat di lihat dari berbagai macam cara dan menghasilkan bermacam-macam informasi. Keunggulan utama pada relational system yaitu sebuah database dapat terdiri dari lebih dari satu tabel. Hal ini yang membedakan dengan flat-file database, dimana satu database hanya terdiri dari satu tabel. RDBMS memiliki aturan untuk mencegah terjadinya duplikasi data dengan menggunakan teknik yang dinamakan normalization. Hampir seluruh full-scale DBMS yang digunakan oleh organisasi bisnis seperti Oracle, DB2, SQL Server dan MySQL adalah termasuk kategori RDBMS. RDBMS yang didasari oleh relational data model (Codd, 1970) adalah model database yang didasari oleh matematika logis serta sekumpulan teori lainnya yang memiliki tujuan untuk dapat mengekspresikan query melalui bahasa pemograman serta memastikan integritas database. Kata “Relation” memiliki arti “tabel” dalam terminologi matematika, maka “Relational” dapat diartikan secara kasar adalah “berdasarkan tabel”.
19
2.3.3 Object-oriented
Database
Management
System
(OODBMS) Sebuah Object-oriented database management system (OODBMS) adalah sebuah DBMS yang mendukung data modelling dan pembuatan data secara objek. Termasuk di dalamnya terdiri dari class-class objek dan inheritance dari class properties dan method dari sub-class. Saat penelitian ini disusun, belum ada standarisasi yang diterima secara luas mengenai OODBMS, dan produk OODBMS yang ada saat ini masih dalam taraf baru. Tapi tidak menghindari fakta bahwa OODBMS merupakan pasangan yang tepat dalam pengembangan program berbasiskan OO ke depannya.
Walaupun hingga saat ini RDBMS memiliki banyak tools untuk mendukung method di pengembangan program pada lingkungan OO, tetapiakan selalu ada kondisi yang tidak sesuai ketika menterjemahkan dari object ke relational. Kondisi ini dinamakan Object-Relational Impedance Mismatch.
2.4. Persistence Dalam ilmu komputer, persistence memiliki pengertian bahwa data memiliki kemampuan untuk hidup (tetap) berbanding lurus dengan daur hidup program itu sendiri (Thomas & Carolyn,
2010). Persitence pada skala teknis bisa
digambarkan yaitustate hanya hidup di dalam RAM dan state tersebut akan hilang jika RAM kehilangan daya / shutdown. Dalam prakteknya pada aplikasi picture editing atau word processors mencapai persistence dengan cara menyimpan dokumen ke dalam file.Hampir semua program membutuhkan data yang
20
persistence, persistence merupakan konsep yang dasar dalam pengembangan aplikasi.
2.4.1 Persistence pada aplikasi Object-oriented Pada aplikasi object-oriented, persistencememungkinkan object untuk hidup lebih lama dibandingkan proses yang membuatnya. State objeknya memungkinkan disimpan ke dalam penyimpanan non-volatile seperti disk/hard drive.
2.5. Object-Relational Impedance Mismatch Paradigma object-oriented diciptakan atas dasar prinsip software engineering. Sedangkan paradigma relational diciptakan atas dasar prinsip matematika. Impedance mismatch terjadi karena mencoba menggabungkan kedua paradigma tersebut. Terminologi impedance mismatch merupakan terminologi yang umum digunakan pada bidang kelistrikan. Pada software engineering, impedance mismatch memiliki makna yaitu kondisi dimana arus data tidak mengalir/berjalan dengan maksimal. Impedance mismatch semakin jelas terlihat, ketika object membahas hubungan antar objek, sedangkan relational membahas tentang join tabel. Perbedaan dasar ini yang menghasilkan kombinasi yang tidak ideal antar teknologi object dengan relational. Untuk dapat menggabungkan kedua teknologi tersebut dengan sukses, membutuhkan pemahaman yang mendalam tentang kedua paradigma tersebut, serta perbedaan-perbedaannya (Scott, 2006).
21
Berikut merupakan ketidakcocokan yang umum terjadi antara kedua paradigma tersebut: •
Permasalahan dengan granularity (kemampuan untuk memecah data)
•
Permasalahan dengan subtipe (inheritance, polymorphism)
•
Permasalahan dengan menghubungkan antar / asosiasi
•
Permasalah dengan navigasi data
2.6. Object-Relational Mapping (ORM) Object-relational mapping adalah teknik pemograman untuk mengkonversikan data antar dua tipe sistem yang berbeda pada relational database dan object oriented programming. ORM juga menjadi penengah antara aplikasi dengan relational database.
Application Persistence Object ORM Framework
Database
Gambar 3 Arsitektur Object-relational mapping
Arsitektur
ORM
seperti
pada
gambar
4
menjelaskan
bahwa
pengembang/programmer dapat leluasa menangani business processsaja jika terjadi perubahan pada database. ORM merupakan tool yang berguna untuk menggabungkan kelebihan antara kedua paradigma relational dan object oriented.
22
2.7. Object-Relational Mapping(ORM) Tools ORM toolsatau jugadisebut ORM frameworkmemliki tugas untuk melakukan mapping object ke database SQL. Dengan kata lain, fungsinya adalah memuatdata, mencari data dan menyimpanobjek data model. Framework ORM menangani kode program seperti insert, select, update, delete melalui mekanisme tertentu secara otomatis. Sebuah ORM tool memberikan solusi menyimpan object ke dalam database relational. Hanya cukup memberikan parameter di dalam ORM tool bagaimana data model di mapping ke schema database, dan ORM akan menangani object ke dalam dan keluar database. Hal ini memungkinkan programmer untuk lebih fokus untuk memecahkan masalah pada proses bisnis tanpa harus memikirkan low-level database accessquery.Kriteria utama ORM adalah sebagai berikut : •
Declarative Mapping antara object model dan database schema. Mendeskripsikan bagaimana class, attributes dan relationship dari object dipetakan ke tabel dan kolom di database, dan digunakan oleh ORM untuk menghasilkan SQL statements.
•
API (Application Programming Interface) untuk membuat, membaca, memperbarui dan menghapus object
•
Query language. Digunakan untuk mencari data persisten berdasarkan kriteria
•
Mendukung transaction . Memastikan integritas data dan menjamin concurrent update
•
Caching. Optimasi performa dengan cara meminimalisasi akses database
23
Terdapat berbagai macam tool ORM yang tersedia di pasaran, baik yang memiliki lisensi maupun yang open source. Berikut adalah list ORM tool untuk PHP yang tersedia luas: •
Doctrine
•
Propel
•
Redbean PHP
•
Outlet
•
Kohana ORM Library
•
dORM
•
iWorm
•
Repose
•
PHPActiveRecord
•
PHPLinq
•
FuelPHP
Jika dibandingkan dengan bahasa pemograman yang paling populer saat ini (Tiobe Software 2011), Java memiliki ORM tool yang dianggap sebagai defacto yaitu Hibernate. Dalam penelitian ini, penulis akan menggunakan tool ORM untuk PHP yang mendekati (identik) dengan fitur yang dimiliki oleh hibernate. Proses pemilihan tool ORM akan dibahas di bab 3 penelitian ini.
2.8. Definisi, Akronim dan Singkatan Untuk selanjutnya, penulis akan menggunakan istilah pada tabel dibawah ini sebagai langkah efisiensi dalam cara penulisan.
24
Tabel 2 Definisi, akronim dan singkatan ORM SQL DDL DML OO RDBMS ODBMS DB API GUI CRUD XML IDE MVC SDLC SQA OQL
Object Relational Mapping Structured Query Language Data Definition Language Data Manipulation Language Object Oriented Relational Database Management System Object-oriented Database Management System Database Application Programming Interface Graphical User Interface Create/Read/Update/Delete Extensible Markup Language Integrated Development Environment Model View Controller System Development Life Cycle Software Quality Assurance Object Query Language