materi pertemuan 1

Download Report

Transcript materi pertemuan 1

component oriented programming
Materi 1 - Silabus, Review
OOP dan Pengantar COP
Literatur
• Building reliable component-based software system by Ivica Crnkovic,
Magnus Larsson, Boston, Artech House, 2002
• Head First Design Pattern by Eric Freeman dan Elisabeth Freeman, O’Reilly,
2004
• Component Oriented Programming, by Andy Ju An Wang dan Kai Qian,
Willey, 2005 Wang dan Kai Qian, Willey, 2005
• Component-based development : principles and planning for business
system by katharine whitehead, boston, Mass London, Addison wesley,
2002
• Head First Enterprise Java Beans, O’Reilly
• Component Software, Beyond Object Oriented Programming, Clemens
Szyperski, Addison-Wesley Professional; 2 edition, 2002
• Design Patterns Java Companion by James W. Cooper, Addison-Wesley,
1998
Topik
•
•
•
•
•
•
•
•
Komponen
Perkembangan Paradigma Pemrograman
Interface
Contract (Kontrak)
Pattern (Pola)
Frameworks
Hubungan antara konsep
Kesimpulan
Topik
•
•
•
•
•
•
•
•
Komponen
Perkembangan Paradigma Pemrograman
Interface
Contract (Kontrak)
Pattern (Pola)
Frameworks
Hubungan antara konsep
Kesimpulan
Apa itu komponen?
• Kita dapat menemukan beberapa definisi dari Komponen
dibeberapa literatur tetapi bagaimanapun kita setuju bahwa
komponen adalah bagian dari software
• Definisi dapat dimulai dari bagaimana CBSE dipandang dari
sudut pandang yang berbeda seperti :
– Different phases (design, implementation and run-time
phases),
– Business aspects,
– Architectural issues.
Komponen: Szyperski
• Szyperski mendefinisikan secara tepat satu persatu dari
karakteristiknya sebagai berikut :
– Komponen adalah bagian dari komposisi dengan cara
kontrak perjanjian interface spesifik dan ketergantungan
dari konteksnya.
– Komponen dapat dibangun sendiri dan intinya digabungkan
dengan perangkat lain (third party).
Efek dari Definisi Szyperski
• Beberapa maksud dari definisi Szyperski menghasilkan :
– Untuk komponen yang akan dibangun sendiri, perbedaan
yang jelas dari lingkungan (environment ) dan komponen
yang lain sangat dibutuhkan.
– Komponen harus memiliki spesifikasi interface yang jelas.
– Implementasinya harus dienkapsulasi didalam komponen
dan tidak langsung dapat dicapati dari lingkungannya
(environment ).
Komponen : D'Souza dan Wills
• D'Souza dan Wills mendefinisikan komponen sebagai :
– Bagian dari software yang dapat digunakan ulang, dimana
dia dibangun dengan bebas, dan dapat bergabung dengan
komponen yang lain untuk menjadi bagian yang besar. Hal
tersebut mungkin akan diadaptasi tetapi tidak untuk diubah.
– Komponen dapat menjadi, sebagai contoh menjalankan
(compile) kode tanpa source codenya.
Component Oriented Programming (COP)
Jadi dapat digambarkan bahwa komponen adalah :
• Pemrograman Berorientasi Komponen
• Komponen sebagai sudut pandang utama
• Program tersusun dari komponen-komponen yang saling terhubung dalam
hubungan yang terdefinisi dengan baik, dapat digunakan ulang dan saling
independen satu sama lain
Kenapa COP Penting ?
Sistem Operasi
Lines of Code
Windows NT 4.0
11-12 Juta
Windows 2000
29+ Juta
Windows XP
40 Juta
Windows Server 2003
50 Juta
Windows 7
> 50 Juta
Kenapa COP Penting
Black Box
Grey Box
White Box
Kenapa COP Penting?
• Banyak cilent yang memesan suatu system informasi / aplikasi /
software untuk perusahaan mereka
• Client hanya terfokus pada fungsi suatu software
• Client tidak tahu dan tidak mau tahu bagaimana software
tersebut dibuat / dikembangkan
• Tingkat ekspektasi yang tinggi dari client seringkali berbanding
terbalik dengan alokasi waktu yg disediakan untuk
mengembangkan software tersebut
Kenapa COP Penting ?
• Perkembangan software yang semakin kompleks, butuh teknik untuk
mengatasi kompleksitas tersebut
• Menangani perubahan sesuai kebutuhan
• Penggunaan ulang untuk mengurangi waktu pengembangan
Komponen Itu Apa ?
•
•
•
•
Self contained
Self deployable
Well-defined functionality
Can be assembled through its interface
Komponen Itu Apa ?
Komponen Itu Apa ?
Komponen Itu Apa ?
Komponen Itu Apa ?
Network
Pidgin
XML
GTalk
IM
YM!
MSN
Contoh Komponen
•
•
•
•
•
•
•
JavaBeans dan EJB (Sun Microsystem)
COM, DCOM, ActiveX dan .Net Component (Microsoft)
Corba (OMG)
XPCOM (Mozilla)
VCL, CLX dan LCL (Borland)
UNO (OpenOffice.org)
Dan lainnya …
Topik
•
•
•
•
•
•
•
•
Komponen
Perkembangan Paradigma Pemrograman
Interface
Contract (Kontrak)
Pattern (Pola)
Frameworks
Hubungan antara konsep
Kesimpulan
Perkembangan Paradigma Pemrograman
• Structured Programming (SP)
– Pemecahan program menjadi fungsi-fungsi
• Object Oriented Programming (OOP)
– Object sebagai penyusun program
• Component Oriented Programming (COP)
– Program tersusun dari komponen
SP vs OOP vs COP
Divide and Conquer
- Memecah masalah besar menjadi masalahmasalah yang lebih kecil
- Untuk menangani kompleksitas
SP
OOP
COP
YES
YES
YES
SP vs OOP vs COP
Data + Function
- Menggabungkan data dan fungsi
SP
OOP
NO
YES
COP
YES
SP vs OOP vs COP
Encapsulation
- Pembungkusan, isolasi
- Mengurangi coupling (ketergantungan)
SP
OOP
COP
NO
YES
YES
SP vs OOP vs COP
Identity
- Setiap software entitas punya identity yang
unik
SP
OOP
COP
NO
YES
YES
SP vs OOP vs COP
Interface
- Ketergantungan spesifikasi
- Membagi spesifikasi komponen menjadi
interface
- Mencegah ketergantungan antar interface
SP
OOP
COP
NO
NO
YES
SP vs OOP vs COP
Deployment
- Unit abstrak dapat dideploy secara independen
SP
OOP
COP
NO
NO
YES
COP vs OOP
COP vs OOP
Objek dan Komponen
• Pfister dan Szyperski
– Melihat komponen sebagai bagaian dari objek, dimana
objek bekerjasama dengan yang lain dan saling terkait.
• D'Souza dan Wills
– Menyatakan bahwa jika class dimana dibungkus bersama
dengan interface yang telah didefinisikan dengan
kebutuhan dan implement nya sehingga class ini akan
menjadi komponen.
Topik
•
•
•
•
•
•
•
•
Komponen
Perkembangan Paradigma Pemrograman
Interface
Contract (Kontrak)
Pattern (Pola)
Frameworks
Hubungan antara konsep
Kesimpulan
Interface
• Sebuah interface dari komponen dapat didefinisikan sebagai
spesifikasi dari inti permasalahan, bukan menawarkan
implementasi dari setiap operasi tersebut.
• Pemisah tersebut membuatnya memungkin untuk :
– Mengganti bagian dari implementasi tanpa mengganti dari
interface;
– Menambahkan sebuah interface baru (dan implementation)
tanpa merubah implementation yang sudah ada,
Menggambarkan sebuah Interface
• Interface didefinisikan didalam standard component
technologies menggunakan teknik seperti Interface Definition
Language (IDL) sebagai berikut:
– Cukup menjelaskan functional properties saja.
– Tidak perlu menjelaskan extra-functional properties seperti
accuracy, availability, latency, security.
Export dan Import Interface
• Kita dapat membedakan dua jenis interface. Komponen dapat
export/import interface ke/dari environment dimana mungkin
mengandung (include) komponen lainnya.
– Sebuah interface yang diexport menjelaskan service apa
yang disediakan komponen untuk environment.
– Sebuah interface yang diimport menjelaskan service yang
dibutuhkan komponen untuk environment.
Topik
•
•
•
•
•
•
•
Komponen
Interface
Contract (Kontrak)
Pattern (Pola)
Frameworks
Hubungan antara konsep
Kesimpulan
Contract (Perjanjian, Kontrak)
• Lebih akuratnya spesifikasi dari behavior sebuah komponen
dapat dicapai dimulai dengan contract.
• Sebuah contract terdiri atas:
– The Invariant, global constraints dimana komponen akan
didirikan/ditegakkan/dimulai;
– The Pre-condition, constraints (pembatas) dimana
membutuhkan untuk dipenuhi oleh cilent;
– The Post-condition, constraints (pembatas) dimana
komponen mengijinkan untuk menentukan kembalian
(return).
Bagaimana Contract menentukan interaksi komponen
• Sebuah contract menspesifikasikan interaksi antara komponen
dalam hubungan sebagai berikut :
– Kumpulan dari bagian dalam komponen;
– Tugas dari setiap komponen meneruskan kewajiban yang
berdasar perjanjian, seperti tipe dan casual obligation;
– The invariant yang akan dikelolah oleh komponen;
– Spesifikasi dari method dimana menjelaskan (instantiate)
perjanjian tersebut.
Topik
•
•
•
•
•
•
•
•
Komponen
Perkembangan Paradigma Pemrograman
Interface
Contract (Kontrak)
Pattern (Pola)
Frameworks
Hubungan antara konsep
Kesimpulan
Pattern (Pola)
• Pattern mendefinisikan perulangan solusi untuk perulangan
masalah menghasilkan solusi masalah tidak jelas, tidak hanya
inti dasar atau strateginya.
– Solusi harus membuktikan untuk menyelesaikan masalah
daripada menjadi teori atau spekulasi.
– Pattern menjelaskan hubungan antara struktur paling dalam
dari sistem dan mekanismenya.
– Sebuah komponen sebagai entitas reusable, dapat menjadi
solusi dari sebuah desain pattern.
Tiga kategori dari Pattern
• Pattern dapat diklasifikasikan dalam tiga kategori utama:
– Architectural Patterns, menangkap semua struktur dan
organisasi dari sebuah sistem software.
– Design Patterns, menyaring struktur dan behavior dari sub
sistem sama seperti sebuah komponen dalam sistem
software, dan hubungan yang ada diantaranya.
– Idioms, adalah low-level pattern dimana bergantung pada
paradigma yang dipilih dan bahasa pemrograman yang
dipilih.
Topik
•
•
•
•
•
•
•
•
Komponen
Perkembangan Paradigma Pemrograman
Interface
Contract (Kontrak)
Pattern (Pola)
Frameworks
Hubungan antara konsep
Kesimpulan
Software Framework
• CBSE berarti kita akan membangun sebuah software dengan
“menaruh bagian bersamaan”. Framework menyediakan
konteks dimana bagian tersebut dapat digunakan.
• Sebuah framework mungkin akan dilihat sebagai:
– Sebuah desain reusable dari sistem,
– Sebuah kerangka (skeleton) dari aplikasi dimana dapat
diubah oleh pengembang aplikasi.
Bagian dari Framework
• Saat Framework dalam penjelasan umum sebuah situasi yang
khusus dan reusable dalam level model, bagian dari framework
dijelaskan sebagai “circuit-board” dengan lubang-lubang
kosong dimana komponen dapat dimasukkan untuk
membuatnya bekerja.
Coordination Services (transactions, persistence..)
Component
Framework
Komponen model
• Ada dua konsep komponen model dan komponen framework
yang biasanya tercampur.
• Sebuah komponen model menjelaskan bagian dari standar dan
aturan yang digunakan pengembang komponen dimana
sebagai komponen framework mendukung infrastruktur dari
komponen model.
Component
model
Topik
•
•
•
•
•
•
•
•
Komponen
Perkembangan Paradigma Pemrograman
Interface
Contract (Kontrak)
Pattern (Pola)
Frameworks
Hubungan antara konsep
Kesimpulan
Hubungan diantara konsep
Interface that satisfies contracts
Component-type
Specific interface
Independent
deployment
Coordination Services (transactions, persistence..)
Component
implementation
Component
model
Component
Framework
Framework dan Kontrak
 Framework dan komponen
– Dari definisi dari framework yang didefinisikan sebelumnya,
sebuah framework dapat dilihat sebagai circuit-board
(komponen framework) dimana menerapkan dengan
mengisi ditempat yang kosong
 Framework dan kontrak
– Sebuah framework fokus pada semua properti dari
komposisi sebuah komponen
– Kontrak memberikan spesifikasi untuk hubungan diantara
konponen konkrit.
Spesifikasi ini mungkin akan berbeda untuk komponen
dalam suatu komposisi
Framework dan Pattern
• Dalam hal ini sangat penting untuk menyadari bahwa desain
pattern dan framework adalah konsep yang berbeda dari sifat
yang berbeda
– Desain Pattern bersifat logik, mempresentasikan
pengetahuan dan pengalaman dalam software
– Framework bersifat fisik dan framework adalah software
executable yang digunakan didalam desain lain atau dalam
keadaaan run-time.
• Perbedaan besar antara desain pattern dan framework adalah
sebagai berikut:
– Level abstraksi antara framework dan desain pattern;
– Desain pattern memiliki arsitektur elemen lebih kecil dari
framework;
– Spesialisasi level dari framework dan desain pattern.
Topik
•
•
•
•
•
•
•
•
Komponen
Perkembangan Paradigma Pemrograman
Interface
Contract (Kontrak)
Pattern (Pola)
Frameworks
Hubungan antara konsep
Kesimpulan
Kesimpulan
• Spesifikasi komponen adalah inti dari komponen pengguna
dimana fokus pada fitur dari komponen, fungsional dan non
fungsional
• Tujuan utama dari framework adalah mendukung proses dari
komposisi komponen
• Pengembang komponen harus mematuhi aturan dan format
yang disepsifikasikan dari framework untuk mengembangkan
dan menetapkan komponen, sampai komponen pengguna
akan digunakan framework untuk menyusun sistem dari
komponen yang lebih efisien dan akurat
Kesimpulan
• Pattern memberikan abstrak dan sudut pandang lain dari
function, procedure, method dimana akan diimplementasikan
didalam form dari sistem atau komponen
• Desainer komponen akan menggunakan pattern dalam proses
desain hingga desain komponen lebih efisien