Tugas Akhir - 2009 ANALISIS PERBANDINGAN MODIFIKASI SMARTY TEMPLATE ENGINE DAN FRAMEWORK CAKEPHP PADA MODEL VIEW CONTROLLER(MVC) UNTUK APLIKASI WEB Muhammad Aditia Rahman¹, Yanuar Firdaus A.w.², Dana Suliyo Kusumo³ ¹Teknik Informatika, Fakultas Teknik Informatika, Universitas Telkom Abstrak Model-View-Controller (MVC) merupakan arsitektur yang sangat populer pada pengembangan aplikasi web, namun arsitektur MVC tidak dapat langsung dipetakan menjadi kode program sehingga perlu adanya pembentukan bagianbagian yang membangun MVC tersebut. Dengan semakin populernya penggunaan AJAX, suatu arsitektur MVC tidak hanya dapat diimplementasikan pada sisi server, namun dapat juga diimplementasikan pada sisi client, untuk menerapkan Client Side MVC, Smarty Template Engine membutuhkan suatu template function, sedangkan Framework CakePHP membutuhkan Helpers. Pada tugas akhir ini akan dilakukan analisis penerapan Server Side MVC dan Client Side MVC dengan menggunakan Smarty Template Engine yang dimodifikasi untuk membentuk arsitektur MVC dan Framework CakePHP. Halhal yang akan dianalisis mencakup ukuran kode program, ketersediaan komponen, kelas yang harus dibuat oleh seorang developer, aturan penamaan kelas, organisasi file dan performansi dari aplikasi yang dihasilkan. Hasil yang didapat dari hasil implementasi dan analisis yang dilakukan adalah dengan menggunakan Smarty Template Engine yang dimodifikasi, performansi yang dimiliki oleh suatu aplikasi web lebih baik dibandingkan menggunakan Framework CakePHP, namun dalam implementasi MVC, penggunaan Framework CakePHP dapat lebih mempermudah penamaan kelas, organisasi file. Kata Kunci : CakePHP, Smarty, Server Side MVC, Client Side MVC Abstract Model-View-Controller is a famous architecture on web application development, but MVC cannot mapped directly into source code, it need to build some component to create an MVC architecture. With the popularity of AJAX, an MVC architecture not only can be implemented on Server Side but it also can be implemented on Client Side, to implement Client Side MVC, Smarty Template Engine need some template function, and CakePHP Framework need Helpers. This final project analyze the implement of Server Side MVC and Client Side MVC using the modification of Smarty Template Engine to implement MVC and CakePHP Framework. Some of parameters to be analyzed are measuring source code, component availability, custom has to be made by a developer, class name conventions, file organization and application performance that has been built. The result from the implementation and analyisis is with modified Smarty Template Engine, web application have better performance than using CakePHP Framework, but in MVC implementation, using CakePHP Framework will make easier in implementing class name conventions, file organization. Keywords : CakePHP, Smarty, Server Side MVC, Client Side MVC Fakultas Teknik Informatika Powered by TCPDF (www.tcpdf.org) Program Studi S1 Teknik Informatika Tugas Akhir - 2009 1. Pendahuluan 1.1 Latar belakang masalah Model View Controller (MVC) merupakan design pattern yang sangat populer yang digunakan pada aplikasi berbasis web, MVC memisahkan antara model yang mencakup business logic, view yang mencakup presentation logic dan controller yang menghubungkan dan mengatur antara model dan view tersebut. Template Engine pada aplikasi web dapat berupa suatu software, library ataupun sekumpulan kode program yang berfungsi untuk mengenerate suatu web content dan web template yang kemudian membuat output berupa file dokumen web. Template Engine dirancang untuk memisahkan pengembangan aplikasi web berdasarkan kemampuan developernya, yaitu web programmer yang membangun business logic dan web designer yang membangun presentation logic. Pada Smarty Template Engine terdapat fungsi-fungsi khusus yang dapat digunakan untuk merepresentasikan data secara khusus dan memodifikasi bagian model, sehingga untuk merubah suatu bagian content, view dapat berperan sebagai controller, ini merupakan suatu keuntungan pada Template Engine, namun tidak dapat memisahkan dengan tegas bagian-bagian yang membangun MVC. Web framework merupakan suatu library, script ataupun software lain yang dapat digunakan untuk membantu pengembangan aplikasi web, beberapa web framework yang ada pada saat ini menawarkan fitur dan konsep yang berbeda, salah satu framework yang menerapkan konsep MVC adalah CakePHP. CakePHP merupakan framework yang memisahkan dengan tegas antara bagian model, view dan controller sehingga pembagian tugas dapat dengan jelas diketahui. Perkembangan aplikasi web saat ini telah memungkinan bagi client side scripting, seperti JavaScript untuk dapat mengakses data yang ada pada server, metode seperti ini dapat menggunakan AJAX (Asynchronous JavaScript and XML), ini memungkinkan bagian client side scripting dan server side scripting untuk memiliki model MVC yang berbeda pada suatu aplikasi web[9]. Dengan menggunakan AJAX suatu Aplikasi Web memungkinkan untuk mengambil suatu data tanpa perlu mengambil keseluruhan halaman web, artinya data dari Model (business logic) yang akan ditampilkan tidak melalui digenerate melalui template engine, dapat dikatakan client side scripting yang ada pada bagian presentation logic melakukan modifikasi terhadap business logic. Dalam tugas akhir ini akan dibahas bagaimana penggunaan Smarty Template Engine pada beberapa macam MVC yang berbeda untuk aplikasi web yang dibandingkan dengan Framework CakePHP. 1.2 Perumusan Masalah Beberapa perumusan pada Tugas Akhir ini adalah: 1. Pemanfaatan Smarty Template Engine dan Framework CakePHP pada aplikasi web untuk mempermudah implementasi MVC. 2. Melakukan analisis perbandingan penerapan Smarty Template Engine dan Framework CakePHP pada pembuatan aplikasi web. 1 Fakultas Teknik Informatika Program Studi S1 Teknik Informatika Tugas Akhir - 2009 3. Memanfaatkan Smarty Template Engine dan Framework CakePHP pada aplikasi web dengan menggunakan konsep MVC yang berbeda yaitu, Server Side MVC, Mixed Server Side and Client Side MVC. Batasan masalah dalam mengerjakan Tugas Akhir ini adalah: 1. Aplikasi yang dibangun merupakan aplikasi yang sama fungsionalitasnya, yaitu situs berita, dengan beberapa fungsionalitasnya menggunakan AJAX. 2. Implementasi AJAX menggunakan library Javascript yaitu JQuery. 3. Tidak membahas masalah Design Pattern yang membentuk masing-masing bagian Model, View maupun Controller. 1.3 Tujuan Tujuan dari tugas akhir ini adalah: 1. Implementasi Smarty Template Engine dan Framework CakePHP dalam membangun suatu aplikasi web pada arsitektur MVC. 2. Menganalisis ukuran kode program yang dibutuhkan dalam suatu arsitektur MVC, yang dibangun menggunakan Smarty Template Engine dan Framework CakePHP. 3. Membandingkan performansi dari kedua aplikasi yang dibangun dengan Smarty Template Engine dan Framewok CakePHP. 1.4 Metodologi penyelesaian masalah Metodologi pembahasan yang digunakan dalam penelitian Tugas Akhir ini adalah: 1. Mengumpulkan bahan-bahan referensi yang akan menunjang proses penelitian, seperti jurnal-jurnal, artikel-artikel, paper tentang Smarty Template Engine, Framework CakePHP, dan Model View Controller. Studi literatur yang merupakan tahap pendalaman materi. Menganalisis dan mempelajari API yang disediakan oleh Smarty Template Engine (http://smarty.net) dan CakePHP (http://cakephp.org). 2. Membangun Aplikasi Web dari Smarty Template Engine dan Framework CakePHP, dengan tahapan: 1. Analisis Kebutuhan Mempelajari dan memahamai fitur yang terdapat pada situs berita. 2. Perancangan Membuat pemodelan situs berita yang akan dibuat, proses pengiriman data, berdasarkan konsep MVC. 3. Implementasi Membangun Aplikasi menggunakan Smarty Tempate Engine dan Framework CakePHP dengan menggunakan bahasa scripting PHP dan MySQL, berdasarkan perancangan yang telah dibuat. 4. Pengujian dan Analisis Hasil Menganalisis penggunaan Smarty Template Engine yang dibandingkan dengan Framework CakePHP, berdasarkan konfigurasi, organisasi file, code reusability, fitur-fitur yang disediakan, plugins, dan penggunaan kode program dari Smarty Template Engine dan Framework CakePHP. Melakukan benchmark performansi dengan utilitas yang sudah tersedia. 3. Penarikan kesimpulan dan pembuatan laporan. 2 Fakultas Teknik Informatika Powered by TCPDF (www.tcpdf.org) Program Studi S1 Teknik Informatika Tugas Akhir - 2009 5. Kesimpulan dan Saran 5.1 Kesimpulan Dari hasil implementasi dan analisis yang dilakukan terhadap aplikasi web yang dibangun berdasarkan arsitektur MVC, dengan menggunakan Smarty Template Engine dan Framework CakePHP, dapat diambil beberapa kesimpulan, yaitu : 1. Untuk penerapan arsitektur Server Side MVC, penggunaan Framework CakePHP memiliki penanganan dalam penamaan file dan organisasi file yang lebih baik daripada menggunakan Smarty Template Engine yang sudah dimodifikasi 2. Penanganan model pada CakePHP lebih baik dibandingkan menggunakan modifikasi Smarty Template Engine, ini dikarenakan CakePHP memiliki built-in API pada bagian model yang mendukung CRUD(Create, Read, Update, Delete). Hal dapat lebih mempermudah bagi programmer dalam melakukan manipulasi data pada database dengan mengurangi penggunaan kode SQL, sehingga dapat mempersingkat waktu dalam pembangunan program. 3. Dengan modifikasi, Smarty lebih baik dalam penggunaan jumlah kode program pada bagian controller untuk Mixed MVC, sedangkan CakePHP lebih baik dalam penggunaan jumlah kode program pada bagian controller untuk Server Side MVC. 4. Performansi aplikasi web pada Server Side MVC maupun Mixed MVC yang dihasilkan oleh Smarty Template Engine yang dimodifikasi lebih baik daripada CakePHP. Hal ini dikarenakan pada bagian model CakePHP memiliki lebih banyak fungsi yang harus diturunkan dari object model, selain itu karena penggunaan HTML helpers yang memiliki banyak fungsi untuk merepresentasikan kode HTML. 5.2 Saran Saran yang dapat penulis sampaikan untuk dapat melanjutkan pembahasan ini yaitu : 1. Perlu diterapkannya best practice dalam penerapan MVC dengan menggunakan Smarty Template Engine terutama dalam menangani bagian front controller dan model. 2. Perlu adanya penerapan Client Side MVC dengan menggunakan kode Javascript tradisional. 3. Perlu diterapkannya pada arsitektur RIA MVC pada framework CakePHP, untuk lebih mengurangi penggunaan object yang berlebih dan dapat mengurangi penggunaan bandwidth. 4. Analisis implementasi MVC lebih lanjut dengan menggunakan web framework yang lain, seperti PRADO, Zend Framework, Code Igniter, dll. 32 Fakultas Teknik Informatika Powered by TCPDF (www.tcpdf.org) Program Studi S1 Teknik Informatika Tugas Akhir - 2009 6. Daftar Pustaka [1] Azis, M. Farid, 2005, Object Oriented Programming dengan PHP5, Jakarta, PT. Elex Media Komputindo. [2] Bell, Donald, 2004, UML’s Sequence Diagram, http://www106.ibm.com/developerworks/rational/library/3101.html, IBM Corporation [3] Dommy, 2007, COCOMO (COnstructive, COst, MOdel), BLOG tentang Matakuliah Rekayasa Perangkat Lunak ITS. [4] Ghica van Emda Boas, 2005, Generative and Model-Driven Approaches for PHP, Bronstee.com, the Netherlands. [5] Jason E. Sweat, 2005, php | architech’s Guide to Design Patterns, Marco Tabini & Associated, Inc. [6] Krasner, Glenn E., Pope, Stephen T., 1988, A Description of the ModelView-Controller User Interface Paradigm in the Smalltalk-80 System, ParcPlace Systems, Inc. [7] Marston, Tony, 2004, The Model-View-Controller (MVC) Design Pattern for PHP, http://www.tonymarston.net/php-mysql/model-viewcontroller.html [8] Masters, Larry E, 2006, CakePHP Programmer’s Reference Guide, Cake Software Foundation Inc. [9] Morales-Carparro, R., Linaje, M., Preciado, J. C., Sanchez-Figueroa, F., 2007, MVC Web design patterns and Rich Internet Application, QUERCUS Software Engineeering Group. [10] Ohrt, M., Zmievski, A., 2006, Smarty Manual, New Digital Group, Inc. [11] Parr, Terence, 2004, Enforcing Strict Model-View Separation in Template Engine, New York, WWW2004. [12] Template Engine, http://en.wikipedia.org/wiki/Template_engine_(web). 33 Fakultas Teknik Informatika Powered by TCPDF (www.tcpdf.org) Program Studi S1 Teknik Informatika