Framework adalah sekumpulan library yang diorganisasikan pada sebuah rancangan arsitektur untuk memberikan kecepatan, ketepatan, kemudahan dan konsistensi di dalam pengembangan aplikasi dari definisi tersebut, framework mengandung unsur-unsur berikut :
Librari
Arsitektur
Metodologi
Framework menyediakan librari yang lengkap dan terintegrasi. Unsur inilah yang paling banyak memberikan keuntungan bagi pengembang aplikasi. Sebagai contoh, framework aplikasi web menyediakan librari-librari dasar berkaitan layanan web, seperti authentication, database access, html generation, template engine, session management, caching, searching, email, http, pdf, zip dan ajax. Framework juga menyediakan sarana extension untuk librari-librari yang belum tersedia atau librari yang perlu ditingkatkan kemampuannya.
Arsitektur. Sebuah aplikasi membutuhkan rancangan bagaimana sistem dibangun, yaitu bagaimana elemen-elemen di dalam aplikasi disusun dan diintegrasikan, seperti pengorganisasian file dan librari, dan bagaimana librari-librari digunakan. Framework menyediakan struktur aplikasi dan bagaimana interaksi di dalam struktur tersebut. MVC [Model View Controller] adalah salah satu pola rancangan [design pattern] yang banyak digunakan dalam arsitektur aplikasi saat ini. Jika digambarkan akan seperti berikut :
Input > Processing > Output = Controller > Model > View
Controller mencakup semua proses yang terkait dengan pemanggilan database dan kapsulisasi proses-proses utama. Jadi semisal di bagian ini ada file bernama member.php, maka semua proses yang terkait dengan member akan dikapsulisasi/dikelompokan dalam file ini.
Model mencakup semua proses yang terkait dengan pemanggilan struktur data baik berupa pemanggilan fungsi, input processing atau mencetak output ke dalam browser.
View mencakup semua proses yang terkait layout output. Bisa dibilang untuk menaruh template interface website atau aplikasi.
Model MVC
Secara umum tujuan suatu aplikasi web adalah menampilkan informasi yang diminta oleh pengguna. Pengguna mengirimkan permintaannya melalui program browser ke web server, web server akan melakukan pemrosesan atas permintaan tersebut, kemudian hasilnya akan dikirimkan kembali dan akan ditampilkan juga di program browser. Berdasarkan mekanisme ini, aplikasi web dapat dibagi menjadi tiga bagian:
1. Bagian yang berfungsi untuk mengintepretasikan permintaan dari pengguna (HTTP Request).
2. Bagian yang memodelkan problem domain atau bussines logic.
3. Bagian yang mengelola tampilan yang akan dikirimkan ke pengguna.
Dalam pemrograman aplikasi web yang menggunakan PHP terkadang ketiga bagian program dicampur menjadi satu bagian. Aplikasi web merupakan bagian yang sangat sering mengalami perubahan. Seperti perubahan tampilan, layout, penambahan menu dan banyak lagi yang tidak ada kaitannya atau tidak memberikan dampak pada logika dari aplikasi web tersebut. Dengan mencampuradukkan ketiga bagian tersebut maka setiap kali dilakukan perubahan pada tampilan ada kemungkinan diperlukan juga perubahan pada bagian logikanya. Hal ini memperbesar kemungkinan timbulnya kesalahan pada aplikasi.
MVC(Model View Controller) adalah pola dasar yang memisahkan ketiga bagian program menjadi tiga buah objek yang terpisah. Interaksi antara ketiga bagian program tersebut dapat digambarkan seperti dibawah ini :
Controller pada dasarnya merupakan penerima tamu dari permintaan yang datang (HTTP request). Controller merupakan bagian yang mengatur hubungan antara bagian model dan bagian view, controller berfungsi untuk menerima request dan data dari user kemudian menentukan apa yang akan diproses oleh aplikasi.
View merupakan bagian yang menangani presentation logic. Pada suatu aplikasi web bagian ini biasanya berupa file template HTML, yang diatur oleh controller. View berfungsi untuk menerima dan merepresentasikan data kepada user. Bagian ini tidak memiliki akses langsung terhadap bagian model.
Model merupakan representasi dari proses bisnis di dalam setiap aplikasi perangkat lunak. Model adalah bagian yang bertugas mengolah data mentah menjadi data yang mengandung arti yang diinginkan oleh pengguna. Model biasanya berhubungan langsung dengan database untuk memanipulasi data, menangani validasi dari bagian controller, namun tidak dapat berhubungan langsung dengan bagian view.
Manfaat Framework
Beberapa manfaat yang dapat kita peroleh dengan menggunakan framework dalam pengembangan aplikasi :
* Penggunaan komponen-komponen reusable, waktu pengembangan lebih singkat penerapan design patterns memudahkan dalam rancangan, pengembangan dan pemeliharaan sistem.
* Stability dan reliability, aplikasi yang kita bangun lebih stabil dan handal karena berbasis pada framework yang sudah teruji stabilitas dan kehandalannya.
* Coding style konsisten, memudahkan dalam membaca kode dan dalam menemukan bugs.
* Security concern, framework mengantisipasi dan memasang perisai terhadap adanya berbagai masalah keamanan yang mungkin timbul.
* Dokumentasi, framework dapat mendisiplinkan kita untuk menulis dokumentasi untuk apa yang kita tulis.
Kekurangan Framework
Dari satu sisi framework tidak mempunyai kekurangan. Namun pemilihan framework yang salah akan menjadi sebuah bencana bagi penggunanya.
Ada beberapa hal yang harus di pertimbangkan dalam memilih framework :
Pertama dokumentasi dari framework itu sendiri. Dokumentasi sangat penting adanya mengingat pada umumnya tidak banyak orang/perusahaan yang membuat framework sendiri dalam membuat applikasi. Oleh karena itu kita akan sangat tergantung dengan dokumentasi yang di sediakan oleh framework yang kita pilih.
Berikutnya kesesuaian framework tersebut dengan applikasi apa yang hendak kita kembangkan. Mengambil filosofi “tidak perlu membunuh nyamuk dengan meriam”. Artinya sebaiknya kita memilih framework dengan fasilitas yang pas dengan kebutuhan kita.
Kedua perhatikan standar - standar framework yang ada, misalkan apakah framework tersebut MVC, apakah framework tesebut mendukung versi sekian, apakah mendukung templating dan lain-lain. Semakin banyak hal yang di support oleh framework tersebut semakin baik. Karena hal tersebut akan mempengaruhi kualitas dari software yang dikembangkan.
Yang terakhir adalah faktor kemudahan. Tentunya ini sangat tergantung dari sumberdaya yang ada. Standar kemudahan sangat sulit di ukur karena ini berhubungan dengan minat seseorang akan sesuatu. Namun berdasarkan dokumentasinya kita bisa mengira - ngira pola kerja framework tersebut.
Ada bermacam-macam framework yang dapat digunakan antara lain :
* .NET Framework,
* PHP Framework,
* Ruby On Rails (untuk membuat aplikasi web dengan bahasa Ruby),
* Django (untuk membuat aplikasi Web dengan bahasa Python),
* Zend Framework,
* Prado,
* Drupal, atau DotNetNuke dan lain-lain.