Saturday, December 17, 2016

Perancangan Perangkat Lunak Menggunakan Design Pattern

Perangkat lunak yang dibahas disini adalah sebuah website  yaitu takequest.com. Website ini merupakan website yang dirancang sebagai pencarian pekerjaan non-formal dengan mengimplementasikan konsep gamification. Dimana user bisa kita ibaratkan sebagai pemain. User dapat membuat permintaan(quest) dan mengambil quest tersedia yang dibuat oleh user lain. User pembuat quest dapat mengonfirmasi user lain yang mengambil permintaanya. Jika permintaan diselesaikan, user yang mengambil quest akan mendapatkan experience point setelah dikonfirmasi dulu oleh pemilik quest. 

Takequest dibangun dengan menggunakan framework Codeigniter. Design Pattern yang digunakan diimplementasikan oleh Codeigniter. Di Codeigniter sendiri ada banyak design pattern yang diimplementasikan, tapi disini saya akan menjelaskan pemakaian singleton pattern.


Singleton sendiri dimaksudkan untuk membuat agar class memiliki satu instance dan meneyediakan hak akses global untuk mengaksesnya, dan hanya diinisialisasi saat di awal, jadi tidak perlu mengakses objek dan tidak perlu instansiasi lagi jika sudah pernah mengakses sebelumnya . di Singleton juga membuat class yang bertanggungjawab untuk inisialisasi, akses dan enforcement. Mendeklarasikan instance sebagai private static data member. Menyediakan public function static member yang merangkum inisialisasi dan akses ke instance.

Menurut sumber lain dikatakan juga bahwa MVC di Codeigniter adalah sebuah design pattern juga. MVC pattern sendiri tidak termasuk GoF namun, beberapa pendapat mengatakan bahwa MVC merupakan design pattern jika dilihat dari sudut pandang yang berbeda. Jadi di sini saya akan menjelaskan juga Design Pattern - MVC pattern. 

Berikut penjelasan mengenai Design Pattern - MVC pattern yang bersumber dari tutorialspoint.com 

MVC Pattern adalah kepanjangan dari Model-View-Controller Pattern. Pattern ini digunakan untuk memisahkan bagian kepentingan dari aplikasi.

Model - Model menggambarkan objek yang membawa data. Dia juga memiliki logic untuk mengupdate kondisi di controller.

View - menampilkan visualisasi dan juga data yang telah diambil dari model.

Controller - Controller mengontrol aliran data dari/ke model dan memperbaharuinya di view kapanpun terjadi perubahan. Dia menjadi penengah antara keduanya(model dan view).

Gambaran Umum MVC pattern


gambaran umum MVC-Pattern

Prototype Implementasi System


1. Use Case Diagram

2. CRC-card
crc card-1


crc card-2





crc-card-3

3. Class Diagram

Class Diagram

Implementasi Design Pattern pada Class
    
Singleton Pattern
Salah satu pattern yang digunakan adalah singleton pattern. Singleton pattern terlihat saat pemanggilan objek. Namun Codeigniter sendiri memiliki singleton pattern yang sedikit berbeda. Jika biasanya pemanggilan di php seperti ini



return $className::instance();   

Untuk codeigniter sendiri adalah seperti ini

$this->load->view('homepage/home_head');
$this->load->model('main_model');
$this->load->view('userpage/user_nav',$data2);


Dengan kegunaan yang sama. Loader akan melakukan pemeriksaan untuk melihat apakah kelas telah dimuat sebelumnya dengan memeriksa registri kelas dimuat. Diam-diam mengabaikan permintaan dengan entri log debug jika telah dimuat. Instansiasi kelas dengan apa pun parameter yang ditetapkan, membuat referensi ke objek yang dalam framework (singleton) objek dinamai kelas, atau nama kustom apa pun yang telah di passing. Menyimpan referensi, mengabaikan upaya selanjutnya untuk memuat jika sudah dimuat sebelumnya.

Pemakaiannya digunakan saat pemanggilan class Main_model yang hanya di instansiasi di awal oleh loader dan bisa diakses global oleh class Core.

MVC Pattern

MVC pattern digunakan di model, view dan controllernya. Terlihat pada gambar diatas yang merupakan bagian dari class diagram. Controller core menjadi pemisah antara model dan view. Main_model yang menjadi model beriksi logika yang dapat mengupdate kondisi di controller sesuai dengan objek yang berisi data. Kemudian melalui controller core yang telah diperbaharui akan menampilkan visualisasi dari data yang telah didapat dari model main_model ke view.

4. Class Realization

5. Sequence Diagram


Sign in


Sign up


Lihat quest


Drop quest


Konfirmasi quest berhasil


Konfirmasi quest gagal

Konfirmasi pengambilan quest


Delete quest


Create quest


Take quest


6. Component Diagram


7. Deployment Diagram
deployment diagram

8. Activity Diagram

activity diagram 1

activity diagram 2
               

activity diagram 3

activity diagram 4


Tampilan web:



Link Website : takequest.com
source code : https://github.com/yaukings/TakeQuest

referensi:
https://www.tutorialspoint.com/design_pattern/mvc_pattern.htm
https://www.tutorialspoint.com/design_pattern/singleton_pattern.htm
http://stackoverflow.com/questions/14619642/codeigniter-design-patterns
https://forum.codeigniter.com/thread-39688.html
http://www.swview.org/blog/mvc-design-pattern-or-architectural-pattern
https://www.quora.com/Is-MVC-a-design-pattern-Why





Sunday, December 11, 2016

Analisis Perancangan Sistem Informasi - My JNE

Analisis Perancangan Sistem Informasi My JNE 


MyJNE adalah aplikasi berbasis android yang beroperasi layaknya website JNE. Aplikasi ini lebih digunakan oleh pengguna jasa JNE. Pengguna dapat mengetahui(tracking) barang yang dikirimkan oleh JNE. Selain itu pengguna juga dapat mengecek tarif pengiriman, cek lokasi pengiriman, dan membuat oreder dari toko online dan menggunakan JNE sebagai mediasi pembayaran melalui aplikasi My JNE.

Analisis Sistem

Deskripsi Perusahaan
JNE merupakan perusahaan yang bergerak dalam bidang pengiriman dan logistik yang bermarkas di Jakarta, Indonesia. Nama resminya adalah Tiki Jalur Nugraha Ekakurir (Tiki JNE).

PT Tiki Jalur Nugraha Ekakurir didirikan pada tanggal 26 November 1990 oleh H. Soeprapto Suparno. Perusahaan ini dirintis sebagai sebuah divisi dari PT Citra van Titipan Kilat (TiKi) untuk mengurusi jaringan kurir internasional.

Bermula dengan delapan orang dan kapital 100 juta rupiah, JNE memulai kegiatan usahanya yang terpusat pada penanganan kegiatan kepabeanan, impor kiriman barang, dokumen serta pengantarannya dari luar negeri ke Indonesia. Pada tahun 1991, JNE memperluas jaringan internasional dengan bergabung sebagai anggota asosiasi perusahaan-perusahaan kurir beberapa negara Asia (ACCA) yang bermakas di Hong Kong yang kemudian memberi kesempatan kepada JNE untuk mengembangkan wilayah antaran sampai ke seluruh dunia.


Karena persaingannya di pasar domestik, JNE juga memusatkan memperluas jaringan domestik. Dengan jaringan domestiknya TiKi dan namanya, JNE mendapat keuntungan persaingan dalam pasar domestik. JNE juga memperluas pelayanannya dengan logistik dan distribusi. Selama bertahun-tahun TiKi dan JNE berkembang dan menjadi dua perusahaan yang punya arah masing-masing. Karena ini kedua perusahaan tersebut menjadi saingan. Akhirnya JNE menjadi perusahaan diri sendiri dengan manajemen sendiri. JNE membuat logo sendiri yang membedakannya dari TiKi.

Visi Misi JNE

Visi: 
  • Untuk menjadi perusahaan rantai pasok global terdepan di dunia
  • Sukses hanya dapat dicapai melalui kerjasama usaha integral dalam perkembangan. Mendorong proses belajar dan berubah menuju pertumbuhan, kesempurnaan dan pencapaian keuntungan. 
  • Untuk menjadi perusahaan internasional yang sukses adalah penting bagi JNE untuk memiliki jaringan usaha yang kuat di Indonesia yang merupakan salah satu negara target investasi dan pasar yang strategis di mata dunia. 
  • Perpaduan layanan pengiriman, kepabeanan, pergudangan dan pendistribusian di bawah satu atap memberikan solusi bagi kebutuhan distribusi dunia 7 perdagangan melalui internet yang akan menjadi gaya hidup masyarakat modern pada abad mendatang
Misi: 

  • Untuk memberi pengalaman terbaik kepada pelanggan secara konsisten
  • Melayani segenap lapisan masyarakat Indonesia baik perumahan maupun perkantoran dan industri melalui jaringan layanan pengiriman ekspres. 
  • Memadukan efektivitas, efisiensi dan fleksibilitas jasa yang prima untuk menjadikan JNE pilihan utama dalam pengiriman dokumen, paket dan kargo peka waktu di Indonesia. 
  • Menjadi sebuah perusahaan jasa ekspres nasional berstandar layanan internasional

Struktur Organisasi JNE
Adapun tugas dan tanggung jawab yang tercantum dalam struktur organisasi adalah sebagai berikut:

1. President Director

Tugas dan tanggung jawab dari president director adalah:

  • Mengamankan harta perusahaan dengan cara memberikan nasihat atau petunjuk kepada manajemen agar efisiensi kerja dapat tercapai.
  • Mengangkat dan memberhentikan setiap manajer departemen dan kepala bagian.
  • Mewakili perusahaan dalam hubungannya dengan pihak luar perusahaan.

2. Executive Direktor

Tugas dan tanggung jawab dari executive director adalah:
  • Mengkoordinasikan dan mengawasi pelaksanaan tugas yang dibebankan kepada Finance & Administration Director, Sales & Marketing, dan Operation Director.
  • Memeriksa dan menyetujui rencana program kerja dan anggran perusahaan secara keseluruhan.
  • Mengawasi jalannya kegiatan perusahaan dalam mencapai tujuan yang telah ditetapkan

3. Secretary

Tugas dan tanggung jawab secretary adalah membuat notulen pada saat rapat diadakan dan mengarsipkan surat-surat atau dokumen-dokumen yang dianggap penting.

4. Finance & Administration Director

Tugas dan tanggung jawab dari Finance & Administration Director adalah:
  • Memimpin dan mengkoordinir seluruh aktivitas keuangan perusahaan
  • Mengkoordinasi dan mengawasi pelaksanaan tugas yang dibebankan kepada
  • purchasing manager, finance & acc. senior manager, HRD senior manager, dan general affairs manager.
  • Membuat dan menetapkan rencana keuangan perusahaan.

5. HRD Senior Manager

Tugas dan tanggung jawab dari HRD Senior Manager adalah:
  • Melakukan pencarian atau perekrutan karyawan, menyeleksi dan menetapkan kerja karyawan
  • Menangani hal-hal yang berhubungan dengan pemecatan atau pemberhentian karyawan. 
  • Mengkoordinir dan memecahkan masalah-masalah yang ada pada divisi personalia

6. Sales & Marketing Director

Tugas dan tanggung jawab dari sales & marketing director adalah mengkoordinasi dan mengawasi pelaksanaan tugas yang dibebankan kepada customer service senior manager, sales senior manager dan marketing senior manager.

7. Marketing Senior Manager

Tugas dan tanggung jawab dari marketing senior manager adalah:

  • Melakukan analisa dan evaluasi atas produk, jasa serta tarif dan memberikan usulan pengembangannya.
  • Melakukan analisa dan evaluasi atas produk, jasa, tarif dari perusahaan pesaing dalam usaha memberi masukan sehubungan dengan pengembangan produk yang sudah ada maupun penciptaan produk baru.
  • Melaksanakan kerjasama pengembangan produk, jasa, tarif dengan pihak lain sepanjang telah mendapatkan persetujuan dewan direksi.

Membuat laporan akan hasil kajian dan pekerjaan yang telah dilaksanakan.

8. Operation Director

Tugas dan tanggung jawab dari operation director adalah Memimpin, mengkoordinir dan mengawasi kegiatan yang dibebankan kepada operation

senior manager dan cargo senior manager yang kegiatannya sehari-hari bersifat operasional.

9. Operation Senior Manager

Tugas dan tanggung jawab dari operation senior manager adalah mengkoordinir dan memecahkan masalah-masalah yang timbul di dalam divisi operasional

Kebutuhan Aplikasi

1. Fungsional
Pengolahan data Customer
Pengolahan data barang yang dikirimkan
Proses Memberikan informasi lokasi paket yang dikirimkan
Proses Memberikan informasi biaya pengiriman paket
Proses Memberikan informasi kantor JNE terdekat
Proses Scan Barcode resi barang

2. Non-Fungsional
Operasional
o Digunakan pada Android Smartphone
Security
o Dilengkapi password untuk login ke system aplikasi
Informasi
o Memberikan informasi kesalahan login baik password ataupun username
o Digunakan untuk melakukan pendaftaran pengguna baru


Desain SI

Diagram Konteks
konteks diagram

Flow Diagram


flow diagram
Use Case Diagram
use case diagram
Class Diagram


class diagram
Component Diagram



Deployment Diagram


deployment diagram
Tabel(Pyshical data)









Implementasi Sistem

Di sini prototipe implemetasi desainnya dalam bentuk website.
Implementasi sistem dapat dilihat di jn.takequest.com

Jika ingin masuk tersedia user yang memiliki data:
username : admin
password : admin

dan juga barang yang dapat dicari statusnya di cek resi:
masukkan no resi berikut : 0123456789101112

jika ingin membuka melalui apk dapat mendownload apknya di sini


link terkait:
https://yaukingsyaukiaulia.blogspot.co.id/2016/10/jne-sistem-informasistruktur.html
https://yaukingsyaukiaulia.blogspot.co.id/2016/11/analisa-sistem-informasi.html

referensi:



Perancangan Perangkat Lunak Menggunakan Design Pattern

Menggunakan Observer Pattern di weather program. weather program adalah program yang akan menampilkan keadaan cuaca dan memberikan pemberitahuan mengenai cuaca yang ada. Dengan beberapa variabel yang akan menentukan cuaca yang akan terjadi.

1. CurrentConditionsDisplay.java


2. DisplayElement.java
3. ForecastDisplay.java
4. HeatIndexDisplay.java


5. Observer.java

6. StatisticDisplay.java
7. Subject.java

8. WeatherData.java

9. WeatherStation.java


10. WeatherStationHeatIndex.java


Hasil
  • Current conditions: 80.0F degrees and 65.0% humidity
    Avg/Max/Min temperature = 80.0/80.0/80.0
    Forecast: Improving weather on the way!
    Heat index is 82.95535
    Current conditions: 82.0F degrees and 70.0% humidity
    Avg/Max/Min temperature = 81.0/82.0/80.0
    Forecast: Watch out for cooler, rainy weather
    Heat index is 86.90124
    Current conditions: 78.0F degrees and 90.0% humidity
    Avg/Max/Min temperature = 80.0/82.0/78.0
    Forecast: More of the same
    Heat index is 83.64967

Referensi:
https://github.com/bethrobson/Head-First-Design-Patterns/tree/master/src/headfirst/designpatterns/observer/weather

Sunday, November 27, 2016

PPL-Design Pattern

Mencoba menerapkan factory pattern di java, IDE yang digunakan di sini adalah eclipse:
screenshot program

Buat Shape.java
Buat Rectangle.java


Buat Square.java

Buat Circle.java


Buat ShapeFactory.java

Buat FactoryPatternDemo.java

Screenshot hasil:

Sumber: http://fajarbaskoro.blogspot.co.id/2016/11/desain-pattern.html

Tuesday, November 22, 2016

Design Pattern - Prototype Pattern

Definisi
Prototype pattern adalah salah satu dari GoF(Gang of Four) patterns. Kata-kata yang bisa menggambarkan pattern ini diantaranya adalah "Duplicate" dan "Clone". Sebuah objek dapat memunculkan objek lain yang mirip dengannya. Penggunaan Prototype Pattern dimaksudkan untuk memangkas cost yang diperlukan untuk membuat objek baru, karena objek tersebut sebenarnya adalah sesuatu yang sama jadi tidak perlu membuat new object jika objeknya serupa.  Objek yang diduplikat memang adalah sesuatu yang bisa kita bilang sama tapi bukan berarti kita tidak dapat mengubah konten atau nilai variabelnya. State dari original objek sama dengan clone objeknya saat waktu dikloning. 

Gambar Diagram Prototype Pattern
Berikut adalah digram dari Prototype Pattern:


Diagram Prototype Pattern
Implementasi sederhana
Di implementasi ini menggunakan java. Untuk running program ini bisa menggunakan blueJ, eclipse, netbeans, atau IDE lainnya. Berikut adalah implementasi sederhana yang dapat dicoba untuk prototype pattern.

1. Buat abstrak class mengimplementasikan Clonable Interface, beri nama Shape.java
2. Buat 3 class yang merupakan extend dari class Shape, pertama beri nama Rectangle.java
kemudian yang kedua diberi nama Square.Java


dan yang ketiga diberi nama Circle.java


3. Buat kelas dari database dan simpan dalam hashtable, beri nama ShapeCache.java


4. Kemudian buat class PrototypePatternDemo.java digunakan untuk mendapatkan clone dari shape yang disimpan di hashtable


Output Implementasi
  • Shape : Circle
    Shape : Square 
    Shape : Rectangle


Contoh Penggunaan di Industri
Penggunaan Prototype pattern cukup banyak di dunia industri, salah satu yang paling banyak penggunannya ada di industri game. Kita tentu pernah lihat saat memainkan beberapa game akan ada spawning dari karakter atau objek yang sama, dan terkadang jumlahnya sangat banyak. Spawning tersebut dapat menggunakan Prototype Pattern, dan untuk gambaran langsung untuk penggunaannya dalam game bisa dilihat di sini.


Contoh dibawah ini merupakan contoh yang menggunakan c++ dalam penerapannya menggunakan virtual.


Berikut adalah diagram atau gambaran sederhana dari class yang ada di program tersebut:

Screenshot Hasil

screenshot hasil
Sekian penjelasan dan pendapat saya mengenai Prototype Pattern,

Hasil percobaan sebelumnya tentang factory pattern di sini.

Sumber:
https://www.tutorialspoint.com/design_pattern/prototype_pattern.htm
https://prezi.com/evt8jvbkbhfd/prototype-pattern/
http://gameprogrammingpatterns.com/prototype.html