Software Reuse Dan Component Based Software Engineering

14
1. SOFTWARE REUSE Proses perancangan pada sebagian besar disiplin ilmu didasarkan pada pemakaian ulang komponen. Insinyur mesin dan insinyur elektro tidak menspesifikasikan suatu desain di mana setiap komponen harus khusus diproduksi. Mereka mendasarkan desain pada komponen yang telah dicoba dan diuji pada system lain. Komponen- komponen ini tidak hanya berupa komponen kecil seperti roda atau katup tetapi mencakup subsistem utama seperti mesin, kondensor, atau turbin. Sekarang telah diterima secara luas bahwa kita membutuhkan pendekatan yang dapat dibandingkan terhadap pengembangan perangkat lunak. Perangkat lunak harus dianggap sebagai suatu asset dan pemakaian ulang asset ini sangat penting untuk menaikkan pengembalian dari biaya pengembangannya. Permintaan untuk produksi perangkat lunak dan biaya pemeliharaan yang rendah, penyerahan system yang cepat dan kualitas yang lebih baik, hanya dapat dipenuhi oleh pemakaian ulang perangkat lunak yang luas dan sistematis. Pemakaian ulang perangkat lunak harus diperhitungkan pada saat perancangan perangkat lunak atau proses rekayasa persyaratan. Pemakaian ulang yang oportunistik mungkin dilakukan pada saat pemrograman, ketika ditemukan komponen yang memenuhi suatu persyaratan. Namun demikian, pemakaian ulang yang sistematik menuntut proses perancangan yang mempertimbangkan bagaimana desain yang sudah ada dapat dipakai ulang, dan secara eksplisit

description

sr and cbse

Transcript of Software Reuse Dan Component Based Software Engineering

Page 1: Software Reuse Dan Component Based Software Engineering

1. SOFTWARE REUSE

Proses perancangan pada sebagian besar disiplin ilmu didasarkan pada pemakaian ulang

komponen. Insinyur mesin dan insinyur elektro tidak menspesifikasikan suatu desain di mana

setiap komponen harus khusus diproduksi. Mereka mendasarkan desain pada komponen yang

telah dicoba dan diuji pada system lain. Komponen-komponen ini tidak hanya berupa komponen

kecil seperti roda atau katup tetapi mencakup subsistem utama seperti mesin, kondensor, atau

turbin.

Sekarang telah diterima secara luas bahwa kita membutuhkan pendekatan yang dapat

dibandingkan terhadap pengembangan perangkat lunak. Perangkat lunak harus dianggap sebagai

suatu asset dan pemakaian ulang asset ini sangat penting untuk menaikkan pengembalian dari

biaya pengembangannya. Permintaan untuk produksi perangkat lunak dan biaya pemeliharaan

yang rendah, penyerahan system yang cepat dan kualitas yang lebih baik, hanya dapat dipenuhi

oleh pemakaian ulang perangkat lunak yang luas dan sistematis.

Pemakaian ulang perangkat lunak harus diperhitungkan pada saat perancangan perangkat lunak

atau proses rekayasa persyaratan. Pemakaian ulang yang oportunistik mungkin dilakukan pada

saat pemrograman, ketika ditemukan komponen yang memenuhi suatu persyaratan. Namun

demikian, pemakaian ulang yang sistematik menuntut proses perancangan yang

mempertimbangkan bagaimana desain yang sudah ada dapat dipakai ulang, dan secara eksplisit

membuat desain berdasarkan komponen perangkat lunak yang sudah ada.

Rekayasa perangkat lunak yang berbasis pemakaian ulang merupakan pendekatan terhadap

pengembangan yang mencoba memaksimalkan pemakaian ulang perangkat lunak yang ada. Unit

perangkat lunak yang dipakai ulang bisa berukuran sangat berbeda. Sebagai contoh :

1. Pemakaian ulang system aplikasi.

Seluruh system aplikasi dapat dipakai ulang dengan menggabungkannya tanpa perubahan

dengan system lain ( pemakaian ulang produk COTS ) atau dengan mengembangkan

kerabat aplikasi yang dapat berjalan pada platform yang berbeda atau dapat dikhususkan

untuk keperluan pelanggan tertentu.

2. Pemakaian ulang komponen.

Page 2: Software Reuse Dan Component Based Software Engineering

Komponen dari suatu aplikasi yang ukurannya berkisar dari subsistem sampai satu objek

tunggal dapat dipakai ulang. Sebagai contoh, system pengenal pola yang dikembangkan

sebagai suatu bagian system pengolahan teks dapai dipakai ulang pada system

manajemen basis data.

3. Pemakaian ulang fungsi.

Komponen ulang yang mengimplementasi satu fungsi, seperti fungsi matematika dapat

dipakai ulang. Bentuk pemakaian ulang ini berdasarkan pada library standar atau yang

umum dipakai selama ini.

Pemakaian ulang system aplikasi telah dipraktekkan secara luas selama beberapa tahun pada saat

perusahaan-perusahaan perangkat lunak mengimplementasikan system mereka pada berbagai

mesin dan menyesuaikannya untuk berbagai lingkungan. Pemakaian ulang fungsi juga

dimapankan melalui library standar dari fungsi-fungsi yang dapat dipakai ulang sebagai library

grafik dan matematika. Namun demikian, walaupun ada minat terhadap pemakaian ulang

komponen sejak awal tahun 1980-an, baru beberapa tahun belakangan ini cara ini diterima

sebagai pendekatan yang praktis terhadap pengembangan system perangkat lunak.

Keuntungan yang jelas dari pemakaian ulang perangkat lunak adalah diperkecilnya biaya

pengembangan secara keseluruhan. Komponen-komponen perangkat lunak yang harus

dispesifikasi, dirancang, diimplementasi, dan divalidasi menjadi berkurang. Namun demikian,

reduksi biaya hanya merupakan salah satu keuntungan potensial dari pemakaian ulang. Ada

sejumlah keuntungan lain dari pemakaian ulang asset perangkat lunak, sebagaimana ditunjukkan

pada table di bawah ini :

Keuntungan Keterangan

Keandalan bertambah Komponen yang dipakai ulang, yang telah

digunakan pada system yang telah berjalan

seharusnya lebih dapat diandalkan daripada

komponen baru. Komponen ini telah dicoba

dan diuji pada berbagai lingkungan. Kesalahan

perancangan dan implementasi ditemukan dan

dihilangkan pada pemakaian awal komponen

tersebut sehingga memperkecil jumlah

Page 3: Software Reuse Dan Component Based Software Engineering

kegagalan pada pemakaian ulang.

Resiko proses diperkecil Jika suatu komponen telah ada, ketidakpastian

biaya pemakaian ulang menjadi lebih kecil

daripada biaya pengembangan. Ini merupakan

factor penting untuk manajemen proyek karena

memperkecil ketidakpastian dalam estimasi

biaya proyek. Hal ini terutama berlaku ketika

komponen-komponen yang relative besar

seperti subsistem dipakai ulang.

Pemakaian spesialis yang efektif Spesialis aplikasi tidak melakukan pekerjaan

yang sama pada berbagai proyek, tapi mereka

dapat mengembangkan komponen-komponen

yang dapat dipakai ulang yang

mengengkapsulasi pengetahuan mereka.

Pemenuhan standar Beberpa standar seperti standar interface dapat

diimplementasi sebagai satu set komponen

standar. Sebagai contoh, komponen yang dapat

dipakai ulang dapat dikembangkan untuk

implemantasi menu sebagai interface user.

Semua aplikasi menyediakan format menu

yang sama kepada user. Pemakaian interface

user standar memperbaiki keandalan karena

kemungkinan user melakukan kesalahan ketika

dihadapkan dengan interface yang sudah

mereka kenal menjadi lebih kecil.

Pengembangan yang dipercepat Membawa suatu system ke pasar secepat

mungkin seringkali lebih penting dari biaya

pengembangan secara keselurahan. Pemakaian

ulang komponen mempercepat produksi karena

waktu pengembangan dan waktu validasi akan

dipersingkat.

Page 4: Software Reuse Dan Component Based Software Engineering

Ada 3 persyaratan kritis perancangan dan pengembangan perangkat lunak dengan pemakaian

ulang :

1. Komponen yang dapat dipakai ulang dan sesuai harus mungkin ditemukan. Organisasi

membutuhkan dasar berupa komponen yang dapat dipakai ulang yang terdapat pada

katalog dan dokumen yang disusun dengan baik. Jika memang ada, komponen-komponen

pada katalog ini harus mudah ditemukan.

2. Pemakaian ulang komponen harus pasti bahwa komponen-komponen tersebut akan

bekerja sebagaimana dispesifikasi dan akan handal. Idealnya, semua komponen pada

katalog organisasi harus disertifikasi untuk meyakinkan bahwa komponen-komponen

tersebut telah memenuhi standar kualitas tertentu.

3. Komponen tersebut harus memiliki dokumentasi yang berhubungan untuk membantu

pemakai ulang memahaminya dan mengadaptasinya ke aplikasi yang baru. Dokumentasi

harus mencakup informasi mengenai di mana komponen-komponen ini telah dipakai

ulang dan jika ada, masalah-masalah pemakaian ulang yang telah ditemukan.

Kebehasilan pemakaian Visula Basic dan Visual C++ dengan komponen-komponen dan Java

dengan JavaBeans telah menunjukkan nilai pemakaian ulang. Rekayasa perangkat lunak berbasis

komponen telah diterima luas sebagai pendekatan yang sangat efektif teerhadap pengembangan

perangkat lunak.

Namun demikian, tidak sedikit masalah yang berhubungan dengan pemakaian ulang. Untuk lebih

jelasnya dapat dilihat pada table di bawah ini :

Masalah Keterangan

Biaya pemeliharaan yang membengkak Jika sorce-code komponen tidak tersedia maka

biaya pemeliharaan dapat bertambah besar

karena elemen system yang diapaki ulang bisa

makin tidak kompatibel dengan perubahan

system.

Tidak adanya dukungan alat bantu Toolset CASE tidak mendukung

pengembangan dengan pemakaian ulang.

Page 5: Software Reuse Dan Component Based Software Engineering

Integrasi alat bantu ini dengan system library

komponen mungkin sulit atau bahkan tidak

mungkin. Proses perangkat lunak yang

diasumsikan ini tidak memperhitungkan

pemakaian ulang.

Sindrom tidak dibuat di sini Beberapa perekayasa perangkat lunak kadang-

kadang lebih suka menulis kembali komponen

karena mereka percaya bahwa mereka dapat

membuat suatu komponen yang dipakai ulang.

Hal ini sebagian disebabkan oleh fakta bahwa

menulis perangkat lunak yang orisinil tampak

lebih menantang ketimbang memakai ulang

perangkat lunak orang lain.

Mempertahankan library komponen Memenuhi library komponen dan menjamin

bahwa pengembang perangkat lunak dapat

memakai library ini mungkin akan mahal.

Teknik terbaru untuk klasifikasi katalog dan

mengambil komponen perangkat lunak belum

matang.

Menemukan dan mengadaptasi komponen

yang dapat dipakai ulang

Komponen perangkat lunak harus ditemukan

pada suatu library, dipahami, dan kadangkala

diadaptasi untuk bekerja pada lingkungan yang

baru. Perekayasa harus cukup yakin dapat

menemukan komponen di library sebelum

secara rutin memasukkan pencarian komponen

sebagai bagian dari proses pengembangan

normal mereka.

2. COMPONENT BASED SOFTWARE ENGINEERING

Page 6: Software Reuse Dan Component Based Software Engineering

Component Based Software Engineering atau pengembangan berbasis komponen muncul pada

akhir tahun 1990-an sebagai pendekatan berbasis pemakaian ulang terhadap pengembangan

system perangkat lunak. Motivasinya adalah kefrustrasian bahwa pengembangan berorientasi

objek tidak berkembang menjadi pemakaian ulang yang ekstensif sebagaimana diperkirakan

pada awalnya. Kelas objek tunggal terlalu rinci dan spesifik dan harus dibatasi dengan aplikasi

pada waktu kompilasi atau ketika system di-link. Dibutuhkan pengetahuan yang detil mengenai

kelas ini untuk dapat menggunakannya, dan ini biasanya berarti bahwa source code harus

tersedia. Ini menimbulkan masalah yang sulit untuk memasarkan komponen, walaupun pada

awalnya diramalkan dengan optimis, pasar yang signifikan untuk objek individu tidak pernah

berkembang.

Komponen lebih abstrak dari kelas objek dan dapat dianggap sebagai penyedia layanan yang

berdiri sendiri. Ketika system membutuhkan layanan, system memanggil komponen untuk

menyediakan layanan tersebut tanpa peduli di mana komponen tersebut berjalan atau bahasa

pemrograman yang dipakai untuk mengembangkannya. Sebagai contoh, suatu komponen yang

sangat sederhana bisa berupa satu fungsi matematika untuk menghitung akar kuadrat suatu

bilangan. Ketika program membutuhkan perhitungan akar kuadrat, program memanggil

komponen tersebut untuk menyediakannya. Di pihak lain, system yang perlu melakukan

perhitungan matematika dapat memanggil komponen spreadsheet yang menyediakan layanan

kalkulasi.

Penggambaran suatu komponen sebagai penyedia layanan menekankan dua karakteristik kritis

dari komponen yang dapat dipakai ulang :

1. Komponen merupakan entitas yang dapat dieksekusi dan independen. Source code tidak

tersedia sehingga komponen tidak dikompilasi dengan komponen system lain.

2. Komponen mengeluarkan interface mereka dan semua interaksi melalui interface

tersebut. Interface komponen dinyatakan dalam operasi yang diparameterisasi dan status

internalnya tidak pernah diperlihatkan.

Komponen didefinisikan oleh interfacenya dan dalam kasus yang paling diumum dianggap

memiliki dua interface yang berhubungan yakni :

Page 7: Software Reuse Dan Component Based Software Engineering

1. Interface provides yaitu interface yang mendefinisikan layanan yang disediakan oleh

komponen tersebut.

2. Interface requires yaitu interface yang menspesifikasi layanan apa yang harus tersedia

dari system yang memakai komponen itu. Jika ini tidak disediakan, maka komponen

tidak akan bekerja.

Komponen-komponen bisa diakses pada tingkat abstraksi yang berbeda-beda. Mayer (1999)

mengidentifikasi lima tingkat anstraksi :

1. Abstraksi fungsional : Komponen mengimplementasi satu fungsi, misalnya fungsi

matematika. Pada intinya, interface provides merupakan fungsi itu sendiri.

2. Pengelompokan kasula : Komponen merupakan sekumpulan entitas yang berhubungan

longgar (loosely related) yang mungkin berupa deklarasi data, fungsi, dan sebagainya.

Interface provides terdiri dari nama semua entitas pada pengelompokan tersebut.

3. Abstraksi data : Komponen merepresentasikan abstraksi data atau kelas perangkat lunak

bahasa berorientasi objek. Interface provides terdiri dari operasi untuk membuat,

memodifikasi, dan mengakses abstraksi data.

4. Abstraksi cluster : Komponen merupakan sekumpulan kelas yang berhubungan yang

bekerja sama. Kelas-kelas ini kadang-kadang dinamakan kerangka kerja. Interface

provides merupakan komposisi semua interface provides dari objek-objek yang

membangun kerangka kerja tersebut.

5. Abstraksi system : Komponen merupakan system yang sepenuhnya berdiri sendiri.

Pemakaian ulang abstraksi tingkat system kadangkala disebut pemakaian ulang produk

COTS. Interface provides adalah apa yang disebut API (Application Progamming

Interface) yang didefinisikan untuk memungkinkan program mengakses command dan

operasi system.

Pengembangan berorientasi komponen dapat diintegrasikan ke dalam proses pengembangan

system dengan menggunakan kegiatan pemakaian ulang yang spesifik sebagaimana ditunjukkan

pada gambar di bawah ini :

Rancang Arsitektur Sistem

Spesifikasi Komponen

Cari Komponen Reuse

Pakai Komponen yang ditemukan

Page 8: Software Reuse Dan Component Based Software Engineering

Gambar 1. Proses Pemakaian Ulang

Perancang system menyelesaikan perancangan tingkat tinggi dan spesifikasi komponen desain

tersebut. Spesifikasi ini digunakan untuk menemukan komponen yang akan dipakai ulang.

Spesifikasi ini mungkin dimasukkan pada tingkat arsitektural atau pada tingkat perancangan

yang lebih rinci.

Walaupun pendekatan ini dapat menghasilkan pemakaian ulang yang signifikan, cara ini sangat

kontras dengan pendekatan yang dipakai pada disiplin rekayasa lain, di mana kemampuan

pemakaian ulang mendorong proses perancangan. Alih-alih merancang kemudian mencari

komponen yang dapat dipakai ulang, para perekayasa lebih dahulu mencari komponen yang

dapat dipakai ulang. Mereka mendasarkan desain mereka pada komponen yang tersedia sperti

pada gambar di bawah ini :

Gambar 2. Penggambaran dengan pemakaian ulang

Pada pengembangan yang didorong oleh pemakaian ulang, persyaratan system dimodifikasi

menurut komponen pemakaian ulang (reusable) yang tersedia. Desain juga didasarkan atas

komponen-komponen yang tersedia itu. Tentu saja ini berarti bahwa mungkin saja harus terjadi

kompromi persyaratan. Desain mungkin kurang efisien dari desain khusus. Namun demikian,

biaya pengembangan yg lebih kecil, pengiriman system yang kebih cepat, dan keandalan system

yang bertambah seharusnya dapat mengkompensasi hal ini.

Proses implementasi system dengan menggunakan komponen biasanya merupakan proses

pembuatan prototype atau proses pengembangan incremental. Bahasa pemrograman standar

Perancangan Arsitektural

Persyaratan Sistem

Pencarian Komponen

Pencarian Komponen

Perancangan Sistem

Modifikasi Persyaratan

Page 9: Software Reuse Dan Component Based Software Engineering

seperti Java dapat digunakan dengan komponen pada library yang direferensi dari program.

Alternatifnya ( dan lebih umum ) digunakan bahasa scripting yang khusus dirancang untuk

integrasi komponen yang dapat dipakai ulang untuk mendukung pengembangan program yang

cepat.

Mungkin kesulitan utama dalam pengembangan berbasis komponen adalah masalah

pemeliharaan dan evolusinya. Biasanya source code komponen tidak tersedia dan dengan

berubahnya persyaratan aplikasi tidak mungkin bagi kita untuk mengubah komponen demi

merefleksikan persyaratan-persyaratan ini. Pilihan ini mengubah persyaratan pada tahap ini,

untuk menyesuaikan dengan komponen yang tersedia, biasanya tidak mungkin dilakukan karena

aplikasi telah dipakai. Dengan demikian, diperlukan pekerjaan tambahan untuk memakai ulang

komponen dan dengan berlalunya waktu hal ini mengakibatkan biaya pemeliharaan yang

bertambah. Namun demikian, dengan kita mengetahui bahwa pengembangan berbasis komponen

memungkinkan pengiriman perangkat lunak yang lebih cepat, organisasi mungkin berkeinginan

untuk menerima biaya dengan jangka yang lebih panjang ini.