• Tidak ada hasil yang ditemukan

Migration Code pada Backend Crimezone Dari PHP Ke Scala

N/A
N/A
Protected

Academic year: 2017

Membagikan "Migration Code pada Backend Crimezone Dari PHP Ke Scala"

Copied!
45
0
0

Teks penuh

(1)
(2)
(3)
(4)

BIODATA PENULIS

I. DATA PRIBADI

Nama : Agus Suhendra

NIM : 10111247

Tempat, Tanggal Lahir : Kelubi, 31 Oktober 1994 Jenis Kelamin : Laki-Laki

Alamat : Dusun Kelubi RT/RW 002/001 Desa Kelubi Kecamatan Manggar, Belitung timur - 33572. No. Telp : 087823410808

E-Mail : [email protected]

II. RIWAYAT PENDIDIKAN

1999-2005 : SDN 32 Kelubi 2005-2008 : SMPN 2 Manggar 2008-2011 : SMAN 1 Manggar

2011-2016 : Universitas Komputer Indonesia

Demikian riwayat hidup ini saya buat dengan sebenar-benarnya dalam keadaan sadar dan tanpa paksaan.

Bandung, Agustus 2016

(5)

MIGRATION CODE

PADA BACKEND CRIMEZONE

DARI PHP KE SCALA

SKRIPSI

Diajukan untuk Menempuh Ujian Akhir Sarjana

AGUS SUHENDRA

10111247

PROGRAM STUDI TEKNIK INFORMATIKA

FAKULTAS TEKNIK DAN ILMU KOMPUTER

(6)

iii

KATA PENGANTAR

Assalamualaikum Wr.Wb.

Puji dan syukur penulis panjatkan ke hadirat Allah SWT atas rahmat dan karunia-Nya sehingga penulis dapat menyelesaikan skripsi yang berjudul “Migration Code Pada Backend Crimezone Dari PHP Ke Scala” sebagai syarat untuk menyelesaikan program studi Strata I Jurusan Teknik Informatika Fakultas Teknik dan Ilmu Komputer pada Universitas Komputer Indonesia.

Penyusunan skripsi ini tidak akan terwujud tanpa mendapat dukungan, bantuan dan masukan dari berbagai pihak. Untuk itu, penulis ingin menyampaikan terima kasih kepada:

1. Allah SWT atas petunjuk, pertolongan, karunia, hidayah, kekuatan, kesehatan, dan kesabaran selama menyelesaikan skripsi ini. Sholawat serta salam selalu terlimpahkan kepada baginda Nabi Muhammad SAW.

2. Orang tua dan keluarga tercinta, yang senantiasa memberikan doa, semangat, motivasi, dan kasih sayangnya kepada penulis .

3. Bapak Adam Mukharil Bactiar, S.Kom., M.T. selaku dosen pembimbing yang telah sabar membimbing, memotivasi, memberikan perhatian dan memberikan pengarahan selama penelitian tugas akhir ini sehingga tugas akhir ini bisa terselesaikan dengan sebaik-baiknya.

4. Ibu Dian Dharmayati, S.T., M.Kom. selaku reviewer yang telah memberikan masukan dan arahan selama perbaikan perangkat lunak ini.

5. Bapak Andri Heryandi, S.T., M.T. yang telah bersedia menjadi penguji 3 pada saat sidang dan memberikan masukan yang bermanfaat pada penelitian ini. 6. Bapak Eko Budi Setiawan, S.Kom., M.T selaku dosen wali IF-6 angkatan

2011.

(7)

iv

8. Teman-teman seperjuangan bimbingan bapak Adam Mukharil Bachtiar yang telah berjuang bersama dalam menyelesaikan skripsi ini.

9. Muhammad Rivki, Handika, Bisma AT, Nio Somalo, Faisal Ishak, dan Nizar yang secara personal telah banyak membantu penulis.

Sangat disadari bahwa dalam pelaksanaan dan penyusunan skripsi ini masih banyak kekurangan dan jauh dari kesempurnaan. Oleh karena itu, saran dan kritik yang membangun sangat diharapkan untuk pengembangan ke arah yang lebih baik.

Bandung, Agustus 2016

(8)

v

I.1 Latar Belakang Masalah ... 1

I.2 Perumusan Masalah ... 2

I.3 Maksud dan Tujuan ... 2

I.4 Batasan Masalah ... 3

I.5 Metodologi Penelitian ... 3

I.5.1 Metode Pengumpulan Data ... 3

I.5.2 Metode Migrasi Perangkat Lunak ... 4

I.6 Sistematika Penulisan ... 6

BAB II LANDASAN TEORI ... 7

II.1 Sekilas Crimezone ... 7

II.2 Software Maintenance ... 8

II.3 Software Migration ... 9

II.4 Scala ... 12

II.5 Functional Programming ... 13

II.6 Padanan PHP, Scala dan Java ... 14

II.7 Play Framework ... 15

II.8 Concurrency dan Parallelism ... 15

II.9 Asynchronous dan Synchronous ... 16

II.10 Slick (Scala Language-Integrated Connection Kit) ... 17

(9)

vi

II.12 Heroku Cloud ... 19

II.13 Structure Analysis and Design ... 19

II.14 Object Oriented Analysis and Design ... 20

II.15 Pengujian Unit (Unit Testing)... 25

II.16 Pengujian Integrasi (Integration Testing) ... 26

II.17 Pengujian Performa (Performance Testing) ... 26

II.18 Blazemeter ... 27

II.19 Web Service ... 28

II.20 RESTful Web Services ... 28

II.21 JSON (JavaScript Object Notation) ... 29

BAB III ANALISIS DAN PERANCANGAN ... 31

III.1 Analisis Sistem ... 31

III.1.1 Analisis Masalah ... 31

III.1.2 Analisis Arsitektur Sistem ... 32

III.1.3 Analisis Migrasi Data ... 34

III.1.4 Analisis Migrasi Code ... 36

III.1.5 Analisis Spesifikasi Kebutuhan Perangkat Lunak ... 38

III.1.6 Analisis Kebutuhan Non Fungsional ... 40

III.1.7 Analisis Kebutuhan Fungsional Legacy System ... 44

III.1.8 Analisis Kebutuhan Kelas Sistem Baru ... 77

III.1.9 Analisis Concurrency dan Asynchronous ... 92

III.1.10 Analisis Data ... 95

III.2 Perancangan Sistem ... 96

III.2.1 Perancangan Class ... 96

III.2.2 Perancangan Sequence Diagram ... 98

III.2.3 Perancangan Data ... 124

III.2.4 Perancangan Arsitektur Menu ... 127

III.2.5 Perancangan Antarmuka ... 130

II.2.6 Perancangan Pesan ... 150

II.2.7 Jaringan Semantik ... 153

(10)

vii

IV.1 Implementasi Sistem ... 155

IV.1.1 Lingkungan Implementasi ... 155

IV.1.2 Implementasi Data ... 157

IV.1.3 Implementasi Kelas ... 161

IV.1.4 Hasil Perbedaan Kode PHP dan Scala ... 204

IV.1.5 Implementasi Antarmuka ... 208

IV.2 Pengujian Sistem ... 209

IV.2.1 Rencana Pengujian ... 209

IV.2.2 Skenario Pengujian... 214

IV.2.3 Hasil Pengujian ... 222

IV.2.4 Evaluasi Pengujian ... 231

BAB V KESIMPULAN DAN SARAN ... 233

V.1 Kesimpulan ... 233

V.2 Saran ... 233

(11)

234

DAFTAR PUSTAKA

[1] M. Odersky, L. Spoon and B. Venners, Programming in Scala, California: Artima Press is an imprint of Artima, Inc., 2010.

[2] Dwarampudi, Venkatreddy ; Dhillon, Shahbaz Singh ; Shah, Jivitesh; Sebastian, Nikhil Joseph ; Kanigicharla, Nitin Satyanarayan;, "Comparative study of the Pros and Cons of Programming languages Java, Scala, C++, Haskell, VB .NET, AspectJ, Perl, Ruby, PHP & Scheme," 2010.

[3] thomas, "thomasknierim," [Online]. Available:

http://www.thomasknierim.com/119/java/performance-java-vs-php-vs-scala/. [Accessed Monday August 2015].

[4] N. Raychaudhuri, Scala in Action, Shelter Island: Manning, 2013.

[5] E. Ackerman, J. Ebert and A. Winter, "Ein Referenz-Prozessmodell zur Software-Migration," 2005.

[6] E. Ackermann, A. Winter and R. Gimnich, "Ein Referenz-Prozess der Software-Migration," Softwaretechnik-Trends, vol. 25, no. 4, pp. 20-22, 2005.

[7] H. M. Sneed, E. Wolf and H. Heilmann, Softwaremigration in der Praxis: Übertragung alter Softwaresysteme in eine moderne Umgebung, Dpunkt Verlag, 2009.

[8] R. J. Martin and W. M. Osborne, "Guidance on Software Maintenance,"

National Bureau of Standards, 1983.

[9] H. M. Sneed, M. Hasitschka and M. T. Teichman, Software-Produktmanagement: Wartung undWeiterentwicklung bestehender Anwendungssysteme, dpunkt.verlag, 2005.

[10] P. Chiusano and R. Bjarnason, Functional Programming in Scala, Manning, 2013.

[11] PHP, "PHP Manual," The PHP Group, [Online]. Available: https://secure.php.net/manual/en/. [Accessed 26 December 2015].

[12] B. Hariyanto, Esensi-Esensi Bahasa Pemrograman Java, Bandung: Informatika Bandung, 2010.

(12)

235

[14] Akka, "Akka," Typesafe, [Online]. Available:

http://doc.akka.io/docs/akka/2.4.1/general/terminology.html. [Accessed Thursday December 2015].

[15] Scala, "API DOCS," Typesafe, [Online]. Available: http://www.scala-lang.org/api/current. [Accessed Wednesday January 2016].

[16] Slick, "Slick," Typesafe, [Online]. Available:

http://slick.typesafe.com/doc/3.1.0/. [Accessed Saturday December 2015].

[17] M. Brockey and S. Buxton, "Cloud data storage". United States Patent US20130036135 A1, 7 Feb 2013.

[18] A. Hanjura, Heroku Cloud Application Development, Birmingham: Packt Publishing, 2014.

[19] H. J. R. Gary Shelly, Systems Analysis and Design, Boston: Course technology cengange learning, 2010.

[20] H. Fatta, Rekayasa Sistem Pengenalan Wajah, Yogyakarta: Andi, 2009.

[21] T. H. P. H. Marimin, Sistem Infromasi Manajemen : Sumber Daya Manusia, Bogor: Grasindo, 2006.

[22] H. Divayana, Konsep OOAD, Jakarta: STMIK Eresha, 2010.

[23] J. Hermawan, Analisa Desain & Pemrograman Berorientasi Objek dengan UML dan Visual Basic.NET, Yogyakarta: Andi, 2010.

[24] K. Hamilton and R. Miles, Learning UML 2.0, United States of America: O'Reilly, 2006.

[25] R. Osherove, The Art of Unit Testing Second Edition, Shelter Island: Manning Publications Co, 2014.

[26] J. Meier, C. Farre, P. Bansode, S. Barber and D. Rea, Performance Testing Guidance for Web Applications, United States: Microsoft Corporation, 2007.

[27] Blazemeter, "Blazemeter Docs," [Online]. Available:

https://guide.blazemeter.com/hc/en-us/articles/207421515-Aggregate-Report-Aggregate-Report. [Accessed Tuesday May 2016].

[28] LoadFocus.com, "loadfocus," [Online]. Available:

(13)

236

[29] IBM, "Introduction to Web Services Architecture," vol. 41, p. 170, 2002.

[30] J. Webber, S. Parastatidis and I. Robinson, REST in Practice, United States: O’Reilly Media, Inc., 2010.

[31] R. T. Fielding, "Architectural Styles and the Design of Network-based Software Architectures," [Online]. Available:

http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm#sec _5_1. [Accessed Sunday July 2016].

(14)
(15)

1

BAB I

PENDAHULUAN

I.1 Latar Belakang Masalah

Selama beberapa dekade ini teknologi web berkembang dengan cepat.

Perkembangan ini mengakibatkan banyak bahasa pemrograman baru bermunculan yang sering dikenal dengan “language war”. Bahasa pemrograman baru ini hadir

dengan kualitas yang lebih baik sehingga menjadikan dunia web development

berkembang cepat. Persaingan ini hadir dalam hal performa, keamanan, kesederhanaan sintaks, optimalisasi, dan kemampuan untuk berkembang di masa datang, sehingga banyak developer yang memigrasikan kode dari bahasa satu ke bahasa lain demi menjadikan program yang lebih baik dan cepat. Hal ini juga berlaku untuk aplikasi Crimezone.

Crimezone merupakan aplikasi citizen journalism pada mobile untuk melaporkan bentuk kriminalitas. Aplikasi ini tersedia dalam platform android dan

windows phone. Berdasarkan wawancara yang telah dilakukan diperoleh informasi

bahwa aplikasi ini sudah berjalan dengan baik, namun memiliki beberapa kekurangan dari segi sistem backend. Pertama, sistem backend saat ini belum bekerja dengan baik, dalam melayani akses pengguna. Hal ini dibuktikan dengan masih terjadinya kegagalan dalam mengirimkan data yang berupa image stream

dengan kapasitas yang cukup besar. Kegagalan ini terjadi apabila proses uploadnya memakan waktu yang terlalu lama akan menyebabkan request time out. Kedua,

sistem backend belum bekerja dengan cepat dan optimal yang dibuktikan dengan

kinerja dari web service yang lambat dalam melayani request dan response data dari

pengguna. Ketiga, sintaksis PHP yang digunakan belum mengikuti standar update

terbaru. Salah satu contohnya yaitu, ketika ingin menghubungkan PHP ke database

MySQL masih menggunakan method mysql. Padahal method mysql itu sendiri

masih rentan terhadap berbagai jenis serangan web seperti misalnya SQL Injection.

(16)

2

Secara umum, untuk membangun sistem backend yang baik dan bagus

ditentukan oleh bahasa pemrograman yang digunakan. Pemilihan bahasa pemrograman yang tepat akan menentukan tingkat kualitas sistem yang dibangun. Ada beberapa kriteria yang menentukan bahasa pemrograman baik dan bagus. Pertama, bisa menghasilkan kode yang lebih baik, dengan kode yang lebih baik akan menghasilkan performa yang cepat ketika dijalankan. Kedua, bisa mengatasi masalah concurrency dan mendukung parallelism sehingga menjadikan program

scalable [1]. Ketiga, kode yang di tulis secara default memiliki keamanan yang

tinggi dalam melindung terhadap berbagai jenis serangan web [2].

Oleh karena itu, berdasarkan permasalahan yang telah dijelaskan dan berdasarkan studi literatur, didapatkan solusi yaitu dengan memigrasikan kode pada

backend Crimezone dari PHP ke Scala. Pemilihan Scala sebagai bahasa

pemrograman akan meningkatkan performa sistem backend [3], memudahkan

dalam menggunakan pemrograman asynchronous, concurrency, dan parallelism

serta meningkatkan keamanan pada sistem [4]. Selain itu, masih banyak keuntungan lain yang akan diperoleh dengan menggunakan Scala dibandingkan menggunakan PHP.

I.2 Perumusan Masalah

Berdasarkan latar belakang yang telah dijelaskan, maka dirumuskan suatu masalah yaitu bagaimana memigrasikan kode pada backend Crimezone dari PHP ke Scala.

I.3 Maksud dan Tujuan

Maksud dari penelitian ini adalah memigrasikan kode pada backend

Crimezone dari PHP ke Scala dengan tujuan sebagai berikut:

1. Meningkatkan performa sistem backend dalam melayani akses pengguna. 2. Memudahkan dalam menggunakan pemrograman yang mendukung

asynchrnous, concurrency, dan parallelism.

3. Meningkatkan keamanan sistem backend sehingga tidak rentan terhadap

(17)

3

I.4 Batasan Masalah

Adapun batasan masalah yang digunakan dalam penelitian ini adalah sebagai berikut:

1. Pengembangan perangkat lunak hanya difokuskan untuk sistem backend. 2. Perangkat lunak menggunakan basis data yang telah tersedia pada pembangunan

perangkat lunak sebelumnya.

3. Pendekatan analisis yang digunakan dalam migrasi perangkat lunak ini menggunakan Structure Analysis and Design (SAD) dan Object Oriented

Analysis and Design (OOAD).

4. Perangkat lunak menggunakan JSON (Javascript Object Nation) sebagai media pertukaran data dengan server.

5. Pada penelitian ini, keamanan sistem yang di-handle yaitu pada server. Di sistem

baru, sistem backend dan frontend akan dipasang Cloudflare yang berguna

meningkatkan keamanan sistem dari berbagai jenis serangan web.

I.5 Metodologi Penelitian

Metodologi penelitian yang digunakan dalam penelitian ini adalah metode penelitian komparatif. Metode ini bertujuan untuk membandingkan persamaan dan perbedaan dua atau fakta-fakta dan sifat-sifat objek yang di teliti, sehingga dapat menentukan mana yang lebih baik atau mana yang sebaiknya dipilih. Dalam pelaksanaannya, metodologi penelitian ini terdiri dari metode pengumpulan data dan metode pembangunan perangkat lunak itu sendiri.

I.5.1 Metode Pengumpulan Data

Metode pengumpulan data yang digunakan adalah sebagai berikut: 1. Studi Literatur

Pengumpulan data yang dilakukan dengan cara mempelajari dan memahami berbagai literatur ilmiah yang bersumber dari jurnal, buku, proceedings, thesis, dan bacaan lainnya yang dapat dijadikan acuan dalam penelitian ini seperti konsep

software migration, software maintenance, metode reverse enginnering, scala,

(18)

4

2. Wawancara

Pengumpulan data yang dilakukan dengan cara bertanya langsung yang ada kaitannya dengan topik yang diambil. Wawancara ini dilakukan kepada beberapa

backend developer aplikasi Crimezone. Wawancara yang dilakukan lebih mengarah

kepada performa dan kekurangan apa saja yang dimiliki aplikasi saat ini.

I.5.2 Metode Migrasi Perangkat Lunak

Dalam memigrasikan kode pada backend perangkat lunak ini akan menggunakan pendekatan Reference Migration Processes (ReMiP). ReMiP merupakan model proses umum yang menggambarkan aktivitas yang dibutuhkan sebagai tahapan dalam proses migrasi. Proses-proses yang terjadi di dalamnya adalah [6]:

1. RequirementAnalysis

Tahap requirement analysis merupakan tahapan pertama di ReMiP. Pada

tahap ini hanya dilakukan analisis kebutuhan non-fungsional karena memiliki dampak langsung terhadap pemilihan teknologi. Sedangkan analisis fungsional tidak perlu dilakukan karena fungsionalitas sistem tidak mengalami perubahan. Selain itu, kebutuhan peralatan migrasi diperiksa dan semua kebutuhan dikelola untuk mengatasi perubahan.

2. LegacyAnalysis

Pada tahap ini dimulai dengan menganalisa legacy system kasar. Legacy

system dinilai kualitas teknis dan nilai bisnisnya.

3. TargetDesign

Pada tahap ini, arsitektur, struktur data, dan antarmuka pengguna dari sistem baru didefinisikan. Pada tahap ini juga disertakan artifact sementara yang mungkin disertakan selama perubahan. Selain itu, legacy artifact dipetakan ke target artifact

yang sesuai.

4. Strategy Selection

Pada tahap ini dilakukan pemilihan strategi migrasi yang akan digunakan. Strategi migrasi menjelaskan bagaimana legacy system akan dikonversi ke dalam

(19)

5

dengan alasan sistem baru di kembangkan ulang berdasarkan ide-ide yang disediakan oleh legacy software tanpa mengubah fungsionalitas sistem yang ada.

Re-Implementation dimulai dengan menganalisis legacy system, kebutuhan

fungsional dan non-fungsional diambil.

5. Implementation

Pada tahap ini dilakukan implementasi desain sistem yang telah didefinisikan. Selain itu, legacy system dimigrasikan sesuai dengan strategi migrasi yang dipilih pada tahapan strategyselection.

6. Test

Salah satu tujuan utama dari migrasi perangkat lunak yaitu untuk membuat salinan fungsional one-to-one dari system legacy. Pada tahap ini, sistem baru akan

diuji, apakah mendukung fungsi yang sama dengan sistem lama. Untuk melakukannya bisa menggunakan unittest.

7. Deployment

Tahap deployment merupakan tahap terakhir dalam tahapan migrasi

perangkat lunak. Tahap ini berbicara bagaimana memperkenalkan sistem baru yang sudah dihasilkan dengan menggunakan strategi yang ada. Salah satu strategi yang bisa digunakan yaitu big-bang strategy. Strategi ini dilakukan dengan cara sistem

baru di-deploy secara lengkap dan sekaligus menutup legacy system pada waktu

yang bersamaan. Keuntungan menggunakan strategi ini yaitu cepat dan mengurangi biaya migrasi. Dari berbagai tahapan-tahapan tersebut, untuk lebih jelasnya dapat dilihat pada Gambar I.1.

(20)

6

I.6 Sistematika Penulisan

Sistematika penulisan penelitian ini disusun untuk memberikan gambaran umum mengenai penelitian yang dikerjakan. Sistematika penulisan dalam penelitian ini adalah:

BAB 1 PENDAHULUAN

Bab ini menguraikan latar belakang permasalahan, merumuskan inti permasalahan, mencari solusi atas masalah tersebut, mengidentifikasi masalah tersebut, menentukan maksud dan tujuan, kegunaan penelitian, pembatasan masalah, metode penelitian, dan sistematika penulisan.

BAB 2 LANDASAN TEORI

Bab ini menguraikan bahan-bahan kajian, konsep dasar, dan teori dari para ahli yang berkaitan dengan penelitian. Meninjau permasalahan dan hal-hal yang berguna dari penelitian-penelitian dan sintesis serupa yang pernah dikerjakan sebelumnya dan menggunakannya sebagai acuan pemecahan masalah pada penelitian ini.

BAB 3 ANALISIS DAN PERANCANGAN SISTEM

Bab 3 berisi tentang analisis sistem yang terdiri dari analisis masalah, analisis spesifikasi kebutuhan perangkat lunak, analisis kebutuhan non fungsional, analisis kebutuhan fungsional legacysystem, analisis kebutuhan classnewsystem, analisis

concurrency dan asynchronous, dan analisis data. Perancangan sistem terdiri dari

perancangan class, perancangan data, perancangan arsitektur menu, dan perancangan antarmuka.

BAB 4 IMPLEMENTASI DAN PENGUJIAN SISTEM

Bab ini berisi tentang implementasi hasil dari analisis dan perancangan sistem, perancangan sistem ke dalam bentuk bahasa pemrograman, kebutuhan perangkat keras dan perangkat lunak yang diperlukan dalam membangun sistem serta pengujiannya.

BAB 5 KESIMPULAN DAN SARAN

(21)

7

BAB II

LANDASAN TEORI

II.1 Sekilas Crimezone

Crimezone merupakan aplikasi citizen journalism pada mobile untuk

melaporkan bentuk kriminalitas. Bentuk kriminalitas yang bisa dilaporkan berupa perampokan, penganiayaan, penculikan, pemerkosaan, pembunuhan, dan pembakaran. Aplikasi ini tersedia dalam platform mobile android dan windows

phone. Secara umum, aplikasi ini memudahkan pengguna dalam memperoleh

informasi mengenai area lokasi yang rawan kriminalitas, sehingga dengan informasi tersebut masyarakat dapat menghindarinya. Selain itu, pengguna juga dapat mem-posting tindakan kriminal dengan cara mengambil foto suatu kejadian

beserta informasi tambahan seperti nama lokasi, jenis kejahatan, tanggal kejadian, dan lain sebagainya.

Crimezone terdiri dari dua subsistem yaitu subsistem mobile yang digunakan oleh masyarakat sebagai media untuk melaporkan kejahatan dan mengetahui informasi tindak kejahatan yang berasal dari pihak kepolisian atau masyarakat itu sendiri, serta subsistem web yang digunakan oleh pihak kepolisian untuk mengolah data kejahatan. Berikut gambaran implementasi sistem Crimezone:

1. Pengguna akan memberikan informasi posisi keberadaannya melalui GPS, kemudian GPS akan memberikan titik koordinat keberadaannya. Koordinat yang didapat akan berpengaruh terhadap map yang akan ditampilkan di

smartphone pengguna.

2. Pengguna yang menggunakan sistem berbasis mobile dapat melakukan posting

data dengan mengirimkan post data ke web service, kemudian web service

tersebut meneruskan pengiriman data ke database. Selain itu, pengguna juga

bisa melakukan binding data yang dilakukan melalui web service, kemudian

web service akan melakukan request ke dalam database.

3. Untuk sistem yang berbasis web dapat melakukan posting data dengan

mengirimkan post data ke web service, kemudian dilakukan pengiriman data ke

(22)

8

Berikut adalah screen-shoot dari aplikasi Crimezone.

II.2 Software Maintenance

Di dunia IT, sangat sedikit proyek pengembangan perangkat lunak yang dirancang dari awal. Biasanya, customer sudah memiliki sistem IT yang sudah

di-deploy dan berjalan. Sistem tersebut dinamakan legacy system. Sistem tersebut

(23)

9

Berikut ada beberapa pendekatan tentang bagaimana menangani legacy

system yang termasuk ke dalam satu genus yaitu software maintenance. Software

maintenance merupakan aktivitas yang dibutuhkan untuk menjaga sistem perangkat

lunak operasional dan responsif setelah diterima dan diproduksi. Ini adalah serangkaian kegiatan yang mengakibatkan perubahan pada acceptedbaseline

product yang aslinya. Perubahan ini terdiri dari modifikasi yang dibuat dengan

mengoreksi, memasukan, menghapus, memperluas, dan meningkatkan sistem dasar [8]. Berikut ini yang termasuk dalam metode software maintenance [7]:

a. Software Re-Development yaitu mengembangkan sistem baru dengan

fungsionalitas baru dengan menggunakan ide-ide dari legacy system.

b. Software Evolution yaitu meningkatkan legacy system tetapi fungsionalitasnya

tidak terlalu banyak yang berubah.

c. Software Re-Engineering yaitu merenovasi sistem dan meningkatkan

kemampuan maintenance tanpa mengganti teknologi sistem.

d. Software Migration yaitu memindahkan sistem ke dalam lingkungan baru atau

teknologi baru tanpa mengganti fungsionalitas.

II.3 Software Migration

Seperti yang telah dijelaskan bahwa software migration merupakan metode

dari software maintenance dengan definisi memindahkan sistem ke dalam

lingkungan baru atau teknologi baru tanpa mengganti fungsionalitas yang ada pada sistem. Metode ini merupakan salah satu yang paling cocok untuk mengurangi biaya pemeliharaan karena meningkatkan maintainability dengan memigrasikan

perangkat lunak ke dalam teknologi baru. Berikut ini yang termasuk dalam proyek

software migration meliputi [9]:

a. Migration of data

b. Migration of user interface

(24)

10

Memigrasikan legacy system membutuhkan pemahaman dari legacy code dan

mengubahnya menjadi teknologi baru. Dengan melihat aplikasi perusahaan besar yang terus berkembang biak dalam waktu yang lama, tugas ini menjadi tugas yang kompleks. Oleh karena itu, diperlukannya metode struktur dalam merencanakan dan melaksanakan migrasi.

Ackerman telah menganalisis beberapa metode software migration dan mengidentifikasi sekumpulan disiplin inti dari software migration. Hasilnya yaitu berupa pendekatan umum tentang cara memigrasikan perangkat lunak yang dinamai referensi migrasi proses (ReMiP). ReMiP dibagi menjadi yaitu supporting

disciplines dan migration disciplines. Supporting disciplines menangani kegiatan

pendukung seperti manajemen proyek, manajemen konfigurasi atau lingkungan pengembangan. Sedangkan migration disciplines menangani perencanaan,

pelaksanaan, dan memvalidasi migrasi itu sendiri. Migration disciplines terdiri dari

[5]:

1. Requirement Analysis

Tahapan pertama dalam ReMiP yaitu requirement analysis. Dalam

memigrasikan perangkat lunak, fungsionalitas tidak di ubah sehingga analisis

kebutuhan fungsional tidak diperlukan. Melainkan, berfokus pada pengumpulan kebutuhan non-fungsional karena memiliki dampak langsung pada pemilihan target

teknologi. Selain itu, kebutuhan peralatan migrasi diperiksa dan semua kebutuhan dikelola untuk mengatasi perubahan.

2. Legacy Analysis

Legacy analysis dimulai dengan menganalisa legacy system kasar. Legacy

system dinilai kualitas teknis dan nilai bisnis. Sistem kemudian dianalisis lebih rinci

menggunakan metode reverse-engineering. Dengan begitu, legacy system sekarang bisa kembali direkayasa untuk meningkatkan kualitas sistem demi mendapatkan hasil yang lebih baik setelah transformasi.

3. Target Design

Selama target design, arsitektur, struktur data, dan antarmuka pengguna dari

(25)

11

digunakan selama perubahan. Selain itu, legacy artifact dipetakan ke target artifact

yang sesuai.

4. Strategi Selection

Strategy selection merupakan tahapan memilih strategi migrasi. Strategi

migrasi menjelaskan bagaimana legacy system akan dikonversi ke dalam sistem yang dimigrasikan. Terdapat tiga strategi migrasi yaitu:

a. Re-Implementation merupakan re-development sistem baru berdasarkan ide-ide

yang diberikan oleh legacy software. Jika menggunakan strategi

re-implementation, legacy system dianalisis dan kebutuhan fungsional dan

non-fungsional diambil.

b. Transformation yaitu mengkonversi sistem secara otomatis menjadi target

sistem. Strategy transformation mencoba untuk secara otomatis mengkonversi

legacy application atau legacy data ke dalam teknologi yang baru. Strategi ini

hanya bisa dilaksanakan dengan menggunakan alat transformasi. Biasanya, alat ini harus dirancang dan diimplementasikan sebelum migrasi. Dengan asumsi bahwa alat migrasi tidak punya kegagalan, transformasi otomatis legacy

software akan menghasilkan salinan one-to-one dari sistem.

c. Wraping tidak mengubah legacy system tetapi menyediakan antarmuka baru

untuk memberikan akses pada legacy function ke sistem yang baru. Strategi

wrapping tidak mengubah legacy system. Legacy function tetap dalam legacy

system. Wrapper yang ditulis mengakses legacy function dan menyediakan

antarmuka untuk sistem yang baru sehingga sistem yang baru bisa mengakses

legacy function melalui wrapper.

5. Implementation

Selama tahap implementasi, legacy system dimigrasikan sesuai dengan strategi migrasi yang dipilih.

6. Test

Salah satu tujuan utama dari migrasi perangkat lunak yaitu untuk membuat salinan one-to-one functional dari legacy system, Selam dalam tahapan test, sistem

(26)

12

7. Deployment

Di akhir proses migrasi yaitu bagaimana cara memperkenalkan sistem yang baru muncul. Seringkali, legacy system masih produktif dan tidak bisa ditutup dengan sederhana. Sehingga diperlukan strategi bagaimana cara menggunakan sistem yang baru dan menutup sistem yang lama. Strategi yang bisa digunakan antara lain:

a. Big-Bang Startegy

Deployment menggunakan strategi big-bang dengan cara sistem yang baru

di-deploy secara lengkap dan sekaligus menutup legacy system pada waktu yang

bersamaan. Hal ini sangat beresiko karena seluruh pekerjaan yang dilakukan sistem baru belum terbukti. Sebaliknya, dengan strategi ini bisa menurunkan biaya migrasi.

b. Continuous Strategy

Strategi ini hanya memigrasikan bagian-bagian tertentu dari legacy system yang

sudah direkayasa ulang. Komponen lainnya tidak berubah sampai direkayasa ulang, Kelemahan dari strategi ini yaitu dapat menyebabkan waktu proyek menjadi sangat panjang.

II.4 Scala

Scala adalah singkatan dari scalable language. Dinamakan scalable karena

Scala dirancang untuk tumbuh dengan penggunanya. Scala bisa digunakan untuk menulis kode program yang sederhana sampai dengan membangun sistem yang besar dan kompleks. Selain itu, Scala adalah perpaduan antara paradigma Object

Oriented Programming (OOP) dan paradigma Functional Programming (FP).

Kedua paradigma inilah yang menjadi alasan kenapa Scala menjadi bahasa yang

scalable.

(27)

13

kode java serta dapat ditambahkan ke dalam kode yang sudah ada. Kedua, Scala sederhana, program yang ditulis dalam bahasa Scala selalu singkat dan ringkas. Ketiga, Scala memiliki abstraction tingkat tinggi yang berguna dalam mengatur dan mengelola kompleksitas program. Inilah yang menjadikan Scala menjadi salah satu Bahasa pemrograman yang mulai banyak penggunanya saat ini [1].

II.5 Functional Programming

Paradigma pemrograman yang memperlakukan proses komputasi sebagai evaluasi fungsi-fungsi matematika. Pemrograman fungsional didasarkan pada premis sederhana bahwa program-program yang dibangun menggunakan fungsi murni. Dalam pengertian yang terbatas, pemrograman fungsional berarti pemrograman tanpa menggunakan variabel mutable, assignment, loops, struktur

kontrol imperative lainnya. Sedangkan dalam arti yang luas, pemrograman

fungsional berarti berfokus pada fungsi. Pemrograman fungsional sangat berbeda dengan pemrograman konvensional. Dengan mempelajari pemrograman fungsional akan meningkatkan kualitas kode, baik dari sisi penulisan maupun perancangan [10]. Berikut adalah fitur-fitur dari pemrograman fungsional antara lain yaitu:

1. First-Class Functions artinya fungsi bisa disimpan ke dalam suatu variabel.

2. High-Order Function artinya fungsi bisa mengembalikan fungsi atau

menerima fungsi lainnya sebagai parameter.

3. Pure Function artinya fungsi tidak mengubah nilai apapun, fungsi hanya

menerima dan mengeluarkan data.

4. Closures artinya data bisa disimpan di dalam fungsi yang hanya bisa diakses

untuk mengembalikan fungsi tertentu.

(28)

14

II.6 Padanan PHP, Scala dan Java

Untuk memberikan gambaran tentang PHP, Scala, dan Java, berikut ini akan ditampilkan tabel yang menggambarkan keyword untuk mendefinisikan variable, fungsi, dan seterusnya yang dapat dilihat pada Tabel II.1 [1] [11] [12].

Tabel II.1 Padanan PHP, Scala, dan Java

Pendefinisian Bahasa Keyword Keterangan

Variabel

PHP 5 $namaVar keyword untuk mendefinisikan variabel

define keyword untuk mendefinisikan constanta

Scala

var keywordnilainya untuk mendefinisikan variabel yang

mutable

val keyword untuk mendefinisikan value yang

nilainya immutable

Java type

namaVar keyword untuk mendefinisikan variabel

Output Data

keyword untuk mendefinisikan fungsi

Scala def

Java def

Array

PHP 5 array

keyword untuk mendefinisikan array

Scala Array

Abstract Scala abstract keyword untuk mendefinisikan kelas abstrak

Java abstract

Class

PHP 5 class

keyword untuk mendefinisikan kelas

Scala class

Java class

Object Scala object keyword untuk mendefinisikan object.

Namespace PHP 5 namespace keyword untuk mendefinisikan namespace

Package Scala package keyword untuk mendefinisikan package

Java package

Interface Scala interface

keyword untuk mendefinisikan interface.

Digunakan untuk mengenkapsulasi method dan

pendefinisian field

Trait Java trait

keyword untuk mendefinisikan trait.

Digunakan untuk mengenkapsulasi method dan

pendefinisian field

Collection Scala

List mendefinisikan array dengan tipe immutable

singly linked list

Set

mendefinisikan array dengan tipe immutable

dan unorderedcollection, yang kerjanya mirip

dengan List

Map

mendefinisikan array dengan format

immutablekey-value store, atau istilah lainnya

(29)

15

II.7 Play Framework

Play adalah full stack web framework berkecepatan tinggi untuk Java dan

Scala yang memungkinkan alur kerja yang sangat produktif tanpa mengorbankan skalabilitas. Play menerapkan arsitektur MVC dengan rute file yang memetakan HTTP request ke controller, kemudian mengambil permintaan informasi dan menghasilkan sebuah hasil representasi. Play dibangun untuk web modern dengan konsep non-blocking, RESTful secara default, dan memiliki built-in asset compiler

untuk teknologi client-side seperti CoffeeScript dan LESS [13].

II.8 Concurrency dan Parallelism

Concurrency dan paralelisme adalah konsep yang saling berkaitan, tetapi ada

perbedaan yang kecil. Concurrency artinya dua atau lebih tugas yang membuat

progress (kemajuan) tetapi tidak di eksekusi secara bersamaan. Hal ini dapat

dicapai dengan mengiris waktu (time slicing) ketika bagian dari tugas di eksekusi

secara berurutan dan mencampur dengan tugas-tugas yang lain. Paralelisme, dari sisi lain muncul ketika eksekusinya dilakukan benar-benar simultan. Untuk lebih memahami kedua konsep ini dapat dilihat pada Gambar II.1 dan Gambar II.2 [14].

Gambar II.1 Concurrency

(30)

16

II.9 Asynchronous dan Synchronous

Suatu pemanggilan method dianggap (considered) synchronous jika

pemanggil (caller) tidak bisa membuat kemajuan (progress) sampai method

mengembalikan nilai atau throw exception. Di lain sisi, panggilan secara

asynchronous, memungkinkan pemanggil (caller) membuat kemajuan setelah

beberapa langkah, dan penyelesaian metode dapat ditandai dengan beberapa mekanisme tambahan seperti callback, future, atau message. Untuk lebih memahami kedua konsep ini dapat dilihat pada Gambar II.3 dan Gambar II.4 [14].

Gambar II.3 Synchronous

Gambar II.4 Asynchronous

Di Scala, untuk menerapkan konsep concurrent dan asynchronous dilakukan

dengan cara menambahkan library berikut:

Setelah itu, menambahkan keyword Future atau Action.async di setiap

method kelas Scala yang menerapkan konsep ini yang akan dicontohkan di bawah

ini:

def method1(param: tipeParam): Future[Option[kelasA]] = { TODO }

// Method bagian controllers

def method2(param: tipeParam) = Action.async { implicit request =>

(31)

17

SintaksFuture pada kode di atas mengartikan bahwa method1 menghasilkan

kelasA yang dieksekusi secara concurrent dan asynchronous. Hal ini juga berlaku

untuk sintaks Action.async pada method2 [15].

II.10 Slick (Scala Language-Integrated Connection Kit)

Slick merupakan library Scala untuk mengakses database relasional dengan menggunakan antarmuka yang mirip library Scala collection. Slick memperlakukan

query seperti collections, mentransformasi dan menggabungkan mereka dengan

method map, flatMap, dan filter sebelum dikirim ke database untuk me-fetchresult.

Berikut ini adalah fitur-fitur yang dimiliki Slick [16]:

1. FunctionalRelational Mapping

Slick merupakan paradigma Functional Relational Mapping (FRM) baru

yang memungkinkan pemetaan (mapping) selesai di dalam Scala dengan sejumlah keuntungan kompleksitas abstraksi ketika dihubungkan dengan database

relasional. Beberapa keuntungan dari FRM Slick untuk pemrograman fungsional yaitu:

a. Efesiensi Dengan Pre-Optimization

FRM merupakan cara yang lebih efesien untuk menghubungkan (connect), ia

memiliki kemampuan pre-optimize untuk komunikasi dengan database dan

membuat aplikasi lebih cepat.

b. Tidak Ada Lagi Troubleshooting Membosankan Dengan Type Safety

FRM membawa type safety untuk membangun query database sehingga

(32)

18

c. Composable Model Untuk Membangun Queries

FRM mendukung composable model untuk membangun query. Ini adalah model

yang natural untuk menyusun potongan bersamaan (pieces together) dalam membangun query, kemudian menggunakan kembali potongan tersebut di basis kode. Berikut adalah contoh dari compose model dari Slick:

2. Reactive Applications

Slick mudah digunakan dalam perancangan aplikasi asynchronous,

non-blocking, dan mendukung pembangunan aplikasi sesuai dengan Reactive

Manifesto.

II.11Cloud Computing

Cloud computing merupakan gaya komputasi di mana sumber daya

komputasi seperti aplikasi dan media penyimpanan yang tersedia melalui internet, biasanya melalui web browser. Dengan cloud computing banyak web browser

mampu untuk melakukan sinkronisasi dengan aplikasi-aplikasi lainnya. Cloud

computing adalah suatu metode komputasi di mana kapabilitas teknologi informasi

disajikan sebagai suatu layanan, sehingga pengguna dapat mengakses dengan mudah melalui internet tanpa mengetahui apa yang ada di dalam, ahli menggunakan atau memiliki kendali terhadap infrastruktur teknologi yang digunakan. Menyimpan data di cloud dapat memberikan keuntungan dari segi peningkatan

ruang penyimpanan, sebagai backup online, dan akses data dapat dilakukan dari

(33)

19

II.12 Heroku Cloud

Heroku merupakan salah satu penyedia platform-as-a-service (PaaS)

terkemuka di bisnis cloudsoftware, yang membuktikan dirinya sebagai solusi PaaS terkemuka untuk perusahaan kecil dan besar. Dengan peningkatan yang konsisten dan filosofinya kenyamanan melebihi konfigurasi, menjadikan developer untuk fokus dalam menulis aplikasi web. Hal yang bersangkutan dengan server, building,

deploying, running, dan scaling aplikasi akan diatasi oleh Heroku.

Heroku menyediakan dukungan platform untuk Ruby, Ruby on Rails, Java, Node.js, Clojure, Scala, Python, dan PHP. Arsitektur Heroku add-on memungkinkan developer menyesuaikan penggunaan berbagai paket pihak ketiga berdasarkan kebutuhan. Developer memiliki fleksibilitas untuk memilih planbasic

atau premium berdasarkan kebutuhan website. Developer juga bisa mempercepat

aplikasi dengan menambahkan resources seperti memcached untuk caching data,

sehingga menciptakan aplikasi yang powerful yang kaya dengan fitur [18].

II.13 Structure Analysis and Design

Struktur analisis dan desain adalah sebuah metodologi yang di gunakan pada rekayasa perangkat lunak untuk mendeskripsikan sistem ke arah fungsional. Pendekatan ini memecahkan masalah-masalah dalam aktivitas bisnis menjadi bagian-bagian kecil yang dapat disatukan kembali menjadi satu kesatuan yang utuh untuk memecahkan masalah [19].

Tools yang dapat digunakan pada pendekatan analisis pengembangan sistem

secara terstruktur adalah:

1. ERD (Entity Relationship Diagram) adalah satu model jaringan yang menggunakan susunan data yang disimpan dalam sistem. ERD merupakan model jaringan data yang menekankan pada struktur dan hubungan antar data [20].

(34)

20

3. Data Flow Diagram atau biasa di singkat DFD merupakan serangkaian diagram

yang menggambarkan kegiatan-kegiatan yang ada dalam satu sistem. Teknik pembangunan DFD dimulai dengan menggambarkan sistem secara global dan dilanjutkan dengan analisis masing-masing bagian. Pada awalnya digambarkan konteks diagram yang menggambarkan sebuah sistem secara menyeluruh yang akan diinvestigasi. Konteks diagram tersebut dapat dikatakan sebagai DFD level 0. Analisis sistem yang lebih detail selanjutnya dapat dilakukan dengan menggambarkan DFD level 1,2 dan seterusnya.

4. Spesifikasi Proses merupakan tabel yang berisi keterangan deskripsi dari semua proses yang terdapat di DFD. Logika proses harus dituliskan secara jelas baik menggunakan bahasa deskriptif atau pseudo code (tidak boleh campuran).

5. Kamus Data (Data Dictionary) merupakan fakta tentang data dan

kebutuhan-kebutuhan informasi dari sistem informasi. Dengan menggunakan data

dictionary, analis sistem dapat mendefinisikan data yang mengalir dalam sistem

dengan lengkap [21].

II.14Object Oriented Analysis and Design

Analisis dan desain berorientasi objek adalah cara baru dalam memikirkan satu masalah dengan menggunakan model yang dibuat menurut konsep sekitar dunia nyata. Tujuan dari analisis berorientasi objek adalah untuk mengembangkan model yang menggambarkan perangkat lunak komputer karena bekerja untuk memenuhi seperangkat persyaratan yang ditentukan user [22]. Tools yang dapat digunakan pada pendekatan analisis pengembangan sistem secara objek yaitu menggunakan UML.

Unified Modelling Language (UML) adalah sebuah bahasa yang telah

menjadi standar dalam industri untuk visualisasi, merancang dan mendokumentasikan sistem piranti lunak. UML menggunakan class dan operation

object dalam konsep dasarnya, maka ia lebih cocok untuk penulisan piranti lunak

dalam bahasa bahasa berorientasi objek [23]. Dalam membangun block UML ada tiga hal yang harus diperhatikan, yaitu object (memodelkan konsep), relationship

(35)

21

antara object dan relationship. Diagram yang umum dipakai dalam analisis dan

desain adalah:

1. Use Case Diagram

Use Case Diagram menggambarkan fungsionalitas yang diharapkan dari

sebuah sistem. Yang ditekankan adalah “apa” yang diperbuat sistem, dan bukan “bagaimana”. Sebuah Use case merepresentasikan sebuah interaksi antara aktor dengan sistem. Sebuah use case dapat meng-include fungsionalitas use case lain sebagai bagian dari proses dalam dirinya. Secara umum diasumsikan bahwa use

case yang di-include akan dipanggil setiap kali use case yang meng-include

dieksekusi secara normal. Sebuah use case dapat di-include oleh lebih dari satu use

case lain, sehingga duplikasi fungsionalitas dapat dihindari dengan cara menarik

keluar fungsionalitas yang serupa. Sebuah use case juga dapat meng-extend usecase

lain dengan behaviour-nya sendiri. Sementara hubungan generalisasi antar use case

menunjukkan bahwa use case yang satu merupakan spesialisasi dari yang lain.

Dasar menentukan sebuah use case adalah use case merupakan sesuatu yang

menyediakan beberapa hasil terukur kepada pengguna atau sistem eksternal. Use

case harus memiliki sangat jelas kriteria lulus / gagal. Pengembang, tester, penulis

teknis, dan pengguna harus secara eksplisit tahu apakah sistem memenuhi kasus penggunaan atau tidak. Setiap bagian dari use case yang memenuhi tes sederhana

ini mungkin menjadi kandidat yang baik untuk use case [21]. Dasar pembangunan

use case diagram dapat dilihat pada Gambar II.5.

(36)

22

2. Use Case Scenario

Sebuah diagram yang menunjukkan use case dan aktor mungkin menjadi titik

awal yang bagus, tetapi tidak memberikan detail yang cukup untuk desainer sistem untuk benar-benar memahami persis bagaimana sistem dapat terpenuhi. Cara terbaik untuk mengungkapkan informasi penting ini adalah dalam bentuk penggunaan use case scenario berbasis teks per use case nya. Berikut adalah dasar format penulisan use case scenario [24]. Dasar pembangunan use case scenario

dapat dilihat pada Tabel II.2.

Tabel II.2 Dasar Pembangunan Use Case Scenario

Use Case Name Berisi nama dari use case yang akan digunakan

Goal In Context Menjelaskan apa yang aktor coba untuk dapatkan

dari use case

Description Menjelaskan gambaran dari use case

Related Use Case Daftar use case yang berhubungan dengan use

case tersebut

Successful End Condition

Kondisi use case jika berhasil

Failed End Condition Kondisi use case jika gagal

Actors Daftar aktor yang dapat mengakses use case

Trigger Aktifitas yang dilakukan untuk mengawali use

case

Main Flow Step Action

1 Deskripsi urutan aksi dari aktifitas use case

2

Extension Step Branching Action

2.1 Deskripsi urutan aksi lain selain urutan aksi

utama

3. Sequence Diagram

Sequence diagram menggambarkan interaksi antar objek di dalam dan di

sekitar sistem berupa message yang digambarkan terhadap waktu. Sequence

diagram terdiri atar dimensi vertikal (waktu) dan dimensi horizontal (objek-objek

yang terkait). Sequence diagram biasa digunakan untuk menggambarkan skenario

atau rangkaian langkah-langkah yang dilakukan sebagai respons dari sebuah event

untuk menghasilkan output tertentu. Diawali dari apa yang men-trigger aktivitas

tersebut, proses dan perubahan apa saja yang terjadi secara internal dan output apa

(37)

23

Masing-masing objek, termasuk aktor, memiliki lifeline vertikal. Message

digambarkan sebagai garis berpanah dari satu objek ke objek lainnya. Pada fase desain berikutnya, message akan dipetakan menjadi operasi/metoda dari class.

Activation bar menunjukkan lamanya eksekusi sebuah proses, biasanya diawali

dengan diterimanya sebuah message [23]. Untuk objek-objek yang memiliki sifat khusus, standar UML mendefinisikan icon khusus untuk objek boundary, controller

dan persistent entity. Dasar pembangunan sequence diagram dapat dilihat pada

Gambar II.6.

Gambar II.6 Dasar Pembangunan Sequence Diagram

4. Class Diagram

Class adalah sebuah spesifikasi yang jika diinstansiasi akan menghasilkan sebuah objek dan merupakan inti dari pengembangan dan desain berorientasi objek. Class menggambarkan keadaan (atribut/properti) satu sistem, sekaligus menawarkan layanan untuk memanipulasi keadaan tersebut (metoda/fungsi). Class diagram menggambarkan struktur dan deskripsi class, package dan objek beserta

hubungan satu sama lain seperti containment, pewarisan, asosiasi, dan lain-lain. Class memiliki tiga area pokok:

1. Nama dan stereotype 2. Atribut

(38)

24

Atribut dan metoda dapat memiliki salah satu sifat berikut:

1. Private, tidak dapat dipanggil dari luar class yang bersangkutan.

2. Protected, hanya dapat dipanggil oleh class yang bersangkutan dan anak-anak

yang mewarisinya.

3. Public, dapat dipanggil oleh siapa saja.

Class dapat merupakan implementasi dari sebuah interface, yaitu class

abstrak yang hanya memiliki metoda. Interface tidak dapat langsung diinstansiasikan, tetapi harus diimplementasikan dahulu menjadi sebuah class. Sesuai dengan perkembangan class model, class dapat dikelompokkan menjadi

package. Kita juga dapat membuat diagram yang terdiri atas package.

Class memiliki tipe-tipe relationship, diantaranya:

1. Asosiasi, yaitu hubungan statis antar class. Umumnya menggambarkan class

yang memiliki atribut berupa class lain, atau class yang harus mengetahui

eksistensi class lain.

2. Agregasi, yaitu hubungan yang menyatakan bagian terdiri atas dimana ketika satu class di-share atau direferensikan kepada objek yang ada di class lain.

3. Pewarisan, yaitu hubungan hirarkis antar class. Class dapat diturunkan dari

class lain dan mewarisi semua atribut dan metoda class asalnya dan

menambahkan fungsionalitas baru, sehingga ia disebut anak dari class yang diwarisinya. Kebalikan dari pewarisan adalah generalisasi.

4. Komposisi, yaitu jenis relasi class diagram yang kuat dimana jika sebuah class

tidak bisa berdiri sendiri dan harus merupakan bagian dari class yang lain, maka class tersebut memiliki relasi Composition terhadap class tempat dia bergantung tersebut. Sebuah relationship composition digambarkan sebagai garis dengan ujung berbentuk jajaran genjang berisi/solid.

5. Depedensi, salah satu jenis relasi class diagram yang lemah dimana objek dalam suatu class akan bekerja sangat singkat dengan objek yang ada pada

(39)

25

Gambar II.7 Dasar Pembangunan Class Diagram

5. Activity Diagram

Activity diagram menggambarkan berbagai alur aktivitas dalam sistem yang sedang dirancang, bagaimana masing-masing aliran berawal, decision yang mungkin terjadi, dan bagaimana mereka berakhir. Activity diagram juga dapat

menggambarkan proses paralel yang mungkin terjadi pada beberapa eksekusi. Sebuah aktivitas dapat direalisasikan oleh satu usecase atau lebih. Aktivitas menggambarkan proses yang berjalan, sementara usecase menggambarkan bagaimana aktor menggunakan sistem untuk melakukan aktivitas. Standar UML menggunakan segiempat dengan sudut membulat untuk menggambarkan aktivitas.

Decision digunakan untuk menggambarkan behaviour pada kondisi tertentu. Untuk

mengilustrasikan proses-proses paralel (fork dan join) digunakan titik sinkronisasi

yang dapat berupa titik, garis horizontal atau vertikal. Activity diagram dapat dibagi menjadi beberapa object swimlane untuk menggambarkan objek mana yang

bertanggung jawab untuk aktivitas tertentu [23].

II.15 Pengujian Unit (Unit Testing)

Pengujian unit merupakan pengujian yang menguji bagian terkecil dari kode, biasanya fungsi individu, sendirian, dan terisolasi. Ketika pengujian menggunakan beberapa sumber daya eksternal, seperti database, hal ini bukanlah pengujian unit.

(40)

26

II.16Pengujian Integrasi (Integration Testing)

Pengujian integrasi merupakan pengujian mengenai bagaimana menguji bagian-bagian sistem bekerja sama. Pengujian integrasi serupa dengan pengujian unit, tetapi memiliki satu perbedaan besar yaitu ketika pengujian unit terisolasi dari komponen lain sedangkan pengujian integrasi tidak. Sebagai contoh, pengujian unit kode database tidak akan berhubungan dengan database yang asli, sedangkan pengujian integrasi berhubungan dengan database asli [25].

II.17Pengujian Performa (Performance Testing)

Pengujian performa adalah teknik investigasi yang dilakukan untuk menentukan atau memvalidasi kecepatan, skalabilitas, dan stabilitas dari aplikasi atau produk yang diuji. Tujuan pengujian performa biasanya berkaitan untuk mengetahui response time, throughput (transaksi per detik), dan tingkat

pemanfaatan sumbe daya (resources-utilization).

Response time adalah ukuran seberapa responsif suatu aplikasi terhadap client

request, sedangkan throughput merupakan jumlah unit kerja yang dapat ditangani

per unit waktu, misalkan permintaan per detik, hits per detik, panggilan per hari, dan lain-lain [24]. Berikut ada beberapa definisi yang ada dalam pengujian performa [27] [28]:

1. #Sample yaitu mewakili banyaknya sample yang dieksekusi.

2. Averagelatency artinya rata-rata latency setiap request yang di eksekusi.

3. Latency (penundaan) adalah waktu untuk blok data tertentu untuk mendapatkan

dari satu titik ke titik lain.Latency diukur dengan mengirimkan paket yang akan dikembalikan kepada pengirim dan waktu pulang-pergi dianggap latency.

4. Average response time artinya rata-rata waktu waktu respon setiap request

yang dieksekusi.

5. Responsetime yaitu ukuran kinerja transaksi individu atau query dan jumlah

(41)

27

6. 90% line (90 percentile of the response times) merupakan salah satu metric

yang paling menarik dan menunjukan bahwa "90% dari sampel selesai dalam waktu 0-x" atau "90% dari sampel mengambil tidak lebih dari saat ini". 7. 95% line (95 percentile of the response times) menunjukan bahwa "95% dari

sampel selesai dalam waktu 0-x" atau "95% dari sampel mengambil tidak lebih dari saat ini".

8. 99% line (99 percentile of the response times) menunjukan bahwa "99% dari sampel selesai dalam waktu 0-x" atau "99% dari sampel mengambil tidak lebih dari saat ini".

9. Minimum response time artinya waktu tersingkat untuk sample dengan label

yang sama.

10. Maximumresponse time artinya waktu terpanjang untuk sample dengan label

yang sama.

11. Averagebandwidth artinya ukuran traffic yang dibuat per detik dalam satuan

Bytes.

12. Average throughput (Hits/s), Rata-rata jumlah permintaan HTTP/s per detik

yang dihasilkan oleh tes.

13. Error %, tingkat kesalahan per label.

II.18 Blazemeter

Blazemeter merupakan suatu platform pengujian performa yang berbasis

cloud untuk web dan aplikasi mobile yang dibuat untuk profesional developers,

operations, devops dan QA. Blazemeter dapat melakukan hal sebagai berikut [27]:

1. Menguji load setiap website, webapp, mobileapp, API ataupun webservice. 2. Menemukan dan memperbaiki hambatan performa.

3. Merealisasikan perencanaan kapasitas.

(42)

28

II.19Web Service

Web service adalah suatu sistem perangkat lunak yang dirancang untuk

mendukung interoperabilitas dan interaksi antar sistem pada suatu jaringan. Web

service memiliki interface yang menggambarkan kumpulan operasi yang diakses

melalui jaringan, menjalankan sebuah atau kumpulan tugas secara spesifik, dideskripsikan menggunakan standar notasi XML formal yang disebut sebagai

service description yang menyediakan semua rincian kebutuhan untuk interaksi

dengan service (layanan) termasuk message format (rincian tentang operasi), transportasi protokol, dan lokasinya [29].

II.20RESTful Web Services

REpresentational State Transfer (REST) merupakan sebuah metode dalam menyampaikan resource melalu media web. Resource sendiri bisa didefinisikan

sebagai segala sesuatu yang dapat disimpan didalam sebuah computer dan

ditampilkan sebagai urutan bit, misalnya dokumen, row dalam database, atau hasil

dari sebuah perhitungan algoritma [30]. REST adalah model arsitekur yang pada dasarnya memanfaatkan teknologi dan protokol yang sudah ada seperti HTTP

(Hypertext Transfer Protocol) dan XML.

Arsitektur REST dibangun dengan sifat sebagai berikut [31]:

1. Addressability

Dalam prinsip ini seluruh resource harus tersedia melalui sebuah alamat unik, pengalamatan ini dilakukan dengan menggunakan URI (Unique Resource

Identifiers).

2. Uniform Interface

RESTful service menampilkan semua resource dan interaksinya dengan

interface yang seragam, dalam metode REST antarmuka yang digunakan adalah

(43)

29

3. Representation-oriented

Representasi menjelaskan dalam bentuk apa data sedang dipertukarkan antara

client dan server. Pada umumnya data dipertukarkan dalam bentuk XML, JSON,

dan HTML.

4. Statelessness

Setiap interaksi antara client dan server harus memiliki state sendiri. Jadi

server hanya akan memantau resourcestate bukan clientsession.

Berikut merupakan penggunaan metode HTTP dalam REST Web Service:

Tabel II.3 Metode HTTP REST Web Service

Metode Deskripsi

GET Mendapatkan (read) sebuah sumber daya (resource) yang diidentifikasi dengan

URI (Uniform Resource Identifier)

POST Mengirimkan sumber daya (resource) ke server. Digunakan untuk membuat

(create) sumber daya baru.

PUT Mengirimkan sumber daya (resource) ke server. Digunakan untuk memasukkan

(insert) atau memperbarui (update) sumber daya yang tersimpan.

DELETE Menghapus (delete) sumber daya (resource) yang diidentifikasi dengan URI

HEAD Mendapatkan meta data (response header) dari sumber daya(resource) yang

diidentifikasi dengan URI.

II.21 JSON (JavaScript Object Notation)

JavaScript Object Notation (JSON) adalah format pertukaran data yang

ringan, mudah dibaca dan ditulis oleh manusia, serta mudah diterjemahkan dan dibuat (generate) oleh komputer [32]. JSON terbuat dari dua struktur yaitu:

1. Kumpulan pasangan nama/nilai. Pada beberapa bahasa, hal ini dinyatakan sebagai objek (object), rekaman (record), struktur (struct), kamus (dictionary),

tabel hash (hash table), daftar berkunci (keyed list), atau associative array.

2. Daftar nilai terurutkan (list of values). Pada kebanyakan bahasa, hal ini

dinyatakan sebagai larik (array), vektor (vector), daftar (list), atau urutan

(44)

30

JSON menggunakan bentuk sebagai berikut: 1. Objek

Objek adalah sepasang nama/nilai yang tidak terurutkan. Objek dimulai dengan { (kurung kurawal buka) dan diakhiri dengan } (kurung kurawal tutup). Setiap nama diikuti dengan : (titik dua) dan setiap pasangan nama/nilai dipisahkan oleh , (koma).

2. Larik

Larik adalah kumpulan nilai yang terurutkan. Larik dimulai dengan [ (kurung kotak buka) dan diakhiri dengan ] (kurung kotak tutup). Setiap nilai dipisahkan oleh , (koma).

3. Nilai

Nilai (value) dapat berupa sebuah string dalam tanda kutip ganda, atau angka, atau true atau false atau null, atau sebuah objek atau sebuah larik. Struktur-struktur tersebut dapat disusun bertingkat.

4. String

String adalah kumpulan dari nol atau lebih karakter Unicode, yang dibungkus dengan tanda kutip ganda. Di dalam string dapat digunakan backslashescapes

"\" untuk membentuk karakter khusus. Sebuah karakter mewakili karakter tunggal pada string. String sangat mirip dengan string C atau Java.

(45)

233

BAB V

KESIMPULAN DAN SARAN

V.1 Kesimpulan

Berdasarkan hasil pengujian, maka diperoleh kesimpulan sebagai berikut: 1. Setiap Fungsionalitas sistem baru yang diuji dengan pengujian unit dan

pengujian integrasi disimpulkan bahwa fungsi-fungsinya sudah berjalan sesuai dengan tugasnya masing-masing.

2. Pengujian performa antara sistem lama dengan sistem baru menghasilkan bahwa performa sistem baru berjalan lebih cepat dengan melayani akses data yang dibutuhkan oleh pengguna.

3. Memigrasikan backend Crimezone ke Scala memudahkan dalam menerapkan

konsep pemrograman asynchrnous, concurrency, dan parallelism.

V.2 Saran

Pengembangan aplikasi Crimezone ini hanya memfokuskan pada performa aplikasi yaitu dengan memigrasikan backend dari bahasa pemrograman PHP ke Scala. Oleh sebab itu, masih perlu dilakukan pengembangan-pengembangan ke arah yang lebih baik sehingga dapat melayani pengguna secara lebih baik. Adapun saran-saran terhadap pengembangan aplikasi Crimezone ke depannya adalah sebagai berikut:

1. Melengkapi fitur-fitur yang terdapat pada aplikasi mobile Crimezone, seperti

fitur filtering laporan kejahatan, serta fitur panggil polisi terdekat pada subsistem

mobile.

2. Mengembangkan aplikasi mobile Crimezone tidak hanya dapat digunakan di

Gambar

Tabel II.1 Padanan PHP, Scala, dan Java
Gambar II.1 Concurrency
Gambar II.5 Dasar Pembangunan Use Case Diagram
Tabel II.2 Dasar Pembangunan Use Case Scenario
+4

Referensi

Dokumen terkait