51
component oriented programming Materi 1 - Silabus, Review OOP dan Pengantar COP

component oriented programming

  • Upload
    senona

  • View
    85

  • Download
    0

Embed Size (px)

DESCRIPTION

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 - PowerPoint PPT Presentation

Citation preview

Page 1: component oriented programming

component oriented programming

Materi 1 - Silabus, Review OOP dan Pengantar COP

Page 2: component oriented programming

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

Page 3: component oriented programming

Topik• Komponen• Perkembangan Paradigma Pemrograman• Interface• Contract (Kontrak)• Pattern (Pola)• Frameworks• Hubungan antara konsep• Kesimpulan

Page 4: component oriented programming

Topik• Komponen• Perkembangan Paradigma Pemrograman• Interface• Contract (Kontrak)• Pattern (Pola)• Frameworks• Hubungan antara konsep• Kesimpulan

Page 5: component oriented programming

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.

Page 6: component oriented programming

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).

Page 7: component oriented programming

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 ).

Page 8: component oriented programming

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.

Page 9: component oriented programming

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

Page 10: component oriented programming

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 ?

Page 11: component oriented programming

Kenapa COP Penting

Black Box

White Box

Grey Box

Page 12: component oriented programming

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

Page 13: component oriented programming

Kenapa COP Penting ?• Perkembangan software yang semakin kompleks, butuh teknik untuk

mengatasi kompleksitas tersebut

• Menangani perubahan sesuai kebutuhan

• Penggunaan ulang untuk mengurangi waktu pengembangan

Page 14: component oriented programming

Komponen Itu Apa ?• Self contained• Self deployable• Well-defined functionality• Can be assembled through its interface

Page 15: component oriented programming

Komponen Itu Apa ?

Page 16: component oriented programming

Komponen Itu Apa ?

Page 17: component oriented programming

Komponen Itu Apa ?

Page 18: component oriented programming

Komponen Itu Apa ?

Pidgin

Network

YM!

GTalk

IM

MSNXML

Page 19: component oriented programming

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 …

Page 20: component oriented programming

Topik• Komponen• Perkembangan Paradigma Pemrograman• Interface• Contract (Kontrak)• Pattern (Pola)• Frameworks• Hubungan antara konsep• Kesimpulan

Page 21: component oriented programming

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

Page 22: component oriented programming

SP vs OOP vs COP

Divide and Conquer- Memecah masalah besar menjadi masalah-masalah yang lebih kecil- Untuk menangani kompleksitas

SP OOP COPYES YES YES

Page 23: component oriented programming

SP vs OOP vs COP

Data + Function- Menggabungkan data dan fungsi

SP OOP COPNO YES YES

Page 24: component oriented programming

SP vs OOP vs COP

Encapsulation- Pembungkusan, isolasi- Mengurangi coupling (ketergantungan)

SP OOP COPNO YES YES

Page 25: component oriented programming

SP vs OOP vs COP

Identity- Setiap software entitas punya identity yang unik

SP OOP COPNO YES YES

Page 26: component oriented programming

SP vs OOP vs COP

Interface- Ketergantungan spesifikasi- Membagi spesifikasi komponen menjadi interface- Mencegah ketergantungan antar interface

SP OOP COPNO NO YES

Page 27: component oriented programming

SP vs OOP vs COP

Deployment- Unit abstrak dapat dideploy secara independen

SP OOP COPNO NO YES

Page 28: component oriented programming

COP vs OOP

Page 29: component oriented programming

COP vs OOP

Page 30: component oriented programming

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.

Page 31: component oriented programming

Topik• Komponen• Perkembangan Paradigma Pemrograman• Interface• Contract (Kontrak)• Pattern (Pola)• Frameworks• Hubungan antara konsep• Kesimpulan

Page 32: component oriented programming

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,

Page 33: component oriented programming

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.

Page 34: component oriented programming

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.

Page 35: component oriented programming

Topik• Komponen• Interface• Contract (Kontrak)• Pattern (Pola)• Frameworks• Hubungan antara konsep• Kesimpulan

Page 36: component oriented programming

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).

Page 37: component oriented programming

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.

Page 38: component oriented programming

Topik• Komponen• Perkembangan Paradigma Pemrograman• Interface• Contract (Kontrak)• Pattern (Pola)• Frameworks• Hubungan antara konsep• Kesimpulan

Page 39: component oriented programming

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.

Page 40: component oriented programming

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.

Page 41: component oriented programming

Topik• Komponen• Perkembangan Paradigma Pemrograman• Interface• Contract (Kontrak)• Pattern (Pola)• Frameworks• Hubungan antara konsep• Kesimpulan

Page 42: component oriented programming

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.

Page 43: component oriented programming

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..)ComponentFramework

Page 44: component oriented programming

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

Page 45: component oriented programming

Topik• Komponen• Perkembangan Paradigma Pemrograman• Interface• Contract (Kontrak)• Pattern (Pola)• Frameworks• Hubungan antara konsep• Kesimpulan

Page 46: component oriented programming

Hubungan diantara konsep

Interface that satisfies contracts

Component implementation

Component model

Independent deployment

Component-typeSpecific interface

Coordination Services (transactions, persistence..)ComponentFramework

Page 47: component oriented programming

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

Page 48: component oriented programming

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.

Page 49: component oriented programming

Topik• Komponen• Perkembangan Paradigma Pemrograman• Interface• Contract (Kontrak)• Pattern (Pola)• Frameworks• Hubungan antara konsep• Kesimpulan

Page 50: component oriented programming

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

Page 51: component oriented programming

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