PENDAHULUAN Latar Belakang
Enterprise Resource Planning (ERP) merupakan suatu aplikasi terintegrasi yang difokuskan untuk mengotomasi seluruh aktivitas infrastruktur dalam suatu perusahaan. Sistem ERP menggabungkan proses bisnis antara perusahaan dan pelanggan, perusahaan dengan supplier, dan proses perhitungan keuangan perusahaan. Semua proses bisnis yang tergabung mengakses pada sebuah basis data yang terpusat (Parr 2000).
Sebagian besar aplikasi yang berskala enterprise dikembangkan dengan pendekatan berorientasi objek menggunakan three-tier-architecture yang terdiri atas lapisan presentasi, lapisan aplikasi, dan lapisan basis data (Rashid et al. 2002). Sementara itu, sistem manajemen basis data yang banyak digunakan sekarang ini adalah basis data relasional. Dengan demikian, terdapat ketidaksesuaian (mismatch paradigm) antara basis data relasional yang digunakan dan aplikasi yang dikembangkan dengan pendekatan berorientasi objek. Ketidaksesuaian tersebut antara lain aspek granularity, subtypes, identitas, asosiasi, dan navigasi data (Bauer & King 2007).
Untuk mengatasi masalah ini Nugraha (2005) melakukan penelitian mengenai konsep ORM (Object Relational Mapping) yang berfungsi memetakan antara class dan tabel. Pada prinsipnya, penelitian tersebut menunjukan bahwa Object Relational Mapping (ORM) adalah sebuah solusi yang dapat menjembatani paradigma ketidaksesuaian antara sistem basis data relasional dan pengembangan aplikasi berorientasi objek.
Namun demikian Nugraha (2005) hanya membatasi penelitiannya pada aspek pemetaan dan tidak diimplementasikan pada aplikasi yang utuh. Pada penelitian ini, dilakukan analisis terhadap aplikasi Ritel ERP yang dikembangkan Ernita (2008) untuk menunjukan adanya ketidaksesuaian (mismatch) tersebut. Selanjutnya akan diimplementasikan konsep ORM untuk menghilangkan ketidaksesuaian tersebut serta penerapan konsep design pattern yang berfungsi dalam proses penyatuan dengan lapisan aplikasi.
Tujuan Penelitian
Tujuan dari penelitian ini adalah: 1 Menganalisis ketidaksesuaian yang
muncul dari rancangan sistem Ritel ERP yang dikembangkan Ernita (2008) dan basis data relasional yang digunakan. 2 Menerapkan konsep ORM untuk
mengatasi masalah ketidaksesuaian tersebut.
3 Memanfaatkan konsep design pattern dalam pengaksesan basis data oleh lapisan aplikasi.
Ruang Lingkup Penelitian
Ruang lingkup penelitian ini adalah : 1 Membangun lapisan Model untuk
aplikasi Ritel ERP dengan menerapkan konsep ORM dengan menggunakan satu framework yang telah ada tanpa membandingkan dengan framework ORM lain.
2 Menerapkan konsep ORM pada aplikasi Ritel ERP tetapi tidak disertai konsep untuk manajemen backup data dan pengelolaan data yang sudah tidak terpakai.
Manfaat Penelitian
Penelitian ini diharapkan dapat bermanfaat dalam pemeliharaan dan pengelolaan manajemen basis data pada pengembangan aplikasi ERP selanjutnya. Selain itu, penerapan ORM dapat menghemat koneksi pada server basis data sehingga aplikasi ERP yang dikembangkan lebih optimal.
TINJAUAN PUSTAKA
Enterprise Resource Planning
Enterprise Resource Planning (ERP) adalah suatu aplikasi terintegrasi yang difokuskan untuk mengotomasi seluruh aktivitas infrastruktur perusahaan. Aplikasi ERP menggabungkan proses bisnis antara perusahaan dan pelanggan, perusahaan dan supplier, dan proses perhitungan keuangan perusahaan. ERP mengotomasi proses bisnis perusahaan baik dari segi produksi, distribusi, keuangan, waktu, dan sumber daya manusia (Parr 2000).
Inti modul ERP antara lain (Rashid et al. 2002) :
Manajemen akuntasi dan keuangan.
Manajemen manufacturing dan produksi.
Manajemen transportasi, penjualan dan distribusi.
Manajemen sumber daya manusia
Supply Chain Management (SCM).
Customer Relationship Management (CRM).
Pengembangan aplikasi ERP menggunakan three-tier architecture yang terdiri atas (Rashid et al. 2002):
Lapisan presentasi berisi Graphical User Interface (GUI) atau browser untuk data entry atau untuk melakukan akses terhadap fungsi sistem.
Lapisan aplikasi berisi business rules, fungsi, logika, perlakuan program terhadap data yang diterima/ ditransfer dari/ke server basis data.
Lapisan basis data berisi fungsi manajemen data transaksi termasuk di dalamnya metadata.
Basis Data Relasional
Basis data merupakan sekumpulan data atau entitas beserta deskripsinya yang secara logika berelasi, dibuat untuk memenuhi kebutuhan informasi suatu organisasi serta dapat digunakan bersama-sama. Tujuan utama basis data adalah mengelola dan mengolah data yang begitu kompleks secara mudah, cepat dan efisien untuk berbagai kebutuhan (Connolly & Carolyn 2002).
Pada basis data relasional, relation berarti tabel, sehingga data disimpan dalam bentuk tabel-tabel. Relation digunakan untuk menyimpan informasi yang ditunjukan dalam basis data. Setiap tabel mempunyai atribut yang mewakili nama kolom dari tabel tersebut. Konsep relation hanya berlaku terhadap struktur lojik tidak mencakup struktur fisik (Connolly & Carolyn 2002).
PersistentObject
Dalam pengembangan sistem, persistent object didefinisikan sebagai objek yang dihasilkan dari suatu sistem dan dapat disimpan dalam waktu yang lama bahkan bersifat permanen (Peak & Heudecker 2006).
Persistent object bisa disimpan dalam bentuk basis data relasional, file system dalam harddisk, file XML, Web Service, ODBMS (Object Data Base Management
System), dan LDAP. Media penyimpanan persistent object yang paling banyak digunakan dalam pengembangan perangkat lunak adalah basis data relasional. Hal ini disebabkan pembuatan dan pengaksesan basis data pada sistem manajemen basis data relasional relaif mudah (Peak & Heudecker 2006).
Persistent object memudahkan proses penyimpanan dan pengaksesan data. Persistent object bersifat abstrak karena dapat menyembunyikan detail bagaimana suatu data disimpan dan diakses, sehingga seakan-akan prosesnya secara detail tidak
terlihat oleh objek lainnya (Peak & Heudecker 2006).
Object Relational mismatch
Object Relational Mismatch adalah ketidaksesuaian yang terjadi disebabkan adanya perbedaan antara aplikasi yang diimplementasikan dengan pendekatan berorientasi objek dan penyimpanan data yang menggunakan sistem basis data relasional. Ketidaksesuaian tersebut meliputi aspek:
1 Granularity
Ketidaksesuaian pada aspek granularity menyangkut pada pemecahan entitas menjadi atribut-atribut yang lebih kompleks. Pada basis data relasional tidak dikenal tipe data yang didefinisikan oleh pengguna (user-defined-data-type). Sebagai contoh class Person
mempunyai atribut address dengan tipe data address. Pada basis data relasional tidak mungkin mendefinisikan kolom address dengan tipe data
address juga. Hal yang paling
mungkin dilakukan adalah memecah
address menjadi street_address,
city_address, zipCode_address
dan tetap dimasukan ke dalam tabel
Person.
2 Subtypes
Ketidaksesuaian pada aspek subtypes adalah pembeda antara superclass dan subclass. Pada pemrograman berorientasi objek dikenal istilah inheritance (pewarisan) dari class parent kepada class child, sedangkan pada basis data relasional tidak dikenal proses pewarisan antar tabel.
3 Identitas
Ketidaksesuaian pada aspek identitas adalah adanya perbedaan pengenal
identitas antara objek dan tabel. Pada objek terdapat dua cara untuk membedakan objek yang satu dengan objek lainnya, yaitu dengan menggunakan fungsi antara lambang sama dengan (==) dan method
equals(). Lambang sama dengan
(==)merujuk pada alamat memori yang sama, sedangkan method equals()
merujuk pada nilai secara lojik yang sama. Akan tetapi pada basis data yang membedakan tabel satu dengan tabel yang lain adalah primary key.
4 Asosiasi
Ketidaksesuaian pada aspek asosiasi meliputi hubungan dua entitas yang memiliki keterhubungan. Pada objek, penghubung dua entitas tersebut dikenal sebagai references sedangkan pada basis data relasional dikenal dengan foreign key. Asosiasi antarentitas terdiri atas: one-to-one, one-to-many, dan many-to-many.
5 Navigasi data
Ketidaksesuaian pada aspek navigasi data meliputi proses pengaksesan suatu objek dari objek lain. Pada basis data relasional navigasi data dilakukan menggunakan query join sedangkan pada pendekatan berorientasi objek dilakukan dengan memanggil suatu method getter. Navigasi dibagi dua macam berdasarkan arahnya, antara lain: directional dan bidirectional (Bauer & King 2007).
Object Relational Mapping
Object Relational Mapping merupakan suatu teknik untuk memetakan dari persistent object pada aplikasi ke dalam tabel pada basis data secara otomatis dan transparan. Mekanisme ORM dapat dilihat pada Gambar 1. ORM menggunakan metadata untuk mendeskripsikan pemetaan antara objek dan basis data (Bauer & King 2007).
ORM berperan sebagai lapisan model dalam MVC pattern. Model adalah sebuah lapisan yang paling dekat dengan sumber data, baik itu berasal dari basis data, webservice, maupun file system. ORM merupakan solusi yang dapat mengatasi ketidaksesuaian yang terjadi akibat adanya perbedaan antara aplikasi yang diimplementasikan dengan pendekatan berorientasi objek dan penyimpanan data
dengan menggunakan sistem basis data relasional. Teknologi ORM ada beberapa macam, seperti Toplink dari Oracle, Kodo dari Bea System, dan Hibernate dari RedHat.
Gambar 1 Mekanisme ORM (Thamura et al. 2007).
Framework
Framework adalah aplikasi semi-complete yang dapat digunakan untuk membuat aplikasi lain yang lebih spesifik (Husted 2003). Framework yang ideal merupakan intisari dari pendekatan terbaik dalam pengembangan perangkat lunak.
Apabila suatu aplikasi dikembangkan menggunakan framework maka harus mengadopsi semua mekanisme dan ketentuan yang ditetapkan pada framework tersebut. Suatu framework mempunyai sekumpulan file library khusus. Alasan pengembangan sebuah framework adalah dimungkinkannya penggunaan kembali perangkat lunak dalam pengembangan selanjutnya.
Salah satu framework ORM adalah Hibernate. Hibernate adalah salah satu ORM framework open source yang dikembangkan untuk menangani masalah data persistence pada lingkungan Java. Hibernate terdiri atas dua versi yaitu Hibernate Core dan Hibernate Annotation. Hibernate Core menggunakan file XML untuk melakukan pemetaan terhadap objek-objek tabel pada basis data, sedangkan Hibernate Annotation menggunakan Java Annotation untuk mapping terhadap basisdata.
Implementasi Hibernate pada kode program Java menggunakan HQL (Hibernate Query Language) (Bauer dan King 2007). Sebelum melakukan query terhadap basisdata, terdapat beberapa konfigurasi yang harus dilakukan, antara lain menentukan dialect (jenis DBMS) yang digunakan, class driver, dan file koneksi.
database Table1 Table2 Table3 O R M ap pin g
Controller
Model View
Manipulasi Interaksi
Ditampilkan
Design pattern danJEE pattern
Design pattern adalah pola atau unsur-unsur rancangan yang seringkali muncul pada berbagai jenis sistem. Design pattern merupakan katalog permasalahan yang sering muncul beserta solusi yang sudah teruji dalam perancangan sistem (Gamma et al. 1995). Design pattern yang sering dijadikan studi adalah design pattern yang berasal dari Gang of Four (GoF) yaitu, Erich Gamma, Richard Helm, Ralph Johnson, dan John Vlissides.
GoF mengumpulkan pattern yang biasa dipakai dalam membangun sebuah sistem menjadi suatu katalog lengkap yang dapat dipakai dalam memecahkan berbagai masalah dalam pembangunan sebuah sistem. Dengan mengetahui deskripsi lengkap dari suatu permasalahan maka akan dapat dengan mudah diketahui pattern apa yang cocok sebagai solusi dari permasalahan tersebut dan ketika menghadapi masalah yang sama atau mirip maka pattern tersebut dapat digunakan kembali (Wahab 2007).
Design pattern yang digunakan pada penelitian ini antara lain (Gamma et al. 1995) :
a. Singleton adalah pola yang mengatur suatu objek yang hanya mempunyai satu instansiasi selama aplikasi berjalan. b. Proxy adalah pola yang merancang
suatu objek untuk mewakili kontrol atau akses objek lain dan bertindak seolah-oleh objek tersebut melakukannya. c. Façade adalah pola yang
menyederhanakan objek-objek yang terlihat rumit ke dalam sebuah interface. d. Factory method adalah pola untuk
mengenkapsulasi suatu objek dan diinstasiasi satu kali untuk digunakan berulang-ulang oleh objek.
Selain GoF, juga terdapat Gang of Three (GoT) yang terdiri atas Deepak Alur, John Crupi, dan Dan Malks. JEE pattern sebenarnya mengacu kepada design pattern berdasarkan GoF dan memiliki fungsi yang sama yaitu sebagai katalog permasalahan dan solusi yang sudah teruji dalam pengembangan spesifik aplikasi JEE. JEE pattern yang dipakai pada penelitian ini adalah DTO (Data Transfer Object) dan DAO (Data Access Object).
Data Transfer Object (DTO) pattern adalah pola yang mengenkapsulasi bisnis
data dan mengirimkannya secara sekaligus dalam satu waktu (Alur et al. 2003). DTO pattern juga berfungsi sebagai jembatan penghubung antarlapisan dalam aplikasi. Dengan pola ini proses perpindahan data menjadi sederhana dan terintegrasi. Data Access Object (DAO) pattern adalah pola yang mengenkapsulasi data akses dan manipulasi ke dalam lapisan yang berbeda kemudian diimplementasikan dengan membuat sebuah objek yang bersifat abstrak dan mengenkapsulasi seluruh akses data. (Alur et al. 2003).
Model View Controller
Model View Controler (MVC) pattern adalah pola yang memisahkan antara tampilan antarmuka (View), proses bisnis (Controller), dan objek data (Model) (McGovern 2003). Gambar 2 menunjukan struktur Model View Controller pattern (Wahab 2007). Lapisan Model merupakan proses bisnis utama. Di dalamnya terdapat kode untuk persistensi data dan proses bisnis. Secara singkat, Lapisan Model ini menangani isi dari aplikasi. Di lapisan ini diputuskan data yang akan diberikan pada client.
Sementara itu, lapisan View menangani masalah-masalah yang berkaitan dengan tampilan. Lapisan ini hanya melakukan pengaturan terhadap data agar tampilannya sesuai dengan kebutuhan pengguna. Lapisan terakhir adalah lapisan Controller, lapisan ini berfungsi mengatur alur pengguna. Pada lapisan ini dilakukan pemrosesan request untuk menentukan proses bisnis mana yang akan dieksekusi. Biasanya layer controller juga digunakan untuk mengatur ijin akses.
Gambar 2 Arsitektur MVC (Wahab 2007).
Declarative Transaction
Declarative Transaction adalah suatu teknik untuk medeklarasikan semua transaksi dalam suatu file konfigurasi untuk menangani semua proses transaksi tanpa harus membuat kode-kode program untuk menangani transaksi secara eksplisit. Selain
Studi literatur Analisis permasalahan ketidaksesuaian Perancangan dan implementasi ORM
dan design pattern
evaluasi
itu mengatur rollback (method dan exception) apabila terjadi kegagalan transaksi (Walls & Beidenbach 2005 ).
Dependency Injection / Inversion of Control
Dependency Injection adalah suatu konsep yang diterapkan oleh suatu objek untuk mendapatkan objek lain yang dibutuhkan tanpa harus mencari dan memasukan objek tersebut secara eksplisit (Walls & Beidenbach 2003)
Konsep ini diterapkan dalam Spring framework. Semua DAO yang didefinisikan tidak harus menuliskan koneksi basis datanya secara langsung pada masing-masing DAO, tetapi cukup memasukkan koneksinya menjadi suatu konstruktor atau
method setter dalam DAO (Thamura et al. 2007).
METODE PENELITIAN Kerangka Pemikiran
Tahap-tahap yang dilakukan pada penelitian ini diilustrasikan pada Gambar 3. Penelitian diawali dengan studi literatur kemudian melakukan analisis ketidaksesuaian (mismatch) pada aplikasi Ritel ERP (Ernita 2008) yang memunculkan kebutuhan ORM. Tahap selanjutnya adalah merancang dan mengimplementasikan ORM dan design pattern untuk mengatasi masalah ketidaksesuian tersebut. Tahap terakhir adalah melakukan evaluasi hasil implementasi konsep ORM tersebut.
Gambar 3 Diagram Metodologi Penelitian.
Studi Literatur
Studi literatur diawali dengan menganalisis ORM framework yang tersedia di lingkungan JEE. Selain itu, dilakukan juga studi literatur dengan menganalisis paper yang terkait.
Analisis Permasalahan Ketidaksesuaian Aplikasi Ritel ERP (Ernita 2008) dikembangkan dengan pendekatan berorientasi objek, sedangkan manajemen basis datanya menggunakan sistem manajemen basis data relasional. Oleh karena itu dilakukan analisis kemungkinan ketidaksesuaian (mismatch) yang disebabkan perbedaan paradigma tersebut.
Perancangan dan Implementasi ORM dan Design Pattern
Pada tahap ini, dilakukan implementasi ORM dan design pattern untuk menghilangkan ketidaksesuaian yang muncul dari tahap analisis. ORM diimplementasikan menjadi enam tahap, antara lain:
1 Membuat konfigurasi basis data. 2 Membuat pemetaan Data Transfer
Object (DTO) dengan menghilangkan paradigma ketidaksesuaian antara basis data relasional dan pemrograman berorientasi objek.
3 Membuat fungsi-fungsi akses data sebagai implementasi dari DAO pattern, singleton pattern, dan factory method pattern.
4 Menyederhanakan fungsi akses data dengan memanfaatkan konsep facade pattern dan proxy pattern.
5 Membuat skema basis data.
6 Menyatukan lapisan persistensi dengan lapisan aplikasi.
Evaluasi
Pada tahap evaluasi dilakukan analisis terhadap hasil implementasi ORM untuk mengatasi ketidaksesuaian dari rancangan aplikasi Ritel ERP dan basis data relasional yang digunakan. Selain itu evaluasi juga dilakukan terhadap konsep design pattern yang digunakan.