Post on 12-Nov-2020
1.1 Tujuan Praktikum
1. Praktikan mampu memahami konsep permodelan dinamis menggunakan UML baik ditahap analisis maupun
tahap perancangan.
2. Praktikan mampu menggambarkan alur sistem ke dalam activity dan sequence diagram.
3. Praktikan mampu memahami alur kodingan sistem yang akan dibuat dan menggambarkannya dalam bentuk
activity dan sequence diagram.
1.2 Perlengkapan Praktikum
1. Software Power Designer.
2. Modul 3 Praktikum APSI.
1.3 Landasan Teori
1.3.1 Model Dinamis
Setelah model obyek dibuat, langkah selanjutnya di fase analisis adalah memodelkan cara sistem dan
obyek-obyek di dalamnya beroperasi dan bekerja sama satu sama lain. Pemodelan ini disebut pemodelan
dinamis. Pemodelan dinamis terdiri dari dua hal, yaitu :
● pemodelan selama tahap analisis scara logik (memastikan bahwa setiap operasi mungkin dilakukan di
dalam sistem);
● pemodelan selama tahap perancangan secara fisik (mendefinisikan method di kelas-kelas yang sesuai).
UML menyediakan empat diagram dasar untuk memodelkan dinamika alur informasi di dalam sistem,
yaitu sequence diagram, collaboration diagram, state transition diagram, dan activity diagram. Dalam
praktikum modul 4 hanya membahas mengenai sequence diagram dan activity diagram.
1.3.2 Sequence Diagram
Sequence Diagram digunakan di UML untuk menggambarkan deskripsi setiap skenario di dalam Use
Case. Sequence Diagram memodelkan obyek-obyek yang mengambil peranan di dalam skenario dan
menggambarkan interaksinya. Selama fase analisis, sequence diagram mencerminkan suatu interkasi.
Selama fase perancangan, setiap interaksi dikonversi ke dalam pemanggilan method sesuai dengan bahasa
pemroraman yang dipilihnya.
Setiap sequence diagram :
● mendeskripsikan use case atau satu skenario di dalam sebuah use case secara diagramatik;
● mengidentifikasi obyek-obyek yang terlibat di setiap proses;
● mengidentifikasi aksi atau peristiwa yang terjadi di setiap proses;
● mengidentifikasi informasi apa saja yang harus dikirim di sekitarnya untuk setiap proses;
● mengidentifikasi respon-respon apa saja yang diperlukan setelah setiap aksi atau peristiwa.
System analyst harus membuat kurang lebih satu sequence diagram untuk setiap use case. Use case
dapat memiliki lebih dari satu alur atau cabang yang muncul ketika keputusan dibuat di dalam aliran informasi.
Proses recall setiap jalur berbeda yang ada di use case, yaitu satu jalur tanpa cabang, dinamakan sebagai
skenario. Satu sequence diagram umumnya digambarkan untuk setiap skenario di dalam use case. Sequence
diagram menggambarkan aliran informasi dalam periode waktu tertentu.
Gambar 1 Struktur Model Sequence Diagram
Pada Gambar 1 Actor1 memanggil task1 pada object1 (instan dari Class1). Sebagai bagian dari
aktifasi ini, object1 harus memanggil task2 pada object2, dengan segera obyek ini dihapus setelah method
task2 diselesaikan. Object1 selanjutnya memanggil task3 pada object3 untuk menyelesaikan transaksi.
Object3 tidak pernah ada sebelum dibutuhkan oleh Object1 untuk memanggil task3. Garis hidup aktor di atas
digambarkan sebagai persegi panjang yang tidak terputus. Penggambaran ini tidaklah bersifat wajib.
Namun, karena aktornya berupa orang atau sistem eksternal lain, maka garis hidupnya tak akan pernah
berakhir pada konteks sistem ini. Hal ini diasumsikan bahwa aktor aktor tersebut berstatus aktifasi yang
berkelanjutan.
1.3.3 Activity Diagram
Activity Diagram menggambarkan keterkaitan obyek dengan alur kerja dan mendeskripsikan pemrosesan
secara paralel. Setiap use case memiliki satu Activity diagram. Aktifitas juga dapat disebut sebagai sebuah
method atau kelompok method.
Simbol dalam activity diagram:
Gambar 2 Simbol Activity Diagram
1.3.4 Contoh Kasus
1.3.4.1 Penjelasan Singkat
Hotel Horison Bandung membutuhkan paket piranti lunak komputer untuk otomatisasi beberapa
pekerjaan yang saat ini dilakukan secara manual oleh staf hotel. Hotel terdiri dari kamar hotel yang disewakan
ke tamu hotel. Informasi yang relevan untuk setiap kamar adalah :
• Nomor Kamar
• Harga Dasar
• Occupancy Maksimum
• Tipe Kamar (single, double, twin, executive, suite)
Harga kamar adalah harga kamar dasar dengan perubahan harga untuk setiap musim, tanggal, atau
peristiwa tertentu. Tamu potensial dapat memesan satu atau lebih kamar untuk periode tertentu
menggunakan telepon. Reservasi ini ditangani oleh petugas reservasi. Tamu potensial meminta tipe
ruangan, tanggal kedatangan, durasi (atau tanggal keberangkatan). Fasilitas pencarian dibuat untuk
mengetahui ketersediaan kamar kosong untuk tanggal yang diminta. Jika ditemukan kamar kosong,
selanjutnya customer diberikan informasi tentang detil dan harganya.
Jika diterima, reservasi sementara dibuatkan. Reservasi sementara ini disimpan untuk durasi yang
telah dimasukkan datanya oleh petugas reservasi. Reservasi sementara ini dimodifikasi menjadi reservasi
tetap ketika pembayaran deposit diterima dan dikonfirmasi. Reservasi tetap ini akan menjadi acuan tentang
waktu reservasi awal.
Penerima tamu juga dapat membuat reservasi untuk tamu potensial yang langsung tiba di tempat tanpa
reservasi. Pembayaran deposit harus dibuat pada saat reservasi awal. Perlu dicatat waktu tamu check in dan
waktu tamu check out. Telepon ruangan dapat diaktifkan/dinonaktifkan pada saat check in/check out dengan
menggunakan monitor logging panggilan telepon.
1.3.4.2 Use Case Diagram
Gambar 3 Use Case Diagram Sistem Hotel
1.3.4.3 Use Case Form
Table 1 Use Case Form Input Reservasi
1.3.4.4 Model Dinamis Tahap Analisis
Gambar 4 Activity Diagram Tahap Analisis
Gambar 4 mengambarkan contoh activity diagram pada tahap analisis dengan mengambil salah satu use
case yaitu input reservasi. Dalam tahap ini juga harus digambarkan sequence diagram dengan alur sesuai
dengan activity diagram pada gambar 4.
1.3.4.5 Model Dinamis Tahap Perancangan
Gambar 5 Sequence Diagram Tahap Perancangan
Gambar 5 merupakan contoh sequence diagram pada tahap perancangan dengan mengambil salah satu use
case yaitu input reservasi. Ditahap perancangan lebih condong pada alur kodingan sistem yang akan dibuat
berbeda dengan sequence pada tahap analisis yang menggambarkan alur sistem. di tahap ini seharusnya dibuat
activity diagram seperti alur sequence pada gambar 5.
1.3.5 Langkah-langkah Pembuatan sequence diagram
1. Buka Power Designer 12.
2. Klik File New.
3. Pilih Object Oriented Model.
4. Pilih “Sequence Diagram”.
new reservation
reservationNumber
setReservationNumber()
executequery()
getCustomerData()
submitcustomerdata
price
setPrice()
executequery()
getReservationData()
submitReservation
roomType
setRoomType()
ExecuteQuery()
getRoomType()
submitRoomType
reseptionist
:GUI :ActionListener :DBAccess:RoomType :Price :NoReservation
reservationNumber
setReservationNumber()
executequery()
getCustomerData()
submitcustomerdata
price
setPrice()
executequery()
getReservationData()
submitReservation
roomType
setRoomType()
ExecuteQuery()
getRoomType()
submitRoomType
5. Pada Palette, pilih actor, untuk membuat actor dari sistem yang dibuat. Kemudian klik 2 kali pada icon
aktor untuk mengganti nama aktor.
6. Pilih Object pada palette, kemudian klik 2 kali pada objek untuk mengganti nama objek.
7. Klik Message pada palette, kemudian klik 2x pada panah Message, untukmemberi nama objek.
8. Pilih activation pada palette.
9. Kemudian pilih return Message pada palette, kemudian klik 2x pada Panah Return Message untuk
mengganti nama dari Return Message.
10. Ulangi langkah 7,8, dan 9 untuk interaksi selanjutnya.
1.3.6 Langkah-langkah Pembuatan activity diagram
1. Buka Power Designer 12.
2. Klik File New.
3. Pilih Object Oriented Model.
4. Pilih “Activity Diagram”.
5. Pada Palette pilih Organization unit Swimlane, kemudian Klik 2 kali Pada kolom Organization unit,
kemudian ubah nama Organization Unit.
6. Pada palette, pilih Node Start, letakkan node start pada organization unit awal alur sistem dimulai.
7. Klik node Activity pada palette, letakkan setelah node start. Klik 2x pada node activity kemudian ganti nama
node tersebut.
8. Setelah itu, hubungkan antar activity menggunakan panah “flow”.
9. Setelah seluruh aktivitas dibuat dan flow dibuat, akhiri dengan node “end”.
1.4 Praktikum
Kasus :
TOSERBA CAHAYA KARTIKAH SEJATI adalah salah satu TOSERBA terbesar yang ada di
Republik Indonesia tercinta. TOSERBA ini sangat menjunjung tinggi rasa nasionalisme, sehingga hampir 90%
karyawan mereka adalah orang-orang pribumi. TOSERBA CAHAYA KARTIKAH SEJATI sudah melayani
pelaggan-pelanggannya sejak tahun 1991 dan sudah mendirikan cabang di 3 kota besar di Pulau Jawa, yakni :
Jakarta (terletak di Jakarta Timur), Surabaya, dan Bandung. Pendapatan TOSERBA ini terus meningkat dari
tahun ke tahun, hingga pada akhir tahun 2011, pendapatan TOSERBA mengalami penurunan secara signifikan.
Selidik punya selidik, ternyata salah satu faktor penyebab turunnya pendapatan TOSERBA ini adalah
menurunnya tingkat kepuasan pelanggan terhadap pelayanan (khususnya sistem pembayaran) yang diberikan
oleh karyawan TOSERBA ini. Sistem yang ada dirasa kurang tanggap dan cepat dalam mengidentifikasi
keinginan pelanggan yang selalu ingin dilayani secara cepat dan tepat. Selain itu, struk pembayaran yang ada
kadang-kadang tidak sesuai dengan jumlah pembelian yang dilakukan oleh pelanggan. Dampaknya, pelanggan
mulai meninggalkan TOSERBA ini dan memilih TOSERBA lain dengan sistem pelayanan yang lebih nyaman
bagi mereka.
Temuan tersebut membuat Noor Kartikah Sejati, CEO sekaligus pendiri TOSERBA ini berpikir untuk
mendesain ulang proses bisnis yang ada, khususnya pada sistem pembayaran atau POS (Point of Sales). Pada
akhirnya, setelah berpetualang mencari ide dan ilham dari Yang Maha Kuasa, akhirrnya Jeng Noor (Sapaan
akrab CEO) beserta tim, berhasil membuat proses bisnis baru pada sistem POS yang ada.
TOSERBA CAHAYA KARTIKAH SEJATI secara bertahap membuat perubahan pada bisnisnya.
Perbaikan proses bisnis yang ia inginkan dengan penambahan sistem pembayaran atau POS (Point of Sales)
telah ia dilakukan dengan analisis sistem berupa use case. Proses bisnis dimulai saat pelanggan menghampiri
kasir untuk melakukan transaksi pembayaran. Kasir kemudian menggunakan sistem POS untuk mencatat detail
barang-barang yang dibeli oleh pelanggan. Selanjutnya, sistem akan menampilkan detail list barang yang
dibeli beserta total harga yang harus dibayar pelanggan. Pada tahap berikutnya, pelanggan memasukkan
informasi pembayaran (bisa cash, debit, atau credit card) dimana informasi pembayaran ini akan divalidasi
dan disimpan oleh sistem. Proses bisnis berakhir saat sistem meng-update inventori barang terkait dan
pelanggan menerima bukti pembayaran beserta barang-barang yang mereka beli.
Buatlah activity diagram dan sequence diagram di tahap analisis dan perancangan untuk use case input
barang!
Use case diagram Toserba:
Gambar 6 Use Case Diagram Toserba
Untuk membantu pembuatan activity dan sequence diagram ditahap perancangan, berikut merupakan
kodingan untuk input barang menggunakan MVC.
1. inputBarang.jsp <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <link href="css/style.css" rel="stylesheet" type="text/css"/> <title>MODUL IV</title> </head> <body> <div id=main> <div id=header>
<p class="opening">SELAMAT DATANG DI PRAKTIKUM WEB BASED 2012 ENJOY YOUR LESSON :D</p>
</div> <div id=content> <div id=content_kiri> <div id=content_menu> <ul> <li><a href="index.jsp">Home</a></li>
<li><a href="inputBarang.jsp">Input Barang</a></li> <li><a href="#">About Us</a></li> <li><a href="#">Contact Us</a></li> <li><a href="#">Tutorial</a></li> <li><a href="#">Download</a></li> </ul> </div>
</div> <div id=content_kanan> <div id=content_kanan_dalam>
<form action="http://localhost:8081/apsi3/ActionControl?action=input_barang" method="post">
<center> <table cellpadding=2 cellspacing=1 border="1" bgcolor="lightblue">
<tr bgcolor="lightblue"> <td valign=top> <b>ID Barang<sup>*</sup></b> <br />
<input type="text" name="id_brg" value="" size=20 maxlength=20></td>
<td valign=top> <b>Nama Barang<sup>*</sup></b> <br />
<input type="text" name="nama_brg" value="" size=25 maxlength=20></td>
</tr> <tr bgcolor="lightblue"> <td valign=top> <b>Jumlah<sup>*</sup></b> <br />
<input type="text" name="jml_brg" value="" size=5 maxlength=125> <br /></td> <td valign=top> <b>Harga<sup>*</sup></b> <br />
<input type="text" name="harga_brg" value="" size=15 maxlength=8></td>
</tr> <tr bgcolor="lightblue"> <td align=center colspan=2>
<input type="submit" value="Submit"> <input type="reset" value="Reset">
</td> </tr> </table> </center> </form> </div> </div> </div> </div> <div id=footer> Design by PRODASE - © Copyright 2012 - prodaslab.com </div> </body> </html> 2. Controller – ActionControl.java package controller; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import service.Databaseakses; import service.ManageAction; /** * Servlet implementation class ActionControl */ public class ActionControl extends HttpServlet { private static final long serialVersionUID = 1L; public ActionControl(){ super(); } private Databaseakses database=null; private static final byte input_barang = 0; private static final byte view_barang = 0; private String[] COMMAND = {"input_barang","view_barang"}; private int identifyAction(String action){ for (int i=0; i<COMMAND.length; i++){ if (action.equals(COMMAND[i])){ return i; } } return -1; }
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); }
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int action = identifyAction(request.getParameter("action")); String nextPage = ""; switch (action) { case input_barang: nextPage = inputBarang(request, response); break; case view_registrasi: nextPage = viewBarang(request, response); break; default: nextPage="inputBarang.jsp"; break; } RequestDispatcher dispatcher =request.getRequestDispatcher(nextPage); dispatcher.forward(request, response); } private String inputBarang(HttpServletRequest request, HttpServletResponse response){ String nextPage=""; String id_brg = request.getParameter("id_brg"); String nama_brg = request.getParameter("nama_brg"); String jml_brg = request.getParameter("jml_brg");
String harga_brg = request.getParameter("harga_brg"); try {
nextPage = ManageAction.getInstance(database, request, response).inputDataBarang(id_brg, nama_brg, jml_brg, harga_brg);
} catch (Exception e) { e.printStackTrace(); } return nextPage; } private String viewBarang(HttpServletRequest request, HttpServletResponse response){ String nextPage=""; try {
nextPage = ManageAction.getInstance(database, request, response).viewDataBarang(); } catch (Exception e) { e.printStackTrace(); } return nextPage; } } 3. Service-ManageAction.java package service; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import model.BarangBean; public class ManageAction { private Databaseakses database; private static ManageAction instance; private HttpServletResponse response; private HttpServletRequest request;
private ManageAction(Databaseakses database, HttpServletRequest request, HttpServletResponse response){ this.database = database; this.request = request; this.response = response; }
public static ManageAction getInstance(Databaseakses database, HttpServletRequest request, HttpServletResponse response){
if(instance == null){ instance = new ManageAction(database, request, response); } return instance; } public String inputDataBarang(String id_brg, String nama_brg, String jml_brg, String harga_brg){ String address=""; try { BarangBean bean = new BarangBean(); bean.setId_brg(id_brg); bean.setNama_brg(nama_brg);
bean.setJml_brg(jml_brg); bean.setHarga_brg(harga_brg);
String[] query = {"insert into barang (id_brg, nama_brg, jml_brg, harga_brg) values('"+id_brg+"','"+nama_brg+"','"+jml_brg+"','"+harga_brg+"')"};
database.getInstance().executeUpdateQuery(query); System.out.println(query[0]); address = "/ActionControl?action=view_barang"; } catch (Exception e) { e.printStackTrace(); } return address; } public String viewDataBarang() throws SQLException{ String address=""; String query = "select*from barang"; ResultSet rs = database.getInstance().executeSelectQuery(query); ArrayList DataList = new ArrayList(); BarangBean barang; while(rs.next()){ barang = new BarangBean(); barang.setId_brg(rs.getString(1)); barang.setNama_brg(rs.getString(2)); barang.setJml_brg(rs.getString(3)); barang.setHarga_brg(rs.getString(4)); DataList.add(barang); } request.setAttribute("viewBarang", DataList); address = "Results/success.jsp"; return address; } } 4. Model-BarangBean.java package model; import java.io.*; import java.util.*; public class BarangBean { private String id_brg; private String nama_brg; private String jml_brg; private String harga_brg; public BarangBean() { id_brg=""; nama_brg=""; jml_brg=""; harga_brg=""; } public String getId_brg() { return id_brg; } public String getNama_brg() { return nama_brg; } public String getJml_brg() { return jml_brg; } public String getHarga_brg() { return harga_brg;
} public void setId_brg(String id_brg) { this.id_brg =id_brg; } public void setNama_brg(String nama_brg) { this.nama_brg =nama_brg; } public void setJml_brg(String jml_brg) { this.jml_brg=jml_brg; } public void setHarga_brg(String harga_brg) { this.harga_brg=harga_brg; } 5. View Barang-success.jsp <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <jsp:useBean id="success" class="model.FormBean" scope="request"/> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <link href="css/style.css" rel="stylesheet" type="text/css"/> <title>MODUL IV</title> </head> <body> <div id=main> <div id=header>
<p class="opening">SELAMAT DATANG DI PRAKTIKUM APSI 2012 ENJOY YOUR LESSON :D</p>
</div> <div id=content> <div id=content_kiri> <div id=content_menu> <ul> <li><a href="index.jsp">Home</a></li>
li><a href="inputBarang.jsp">Input Barang</a></li> <li><a href="#">About Us</a></li> <li><a href="#">Contact Us</a></li> <li><a href="#">Tutorial</a></li> <li><a href="#">Download</a></li> </ul> </div> </div> <div id=content_kanan> <div id=content_kanan_dalam> <center>
<table cellpadding=1 cellspacing=1 border="1" > <font size=4> <tr bgcolor="lightblue"> <th>ID Barang</th> <th>Nama Barang</th> <th>Jumlah Barang</th> <th>Harga Barang</th>
</tr> <c:forEach var="view" items="${viewBarang}">
<tr bgcolor="lightblue"> <td>${view.id_brg}</td> <td>${view.nama_brg}</td> <td>${view.jml_brg}</td> <td>${view.harga_brg}</td>
</tr> </c:forEach>
</font> </table> </center> </div> </div> </div> </div> <div id=footer> Design by PRODASE - © Copyright 2012 - prodaslab.com </div> </body> </html>