MI2193 PEMROGRAMAN WEB LANJUT PHP FRAMEWORK
Created by MTA Revised by HPU
SET THE FRAME, GET TO WORK Arsitektur MVC Programming-in-large Pengembangan Berbasis Komponen Framework
MODEL-VIEW-CONTROLLER (MVC) MVC adalah pola arsitektur pada perangkat lunak yang memisahkan interaksi antara user dengan aplikasi ke dalam tiga role: Model (business logic) View (user interface) Controller (process logic / user input) Pemisahan “urusan” ini memungkinkan pengembangan, pengujian, dan pemeliharaan perangkat lunak pada tiap role menjadi lebih fleksibel dan independen
MODEL Mengelola “behavior” dan data dari lingkup aplikasi Merespon request / informasi state dari role View
Merespon request untuk melakukan suatu instruksi dari role Controller Contoh: kelas representasi basis data, active record, dll
VIEW Membuat role Model menjadi bentuk yg sesuai untuk interaksi atau user interface Satu Model dapat mempunyai beberapa View untuk kebutuhan yg berbeda
Contoh: GUI, halaman tampilan, dll
CONTROLLER Menerima input user Merespon dengan memanggil objek Model
Memberi instruksi pada Model untuk melakukan aksi berdasarkan input tadi Contoh: kelas pemrosesan, servlet, dll
ALUR SIKLUS MVC User berinteraksi dengan View (UI) dengan cara tertentu (misal: klik tombol)
Controller menangani input dari View, menerjemahkannya menjadi instruksi aksi yang dikenali oleh Model Controller memanggil Model dan memberikan instruksi aksi tadi ke Model
Model menjalankan instruksi, state Model berubah Model memberi notifikasi kepada View (bisa melalui Controller dulu atau langsung) bahwa state-nya berubah dan tampilan harus diperbarui View mengubah tampilan berdasarkan notifikasi tadi
ALUR SIKLUS MVC
CONTOH WEB APP MVC
PROGRAMMING-IN-LARGE Pengembangan PL skala besar, yaitu integrasi dari kumpulan modul yg banyak untuk membentuk suatu sistem yg lebih besar dan lebih kompleks Produk PL tidak terbatas hanya berupa program-nya saja, ada aspek lainnya: User yg memakai PL Tools yg dipakai dalam pengembangan PL Versi PL Modul-modul yg dibuat dalam PL Konfigurasi PL Jangka waktu pengembangan PL Integrasi modul-modul PL
PROGRAMMING-IN-LARGE Masalah Pengembangan PL skala besar memiliki kompleksitas yg sangat tinggi, lalu bagaimana cara menguranginya? Solusi: Divide & Conquer Dekomposisi sistem ke dalam komponen-komponen (pendekatan top-down) Komposisi sistem dari komponen-komponen (pendekatan bottom-up)
PROGRAMMING-IN-LARGE D&C
PENGEMBANGAN BERBASIS KOMPONEN Komponen Sebuah unit fungsionalitas dengan sifat dan kontrak yg spesifik Analogi: LEGO bricks Ide Dirancang agar dapat di-reuse dalam berbagai aplikasi berbeda dengan suatu konfigurasi, dan harus sefleksibel mungkin agar mudah untuk diimplementasikan oleh pengembang ke dalam aplikasi yang berbeda tersebut
KENAPA HARUS PBK? Pemisahan antarmuka dan implementasi (penerapan MVC) Konsep reuse -> waktu pengembangan lebih cepat
Fleksibel -> kompleksitas pengembangan berkurang One for all -> Bila bekerja secara tim, cukup satu dibuat, dapat dipakai seluruh tim
ALUR KOMPONEN
CONTOH KOMPONEN Model: Kelas Representasi Basis Data View: Tampilan Form Input
Controller: FileReader, InputParser
FRAMEWORK Suatu aplikasi parsial berbasis komponen yg dikhususkan untuk pembangunan aplikasi tertentu atau aplikasi domain spesifik Framework itu.. Bukan API atau library Bukan code generator Bukan aplikasi yg “selesai” Bukan IDE Bukan hanya kumpulan dari komponen
KARAKTERISTIK FRAMEWORK Mendukung mekanisme extension (penambahan / perbaikan fitur)
Dibuat sesimpel mungkin, tapi tidak lebih simpel Memiliki dokumentasi how-to Dapat diaplikasikan secara luas dan reusable (dipakai berulang) Berstruktur “skeletal” atau “assembly”
FRAMEWORK TRADE-OFFS Kelebihan: Reusability: mempercepat waktu pengembangan Extensibility: fleksibel, one for all Kekurangan: Learning curve (belajar) Kebanyakan open source (bila ada bug dalam framework tidak langsung dapat diselesaikan) Flow control dasar sistem tidak diketahui oleh pengembang
FRAMEWORK FOR PHP DEV. Tipe 1: Web Application “Real” framework Berbasis MVC penuh Berstruktur skeletal murni Use-at-will, loosely coupled (cara pengembangan bebas & fleksibel karena ditentukan oleh pengembangnya) Tidak disediakan UI / wizard bantuan (control panel) Contoh: Zend, Yii, CodeIgniter, Symfony
FRAMEWORK FOR PHP DEV. Tipe 2: Content Management “Assisted” framework Tidak selalu berbasis MVC Struktur tidak skeletal (sudah terisi) Use-with-guide, tightly coupled (cara pengembangan sudah ditentukan oleh framework sehingga kurang fleksibel) Disediakan UI / wizard bantuan (control panel) Contoh: Drupal, Joomla
STRATEGI PENGGUNAAN FRAMEWORK Memulai Pilih framework, baca dokumentasi, praktikum Proses pengembangan awal Kenali pola (struktur & kode) Pembuatan subclass, konfigurasi, modifikasi contoh yg sudah ada Cari sumber referensi penerapan di web
STRATEGI PENGGUNAAN FRAMEWORK Proses pengembangan lanjut Dekomposisi masalah Membuat model Membuat komponen / service Integrasi antar model & komponen untuk solusi masalah Membuat tampilan Pengujian Packaging, deployment, instalasi, pemeliharaan
SPF: DOS & DON’TS Mulailah dari task yg simpel
Jangan memakai framework tidak seperti yg telah “didesainkan” untuknya, kenali pola dan asumsinya Jangan mengubah komponen di dalam atau flow control dasar framework, cukup mengerti alur luarnya dan cara menghubungkannya
SPF: DOS & DON’TS Memakai framework berarti simplifikasi kode, bila kode custom masih terlalu banyak, berarti framework yg dipilih salah atau belum dapat memakai framework dengan benar dan semestinya
SPF: DOS & DON’TS Simplifikasi kode bukan berarti simplifikasi integrasi, malah sebaliknya. Selalu integrasikan secara bertahap tiap kode subclass atau komponen yg dibuat Framework tidak selalu benar, ada saat dimana kode custom lebih baik: Framework tidak menyediakan komponen, service, atau fitur untuknya Kode custom lebih pendek secara signifikan dibanding milik framework
SPF: DOS & DON’TS Jangan berhenti belajar, jangan menyerah
Biasakan update versi terbaru framework untuk mengatasi bug internal dari komponen dasarnya Yang pertama selalu paling sulit dan memakan waktu lama. Tetapi untuk ke depannya, konsep reusable akan sangat berguna dan membuat pengembangan lebih cepat secara signifikan