Saya akan coba menjabarkan hal-hal / fitur (secara garis besar) yang biasa kita kerjakan ketika membangun sebuah software. Dalam hal ini aplikasi yang kita bangun berada dalam lingkungan pc/komputer atau istilah keren nya desktop based. Isi dari post kali ini adalah hasil pemikiran dan hasil pengalaman saya tentunya. Di kemudian hari saya akan coba mengupdate tulisan ini jika ada hal-hal baru yang saya temui atau sedang jalani. 🙂
Berikut fitur-fitur tersebut:
- Storage / Persistent
Aplikasi tanpa data adalah bullsh*t. Bahkan aplikasi tidak serius, seperti game, sampai aplikasi yang paling sering kita hindari yaitu virus mempunyai data. Data ini nantinya atau baiknya akan disimpan di sebuah tempat diluar dari aplikasi kita. Tempat penyimpanan yang umum adalah database, file dan sebagainya. Kita bicara penyimpanan secara persistent (tetap), sehingga penyimpanan di memori / non persistent tidak saya sebutkan 🙂
Ukuran data yang disimpan bisa sangat beragam. Bisa simple sampai sangat kompleks level 7 :D, tergantung dari besarnya aplikasi. Aplikasi juga tidak tertutup kemungkinan terkoneksi ke satu storage/database saja. Banyak aplikasi yang terhubung dengan banyak database. Skenario yang umum terjadi adalah saat aplikasi yang kita bangun mempunyai data dengan skala yang besar atau aplikasi kita membutuhkan database lain yang sudah “jadi” atau sudah ada sebelumnya.
Untuk beberapa case, penyimpanan data bisa cukup dilakukan ke dalam file saja. Bisa file teks biasa, xml, file berbasis office (word, excel) sampai file dengn format yang telah kita customize sebelumnya. Contoh yang sering digunakan tentu ke dalam file teks. Contoh yang sering saya lakukan, saya menggunakan file teks untuk menyimpan konfigurasi aplikasi dan isi dari penjelasan dari fitur “help” di aplikasi
- Authentication / Login
Aplikasi pada umumnya mempunyai user. Loh jadi ada ya aplikasi yang tidak mempunyai “user”? Tentu ada. Contohnya aplikasi yang berjalan di background (tidak terlihat langsung oleh pengguna), aplikasi sebagai service di Sistem Operasi kita, aplikasi virus/malware dll. Maksud user disini adalah kita sebagai pengguna / manusia (bukan aplikasi/sistem lain) yang nantinya dapat mengoperasikan aplikasi itu sendiri.
Nah biasanya user-user ini akan diberikan autentikasi untuk masuk ke aplikasi kita. Di sini nanti kita akan menjumpai istilah semacam “hak akses”, “user profile”, “user permission”, dst. Mohon maaf saya tidak menjelaskan istilah-istilah itu karena istilah tsb. tentunya sudah kita semua ketahui 🙂 kemana arah pengertiannya.
Yang kira-kira terjadi bisa sebagai berikut : Administrator bisa melakukan task tertentu, bisa cetak report, bisa melihat isi tabel A, bisa mereset password semua user dsb. User dengan permission tertenu hanya bisa melakukan fungsi view, tidak bisa melakukan proses add/edit/delete data di sebuah tabel dsb. Saat “Guest” masuk ke dalam aplikasi hanya mendapatkan beberapa common fitur dsb. dan sebagainya dan sebagai nya 😀 Tentu ini cuma contoh, hal yang kita buat nanti tentu tergantung dari requirement aplikasi.
- CRUD
Sebenarnya semua aplikasi mempunyai fungsi CRUD ini. Apa itu CRUD? CRUD merupakan istilah untuk Create Read Update Delete. Apa yang di-CRUD kan???? Tentu data pada aplikasi kita. Data ini biasanya disimpan secara persist atau di luar aplikasi. Tentu paling umum kita menyimpannya ke dalam database. Without at least these four operations, the software cannot be considered complete. Because these operations are so fundamental.
- Reporting
Hal yang sering kita jumpai juga… Jika aplikasi kita berdasarkan pada proses CRUD di atas, pasti biasanya aplikasi nanti mempunyai fitur reporting. Pada umumnya format report kita adalah PDF (Portable Document Format). PDF menjadi standar untuk dokumen, diperjelas disini SO 32000-1:2008 – Document management — Portable document format — Part 1: PDF 1.7″.
- Export / Backup Data
Hampir sama seperti reporting sih. Intinya kita mencoba menulis ulang data aplikasi kita kedalam format dan struktur yang diinginkan (baca: sesuai requirement). Cuma pada kebanyakan aplikasi data yang kita export atau backup lebih besar ukuran nya dari report. Format file untuk export/backup yang sudah saya pernah kerjakan berupa excel dan cvs.
- Background Proses
Ini juga menjadi fitur yang sering kita kerjakan juga. Tergantung bisnis proses sih dan aplikasi yang kita bangun. Tidak semua proses cocok untuk dibuatkan sebagai background process. Biasanya kita memilih melakukan background process berdasarkan pertimbangan berat nya proses, lama eksekusi, proses tsb. memang tidak perlu dibuatkan interface nya, atau pun karena proses kita tidak ingin menggangu proses utama di aplikasi. Contoh : Aplikasi untuk email. Di sini background process akan dijalankan untuk mengecek apa ada email masuk ke account kita misalnya dan jika ada maka tabel inbox kita akan terupdatedengan message baru dst.
- Upload / Download File
Kejadian yang paling sering kita temukan : untuk profil image dari user. Ya tentunya kita harus menyiapkan fitur upload image ke aplikasi dong.
Ada lagi seperti ini yang saya temui. Saya tangkap bahwa user pasti meminta hal-hal yang gampang dan customizable. Dari pengalaman, saya mendapatkan case dimana template untuk beberapa laporan, user minta bisa dicustomisasi. Jadi user nantinya dapat mendownload file yang berisi template laporan di aplikasi, melakukan edit semaunya seperlunya kemudian mengupload kembali file tsb. Disini file untuk template tsb bertipe Microsoft Word (.doc). Kemudian laporan di aplikasi sudah terupdate format dan struktur nya sesuai yang dikehendaki user.
- Read / Send Email
Maksud email disini adalah email yang disediakan oleh beberapa provider email besar dan banyak penggunanya seperti yahoo, gmail, hotmail dll. Untuk java kita bisa menggunakan java mail api sedangkan di dotnet kita bisa menggunakan Mail Message class
Jadi dari aplikasi kita dapat membaca dan mengirim email menggunakan account yang kita daftarkan sebelumnya.
- Animation
Aplikasi kurang sreg kalo ga ada animasinya kan… 😀 Banyak user yang cerewet. Mereka sering minta (misalnya) saat ngeload data dibuatkan animasi mutar2 gtu. Pada saat pindah form, ada efek transisinya. Atau saat aplikasi launch mereka minta dibuatkan splashscreen. Ini salah satu fitur dimana saya kita sering akan mencomot code penyelesaiannya dari tempat lain 😀
Ok, bagi yang belom mari kita siapkan code maupun pengetahuan untuk penyelesaian semua fitur diatas sebagai senjata persiapan kita membangun aplikasi desktop. Terima kasih.
R.F.