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