ERP : Apa itu ERP

ERP adalah software. Bisa berjalan sebagai aplikasi desktop, bisa juga sebagai webapps (aplikasi web), dan biasanya punya aplikasi mobile...

Friday, October 22, 2004

Berusaha Memberikan Program Yang Sempurna

Makassar, 21 Okt 2004, Ramadhan Hari ke-6….

Dua Kepala akan lebih baik dibandingkan Satu Kepala..tetapi
Pengembangan Program Lebih Butuh Waktu Testing dibanding Ratusan Kepala….
(Buat Kampus-ku STMIK Handayani Makassar, Semoga Bisa “Membuka Mata”)

Ini adalah tulisan pertama saya yang murni datang dari kepala saya sendiri, yang saya coba paparkan di “blog” saya ini. Ini adalah resume dari pengalaman Saya sendiri selama menekuni aktivitas penulisan kode dan desain program.
Dalam hal ini, saya mempersempit ke pemrograman basis Windows dengan RAD Delphi. Mungkin Anda yang pernah menulis kode di Pascal, juga di C, pasti tahu bagaimana ribetnya membuat sebuah interface program yang kita inginkan. Apalagi di jaman DOS (maksud saya MS.DOS, bukan Denial Of Service) dulu. Tahun 2000, ketika saya mulai merancang Tugas Akhir saya, saat itu kampus saya tidak mengenal yang namanya Open Source, Unix dan Linux , apalagi bahasa pemrograman yang berkutat disekitar system tersebut. Yang kami ketahui hanyalah Pascal dan Basic. Ini juga merupakan sebuah siluet mengenai payahnya system pendidikan tinggi kita lebih khusus ke bidang Teknologi Informasi.
Saat itu saya mengenal RAD dari teman saya, dan mencoba untuk mempelajari secara otodidak, karena di Jurusan kami (Teknik Komputer), kami tidak mendapatkan bahasa pemrograman dan mata kuliah yang dapat membimbing kami untuk menjadi seorang IT professional seperti harapan kami saat masuk ke Kampus kami.
Akhirnya setelah berbagai buku saya lahap dan berbagai kode saya contek, rubah dan pelajari, akhirnya Tugas Akhir Saya selesai, dengan judul “ Simulasi Keamanan Gedung Berbasis Komputer” ..judul yang mungkin sangat sederhana bagi Anda yang ada di pulau Jawa apalagi di luar negeri sana. Tapi percayalah, dengan judul ini, akhirnya tradisi membuat program sendiri di kampus saya dimulai, dan menjadi kebanggaan bagi saya sampai saat ini. Tugas Akhir Saya ini akan saya bahas di tulisan saya yang lain secepatnya.

Setelah hampir 4 tahun berkutat dengan beberapa bahas pemrograman seperti Pascal, Delphi, Python, lalu ke Free Pascal ,Kylix, sedikit Perl dan PHP, serta belajar menggunakan syntax SQL dengan PostgreSQL dan MySQL, saya akhirnya merasakan betapa inti dari sebuah software, adalah desain awal. Dari Desain Awal, akan berkembang beberapa hal berikut :

- Kerangka Awal Desain
- Pemilihan Lingkungan dan System
- Keputusan Pemilihan compiler dan bahasa.
- User Interface
- Efisiensi Proses Program
- Pembatasan Interaksi User Dan Program
- Testing, De-Bugging dan Refactoring
- Kebutuhan dan Keinginan User


Dan dari beberapa poin yang telah saya rasakan diatas, kesimpulan saya adalah sama dengan software developer lainnya, “ Tidak Ada Kepastian Kesempurnaan Dari sebuah Software”. Bila Customer Anda meminta kepastian tentang kesempunaan Software-nya, maka katakana saja “ Sesuatu Yang Dapat Saya Pastikan Adalah tidak Adanya Kepastian Kapan Software Anda Selesai”.

// Penulis minta ijin untuk menyeruput kopi sedikit, kemudian mengunyah sepotong Pisang Ijo…heheheh


Kerangka Awal

Kerangka Awal bukanlah potongan terbesar dari sebuah ukuran fisik software. Kerangka awal adalah susunan ide pokok yang mendasari pembuatan program.
Misalnya kita akan membuat program yang akan meminta input berupa angka dan bila diproses oleh program akan menghasilkan string yang “mengatakan” jumlah yang dimaksudkan secara kata. Misalnya input adalah 12, maka output program adalah “Dua Belas”, dan bukan “Satu Dua”.

Maka kerangka awal yang bisa saya coba susun adalah :

- Berapa Digit Input/ berapa karakter yang bisa saya terima sebagai Input.
- Karakter apa saja yang bisa diterima sebagai input program.
- Metode apa yang akan merubah input menjadi ouput yang diinginkan. Apakah saya membuat proses If .. Then, atau Case Of, atau saya membuat sebuah table pustaka yang menterjemahkan karakter input menjadi string untuk output program. Terus apakah Pustaka ini adalah murni sebuah table, atau text file.
- Apakah input numerik akan diterjemahkan per karakter atau ada proses yang mengharuskan membaca sekumpulan karakter dengan satu output.

Anda bisa lihat dan rasakan, betapa inginnya Anda berkomentar tentang kerangka diatas,.. dan itulah indahnya programming,..tidak akan ada sebuah jalan yang sama, yang ada adalah banyaknya ide menuju sebuah konsep yang sama.

// Untuk komentar Anda bisa langsung menulis di Blog ini dan akan sangat saya hargai.

Btw, untuk saat ini kerangka diataslah yang akan Saya bahas.

Lingkungan dan System.

Apa bedanya…?
Mungkin ini yang pertama muncul di kepala saya..memang bedanya apa jika program ini berjalan di MS.DOS, MS.Windows9x, MS.Windows NT, 2000, dan XP. Atau apa bedanya jika ini saya buat melalui Bash Script di Linux..?
Sekilas ngga ada masalah…

Benar , disisi pengembangan dan disisi programmer masalah mungkin tidak ada kecuali programmer adalah seorang penganut Free Software dan Open Source yang mungkin akan berfikir 13 kali untuk menuliskan kode di system punya Microsoft. Dan kecuali kita sangat concern terhadap masalah keamanan, masalah pemakaian memory, dan amsalah yang Unix-minded lainnya.

Tapi ingat, bukan programmernya yang akan menggunakan program ini. Dan sangat umum dan pasti, bukan di komputer programmer kode ini dijalankan.
Maka pastilah sebagai developer Anda akan merujuk ke system user dan Lingkungan user itu sendiri. Bayangkan betapa menjengkelkan untuk customer Anda disaat sudah bertahun tahun menjadi pemakai Ms.DOS dengan WordStar dan Lotus123-nya, dan tiba tiba Anda mendesain program ini berjalan graphical diatas WindowsXP…, atau betapa Anda membuang waktu kerja mereka saat lingkungan komputer basis Windows mereka Anda susupi sebuah komputer/mesin berbasis Linux hanya untuk menjalankan sebuah aplikasi. Bagaimana mereka akan mengeluarkan kemampuan dan investasi mereka untuk menyesuaikan diri, kebiasaan dan komunikasi data layer Aplikasi mereka untuk “membiasakan” system mereka dengan system yang baru Anda buatkan. Ataupun tiba tiba seorang Administrator Unix-minded, mendapati bagaimana dia harus klak-klik, drag over, sebuah jendela pada system Windows9x yang sangat mereka hindari hanya untuk menggunakan program yang Anda buat untuk dia.
Jelas ini sebuah perbedaan dan sebuah kebutuhan pertimbangan yang perlu kita perhatikan….


Memilih Kompiler dan Bahasa

Melanjutkan bahasan diatas, maka otomatis Anda mesti selektif dalam hal memilih “Alat Lukis Anda” setelah mengetahui jenis dan bahan “kanvas” Anda. Untuk Anda yang pengen nulis yang halal dan berkah saja mungkin akan memilih bahasa atau kompiler yang sudah Anda beli, Anda Registrasi atau memilih yang gratisan. Pameo bahwa “kualitas berbanding lurus dengan rupiah” mungkin sudah tidak masalah lagi di bidang bahas pemrograman, tapi mungkin yang berlaku sekarang adalah “kualitas berbanding lurus dengan dukungan dan kestabilan”.
Untuk aplikasi berbasis system komersil, pameo pertama masih merupakan pertimbangan utama, walaupun beberapa tahun terakhir para pembuat aplikasi gratis sudah berusaha sedemikian hebat untuk menciptakan kompiler yang sempuna dan powerfull, tapi bagaimana pun juga akan kembali ke masalah waktu develop mereka. Umur yang masih muda membuat hasil ciptaan mereka menyandang bug dimana mana, juga menyisakan masalah dukungan hardware yang belum lengkap. Hal ini masih mengganjal bidang pengkodean gratisan menerobos lahan kompiler komersil di basis Win32.
Dikarenakan masalah pelik tersebut , maka mungkin lebih aman Anda memilih untukmelakukan “dirty coding” (bahasa saya tentang menggunakan barang bajakan untuk menciptakan aplikasi, dan sampai sekarang I’m still dirty) dengan berbagai kompiler bajakan ataupun RAD hasil cracking Anda. Atau kalau mau bisa saja Anda berinvestasi dalam ibadah untuk membiasakan orang lain menggunakan produk berlabel “halal”, sangat banyak kompiler gratis yang luar biasa hebat dalam hal kemampuan dan dukungan system baik platform system operasi atau pun dukungan hardware seperti Python, Perl, Free Pascal, GCC, NASM dan sebagainya.

Tapi tetap saja akan sangat bergantung dengan poin masalah Lingkungan dan System dari customer Anda sendiri, jadi lupakan masalah lain dan mulailah menulis kode.
Dan akhir dari segalanya, mestinya Anda memilih kompiler dan bahasa yang paling Anda kuasai, agar hasilnya tidak setengah jadi.

User Interface

Ini juga merupakan hal yang sangat terkait dengan selera User, Lingkungan dan System kerja User. Kembali lagi, seorang yang biasa menggunakan text mode command seperti di Linux dan Unix-Clone lainnya, mungkin akan memilih aplikasi berbasis Console Design . Dan seorang dengan track record pemakaian Ms.Windows yang lama, akan meminta Anda mendesain program seindah dan sesmudah mungkin untuk mereka, tanpa harus tahu apa saja yang terjadi di background interface tersebut.
Suka atau tidak suka, ungkapan Don’t Judge The Book By The Cover hanya akan berlaku pada pengguna system Unix, Linux dan system basis text lainnya. Di Win32, semua adalah masalah “mata”. User akan lebih tertarik menggunakan aplikasi dengan GUI (Graphical User Interface) yang indah dibanding menggunakan aplikasi mapan dengan tulisan putih berlayar hitan yang berkedip tiap input dimasukkan. Jadi desain / inteface aplikasi Anda kembali lagi ke selera User Anda BUKAN SELERA ANDA. Kecuali Anda membuat aplikasi untuk Anda sendiri.

Notes :
Saya pernah diberikan tugas untuk membuat sebuah kode menggunakan Basic, dan akhirnya saya membuat program dengan tampilan yang lebih bagus dari teman-teman yang lain, saat kuliah. Dan saat dosen melakukan pengecekan, dan tiba giliran saya, Beliau hanya mengangguk memandang program saya sambil tersenyum dan berlalu, tanpa mengetahui bahwa Saya baru mengerjakan tampilan belum menuliskan proses apa-apa…
Mudah-mudahan Beliau tahu…


Efisiensi Proses Program

Terkadang, secara sadar atau tidak, kita sering melakukan kegiatan yang berulang-ulang, berkendaraan (naik motor), melalui beberapa jalan berliku untuk tiba di tujuan, yang sering tapa kita sadari ternyata adalah jalan yang tidak efisien, kegiatan yang tidak perlu dilakukan seandainya kita telah melakukan prediksi sebelumnya.
Untuk kasus bermotor, maka kerugian kita selain sisi waktu adalah pada bensin, atau lebih detail lagi ban motor Anda akan lebih terkikis, rem akan lebih terpakai, gas akan lebih sering dipacu, dan kemungkinan terburuk adalah tersesat dalam waktu yang lama sebelum sampai ke tujuan, yang menjadikan proses akhir perjalanan menjadi sesuatu yang disesali dan di sayangkan.




Di tarik ke kasus programming kita maka kerugian yang akan ditimbulkan adalah :

- Kerugian Waktu develop
- Kerugian pemakaian CPU
- Kerugian alokasi dan pemakaian memory
- Besarnya Ukuran Aplikasi
- Besarnya kemungkinan terciptnya Bug akibat “proses tersesat” tadi.
- Beratnya Proses Debugging dan Update Code baru.
- Tidak sebandingnya “Load Time” pemikiran kita dengan bayaran (hehehehe..ini yang paling berat).

Maka jika dalam sebuah badan program terdapat kode yang terasa “njelimet” atau istilah Makassar-nya “rotasa”, maka sebaiknya Anda investasi waktu sedikit untuk mencoba kode tersebut dengan project lain, percayalah investasi ini akan menyelamatkan Anda dari kejaran User yang komplain masalah Error yang dimunculkan oleh Aplikasi Anda belakangan.
Pemilihan Variabel dan Type, penentuan besarnya Array yang digunakan, Akses langsung atau melalui library system, pemilihan metode dan komponen, design yang kompak dan tidak “ramai”, merupakan sedikit dari banyak jalan keluar untuk mencapai Efisiensi dalam menulis program yang mantap.


//Untuk sementara Saya break dulu yah..capek..nanti kita lanjutkan lagi, lagian takut telat bangun //sahurnya….


4 comments:

Anonymous said...

Selamat...akhirnya anda ada waktu untuk membagi ilmu lewat tulisan on-line (yang setahu sy anda tdk punya begitu banyak waktu untuk hal ini). Ini akan sangat membantu kami yang masih awam ttg IT (memperbanyak sumber belajar) skaligus merupakan motivasi bagi kami khususnya anak2 stmik handayani untuk berbuat lebih baik...Trima kasih.

Smoga dalam waktu singkat tulisannya akan bertambah dan dengan topik yg smakin variatif.
We're waiting for other topics...
Salam sukses...

Anonymous said...

bagus....
jarang yang kepikiran buat ngembangin program di Indonesia ini (atau aku aja yah.. yang nggak tahu :P )....

I appreciatin' U.. Sir...

Good Luck!

Anonymous said...

Lha bener itu, proses pembuatan software kan memang seharusnya seperti itu, kalau yang pernah ngalami pembuatan software di TA-nya pasti seperti itu (kecuali yang melakukan bypass), terlihat jelas pada skripsinya dan data progress report dalam risetnya

Anonymous said...

Kayaknya Kmu tambah Pintar aza ya..
tulisan kamu bagus jarang2 orang mau berbagi ilmu yang berharga dgn orang lain. eh..you mash pake nama Mallounk
kan..!?. Lama nggk ketemu Gmana Kbar tman-tman yg lain..allien mash sering
ketmu kmu nggk!?

My Blog Stats