Home
Archive for
June 2013
Diagram Sistematik
Terkadang kita bingung ketika akan memulai sesuatu dan membayangkan hasil akhir dari suatu pekerjaan yang sudah dimulai. Tidak jarang pula kita kebingungan di tengah jalan akibat kesalahan prediksi proses yang sedang dibangun di tengah jalan. Ketika kita sedang menulis sering pula kehilangan ‘flow ’cerita yang sedang kita buat hingga akhirnya selesai dengan tulisan yang kurang terarah pada hasil akhir yang sebelumnya dibayangkan.
Saya pernah membaca buku tentang System Thinking (lupa judul bukunya), pada buku tersebut dijelaskan bahwa penyelesaian suatu masalah dapat kita modelkan dalam suatu pemikiran sistemik. Seperti pada diagram blok di atas, kita dapat memodelkannya kedalam input, system, dan output.Input di sini adalah masalah sedangkan output -nya adalah penyelesaian masalah. Di dalam system kita memproses informasi dari input untuk kemudian disesuaikan agar diperoleh output yang diinginkan. Artinya sebelum memulai penyelesaian masalah harus didefinisikan terlebih dahulu input dan output-nya. Dengan demikian kita mempunyai gambaran jelas tentang permasalahannya dan bisa membayangkan hasil akhirnya. Barulah kemudian mendesain sebuah sistem untuk mencapai hasil akhir yang diinginkan.
Di dalam blok sistem sendiri, kita bisa membaginya kembali ke dalam beberapa blok yang saling terhubung satu sama lain membentuk sebuah proses yang saling terikat (seperti gambar di atas). Masing-masing blok itu pun terdiri dari input, output, dan blok system. Dengan kata lain ada sistem di dalam sistem, yang apabila blok di dalam sistem tersebut masih memiliki proses yang kompleks, dapat dipecah lagi menjadi beberapa blok sampai diperoleh urutan proses input –> system –> output yang lebih sederhana. Proses pemecahan ini terjadi secara rekursif dan tergantung kepada kompleksitas sistem yang dibuat.
Pemodelan sistem ini dalam dunia rekayasa bisa disetarakan dengan standar formal dari abstraction language dimana dewasa ini telah dikenal adanya UML (Unified Modelling Language) atau SDL (Specification Description Language). Abstraction Language tersebut adalah layer teratas ketika kita mengembangkan suatu sistem sebelum implementasi dengan bahasa pemrograman di layer yang lebih rendah. Selain itu pemahaman dan pendekatan sistem juga jauh lebih mudah dengan model definisi formal seperti itu.
Sejatinya konsep berpikir ini bisa digunakan secara luas diberbagai bidang ilmu, karena sistem berpikir secara sistemik seperti ini mampu mendifinisikan masalah dengan baik serta membantu untuk tetap fokus pada tujuan akhir yang ingin dicapai. Contohnya adalah ketika kita ingin membuat suatu tulisan, apabila kita menerapkan metode berpikir seperti ini langkah pertama yang kita lakukan adalah menetapkan langkah awal tulisan dan juga menetapkan hasil akhir dari tulisan yang kita buat. Apabila input dan output nya sudah jelas, maka dalam menulis kita bisa tetap menjaga flow tulisan sampai akhir. Selain mempermudah hal ini juga akan meningkatkan kualitas dari sistem apapun yang kita buat.
Penggunaan UML
Unified Modeling Language (UML) adalah bahasa spesifikasi standar untuk mendokumentasikan, menspesifikasikan, dan membangun sistem perangkat lunak.
Pendahuluan
Unified Modeling Language (UML) adalah himpunan struktur dan teknik untuk pemodelan desain program berorientasi objek (OOP) serta aplikasinya. UML adalah metodologi untuk mengembangkan sistem OOP dan sekelompok perangkat tool untuk mendukung pengembangan sistem tersebut. UML mulai diperkenalkan oleh Object Management Group, sebuah organisasi yang telah mengembangkan model, teknologi, dan standar OOP sejak tahun 1980-an. Sekarang UML sudah mulai banyak digunakan oleh para praktisi OOP. UML merupakan dasar bagi perangkat (tool) desain berorientasi objek dari IBM.
UML adalah suatu bahasa yang digunakan untuk menentukan, memvisualisasikan, membangun, dan mendokumentasikan suatu sistem informasi. UML dikembangkan sebagai suatu alat untuk analisis dan desain berorientasi objek oleh Grady Booch, Jim Rumbaugh, dan Ivar Jacobson.Namun demikian UML dapat digunakan untuk memahami dan mendokumentasikan setiap sistem informasi. Penggunaan UML dalam industri terus meningkat. Ini merupakan standar terbuka yang menjadikannya sebagai bahasa pemodelan yang umum dalam industri peranti lunak dan pengembangan sistem.
UML
Sampai era tahun 1990 puluhan metodologi pemodelan berorientasi objek telah bermunculan di dunia.Diantaranya adalah: metodologi booch, metodologi coad, metodologi OOSE, metodologi OMT, metodologi shlaer-mellor, metodologi wirfs-brock, dsb. Masa itu terkenal dengan masa perang metodologi (method war) dalam pendesainan berorientasi objek. Masing-masing metodologi membawa notasi sendiri-sendiri, yang mengakibatkan timbul masalah baru apabila kita bekerjasama dengan kelompok/perusahaan lain yang menggunakan metodologi yang berlainan.
Dimulai pada bulan Oktober 1994 Booch, Rumbaugh dan Jacobson, yang merupakan tiga tokoh yang boleh dikata metodologinya banyak digunakan mempelopori usaha untuk penyatuan metodologi pendesainan berorientasi objek. Pada tahun 1995 direlease draft pertama dari UML (versi 0.8). Sejak tahun 1996 pengembangan tersebut dikoordinasikan oleh Object Management Group
Diagram UML
UML menyediakan 10 macam diagram untuk memodelkan aplikasi berorientasi objek, yaitu:
Use Case Diagram untuk memodelkan proses bisnis.
Conceptual Diagram untuk memodelkan konsep-konsep yang ada di dalam aplikasi.
Sequence Diagram untuk memodelkan pengiriman pesan (message) antar objects.
Collaboration Diagram untuk memodelkan interaksi antar objects.
State Diagram untuk memodelkan perilaku objects di dalam sistem.
Activity Diagram untuk memodelkan perilaku Use Cases dan objects di dalam system.
Class Diagram untuk memodelkan struktur kelas.
Object Diagram untuk memodelkan struktur object.
Component Diagram untuk memodelkan komponen object.
Deployment Diagram untuk memodelkan distribusi aplikasi.
Berikut akan dijelaskan 4 macam diagram yang paling sering digunakan dalam pembangunan aplikasi berorientasi object, yaitu use case diagram, sequence diagram, collaboration diagram, dan class diagram.
Use Case Diagram
Use case diagram digunakan untuk memodelkan bisnis proses berdasarkan perspektif pengguna sistem. Use case diagram terdiri atas diagram untuk use case dan actor. Actor merepresentasikan orang yang akan mengoperasikan atau orang yang behhhrinteraksi dengan sistem aplikasi.
Use case merepresentasikan operasi-operasi yang dilakukan oleh actor. Use case digambarkan berbentuk elips dengan nama operasi dituliskan di dalamnya. Actor yang melakukan operasi dihubungkan dengan garis lurus ke use case.
Sequence Diagram
Sequence diagram menjelaskan secara detail urutan proses yang dilakukan dalam sistem untuk mencapai tujuan dari use case: interaksi yang terjadi antar class, operasi apa saja yang terlibat, urutan antar operasi, dan informasi yang diperlukan oleh masing-masing operasi.
Collaboration Diagram
Collaboration diagram dipakai untuk memodelkan interaksi antar object di dalam sistem. Berbeda dengan sequence diagram yang lebih menonjolkan kronologis dari operasi-operasi yang dilakukan, collaboration diagram lebih fokus pada pemahaman atas keseluruhan operasi yang dilakukan oleh object.
Class Diagram
Class diagram merupakan diagram yang selalu ada di permodelan sistem berorientasi objek.Class diagram menunjukkan hubungan antar class dalam sistem yang sedang dibangun dan bagaimana mereka saling berkolaborasi untuk mencapai suatu tujuan
SEKILAS TENTANG CORBA
Common Object Request Broker Architecture (CORBA) adalah teknologi yang dipergunakan untuk heterogeneous computing (sistem komputer dengan berbagai macam
lingkungan). CORBA pada dasarnya menggunakan arsitektur client-server dimana klien dan server berupa objek. CORBA mendukung apa yang disebut interoperabilitas, yaitu kemampuan saling bekerjasama antar sistem computer.
CORBA berbeda dengan RMI, berikut perbedaan CORBA dengan RMI:
lingkungan). CORBA pada dasarnya menggunakan arsitektur client-server dimana klien dan server berupa objek. CORBA mendukung apa yang disebut interoperabilitas, yaitu kemampuan saling bekerjasama antar sistem computer.
CORBA berbeda dengan RMI, berikut perbedaan CORBA dengan RMI:
- CORBA adalah dapat diimplementasikan dengan sembarang bahasa pemrograman.
- CORBA terdiri dari beberapa mekanisme dimana RMI dapat termasuk di dalamnya.
- Pada RMI tidak menggunakan ORB (Object Request Broker).
Kenapa ada CORBA?
- Dapat menangani keberagaman lingkungan antara klien dan server (dapat diimplementasikan pada bahasa pemrograman yang berbeda). Hal ini karena CORBA menggunakan apa yang disebut antarmuka (interface) untuk menjembatani dua buah lingkungan yang berbeda.
Object Request Broker (ORB) merupakan inti dari CORBA dan bertanggung jawab untuk menjalankan semua mekanisme yang dibutuhkan, yaitu:
- Menemukan implementasi objek untuk memenuhi suatu request
- Menyiapkan implementasi objek untuk menerima suatu request
- Melakukan komunkasi data untuk memenuhi suatu request
Sebuah permintaan (request) yang dikirimkan suatu client ke suatu object implementation akan melewati ORB. Dengan ORB, yang terdiri dari interface, suatu client dapat berkomunikasi dengan object implementation tanpa adanya batasan platform, teknologi jaringan, bahasa pemrograman, dan letak objek. Dengan menggunakan ORB, objek client bisa meminta sebuah method pada sebuah object server yang bisa saja terdapat dalam satu mesin maupun jaringan yang berbeda. ORB menerima panggilan dan menemukan objek yang bisa mengimplementasikan permintaan, mengirim parameter, invoke method, dan mengembalikan hasil yang diperoleh.
Objek-objek CORBA dispesifikasikan menggunakan interface, yang merupakan penghubung anatara client dan server. Interface Definition Language (IDL) digunakan untuk mendefinisikan interface tersebut. IDL menentukan tipe-tipe suatu objek dengan mendefinisikan interface-interface objek tersebut. Sebuah interface terdiri dari kumpulan operasi dan parameter operasi tersebut. IDL hanya mendeskripsikan interface, tidak mengimplementasikannya. Meskipun sintaks yang dimiliki oleh IDL menyerupai sintaks bahasa pemrograman C++ dan Java., perlu diingat, IDL bukan bahasa pemrograman.
Objek-objek CORBA dispesifikasikan menggunakan interface, yang merupakan penghubung anatara client dan server. Interface Definition Language (IDL) digunakan untuk mendefinisikan interface tersebut. IDL menentukan tipe-tipe suatu objek dengan mendefinisikan interface-interface objek tersebut. Sebuah interface terdiri dari kumpulan operasi dan parameter operasi tersebut. IDL hanya mendeskripsikan interface, tidak mengimplementasikannya. Meskipun sintaks yang dimiliki oleh IDL menyerupai sintaks bahasa pemrograman C++ dan Java., perlu diingat, IDL bukan bahasa pemrograman.
CORBA mendefinisikan IIOP (Internet Inter-ORB Protocol) untuk mengatur bagaimana objek berkomunikasi melalui jaringan. IIOP merupakan open protocol yang berjalan diatas TCP/IP.
Pada Java, CORBA merupakan pelengkap untuk menyediakan framework distribusi objek, services pendukung framework itu, dan kemampuan antar operasi dengan bahasa pemrograman lainnya. CORBA untuk client-server menggunakan protokol IIOP (Internet InterORB Protocol) untuk komunikasi antara server dan klien.
Arsitektur CORBA adalah sebagai berikut:
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieBdGdOxNQzpf4FnEwOyVx_wCKxoMeum-y1LlYQmvkNgFEghwOGLsfqvw2098h4J-ky4LYYBhbQk5wflqwAxoZeu6IeQxOD-5xnxqWh3qgoJogEHkdAlMZUsLgBcxCUJN5pH_JeFfcj8Y/s320/untitled.jpg)
Skeletons adalah bagian kode yang dibangin pada kode implementasi server pada antarmuka (interface). Stub adalah bagian kode yang membuat antarmuka (interface) dapat diakse (available) oleh klien.
Java menyediakan ORB (Object Request Broker) yang mendukung teknologi CORBA. ORB adalah komponen runtime yang dapat digunakan untuk distributed computing menggunakan komunikasi IIOP. OMG (Object Management Group) adalah industri yang membuat spesifikasi dan mempublikasikan CORBA.
Java IDL (Interface Definition Langauge) merupakan sebuah teknologi untuk distribusi
objek yang berinteraksi antar platform. CORBA menggunakan IDL untuk membuat antarmuka (interface). Java IDL adalah implementasi dari teknologi antarmuka pada CORBA. Model pemrograman IDL atau biasa disebut Java IDL terdiri dari ORB CORBA dan kompiler idlj yang memetakan OMG IDL ke Java dengan menggunakan Java CORBA ORB. Aplikasi CORBA dibuat dengan menggunakan IDL untuk mendefinisikan antarmuka objek agar dapat diakses oleh klien maupun server.
PEMBAHASAN PROBILITAS
Sebelum Anda melakukan trading yang sebenarnya, ada baiknya bila kita membahas masalah probabilitas secara lebih mendalam sekali lagi guna memaksimalkan teknik Anda di dalam melakukan trading.
Pada bab sebelumnya telah diberikan illustrasi kasus mengenai probabilitas dengan pelemparan koin secara acak untuk mendapatkan suatu data statistik tentang kemungkinan muka koin yang akan muncul di tangan kita. Apakah kita akan mendapatkan sisi koin yang bergambar atau sisi koin yang menunjukkan angka.
Pada pelemparan koin, kita hanya akan mendapatkan 2 kemungkinan atas apa yang kita lakukan terhadap koin tersebut, yaitu gambar atau angka.
Di dalam pendekatan statistik, probabilitas yang akan kita dapatkan adalah sama. Bila Anda melempar koin tersebut, Anda dapat mencatat berapa kali muncul gambar dan berapa kali muncul angka. Dari catatan yang Anda dapatkan mungkin Anda akan merasa bahwa eksperimen yang Anda lakukan merupakan suatu bentuk perjudian sederhana. Namun demikian apa yang Anda lakukan tersebut merupakan suatu eksperimen yang baik tentang probabilitas.
Jika Anda melakukan eksperimen pelemparan koin, misalkan saja, sebanyak 10 kali, maka berikut adalah kemungkinan data berapa kali sisi gambar akan muncul dan berapa kali sisi angka akan muncul:
Gambar
|
Angka
|
10
|
0
|
9
|
1
|
8
|
2
|
7
|
3
|
6
|
4
|
5
|
5
|
4
|
6
|
3
|
7
|
2
|
8
|
1
|
9
|
0
|
10
|
Dari tabel di atas, menurut Anda. manakah sisi koin yang paling berpeluang muncul dari pelemparan koin sebanyak 10 kali? Sekarang coba Anda amati tibel di atas. Di situ nampak bahwa kita akan mendapatkan suatu kombinasi probabilitas yang sama antara peluang munculnya sisi gambar dan sisi angka.
Jika Anda ingin menguji sekali lagi apa yang telah Anda lakukan dengan meminta tolong orang lain untuk melakukan hal yang sama seperti yang Anda lakukan, cobalah Anda bandingkan antara data yang Anda dapatkan dengan data yang didapatkan orang tersebut. Apakah Anda mendapatkan hasii yang sama?
Pertanyaan di atas adalah harus Anda kemukakan ketika Anda ingin mempelajari lebih lanjut tentang probabilitas. Kita akan membahas bersama untuk mengkaji lebih lanjut tentang probabilitas ini.
Ketika Anda melakukan pelemparan koin tersebut sebanyak 1 kali, atau sebanyak 10 kali, maka jawaban yang akan kita dapatkan tentang probabilitas adalah sama, karena masing-masing sisi koin memiliki peluang yang sama, untuk muncul. Dengan kondisi ini kita telah mendapatkan suatu prediksi tentang probabilitas sisi koin mana yang akan muncul. Jika misalnya koin tersebut cacat sehingga pada saat kita lemparkan ternyata sisi tertentu dari koin menjadi lebih sering muncul maka kita akan kesulitan untuk melakukan prediksi. Sekilas hal ini tampak aneh dan kontradiktif, karena dengan adanya cacat pada koin maka kita harus mempelajari perilaku atau karakter dari koin yang cacat itu. Jika kita melemparkan koin cacat tersebut sebanyak 1000 kali, misalnya, maka bisa jadi kita akan mendapatkan sisi gambar muncul sebanyak 700 kali dibanding sisi angka sebanyak 300 kali. Jika hal itu yang terjadi maka biasanya kita akan segera berkesimpulan bahwa kita dengan mudah dapat memprediksikan hasil pelemparan koin cacat tersebut, meskipun kenyataan tidaklah demikian. Sekali lagi kita harus mengerti dan memahami karakter dari koin cacat tersebut sebelum kita melakukan prediksi dan itu tidak semudah jika kita melakukannya terhadap koin yang tidak cacat.
Dari uji coba pelemparan koin di atas kita mencatat bahwa hasil dari setiap pelemparan koin merupakan suatu peristiwa independen. Tidak ada faktor apapun yang mempengaruihi hasil dari uji pelemparan koin. Berapa kalipun Anda melakukan uji pelemparan, angka probabilitas sisi koin mana yang akan muncul adalah sama. Koin tersebut tidak akan “mengingat” hasil akhir pelemparan sebelumnya. Juga tidak bisa ditentukan sisi mana yang akan muncul pada pelemparan berikutnya. Ini adalah suatu peristiwa yang benar-benar independen.
Akan lain halnya jika kita mengambil suatu contoh kasus lain tentang peristiwa uji coba yang bersifat tidak independen. Katakanlah kita melakukan uji coba terhadap 20 biji kelereng, 19 kelereng berwarna hijau dan hanya 1 yang berwarna merah, dengan ukuran dan berat yang benar-benar sempurna sama. Ketika kita memasukkan semua kelereng tersebut ke dalam sebuah toples lalu kita mencoba mengambil kelereng berwarna merah dengan mata tertutup, berapakah probabilitas keberhasilan kita untuk mendapatkan kelereng merah tersebut? Ketika Anda mulai mengambil kelereng merah tersebut, angka probabilitas yang kita hadapi adalah 1 banding 20. Pada pengambilan pertama bisa jadi kita akan gagal dan kemudian kita mencoba lagi. Kali ini dengan perbandingan 1 banding 19 kerena jumlah kelereng sudah berkurang satu.
Jika kita terus mencoba untuk mengambil kelerengmerah dengan cara yang sama, dan ketika Anda berhasil mengambil kelereng merah sementara yang masih tersisa hanya beberapa biji kelereng hijau, maka permainan telah berakhir. Namun jika Anda gagal dan Anda tidak mengganti kelereng hijau yang terambil dengan kelereng berwama merah maka probabilitasnya adalah sama. Kecuali jika Anda melanjutkan pengambilan kelereng tersebut hingga jumlah kelereng di dalam toples tersebut terus berkurang hingga akhimya menyisakan satu kelereng saja. Dalam hal demikian bukanlah probabilitas lagi yang berlaku, namun sebuah kepastian.
Contoh kasus ini, jika kita bandingkan dengan uji pelemparan koin, sangatlah berbeda kondisinya. Uji pelemparan koin adalah suatu bentuk uji coba yang bersifat independen event dan tidak didasarkan atas suatu kepastian. Dari pembahasan ini saya berharap Anda sudah mendapatkan gambaran yang jelas tentang probabilitas.
Subscribe to:
Posts
(
Atom
)