Selasa, 19 Maret 2013
PENGANTAR SISTEM TERDISTRIBUSI - OBJECT INTERFACE
OBJECT INTERFACE
Pengertian interface adalah himpunan operasi-operasi yang menentukan perilaku sebuah objek, biasanya digunakan apabila kita ingin menentukan apa saja yang harus dilakukan oleh satu class tetapi tidak menentukan bagaimana cara untuk melakukannya.
Interface mendefinisikan sebuah cara standar dan umum dalam menetapkan sifat-sifat dari class-class. Mereka menyediakan class-class, tanpa memperhatikan lokasinya dalam hirarki class, untuk mengimplementasikan sifat-sifat yang umum.
Dengan catatan bahwa interface-interface juga menunjukkan polimorfisme, dikarenakan program dapat memanggil method interface dan versi yang tepat dari method yang akan dieksekusi tergantung dari tipe object yang melewati pemanggil method interface.
Kita akan menggunakan interface jika kita ingin class yang tidak berhubungan mengimplementasikan method yang sama. Melalui interface-interface, kita dapat menangkap kemiripan diantara class yang tidak berhubungan tanpa membuatnya seolah - olah class yang berhubungan.

Mari kita ambil contoh class Line dimana berisi method yang menghitung panjang dari garis dan membandingkan object Line ke object dari class yang sama. Sekarang, misalkan kita punya class yang lain yaitu MyInteger dimana berisi method yang membandingkan object MyInteger ke object dari class yang sama.

Seperti yang kita lihat disini, kedua class-class mempunyai method yang mirip dimana membandingkan mereka dari object lain dalam tipe yang sama, tetapi mereka tidak berhubungan sama sekali. Supaya dapat menjalankan cara untuk memastikan bahwa dua class-class ini mengimplementasikan beberapa method dengan tanda yang sama, kita dapat menggunakan sebuah interface untuk hal ini. Kita dapat membuat sebuah class interface, katakanlah interface Relation dimana mempunyai deklarasi method pembanding. Relasi interface dapat dideklarasikan sebagai,

--------------------------------------------------------
public interface Relation
{
public boolean isGreater( Object a, Object b);
public boolean isLess( Object a, Object b);
public boolean isEqual( Object a, Object b);
}
--------------------------------------------------------

Alasan lain dalam menggunakan interface pemrograman object adalah untuk menyatakan
sebuah interface pemrograman object tanpa menyatakan classnya. Seperti yang dapat kita lihat nanti dalam bagian Interface vs class, kita dapat benar-benar menggunakan interface sebagai tipe data.

Pada akhirnya, kita perlu menggunakan interface untuk pewarisan model jamak dimana menyediakan class untuk mempunyai lebih dari satu superclass. Pewarisan jamak tidak
ditunjukkan di Java, tetapi ditunjukkan di bahasa berorientasi object lain seperti C++.


Interface vs. Class Abstract


Berikut ini adalah perbedaan utama antara sebuah interface dan sebuah class abstract:
method interface tidak punya tubuh, sebuah interface hanya dapat mendefinisikan
konstanta dan interface tidak langsung mewariskan hubungan dengan class istimewa
lainnya, mereka didefinisikan secara independent.

Interface vs. Class

Satu ciri umum dari sebuah interface dan class adalah pada tipe mereka berdua. Ini artinya bahwa sebuah interface dapat digunakan dalam tempat-tempat dimana sebuah class dapat digunakan. Sebagai contoh, diberikan class Person dan interface PersonInterface, berikut deklarasi yang benar:

--------------------------------------------------------
PersonInterface pi = new Person();
Person pc = new Person();
--------------------------------------------------------

Bagaimanapun, Anda tidak dapat membuat instance dari sebuah interface.
Contohnya:

---------------------------------------------------------
PersonInterface pi = new PersonInterface(); //COMPILE
//ERROR!!!
---------------------------------------------------------

Ciri umum lain adalah baik interface maupun class dapat mendefinisikan method.
Bagaimanapun, sebuah interface tidak punya sebuah kode implementasi sedangkan class
memiliki salah satunya.
Membuat Interface
Untuk membuat interface, kita tulis,

--------------------------------------------------------
public interface [InterfaceName]
{
//beberapa method tanpa isi
}
--------------------------------------------------------

Sebagai contoh, mari kita membuat sebuah interface yang mendefinisikan hubungan antara dua object menurut urutan asli dari object.

--------------------------------------------------------
public interface Relation
{
public boolean isGreater( Object a, Object b);
public boolean isLess( Object a, Object b);
public boolean isEqual( Object a, Object b);
}
--------------------------------------------------------

Sekarang, penggunaan interface, kita gunakan kata kunci implements. Contohnya,

---------------------------------------------------------
/**
* Class ini mendefinisikan segmen garis
*/
public class Line implements Relation
{
private double x1;
private double x2;
private double y1;
private double y2;
public Line(double x1, double x2, double y1, double y2){
this.x1 = x1;
this.x2 = x2;
this.y1 = y1;
this.y2 = y2;
}
public double getLength(){
double length = Math.sqrt((x2-x1)*(x2-x1) +
(y2-y1)* (y2-y1));
return length;
}
public boolean isGreater( Object a, Object b){
double aLen = ((Line)a).getLength();
double bLen = ((Line)b).getLength();
return (aLen > bLen);
}
public boolean isLess( Object a, Object b){
double aLen = ((Line)a).getLength();
double bLen = ((Line)b).getLength();
return (aLen < alen =" ((Line)a).getLength();" blen =" ((Line)b).getLength();" alen ="=" style="font-weight: bold;">Petunjuk penulisan program:

Gunakan interface untuk mendefinisikan method standar yang sama dalam class-
class berbeda yang memungkinkan. Sekali Anda telah membuat kumpulan definisi
method standar, Anda dapat menulis method tunggal untuk memanipulasi semua class-
class yang mengimplementasikan interface.

Hubungan dari Interface ke Class

Seperti yang telah kita lihat dalam bagian sebelumnya, class dapat mengimplementasikan
sebuah interface selama kode implementasi untuk semua method yang didefinisikan dalam
interface tersedia.

Hal lain yang perlu dicatat tentang hubungan antara interface ke class-class yaitu, class
hanya dapat mengEXTEND SATU superclass, tetapi dapat mengIMPLEMENTASIkan BANYAK
interface. Sebuah contoh dari sebuah class yang mengimplementasikan interface adalah,

---------------------------------------------------------
public class Person implements PersonInterface,
LivingThing,
WhateverInterface {
//beberapa kode di sini
}
Contoh lain dari class yang meng-extend satu superclass dan mengimplementasikan
sebuah interface adalah,
public class ComputerScienceStudent extends Student
implements PersonInterface,
LivingThing {
//beberapa kode di sini
}
---------------------------------------------------------

Catatan bahwa sebuah interface bukan bagian dari hirarki pewarisan class. Class yang tidak
berhubungan dapat mengimplementasikan interface yang sama.

Pewarisan Antar Interface

Interface bukan bagian dari hirarki class. Bagaimanapun, interface dapat mempunyai
hubungan pewarisan antara mereka sendiri. Contohnya, misal kita punya dua interface
StudentInterface dan PersonInterface. Jika StudentInterface meng-extend
PersonInterface, maka ia akan mewariskan semua deklarasi method dalam PersonInterface.

Sumber1 , sumber2 , sumber3

LaTeX

LaTeX (dilafalkan /ˈleɪtɛk/, /ˈleɪtɛx/, /ˈlɑːtɛx/, or /ˈlɑːtɛk/) adalah bahasa markup dokumen dan sistem dokumen persiapan untuk program typesetting TeX. Dalam sistem typesetting, nama style sebagai \ LaTeX. The LaTeX Istilah hanya bahasa dalam dokumen yang ditulis, bukan kepada editor yang digunakan untuk menulis dokumen-dokumen. Dalam rangka untuk membuat dokumen dalam LaTeX, sebuah file text. Harus diciptakan menggunakan beberapa bentuk editor teks. Sementara editor teks yang paling dapat digunakan untuk membuat dokumen LaTeX, sejumlah editor telah diciptakan khusus untuk bekerja dengan LaTeX.
LaTeX yang paling banyak digunakan oleh ahli matematika, ilmuwan, insinyur, filsuf, pengacara, ahli bahasa, ekonom, peneliti, dan para sarjana lainnya di akademisi. Sebagai Bentuk primer atau menengah,. Misalnya, menerjemahkan DocBook dan berbasis XML format ke PDF, LaTeX digunakan karena kualitas yang tinggi dicapai oleh typesetting Text. Sistem typesetting menawarkan fitur desktop publishing diprogram dan fasilitas yang sangat lengkap untuk mengotomatisasi sebagian besar aspek huruf dan desktop publishing, termasuk penomoran dan lintas-referensi, tabel dan gambar, tata letak halaman dan bibliografi.
LaTeX ini dimaksudkan untuk memberikan sebuah bahasa tingkat tinggi yang mengakses kekuatan TeX.LaTeX pada dasarnya terdiri dari koleksi macrotext dan program untuk memproses dokumen LaTeX. Karena perintah format Text yang sangat rendah tingkat, biasanya jauh lebih sederhana bagi end-user untuk menggunakan LaTeX.
LaTeX awalnya ditulis pada awal tahun 1980 oleh Leslie Lamport di SRI International Hal. Telah menjadi metode dominan untuk menggunakan TeX orang-relatif sedikit menulis dalam Text polos lagi. Versi saat ini adalah LaTeX2e (ditata \ LaTeXe).
LaTeX didasarkan pada gagasan bahwa penulis harus dapat fokus pada konten dari apa yang mereka tulis tanpa terganggu oleh presentasi visual. Dalam mempersiapkan dokumen LaTeX, penulis menentukan struktur logis menggunakan konsep akrab seperti bab, bagian, tabel, gambar, dll, dan memungkinkan sistem LaTeX khawatir tentang penyajian struktur ini. Karena itu mendorong pemisahan tata letak dari konten sementara masih memungkinkan manual typesetting penyesuaian jika diperlukan. Hal ini mirip dengan mekanisme yang banyak pengolah kata memungkinkan gaya harus didefinisikan secara global untuk seluruh dokumen atau penggunaan Cascading Style Sheets ke HTML.
LaTeX dapat sewenang-wenang diperpanjang dengan menggunakan bahasa makro yang mendasari untuk mengembangkan format kustom. macro tersebut sering dikumpulkan ke dalam paket, yang tersedia untuk menangani masalah pemformatan khusus seperti konten matematika rumit atau grafis. Memang, pada contoh di bawah, sejajarkan lingkungan disediakan oleh paket amsmath.

LYX

LyX adalah sebuah program pemroses kata (word processor) layaknya Microsoft Word dan OpenOffice.org Writer. Tetapi LyX unik, dimana pengguna hanya berkonsentrasi pada isi, bukan pada format, seperti yang dikatakan dalam intro-nya:
“LyX is a program that provides a modern approach to writing documents with a computer by using a markup language paradigm, an approach that breaks with the obsolete tradition of the “typewriter concept”. It is designed for authors who want professional output quickly with a minimum of effort without becoming specialists in typesetting. The job of typesetting is done mostly by the computer, not the author; with LyX, the author can concentrate on the contents of her writing.”
Contohnya, dalam LyX kita tidak bisa mengetik dua spasi secara berurutan, dua baris baru secara berurutan, atau memiliki baris yang kosong! Karena semua pengaturan tentang spacing antar paragraf, antar bagian dst sudah dibuat secara otomatis.
Keunggulan dari LyX adalah output yang konsisten – misalnya, semua paragraf dipastikan memiliki margin yang sama, semua judul dipastikan memiliki besar sama, dst. Selain itu, karena dokumen sangat terstruktur maka ada fitur untuk melakukan navigasi intra-dokumen yang sangat bagus (ada daftar judul-judul bab dan sub-bab, kita bisa meng-klik untuk pindah ke bagian tersebut dengan cepat).
Keburukan dari LyX adalah sangat sulit mengatur style (warna, font, dll) yang baku dari style yang sudah ada seperti judul bab, judul sub-bab, dll (walaupun untuk tulisan bukan judul bisa dilakukan). Juga sulit untuk mengatur apa-apa yang sudah di pre-format oleh Lyx, misalnya di mana penomoran halaman diletakkan, atau kata-kata otomatis yang digunakan. Seperti Chapter xxx, Figure xxx, Table xxx (dalam penomoran otomatis)... tetapi versi Bahasa Indonesia seperti Bab xxx, Gambar xxx, Tabel xxx tersedia (dengan memilih bahasa Bahasa (seharusnya Bahasa Indonesia kan???)), tetapi seperti yang sudah dikatakan kita tidak bisa mengubahnya menjadi Bagian xxx atau Figur xxx misalnya.

Selasa, 12 Maret 2013
Sistem terdistribusi itu apa sih?

Sistem Terdistribusi itu adalah Sekumpulan komputer otonom yang terhubung ke suatu jaringan, dimana bagi pengguna sistem terlihat sebagai satu komputer.
Maksud komputer otonom disini adalah walaupun komputer tidak terhubung ke jaringan, komputer tersebut tetap data berjalan.
Dengan menjalankan sistem terdistribusi, komputer dapat melakukan :
  • Ø  Koordinasi Aktifitas
  • Ø  Berbagi sumber daya : hardware, software dan data

Dengan definisi tersebut diatas maka internet sesungguhnya bukanlah suatu sistem terdistribusi, melainkan infrastruktur dimana sistem terdistribusi dapat di aplikasikan pada jaringan tersebut.

Contohnya dari sistem terdistribusi itu adalah :
Misalkan sebuah bank besar dengan ratusan kantor cabang  seluruh dunia. Setiap kantor memiliki komputer master untuk menyimpan rekening lokal dan menangani transaksi lokal. Selain itu, setiap komputer memiliki kemampuan untuk berbicara untuk semua cabang lainnya komputer dan dengan komputer pusat di kantor pusat. Jika transaksi dapat dilakukan tanpa memperhatikan di mana seorang pelanggan atau account, dan para pengguna tidak akan melihat adanya perbedaan antara sistem ini dan terpusat mainframe, ini juga dianggap sebagai sistem terdistribusi.

Dari contoh diatas kita bisa membayangkan bagaimana sebuah sistem dikatakan sistem terdistribusi, ada lagi contoh lain dari sistem terdistribusi seperti :


1.  Sistem Telepon
- ISDN, PSTN
2.  Manajemen Jaringan
- Adminstrasi ke sumber jaringan
3.  Network File System (NFS)
- Arsitektur untuk mengakses sistem file melalui jaringan
4.  WWW (World Wide Web)
- Arsitektur client/server yang diterapkan di atas infrastruktur internet
- Shared Resource (melalui URL)


Ada beberapa hal yang harus diperhatikan dalam membangun sistem terdistribusi,
yaitu :
  • ·         Transparency (Kejelasan)
  • ·         Communication (Komunikasi)
  • ·         Performance & Scalability (Kinerja dan Ruang Lingkup)
  • ·         Heterogeneity (Keanekaragaman)
  • ·         Opennes (Keterbukaan)
  • ·         Reliability & Fault Tolerancy (Kehandalan dan Toleransi Kegagalan)
  • ·         Security (Kemanan)


v  Transparency

Access transparency : Sumber daya lokal dan remote di akses dengan menggunakan operasi yang sama.
Location transparency : Pengguna sistem tidak tahu mengetahui keberadaan hardware dan software (CPU, file dan data).

Migration (Mobility) transparency : Sumber daya (baik berupa Hardware dan/atau software) dapat bebas berpindah tanpa mengubah sistem penamaan.

Replication transparency : Sistem bebas untuk menambah …le atau sumber daya tanpa diketahui oleh user (dalam rangkan meningkatkan kinerja)

Concurency transparency : User tidak akan mengetahui keberadaan user lain dalam sistem, walaupun
user tersebut menggunakan sumber daya yang sama.

Failure transparency : Aplikasi harus dapat menyelesaikan proses nya walaupun terdapat kegagalan
pada beberapa pada komponen sistem.

Performance transparency : Beban kerja yang bervariasi tidak akan menyebabkan turunnya kinerja sistem, hal ini dapat di capai dengan melakukan automatisasi konfigurasi terhadap perubahan beban.

v  Communication

Komponen2 pada sistem terdistribusi harus melakukan komunikasi dalam suatu urutan. Sebagai berikut :
- Infrastruktur jaringan (interkoneksi dan software jaringan)
- Metode dan Model komunikasi yang cocok
Metode komunikasi :
- Send
- Receive
- Remote Procedure Call
Model Komunikasi
- client – server communication : pertukaran pesan antara dua proses : dimana satu proses (client) menggunakan / meminta layanan pada server dan server menyediakan hasil dari proses tersebut.
- groupmulitcast : target dari pesan yang dikirimkan adalah gabungan dari proses, yang berasal dari suatu grup.

v  Performance and Scalability

Ada beberapa faktor yang mempengaruhi kinerja (performance) dari pada sistem terdistribusi :
- Kinerja dari pada personal workstations
- Kecepatan infrastruktur komunikasi
- Fleksibilitas dalam membagi beban kerja : contoh, apabila terdapat prosesor (workstation) yang idle maka dapat dialokasikan secara otomatis untuk mengerjakan tugas – tugas user.
- Scalability : Sistem tetap harus memperhatikan efesiensi walaupun terdapat penambahan
secara signifikan user atau sumber daya yang terhubung :
- Cost (biaya) penambahan sumber daya (resources) harus reasonable.
- Penurunan kinerja (performance) diakibatkan oleh penambahan user atau sumber daya harus terkontrol.

v  Heterogeneity

Aplikasi yang terdistribusi biasa berjalan dalam keberagaman :
- Hardware : mainframes, workstations, PC’s, server dll.
- Software : UNIX, MS Windows, IMB OS/2, LINUX dll.
- Devices : teller machine, robot, sistem manufacturing dll.
- Network dan Protocol : Ethernet, FDDI, ATM, TCP/IP dll
Melihat keanekaragaman di atas maka salah satu solusi yang bisa di terapkan adalah Middleware : berfungsi sebagai jembatan untuk komunikasi dan proses.


v  Opennes

Salah satu hal terpenting yang harus dimiliki oleh sistem terdistribusi adalah opennes (keterbukaan) dan flexibility (fleksibilitas) :
- Setiap layanan (services) harus dapat di akses oleh semua user.
- Mudah dalam implementasi, install dan debug services;
- User dapat membuat dan menginstall service yang telah dibuat oleh si user tersebut.
Aspek kunci pada opennes :
- Interface dan Protocol yang standard (seperti protokol komunikasi di internet)
- Support terhadap keanekaragaman. ( denganmembuatmidleware seperti CORBA)


v  Reliability dan Fault Tolerance

Salah satu tujuan dalam membangun sistemterdistribusi adalah memungkinkan untuk melakukan improvisasi terhadap kehandalan sistem.
Availability : kalau mesin mati (down), sistem tetap harus berjalan dengan jumlah layananan yang tersisa.
- Dalam sistem terdistribusi componen yang sangat vital (critical resources) berjumlah se minimal mungkin. Yang dimaksud dengan critical resources adalah komponen yang harus ada untuk menjalankan sistem terdistribusi.
- Masing – masing Software dan Hardware harus di replikasi : kalau terjadi kegagalan / error maka yang lain akan menangani.
Data dalam sistem tidak boleh hilang, copy dari file tersebut disimpan pada secara redundan pada server lain, tapi tetap harus dijaga konsistensi datanya.
Fault Tolerance : Sistemharus bisa mendeteksi kegagalan dan melakukan tindakan dengan dasar sebagai berikut :
- Mask the fault (menutupi kegagalan) : tugas harus dapat dilanjutkan dengan menurunkan kinerja tapi tanpa terjadi kehilangan data atau informasi.
- Fail Gracefully : membuat suatu antisipasi terhadap suatu kegagalan ke suatu prosedur yang telah di rencanakan dan memungkinkan untuk menghentikan proses dalam waktu yang singkat tanpa menghilangkan informasi atau data.

v  Security

- Confidentiality : keamanan terhadap data yang di akses oleh user yang tidak di perbolehkan (unauthorizes user)
- Integrty : keamanan terhadap kelengkapan dan autentikasi data.
- Availability : Menjaga agar resource dapat selalu di akses.
Sistem terdistribusi harus memperbolehkan komunikasi antara program/user/resources pada computer yang berbeda, maka resiko keamanan akan muncul apabila memberlakukan free access.


Dan ada hal lain juga yang harus dijamin dalam sistem terdistribusi, yaitu : 

Concurrency (Konkurensi)

Yang dimaksud dengan concurrency (sistem atau program yang berjalan bersama-sama) adalah suatu karakteristik yang dimiliki oleh sistem terdistribusi dimana sifatnya setiap komputer/aplikasi dapat melakukan pekerjaan masing-masing tanpa terjadi konflik diantaranya. Hal yang wajar apabila proses eksekusi program harus berjalan secara konkuren. Melakukan koordinasi konkurensi terkadang diperlukan juga untuk mengatur layanan seperti file sharing.
  • Pengaksesan suatu komponen/sumber daya (segala hal yang dapat digunakan bersama dalam jaringan komputer, meliputi H/W dan S/W) secara bersamaan. pemakai browser mengakses halaman web secara bersaman.
  • Setiap komponen hardware/software bersifat otonom (kita akan menyebut komponen otonom adalah “proses”)
  • Komponen menjalankan tugas bersamaan
  • Sinkronisasi dan koordinasi dengan message passing
  • Sharing resources

Masalah umum dalam sistem concurrent
  • Deadlock
  • Lifeclock
  • Komunikasi yang tidak handal

Tidak ada / Keterbatasan Global Clock

Setiap komputer memiliki clock yang berbeda dalam sistem terdistribusi. Agar tidak terjadi konflik maka diperlukan koordinasi agar tidak terjadi konflik clock antar komputer. Saat program membutuhkan koordinasi antarkomputer, dilakukan proses pertukaran pesan antarkomputer.
  • Hal ini menyebabkan kesulitan dalam mensinkronkan waktu seluruh komputer/perangkat yang terlibat. Dapat berpengaruh pada pengiriman pesan/data, seperti saat beberapa proses berebut ingin masuk ke critical session.
  • Terdapat batasan pada ketepatan proses sinkronisasi clock pada sistem terdistribusi, oleh karena asynchronous message passing
  • Pada sistem terdistribusi, tidak ada satu proses tunggal yang mengetahui global state sistem saat ini (disebabkan oleh concurrency dan message passing) 


Kegagalan Independent (Independent failures of component)

Komputer/sistem dapat mengalami kegagalan atau kerusakan. Akan sangat merepotkan apabila kerusakan pada 1 komputer atau 1 sistem akan mempengaruhi semua komputer/sistem. Oleh karena itu apabila terdapat komponen yang rusak atau gagal, kerusakan tidak meyebar ke komponen lainnya. Hal ini juga menyebabkan adanya kegagalan proses tunggal yang bisa tidak diketahui.





Labels

About Me

Foto Saya
hei dims !
i'm just an ordinary boy who try to be a good blogger.
Lihat profil lengkapku

Visitors

free counters
WELCOME TO MY BLOG ! I HOPE YOU ENJOY IN HERE..

Tags

Followers