Membuat Fungsi Auto Updater Aplikasi

Overview

Walaupun saat ini aplikasi berbasis web dan mobile telah marak, masih banyak bisnis yang menggunakan aplikasi desktop, oleh sebab itu masih banyak juga software house yang membuat produk aplikasi desktop. Namun sebagaimana kita ketahui, tantangan utama dalam perawatan aplikasi desktop adalah melakukan update pada aplikasi, terutama bila aplikasi merupakan sebuah mass product atau aplikasi terinstall di banyak komputer dengan lokasi yang berbeda - beda. Pada kondisi ini biasa tim support akan sangat kesulitan apabila harus meng-update aplikasi dengan menginstall secara manual langsung ke masing - masing komputer, selain memakan banyak waktu, juga akan memakan banyak biaya bila aplikasi tidak terdapat pada satu lokasi yang sama.

Solusi untuk mengatasi hal ini salahsatunya adalah dengan menanamkan fungsi update otomatis seperti yang biasanya terdapat pada aplikasi - aplikasi anti virus. Tentu saja untuk dapat mengimplemenasikan dengan baik fungsi ini, tiap - tiap komputer memerlukan koneksi internet untuk dapat mendownload paket update aplikasi seperti juga yang terjadi pada aplikasi - aplikasi anti virus. Pada artikel ini saya akan memberi contoh alur fungsi update melalui FTP, artikel ini hanya membahas hingga level alur logika program, sehinga anda dapat mengimplementasikannya menggunakan bahasa program apapun yang anda sukai.

Cara Kerja Updater

Cara kerja dari fungsi updater menggunakan dua buah executable, dimana executable pertama adalah executable utama aplikasi anda yang selanjutnya akan kita sebut sebagai MainExe, dan executable kedua yaitu executable selanjutnya akan kita sebut sebagai UpdateExe yang berfungsi untuk mengextract paket update, mengeksekusi query update (bila perubahan aplikasi memerlukan perubahan pada database), dan kemudian kembali memanggil MainExe untuk menjalankan aplikasi yang sudah terupdate.

untuk itu kita akan membutuhkan pembanding antara versi yang sedang berjalan dengan versi yang tersedia pada FTP, dengan demikian kita akan membutuhkan sebuah text file (*.txt) yang akan kita tempatkan di FTP sebagai acuan update yang selanjutnya akan kita sebut VersionFile. Pada FTP hanya boleh ada 1 file penanda update atau versi yang tersedia di FTP, dan file ini akan selalu anda rewrite isinya dengan nomor versi terbaru tiap kali anda upload versi terbaru ke FTP, sedangkan format dari nomor versi aplikasi bebas anda sesuaikan dengan kebutuhan fungsi pemeriksaan version aplikasi yang anda gunakan pada level pemrograman.

Paket Update merupakan sebuah archive file yang berbentuk executable untuk mempermudah proses extract sehingga tidak membuyuhkan library khusus untuk proses extract. Paket update bisa berisi file - file seperti :
  1. MainExe sebagai executable utama yang terupdate
  2. Library file (*.dll) bila anda perlu mengupdate file library
  3. Query File apabila anda perlu untuk mengupadate database, file ini bisa berbentuk plain text atau format apapun sesuai kebutuhan anda.
  4. File Update Notice, apabila anda ingin menampilkan informasi fitur apa saja yang ditambahkan atau bug apa saja yang diperbaiki kepada user.

Fungsi Pemeriksaan Update

Fungsi pemeriksaan update berfungsi untuk secara berkala melakukan koneksi ke FTP dan mendownload VersionFile, membaca no versi dan membandingkan dengan no versi pada MainExe, kemudian selanjutnya apabila no versi yang ada pada VersionFile lebih besar (berarti ada update terbaru), maka funsi ini akan mendownload file paket update. Dan dikarenakan proses pemeriksaan akan dilakukan secara berkala, sebaiknya anda menuliskan fungsi ini menggunakan thread (multi threading) yang berbeda dengan thread utama aplikasi yang berinteraksi dengan user. Berikut ini adalah workflow dari fungsi pemeriksaan update.


Fungsi Notifikasi Update

Selanjutnya setelah paket update terdownload, anda dapat memunculkan notifikasi pada tampilan UI aplikasi anda bahwa ada update terbaru yang tersedi dan siap diupdate, Sebaiknya notifikasi ini dibuat menggunakan fungsi khusus yang memeriksa apakah ada paket update yang belum dieksekusi dan tetap menampilkannya selam update tersebut belum dieksekusi. gambaran sederhana dari fungsi ini adalah memeriksa apakah terdapat file paket update, dan bila ada, maka akan memunculkan notifikasi, dengan logia demikian maka tentunya kita tidak boleh lupa untuk menghapus paket update setelah update selesai dilakukan. Berikut ini adalah workflow dari fungsi notifikasi update. Pada sisi UI, notifikasi ini juga dapat kita berikan sebuah tombol agar user dapat melakukan update.

Fungsi Eksekusi Update

Setelah user mengklik tombol update atau dengan cara lainnya sehingga fungsi update ter trigger, maka selanjutnya kita akan mengeksekusi fungsi update untuk mengextrak isi paket updater dan menggantikan MainExe dengan versi yang terbaru dan meletakkan file lainnya sesuai kebutuhan, untuk hal ini maka sangat penting anda perhatikan untuk melakukan setting berupa silet file replace saat anda membuat file paket updater. Dan apabila diperlukan, anda juga dapat menambahkan sebuah fungsi untuk mengeksekusi query SQL untuk melakukan update terhadap database apabila perubahan yang terjadi pada MainExe juga membutuhkan perubahan dari sisi database, proses eksekusi update ini dilakukan oleh UpdateExe. Berikut ini adalah workflow dari proses eksekusi update.


Kesimpulan

Setelah file updater diextract dan menggantikan (replace) MainExe dengan versi terbaru dan setelah mengeksekusi file query (bila dibutuhkan), maka kita sudah dapat memanggil MainExe dari UpdaterExe untuk menjalankan versi terupdate dari aplikasi. 

Workflow yang ditampilkan diatas merupakan general workflow, sehingga pada workflow tersebut tidak menampilkan custom condition. Anda dapat memodifikasi dan melengkapi workflow diatas sesuai dengan proses yang anda butuhkan dan atau disesuaikan dengan fungsi - fungsi lainnya yang ada pada aplikasi anda. 

Dengan mengimplementasikan fungsi auto update pada aplikasi anda, baik aplikasi tersebut merupakan aplikasi internal yang didevelop oleh divisi IT internal, maupun aplikasi yang didistribusikan sebagai produk, anda telah dapat menghilangkan sebuah faktor maintenance yang yang memakann waktu dan resource yang besar terhadap aplikasi desktop anda.

Semoga artikel ini bermanfaat.

Memulai Pengembangan Aplikasi Untuk Programmer Pemula Yang Merangkap Segalanya

Programmer Yang Merangkap Segalanya

Suka tidak suka, pada kenyataannya di Indonesia masih sangat banyak perusahaan yang hanya mampu merekrut programmer non pengalaman dengan tugas yang dibebankan jauh melebihi kapasitas programmer junior dan bahkan harus merangkap seluruh fungsi yang seharusnya dipegang oleh orang2 yang berbeda. Pada kondisi seperti ini, terutama untuk programmer junior, banyak yang mengacuhkan fungsi lainnya karena memang kekurangan skill dan pengalaman dan juga kurang kesadaran bahwa dengan hanya fokus pada code akan memperbesar kemungkinan project yang dikerjakannya akan gagal, atau setidaknya menjadi bom waktu yang akan menimbulkan banyak permasalahan dibelakang.

Pada artikel ini saya tidak akan membahas tentang metode - metode best practice, namun saya akan memberikan beberapa tips metode - metode common sense untuk memberikan sedikit gambaran pada para programmer junior yang terjebak dalam kondisi merangkap segalanya, tips yang akan saya berikan adalah untuk membuat teman - teman junior programmer dapa tmempermudah menjalankan pekerjaannya.

Kenali Project Anda (Knowing The Devil)

Hal pertama dan terpenting adalah mengetahui seluk beluk dan latar belakang ilmu, lingkungan implementasi dari projejct anda. Misal anda diminta untuk membuat sebuah aplikasi Sistem Pelaporan Lapangan Berbasis SMS. Bagi programmer junior, mungkin sekejap setelah mendengar nama tersebut, hal yang ada dikepanya adalah "gimana kodingnya", tahan pemikiran koding untuk sementara, mari forkus untuk menguak "setan" dibalik nama tersebut.

Biasakan selalu mengawali sebuah project dengan riset mengenai project tersebut, berikut beberapa point penelitian awal yang dapat kita lakukan untuk membuka wawasan kita untuk lebih mengenal siapa setan yang kita hadapi.

Jabarkan setiap project dalam 4 kategori penjabaran yang akan diteliti yaitu :
  • Sasaran, konsep dasar dan tujuan dari aplikasi tersebut, pada contoh diatas, berarti anda harus meneliti tentang konsep sistem pelaporan lapangan,
  • Common business process, cari tahu tentang bagaimana biasanya sistem ini dibangun, siapa yang akan mengoperasikannya, 
  • Technical Matters (Urusan Teknis), cari tahu mengenai prasyarat sistem seperti hardware, OS, database, dan hal lain yang akan berkaitan dengan aplikasi yang akan dibangun.
  • Project Plans (perencanaan project), hal ini menyangkut fase - fase pengerjaan project dari tahap pengumpulan requirement sampai maintenance.
Kesemua informasi yang disebutkan diatas, anda dapat melakukan penelitian singkat dengan memanfaatkan media google untuk mencari tahu hal - hal yang disebutkan diatas berdasarkan referensi dan pengalaman - pengamalam orang yang sudah pernah mengimplementasikan hal serupa.

Adalah sebuah langkah yang sangat baik untuk mengetahui latar belakang project sebelum melangkah ke tahap coding yang biasanya menjadi satu - satunya tahap yang ada dibenak programmer junior. Biasanya penelitian latar belakang hanya memakan waktu 1 sampai 2 hari.

Perencanaan Project

Bagi para programmer junior, biasanya langkah ini sering diabaikan, terutama bagi mereka yang mempunyai fungsi merangkap segalanya, namun perencanaan project akan membuat anda dapat mengerjakan project dengan aman dan tenang selama anda tidak melanggar semua yang telah anda rencanakan.

Bagi anda yang melakukan segalanya, perencanaan project tidak harus dalam bentuk yang rumit dan lengkap seperti yang dilakukan para project manager professional, namun hal yang paling penting untuk anda lakukan adalah mencatat dan merencanakan timeline anda seperti menetapkan batas waktu design database, membuat design UI, menulis kode, melakukan uji coba, menyiapkan dokumentasi, melakukan instalasi, training, dsb. Intinya adalah list pekerjaan, dan kapan harus diselesaikan. Dikarenakan anda hanya bekerja sendiri, maka hal ini akan sangat penting untuk membuat anda tidak melupakan hal - hal yang harus anda lakukan selain koding.

Development, Shit...., where to start (Dari mana harus memulai)

Dalam posisi anda yang harus melakukan segalanya, step pengembangan aplikasi yang umum tetap dapat digunakan, namun terutama bagi anda yang masih junior, hal ini akan memperlambat dan sangat membingungkan anda. anda harus menerapkan metode yang berbeda untuk membuat anda dapat terus berjalan tanpa banyak stuck. Pada posisi anda, jangan pernah memulai pengemabngan dari membuat design UI atau interface, hal ini sangat menyenangkan namun hanya akan membuat anda membuang banyak waktu mempercantik sesuatu yang tidak bisa jalan (karena belum ada code yang ditulis).

Buat Fungsi Inti.
Bila aplikasi anda menggunakan database, anda dapat memulai dengan membuat table inti dari aplikasi, dari contoh diatas, maka anda hanya perlu membuat table laporan, jangan perdulikan dahulu relasi ke table - table lainnya yang akan berkaitan dengan table inti. Selanjurnya, mulailah membuat kode untuk fungsi utama, ya....cukup untuk fungsi utama terlebih dahulu, pada contoh diatas, maka anda harus membuat sebuah fungsi sederhana untuk membaca SMS dan menampilkannya dalam bentuk form. Dalam tahap ini anda telah mempunyai aplikasi dengan fungsi untuk membaca sms dan menapilkan sms yang telah tersimpan di database, fungsi utama aplikasi anda telah ada dan berjalan.

Sesuaikan Dengan Business Proces.
Setelah fungsi utama selesai, mulai untuk menyesuaikan fungsi inti dengan bussienss proces dan business rule yang disesuaikan dengan requirement user. Mulailah dengan kembali menambahkan table atau field hanya yang diperlukan untuk kelengkapan business process, pada tahap ini anda belum perlu membuat hal - hal yang berkaitan dengan keamanan seperti login, validasi, enkripsi dan sebagainya.

Test Pertama
Pada tahap ini, anda telah memiliki sebuah aplikasi yang sesuai dengan bussiness process, kini saatnya untuk melakukan testing awal untuk menguak masalah - masalah yang mungkin akan terjadi. pada tahap ini, sebisanya lakukan test yang sangat mendekati penggunaan secara real, test terus menerus selam 2 sampai 3 hari, pikirkan segala kemungkinan, kemudian catat hal apa saja yang anda temukan yang perlu diamankan, atau dibuat validasi. pada tahap ini sebaiknya anda membuat sebuah test list dimana anda akan menuliskan point - point apa saja yang harus ditest berikutnya. alangkah baiknya bila test selalu melibatkan oranglain selain anda, agar anda mendapat bayangan bagaimana nanti user akan menggunakannya.

Validasi, Keamanan, laporan, dan pelengkap aplikasi.
Pada tahap ini, anda akan menemukan banyak bugs baik logical maupun technical. mulilah perbaiki bugs tersebut, kemudian lengkapi dengan berbagai validasi yang perlu. selanjutnya anda dapat meli kembali melengkapi table dan field, dan tampilan UI untuk kebutuhan keamanan, laporan, dan sebagainya.

UI Design
Pada tahap ini anda sudah memiliki aplikasi jelek yang berjalan sepenuhnya, anda dapat sedikit bersantai dan memanjakan diri anda dalam mendesign UI, membuat tampilan yang menarik dan ergonomis, karena seburuk2nya, anda telah memiliki aplikasi yang telah siap pakai.

Dokumentasi Test & Live Test
Pada tahap ini anda sudah dapat membuat dokumentasi sederhana yang berisi poin -poin sederhana dari cara pengoperasian aplikasi anda untuk kebutuhan testing, anda tidak perlu membuat penjelasan yang panjang lebar, dalam tahap ini, dokumenasi cukup berupa step by step, klik ini, lalu klik itu. setelah iut, anda dapat melakuka test live di customer untuk mendapatkan feed back sekaligus menguak bug - bug yang masih tersisa. dari tahap ini anda akan mendapatkan berbagai revisi dan catatan - catatan kekurangan aplikai anda. pada step ini sangat penting bagi anda untuk membedakan mana yang harus direvisi karena kesalahan aplikai dan mana yang merupakan permintaan yang keluar dari requirement awal. Pada step ini, sangat penting bagi anda untuk menjaga agar customer tidak keluar dari perjanjian awal mengenai spek dan fitur dari aplikasi.

Revisi & Dokumentasi Final
Tahap ini dapat terjadi berulang - ulang, tergantung pada bagaimana anda atau bos anda membuat kesepakatan awal dengan customer. Pada step ini, anda telah dapat melengkapi dokumentasi dengan deskripsi lengkap dan hal - hal lain yang perlu disebutkan dalam dokumentasi.

Instalasi, Training, Live & Maintenance
Pada tahap ini adalah tahap penutupan dari proses development.

Lakukan Yang Anda Butuhkan Saat Ini 

Langkah - langkah yang disebutkan diatas memang akan membuat anda berkali - kali merubah atau melengkapi design database, bukankah hal ini tidak sesuai dengan konsep design sistem ?. ya, memang tidak sesuai, namun dalam kondisi yang juga tidak sesuai dengan bagaimana tim development seharusnya, diman anda melakukan segala sesuatunya sendiri, sangatlah penting untuk menjaga fokus anda untuk hanya mengerjakan hal yang anda butuhkan saat ini, dengan demikian akan meminimalisir anda stuck dalam renungan akan sebuah proses atau fungsi yang belum anda perlukan saat ini, hal ini akan membuat anda tetap produktif. 

Hal yang disebutkan dalam artikel ini sekalilagi bukanlah "Best Practice" yang biasanya disarankan para developer professional, namun hal ini adalah best practice untuk menjaga anda tetap produktif dilingkungan development yang jauh dari "Best Practice".

Semoga bermanfaat.

Coding Contest sebagai sarana evaluasi diri


Group facebook Programmer VB.Net Indonesia merupakan sebuah group lokal di facebook yang didirikan oleh Surya Pradhana ini memfokuskan topik dan pembahasan groupnya hanya pada satu bahasa saja yaitu VB.net, dimana banyak group lainnya yang masih membahas VB 6 dan bahasa lainnya.


Sampai saat ini, group yang memiliki jumlah member sekitar 21.300+ ini dikawal oleh 2 orang admin yaitu Surya Pradhana dan Chesiung Phan ini tetap berusaha mempertahankan group Programmer VB.Net Indonesia ini sebagai group yang bebas spam atau iklan serta posting - posting lainnya yang menyimpang dari fokus utama group tersebut yaitu pemerograman dengan bahasa VB.Net. Untuk mempertahankan fokus terhadap sebuah bahasa dan mempertahankan kebersihan group dari postingan -postingan sampah, kedua admin group memperketat ketentuan apa saja yang boleh diposting di group.

Coding Contest

Berawal dari gagasan seorang member yang juga donatur coding contest Fariz Yuniar, mengadakan coding contest secara individual dan spontan, ternyata hal ini disambut dengan sangat baik oleh member - member lainya. akhirnya, dengan juga dibantu kedua admin mengadakan coding contest secara resmi.

Coding contest dengan hadiah yang masih relatif sangat kecil karena memang berasal dana individual ini, ditujukan sebagai sarana evaluasi diri dan juga proses pembelajaran dengan melihat banyak contoh teknik dan algoritma pemrograman dari kontestan lainnya. hal kecil yang dapat kami lakukan ini kami tujukan untuk membantu pengembangan kualitas programmer di Indonesia.

Bagi anda yang ingin menjadi donatur kegiatan coding contest dan kegiatan2 lainnya di group Programmer VB.Net Indonesia dapat mengubungi admin pada kontak sebagai berikut :

Surya Pradhana : kutukeyboard@gmail.com
Chesiung Phan : jchesiung@gmail.com




Implementasi User Experinece Design [Bagian 3]

Komponen Teknologi

komponen teknologi adalah boleh dibilang merupakan komponen yang berfungsi sebagai middle tier antara komponen bisnis dan komponen design, teknologi merupakan media yang dapat menentukan apakah sebuah design dapat diimplementasikan atau tdak dan apakah business process dapat dioptimalkan. Dalam hal komponen teknologi yang berkaitan dengan UX, berikut adalah ulasannya.

The common mistake is when you choose your technology based on available skill set -Surya Pradhana

Infrastruktur

Sebagaimana kita ketahui bersama bahwa teknologi dibangun diatas sebuah infrastruktur, walau memang tidak dapat dikatakan bahwa ada kriteria infrastruktur tertentu untuk dapat memenuhi syarat pengembangan UX namun ada hal - hal yang dapat dipertimbangkan yang akan mempermudah pengembangan UX.

Konektivitas

Salah satu unsur yang paling penting dari pengembangan UX adalah konektivitas, baik itu sifatlnya lokal ataupun sifatnya wide area network atau bahkan cloud service. Konektifitas sangat penting untuk menjamin user dapat terhubung dengan setiap bagian yang diperlukan dan setiap sumber informasi yang diperlukan, kebutuhan akan konektifitas mungkin akan bervariasi antara perusahaan satu dengan lainnya.

Jaminan dimana user dapat terkoneksi dan menjangkau baik informasi ataupun individu yang diperlukan dalam melaksanakan pekerjaan, konektivitas juga diperlukan untuk menjamin integrasi antar berbagai sumber informasi misal pusat arsip ke ERP dan sebagainya. Dengan demikian pembangunan jaringan yang baik tentunya akan sangat berpengaruh pada tingkat kenyamanan user dalam bekerja.

Hal ini tentunya menuntut sebuah arsitektur perangakat jaringan untuk dapat mendukung kebutuhan konektivitas, sehingga pengembangan perangkat jarigan menjadi sangat penting, karena semua hal berawal dari pusat konektivitas. Sebagai contoh kecil adalah strategi implementasi system pada skenario multi linked remote site, dimana kendala yang paling umum terjadi di indonesia adalah koneksi internet. disnilah design infrastruktur berbicara, bagaimana untuk menjamin agar business process pada tiap site harus berjalan lancar tanpa terpengaruh dengan kondisi internet, namun tetap terjaganya sinkornisasi data antara masing - masing site yang dimana pada skenario ini sebuah site akan memerlukan data dari site lainnya untuk melakukan business process mereka.

Hardware Pendukung

Aspek hardware bukan hanya terpaku pada komponen hardware yang membentuk sebuah jaringan dimana akan berdiri sebuah konektivitas, hardaware dalam pembahasan UX juga mencakup hardware pendukung baik yang sifatnya hardware komputasi seperti server, komponen jaringan, workstation PC, dan sebagainya.

Hal yang perlu sangat diperhatikan adalah apakah anda sudah menggunakan hardware yang paling optimal dalam sebuah busines process. Sebagai contoh adalah sistem penerimaan barang, banyak developer yang masih berfikir seperti zaman 20 tahun yang lalu dimana proses penerimaan barang akan dilakukan menggunakan sebuah form dan kemudian form tersebut akan diinput oleh petugas penerima barang atau staff admin. Namun saat ini, hal ini adalah hal yang sangat merusak UX karena bayangkan, untuk mendapatkan data penerimaan barang, seorang harus  mengisikan sebuah form dimana form tersbut tidak selalu merupakan jenis form berkekuatan hukum melainkan hanya perantara administratif agar data penerimaan dapat diinputkan ke komputer dan akan lebih parah apbila bukan pihak yang menerima barang yang menginputkan data terseut, maka bila penerima barang melakukan kesalahan penulisan, maka penginput data tidak akan mengetahuinya. 

Hal ini dapat diperbaiki bila kita menggunakan perangkat tablet PC atau smartphone untuk melakukan penginputan barang, karena bentuknya yang mobile, penerima barang akan dapat langsung menginputkan data penerimaan kedalam sistem sambil melakukan penerimaan barang, dan sesaat setelah barang masuk ke gudang, data penerimaan arang sudah tersedia di system.

Contoh diatas merupakan sebuah contoh kecil mengenai bagaimana pemilihan perangkat dapat membuat perbedaan besar dalam memperkecil kemungkinan ketidak akuratan data dan efisiensi kerja, hal tersebut juga dapat kita terapkan dengan berbagai hardware pendukung lainnya yang tidak selalu mahal harganya.

Software

Software merupakan tempat dimana diimplementasikannya komponen design, software dalam pembahasa UX tidak terbatas pada pengembangan apliaksi yang akan menjadi antarmuka data yang akan digunakan oleh user, namun software dalam cakupan UX juga terkait pda bagaimana penerapan business process dalam sebuah aplikasi dan keterkaitan dan integrasi antar berbagai aplikasi yang mendukung berjalannya sebuah business process.

Sistem Operasi

OS merupakan media tempat berbagai software baik aplikasi DBMS, aplikasi bisnis utama, dan berbagai aplikasi pendukung lainnya. dalam pembahasan UX, sistem operasi juga terkait dengan berbagai sistem operasi pada hardware pendukung seperti tablet PC dan sebagainya. pemilihan dan pengelolaan sistem operasi akan sangat berpengaruh pada proses integrasi dari berbagai aplikasi pendukung business process.

Selain itu pemilihan sebuah sitem operasi juga akan berdampak langsung terhadap penggunaan aplikasi pendukung dimana masih ada beberapa jenis aplikasi yang tidak mendukung sistem operasi terntu atau bahkan hanya dapat berjalan di satu jenis sistem operasi. 

Sistem operasi juga berkaitan dengan proses konektivitas dimana sistem operasi terutama sistem operasi pada server akan berpengaruh pada metode konektivitas.

Database Management System

Untuk kebanyak sistem berorientasi bisnis, DBMS merupakan sistem yang yang memiliki peranan sangat pnting sebagai media managemen data, pengelolaan database akan sangat berpengaruh pada kinerja aplikasi bisnis utama. Sebagaimana kita ketahui bahwa arsitektur aplikasi yang baik adalah aplikasi yang menumpukan core business logic pada database, sedangkan aplikasi akan berfungsi sebagai pengelola object dan penampil data. Pemerosesan data secara secara terpusat mungkin banyak diabaikan oleh kebanyakan developer pemula karena memang kemampuan proses PC saat ini juga sedah makin baik, namun apabila kita akan memberikan user sebuak fleksibilitas akses dimana user akan mengakses data dari tablet dan smartphone, pemerosesan data pada sisi aplikasi akan terasa sangat tidak masuk akal.

Sinkronisasi data dari seluruh remote site adalah sangat penting terutama untuk skenario dimana sebuah remote site membutuhkan data dari remote site lainnya untuk melakukn business processnya. Untuk menjamin hal ini, sangat penting untuk memasang sebuah fungsi pada database untuk selalu memeriksa status sinkronisasi data, dan melakukan sinkronisasi secara otomatis atau on demand.

Arsitektur database juga sangat berpengaruh bagi performa pemerosesan dan penyajian data, hal yang sering sekali dilupakan oleh developer pemula adalah performa database pada design time akan sangat berbeda pada production time. Arsitektur dari bagaimana masing - masing table pada database berinteraksi, sebagai contoh sederhana, kesalahan arsitektur data dapat mengakibatkan kesulitan untuk menjalankan metode FIFO dimana beban dalam 1 transaksi akan bergantung pada berapa harga beli dari masing - masing item, bukan dari harga terakhir atau harga rata2.

Performa aplikasi penampil data juga tentunya sangat bergantung dari performa database, dalam hal ini proses tuning database sangatlah penting, dimana kita harus memastikan tiap request data adalah optimal, sebagai contoh kecil kesalahan yang sering dilakukan developer pemula adalah :
  1. Menarik seluruh data dari table dimana pada table tersebut tersimpan data hingga 3 tahun kebelakang.
  2. Menarik data dari 1 table yang sama berkali2 untuk 1 tampilan form.
  3. Melakukan seleksi seluruh kolom pada table yang jumlah kolomnya lebih dari 2 kolom untuk dimasukkan ke combobox dimana combobox hanya memerlukan 2 kolom yaitu value dan item.
  4. Melakukan seleksi kolom yang tidakdibutuhkan oleh user.
  5. Membuat nested query dengan CTE.
Hal yang juga sering diabaikan oleh developer pemula adalah pemisahan antara data berjalan dengan data yang telah lewat dan telah melalui masa validasi, yaitu pemisahan antara data OLTP dan data OLAP. data yang telah lewat masa validasi sebaiknya diubah ke bentuk summary report dan disimpan ke database OLAP utnuk pengaksesan data selanjutnya. Karena pada transaksi yang sudah lewat masa validasi tidak akan dilakukan pemerosesan data, sehingga data tersebut dapat diubah ke bentuk summary report sehingga query yang diperlukan untuk mengases data ini hanya query sederhana.

Dari semua hal diatas tentunya yang sangat penting adalah konsistensi data, dimana tidak ada kemungkinan data menjadi ambigu. contoh sederhana untuk menghindarkan data yang ambigu adalah :
  1. Tidak menyimpan hasil kalkulasi data seperti stok, tagihan, dan sebagainya dalam database OLTP.
  2. Tidak menempatkan 1 data yang sama dalam 2 atau lebih lokasi yang berbeda.
  3. Menghindari pengelolaan data master pada masing - masing site secara individual.

Core Business Application

Dari sisi business apps, hal yang perlu sangat diperhatikan adalah arsitektur aplikasi, seperti telah kita sebutkan diatas bahwa sebaiknya pemerosesan data yang berkaitan dengan business process seharusnya terjadi pada database, dan untuk dapat menjalankan hal tersebut dengan baik maka sangat diperlukannya implementasi N-Tier, yang minimal terdiri dari 3 tier yaitu Data Access Layer, Business Layer, dan Presentation Layer, tentunya implementasi N-Tier akan terasa percuma bila code tidak dibangun berbasis OOP. 

Selanjutnya hal yang perlu diperhatikan adalah pada sisi business layer dimana masih banyak yang mencampur adukkan antara business logic code dan helper code. Helper code yang membentuk sebuah fungsi yang tidak berhubungan langsung dengan husiness logic. beberpa contoh sederhana dari helper code adalah fungsi IO, fungsi email, konfigurasi database, switch database connection, reporting functions, dan sebagainya. Dengan memisahkan helper code kedalam object terpisah, selain lebih mudah untuk memelihara helper code yang kemungkinan besar akan digunakan di object lain, hal ini akan mebuat business object anda clean dan siap untuk diduplikasi sebagai acuan pembuatan object baru yang hampir serupa, dan hal ini tentunya akan meningkatkan kecepatan development aplikasi anda.

Ada juga hal yang sering dilupakan oleh developer pemula adalah penggunaan konsep Dynamic Modular, dimana rule dasar dari konsep ini adalah sesuatu yang bisa jasa berubah, baik berkurang maupun bertambah atu hanya berubah bentuk, harus dapat dikonfigurasikan, dan setiap business object selalu mempunyai sumber input dan output untuk dengan mudah disambungkan secara dinamis ke object lainnya, sehingga segala hal yang mungkin berubah tidak di hard code dalam aplikasi. Sebagai contoh sederhana adalah menu, dalam perjalanan perkembangan aplikasi, sudah tentu fitur akan bertambah, dan kemungkinan besar menu bertambah, sehingga penulisan menu tidak boleh di hard code, melainkan menu dan linknya harus digenerate dari database, sehingga setiap ada penambahan, pengurangan atau perubahan navigasi menu, kita tidak perlu membongkar aplikasi.

Dari beberapa contoh kecil diatas, kita sudah dapat seikit memperbaiki arsitektur aplikasi kita, mengapa memperbaiki arsitektur pentung untuk implementasi UX ?, jawaban sederhananya adalah, bagaimana menerapkan komponen design dengan baik pada layer presentasi apabila code behind nya tidak memungkinkan untuk melakukan hal - hal yang seharusnya dilakukan. sebagai contoh kecil adalah bagaimana mungkin kita menampilakan tombol atau report atau dashboard set sesuai dengan kebutuhan dan akses level dari user apabila fungsi untuk mengurus hal tersebut tidak tersedia pada sisi code.

Integrasi Supporting Application

Dalam hampir semua skenario implementasi, akan melibatkan supporting apps seperti Office apps, email client, PDF reader dan sebagainya. dari sisi UX, mengoperasikan banyak aplikasi untuk melakukan sebuah task adalah sangat tidak masuk akal, sebagai contoh adalah notifikasi email. Banyak aplikasi memiliki fitur notifikasi email, bahkan untuk sekala besar notifikiasi ini di generate langsung dari database, namun hal yang sering dilupakan oleh developer pemula adalah bagaimana interaksi email client dengan core business apps untuk melengkapi sebuah task yang harus dijalankan user.

Sebagai contoh user menerima notifikasi pada email client bahwa ada no pembayaran XXXX yang harus diproses, langkah yang biasanya diimplementasikan adalah user harus membuka aplikasi, login, kemudian membuka form yang menurut user berkaitan dengan notifikasi tersebut, melakukan pencarian untuk nomor pembayaran yang diberitahukan lewat email, dan setelah menemukan data pembayaran tersebut, barulah user dapat melanjutkan task nya. 

Hal ini rasanya sangat tidak masuk akal dan tidak direkomendasikan dalam UX. yang kita dapat lakukan untuk memperbaiki hal ini adalah membuat sebuh file yang isinya link atau parameter keterangan tentang dimana data yang dinotifikasikan berada (sebaiknya dibuat dalam bentuk query atau reference object yang di encrypt) file tersebut disimpan dalam extensi khusus dimana extensi tersebut telah terdaftar untuk dibuka dengan core business apps. saat user mengklik file tersebut, maka OS secara otomatis akan membuka aplikasi kita dan melemparkan parameter command line, selanjutnya aplikasi akan membaca parameter tersebut, dan meminta user untuk login, apapbila login berhasil dan user memiliki otorisasi ke halaman yang disebutkan dalam file tersebut, maka aplikasi akan otomatis membuka form yang berkaitan dan menampilkan data yang tercantum dalam parameter file tersebut. Dengan demikian kita telah menyingkat beberapa langkah yang seharusnya tidak dibebankan ke user.

demikian sebagian kecil dari pembahasan UX dari sisi teknologi yang dapat kita implementasikan untuk mempermudah dan memungkinkan banyak hal lagi yang dapat kita implementasikan pada komponen design yang akan kita bahas apada artikel selanjutnya.

Semoga bermanfaat.

Implementasi User Experinece Design [Bagian 2]

Komponen Bisnis

komponen pertama yang akan kita bahas adalah komponen bisnis, yang dimaksud dengan komponen bisnis disini adalah mengacu kepada business process analysis sebagai acuan dasar pengembangan aplikasi. Banyak orang membahas tentang business process dan berbicara mengani bagaimana business proces seharusnya menjadi acuan sebuah aplikasi, namun pad akhirnya, tidak sedikitpula aplikasi yang terlahir malah menghianati business process karena keterbatasan pengetahuan teknis dari pengembang dan pemaksaan sebuah asumsi tentang idealnya sebuah aplikasi diatas metode user dalam pengaplikasian sebuah busines process melalui operating prcedure mereka, business process adalah hal general, yang berbeda hanyalah work flow dan policy nya.

Pada artikel ini mari kita bahas mengenai analisis business process dalam kaitannya untuk membangun sebuah aplikasi yang mengimplementasikan UX dengan baik.

Business needs should drive and demanding technology and design changes to follow its growth, trough some design and technology breakthrough sometime changes business models - Surya Pradhana  

Corporate Visions, Identity & Values

Sebuah aplikasi yang baik harus dapat berjalan beriringan dan sesuai dengan visi misi perusahaan, identitas perusahaan serta nilai - nilai yang diterapkan dalam perusahaan tersebut. Sebagai contoh untuk perusahaan pelayanan expedisi dimana inti bisnisnya adalah mengantarkan paket ke tujuan, pada bisnis yang berbasis layanan ini tentunya dititikberatkan pada akurasi pengiriman barang, dan rasa aman dan nyaman dari konsumen tentang status pengiriman mereka. Pada model bisnis ini aplikasi akan dituntut untuk menjajikan informasi terkaurat tentang pengiriman barang, statusnya.

Dari analisa diatas, kita dapat bayangkan apa yang paling sering dilakukan oleh customer service, dan apa yang paling sering dilakukan oleh pelanggan, apa yang terpenting bagi customer service dan apa yang paling penting bagi pelanggan. Dari pembahasan tersebut, tampaknya sangat tidak masuk akal apabila kita memberikan tampilan awal untuk customer service berupa sebuah list yang sangat panjang dari daftar pengiriman barang, ataupun list yang sangat panjang dari data seluruh konsumen.

Bagaimana Seluruh Tim mengembangkan Bisnis, Bukan Sekedar Bekerja.

Dalam ruang lingkup pembahasan UX, sebuah aplikasi harus dapat seluruh anggota tim dalam perusahaan tersebut dapat ikut serta dalam proses pengembangan bisnis, bukan sekedar bekerja, yang artinya aplikasi harus dapat membantu seluruh tim untuk berkolaborasi dengan lebih baik, memberikan layanan dengan lebih baik dan membuat keputusan - keputusan yang lebih tepat, cepat, dan mudah.

Seorang staff membutuhkan akses yang cepat pada proses pekerjaan serta material - material informasi yang mendukung pekerjaan dengan list yang menyerupai list dibawah ini :
  1. Apa yang harus saya ketahui sebelum memulai pekerjaan.
  2. Saya akan melakukan pekerjaan tersebut, bukan memikirkan bagaimana saya harus bekerja atau melakukannya.
  3. Untuk sebuah pekerjaaan saya hanya butuh data A, C, F. dan output berupa laporan M,N dan L. jangan buat saya mencari dari A sampai Z.
  4. Pekerjaan saya sangat banyak, jangan buat saya melakukan 10 langkah untuk 1 tujuan sederhana.
  5. Yang hanya saya perduli adalah pekerjaan saya beres secepatnya, dan dengan cara yang semudahnya, saya tidak perduli dengan apa yang aplikasi ini bisa lakukan.
  6. Jangan samakan apa yang saya kerjakan dengan apa yang dia kerjakan, karena saya dan dia memiliki tanggung jawab dan job description yang berbeda. saya tidak butuh apa yang dia butuhkan, dan begitu pula sebaliknya.
Seorang team leader atau kepala divisi membutuhkan task list dan progress nya dari pekerjaan dibawah divisinya serta akses cepat terhadap laporan - laporan analisis untuk membantu mengambil keputusan srta berkoordinasi dengan divisi lainnya, untuk para pengambil keputusan mungkin list ini bisa jadi acuan :
  1. Saya orang yang sangat sibuk, jangan suruh saya berpikir bagaimana cara mengoperasikan aplikasi ini, saya tidak ada waktu.
  2. Saya tidak perduli dengan bagaimana mereka melakukannya, saya hanya butuh untuk tahu statusnya.
  3. Yang saya ingin lihat adalah informasi, laporan summary dan analisis, bukan data mentah yang entah apa artinya semua angka itu.
  4. Bila saya harus meluangkan waktu lebih dari 5 menit untuk sebuah informasi, maka informasi tersebut adalah untuk keputusan saya 5 tahun kedepan, jangan biarkan saya menunggu untuk apa yang harus saya putuskan detik ini.
List diatas adalah ilustrasi dari keseharian kita sebagai user baik itu dari sisi pekerja ataupun pembuat keputusan. komponen bisnis melibatkan ebutuhan dasar yang akan dijadikan acuan oleh faktor teknologi dan design, sehingga pada komponen ini kita hanya membahas kebutuhan dasar yang harus dijadikan landasan pemikiran untuk menciptakan sebuah UX yang baik dan benar.

Aplikasi Yang Membunuh Perusahaan

Semua pengembang aplikasi tentunya memiliki asumsi bahwa aplikasinya akan membantu perusahaan dalam mengembangkan bisnis mereka, namu tidak jarang saya melihat aplikasi yang justru secara tidak langsung membunuh perusahaan tersebut, bagaimana sebuah aplikasi dapat membunuh sebuah perusahaan ?.

Pernahkan anda melihat sebuah situs jual beli online, dimana terasa sangat sulit kita sebagai calon pembeli untuk mengoperasikan aplikasi tersebut, mencari barang yang kita inginkan dan melakukan pencarian - pencarian sesuai dengan kriteria kebutuhan kita, dimana kita dapat berpikir tentang apa yang ingin saya beli, bukan berpikir bagaimana saya mencari barang tersebut, dimana letaknya barang tersebut. Ya, itu adalah salah satu contoh sederhana tentang aplikasi yang membunuh perusahaan, dimana, kegagalan aplikasi tersebut dalam mengimplementasikan UX, akakn berdampak pada menurunnya omzet penjualan dari situs tersebut, karena user akan malas karena harus berpikir keras hanya untuk mencari barang yang diingannya.

Selanjutnya mengenai detail dari aplikasi yang membunuh perusahan ini akan kita bahas secara lebih mendalam si bagian komponen Design. Demikianlah pembahasan komponen bisnis sebagai acuan dasar pengembangan UX, pada artikel selanutnya kita akan bahas bagaimana komponen bisnis ini diterapkan dan diaplikasikan dalam komponen teknologi.

Semog Bermanfaat.