Sunday, December 18, 2016

Perancangan dan Implementasi Aplikasi Pembayaran Tagihan Sederhana

Pada post saya kali ini, saya akan membahas tentang perancangan aplikasi untuk pembayaran tagihan. Dalam hidup kita, sering kita jumpai atau kita alami sendiri bagaimana proses suatu pembayaran tagihan, misal tagihan listrik, tagihan air, dan lain sebagainya. Setiap proses pembayaran tagihan tersebut memiliki sebuah kesamaan. Misalnya tagihan listrik, air, dan telepon memiliki beberapa kesamaan yaitu diukur berdasarkan banyaknya penggunaan dan memiliki suatu tarif per satuan tertentu.

Untuk merancang sebuah program yang dapat melayani sistem tagihan ini, dapat kita gunakan design pattern Template untuk rancangan dasarnya. Design pattern Template adalah sebuah design pattern di mana kelas-kelas yang ada mengikuti sebuah pola/template dari sebuah kelas utama/superclass. Ciri-ciri dari design pattern ini adalah adanya satu atau beberapa kelas abstrak pada superclass yang harus di override terlebih dahulu. Selain itu di dalam superclas terdapat satu atau beberapa fungsi yang mendefinisikan bagaimana cara kelas-kelas abstrak tadi harus dijalankan.  Design pattern ini cocok untuk sistem di mana dibutuhkan proses-proses yang sebenarnya serupa antara yang satu dengan yang lainnya, sehingga semua fungsinya tidak perlu dibuat secara berulang-ulang, hanya perlu menulis fungsi yang perlu di override saja.

Dalam contoh kali ini, kita akan membuat sebuah sistem tagihan yang akan melayani tiga jenis layanan penagihan, yaitu air, listrik, dan telepon.

A. Diagram Kelas

Pertama-tama, kita buat terlebih dahulu diagram kelasnya:
Untuk menjalankan program, kita akan menggunakan sebuah kelas yang hanya memiliki fungsi main() yaitu kelas ProgramDemo, sehingga Class Diagramnya dalam aplikasi BlueJ adalah seperti berikut:

B. Implementasi dalam Bentuk Code

Untuk source code hasil implementasi dapat dilihat di sini.


C. Hasil Akhir

Hasil akhir dari program di atas adalah sebagai berikut:

























Referensi:

https://www.tutorialspoint.com/design_pattern/template_pattern.htm
http://www.oodesign.com/template-method-pattern.html

Sunday, December 4, 2016

Alur Kerja Instant Laundrymart


Pada post saya kali ini, saya akan membahas tentang alur kerja dari sebuah UKM laundry bernama "Instant Laundrymart". Usaha laundry ini sudah memulai usahanya sejak tahun 2014 dan beralamat di Jalan Raya Mulyosari, Surabaya. Usaha ini dimiliki oleh Pak Freddy. Usaha laundry ini mengusung sebuah keunggulan dibandingkan dengan usaha laundry lainnya yaitu memiliki sejumlah mesin laundromat yang memungkinkan konsumen mencuci sendiri pakaiannya hingga kering dan bersih. Berikut informasi alur kerja yang berhasil dihimpun berdasarkan hasil wawancara dengan Pak Freddy:

A. Use Case Diagram

Secara garis besar, sistem Instant Laundrymart memiliki tiga aktor utama, yaitu konsumen, petugas, dan pemilik. Berikut use case diagram dari tiga aktor tersebut:

B. Flow Diagram

Pada flow diagram berikut ini, aktor Petugas akan dibagi lagi menjadi beberapa bagian, yaitu Front Desk, Divisi Cuci, dan Divisi Setrika. Berikut flow diagram Instant Laundrymart:

C. Context Diagram

Untuk context diagram, usaha ini masih menggunakan sistem buku kas, sehingga diagram yang terbentuk masih sangat sederhana. Berikut context diagram-nya:

Lampiran:
- Rekaman wawancara: di sini

Sunday, November 27, 2016

Design Pattern - Interpreter

Pada post ini, saya akan membahas tentang salah satu Design Pattern yaitu Interpreter. Sebelumnya, apa itu "design pattern"? Design pattern adalah suatu bentuk solusi untuk menyelesaikan masalah yang sering kali dijumpai ketika mengembangkan suatu perangkat lunak, terutama yang menggunakan Object Oriented Programming (OOP) dalam proses pembuatannya, Dalam sejarahnya, sangat banyak design pattern yang dikembangkan untuk menyelsaikan beragam masalah. Salah satu yang paling populer adalah kumpulan design pattern yang dirancang oleh Erich Gamma, Richard Helm, Ralph Johnson dan John Vlissides pada  tahun 1994 yang ditulis dalam sebuah buku berjudul Design Patterns - Elements of Reusable Object-Oriented Software. Dalam buku tersebut, ada dua puluh tiga macam jenis design pattern yang memiliki ciri-ciri dan kegunaan masing-masing, salah satunya adalah design pattern "Interpreter".

A.  Penjelasan Singkat

 Interpreter adalah salah satu jenis design pattern yang cara kerjanya adalah menerjemahkan (interpreting) suatu kalimat atau ekspresi menjadi sebuah masukkan yang akan menghasilkan perilaku tertentu. Design pattern ini digunakan dalam sistem yang dimana menerjemahkan suatu kalimat menjadi sangat vital dalam fungsi kerjanya, seperti dalam penrjemahan perintah SQL, dimana inputnya merupakan sebuah kalimat utuh.

B. Contoh Struktur (Class Diagram) yang Digunakan

Untuk lebih jelasnya, kita akan mencoba membuat sebuah struktur program sebuah interpreter sederhana dan mengimplementasikannya menjadi sebuah program jadi dalam bahasa Java. Disini akan digunakan contoh dari Tutorialspoint (di sini). Struktur program yang akan kita buat dalam bentuk class diagram dapat dilihat sebagai berikut:



























Dalam contoh tersebut kita akan membuat sebuah program sederhana yang dapat menerjemahkan expresi logika "or" dan "and" Kelas utama dalam program ini adalah kelas InterpreterPatternDemo yang didalamnya terdapat fungsi main dari program ini. Kelas tersebut akan menggunakan kelas Expression, TerminalExpression, OrExpression, dan AndExpression. Kelas TerminalExpression, OrExpression, dan AndExpression merupakan turunan dari kelas Expression.

C. Source Code

Untuk source code yang digunakan dalam contoh ini dapat dilihat di sini atau dari sumbernya di Tutorialspoint (di sini)

D. Contoh Output

Dari source code pada link di atas, akan dihasilkan output sebagai berikut:


(Catatan: dalam contoh ini, input dan aturan dalam "or dan "and" sudah di-hardcode dalam program)

Sumber:
- https://www.tutorialspoint.com/design_pattern
- https://www.tutorialspoint.com/design_pattern/interpreter_pattern.htm


Wednesday, November 2, 2016

Struktur Kerja JNE In More Depth


Pada post yang sebelumnya (di sini), sudah dibahas mengenai visi-misi, organigram, dan SOP yang digunakan oleh JNE. Pada post saya kali ini, saya akan membahas tentang sistem informasi yang sudah dan dapat digunakan oleh JNE dan teknologi informasi yang sudah dan dapat digunakan.

A. Sistem Informasi yang Digunakan
Sistem informasi yang digunakan terbagi kedalam dua kelompok besar, yaitu Operating Support System dan Management Support System

1. Operating Support System

Operating Support System adalah sistem informasi yang digunakan untuk mendukung keperluan operasional suatu perusahaan. Operating Support System dibagi lagi menjadi beberapa bagian sebagai berikut:

a. Transaction Process System

JNE dalam melakukan transaksi menggunakan form pengiriman bernama AWB yang dicetak dari komputer. Form AWB berisikan informasi yang berkaitan dengan barang dan pengiriman. Selain itu data AWB juga masuk dalam sistem Cash Register untuk menyimpan data transaksi perharinya per petugas konter.

b. Enterprise Control System

JNE selain memiliki kantor cabang per kotanya, juga memiliki kios kios kecil yang ikut menerima dan menyerahkan kiriman barang dari dan ke pelanggan. Untuk melayani hal tersebut, Sistem JNE yang dimiliki oleh kios-kios kecil juga ikut terhubung oleh kantor cabang JNE pada setiap kota.

c. Process Control System

JNE memiliki system informasi yang mengelola barang, transaksi, dan informasi pengiriman yaitu My Orion. My Orion ini digunakan baik oleh petugas maupun pelanggan. Pelanggan dapat mengetahui informasi pengiriman barang melalui situs resmi JNE yang terhubung dengan My Orion. Transaksi yang terjadi perhari dikumpulkan terlebih dahulu untuk kemudian dimasukkan ke My Orion oleh petugas.

2. Management Support System

Managament Support System adalah sistem informasi yang digunakan untuk menunjang keperluan manajemen perusahaan. Management Support System juga dibagi menjadi beberapa bagian sebagai berikut:

a. Management Information System

JNE memiliki My Orion yang menyimpan informasi berguna seperti aktifitas pengiriman barang dari berbagai cabang sehingga dapat digunakan untuk mengukur kinerja dari suatu cabang maupun satu keseluruhan JNE itu sendiri, informasi ini tentunya bias dilihat oleh direktur-direktur dikantor pusat maupun pengurus dikantor cabang itu sendiri.

b. Decision Support System

Karena My Orion dapat menyimpan aktifitas pengiriman barang dan dapat mengukur kinerja dari suatu cabang maupun JNE secara keseluruhan, maka informasi dalam My Orion dapat digunakan sebagai bahan evaluasi perusahaan dan pengambilan keputusan suatu perusahaan. Contohnya dengan penutupan cabang merugikan ataupun pembukaan cabang baru.

c. Information Reporting System
Untuk keperluan pelaporan, My Orion juga dapat digunakan untuk melaporkan proses kegiatan kirim mengirim barang. Sementara untuk keperluan pelaporan pada proses  kerja internal perusahaan, JNE masih menggunakan berbagai jenis form dalam bentuk fisik.

d. Excecutive Information System
Untuk Excecutive Information Sysrem, JNE dapat menggunakan sistem yang memungkinkan setiap bidang kerja pada kantor pusat untuk dapat memantau kinerja setiap kantor cabang

C. Teknologi Informasi yang Digunakan
Untuk mendukung sistem informasi di atas, tentunya harus digunakan pula teknologi yang sesuai. Berikut adalah daftar perangkat yang dapat dan sudah digunakan oleh sistem informasi milik JNE:

1. Teknologi masukan (Input Technology)
a. Barcode Scanner
Untuk memindai barcode yang tercetak pada AWB, sehingga informasi pada suatu paket dapat dicari tanpa perlu memasukkan informasi ke computer secara manual (mengetik)

b. Mouse dan Keyboard
Untuk memasukkan input pada Personal Computer (PC) milik Counter

c. Sistem Point of Sales (POS)
Sistem Point of Sales dapat digunakan juga untuk sistem ini sebagai alternatif untuk semakin memudahkan proses transaksi.

2. Teknologi Pengeluaran (Output Technology)
a. Printer
Untuk mencetak berbagai jenis form yang digunakan, termasuk form AWB pada konter

3. Teknologi Perangkat Lunak (Software Technology)
a. My Orion
Merupakan sistem informasi utama yang dimiliki oleh JNE untuk memonitor proses pengiriman paket

b. Microsoft Excel (atau software spreadsheet lainnya)
Untuk pengganti sementara My Orion pada konter jika konter tidak dapat mengakses My Orion pada waktu itu

c. Database Management System (DBMS)
Digunakan untuk membuat database dan mengontrol transaksi data pada database


3. Teknologi Penyimpanan (Storage Technology)
a. Server
Untuk menyimpan data database perusahaan

4. Teknologi Komunikasi  ( Telecomunication Technology)
a. Telepon
b. Email
c. Internet

5. Unit Pemrosesan (Processing Machine/CPU)
a. System Unit

Sumber:
http://dionbarus.com/wp-content/uploads/2014/04/SOP-JNE.pdf

Sunday, October 30, 2016

Component Diagram dan Deployment Diagram dar Video Game "Tetris"

Pada post saya kali, saya akan membahas tentang Component Diagram dan Deployment Diagram. Component Diagram adalah diagram yang mendeskripsikan interaksi antar component (program executables, database, file .dll, dan lainnya)  dalam sebuah sistem software. Deploymen Diagram adalah diagram yang menggambarkan interaksi antara software dan hardware ketika software dijalankan. Untuk contoh, saya akan menggunakan software dari post saya yang sebelumnya.

A. Component Diagram


B. Deployment Diagram 

Sunday, October 16, 2016

Sequence Diagram, Class Diagram, CRC Card, Use Case Diagram, dan Activity Diagram dari Video Game "Tetris"

Tetris merupakan salah satu video game yang sudah sangat dikenal baik oleh masyarakat dunia. Game yang membutuhkan taktik dan koordinasi ini sangat sederhana namun merupakan salah satu batu loncatan dalam perkembangan dunia game. Dalam post saya kali ini, saya akan membedah source code dari salah satu versi Tetris yang ada (Sumber: zetcode.com/gui/wxwidgets/thetetrisgame) untuk membuat Activity Diagram, Use Case Diagram, CRC Card, Class Diagram, dan Sequence Diagram dari source code tersebut. Hal baru yang akan kita bahas di sini adalah Sequence Diagram dan Activity Diagram. Sequence Diagram adalah diagram yang menunjukan alur berjalannya sebuah fungsi dari sebuah kelas dari awal hingga akhir serta hubungan kerjanya dengan objek-objek atau fungsi-fungsi lainnya. Sementara Activity Diagram adalah diagram yang menunjukan alur kerja suatu program secara garis besar.

Dalam kasus ini, kode yang digunakan menggunakan library wxWidget. Pembuatan diagram di bawah tidak akan melibatkan fungsi-fungsi wxWidget yang digunakan.

A. Source Code

Source code yang akan digunakan terbagi menjadi delapan bagian:
1. Pengatur rancangan bentuk:

  • Shape.h
  • Shape.cpp
2. Pengaturan game logic pada Tetris dan mekanisme lainnya: 
  • Board.h
  • Board.cpp
3. Inisiator program Tetris:
  • Tetris.h
  • Tetris.cpp
4. Kelas main program Tetris:
  • main.h
  • main.cpp

Source code dapat dilihat di website sumber (zetcode.com/gui/wxwidgets/thetetrisgame) atau di github.com/antoniuskevin/pplkelasc

Contoh hasil:


B. Sequence Diagram

Pembuatan Sequence Diagram tidak akan terlalu rumit karena sebagian besar dari isi kode di atas adalah fungsi yang tidak berhubungan dengan objek lainnya.

C. Class Diagram

Dari source code di atas, dapat dibuat class diagram-nya sebagai berikut:


D. CRC Card

Dari class diagram di atas, dapat kita buat kumpulan CRC Card yang menggambarkan kelas-kelas di atas sebagai berikut:


E. Use Case Diagram

Dari CRC Card yang ada dapat kita buat Use Case Diagram dari program Tetris ini. Di Use Case Diagram ini, akan terdapat dua aktor, yaitu Player dan Computer/CPU 


F. Activity Diagram

Untuk yang terakhir, dari data yang ada kita dapat membuat Activity Diagram yang menggambarkan alur kerja dari game Tetris sebagai berikut:
Gambar full size dapat dilihat di github.com/antoniuskevin/pplkelasc


Catatan:
- Pembuatan diagram menggunakan software "Star UML", Microsoft Excel, Paint, dan situs web draw.io

Stuktur Kerja JNE Express



Pada post saya kali ini, saya akan memaparkan secara singkat struktur kerja dari perusahaan yang sudah tidak asing lagi bagi kita, yaitu JNE Express. Bagi yang belum tahu, JNE Express adalah salah satu perusahaan jasa pengiriman paket yang cukup besar di Indonesia. Perusahaan yang memiliki kantor pusat di Tomang, Jakarta ini sudah melayani masyarakat Indonesia sejak tahun 1990. Hingga kini, jasa JNE sudah banyak sekali digunakan masyarakat dalam proses pengiriman barang. Di era perdangan online yang semakin berkembang, jasa JNE juga seringkali digunakan untuk mengirimkan barang jualan ke tangan konsumen.

A. Visi dan Misi JNE Express

Berdasarkan website resmi JNE Express ( www.jne.co.id ), visi JNE Express adalah:"Untuk menjadi perusahaan rantai pasok global terdepan di dunia." Sementara misinya adalah:"Untuk memberi pengalaman terbaik kepada pelanggan secara konsisten."

B. Struktur Organisasi JNE Express

Karena JNE merupakan perusahaan jasa pengiriman barang, maka struktur organisasinya secara garis besar dapat dibagi menjadi dua, yaitu struktur di kantor pusat dan struktur di kantor cabang.

a. Struktur Organisasi Kantor Pusat
Berdasarkan blog resmi JNE cabang Bogor ( https://infoagenjne.wordpress.com/pengetahuan-jne/struktur-organisasi ), kantor pusat JNE memiliki struktur organisasi sebagai berikut:

Bagan Struktur Organisasi Kantor Pusat JNE


  • Komisaris: terdiri dari komisaris utama dan sebuah tim komisaris beranggotakan tiga orang
  • Direksi: terdiri dari seorang direktur utama dan empat direktur lainnya yang memimpin beberapa bidang kerja, yaitu direktur keuangan, direktur pelaksanaan, direktur operasional, dan direktur sales dan marketing
  • Direktur akan membawahi beberapa senior manager. Senior manager akan membawahi beberapa manager, dan manager akan membawahi beberapa supervisor


b. Struktur Organisasi Kantor Cabang
,Berdasarkan blog resmi JNE cabang Bogor ( https://infoagenjne.wordpress.com/pengetahuan-jne/struktur-organisasi ), sebuah kantor cabang terdiri dari seorang kepala cabang yang membawahi beberapa departemen, yaitu:

Bagan Struktur Organisasi Kantor Cabang JNE


  • Departemen Keuangan: bertugas mengatur keuangan di kantor cabang
  • Departemen Operasional Inbound: bertugas mengatur proses pengiriman paket dengan alamat tujuan di daerah tempat kantor cabang tersebut berada
  • Departemen Operasional Outbound: bertugas mengatur proses pengiriman paket dengan alamat tujuan di luar daerah tempat kantor cabang tersebut berada 
  •  Departemen Customer Service: bertanggung jawab dalam pelayanan pengaduan pelanggan
  • Departemen Sales dan Marketing Retail : bertanggungjawab terhadap penjualan yang bersifat retail, termasuk didalamnya counter, kantor perwakilan, dan agen, serta melakukan sosialisasi, market, dan branding
  • Departemen Sales Coorporate :bertanggungjawab terhadap penjualan bersifat korporat dan kredit serta melakukan sosialisasi, market dan branding
  • Departemen Information Technology (IT) : bertanggungjawab terhadap kelengkapan dan pemeliharaan teknologi informasi hardware dan software
  • Departemen General Affair dan Purchasing bertanggungjawab melakukan pengadaan, kontrol dan pemeliharaan kelengkapan kantor
  • Departemen Human Resource Development /HRD: bertanggungjawab terhadap administrasi personalia dan pengembangan personalia

C. Standar Operasional Prosedur (SOP) JNE Express

JNE Express memiliki sebuah sistem SOP  pelayanan pelanggan yang dinamakan "Standar Pelaksanaan Layanan Sepenuh Hati". SOP ini terdiri dari tiga tahapan besar yang mencakup pemberian informasi kepada calon pelanggan hingga layanan purna jual/aftersales

a, Tahap 1: Ketika pelanggan bertanya dahulu dan memastikan pilihannya kepada JNE

  • Menyediakan kontak layanan informasi yang terbuka dan mudah dalam akses (nomor handphone, email, dll) 
  • Menyediakan ruang/meja khusus layanan informasi produk JNE dan umum perusahaan, buku informasi/panduan counter/tarif
  •  Memastikan pengetahuan seluruh staf tentang perusahaan dan produk sangat baik 
  • Komunikasi dalam memberikan keterangan informasi kepada pelanggan sangat meyakinkan 
  • Standar komunikasi : SMS, mengangkat telepon, email dll diseragamkan
b. Tahap 2: Ketika pelanggan mengirim atau melaksanakan transaksi
  • Memastikan tampilan bangunan yang standard dan memberikan keyakinan pada pelanggan 
  • Memastikan kemudahan akses pelanggan untuk menuju tempat transaksi (petunjuk dll) 
  • Memastikan pelanggan mudah dan aman dalam memarkir kendaraan 
  • Memastikan kenyamanan pelanggan dalam mengantri (kursi, kartu antrian, hiburan televisi/radio/music, permen, minuman, pengatur udara, bahan bacaan, dll)
  •  Melayani transaksi dengan standar pelayanan transaksi JNE (dari greeting sampai akhir) 
  • Melakukan transaksi sesuai SOP
  •  Memastikan pengembalian uang dengan cepat dan tepat, hindari uang-uang yang tidak baik/rusak 
  • Sediakan layanan lebih (bungkus kiriman, pastikan alat bungkus tersedia baik, dan petugas membantu membungkuskan jika perlu, penyediaan pembungkus (bayar/gratis), form alamat, dll)
  •  Memastikan performa petugas cash sales counter dan staf kantor yang baik dan mengesankan 
  • Memastikan layanan pickup sesuai SOP dan sesuai kebutuhan pelanggan (ketepatan waktu) 
  • Menyediakan payung JNE di counter untuk kemudian staf 
  • Counter membantu pelanggan yang kehujanan ketika akan mengirim atau setelah mengirim, untuk memberikan pengalaman pelanggan yang mengesankan
c. Tahap 3: Ketika pelanggan telah setelah selesai bertransaksi dan produk dieksekusi) 
  • Memastikan SOP penyimpanan dan serah terima dengan baik 
  • Menyimpan paket di counter dengan baik dan aman dan memberi keyakinan kepada pelanggan bahwa paket titipannya berada dalam kondisi aman
  •  Melakukan kontrol kiriman-kiriman strategis untuk memastikan kiriman dieksekusi dengan baik oleh operasional (jadi tidak putus setelah transaksi)   
d. Tahap 4: Purna Jual
  • Memberikan layanan berita kiriman bagi kiriman premium : SS, YES 
  • Memberikan layanan berita pengiriman bagi kiriman strategis (apapun service nya) 
  • Memberikan berita pengiriman secara bertahap (sebelum sampai pun) bagi kiriman-kiriman strategis atau pelanggan yang strategis, artinya harus melakukan kontrol status kiriman. Jangan sampai pelanggan komplain/bertanya duluan pada injure time / batas ETD, karena ini akan membuat tidak puas pelanggan 
  • Menyediakan layanan komplain, klaim dan informasi status kiriman dengan mudah dan cepat (telepon, email, meja informasi langsung, dll)
  •  Memastikan setiap komplain terselesaikan dan dikontrol. Tidak ada yang tertunda 
  • Mengunjungi pelanggan (urutan besar dan strategis) ke rumah/kantor untuk mendengar evaluasi atau memberikan gift 
  • Menghampiri pelanggan yang sedang mengantri, mengajak bicara, meminta evaluasi layanan, atau memberikan gift
  •  Memberikan ucapan selamat (HUT, Hari besar, dll) kepada pelanggan baik untuk pelanggannya, atau sanak keluarganya (akan menjadi merasa sangat terhormat jika kita tau tanggal lahir anak, istrinya), melalui Facebook atau data lain 
  • Memberikan ruang yang mudah untuk pelanggan menyampaikan aspirasi, saran dan kritik (memalui Kotak Saran, SMS, telepon, meja informasi, dll)  

Sumber lain yang digunakan:
http://dionbarus.com/wp-content/uploads/2014/04/SOP-JNE.pdf