Belajar Instan Component Based Software Engineering


Haihai! Kita berjumpa lagi di artikel serius

Component Based Software Engineering (CBSE) adalah konsep pengembangan perangkat lunak berbasis komponen. Konsep ini mencoba hadir untuk memperbaiki kekurangan atau kegagalan OOSE yang pernah saya bahas di sini, di sini, dan di sini dengan tujuan meningkatkan reusability (yang efektif tentunya). Pengembangan dengan konsep ini menganut prinsip sistem sebagai hasil perakitan komponen-komponen, komponen sebagai entitas-entitas resusable, dan upgrading sistem dengan memodifikasi atau mengganti komponennya.

Oke, dari tadi kita ngomongin komponen, emang komponen itu sendiri apa sih? Setiap pakar punya definisi beda-beda tentang komponen, tapi kira-kira bisa diartikan sebagai berikut:

  • Binary unit
    Contoh: package di Linux (deb, rpm, sh,dll.), Win32 application di Windows (exe), Java executable (jar, war, dll.), dan sebagainya
  • Modul atau script
    Berisi sekumpulan operasi dan data yang saling terkait, tiap bagiannya berhubungan dengan proses sistem tertentu. Modul yang dimaksud dalam hal ini agak berbeda dengan kelas object, dapat dikatakan sebagai servis yang dapat berdiri sendiri (mungkin kalo di konsep MVC kaya controller dan model-nya gitu ya), makanya disebut perbaikan dari OOSE karena toh memang memuat fungsionalitas yang dibutuhkan oleh berbagai sistem atau proses sistem.

Apa pun penafsiran Anda, pokoknya disebutnya komponen. Lebih tepatnya komponen yang bersifat independen dan bisa digunakan tanpa modifikasi. Kalau pun ada modifikasi, pasti hanya sediiikit sekali. Namanya juga CBSE…

Dalam CBSE, yang harus diperhatikan adalah di awal kita harus merancang bagaimana agar komponen-komponen yang akan dibangun nantinya dapat bersifat independen. Untuk itu, perlu dibuat standar dan dipikirkan middleware-nya agar dapat digunakan di berbagai lingkungan berbeda. Intinya, niatnya harus lurus dulu bahwa pengembangan yang dilakukan bukan sekedar menghasilkan perangkat lunak, melainkan juga untuk menciptakan komponen reusable.

Komponen mempunyai teman akrab yang akan sering disebut-sebut dalam CBSE, yaitu interface. Interface ini didefinisikan sebagai kumpulan operasi tanpa implementasi. Komponenlah yang akan memuat implementasi dari operasi-operasi tersebut. Kok mirip sama konsep interface di Java? Betul 😀
Jenisnya ada dua, provides interface berisi servis yang disediakan komponen untuk komponen lain dan requires interface berisi servis yang dibutuhkan komponen agar bisa ‘hidup’ normal. Ilustrasi diagaram di UML-nya seperti ini:

Provides interfaces (pi): lolipop, requires interfaces (ri): setengah lingkaran, komponen: kotak

Selain komponen dan interface, dalam CBSE juga dikenal istilah berikut:

  • Port, yaitu penghubung komponen dengan lingkungannya
  • Connector, yaitu penghubung antarkomponen yang dilambangkan dengan stereotipe <<use>>Jenisnya ada dua, yaitu assembly yang menghubungkan komponen penyedia servis ke komponen lain (seperti pada gambar) dan delegation yang menghubungkan kontrak eksternal sebuah komponen ke realisasi internal, serta hanya boleh digunakan sesama interface atau port sejenis.

Standar komponen disebut juga model, yaitu standar implementasi, penyebaran, dan dokumentasi komponen. Contoh: EJB, CORBA, dan COM. Elemennya ditunjukkan gambar berikut.

Implementasi standar menyediakan servis platform (semacam model komunikasi) dan horizontal (aplikasi independen, digunakan komponen lain).

Proses CBSE meliputi identifikasi kebutuhan, identifikasi calon komponen, modifikasi komponen sesuai kebutuhan jika diperlukan, desain arsitektur, identifikasi komponen lagi, dan akhirnya menggunakan komponen untuk membuat sistem. Seluruh proses terangkum dalam empat kegiatan utama, yaitu identifikasi, adaptasi, komposisi, dan evaluasi.

Identifikasi mencakup pencarian, seleksi, dan validasi komponen. Dalam kegiatan ini tantangan yang dihadapi adalah soal trust (mempercayai supplier komponen), requirement (kebutuhan tiap kelompok komponen beda-beda), dan validation (menjamin bahwa fungsionalitas komponen sesuai yang diinginkan).

Adaptasi diilustrasikan seperti membuat lem untuk komponen-komponen yang akan digabungkan. Lem ini berupa modul yang disebut adaptor. Pembuatannya dapat dilakukan paralel saat komposisi alias penggabungan antarkomponen atau komponen dengan infrastrukturnya. Jenis komposisi sendiri ada tiga sebagai berikut:

  • Sequential
    Pembuatan komponen dan interface-nya dikerjakan sepaket-sepaket secara bertahap
  • Hierarchial
    Interface yang saling berhubungan dibuat berpasangan (provide dan require)
  • Additive
    Komponen-komponen yang saling berhubungan dibuat satu per satu beserta interface-nya

Masalah yang mungkin akan dihadapi saat komposisi adalah ketidakcocokan parameter, ketidakcocokan operasi, atau ketidaklengkapan operasi. Hal yang perlu diperhatikan dalam komposisi adalah kita tidak sekedar mengintegrasikan sistem, tapi memprediksikan perilaku sistem apa yang akan muncul ketika komponen itu digunakan pada rakitan lain, termasuk jika skalanya lebih besar.

Evaluasi komponen sama halnya dengan pengujian perangkat lunak. Jenisnya ada dua macam, yakni black box dan white box. Black box hanya menguji keberjalanan sistem tanpa melihat alur eksekusi kode program sehingga kadang tidak bisa mendeteksi kesalahan secara efektif dan mungkin hasilnya kurang akurat. White box selain menguji keberjalanan sistem juga melihat alur eksekusi kode sehingga hasilnya bisa lebih akurat, tetapi tidak dapat dilakukan jika kode tidak tersedia atau lingkungan implementasi tidak cocok.

Sekian belajar instan kali ini, sampai ketemu di topik yang lain 😀

(bersambung)

Leave a comment

7 Comments

  1. TA ku oh TA ku

    Reply
  2. wow, ega!
    ngebantu banget buat belajar mp3l kebut semalam gw, hahahahahaha..

    Reply
  3. thanks for posting, I really enjoy it, I can learn a lot from this.

    Reply
  4. Ternyata RPL itu menrarik sekali, Terimakasih ilmunyaa.. My Blog

    Reply
    • Bangeeet.. ini dulu kuliah favorit saya walaupun tugasnya paling banyak 😀 Sama2, makasih udah mampir!

      Reply

Wait! Don't forget to leave a reply here.. :D