Tuesday 1 April 2014

Framework Perangkat Lunak

Framework Perangkat Lunak (Software Framework) adalah kumpulan kode program yang merupakan pondasi dan bersifat universal yang digunakan oleh para programmer / software engineer / pembuat software untuk membangun aplikasi / produk perangkat lunak. Berbeda dengan class library yang dibutuhkan oleh para programmer untuk dipanggil dan dikendalikan olehnya, framework-lah yang nantinya justru mengendalikan alur software produk jadinya secara keseluruhan. Sifat tersebut disebut Inversion of Control. Framework mempunyai perilaku dasar (default behavior) di mana kebutuhan umum diatasi/dikerjakan oleh framework. Framework juga mempunyai ruang-ruang kosong yang dapat diisi dengan kode-kode tertentu (oleh programmer) sebagai pengembangan dari perilaku dasar. Dengan kata lain, framework mempunyai kemampuan untuk dikembangkan oleh penggunanya (extensibility). Namun demikian, framework mempunyai bagian-bagian tertentu (kebanyakan) yang tidak dapat diubah oleh programmer penggunanya (non-modifiable framework code).
Keuntungan memakai framework dalam membuat aplikasi:
- Pembuatan software menjadi lebih cepat. Programmer hanya mendefinisikan apa saja yang harus ada dalam software dan hasil jadinya akan melebihi apa yang telah dikerjakan oleh programmer karena hal-hal yang bersifat umum telah dikerjakan oleh framework.
- Perilaku software yang standar (misal: dalam hal tampilan) akan membuat pengguna software produk jadinya lebih cepat beradaptasi.
- Mengurangi kode yang sama yang ditulis secara berulang-ulang (Mengurangi copy-paste dan redundansi kode).
Kerugian memakai framework dalam membuat aplikasi:
- Kebutuhan yang tidak umum dan tidak tersedia dalam framework akan membuat para programmer penggunanya mengakal-akali dengan susah payah atau meminta bantuan kepada pembuat framework agar dia menambahkan kebutuhan tersebut, bahkan ada kemungkinan kebutuhan tersebut tidak dapat terpenuhi.
- Hal-hal yang bersifat magic (tiba-tiba ada ini, itu; melakukan ini, itu, dsb)  terkadang membingungkan programmer.
Contoh I
Seorang programmer ingin membuat software toko sederhana yang mencakup pembelian, penjualan, dan persediaan. Agar cepat jadi, dia memutuskan untuk menggunakan framework yang sudah mengurusi hubungan antara software dengan database dan sudah mengurusi user interface-nya. Dia hanya mendefinisikan bahwa dalam software tersebut ada:
- Master Pelanggan (Kode, Nama, Alamat),
- Master Supplier(Kode, Nama, Alamat),
- Master Barang(Kode,Nama),
- Transaksi Pembelian(Nomor, Tanggal, Supplier, Total Harga Pembelian),
- Transaksi Pembelian Detil (Barang, Jumlah, Harga, Total Harga Barang),
- Transaksi Penjualan (Nomor, Tanggal, Pelanggan, Total Harga Penjualan),
- Transaksi Penjualan Detil (Barang, Jumlah, Harga, Total Harga Barang),
- Laporan Pembelian per Periode (didefinisikan dengan select query),
- Laporan Penjualan per Periode (didefinisikan dengan select query),
- Laporan Persedian: Kartu Stok, Posisi Stok, Rekap Mutasi Stok. (didefinisikan dengan select query).
Kemudian, tampilannya tinggal drag and drop dari definisi-definisi di atas (teknologi sudah semakin canggih). Terakhir, tiap form tampilan didaftarkan ke dalam menu (biasanya di sebelah atas, klo di Notepad ada File: New, Open, …; Edit: … Klo di software tsb ada Master: Pelanggan, Supplier, Barang; Transaksi: Pembelian, Penjualan;…). Hasilnya setelah jadi dan dijalankan akan… boom… ternyata melebihi expektasi/perkiraannya:
1. Ada fitur pembuatan database baru/ pemilihan koneksi ke database tertentu ketika program pertama kali dijalankan dalam sebuah komputer
2. Ada dialog login setiap kali program dijalankan (harus mengisi user name/password)
3. Ada pengaturan user dan hak akses, jadi bisa dibeda-bedakan  siapa user yang berhak memegang pembelian, siapa yang berhak memegang penjualan, yang berhak memegang data supplier, dan sebagainya.
4. Di  setiap form master dan transaksi sudah ada banyak tombol (untuk penyimpanan ke database, perubahan mode layar dari lihat menjadi edit dsbl, lihat daftar, navigasi data sebelum, sesudah, pertama, terakhir, cetak form, dsb).
5. Di setiap form laporan juga tiba-tiba ada banyak tombol (untuk simpan ke excel, pdf, dsb, untuk cetak, atur layout, dll). Juga otomatis hasil query yang didefinisikan akan ditampilkan dalam tabel.
6. Ada fitur untuk mengubah skin tampilan agar pengguna tidak bosan.
dll.
Contoh II
Seorang programmer ingin membuat software animasi latihan soal ujian yang terdiri dari banyak modul, satu modul satu software. Agar cepat jadi, dia memutuskan untuk membangun framework dan menggunakannya sendiri. Pertama dia membuat framework yang menyediakan kebutuhan umum:
1. Animasi Pendahuluan.
2. Gambar judul modulnya
3. Pilihan Menu di sebelah kiri (Petunjuk, Evaluasi, Info Tim).
4. Isi/Content.
5.  Tombol-tombol pilihan jawaban dan perilakunya (jika benar akan muncul gambar dan suara tertentu, jika salah akan muncul gambar lain dan suara lain).
6.  Tombol suara.
7. dsb.
dan masing-masing poin bisa diisi dengan gambar/animasi/suara tertentu.
Setelah framework selesai, tinggal settingnya: Misal Modul 1:
- Animasi Pendahuluan pakai AP.swf,
- Judul Modul pakai MatematikaSD.png,
- Petunjuk pakai menu1.png, menu1_mouse_over.png, menu1_pressed.png
- Musiknya pakai music1.mp3
- dst
di mana pengaturan tersebut diletakkan dalam file yang cara penulisannya menggunakan format/perjanjian/bahasa/kode tertentu dan file tersebut ada dalam folder yang sama dengan file frameworknya.
Buat para programmer: Mari kita gunakan software framework yang tepat agar kerjaan kita cepat selesai. Tapi hati-hati, jangan terlena dengan percobaan menggunakan framework (untuk memilih framework yang tepat) karena mungkin akan menghabiskan waktu jauh lebih lama daripada membangun software dengan apa yang kita sudah bisa. Semangat!!!