Learn the Rules, Break The Rules, and Create the New Ones...

Hi... My name is Rizky Prihanto. You can call me RQ, or Rizky either. I am currently living on Bandung, Indonesia. Had a lot of works and research about Enterprise Information Systems (majoring on education and e-governments). I have bunch of interests (some friends call it 'freakz') about MySQL Opensource Database and now I am one of the administrator of MySQL Indonesia User Group - the opensource community initialized by Sun Microsystems Indonesia.

My Company PT Cinox Media Insani, Bandung, Indonesia. I work here since 2008 and I take responsibility as Chief of Software Architect. My job is about planning, imaginating, fantasy-ing, concepting, and build the infrastructure of the new information systems (or app engines) which going to be implemented.

This blog This is my blog that represent my current opinion, research and experiences about anything in Software Engineering. Written since 2007 (actually) and has been vaccum for a lot of while. And now I wanna ressurrect this blog (optimistically) from the long-long-hibernation with something fresh and new ideas -- still about MySQL, software engineering, development, and may be something managerial here.

About the tagline I've learned the statement above from some paper written by Kent Beck about Extreme Programming (XP) methodology -- some sort of practical software development methods which have no boundaries. That's very inspiring me a lot. I have written some article on this blog that tell my interpretation about that statement here.

My Another Blogs I have classifying my blogs into some sort of genre. The blog that you read here right now is my primary blog that tell you (majoring) about IT stuff. But if you wanna look another side of me, you can visit here, here, here,or here. Hope it'll be interesting for some of you.

Credits I would thanks to Blogger for this great blog platform. Skinpress who designed this Wordpress template (which is bloggerized by Free Blogger Templates). My appreciate is also going to you who give your generously time for visiting my blog.

Fungsi-Fungsi VB/VBA/VBScript

Date/Time Functions




Converts a valid date and time expression to the variant of subtype Date


Returns the current system date


Returns a date to which a specified time interval has been added


Returns the number of intervals between two dates


Returns the specified part of a given date


Returns the date for a specified year, month, and day


Returns a date


Returns a number that represents the day of the month (between 1 and 31, inclusive)


Returns an expression formatted as a date or time


Returns a number that represents the hour of the day (between 0 and 23, inclusive)


Returns a Boolean value that indicates if the evaluated expression can be converted to a date


Returns a number that represents the minute of the hour (between 0 and 59, inclusive)


Returns a number that represents the month of the year (between 1 and 12, inclusive)


Returns the name of a specified month


Returns the current system date and time


Returns a number that represents the second of the minute (between 0 and 59, inclusive)


Returns the current system time


Returns the number of seconds since 12:00 AM


Returns the time for a specific hour, minute, and second


Returns a time


Returns a number that represents the day of the week (between 1 and 7, inclusive)


Returns the weekday name of a specified day of the week


Returns a number that represents the year

Conversion Functions




Converts the first letter in a string to ANSI code


Converts an expression to a variant of subtype Boolean


Converts an expression to a variant of subtype Byte


Converts an expression to a variant of subtype Currency


Converts a valid date and time expression to the variant of subtype Date


Converts an expression to a variant of subtype Double


Converts the specified ANSI code to a character


Converts an expression to a variant of subtype Integer


Converts an expression to a variant of subtype Long


Converts an expression to a variant of subtype Single


Converts an expression to a variant of subtype String


Returns the hexadecimal value of a specified number


Returns the octal value of a specified number

Format Functions




Returns an expression formatted as a currency value


Returns an expression formatted as a date or time


Returns an expression formatted as a number


Returns an expression formatted as a percentage

Math Functions




Returns the absolute value of a specified number


Returns the arctangent of a specified number


Returns the cosine of a specified number (angle)


Returns e raised to a power


Returns the hexadecimal value of a specified number


Returns the integer part of a specified number


Returns the integer part of a specified number


Returns the natural logarithm of a specified number


Returns the octal value of a specified number


Returns a random number less than 1 but greater or equal to 0


Returns an integer that indicates the sign of a specified number


Returns the sine of a specified number (angle)


Returns the square root of a specified number


Returns the tangent of a specified number (angle)

Array Functions




Returns a variant containing an array


Returns a zero-based array that contains a subset of a string array based on a filter criteria


Returns a Boolean value that indicates whether a specified variable is an array


Returns a string that consists of a number of substrings in an array


Returns the smallest subscript for the indicated dimension of an array


Returns a zero-based, one-dimensional array that contains a specified number of substrings


Returns the largest subscript for the indicated dimension of an array

String Functions




Returns the position of the first occurrence of one string within another. The search begins at the first character of the string


Returns the position of the first occurrence of one string within another. The search begins at the last character of the string


Converts a specified string to lowercase


Returns a specified number of characters from the left side of a string


Returns the number of characters in a string


Removes spaces on the left side of a string


Removes spaces on the right side of a string


Removes spaces on both the left and the right side of a string


Returns a specified number of characters from a string


Replaces a specified part of a string with another string a specified number of times


Returns a specified number of characters from the right side of a string


Returns a string that consists of a specified number of spaces


Compares two strings and returns a value that represents the result of the comparison


Returns a string that contains a repeating character of a specified length


Reverses a string


Converts a specified string to uppercase

Other Functions




Creates an object of a specified type


Evaluates an expression and returns the result


Returns the current locale ID


Returns a reference to an automation object from a file


Allows you to connect a VBScript procedure to a DHTML event on your pages


Displays a dialog box, where the user can write some input and/or click on a button, and returns the contents


Returns a Boolean value that indicates whether a specified variable has been initialized or not


Returns a Boolean value that indicates whether a specified expression contains no valid data (Null)


Returns a Boolean value that indicates whether a specified expression can be evaluated as a number


Returns a Boolean value that indicates whether the specified expression is an automation object


Returns a picture object. Available only on 32-bit platforms


Displays a message box, waits for the user to click a button, and returns a value that indicates which button the user clicked


Returns a number that represents an RGB color value


Rounds a number


Returns the scripting language in use


Returns the build version number of the scripting engine in use


Returns the major version number of the scripting engine in use


Returns the minor version number of the scripting engine in use


Sets the locale ID and returns the previous locale ID


Returns the subtype of a specified variable


Returns a value that indicates the subtype of a specified variable

List function ini dicomot dari sini nieh

Beberapa Cara Validasi Input Numerik

Bagi ente-ente pade programmer VB mungkin udah sering makae/bikin suatu routine untuk validasi input numerik pada textbox. Maksutnya biasanya ya supaya user cuman bisa ngetikin angka di textbox. Pendekatan2 yang dipake macem2, dan di sini ogut akan mencoba membahasnya. ^_^ hehehe, ga mutu bangedd nih postingan (habis, pengen nulis blog tp ngga da bahan siih...)

ada yang "cukup" makae function bawaan VB, isnumeric(). Biasanya ditaroh di event lostfocus() atau di event validate(). contoh codingnya mungkin begini :

Private Sub Entri_LostFocus(Index As Integer)
If IsNumeric(Entri(Index).Text) = False Then
MsgBox "Sori, input cuman boleh angka doank!", _
vbCritical, "Pesan"
End If
End Sub

cara ini punya ciri : pencegahan inputan selain angka dilakukan *setelah* user mengisikan nilai textbox (ngetikin textboxnya).. dan untuk proses validasinya, perlu dilakukan 2 kali : sekali di event lostfocus/validate, dan *musti* di cek sekali lagi pas event tombol simpan di klik (misalnya). Klo ngga gtu, masih ada peluang untuk kelolosan tuh...

ada juga yang nyoba nge-trap inputan pada event textbox_keypress()
caranya dengan cuman mengijinkan karakter dengan kode ascii tertentu yang bisa diketikin di dalam tu textbox. contoh codingnya seperti ini :

Private Sub Entri_KeyPress(Index As Integer, _
KeyAscii As Integer)
If Not ((KeyAscii >= Asc("0") And _
KeyAscii <= Asc("9") Or _
KeyAscii = vbKeyBack)) Then
Beep KeyAscii = 0
End If
End Sub

cara ini cukup shiepp.. apalagi bisa dimodifikasi dengan nambahin list-exclusion karakter yang boleh diijinin utk diketik di dalam textbox (misal : tanda koma ato tanda titik)

Ada lagi cara laen yang memanfaatkan API, dimana *secara paksa* textbox akan di-inisialisasi-kan hanya bisa nerima input angka thox. Kebutuhan dasar pemanggilan API Calls-nya seperti ini (udah kubuatkan function nya sekalian jadi tinggal make' doank)
'-- di module :
Private Declare Function GetWindowLong Lib "user32" _
Alias "GetWindowLongA" (ByVal hWnd As Long, _
ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" _
Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long

Private Const ES_NUMBER = &H2000&
Private Const GWL_STYLE = (-16)

Public Function SetNumerik(NamaControl As Control, _
Optional Flag As Boolean = True) As Long
Dim curstyle As Long
curstyle = GetWindowLong(NamaControl.hWnd, GWL_STYLE)
If Flag Then
curstyle = curstyle Or ES_NUMBER
curstyle = curstyle And (Not ES_NUMBER)
End If
SetNumerik = SetWindowLong(NamaControl.hWnd, _
GWL_STYLE, curstyle)
End Function

'-- contoh pemanggilan di form, cukup di FORM_LOAD doank.. :

Public Sub Form_Load()
SetNumerik entri(0)
SetNumerik Entri(1)
End Sub

Cara ini, tampaknya keren dan mudah. Emang sih! Tapi tetep ada aja konsekuensinya... textbox (ato combo, maskedit juga bisa) akan *bener2* cuman bisa nerima inputan angka. Ngga bs custom, ngijinin titik ato koma utk nulis pemisah desimalnya.

Dalam beberapa kasus, aku lebih seneng pake teknik KEDUA. Tapi dalam *banyak kasus*, bagiku pendekatan API yang kucontohin di teknik KETIGA itu cukup sering ku-implements dalam code ku...

Sekilas Business Intelligence


Asyik juga nih diskusi tentang BI dengan Pro dan Kontra-nya. Pertama
biar nggak salah tangkep dulu. Saya benar-bener gelandangan bebas
dalam artian kerja untuk diri sendiri. Nggak punya kepentingan
mewakili vendor A, pro consulting company B, mewakili perusahaan C
dsb. Saya hanya punya ketertarikan dengan BI ini - nggak punya tujuan
untuk penetrate satu product tertentu.

Saya tertarik karena dari sejak 20 tahun lalu saya mulai menulis code
program saya yang pertama, tujuannya adalah provide information. Baik
untuk melakukan transaksi atau membuat keputusan. Dan konsep BI ini
menurut saya seolah merupakan bagian hilir dari itu semua. Sekarang
saya sedang tertarik mencoba BI Open Source - kalau ada rekan-rekan
yang tertarik, mari kita sama-sama mencoba, hasilnya bisa disebarkan
lewat Pak Syarwani. Kita buat BI for everyone - free lagi, productnya
nggak kalah jauh sama vendor-vendor besar.

Istilah BI sendiri entah itu dari vendor atau dari dunia pendidikan
saya tidak terlalu peduli. Mengapa? Karena istilah tersebut bagi saya
cukup mudah dan merangkum semua jargon-jargon yang menurut saya malah
membingungkan: ada Knowledge and Data Engineering, Decision Support
System, Executive Information System, Performance Scorecard, ETL,
Data Warehousing, Data Mining, dsb.

Sebelas tahun yang lalu saya pertama kali menggunakan Business Object
untuk keperluan Reporting dari satu ERP - saya hanya kenal namanya
report writer, bukan BI - walaupun canggih juga bisa pivoting kesana-
kemari. Istilah kerennya Multidimensional Analysis. Waktu itu saya
nggak pernah tahu istilah BI. Kurang gaul kah?

Setelah jalan beberapa tahun istilah BI makin populer. Saya coba
melihat apa itu BI, pengamatan saya solusi BI secara mudahnya
memiliki building block sebagai berikut:

1. Data Structure - data structure BI biasanya menganut Star Schema.
Dimana satu object data (FACT) bisa dipandang dari berbagai sudut
pandang (DIMENSION). Mis; Transaksi PO dilihat dari dimensi Product,
Vendor, dan Customer. Betul kata Pak Irsal - pivot excel. Kalau
design data kita nggak bisa dibuat pivot excel dengan mudah berati
design Star Schema kita pasti salah. Data structure ini cara
penyimpanannya berkembang, tujuannya satu - supaya retrieve datanya
cepat - maka keluarlah metoda penyimpanan dengan menggunakan Cube
(kalau pakai RDBMS biasa yah semacam summary table. Methoda ini bisa
dikenal dengan OLAP - ada Relational OLAP (ROLAP), Multidimensional
OLAP (MOLAP) atau Hybrid OLAP (HOLAP). Anda bisa cari di internet

2. ETL - Extract Transfor Loading. Karena BI bisanya memadukan
informasi dari berbagai sumber informasi maka dibutuhkan satu engine
yang dapat menarik data dari sumbernya, merubah formatnya supaya
seragam (data tanggal harus sama, kode Customer harus sama dsb), lalu
dimasukkan ke dalam struktur data yang kita siapkan tadi sudah. Dari
jaman jebot kita sudah bisa melakukan ini. Misalnya: di Oracle pakai
aja PL/SQL, buat procedure lalu kita schedulekan jobnya. Iya kalau
sumber datanya satu, kalau banyak? Gimana dengan lintas platform -
data source di Unix data warehouse di Windows? - gimana kita ngontrol
sequence-nya, gimana kita tahu ada sequence yang fail, gimana kita
bisa restart dengan mudah? Biasanya solusi BI meng-cover ETL tool
ini. Ada juga beberapa vendor yang fokus produce ETL tool seperti
sunopsis misalnya.

3. Reporting Tool - Setelah data masuk paling gampang kita keluarkan
menjadi report. Entah itu report tabular atau charting. Yang ini juga
dari jaman jebot juga udah pada pakai. Ujung-ujungnya report.

4. Multidimensional Analysis (OLAP Analysis) - Memanfaatkan design
data yang ada di nomor 1 tadi dengan memberikan kemampuan kepada user
untuk melakukan analysis multidmensi. Seperti melakukan pivot table
dan pivot charting di excel mungkin penjelasan secara mudahnya.
Diatambah dengan statistik dan kemampuan untuk melakukan forecast
dengan memasukkan parameter-parameter tertentu vendor biasa
menyebutnya dengan data mining.

5. Drill Down dan Drill Through. Point 3 dan 4 tadi harus
memungkinkan user untuk melakukan drill down - membreakdown informasi
pada level yang lebih detail - misalnya dari summary pembelian
customer sampai product yang dibelingnya. Dan drill through - dari
data product tadi kita bisa click untuk mendapatkan trend dari setiap

6. Dashboarding - Menampilkan informasi-informasi dalam bentuk
summary data. Biasanya populer dalam bentuk Chart yang dimana dengan
sekali melihat kita bisa tahu apa yang terjadi dengan business kita
dan bagaimana follow upnya.

7. Personalization - 3, 4, 5, 6 diatas akan percuma bila kita tidak
dapat melakukan personalisasi data. Kita akan kebanyakan informasi
yang mungkin tidak kita butuhkan. Kita seharusnya bisa memilih report
yang saya butuhkan a,b,c,d. Dashboard saya berisi informasi x,y,z.
Data-data yang tampil pada layar kita hanya data-data yang relevan
dengan pekerjaan dan tanggung jawab kita.

8. Alerting and Collaboration. Sistem BI kita hendaknya dapat
mengingatkan kita bila ada performance yang membutuhkan perhatian
kita. Kita dapat memasukkan action plan - menunjuk Person In Charge -
dan memonitor apakah action plan tersebut sudah terlaksana atau
belum. Hal tersebut dilakukan dengan memanfaatkan e-mail, mobile
devices, dsb.

Apa lagi ya?? - Hal diatas mungkin merupakan standard BI. Diatasnya
masih dapat kita tempatkan aplikasi-aplikasi untuk mengelola strategy
seperti Balanced Scorecard/Corporate Performance Management. Ada yang
membuat productnya tersambung dengan BI seperti SAP SEM (Strategic
Enterprise Management), Oracle Balance Scorecard. Atau yang specific
dibuat untuk kebutuhan tsb seperti QPR dan PBView/Performance View.
Rekan-rekan ada yang tahu versi Open Source dari ini? Ini satu-
satunya part di Opensource BI yang saya belum dapatkan.

Menurut saya bila item-item diatas sudah terimplementasi baru kita
bilang saya sudah mengimplementasikan BI. Saya pernah melihat
beberapa company yang bilang sudah implementasi BI - yang ada hanya
OLAP Analysis Tool atau Reporting Tool saja. Ada juga vendor yang
bilang software saya sudah ada BI-nya, yang isinya cuma Report dan
Charting tool saja.

BI bagi saya sangat menarik karena menggabungkan pemahaman business
dengan database management. Di depan masih ada penggabungan BI dengan
Artificial Intelligent, Fuzzy Logic, Neural Network, dsb. Resultnya
bisa seperti Plant Intelligence System.

Satu yang masih harus saya jelaskan/diskusikan - mungkin. Saya masih
beranggapan bahwa implementasi BI ini tidak harus menunggu ERP
perfect. Saya akan coba tuliskan business case kecil, nanti kalau ada
waktu untuk hal ini. Mungkin di Industri saya yang Non Manufacturing,
dimana Value Chain-nya sangat sedikit terkait dengan ERP, hal diatas

Pada Oil & Gas, Mining, dan Utilities ERP biasanya tidak mengcover
proses planning dan production. ERP hanya mengcover support
activities seperti Maintenance, Sparepart Inventory/Procurement, HR
dan Finance. Value Chain yang menjadi jantung produksi biasanya
dikelola dengan software-software yang spesifik untuk kebutuhan
planning dan production. BI akan mengambil data-data dari software-
software ini. Dalam banyak kasus biasanya terjadi dikotomi disini
Software-software plant dikelola oleh Plant Operation sedang kan
software business dikelola oleh MIS. Padahal informasi-nya bila
digabungkan akan menjadi sangat berguna.

Anyway - jargon ERP bahwa semua harus terintegrasi dalam satu
software package dalam beberapa tahun ke depan juga mungkin tidak
relevan lagi. Konsep Service Oriented Architecture (SOA)/Enterprise
Application Integration akan mempermudah kita menggabungkan informasi
dari berbagai software - semua akan menganut Open Architecture.
Setiap software akan menyediakan service dimana menurut kita software
tersebut terbaik dalam penyediaan service tersebut. Bisa saja terjadi
konfigurasi Maintenance pakai Maximo, FI/CO pakai SAP, purchasing
pakai Commerce One (?? Lupa namanya), CRM pakai Siebel, BI pakai
Business Objects - di dalam satu perusahaan. Pokoknya Campursari-lah

Kalau sekarang kelihatannya makin susah tapi kalau melihat
Netweaver, Oracle Fusion, dan engine-engine integrasi seperti MS
Biztalk dan Web Method hal tersebut tidak akan jauh lagi.

Sorry kepanjangan - masih banyak lagi sebenarnya topik-topik BI yang
menarik untuk dijadikan bahan diskusi.

Helly Purwanto

dicomot dari : milis komputer-teknologi@yahoogroups.com

Pengembangan Sistem Berbasis Komponen

Salah satu hal yang menjadi tanggung jawab seorang software-arsitek adalah ketika merencanakan arsitektur software yang akan dikonstruksi. Dalam perencanaan pengembangan sistem (ini beda dengan perencanaan arsitektur) dan analisis requirements, SA udah banyak mengakuisisi banyak fakta yang bisa dijadikan bahan utk merancang arsitektur. Selayaknya arsitek bangunan yang survey lahan, lokasi, tanah, dan permintaan - seorang software arsitek juga mempelajari semua kondisi riil di lapangan, keperluan-keperluan nya, de-el-el - lalu mulailah dia merencanakan arsitektur software.

Nah, tantangan yang pertama SA hadapi dalam perencanaan arsitekturnya umumnya gini : gimana memilah-milah mana requirements yang merupakan KEBUTUHAN user dan mana yang *sebenarnya* hanya KEINGINAN user... - kadang klo kita nanya2 ke (calon) user tentang aplikasi *yang akan* dikembangkan ini kebutuhan dasarnya apa, yang dijawab sama dia justru *keinginan-keinginannya*. Dan kadang, pas sesi interview, saking semangatnya si (calon) user tersebut ceritain *imajinasinya*, ngga 100% kebutuhan dia akan sistem tersampaikan dari dia...

Kebutuhan dan keinginan itulah yang nantinya akan mempengaruhi kerangka perencanaan arsitektur sistem. Jika semua keinginan user *akhirnya* di-implementasikan semua, ada kemungkinan fungsionalitas sistem tidak akan optimal, walo bukan berarti tidak mungkin optimal. Bisa saja sih optimal...

Tapi, sebaiknya kita memperhatikan konsepsi-konsepsi dasar orientasi pengembangan aplikasi perangkat lunak (software), yaitu aplikasi sistem yang akan dibuat sebaiknya FOKUS ke fungsi utamanya. Sekarang coba liat gini : kenapa aplikasi MS Word ngga bisa nyetel musik? Tanya kenapa? Karena fungsi MS Word emang difokuskan untuk text editor...

Sama saja dengan aplikasi yang akan dikembangkan... Misal, pengembangan sistem informasi perpustakaan (...contoh...), ada fasilitas pendaftaran anggota plus cetak kartu. Aplikasi menyediakan kemampuan utk menyimpan foto anggota perpus... Trus pas implementasi, salah satu petugas perpus (end-user nih) request gini : "Mas, ngga bisa kah dibuat supaya habis njepret muka anggota baru lewat camdig, tu foto langsung masuk ke form pendaftaran jd ngga perlu lagi nge-browse-nge-browse gambar, etc-etc..."

Kadang mereka (end-user) suka mendramatisir arti kata otomatisasi. Mungkin (bisa jadi) ini dikarenakan staf marketing kita pas presentasi dan penawaran (pra-produksi) yang mengobral kata-kata otomatisasi itu. "Oh pak, ntar laporannya secara otomatis akan dibuatkan oleh aplikasi." ato "O nanti bapak ngga perlu lagi nyatet2 judul buku yg dipinjem etc-etc, itu secara OTOMATIS udah dicarikan sama program aplikasi pak..." ato "penghitungan denda juga ngga perlu repot2 lagi pak, udah otomatis ditangani ama aplikasi"... - dan akhirnya, tertanamlah di benak user bahwa *sakti* banget aplikasi yang mo dibeli kantor ku nieh... apa-apa os-tos-mas-tis brooo....

Nah, ketika imple, yang kena batunya kita selaku developer aplikasi. Pas bayangan tentang otomatisasi itu *dipertanyakan* sama user, koq step-by-step nya banyak yaa, musti buka ACDSee utk acquire dari camdig, trus di cropping biar pas ukurannya pake ACDSee Photo Editor, trus di save as, baru dari aplikasi di browse foto yang udah dicropping itu n baru bisa masuk deh ke database... - ngga salah user mempertanyakan *dimana letak* otomatisasinya itu...

Oke, cukup sampe di sini kita ngerasanin petugas perpus itu... dia ngga dosa apa2 ^_^ Sekarang kita kembali ke perspektif Software-Arsitek.

Seandainya mau berakit-rakit ke hulu (minus bersenang-senang selalu), membuat SEMUA keinginan user itu bukanlah hal yang tidak mungkin. Bisa koq! Kalopun belum nemu, bisa dicari koq... Mau acquire langsung dr camdig, bisa. Mo langsung cropping setelah acquire, bisa! Tapi, kalo programmer-programmer (baca : tukang bangunannya sang software-arsitek) itu disuruh mbikin fasilitas itu, kapan mengkonstruksi aspek-aspek fungsional dari aplikasinya?

Makanya itu, software arsitek yang baik dan budiman seharusnya :
  1. mempunyai/membentuk satu tim sendiri yang khusus bertindak sebagai Riset & Development. kerjaannya, suruh tim itu utk bikin gadget (istilah dari google utk menyebut fasilitas-fasilitas kecil yang bisa di-embedd seketika ke aplikasi). fokusnya bukan ke fungsional,tapi ke arah mendukung operasional.
  2. berhati-hati dalam mengabulkan permintaan (calon) user dalam perancangan arsitekturnya... kenali kebutuhannya, identifikasi keinginannya. Trus susun prioritas, ngga semua yang kita inginkan harus kita dapatkan, bukan?
  3. merencanakan arsitektur aplikasi yang akan didesain dengan perspektif pengembangan berbasis komponen... Maksutnya, pisah-pisahkanlah aspek2 fungsional dari keseluruhan sistem, dan kembangkanlah masing-masing secara independen namun tetap mengacu pada grand-design yang udah direncanakan... hal ini suatu saat akan membantu dalam fase konstruksi. Contohnya gini deh (ngga sreg rasanya klo ngga ngasih contoh) : kita ambil kasus sistem informasi perpustakaan lagi (lagi-lagi perpus...) hehehe... - kalo pengembangan udah dipartisi berbasis komponen, ada yang ndevelop aspek registrasi anggota perpus, ada yang ndevelop aspek manajemen buku, ada yang ndevelop transaksi peminjaman/pengembalian. Anggaplah cuman itu! Trus, kalo udah dipisah-pisahin gitu, misal ada kesalahan (error/bug/ato apa lah istilahnya) di aspek transaksi, yaa perbaikilah transaksi nya doank. Itu fungsi standar dari pengembangan berbasis komponen. Standar banget malahan. Utk mempermudah maintenance. Mempermudah refactoring... Standar. Trus yang lainnya apa? MISAL, suatu saat tim developer kita dihadapkan kasus (proyek) harus mbikin aplikasi klinik (misalnya), kita bisa *comot* kan komponen "registrasi anggota perpus" itu utk di-embedd dalam sistem informasi klinik (hehehe..., skrg udah bukan perpus lagi). tinggal sesuaikan dikit atributnya, yang dari anggota perpus menjadi pasien... konsepnya sama! Bahkan mungkin form nya juga sama! Dan ngga cuman itu aja, komponen2 yang *tadi* udah dirancang secara independen itu terus dipelihara sama kita, di-enhance dikit demi dikit, disempurnain, de-el-el... yang suatu saat komponen itu bener2 sampe ke state *MATANG* dan bisa dijadikan template untuk membangun fungsionalitas aplikasi yang serupa... Template itu bisa dijadikan investasi di hari tua, mungkin 5 tahun ke depan, ketika perusahaan software ini udah kaya template, utk bikin aplikasi2 tertentu tinggal main copy-paste, comot-sana-comot-sini.... BERMANFAAT BANGET, KAN? kalo udah main comot-comot, kita bisa menggeser fokus untuk menjawab aspek-aspek pendukung operasional yang sebelumnya kita anggap itu keinginan user. Hasilnya? kita kerja enak, ringan. User juga puas...
Tapi untuk mengimplementasikan itu ngga semudah seperti menuliskannya di blog ini... Kadang software developer juga selalu dikejar2 pemenuhan requirement fungsional, karena harè-gènè mana ada proses bisnis yang simpel... Aspek transaksional makin padat, pihak manajerial juga makin gencar meminta tools yang bisa membantu mereka mengambil keputusan, pihak stakeholder juga makin sering menuntut kebutuhan informasi yang cepet, akurat, dan reliabel. Pengembangan sistem berbasis komponen itu merupakan salah satu trik kita untuk menjawab semua keperluan-keperluan itu... - karena yang nuntut cepet bukan cuman END USER, tapi rentetan kerjaan laen, proyek2 laen, juga menuntut kita selaku software developer harus bisa bekerja CEPAT.

Kenapa ya adegan slow motion cuman ada di tivi?