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





No comments:

Post a Comment