Unified Process (UP) dan Unified Modeling Language (UML)

Untuk UML kita sering mendengarnya, terutama bagi mahasiswa jurusan ilmu komputer, teknik informatika, ataupun sistem informasi. Sementara UP, sepertinya jarang terdengar, terkadang kurikulum pun tidak memasukannya. Biasanya UP dipisahkan dengan UML karena UP merupakan bagian dari proses perancangan perangkat lunak. Terkadang juga masuk dalam materi analisa dan disain sistem informasi.

Untuk informasi mengenai apa itu UP bisa dilihat di internet, misalnya wikipedia yang sepertinya akurat, sesuai dengan teori yang ada. Untuk yang ingin detilnya bisa lihat rujukan buku milik Jim Arlow (Arlow & Neustadt, 2005) atau karangan Craig Larman (Larman, 2005).

Lalu hubungannya apa UP dengan UML? Sebelumnya ada istilah Rational Unified Process (RUP) yang merupakan benchmark IBM untuk menggambarkan proses perancangan perangkat lunak. Untuk menghindari penamaan pabrikan/vendor, tri-amigos: Ivar Jacobson, James Rumbaugh dan Grady Booch menerbitkan buku khusus UP. Mereka merupakan para pencetus UML, tool untuk penggambaran dan pemodelan sistem berbasis obyek. Jadi UP itu pemodelan dan framework proses sementara UML hasil dari prosesnya (masih dalam bentuk blue-print).

UP bersifat iteratif yang tiap iterasi terdiri dari tahapan-tahapan sebagai berikut, untuk menghafalnya disingkat IEKT:

  • Incepsi: penentuan tujuan-tujuan (life cycle objectives)
  • Elaborasi: pembuatan arsitektur sistem
  • Konstruksi: kapasitas dan kemampuan sistem dibentuk
  • Transisi: produk siap uji

Buku Arlow membahas keempat tahapan UP tersebut yang dikombinasikan dengan waterfall (requirements, analisis, disain, implementasi dan testing, disingkat RADIT). Bentuknya di tiap-tiap RADIT ada IEKT dari UP. Namun ada juga yang sebaliknya, di tiap IEKT-nya UP ada RADIT. Namun yang dibahas di buku adalah yang bentuk pertama. Sementara itu ketika melihat buku Larman yang cukup tebal, ternyata UP hanya sampai Elaborasi. Tidak ada konstruksi dan transisi. Belum sempat saya baca sampai sana, hanya saja ada elaborasi-1, elaborasi-2. Bukunya cukup tebal dengan bahasa Java sebagai ilustrasinya.

Sempat saya baca juga dalam satu kolom khusus dalam buku Larman, bahwa tidak ada peluru perak (istilahnya senjata pamungkas pembunuh vampir) dalam bentuk tools atau teknik perancangan perangkat lunak, dikatakan oleh Dr. Frederick Brookes (lihat buku Mythical Man-month). Jadi kalau ada yang bilang suatu teknik itu ampuh untuk segala bentuk sistem, dipastikan tidak mungkin alias gombal, baik yg mengatakan itu dosen ataupun sales CASE (alat bantu pembuatan software). Tetap saja jika pengguna tidak memahami konsep Object Oriented akan kesulitan menggunakan CASE jenis apapun (dibahas di buku: “Death by UML Fever” karangan Booch). Seperti biasa, tiap buku berbeda-beda pahamnya, seperti post yang lalu bahwa beberapa buku analisa disain/rekayasa perangkat lunak (Pressman, 2001; Sommerville, 2007) masih mentolerir menggunakan non-object programming dengan UML. Tidak ada salahnya juga menggunakan model lain yg bukan standar UML untuk penggambaran sistem berbasis objek asal bermaksud memperjelas pembacaan model (Fowler, 2004). Tetapi alangkah idealnya jika sistem yg dirancang dengan UML berbasis object. Selamat ber-UML.

Reference

Arlow, J., & Neustadt, I. (2005). UML 2 and the Unified Process (Second). United States: Pearson Education Limited.

Fowler, M. (2004). UML Distilled (3rd ed.). United States: Pearson.

Larman, C. (2005). Applying UML and Patterns (3rd ed.). United States: Pearson.

Pressman, R. S. (2001). Software Engineering – A Practitioner’s Approach (Fifth Edit). New York: McGraw Hill.

Sommerville, I. (2007). Software Engineering – Eighth Edition. London: Pearson Education Limited.

 

Iklan

Materi Ujian PBO

SOAL PRAKTEK:

Buka file “JAVA” yang sudah difberikan. Buka Eclipse, Netbeans, JCreator, FreeJava, dll.

Beri nama project, misalnya UAS sehingga muncul project UAS di jendela Package Explorer. Copy – dan Paste soal yang diberikan ke project tersebut pada folder “SRC“. Coba jalankan dengan mengklik kanan file tersebut, misalnya Customer.java pada lesson 3.

Jika sudah jalan, ikuti soal yang diberikan.

Jika diminta membuat format sebagai berikut, coba edit listing yang ada tersebut (kemungkinan diminta menambah satu isian).

SOAL TEORI:

Diberikan diagram kelas dan use case yang harus Anda jelaskan maknanya.

Menangkap Masukan dari Keyboard pada JAVA

Berhubung computer yang ada di lab Software Engineering kebanyakan terinstall Eclipse, maka untuk melakukan basic input output sementara menggunakan console lewat keyboard. Berikut ini cara penulisan listing di class main.

Ada tiga komponen yang harus kita import guna mendapatkan fasilitas input output dengan keyboard antara lain:

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

Seperti biasa untuk membuat instan baru di main.java kita panggila kelas yang sebelumnya telah kita buat (persegiPanjang.java). Beri nama instan tersebut misalnya p. Untuk kelas persegiPanjang dapat dilihat pada tulisan saya terdahulu. Perhatikan listingnya sebagai berikut di IDE Eclipse (saya menggunakan versi Juno):


Sebenarnya kita bisa langsung mengetik BufferedReader tanpa perlu mengetik import di kepala program karena ketika selesai Eclipse akan memberikan peringatan kalau kita harus mengimport suatu komponen. Kita tinggal mengklik ganda pilihan yang ada dan instruksi import langsung berjalan.

Untuk menangkap data, berarti kita memanggil operation setPanjang dan setLebar dari kelas persegiPanjang, dalam hal ini direpresentasikan dengan objek “p”. Sedangkan untuk mengeluarkan hasil perhitungan luasnya dilakukan dengan memanggil operasion getLuas dari kelas persegiPanjang. Berikut hasilnya jika program di atas di running:


Perhatikan bagian bawah IDE Eclipse. Anda diminta memasukan panjang dan lebar yang kemudian disusul dengan hasil perhitungan Luasnya.

Soft Computing

Istilah soft computing merupakan pelengkap dari hard computing yang merupakan komputasi berdasarkan ketidakpastian. Banyak yang bingung apa bedanya soft computing dengan artificial intelligent (AI). AI lebih dahulu muncul, merupakan metode komputasi berdasarkan simbol-simbol dan dikembangkan oleh bahasa pemrograman tertentu seperti prolog, lisp, clips, dan sejenisnya. Soft computing tidak jauh berbeda dengan AI dalam hal penerapan, tetapi dari sisi perhitungan tetap menggunakan notasi-notasi numerik hanya saja dengan algoritma-algoritma tertentu yang saat ini berkembang pesat antara lain: Fuzzy, ANFIS, Jaringan Syaraf Tiruan, Algoritma genetik dan yang terakhir Bayes. Karena berdasarkan algoritma tertentu maka bahasa pemrograman seperti C++, Java, Matlab dan sebagainya dapat digunakan dan tidak lagi dimonopoli oleh bahasa khusus AI.

Fuzzy yang dipelopori oleh Lutfi Askar Zadeh, pria keturunan Iran yang sempat mengenyam pendidikan di Rusia dan saat ini tinggal di Amerika Serikat merupakan dasar dari Soft Computing. Algoritmanya merupakan konversi dari numerik biasa yang diistilahkan dengan CRISP menjadi fungsi keanggotaan Fuzzy yang bersifat manusiawi (linguistik). Beberapa kritikus menanyakan mengapa fuzzy tetap menyandarkan pada aritmatika, sehingga munculah Fuzzy tipe-2 yang memasukkan unsur ketidakpastian.

Jaringan Syaraf Tiruan, yang merupakan metode yang dikembangkan oleh mcculloch – pitts merupakan algoritma yang berusaha meniru bentuk syaraf biologis makhluk hidup. Dengan konsep Neuron-nya disertai dengan bobot dan fungsi aktivasi merupakan terobosan dalam algoritma soft computing. Setelah sempat redup di tahun 70-an karena tidak sanggup menyelesaikan kasus serderhana seperti XoR, akhirnya algoritma ini marak diteliti kembali setelah Hopfield menemukan metode pembelajaran rambatan kesalahan (backprogragation error) yang sanggup mengeset bobot sesuai dengan target pembelajaran.

ANFIS yang merupakan singkatan dari Adaptive Neuro Fuzzy Inference System merupakan penggabungan dari Fuzzy dengan Jaringan Syaraf Tiruan. Bedanya hanya pada rule yang dibentuk lewat mekanisme pembelajaran (learning). Di antara tiga metode pembuatan rule Fuzzy (Mamdani, Sugeno dan Tsukamoto) hanya Sugeno yang secara efisien mampu diaplikasikan pada ANFIS.

Algoritma Genetik yang masuk dalam kategori Evolutionary Computing merupakan algoritma yang berusaha meniru sifat adaptive dari alam sekitar (mirip teori darwin) dimana organisme yang hidup saat ini adalah organisme terbaik yang berhasil unggul dibanding organisme lain yang sudah punah. Metodenya adalah membangkitkan sembarang bilangan, kemudian dievaluasi dengan fungsi objective dan jika kurang baik maka dimusnahkan, sedangkan yang baik, dikawin silangkan serta dimutasi sehingga menghasilkan individu baru yang lebih baik dari induknya. Operasi ini terus berlangsung hingga dihasilkan individu terbaik hasil dari kawin silang dan mutasi.

Bayes, pertama kali dimunculkan dalam bentuk Naive Bayes yang merupakan komputasi berdasarkan statistik probabilistik. Pengambilan keputusan berdasarkan dengan peluang terbesar di antara kandidat yang ada. Terkadang kondisi di lapangan sangat jarang dijumpai kondisi pasti antara A,B,C atau D, seperti pendeteksian penyakit, peramalan cuaca dan sebagainya. Oleh karena itu hasil dari metode bayes ini merupakan peluang terbesar dari suatu kondisi (tidak 100 % akurat).

Metode tersebut di atas terkadang digabungkan antara satu dengan lainnya untuk menghasilkan akurasi, kecepatan dan efisiensi dalam pengoperasiannya. Karena antara satu metode dengan metode lainnya memiliki kelemahan dan kelebihan masing-masing. Metode mana yang Anda gunakan semua ada di tangan Anda. Termasuk bahasa pemrograman yang menjadi pilihan Anda. Untuk saat ini saya sedang mengimplementasikan algoritma Soft Computing dalam bahasa Java, karena bahasa ini merupakan selain bahasa yang open source, banyak dipakai di peralatan, juga dapat berjalan di aplikasi berbasis Web yang saat ini sedang booming.

Rahmadya Trias Handayanto

Insert Database Access via Java

A. MEMBUAT DATABASE DI MYSQL

Jalankan server Apache pada folder Xamp


Jangan diclose console DOS yang mengindikasikan Apache sudah running. Berikutnya buka browser (Mozilla, IE, dsb). Ketik: localhost/phpmyadmin


Create sebuah database, misalnya database penjualan. Pada kolom “Create new Database” isikan “Penjualan”. Klik Create, maka akan terbentuk satu database penjualan. Berikutnya kita buat satu tabel, misalnya “barang”. Isi nama tabel beserta jumlah field (nanti bias diedit), misalnya field.


Setelah di klik “Go”, MySQL akan membentuk tabel “barang”. Perhatikan juga tipe data yang akan dimuat pada tiap-tiap Field.


Klik “Go” agar Mysql segera membentuk tabel tersebut dilanjutkan dengan “Save“. Jika tidak ada kesalahan, maka tabel barang sudah terbentuk. Tinggal kita memasukan beberapa barang. Pastikan muncul tabel barang pada phpmyadmin.


Database dan tabel akan muncul pada folder Xampplite/Mysql/Data pada windows explorer.


Untuk backup, copy saja subfolder data, ke media lain seperti cdrw/flashdisk. Isikan data pada tabel barang. Klik Insert untuk mengisi data.


Kemudian isikan dua record (tupple).


Maka kita telah berhasil mengisi tabel barang pada database penjualan. Berikutnya kita akan mencoba mengkoneksikan database Mysql tersebut dengan Java disertai operasi Insert Data.

B. MEMBUAT FRAME INSERT DATA

Buka Netbeans 6.0.1 atau 6.9.1. Buat sebuah project baru dengan nama, misalnya penjualan. Jangan lupa arahkan folder di tempat yang kita inginkan, missal di drive D.


Klik “Finish” jika sudah diisi. Maka Netbeans akan menyediakan tempat project kita. Klik kanan pada paket Penjualan > new > JFrame Form.


Beri nama kelas tersebut, misalnya insert. Rancang tampilan Graphic User Interface (GUI) sebagai berikut:


Perhatikan jangan sampai tertukar antara label dengan Text Field. Lalu ganti tampilan dengan klik kanan > edit Text. Kosongkan tulisan jTextField1, jTextField2, jTextField3.


Untuk membuat kode program dobel klik “INSERT” kemudian isikan dengan terlebih dahulu mengkoneksikan database ke java.


Klik symbol lampu, jika muncul karena Java membutuhkan kelas tambahan.

try

{

Class.forName(“com.mysql.jdbc.Driver”);

Connection con = DriverManager.getConnection(“jdbc:mysql://localhost:3306/penjualan,”root”,””);

java.sql.PreparedStatement stat = con.prepareStatement(“insert into barang(kode,nama,harga) values(?,?,?)”);

stat.setString(1,jTextField1.getText());

stat.setString(2,jTextField2.getText());

stat.setString(3,jTextField3.getText());

stat.executeUpdate();

javax.swing.JOptionPane.showMessageDialog(null,”berhasil”);

jTextField1.setText(“”);

jTextField2.setText(“”);

jTextField3.setText(“”);

}

catch(Exception e)

{

System.out.println(“gagal” +e);

}

}

Lalu jalankan.

Pertemuan IX: Generalisasi dan Inheritance

Salah satu teknik pemrograman berbasis objek adalah generalisasi dan inheritance. Konsep ini dapat dianalogikan dengan induk dan anak dimana anak akan mewarisi sifat induknya. Untuk mempermudah pemahaman ada baiknya kita coba untuk mempraktekkannya dengan bahasa Java dengan IDE Netbeans.


Buat project baru dengan cara File – New Project. Pilih kategori Java dan pilih Java Application pada kolom yang kanan.


Anda akan diminta memberi nama serta lokasi tempat penyimpanan dengan cara mengklik “Browse“. Jika direktori tidak muncul klik “Desktop” agar memunculkan seluruh direktori yang ada di komputer.


Setelah diklik “Computer” akan terlihat seluruh direktori yang ada. Cari folder yang Anda inginkan. Jika sudah, beri nama project Anda, misalnya “Generalisasi“.


Setelah di klik “Finish” berarti Anda telah siap membuat project. Perhatikan Netbeans memberikan satu kelas secara default dengan nama “Main“. Berikutnya kita akan membuat dua kelas baru yaitu kelas persegiPanjang dan kelas Balok. Cara membuat kelas baru adalah sebagai berikut:


Pada paket “Generalisasi” klik kanan kemudian pilih New – Java Class. Beri nama “persegiPanjang“. Dengan cara yang sama buat juga kelas berikutnya yaitu kelas “Balok“.


Dobel klik kelas persegiPanjang dan tulis program yang menghitung luas persegi panjang dari masukan panjang dan lebar dengan cara objek. Walaupun beberapa literatur bisa juga membuat program Java secara terstruktur, alangkah baiknya Java dibuat dengan basis Objek. Perlu diketahui bahwa tiap objek memeliki nama, atribut dan operasi. Lihat listing persegiPanjang berikut ini.


Perhatikan, pada kelas persegiPanjang terdapat dua atribut yaitu panjang dan lebar yang bertipe double. Script baris ke 15 bermaksud merubah variabel panjang yang diterima lewat masukan tertentu (nanti menggunakan form) menjadi double, dilanjutkan dengan script ke 18 yang menangkap variabel itu ke kelas yang bersangkutan lewat mekanisme “this“. Diakhiri dengan methode getPanjang yang menginstruksikan Java bahwa variabel panjang harus disimpan. Penjelasan yang sama untuk setLebar dan getLebar. Operasi terakhir adalah getLuas yang memerintahkan Java untuk menyimpan hasil perkalian panjang dan lebar.


Berikutnya kita membuat kode program balok. Karena balok merupakan anak dari persegi panjang (Inheritance) maka pada awal program perlu ditambahkan extends dan dilanjutkan nama kelas induknya (lihat baris ke-12). Saat menghitung volume, kita tinggal memanggil “getLuas” dari induknya (persegi panjang) dengan mengetik instruksi “super“. Perhatikan, saat diketik titik, harusnya ada bantuan getLuas, jika tidak, mungkin Anda belum menulis “extends” di awal program, atau getLuas di persegiPanjang bertipe “private“, oleh karena itu ganti menjadi “public“.


Buat kelas baru dengan nama formBalok dengan tipe Jframe Form. Buat rancangan Graphic User Interface (GUI) seperti gambar di atas. Buat programnya dengan mendobel klik “Hitung“.


Perhatikan, baris pertama bermaksud membuat suatu instance baru bernama “b“. Instance adalah objek yang dibuat dari suatu kelas, dalam hal ini kelas “Balok“. Karena dibuat dari kelas balok maka seluruh operasi pada kelas balok diterapkan juga di objek “b” tersebut, seperti setPanjang, setLebar, dan setTinggi. Methode getText() sudah tersedia di Java, yang bermaksud menangkap text dari inputan pada Text Field (jTextField1, jTextField2, dan jTextField3). Disarankan untuk memberi nama baru pada variabel tersebut, karena nama tersebut merupakan nama bawaan Netbeans. Instruksi “setText” merupakan kebalikan dari getText, yaitu mengirimkan Text ke Text Field tertentu (dalam hal ini jTextField4). Klik kanan pada Form Balok, pilih Run File, hasilnya harus seperti ini.


Selamat Mencoba


Rahmadya Trias Handayanto