Applikasi Web dg CodeIgniter dan Smarty (1)

CI merupakan framework yg cukup elegan untuk membangun web apps dari awal, dengan strukturnya yang sederhana namun cukup dilengkapi dengan fitur-fitur untuk mengembangkan sebuah aplikasi menengah sampai aplikasi besar.

CI memiliki motto yang unik, yaitu “simple dan elegan”, sehingga hampir semua fitur2 pembantu CI, baik modul, plugin, dan helper, adalah modul coding pembantu, bukan modul siap pakai seperti Joomla dan CMS lainnya.

Dalam mengembangkan sebuah aplikasi, terutama sebuah teamwork, pengembangan level teknis membutuhkan pengelolaan yang baik sehingga tahap-tahap pengembangan dapat berjalan sesuai dengan yang direncanakan, salah satu aspek pengelolaan tersebut yaitu pembagian pekerjaan kepada tiap personil tim sesuai dengan bidang keahliannya masing-masing. Umumnya, pembagian pekerjaan dalam mengembangkan aplikasi dilakukan secara vertikal, dimana satu tim dituntut untuk menguasai seluruh aspek mulai dari skill back-end sampai front-end, misal seorang programmer ditugaskan untuk membuat satu modul Kartu Rencana Studi Mahasiswa, dalam pembagian kerja secara vertikal, sang programmer dituntut untuk bisa membuat satu modul utuh (benar-benar utuh secara literal), mulai dari membuat struktur tabel database, membuat querynya, aturan logika KRS, sampai ke interaksi dan tampilan desain user-interface.

Kelebihan pembagian kerja secara vertikal ini adalah mudahnya dan cepat dalam melakukan pembagian pekerjaan dan tidak perlu memiliki banyak tim teknis, karena satu orang tim teknis dituntut untuk bisa menguasai seluruh aspek pekerjaan, mulai database, business rule, sampai ke web-desaign. Namun disamping kelebihan tersebut, ternyata pembagian vertikal ini mulai terasa efeknya ketika pekerjaan mulai membesar, berikut adalah contoh kelemahan pembagian secara vertikal:

  • Setiap programmer memiliki prinsipnya sendiri-sendiri dalam membuat sebuah aplikasi, sehingga ketika modul ini akan diintegrasikan dengan pekerjaan tim programmer yang lain, maka akan sangat mungkin sekali terjadi benturan prinsip tersebut, contoh: programmer A mengerjakan modul KRS Mahasiswa, programmer B mengerjakan modul UAS, programmer A berprinsip tampilan user-interface harus minimalis agar ringan saat loading, sedangkan programmer B sebaliknya menyukai tampilan desain user-interface yang semarak. Kemungkinan besar, saat modul KRS dan modul UAS disatukan, tampilan desain menjadi aneh, karena hanya beda menu, tampilan desain web sangat berbeda sama sekali
  • Setiap programmer dituntut untuk menguasai segala aspek development, akibatnya si super programmer ini hanya memiliki skill yang secukupnya dan tidak terlalu mendalam sampai ke level advance, yang biasanya sangat dibutuhkan pada pengembangan sebuah proyek yang bersakala besar.

Sebenarnya disamping pembagian secara vertikal sebagaimana yang dijelaskan di atas, yang menjadi perhatian saya dulu adalah bagaimana agar struktur pengembangan dibagi secara horisontal, sehingga tiap personil tim bisa tetap berada di “wilayah”nya masing-masing tanpa harus sepenuhnya terlibat dengan keseluruhan aspek pengembangan dan setiap anggota tim bisa lebih fokus/berkonsentrasi terhadap target output yangg menjadi tugasnya, disamping itu Technical Lead bisa mendeskripsikan implementasi requirement yg diberikan oleh System Analyst secara lebih leluasa kepada personil tim yang berkompeten.

Secara lebih terinci, metode pengembangan dengan pola MVC (Model View Controller) bisa menjadi gambaran tentang pembagian kerja secara horisontal, yaitu misalkan:

  • Seorang web desain tetap fokus di kompetensinya, yaitu di wilayah pengaturan tampilan web, baik html maupun css saja, jika ternyata tetap diperlukan sedikit ke wilayah programming, paling jauh bisa diberikan tugas logic templating View saja.
  • Database admin, sebisa mungkin fokus ke perancangan database, optimasi query, dan pemeliharaan. Jika database admin akan dilibatkan sedikit ke wilayah coding, maka bisa diberikan porsi representasi Model saja
  • Programmer, bisa fokus ke interaksi internal antara model dengan view yaitu Controller serta corebusiness logic, sehingga programmer yang baik diperlukan sedikit skill tentang unit test, yaitu pola test interaksi aplikasi dengan hanya melibatkan “emulasi” dari view/interaksi UI dan model data.

Pembagian horisontal tersebut mungkin sebenarnya lebih sesuai untuk pengembangan aplikasi skala menengah dan besar/enterprise, di mana MVC salah satunya dimaksudkan untuk mendukung pembagian tersebut, akan tetapi juga bisa diterapkan untuk pengembangan web aplikasi maupun website skala menengah-kecil dengan menggunakan framework CI, dengan kesederhanaannya serta dukungan fitur-fitur modul pengembangan yang cukup lengkap.

Salah satu kelebihan CI dalam menyediakan kemampuan pola pengembangan MVC adalah dengan tersedianya ORM (Object Relational Mapping) untuk memindahkan business logic ke core process di PHP codingnya. Namun kelebihan lain bisa diperoleh dengan mengintegrasikan Smarty sebagai template engine yang sangat handal dilingkungannya.

(bersambung)

2 responses to “Applikasi Web dg CodeIgniter dan Smarty (1)

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s