LAPORAN KERJA PRAKTIK
APLIKASI CLIENT MONITORING SERVICE PADA SISTEM MONITORING PENGISIAN BAHAN BAKAR MINYAK (SMPBBM) BERBASIS ANDROID
Disusun Oleh : TAUFIK RIDWAN 1210705140
JURUSAN TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS ISLAM NEGERI SUNAN GUNUNG DJATI BANDUNG 2013
HALAMAN PENGESAHAN
LAPORAN KERJA PRAKTIK APLIKASI CLIENT MONITORING SERVICE PADA SISTEM MONITORING PENGISIAN BAHAN BAKAR MINYAK (SMPBBM) BERBASIS ANDROID
Disusun Oleh : Taufik Ridwan
1210705140
Telah diperiksa dan disetujui oleh pembimbing Pada tanggal : 1 November 2013
Pembimbing Perusahaan
Pembimbing Kerja Praktik
Ivan Michael Siregar, ST, MT
Jumadi, ST.,M.Cs NIP. 197805312007101001
Mengetahui Ketua Program Studi
H.Cecep Nurul Alam, ST,MT NIP. 197804172005011005
i
KATA PENGANTAR
Assalamua’laikum Wr. Wb. Segala puji bagi Allah yang telah mengangkat harkat derajat manusia dengan ilmu dan amal, atas seluruh alam. Shalawat dan Salam semoga terlimpah atas Nabi Muhammad, pemimpin seluruh umat manusia, dan semoga pula tercurah atas keluarga dan para sahabatnya yang menjadi sumber ilmu dan hikmah. Alhamdulillah laporan kerja praktik ini dapat diselesaikan dengan judul “APLIKASI
CLIENT
MONITORING
SERVICE
PADA
SISTEM
MONITORING PENGISIAN BAHAN BAKAR MINYAK (SMPBBM) BERBASIS ANDROID”. Laporan Kerja Praktik ini disusun sebagai salah satu syarat kelulusan mata kuliah kerja praktik pada semester VII (tujuh), yang diwajibkan kepada mahasiswa jurusan Teknik Informatika Universitas Islam Negeri Sunan Gunung Djati Bandung dan sebagai dasar evaluasi yang didapat dari hasil-hasil kegiatan perkuliahan yang telah dijalani serta sebagai tambahan pengetahuan dan pengalaman bagi penyusun. Terima kasih kepada semua pihak yang telah membantu dalam menyelesaikan laporan ini, diantaranya : 1. Kedua orang tua yang tidak pernah lelah menyemangati setiap saat dan selalu mendukung baik moril maupun materiil. 2. Bapak Jumadi, ST., M.Cs selaku dosen pembimbing kerja praktik. 3. Ivan Michael Siregar, ST, MT selaku pembimbing kerja praktik di Aplysit Corporation yang telah membimbing selama proses kerja praktik. 4. Saudara Miftahul Sidiq rekan satu kelompok dalam kerja praktik ini. 5. Teman-teman santri Pondok Pesantren Mahasiswa Universal yang menjadi tempat berbagi canda dan tawa serta teman-teman kelas dan semua pihak yang selalu menjadi penyemangat dikala jatuh, dan teman ketika suka dan duka. Semoga
Allah
membalasnya
dengan
ii
berlipat
ganda,
amiin!
iii
Laporan ini mungkin masih jauh dari kesempurnaan, baik dari segi penulisan maupun isi materinya. Oleh karena itu, baik saran, kritik maupun bentuk apapun
yang bersifat membangun diharapkan untuk perbaikan
kedepannya. Wassalamua’laikum Wr. Wb.
Bandung, November 2013 Penulis
Taufik Ridwan
DAFTAR ISI
HALAMAN PENGESAHAN .............................................................................................. i KATA PENGANTAR ......................................................................................................... ii DAFTAR ISI ....................................................................................................................... iv DAFTAR TABEL ............................................................................................................. vii DAFTAR GAMBAR ........................................................................................................ viii BAB I PENDAHULUAN .....................................................................................................1 1.1. Latar Belakang Masalah ........................................................................................1 1.2. Perumusan Masalah ...............................................................................................2 1.3. Tujuan Kerja Praktik..............................................................................................3 1.4. Batasan Masalah ....................................................................................................3 1.5. Metodologi Kerja Praktik ......................................................................................3 1.6. Waktu dan Tempat Kerja Praktik ..........................................................................5 1.7. Kegiatan Kerja Praktik...........................................................................................5 1.8. Sistematika Penyusunan ........................................................................................5 BAB II LANDASAN TEORI ..............................................................................................7 2.1.Sistem Monitoring Pengisian Bahan Bakar Minyak (SMPBBM) ..........................7 2.1.1.Internet Di Indonesia ....................................................................................7 2.1.2.Sistem Monitoring Pengisian Bahan Bakar Minyak (SMPBBM) ................9 2.1.3.Tujuan dan Sasaran Penyelenggaraan SMPBBM ......................................11 2.2.Client Server .........................................................................................................11 2.3.Web Service ..........................................................................................................12 2.3.1.Pengertian Web Service..............................................................................13 2.3.2.Service Oriented Architecture (SOA)........................................................16 2.3.3.Keuntungan menggunakan Web Service ....................................................20 2.4.Android .................................................................................................................20 2.4.1.Pengertian Android .....................................................................................20 2.4.2.Perkembangan Android ..............................................................................22 2.4.3.Library KSOAP ..........................................................................................23 2.5.UML .....................................................................................................................24 2.5.1.Use Case .....................................................................................................25
iv
v
2.5.2. Activity Diagram .......................................................................................27 2.5.3. Sequence Diagram .....................................................................................29 2.5.4. Class Diagram ............................................................................................31 2.6.Bahasa Pemrograman Java ...................................................................................34 2.7.Pengujian Perangkat Lunak ..................................................................................34 2.7.1.Pengujian White-Box.........................................................................................35 2.7.2.Pengujian Black-Box .........................................................................................35 BAB III TINJAUAN UMUM ............................................................................................36 3.1.Sejarah AplysIT Corporation ................................................................................36 3.2.Visi dan Misi dan Struktur Organisasi AplysIT Corporation ...............................37 3.2.1. Visi ............................................................................................................37 3.2.2. Misi ............................................................................................................37 3.2.3. Nilai ...........................................................................................................37 3.2.4. Struktur Organisasi ....................................................................................38 BAB IV ANALISIS PERANCANGAN ............................................................................40 4.1.Analisis Sistem .....................................................................................................40 4.1.1. Analisis Sistem yang sedang Berjalan .......................................................40 4.1.2. Analisis Kebutuhan Fungsional .................................................................40 4.1.3. Analisis Kebutuhan Non-Fungsional ........................................................41 4.1.4. Analisis Kebutuhan Perangkat Keras ........................................................41 4.1.5. Analisis Kebutuhan Perangkat Lunak .......................................................42 4.1.6. Sistem yang Diusulkan ..............................................................................42 4.1.7. Evaluasi Kelayakan ...................................................................................43 4.2.Arsitektur Sistem ..................................................................................................43 4.3.Pemodelan Sistem.................................................................................................46 4.3.1. Use Case .................................................................................................... 46 4.3.2. Activity Diagram ....................................................................................... 46 4.3.3. Sequence Diagram ..................................................................................... 47 4.3.4. Class Diagram ............................................................................................ 49 4.3.5. Perancangan Kemanan...............................................................................50 4.3.6. Perancangan Antar Muka Aplikasi ............................................................50 BAB V IMPLEMENTASI DAN PENGUJIAN ...............................................................53 5.1.Implementasi Sistem.............................................................................................53
vi
5.1.1.Kedudukan Sistem ......................................................................................53 5.1.2.Persiapan Infrastuktur .................................................................................53 5.1.3.Implementasi Coding..................................................................................54 5.1.4.Antar Muka Perangkat Lunak ....................................................................56 5.2.Pengujian Sistem ..................................................................................................59 BAB VI PENUTUP ............................................................................................................63 6.1.KESIMPULAN ....................................................................................................63 6.2.SARAN .................................................................................................................64 DAFTAR PUSTAKA .........................................................................................................65 LAMPIRAN ........................................................................................................................67
DAFTAR TABEL
Tabel 1.1 Tabel Kegiatan Kerja Praktik ............................................................. 5 Tabel 2.1 Simbol dan Keterangan Use Case ...................................................... 26 Tabel 2.2 Simbol dan Keterangan Activity Diagram ........................................ 28 Tabel 4.1 Kebutuhan Fungsional Sistem ........................................................... 41 Tabel 4.2 Kebutuhan Non Fungsional Sistem ................................................... 41 Tabel 5.1 Tabel User Acceptance Test .............................................................. 60
vii
DAFTAR GAMBAR
Gambar 2.1 Pengguna Internet di Indonesia ................................................... 8 Gambar 2.2 Pertumbuhan Pengguna Internet ................................................. 9 Gambar 2.3 Contoh XML ............................................................................... 14 Gambar 2.4 Contoh SOAP ............................................................................... 15 Gambar 2.5 Contoh WSDL .............................................................................. 16 Gambar 2.6 Gambar 2.6 Simbol Sequence Diagram ...................................... 31 Gambar 3.1 Stake Holder Aplysit ................................................................... 37 Gambar 3.2 Nilai di Aplysit ............................................................................ 38 Gambar 3.3 Struktur Organisasi ...................................................................... 39 Gambar 4.1 Use Case Diagram ....................................................................... 38 Gambar 4.2 Activity Diagram ......................................................................... 39 Gambar 4.3 Class Diagram ............................................................................. 40 Gambar 4.1 Arsitektur Sistem .......................................................................... 44 Gambar 4.2 Use Case Diagram ....................................................................... 46 Gambar 4.3 Activity Diagram ......................................................................... 47 Gambar 4.4 Activity Diagram .......................................................................... 48 Gambar 4.5 Class Diagram ............................................................................. 49 Gambar 4.6 Perancangan Tampilan Home ..................................................... 50 Gambar 4.7 Perancangan Tampilan App dan DMZ Server ............................. 51 Gambar 4.8 Perancangan Tampilan Monitor SPBU ........................................ 51 Gambar 4.9 Perancangan Tampilan Pencarian SPBU .................................... 52 Gambar 5.1 Implementasi Pendeklarasian Variabel ....................................... 54 Gambar 5.2 Implementasi Pemanggilan Web Service di Android ................. 54 Gambar 5.3 Implementasi Pengolahan String dari Web Service di Android. 55 Gambar 5.4 Implementasi Pemisahan String dari Web Service di Android .... 56 Gambar 5.5 Tampilan Antarmuka Home ........................................................ 56 Gambar 5.6 Tampilan Antarmuka DMZ Server ............................................. 57 Gambar 5.7 Tampilan Antarmuka App Server .............................................. 58
viii
ix
Gambar 5.8 Tampilan Antarmuka Monitor SPBU ........................................ 58 Gambar 5.9 Tampilan Antarmuka Pencarian Detail ....................................... 59
BAB I PENDAHULUAN
1.1. Latar Belakang Masalah Perkembangan sains dan teknologi telah mempermudah manusia dalam mendapatkan informasi. Internet sebagai produk dari teknologi menjadi sebuah wadah dalam perkembangan informasi. Internet menjadikan segala informasi yang kita cari dan butuhkan dapat kita akses dengan cepat dan mudah. Internet telah memberikan informasi kepada orang tanpa mengenal batasan ruang dan waktu. Informasi dapat diakses kapan dan dimana saja. Pemanfaatannya mulai dari social network yang digunakan untuk bertukar informasi pribadi hingga web service yang digunakan untuk akses data perusahaan. Dengan begitu banyaknya manfaat yang dapat di ambil dari internet, media aksesnya pun juga berkembang sangat pesat. Dahulu komputer desktop menjadi pengakses utama ke internet. Namun di zaman yang serba praktis ini, handphone sebagai kebutuhan yang bersifat mobile kini mendapat tempat tersendiri di tengah masyarakat. Dengan begitu mudahnya akses yang dapat dilakukan menjadikan handphone menjadi alat yang praktis. Kita bisa mengaksesnya dengan hanya memanfaatkan handphone yang kita miliki. Sesuai perkembangannya, informasi saat ini sering digunakan sebagai dasar dari sebuah aplikasi untuk berbagai keperluan kantor, pribadi, instansi tertentu, daan lain-lain. Inovasi dan terobosan barupun kini mulai dikembangkan untuk memenuhi kebutuhan manusia untuk menggunakan cara-cara yang baru yang lebih bisa menguntungkan manusia, yang pastinya lebih efektif dan efisien dibandingkan cara lama yang kurang relatif lebih memakan waktu dan tenaga dengan memanfaatkan teknologi informasi. Saat ini pertumbuhan teknologi informasi sangat pesat karena sifatnya yang fleksibel dan dapat digunakan dalam setiap bidang seperti kesehatan, pendidikan, pemerintahan hingga bisnis. Pada saat ini informasi masih sangatlah penting bagi masyarakat atau instansi tertentu maka BUMN seperti Pertamina harus bisa memberikan informasi
1
2
yang akurat untuk dikonsumsi oleh petugas Pertamina lainnya. Pertamina sekarang masih kesulitan dalam memberikan informasi lebih detail mengenai informasi status server-server yang digunakan untuk project SMPBBM yakni tentang memonitoring server hidup atau mati, kemudian mengecek data yang masuk di setiap SPBU. Dengan demikian Pertamina pusat sangat membutuhkan sistem informasi yang bisa memudahkan petugas SPBU untuk melihat dan memonitoring server tentang hidup atau matinya server, sehingga jika terjadi halhal yang tidak diinginkan maka petugas bisa langsung memperbaiki server sesuai dengan prosedur yang berlaku. Petugas SPBU pusat masih merasakan kesulitan dalam mencari informasi yang valid dan terpercaya mengenai hidup atau matinya server di setiap SPBU karena keterbatasan jangkauan wilayah antara SPBU yang satu dengan SPBU yang lain. Hal itu relatif memakan waktu lama dan biasanya para petugas SPBU bertukar informasi dengan cara bertukar pesan lewat sms saja. Oleh sebab itu dibutuhkan sebuah aplikasi yang bisa memonitoring kinerja server dan menampilkan informasi ke para petugas, sehingga petugas tidak perlu lagi tukar informasi melalui sms dan tidak bisa lagi “kongkalikong atau bermain di belakang” dan petugas SPBU pusat pun bisa melihat secara langsung dan realtime mengenai status server. Perangkat mobile yang tersinkronisasi dengan web service pun dilirik sebagai solusi yang bisa mengatasi hal tersebut. Android menjadi pilihan untuk digunakan dalam aplikasi ini. Mengingat android merupakan salah satu sistem operasi mobile yang banyak digunakan dan harga yang relatif murah. Melihat latar belakang masalah tersebut maka akan dibuat “Aplikasi Client Monitoring Service Pada Sistem Monitoring Pengisian Bahan Bakar Minyak (SMPBBM) Berbasis Android”.
1.2. Perumusan Masalah Dari pemaparan latar belakang di atas maka dirumuskan masalah pada kerja praktik ini yaitu:
3
1.
Pertamina membutuhkan client untuk mengakses data yang berada di web service yang telah mereka miliki.
2.
Pembuatan client untuk monitoring service yang berjalan pada sisi server akan lebih meningkatkan mobilitas.
1.3. Tujuan Kerja Praktik Adapun tujuan dari kerja praktik ini adalah untuk membuat sebuah “Aplikasi Client Monitoring Service Pada Sistem Monitoring Pengisian Bahan Bakar Minyak (SMPBBM) Berbasis Android”.
1.4. Batasan Masalah Berdasarkan perumusan masalah di atas maka penelitian ini bertujuan : 1.
Pembuatan client web service di pertamina berbasis android.
2.
Pembuatan client web service mampu mengakses data yang ada pada web service berupa monitoring service yang berjalan di server Sistem Monitoring Pengisian Bahan Bakar Minyak (SMPBBM) .
1.5. Metodologi Kerja Praktik 1. Tahap pengumpulan data Adapun teknik pengumpulan data yang akan dipakai antara lain : a. Studi literatur Pengumpulan data dengan cara mengumpulkan beberapa buku, artikel dan jurnal yang ada kaitannya dengan judul kerja praktik sebagai referensi. Referensi tersebut dipakai dengan tujuan untuk memperoleh penjelasan yang bersifat teoritis. b. Observasi Melakukan pengamatan secara langsung terhadap web service Pertamina yang telah dikembangkan oleh aplysit untuk melakukan peninjauan lebih lanjut tentang perangkat lunak yang akan dibangun.
4
c. Wawancara Melakukan wawancara mengenai analisis kebutuhan aplikasi kepada pihak aplysit selaku kantor kerja praktik. 2. Tahap pembuatan Dalam pengembangan aplikasi ini akan menggunakan model prototype selama praktik kerja berlangsung, tahapan metodenya antara lain : a. Pengumpulan kebutuhan Tahapan yang pertama yaitu mendefinisikan format seluruh perangkat lunak, mengidentifikasikan semua kebutuhan, dan garis besar sistem yang akan dibuat. b. Membangun Prototyping Membangun prototyping dengan membuat perancangan sementara . c. Evaluasi Prototyping Evaluasi ini dilakukan oleh pelanggan apakah prototyping yang sudah dibangun sudah sesuai dengan keinginann pelanggan. Jika sudah sesuai maka langkah d akan diambil. Jika tidak prototyping direvisi dengan mengulangi langkah a, b , dan c. d. Pengkodean sistem Dalam tahap ini prototyping yang sudah disepakati diterjemahkan ke dalam bahasa pemrograman yang sesuai. e. Menguji sistem Setelah sistem sudah menjadi suatu perangkat lunak yang siap pakai, harus dites dahulu sebelum digunakan. f. Evaluasi Sistem Melakukan evaluasi apakah sistem yang sudah jadi sudah sesuai dengan yang diharapkan . Jika ya, langkah g dilakukan; jika tidak, ulangi langkah d dan e. g. Menggunakan sistem Perangkat lunak yang telah diuji dan sukses maka akan siap untuk digunakan.
5
1.6. Waktu dan Tempat Kerja Praktik Pelaksanaan kerja praktik dimulai bulan Oktober 2013 sampai dengan November 2013. Tempat kerja praktik yaitu di Aplysit Corporation Jl. Moch.Toha 77 Bandung, Jawa Barat
1.7. Kegiatan Kerja Praktik Secara umum, kegiatan yang dilakukan selama kerja praktik adalah sebagai berikut: Tabel 1.1 Tabel Kegiatan Kerja Praktik Oktober No
Nama 1
2
3
November 2013 4
1
2
3
Tahap Pengumpulan Data 1 (Studi Literatur, Observasi, dan Wawancara) 2
Menganalisis Kebutuhan Sistem
3 Perancangan Sistem / Design 4 Penulisan Program 5 Pengujian Program
1.8. Sistematika Penyusunan Untuk memberikan gambaran yang jelas mengenai penulisan laporan kerja praktik, maka ditetapkan sistematika penulisan sebagai berikut: BAB I PENDAHULUAN Dalam bab ini dijelaskan mengenai deskripsi umum dari isi Laporan Kerja Praktik yang meliputi latar belakang, rumusan masalah, tujuan masalah, batasan masalah, metodelogi penelitian dan sistematika penyusunan. BAB II LANDASAN TEORI
4
6
Dalam bab ini dijelaskan mengenai teori-teori yang berhubungan dengan masalah yang dikemukakan pada laporan ini. BAB III TINJAUAN UMUM PERUSAHAAN Dalam bab ini membahas mengenai gambaran umun Aplysit Corporation, mulai dari sejarah berdirinya, visi, misi, struktur organisasi, dan tugas pokok. BAB IV ANALISIS DAN PERANCANGAN SISTEM Dalam bab ini akan dijelaskan semua analisis dan perancangan yang berhubungan dengan Analisis dan perancangan Aplikasi Client Monitoring Service pada Sistem Monitoring Pengisian Bahan Bakar Minyak Berbasis Android. BAB V IMPLEMENTASI DAN PENGUJIAN SISTEM Dalam bab ini berisikan cara-cara penyajian teknik implementasi serta pengujian sistem yang sudah selesai, termasuk preview dari hasil akhir pada Analisis dan Perancangan Aplikasi Client Monitoring Service pada Sistem Monitoring Pengisian Bahan Bakar Minyak Berbasis Android. BAB VI PENUTUP Dalam bab ini dijelaskan mengenai hasil kesimpulan dari pembahasan yang telah dijelaskan dalam Laporan Kerja Praktik ini dan berbagai saran yang dapat berguna serta membantu untuk pembuatan laporan ke arah yang lebih baik lagi.
BAB II LANDASAN TEORI
2.1. Sistem Monitoring Pengisian Bahan Bakar Minyak (SMPBBM) 2.1.1. Internet Di Indonesia Indonesia adalah salah satu negara yang memiliki banyak kepulauan.Oleh karena itu Indonesia disebut negara kepulauan. jarak yang jauh antara kota adalah salah satu rmasalah bagi para pengembang informasi dulu, tapi sekarang jauhnya jarak rasanya tidak menjadi permasalahan penting dengan adanya internet. Jika saja sekarang ini tidak ada internet maka akan sangat sulit kita untuk bertukar informasi dari Jakarta ke Jayapura yang sangat jauh itu, bisa jadi karena jauhnya tujuan, informasi dapat berubah di tengah jalan entah itu karena lupa atau sengaja, seperti kita tahu bahwa zaman dahulu para sahabat menyampaikan berita (hadist) hingga sampai pada zaman ini, itu tidaklah gampang dan salah satu penyebabnya adalah luasnya dunia ini dan berbeda-beda bahasa antara suku sehingga peluang informasi untuk berubah kata dan makna sangatlah besar. Tetapi jarak dan perbedaan bahasa pun tidak menjadi acuan untuk validitas sebuah informasi, dengan hadirnya International Network (Internet) dari tahun 1969 hingga sekarang membuat mudahnya bertukar informasi kapanpun, dimanapun, dan siapapun sekarang bisa saling bertukar informasi dan bahkan kita yang berada di Indonesia dengan bantuan teknologi internet kini bisa mengetahui keaadaan atau situasi dan berita-berita yang ada di luar sana seperti di Amerika Serikat, Inggris, Jepang, dan lain-lain. Berdasarkan informasi statistika yang di keluarkan oleh internet world start yang di tulis di web http://www.internetworldstats.com/asia.htm mencantumkan angka 248.645.008 jiwa yang ada di Indonesia pada tahun 2012 dan 55.000.000 yang tercatat menggunakan internet pada tahun 2013, seperti yang ada di gambar 2.1
7
8
Gambar 2.1 Pengguna Internet di Indonesia
Kemudian berdasarkan Assosiasi Penyelenggara Jasa Internet Indonesia (APJII)
pada
2012
tahun
lalu
menulis
di
dalam
website
resminya
http://www.apjii.or.id/v2/index.php/read/page/halaman-data/9/statistik.html yang menyatakan bahwa pengguna internet yang tercatat di tahun 2012 adalah sebanyak 63.000.000 jiwa, dan di perkirakan akan naik menjadi 82.000.000 jiwa pengguna internet di Indonesia pada tahun 2013, seperti pada gambar 2.2
9
Gambar 2.2 Pertumbuhan Pengguna Internet
Dari dua data di atas bisa kita simpulkan bahwa penggunaan teknologi internet di Indonesia ini sangatlah tinggi dan berkembang pesat. Sehingga bukan hal sulit untuk bertukar data antar pulau Jawa dan pulau Maluku atau dengan pulau yang lainnya. Dan jika bertukar informasi melalui teknologi internet akan menghemat waktu, tenaga, dan uang. 2.1.2. Sistem Monitoring Pengisian Bahan Bakar Minyak (SMPBBM) Penyelenggaraan proyek SMPBBM sampai saat ini baru di implementasikan di Jakarta saja, dan di rencanakan pada pertengahan tahun 2014 akan mencakup semua
daerah
Indonesia,
seperti
artikel
yang
di
posting
di
http://m.merdeka.com/otomotif/pemilik-dan-komunitas-mobil-dipasangi-ring-rfidgratis.html Program SMPBBM adalah langkah awal Pertamina dalam upaya monitoring dan pengendalian penggunaan BBM - khususnya BBM bersubsidi, serta menjaga kestabilan harga bahan baku dan komoditas guna menunjang pembangunan nasional serta sebagai upaya terus menerus dalam menjaga besaran volume Bahan Bakar Minyak sebagaimana ditetapkan dalam Anggaran Pendapatan dan Belanja Negara (APBN). Dalam jangka panjang, PT Pertamina
10
akan memetik manfaat nyata dari implementasi sistem SMPBBM berupa akuntabilitas penyediaan dan distribusi BBM, khususnya BBM bersubsidi dan data strategis konsumsi BBM. Dalam pelaksanaan program SMPBBM, PT Pertamina telah menunjuk PT INTI (Industri Telekomunikasi Indonesia), BUMN yang memiliki rekam jejak di bidang pengembangan dan implementasi Teknologi Informasi (TI) dalam menjalankan seluruh implementasi TI program SMPBBM. Selanjutnya pihak PT INTI menunjuk Aplysit Corporation sebagai pelaksana teknis dari proyek ini. Aplysit bertugas untuk membuat software-software yang di butuhkan. Adapun visi dan misi dari project ini adalah : 1. Visi dari project ini adalah meminitoring penggunaan BBM di Indonesia serta ikut menurunkan harga BBM bersubsidi pada batasan tertentu dan untuk melakukan pemoderanisasi system yang telah ada di Pertamina pusat atau pun di setiap SPBU. 2. Misi dari proyek ini adalah dengan cara meregistrasi semua kendaraan yang ada di Indonesia dengan menggunakan sebuah alat yang di namakan Radio Frekuensi ID (RFID) dan memberi kuota gratis terhadap penggunanya. Adapun manfaat dari terciptanya SMPBBM yang di harapkan bisa mulai berjalan di tahun 2014 ini adalah : 1. Turunnya harga BBM bersubsidi sampai batas kuota tertentu. 2. Semua volume jenis BBM di setiap SPBU akan bisa dimonitoring. 3. Proses pengiriman tangki BBM antara Pertamina dengan setiap SPBU akan termonitoring. 4. Proses pengisian BBM per kendaraan akan tercatat. 5. Proses penghitungan transaksi per BBM akan mudah didokumentasikan. Oleh sebab besarnya manfaat dari SMPBBM ini maka pihak ini membutuhkan aplikasi monitoring khusus untuk server yang terpasang di setiap SPBU dan di server pusat Pertamina.
11
2.1.3. Tujuan dan Sasaran Penyelenggaraan SMPBBM -
Tujuan Umum : Mengendalikan subsidi pemerintah terhadap BBM khususnya premium
yang sekarang ini berharga Rp.6500 per liternya menjadi lebih murah lagi, sehingga
subsidi
pemerintah
bisa
tepat
pada
sasarannya.
Serta
ikut
mensejahterakan ekonomi masyarakat Indonesia. -
-
Tujuan Khusus: 1.
Mengendalikan penyebaran BBM di Indonesia.
2.
Memonitoring pengisian BBM di Indonesia.
3.
Memoderisasikan proses bisnis manual menjadi terkomputerisasi.
4.
Menghubungkan banyak SPBU menjadi satu kesatuan.
5.
Pencatatan konsumsi BBM di Indonesia.
6.
Menghidari penyalahgunaan wewenang dari berbagai pihak SPBU.
Sasaran Sasaran program ini adalah seluruh masyarakat Indonesia yang telah terdaftar
di Pertamina melalui pemasangan RFID di kendaraan yang teregistrasi resmi di kepolisan Indonesia. Dan sebagai bahan analisis dan pengkajian bagi pihak Pertamina serta menjadikan SPBU lebih terkontrol.
2.2. Client Server Sejak pertama kali dikembangkan pada tahun 1973 oleh Lembaga Riset Amerika Serikat DARPA (Defence Advanced Research Project Agency), perkembangan internet sangat pesat. Internet yang merupakan kepanjangan dari Interconnection Networking atau juga yang telah menjadi International Networking merupakan suatu jaringan yang menghubungkan komputer di seluruh dunia tanpa dibatasi oleh jumlah unit menjadi satu jaringan yang bisa saling mengakses satu sama lain. Dengan internet, satu komputer dapat berkomunikasi secara langsung dengan komputer lain dari berbagai belahan dunia. Pada dasarnya jaringan komputer pada internet dibagi menjadi dua, yaitu web dan web-server. Web-server merupakan komputer yang menyimpan file-file web pages yang nantinya akan di akses oleh web. Web pages sendiri adalah
12
halaman informasi tentang segala sesuatu yang ingin ditampilkan oleh orang yang membangun sebuah website sesuai dengan tujuan pembangunannya. Sedangkan yang dimaksud web adalah komputer-komputer yang mengakses dan memproses web yang terdapat pada web server. Pemrograman web merupakan teknik pemrograman yang dilakukan untuk menciptakan sebuah web pages oleh karena web pages menggunakan kode hypertext, bahasa yang digunakan adalah bahasa hypertext. Contohnya adalah HTML. HTML (Hypertext Markup Language) adalah bahasa markup standar yang digunakan di lingkungan berbasis web. Namun bahasa ini memiliki kelemahan yang sangat mendasar, yaitu tidak bisa digunakan untuk mengakses dan memanipulasi data di database server. Seiring dengan perkembangan web dan internet, berkembang pula banyak bahasa pemrograman untuk membangun sebuah aplikasi berbasis web seperti Javascript, SJava Servlets, ASP, PHP dan lain sebagainya. Teknologi web dengan bantuan internet bisa memberikan layanan yang bisa digunakan oleh client untuk memproses sebuah komputasi aritmatika atau query database dan lain-lain, teknologi tersebut salah satunya adalah teknologi web Service.
2.3.Web Service Jika kita membutuhkan suatu teknologi yang mampu menjembatani perbedaan platform dan perbedaan bahasa pemrograman, maka web service adalah solusinya. Web service adalah sebuah entitas komputasi yang dapat diakses melalui jaringan internet maupun intranet dengan standar protokol tertentu dalam platform dan antar muka bahasa pemrograman yang independen. Tujuan pengembangannya adalah untuk “menjembatani komunikasi antar program” sehingga aplikasi pada suatu jarinngan yang sama atau pada jaringan yang berbeda dapat saling berkomunikasi asalkan menggunakan standar protocol yang di tetapkan oleh web service.
13
2.3.1. Pengertian WebService Web Services (Berlilana,2008) merupakan salah satu bentuk implementasi dari arsitektur model aplikasi N-Tier yang berorientasi layanan. Perbedaan Web Services dengan pendekatan N-Tier lainnya adalah dari segi infrastruktur dan dokumen
yang
digunakan
sebagai
format
pertukaran
data.
Dalam
implementasinya, Web Services tidak mempunyai tampilan, karena Web Services
termasuk dalam Business-Service Tier. Artinya didalam
Web
Services hanya tersedia fungsi-fungsi yang nantinya dapat digunakan oleh aplikasi lainnya . Web service adalah suatu sistem perangkat lunak yang dirancang untuk mendukung interoperabilitas dan interaksi antar sistem pada suatu jaringan. Web service digunakan sebagai suatu fasilitas yang disediakan oleh suatu website untuk menyediakan layanan (dalam bentuk informasi) kepada sistem lain, sehingga sistem lain dapat berinteraksi dengan sistem tersebut melalui layananlayanan (service) yang disediakan oleh suatu sistem yang menyediakan web service. Web service menyimpan data informasi dalam format XML, sehingga data ini dapat diakses oleh sistem lain walaupun berbeda platform, sistem operasi, maupun bahasa compiler. Web service bertujuan untuk meningkatkan kolaborasi antar pemrogram dan perusahaan, yang memungkinkan sebuah fungsi di dalam web service dapat dipinjam oleh aplikasi lain tanpa perlu mengetahui detail pemrograman yang terdapat di dalamnya. Agar layanan web service dapat tersedia, dibutuhkan beberapa komponen sebagai berikut: 1. Extensible Markup Language (XML). XML (Extensible Markup Language) adalah bahasa markup untuk keperluan umum yang disarankan oleh W3C untuk membuat dokumen mark up keperluan pertukaran data antar sistem yang beraneka ragam. XML merupakan kelanjutan dari HTML (HyperText Markup Language) yang merupakan bahasa standar untuk melacak Internet.
14
XML didesain untuk mampu menyimpan data secara ringkas dan mudah diatur. Kata kunci utama XML adalah data yang jika diolah bisa memberikan informasi. Contoh XML di dalam sebuah pengiriman Webservice, seperti gambar 2.3 :
Gambar 2.3 Contoh XML
XML menyediakan suatu cara terstandarisasi namun bisa dimodifikasi untuk menggambarkan isi dari dokumen. Dengan sendirinya, XML dapat digunakan untuk menggambarkan sembarang view database, tetapi dengan suatu cara yang standar. 2. Simple Object Access Protocol (SOAP). SOAP (Simple Object Access Protocol) adalah standar untuk bertukar pesan-pesan berbasis XML melalui jaringan komputer atau sebuah jalan untuk program yang berjalan pada suatu sistem operasi (OS) untuk berkomunikasi dengan program pada OS yang sama maupun berbeda dengan menggunakan HTTP dan XML sebagai mekanisme untuk pertukaran data. SOAP menspesifikasikan secara jelas bagaimana cara untuk mengencode header HTTP dan file XML sehingga program pada suatu komputer dapat memanggil program pada pada komputer lain dan mengirimkan informasi, dan bagaimana program yang dipanggil memberikan tanggapan. SOAP adalah protokol ringan yang ditujukan untuk pertukaran informasi struktur pada lingkup desentralisasi, dan terdistribusi. SOAP
15
menggunakan teknologi XML utuk mendefinisikan rangka kerja pemesanan terekstrensi di mana menyediakan konstruksi pesan yang dapat dipertukarkan pada protokol berbeda. Rangka kerja dirancang bebas dari model pemrograman dan spesifikasi implementasi semantik.
Gambar 2.4 Contoh SOAP
3. Web Service Desciption Language (WSDL). WSDL adalah fromat XML yang diterbitkan untuk menerangkan web service itu sendiri. WSDL ini mendefinisikan: -
Pesan-pesan (baik yang abstrak dan konkrit) yang dikirim ke dan menuju web service
-
Koleksi-koleksi digital dari pesan-pesan (port type, antarmuka)
-
Bagaimana port type yang ditentukan dijadikan wire protokol W3C secara aktif bekerja pada versi WSDL “terdaftar” terakhir, WSDL
1.2, tapi saat ini hanya working draft dan tidak didukung oleh toolkit-toolkit mainstream, jika ada. Contoh WSDL, seperti gambar 2.5
16
Gambat 2.5 Contoh WSDL
4. Universal Description, Discovery and Integration (UDDI). UDDI adalah sebuah service registry bagi pengalokasian web service. UDDI mengkombinasikan SOAP dan WSDL untuk pembentukan sebuah registry API bagi pendaftaran dan pengenalan service. Service registry ini menyediakan
sebuah
area
umum
dimana
sebuah organisasi
dapat
mengiklankan keberadaan mereka dan service yang mereka berikan (web service). UDDI adalah sebuah framework yang mendefinisikan sebuah XMLbased registry dimana sebuah organisasi dapat meng-upload informasi mengenai service yang mereka berikan. XML-based registry berisi namanama dari organisasi tersebut, beserta service dan deskripsi dari service yang mereka berikan. 2.3.2. Service Oriented Architecture (SOA) Menurut jurnal yang di tulis Aplysit Corp di dalam jurnal aplysyng edisi pertama mendifinisikan bahwa SOA itu adalah sebuah paradigma perancangan dan pengembangan sistem berskala enterprise yang memberi peluang sebesar-
17
besarnya bagi seluruh pihak terkait untuk tetap fokus pada seluruh aspek yang ada pada bisnis enterprise itu sendiri dan integrasinya dengan aplikasi atau teknologi pada tingkat bawah. Hasil yang akan dicapai pada implementasi SOA adalah sekumpulan service yang saling terhubung dan mampu mengkomunikasikan seluruh aplikasi meskipun aplikasi tersebut terdapat pada berbagai platform yang berbeda-beda. Sedangkan definisi yang tertulis di wikipedia, adalah SOA (Service Oriented Architecture, arsitektur berorientasi layanan) adalah suatu gaya arsitektur sistem yang membuat dan menggunakan proses bisnis dalam bentuk paket layanan sepanjang siklus hidupnya. SOA juga mendefinisikan dan menentukan arsitektur teknologi informasi (TI) yang dapat menunjang berbagai aplikasi untuk saling bertukar data dan berpartisipasi dalam proses bisnis. Fungsifungsi ini tidak terikat dengan sistem operasi dan bahasa pemrograman yang mendasari aplikasi-aplikasi tersebut. SOA membagi fungsi-fungsi menjadi unitunit yang berbeda (layanan), yang dapat didistribusikan melalui suatu jaringan dan dikombinasikan serta digunakan ulang untuk membentuk aplikasi bisnis. Layanan-layanan ini saling berkomunikasi dengan mempertukarkan data antar mereka atau dengan mengkoordinasikan aktivitas antara dua atau lebih layanan. Konsep SOA sering dianggap didasari atau berkembang dari konsep-konsep yang lebih lama dari komputasi terdistribusi dan pemrograman modular. Dan
menurut
Miftah
Fauzy
yang
tertera
di
blog
nya
http://miftahfauzy.wordpress.com/2010/03/03/84/ menuliskan bahwa Service Oriented Architecture (SOA) adalah sebuah paradigma untuk realisasi dan pemeliharaan proses bisnis yang besar dan menjangkau sistem terdistribusi. Hal ini didasarkan pada tiga konsep teknis utama: 1. layanan (service)
adalah bagian dari bisnis
yang mandiri
secara
fungsionalitas. Bisa jadi merupakan fungsi sederhana (menyimpan atau mengambil data pelanggan), atau kompleks (suatu proses bisnis untuk pesanan pelanggan). Karena layanan berkonsentrasi pada nilai bisnis dari sebuah antarmuka, dimana layanan dapat menjembatani usaha atau mengurangi kesenjangan TI.
18
2. Sebuah Enterprise Service Bus (ESB) adalah suatu infrastruktur yang memungkinkan
interoperabilitas
tinggi
antara
layanan
sistem
yang
terdistribusi. Itu memudahkan untuk mendistribusikan proses bisnis pada beberapa sistem yang menggunakan platform yang berbeda dan teknologi multi-platform/hybrid dan monolithic. 3. Loose
coupling
adalah
sebuah
konsep
sistem
untuk
mengurangi
ketergantungan (interdependency) dari suatu sistem, karena seluruh proses bisnis dapat didistribusikan kepada beberapa backend sekaligus, disini sangat menjadi penting untuk diperhatikan bahwa meminimalisir efek dari suatu perubahan dan kegagalan. Jika tidak modifikasi sistem akan sangat beresiko terhadap keseluruhan landscape sistem. Adapun Tujuan SOA antara lain: 1. Mengeliminasi redudansi Servis-servis dengan fungsionalitas yang sama dapat diimplementasikan dan digunakan untuk semua aplikasi. 2. Memudahkan penambahan fungsionalitas Aplikasi baru dapat menggunakan servis yang telah tersedia, sebaliknya servis baru pada suatu aplikasi dapat digunakan oleh aplikasi lain. 3. Adaptasi sistem terhadap perubahan SOA menyediakan mekanisme standar komunikasi antara aplikasi dan servis sehingga jika ada perubahan pada servis tidak akan mengganggu keberjalanan aplikasi yang menggunakannya. 4. Mempertahankan nilai legacy system Legacy system dapat diartikan sebagai sistem lama atau sistem yang telah ada sebelumnya (legacy= warisan, peninggalan). Aplikasi mengakses servis dengan cara yang standar melalui infrastruktur SOA yang memang mempunyai mekanisme standar komunikasi. Yang sibuk bukan aplikasi karena servis yang bertugas meng-invoke apa saja yang ada di legacy system Adapun manfaat dari SOA adalah : 1. Secara Arsitektur, pada desain arsitektur perusahaan modern dimana dapat melibatkan beberapa komponen seperti:
19
-
Service Oriented
-
Event-Driven
-
Loosely coupled
-
Selaras dengan life cycle support process
-
Dapat mendukung assembly dan integrasi
-
Dapat memanfaatkan aplikasi dan infrastruktur yang ada
2. SOA menawarkan keuntungan sebagai berikut atas pendekatan tradisional untuk komputasi terdistribusi: -
Menawarkan layanan bisnis di seluruh platform
-
Memberikan kebebasan lokasi secara independen (tidak terkait/harus terikat pada satu lokasi)
-
Layanan tidak mengharuskan pada sistem tertentu atau jaringan tertentu
-
Menawarkan pendekatan loosely coupled secara lengkap
-
Dukungan otentikasi dan otorisasi di setiap tingkatan
-
Pencarian dan konektivitas ke layanan lainnya secara dinamis
3. Manfaat jangka-pendek dari Implementasi SOA -
Meningkatkan keandalan
-
Mengurangi biaya akuisisi perangkat keras
-
Memanfaatkan development skill yang ada
-
Mempercepat gerakan standarisasi server dan konsolidasi aplikasi
-
Menyediakan sebuah jembatan data (data-bridge) antara teknologi yang tidak kompatibel
4. Manfaat jangka-panjang dari Implementasi SOA -
Menyediakan kemampuan untuk membangun aplikasi komposit
-
Membuat infrastruktur yang self-healing sehingga mengurangi biaya manajemennya
-
Menyediakan aplikasi pengambilan keputusan secara real-time sesungguhnya
-
Memungkinkan penyusunan taksonomi yang menyatu dari informasi antara perusahaan, pelanggan dan mitra
20
5. Manfaat dari perspektif Nilai Bisnis -
Kemampuan untuk memenuhi lebih cepat permintaan pelanggan
-
Menurunkan biaya sehubungan dengan akuisisi dan pemeliharaan teknologi
-
Pengelolaan dari fungsi bisnis lebih dekat dengan unit bisnis
-
Memanfaatkan investasi yang ada dalam teknologi
-
Mengurangi ketergantungan akan pengembangan aplikasi secara kustom
2.3.3. Keuntungan Menggunakan Web Service Dalam implementasi model aplikasi N-Tier, web service dapat dijadikan altrenatif, karena dibangun berdasarkan text-based document format XML dan standard protocol TCP/IP, memungkinkan webservice berkembang pesat dan diadopsi oleh berbagai platform (Hadiwinata,2003). Beberapa alasan mengapa digunakannya web service
adalah sebagai
berikut: 1. Web service dapat digunakan untuk mentransformasikan satu atau beberapa bisnis logic atau class dan objek yang terpisah dalam satu ruang lingkup yang menjadi satu, sehingga tingkat keamanan dapat ditangani dengan baik. 2. Web service memiliki kemudahan dalam proses deployment-nya, karena tidak memerlukan registrasi khusus ke dalam suatu sistem operasi. Web service cukup di-upload ke web server dan siap diakses oleh pihak-pihak yang telah diberikan otorisasi. 3. Web service berjalan di port 80 yang merupakan protokol standar HTTP, dengan demikian web service tidak memerlukan konfigurasi khusus di sisi firewall.
2.4. Android 2.4.1. Pengertian Android Android adalah kumpulan perangkat lunak yang ditujukan bagi perangkat bergerak mencakup sistem operasi, middleware, dan aplikasi kunci. Android Standart Development Kid (SDK) menyediakan perlengkapan dan Application
21
Programming Interfacem(API) yang diperlukan untuk mengembangkan aplikasi pada platform Android menggunakan bahasa pemrograman Java. Android dikembangkan oleh Google bersama Open Handset Allience (OHA)
yaitu
aliansi
perangkat
selular
terbuka
yang terdiri
dari
47
perusahaan Hardware, Software dan perusahaan telekomunikasi ditujukan untuk mengembangkan standar terbuka bagi perangkat selular. Android menggunakan beberapa paket pustaka yang terdapat pada C/C++ dengan standar Berkeley Software Distribution (BSD) hanya setengah dari yang aslinya untuk tertanam pada kernel Linux. Beberapa pustaka diantaranya: 1. Media Library untuk memutar dan merekam berbagai macam format audiodan video. 2. Surface Manager untuk mengatur hak akses layer dari berbagai aplikasi. 3. Graphic Library termasuk didalamnya SGL dan OpenGL untuk tampilan2D dan 3D. 4. SQLite untuk mengatur relasi database yang digunakan pada aplikasi. 5. SSl dan WebKit untuk browser dan keamanan internet.
Pustaka-pustaka tersebut bukanlah aplikasi yang berjalan sendiri, namun hanya dapat digunakan oleh program yang berada di level atasnya. Sejak versi Android
1.5,
pengembang
dapat membuat
dan menggunakan
pustaka
sendiri menggunakan Native Development Toolkit (NDK). Pada Android tertanam paket pustaka inti yang menyediakan sebagian besar fungsi Android. Inilah yang membedakan Android dibandingkan dengan sistem operasi lain yang juga mengimplementasikan Linux. Android Runtime merupakan mesin virtual yang membuat aplikasi Android menjadi lebih tangguh dengan paket pustaka yang telah ada. Dalam Android Runtime terdapat 2 bagian utama,diantaranya: 1.
Pustaka Inti, Android dikembangkan melalui bahasa pemrograman Java, tapi Android Runtime bukanlah mesin virtual Java. Pustaka inti Android menyediakan hampir semua fungsi yang terdapat pada pustaka Java serta beberapa pustaka khusus Android
2.
Mesin Virtual Dalvik, Dalvik merupakan sebuah mesin virtual yang dikembangkan oleh Dan Bornstein yang terinspirasi dari nama sebuah perkampungan yang
22
berada di Iceland. Dalvik hanyalah interpreter mesin virtual yang mengeksekusi file dalam format Dalvik Executable (*.dex). Dengan format ini Dalvik akan mengoptimalkan efisiensi penyimpanan dan pengalamatan memori pada file yang dieksekusi. Dalvik berjalan diatas kernel Linux 2.6, dengan fungsi dasar seperti threading dan manajemen memori yang terbatas. 2.4.2. Perkembangan Android Pada mulanya terdapat berbagai macam sistem operasi pada perangkat selular, diantaranya sistem operasi Symbian, Microsoft Windsos Mobile, MobileLinux, iPhone, dan sistem operasi lainnya. Namun diantara sistem operasi yang ada belum mendukung standar dan penerbitan API yang dapat dimanfaatkansecara keseluruhan dan dengan biaya yang murah. Kemudian Google ikut berkecimpung didalamnya dengan platform Android, yang menjanjikan keterbukaan, keterjangkauan, open source,dan framework berkualitas. Pada tahun 2005, Google mengakuisisi perusahaan Android Inc. untuk memulai pengembangan platform Android. Dimana terlibat dalam pengembangan ini Andy Rubin, Rich Miner, Nick Sears, dan Chris White. Pada pertengahan 2007 sekelompok pemimpin industri bersama-sama membentuk aliansi perangkat selular terbuka, Open Handset Alliance (OHA). Bagian dari tujuan aliansi ini adalah berinovasi dengan cepat dan menanggapi kebutuhan konsumen dengan lebih baik, dengan produk awalnya adalah platform Android. Dimana Android dirancang untuk melayani kebutuhan operator telekomunikasi, manufaktur handset, dan pengembang aplikasi. OHA berkomitmen untuk membuat Android open source dengan lisensi Apache versi 2.0. Android pertama kali diluncurkan pada 5 November 2007, dan smartphone pertama yang menggunakan sistem operasi Android dikeluarkan oleh T-Mobile dengan sebutan G1 pada bulan September 2008. Hingga saat ini Android telah merilis beberapa versi Android untuk menyempurnakan versi sebelumnya. Selain berdasarkan penomoran, pada setiap versi Android (mulai versi 1.5) terdapat kode nama berdasarkan nama-nama kue. Hingga saat ini sudah terdapat beberapa versi yang telah diluncurkan, diantaranya: 1.
Android 1.0 Astro Pertama kali dirilis pada 23 Spetember 2008
23
2.
Android 1.1 Bender Pertama kali dirilis pada 9 Februari 2009
3.
Android 1.5 Cupcake Pertama kali dirilis pada 30 April 2009
4.
Android 1.6 Donut Dirilis pertama kali pada 15 September 2009
5.
Android 2.0/2.1 Enclair Dirilis pertama kali pada 9 Desember 2009
6.
Android 2.3 Gingerbread Pertama kali diperkenalkan pada 6 Desember 2010. Beberapa versi update yang dirilis antara lain v.2.3.3 hingga v.2.3.7. Sampai saat ini Android Gingerbread merupakan versi Android yang memiliki pengguna terbanyak dibandingkan dengan seri Android lainnya, yaitu mencapai 65% dari seluruh versi Android yang dirilis.
7.
Android 3.0/3.1 HoneycombPertama kali diperkenalkan pada 22 Februari 2011 dan Motorola Xoom adalah yang pertama kali menggunakannya. Android versi ini merupakan OS yang didesain khusus untuk pengoptimalan pengunaan pada tablet PC.
8.
Android 4.0 Ice Cream Sandwich Pertama kali dirilis pada 19 Oktober 2011.
9.
Android 4.1 Jelly Bean merupakan sistem operasi terbaru dari Google yang dirilis pada acara Google I/O pada 27 Juni 2012 lalu.
Itulah perjalanan perkembangan Operating System Android dari masa ke masa. Meski belum genap 4 tahun OS Android hadir di pasar ponsel seluler namun saat ini operating system yang dinaungi oleh Google ini semakin mendekati posisi iOS sebagai penguasa sistem operasi mobile di dunia. Demikian tulisan kami tentang perkembangan versi OS android dari masa ke masa. 2.4.3. Library KSOAP Ternyata Android juga mampu mengakses web service. Tentu saja menggunakan Library tambahan. Dan Library itu adalah KSOAP, library yang sama yang digunakan untuk mengkoneksikan aplikasi pada pemrograman J2ME dengan Web Service Java, PHP maupun Visual Basic .NET atau C#.NET Untuk Membuat Aplikasi Android untuk Mengkonsumsi Web Service .NET. KSOAP adalah layanan web SOAP perpustakaan klien untuk dibatasi Java lingkungan seperti Applet atau aplikasi J2ME ( CLDC/CDC/MIDP ). Harap
24
dicatat bahwa SOAP memperkenalkan beberapa overhead yang signifikan untuk layanan web yang mungkin bermasalah untuk perangkat mobile . Jika kita memiliki kontrol penuh atas klien dan server, arsitektur berbasis SOAP mungkin lebih memadai. Beberapa
kelas
terpisah
telah
terintegrasi
ke
dalam
SoapSerializationEnvelope kelas, memberikan dukungan serialisasi SOAP. SoapSerializationEnvelope memperluas SoapEnvelope kelas dasar. Sebuah flag dotnet dapat digunakan untuk beralih SoapSerializationEnvelope dari perilaku standar untuk penanganan namespace yang tampaknya menjadi default dalam dotnet. Sayangnya, perbaikan akan membutuhkan beberapa usaha tambahan ketika port aplikasi dari KSOAP1 ke KSOAP2 .
2.5.
UML UML atau Unified Modeling Language adalah sebuah bahasa untuk
menentukan, visualisasi, kontruksi, dan mendokumentasikan artifact (bagian dari informasi yang digunakan atau dihasilkan dalam suatu proses pembuatan perangkat lunak. Artifact dapat berupa model, deskripsi atau perangkat lunak) dari system perangkat lunak, seperti pada pemodelan bisnis dan system non perangkat lunak lainnya. Secara khusus, Unified Modeling Language (UML) menspesifikasikan langkah-langkah penting dalam pengambilan keputusan analisis, perancangan serta implementasi dalam sistem yang sangat bernuansa perangkat lunak (software intensive system). Dalam hal ini, Unified Modeling Language (UML) bukanlah merupakan bahasa pemprograman tetapi model-model yang tercipta berhubungan langsung dengan berbagai macam bahasa pemprograman, sehingga adalah mungkin melakukan pemetaan (mapping) langsung dari model-model yang dibuat dengan Unified Modeling Language (UML) dengan bahasa-bahasa pemprograman berorientasi obyek, seperti Java, Borland Delphi, Visual Basic, C++, dan lain-lain. Saat ini UML mulai menjadi standar masa depan bagi industri pengembangan sistem/perangkat lunak yang berorientasi objek sebab pada dasarnya UML
25
digunakan oleh banyak perusahaan raksasa seperti IBM, Microsoft, dan sebagainya. Adapun diagram yang terdapat dalam UML diantaranya adalah: 2.5.1. Use Case Use case diagram menggambarkan fungsionalitas yang diharapkan dari sebuah sistem, yang ditekankan adalah” apa” yang diperbuat sistem, dan bukan “bagaimana”. Sebuah use case mempresentasikan sebuah interaksi antara aktor dengan sistem. Use case menggambarkan kata kerja seperti Login ke sistem, maintenance user dan sebagainya. Aktor adalah segala sesuatu yang berinteraksi langsung dengan system aplikasi komputer, seperti orang, benda atau lainnya. Tugas aktor adalah memberikan informasi kepada sistem dan dapat memerintahkan sistem agar melakukans sesuatu tugas. Use case adalah deskripsi fungsi dari sebuah sistem dari perspektif pengguna. Use case bekerja dengan cara mendeskripsikan tipikal interaksi antara user (pengguna) sebuah system dengan sistemnya sendiri melalui sebuah cerita bagaimana sebuah sistem dipakai. Urutan langkah-langkah yang menerangkan antara pengguna dan sistem disebut scenario. 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 diinclude oleh lebih dari satu use case lain, sehingga duplikasi fungsionalitas dapat dihindari dengan cara menarik keluar fungsionalitas yang common. Sebuah use case juga dapat meng-extend use case lain dengan behaviournya sendiri. Sementara hubungan generalisasi antar use case menunjukkan bahwa use case yang satu merupakan spesialisasi dari yang lain.
26
Tabel 2.1 Simbol dan Keterangan Use Case Simbol
Keterangan System. Menyatakan batasan sistem dalam relasi dengan actor-actor yang menggunakannya (di luar sistem) dan fitur-fitur yang harus disediakan (dalam sistem). Digambarkan dengan segi empat yang membatasi semua use case dalam sistem terhadap pihak mana sistem akan berinteraksi. Sistem disertai label yang menyebutkan nama dari sistem, tapi umumnya tidak digambarkan karena tidak terlalu memberi arti tambahan pada diagram Actor. Aktor adalah segala hal diluar sistem yang akan menggunakan sistem tersebut untuk melakukan sesuatu. Bisa merupakan manusia, sistem, atau device yang memiliki peranan dalam keberhasilan operasi dari sistem. Cara mudah untuk menemukan aktor adalah dengan bertanya hal-hal berikut: SIAPA yang akan menggunakan sistem? APAKAH sistem tersebut akan memberikan NILAI bagi aktor? Use case. Mengidentifikasi fitur kunci dari sistem. Tanpa fitur ini, sistem tidak akan memenuhi permintaan user/actor. Setiap use case mengekspresikan goal dari sistem yang harus dicapai. Diberi nama sesuai dengan goal-nya dan digambarkan dengan elips dengan nama di dalamnya. Fokus tetap pada goal bukan bagaimana mengimplementasikannya walaupun use case berimplikasi pada prosesnya nanti. Setiap use case biasanya memiliki trigger/pemicu yang menyebabkan use case memulai (misalnya,Pasien mendaftar dan membuat janji baru atau meminta untuk membatalkan atau mengubah janji yang sudah ada ). Ada 2 triger pertama triger eksternal, seperti pelanggan memesan atau alarm kebakaran berbunyi, kedua triger temporal, seperti tanggal pengembalian buku terlewati di perpustakaan atau keterlambatan bayar sewa. Assosiation. Mengidentifikasikan interaksi antara setiap actor tertentu dengan setiap use case tertentu. Digambarkan sebagai garis antara actor
27
Tabel Lanjutan 2.1 Simbol dan Keterangan Use Case Simbol
Keterangan terhadap use case yang bersangkutan. Asosiasi bisa berarah (garis dengan anak panah) jika komunikasi satu arah, namun umumnya terjadi kedua arah (tanpa anak panah) karena selalu diperlukan demikian.
<
>
<<extend>>
Dependensi <> Mengidentifikasi hubungan antar dua use case di mana yang satu memanggil yang lain. Jika pada beberapa use case terdapat bagian yang memiliki aktivitas yang sama maka bagian aktivitas tersebut biasanya dijadikan use case tersendiri dengan relasi dependensi setiap use case semula ke use case yang baru ini sehingga memudahkan pemeliharaan. Digambarkan dengan garis putus-putus bermata panah dengan notasi <> pada garis. Arah mata panah sesuai dengan arah pemanggilan. Dependensi <<extend>> Jika pemanggilan memerlukan adanya kondisi tertentu maka berlaku dependensi <<extend>>. Digambarkan serupa dengan dependensi <> kecuali arah panah berlawanan. Generalization. Mendefinisikan relasi antara dua actor atau dua use case yang mana salah satunya meng-inherit dan menambahkan atau override sifat dari yang lainnya. Penggambaran menggunakan garis bermata panah kosong dari yang meng-inherit mengarah ke yang di-inherit
2.5.2. Activity Diagram Activity diagram merupakan cara lain dalam memodelkan aliran kejadian. gunakan Activity Diagram untuk menggambarkan workflow / aliran kerja proses bisnis, Activity diagram menggambarkan berbagai alir aktivitas dalam sistem
28
yang sedang dirancang, bagaimana masing-masing alir berawal, decision yang mungkin terjadi, dan bagaimana mereka berakhir. Activity diagram juga dapat menggambarkan proses paralel yang mungkin terjadi pada beberapa eksekusi. Tabel 2.2 Simbol dan Keterangan Activity Diagram Keterangan
Simbol
Start dan End Statt. Start : memulai aliran
End : mengakhiri aliran Setiap activity diagram harus mempunyai start state untuk memulai dan diakhiri dengan end state. End state adalah opsional dan bisa lebih dari satu dalam satu diagram.
Objek dan Aliran Objek Objek : Entitas yang dipergunakan dalam aliran. Objek dapat digunakan atau dirubah dalam aliran. Pada diagram, objek dihubungkan ke aktifitas dengan menggunakan aliran objek(object now) Aliran objek digambarkan dengan garis panah putus-putus. Jika garis panah mempunyai arah dari aktifitas ke objek berarti ia memperbaharui nilai objek -tersebut. Jika arah panah dari objek ke aktifitas berarti ia sedang menggunakan objek
Activities. Adalah kegiatan dalam aliran kerja
<<extend>>
Fork (Percabangan) Join (Penggabungan) Decision Swimlane
cara untuk mengelompokkan activity berdasarkan Actor (mengelompokkan activity dalam urutan yang sama)
29
2.5.3. Sequence Diagram 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 yang dihasilkan. Diagram ini secara khusus berasosiasi dengan use case diagram. Memperlihatkan tahap demi tahap apa yang seharusnya terjadi untuk menghasilkan sesuatu didalam use case . Sequence diagram menggambarkan interaksi antar objek di dalam dan di sekitar sistem (termasuk pengguna, display, dan sebagainya) berupa message yang digambarkan terhadap waktu. Sequence diagram terdiri atas 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. Notasi Sequence Diagram: 1.
Object : Merupakan instance dari sebuah class dan dituliskan tersusun secara horizontal. Digambarkan sebagai sebuah class (kotak) dengan nama obyek didalamnya yang diawali dengan sebuah titik koma.
2.
Actor : Actor juga dapat berkomunikasi dengan object, maka actor juga dapat diurutkan sebagai kolom. Simbol actor sama dengan simbol pada actor Use Case Diagram.
30
3.
Lifeline : Lifeline mengindikasikan keberadaan sebuah object dalam basis waktu. Notasi untuk Lifeline adalah garis putus-putus vertikal yang ditarik dari sebuah obyek.
4.
Activation : Activation dinotasikan sebagai sebuah kotak segi empat yang digambar pada sebuah lifeline. Activation mengindikasikan sebuah obyek yang akan melakukan sebuah aksi.
5.
Message : Message digambarkan dengan anak panah horizontal antara Activation. Message mengindikasikan komunikasi antara object-object.
31
Adapun simbol-simbol untuk Sequence Diagram yaitu:
Gambar 2.6 Simbol Sequence Diagram
2.5.4. Class Diagram Class diagram adalah diagram yang digunakan untuk menampilkan beberapa kelas serta paket-paket yang ada dalam sistem/perangkat lunak yang sedang kita gunakan. Class diagram memberikan gambaran (diagram statis) tentang sistem/perangkat lunak dan relas-relasi yang ada didalamnya. Class adalah kumpulan objek-objek dengan dan yang mempunyai struktur umum, behavior umum, relasi umum, dan semantic/kata yang umum. Classclass ditentukan/ditemukan dengan cara memeriksa objek-objek dalam sequence diagram dan collaboration diagram. Sebuah class digambarkan seperti sebuah bujur sangkar dengan tiga bagian ruangan. Class sebaiknya diberi nama menggunakan kata benda sesuai dengan domain/bagian/kelompoknya (Whitten L. Jeffery et al, 2004). Class Diagram adalah diagram yang menunjukan class-class yang ada dari sebuah sistem dan hubungannya secara logika. Class diagram menggambarkan struktur statis dari sebuah sistem. Karena itu class diagram merupakan tulang punggung atau kekuatan dasar dari hampir setiap metode berorientasi objek
32
termasuk UML (Henderi, 2008). Sementara menurut (Whitten L. Jeffery et al 2004) class diagram adalah gambar grafis mengenai struktur objek statis dari suatu sistem, menunjukan class-class objek yang menyusun sebuah sistem dan juga hubungan antara class objek tersebut. Elemen-eleman class diagram dalam pemodelan UML terdiri dari: classclass, struktur class, sifat class (class behavior), perkumpulan/gabungan (association),
pengumpulan/kesatuan
(agregation),
ketergantungan
(dependency), relasi-relasi turunannya, keberagaman dan indikator navigasi, dan role name (peranan/tugas nama). Simbol-simbol class diagram: 1. Class Class adalah blok - blok pembangun pada pemrograman berorientasi obyek. Sebuah class digambarkan sebagai sebuah kotak yang terbagi atas 3 bagian. Bagian atas adalah bagian nama dari class. Bagian tengah mendefinisikan property/atribut class. Bagian akhir mendefinisikan method-method dari sebuah class.
2. Association Sebuah asosiasi merupakan sebuah relationship paling umum antara dua class dan dilambangkan oleh sebuah garis yang menghubungkan antara dua class. Garis ini bisa melambangkan tipe-tipe relationship dan juga dapat menampilkan hukum-hukum multiplisitas pada sebuah relationship. (Contoh: One-to-one, one-to-many,many-to-many).
33
3. Composition 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.
4. Dependency Kadangkala sebuah class menggunakan class yang lain. Hal ini disebut dependency.
Umumnya
penggunaan
dependency
digunakan
untuk
menunjukkan operasi pada suatu class yang menggunakan class yang lain. Sebuah dependency dilambangkan sebagai sebuah panah bertitik-titik.
5. Aggregation Aggregation mengindikasikan keseluruhan bagian relationship dan biasanya disebut sebagai relasi.
6. Paket Paket digunakan unruk mengelompokkan kelas-kelas yang mempunyai kesamaan. Ada beberapa cara mengelompokkan kelas-kelas dalam paket, tetapi bagaimanapun juga, kelas-kelas dapat dikelompokkan dalam paket yang sama tergantung dari keinginan kita sendiri. Salah satu pendekatan yang dapat digunakan adalah berdasarkan Stereotype-nya. Dengan pendekatan ini, dapat dibuat satu paket untuk kelas-kelas entitas, dan satukelas untuk kelas-kelas control.
34
2.6. Bahasa Pemrograman Java Java adalah bahasa pemrograman berorientasi objek(Object Oriented Programming) yang diperkenalkan pada tahun 1995 oleh Sun Microsystem berawal dari gagasan untuk menciptakan suatu bahasa, perangkat lunak yang bebas dan tidak bergantung pada platform atau sistem operasi tertentu. Para pencetus Java di Sun Microsystem mendefinisikan Java sebagai bahasa yang sederhana, berorientasi object, terdistribusi, terinterpretasi, kokoh, aman, netral arsitektur, akrab, berkinerja tinggi, multi jalinan (multithreaded) dan dinamis. Namun perkembangan terakhir java telah diakusisi oleh oracle. Tidak seperti bahasa-bahasa compiler tradisional, yang mengubah kode (source code) menjadi perintah-perintah tingkat mesin (bahasa mesin), compiler Java mengubah (menterjemahkan) kode-kode sumber Java menjadi perintahperintah yang akan di interpretasi (dibaca) oleh runtime Mesin Virtual Java (Java Virtual Machine). Java dapat digunakan untuk membuat dua jenis program, yaitu aplikasi web (applet) dan aplikasi dekstop (stand alone application). Sehingga pantaslah java menjadi salah satu bahasa pemrograman yang cukup populer dikalangan programer. 2.7.
Pengujian Perangkat Lunak Pentingnya pengujian perangkat lunak mengacu pada kualitas perangkat
lunak yang melibatkan sederetan aktivitas produksi di mana peluang terjadinya kesalahan manusia sangat besar dan karena ketidakmampuan manusia dalam melakukan komunikasi dengan sempurna terhadap kebutuhan yang diinginkan user maka pengembangan perangkat lunak harus diiringi dengan aktivitas jaminan kualitas dengan melakukan pengujian terhadap perangkat lunak tersebut. Pada dasarnya, pengujian merupakan satu langkah dalam proses rekayasa perangkat lunak unuk mencari kesalahan yang terdapat pada perangkat lunak sebelum perangakat lunak tersebut digunakan. Sejumlah aturan yang berfungsi sebagai sasaran pengujian pada perangkat lunak adalah (Roger S Pressman, 2002): 1.
Pengujian adalah proses eksekusi suatu program dengan maksud menemukan kesalahan.
35
2.
Test case yang baik adalah test case yang memiliki probabilitas tinggi untuk menemukan kesalahan yang belum pernah ditemukan sebelumnya.
3.
Pengujian yang sukses adalah pengujian yang mengungkap semua kesalahan yang belum pernah ditemukan sebelumnya.
2.7.1. Pengujian White-Box Pengujian white-box adalah metode desain test case yang meggunakan struktur kontrol desain prosedural untuk memperoleh test case. Dengan menggunakan metode pengujian white-box, perekayasa dapat melakukan test case yang: 1.
Memberikan jaminan bahwa semua jalur independen pada suatu modul telah digunakan paling tidak satu kali.
2.
Menggunakan semua keputusan logis pada sisi true dan false.
3.
Mengeksekusi semua loop (perulangan) pada batasan mereka dan pada batas operasional mereka.
4.
Menggunkan struktur data internal untuk menjamin validasinya.
2.7.2. Pengujian Black-Box Pengujian
black-box
memungkinkan
perekayasa
perangkat
lunak
mendapatkan serangakaian kondisi input yang sepenuhnya menggunakan semua persyaratan fungsional untuk suatu program. Pengujian black-box berusaha menemukan kesalahan dalam kategori sebagai berikut : 1.
Fungsi-fungsi yang tidak benar atau hilang.
2.
Kesalahan interface.
3.
Kesalahan dalam struktur data atau akses database.
4.
Kesalahan kinerja.
5.
Inisaialisasi dan kesalahan terminasi.
BAB III TINJAUAN UMUM
3.1. Sejarah AplysIT Corporation AplysIT didirikan pada bulan Juli 2010. AplysIT menjadi sebuah lembaga yang memfokuskan diri pada pelatihan keahlian dalam IT, penyelesaian proyek aplikasi enterprise dan system terintegrasi, serta menyediakan tenaga ahli bidang IT yang memiliki kompetensi yang baik dalam rekayasa perangkat lunak. Kantor pusat terdapat di Gedung Pusat Teknologi, Lt. 3, RICE PT. INTI, Jl. Moch.Toha 77. Setelah 6 bulan berdiri, tepatnya pada tanggal 25 Januari 2011, Aplysit membuka cabang baru di kota Medan. Kehadiran Aplysit di kota Medan diharapkan membawa perubahan positif untuk mengangkat kualitas sumber daya manusia di kota Medan yang memiliki kualifikasi yang disegani dalam dunia IT. Komposisi staff Aplysit terdiri dari tenaga ahli dalam bidang IT yang seluruhnya memiliki pengalaman dalam pengembangan aplikasi enterprise, dan berlatar belakang S3, S2, S1, hingga D3 beberapa di antaranya lulusan ITB. Ada 3 (tiga) business core yang dijalankan AplysIT: 1. IT Training 2. IT Project Consultation 3. IT Professional Staff Ketiga business core ini harus dipandang sebagai satu cycle, yang melengkapai sebuah siklus hidup pemberdayaan IT, mulai dari pelatihan tenaga ahli yang berpengalaman dalam berbagai kasus dan proyek nyata, keterlibatan seluruh tim dalam banyak proyek enterprise, dan penyediaan tenaga ahli yang memiliki kompetensi tinggi dan khusus pada bidang IT.
36
37
Gambar 3.1 Stake Holder Aplysit
3.2. Visi dan Misi dan Struktur Organisasi AplysIT Corporation 3.2.1. Visi Menjadi organisasi penyedia tenaga ahli bidang IT yang memiliki kompetensi siap pakai, dengan mencapai posisi minimal urutan 3 (tiga) di Indonesia dalam kurun waktu 2 (dua) tahun sejak berdiri. 3.2.2. Misi 1.
Menyelenggarakan pelatihan praktis dalam enterprise system engineering berbasis teknologi terkini
2.
Menyediakan jasa konsultasi berbagai proyek IT
3.
Melakukan sklill upgrading bagi lulusan IT sehingga mereka menjadi lebih siap dalam sebagai professional IT yang memiliki kulaifikasi yang baik
3.2.3. Nilai Aplysit menjunjung tinggi nilai-nilai berikut: 1. Quick Response: memberikan tanggapan yang cepat tepat dan akurat 2. High Competence: tim memiliki dedikasi tinggi dan sangat kompeten pada bidang IT 3. Integrated Solution: setiap solusi yang disediakan akan memberikan penyelesaian yang tuntas tanpa menyisakan masalah di kemudian hari 4. Entrepreneurship:
mendukung
pengembangan
berbagai bidang khususnya bidang IT.
kewirausahaan
dalam
38
Gambar 3.2 Nilai di Aplysit
3.2.4. Struktur Organisasi
Struktur organisasi saat ini bersifat simple, sesuai dengan gerak. 1. IT Training 2. IT Project Consultation 3. IT Professional Staff
Adapun struktur organisasi aplysit secara detail adalah sebagai berikut:
Ivan Michael Siregar, S.T., M.T Director
Cindy Himawan Simorangkir Managing Director
Dr. Tjong Wan Sen Advisory Board
Katharina Rahayu, S.T Business Process Manager
Hestinar Situmorang, S.E. Treasury Manager
Ernihta Pardede, S.T Administration Manager
Hengky Sipayung, S.T., M.T.
Marisina Sihite, S.T IT
.Professional Manager
Senior Consultant
Frans Siahaan
Luthfan Fauzan
Trainer
Programmer
Gambar 3.3 Struktur Organisasi
39
BAB IV ANALISIS PERANCANGAN
4.1. Analisis Sistem Analisis sistem ini merupakan penguraian dari suatu sistem pengembangan untuk aplikasi client web service untuk monitoring yang utuh kedalam bagianbagian komponennya dengan maksud untuk mengidentifikasi dan mengevaluasi permasalahan-permasalahan, kesempatan-kesempatan, hambatan-hambatan dan kebutuhan-kebutuhan yang diharapkan sehingga dapat diusulkan perbaikannya. 4.1.1. Analisis Sistem yang sedang Berjalan 1. Deskripsi Masalah Web service yang telah dibuat oleh aplysit membutuhkan client yang bersifat mobile yang berbasis android. Dengan adanya client yang bersifat mobile maka memudahkan user untuk monitoring service yang berjalan dengan hanya perlu akses internet. 2. Pemecahan Masalah Sebagaimana pendeskripsian masalah di atas, maka pemecahan masalah yang akan dilakukan dengan cara membuat sistem yang bersifat mobile. Pembuatan Aplikasi client web service ini akan berbasis android dengan memanfaatkan akses internet sehingga pengecekan bisa dilakukan kapan dan dimana saja. 4.1.2. Analisis Kebutuhan Fungsional Kebutuhan fungsional merupakan pernyataan layanan sistem yang harus disediakan, bagaimana sistem harus bereaksi terhadap input tertentu dan bagaimana sistem harus berperilaku dalam situasi tertentu. Berikut daftar kebutuhan fungsional yang harus dipenuhi oleh Aplikasi Client Monitoring Service Pada Sistem Monitoring Pengisian Bahan Bakar Minyak (SMPBBM) Berbasis Android seperti pada Tabel 4.1
40
41
Tabel 4.1 Kebutuhan Fungsional Sistem No
Nama Fungsi
Deskripsi
req1
Monitoring DMZ Server
Fungsi ini akan menerima nilai yang dihasilkan oleh webservice dari DMZ Server
req2
Monitoring APP Server
Fungsi ini akan menerima nilai yang dihasilkan oleh webservice dari App Server
req3
Pencarian data Spbu
Fungsi ini akan menampilkan data SPBU beserta pengiriman premium yang terkahir yang dilakukan, serta informasi mengenai SPBU di suatu kota
4.1.3. Analisis Kebutuhan Non-Fungsional Kebutuhan non fungsional adalah kebutuhan yang secara tidak langsung berhubungan dengan fungsi spesifik yang disediakan oleh sistem. Berikut daftar beberapa kebutuhan non fungsional yang harus dipenuhi oleh sistem aplikasi monitoring server seperti pada Tabel 4.2 berikut ini : Tabel 4.2 Kebutuhan Non Fungsional Sistem No
Kebutuhan Non Fungsional
Parameter
1.
Sistem harus mempunyai akses internet
Pengambilan data berupa nilai string yang didapat dari webservice
2.
Sistem yang dibangun menggunakan tampilan yang sederhana, menarik dan user friendly.
Interaktif dan Easy to use
4.1.4. Analisis Kebutuhan Perangkat Keras Berdasarkan analisis yang telah dilakukan maka dapat diketahui spesifikasi perangkat keras (hardware) yang diperlukan untuk membangun sistem ini memiliki spesifikasi minimal sebagai berikut : 1.
Kompatibel dengan Processor Intel®Pentium 4 3.06 GHz
2.
Monitor CRT 14” atau 17”
42
3.
Kapasitas Harddisk yang digunakan sebagai media penyimpanan minimal 4080 GB.
4.
Memori minimal 1GB.
5.
Keyboard 103 key
6.
Mouse PS2 maupun Mouse USB.
4.1.5. Analisis Kebutuhan Perangkat Lunak Sedangkan untuk kebutuhan perangkat lunak (software) yang diperlukan untuk membangun sistem ini memiliki spesifikasi sebagai berikut : 1.
Operating System Windows XP SP2, Vista, atau Seven
2.
Eclipse sebagai editor
3.
Android SDK dan ADT Plugin
4.
Bahasa pemrograman Java
5.
Server local dan database menggunakan Apache Tomcat dan MySQL
6.
Web Browser untuk mengetest dan melihat wervice wsdl
7.
Desain menggunakan Adobe PhotoShop
8.
Enterprise Architect dan StarUML
4.1.6. Sistem yang Diusulkan Untuk mengatasi permasalahan – permasalahan yang terdapat pada sistem yang sedang dipakai, maka akan dibuat sebuah aplikasi client web service untuk monitoring service yang berjalan di server Pertamina berbasis mobile sehingga aplysit sebagai pihak yang mendapatkan proyek ini mudah untuk mengakses informasi bisa kapan dan dimana saja. Nantinya client ini akan meminta request dari web service, kemudian web service akan menerima nilai string dari web service. Nilai inilah yang kemudian akan di substring pada coding android sehingga menghasilkan sebuah nilai yang berarti. Deskripsi sistem yang diajukan : 1. Pada sistem yang diajukan, user adalah pihak aplysit sebagai tester aplikasi ini 2. Terdapat informasi mengenai service yang hidup di DMZ dan APP Sever 3. Terdapat pencarian data mengenai data SPBU
43
4.1.7. Evaluasi Kelayakan Tujuan dari evaluasi kelayakan yaitu melakukan pengkajian untuk menilai apakah sistem yang akan digunakan layak atau tidak. Evaluasi kelayakan yang akan dilakukan meliputi kelayakan teknik dan kelayakan operasi sebagai berikut: 1.
Kelayakan teknik yaitu sistem yang akan dibangun harus memiliki kemudahan untuk dioperasikan.
2.
Kelayakan operasi yaitu sistem yang akan dibangun harus memiliki kemampuan untuk menerima data dari server
4.2. Arsitektur Sistem Untuk mewujudkan proyek Sistem Monitoring Pengisian Bahan Bakar Minyak ini, maka PT INTI dengan rekanannya (aplysit) membuat langkah besar dengan cara merancang sebuah system untuk SMPBBM yang sangat besar cakupannya dengan menyiapkan beberapa alat, di antaranya 1. satu perangkat server disetiap SPBU, 2. satu perangkat server di pusat Pertamina, 3. satu RFID disetiap kendaraan, 4. satu barometer di setiap tangki, 5. satu buah kartu quota BBM untuk satu motor, dan 6. Alat pembaca srid di setiap nozell yang ada di SPBU.
44
Maka gambaran sistem besar dari project SMPBBM ini adalah seperti berikut :
Pengisian BBM
internet Mobile Monitoring Android SPBU
Server Pertamina Pengisian bbm spbu Pembacaan RFID
Admin SPBU DenganSystem system tersebut diharapkan Pt Inti dan Rekanan bisa menuntaskan System Admin Pertamina
Monitoring Pertamina
project SMPBBM ini, ada pun sebagian kecil dari kerja praktik kami adalah di bagian System Monitoring Android. Mekanisme kerja monitoring ini adalah Gambar 4.1 Arsitektur Sistem
Dengan system tersebut diharapkan
PT
INTI
dan Rekanan bisa
menuntaskan project SMPBBM ini, ada pun sebagian kecil dari kerja praktik kami adalah di bagian System Monitoring Android. Mekanisme kerja monitoring ini adalah seperti berikut : 1. Pertamina telah menyediakan 2 table yakni table spbu dan table server 2. Kamilah yang membuat sistem webservice dan koneksi ke database 3. Kemudian android mengakses databases yang kami buat 4. Dan kemudian android menampilkan data sesuai request dari user Dari skema application di atas ada beberapa webservice yang akan berjalan di system SMPBBM ini, dan lima (5) di antaranya adalah yang kami yang mengerjakan, berikut adalah daftar lengkap : 1. Service SetTransaction, Service ini berfungsi untuk menerima data dari setiap spbu yang ada.
45
2. Service GetTransaction, Service ini berfungsi untuk mengambil data dari server. 3. Service SetRegistration, Service ini berfungsi untuk mendaftarkan kendaraankendaraan yang sudah terpasang RFID (Radio Frequensy Index Definision). 4. Service GetRegistration, Service ini berfungsi untuk mengambil data kendaraan kendaraan yang telah di registrasi. 5. Service GetBbm, Service ini berfungsi untuk spbu yang mau memesan Bbm. 6. Service SetBbm, Service ini berfungsi untuk mencatat pengisian bbm dari tank mabil bbm ke spbu 7. Service GetStatusDmz, Service ini berfungsi untuk memonitoring server dmz. 8. Service SetStatusDmz, Service ini berfungsi untuk mengisi data status server Dmz. 9. Service GetStatusApp, Service ini berfungsi untuk memonitoring server App. 10. Service SetStatusApp, Service ini berfungsi untuk mengisi data status server App. 11. Service RegSpbu, Service ini berfungsi untuk mendaftarkan Spbu ke databases. 12. Service GetSpbuid, Service ini Berfungsi untuk Mendapatkan spbu id. 13. Service GetSpbuKota, Service ini berfungsi untuk mendapatkan spbu dalam regional per kota. 14. Service GetStatusSpbu, Service ini berfungsi untuk memonitoring server lokal yang ada di setiap spbu. 15. Service SetStatusSpbu, Service ini berfungsi untuk menyimpan data kedalam database. Dari lima belas (15) webservice tersebut, di kami mengerjakan 5 service dengan rincian sebagai berikut : 1. Service GetStatusSpbu 2. Service GetSpbuId 3. Service GetSpbuKota 4. Service GetStatusDmz 5. Service GetStatusApp
46
4.3. Pemodelan Sistem 4.3.1. Use Case Use case diagram adalah gambaran graphical dari beberapa atau semua actor, use case, dan interaksi diantara komponen-komponen tersebut yang memperkenalkan suatu sistem yang akan dibangun. Use case diagram menjelaskan manfaat suatu sistem jika dilihat menurut pandangan orang yang berada di luar sistem. Diagram ini menunjukkan fungsionalitas suatu sistem atau kelas dan bagaimana sistem tersebut berinteraksi dengan dunia luar. Adapun Use Case Diagram dari aplikasi ini yaitu:
Gambar 4.2 : Use Case Diagram
Pada Use Case Diagram diatas user dapat melakukan berupa Monitoring DMZ Server, Monitoring App Server, dan Pencarian SPBU. Cari Kode dan Cari Kota di extend ke Pencarian SPBU 4.3.2. Activity Diagram Activity diagram adalah representasi grafis dari alur kerja tahapan aktifitas. Diagram ini mendukung pilihan tindakan, iterasi dan concurrency. Pada pemodelan UML, activity diagram dapat digunakan untuk menjelaskan bisnis dan alur kerja operasional secara step-by-step dari komponen suatu
47
sistem. Activity diagram menunjukkan keseluruhan dari aliran kontrol. Adapun activity diagram dari aplikasi ini adalah:
Gambar 4.3 : Activity Diagram
Pada Activity Diagram diatas dimulai dengan Menu Home yang akan menanpilkan list menu. Lalu ada pilihan tiga menu dan ketika memilih menu yang dipilih maka akan tampil tampilan sesuai dengan menu yang dipilih. Terakhir di tutup dengan exit. 4.3.3. Sequence Diagram Sequence diagram menggambarkan interaksi antar objek di dalam dan di sekitar sistem (termasuk pengguna, display, dan sebagainya) berupa message yang digambarkan terhadap waktu. Sequence diagram terdiri atar dimensi vertikal (waktu) dan dimensi horizontal (objek-objek yang terkait).
48
sd Sequece Diagram
User
Activity Monitoring Control DMZ DMZ Server
Activity Monitoring Control APP APP Server
Activity Monitoring Control SPBU SPBU
Activity Pencarian Control Detail SPBU
Open Activity()
Open Activity()
Open Activity() Call Webservice() Get data Webservice()
Process String Webservice()
Output Interface() Menu Refresh, Back to Main Menu, and Deatil Searching()
Choose Activity() Choose searching code or city()
Call Sebservice()
Get Data Webservice()
Process String Webservice()
Output Interface() Call WebService()
Get Data Webservice()
Process String Webservice()
Output User Interface()
Menu Refresh and Back to Main Menu() Call Webservice()
Get Data Webservice() Process String Webservice() Output Interface()
Menu Refresh and Back to Main Menu()
Gambar 4.4 : Sequence Diagram
Pada Sequence Diagram terdapat actor yakni user. Untuk boundary class terdapat Activity Monitoring DMZ Server, Activity Monitoring APP Server,
49
Activity Monitoring SPBU, serta Activity Pencarian SPBU. Untuk notasi dari tiap boundary class dengan control serta life line dan message class bisa dengan actor bisa terlihat seperti gambar di atas. 4.3.4. Class Diagram Class diagram adalah sebuah class yang menggambarkan struktur dan penjelasan class, paket, dan objek serta hubungan satu sama lain seperti containment, pewarisan, asosiasi, dan lain-lain. Class diagram juga menjelaskan hubungan antar class dalam sebuah sistem yang sedang dibuat dan bagaimana caranya agar mereka saling berkolaborasi untuk mencapai sebuah tujuan. aplysit.monitor.spbu HomeActivity +public static final String titles +public static final Integer imagePanah +public static final Integer images +public void onCreate(Bundle savedInstanceState) +public void onItemClick(AdapterView> arg0, View v, int position, long arg3) +public boolean onCreateOptionsMenu(Menu menu) +public boolean onOptionsItemSelected(MenuItem item)
AppActivity
DMZActivity
Spbu
-private static final String SOAP_ACTION -private static final String METHOD -private static final String URL +String NAMESPACE
-private static final String SOAP_ACTION -private static final String METHOD +private static final String URL +String NAMESPACE
+public void onCreate(Bundle savedInstanceState) +public void kirim(String lampu, ImageView img) -private void runDialog(final int seconds) +public boolean onCreateOptionsMenu(Menu menu) +public boolean onOptionsItemSelected(MenuItem item) +public String[] pemisah(String d) +public String[] t(String d)
+public void onCreate(Bundle savedInstanceState) +public void kirim(String lampu, ImageView img) +private void runDialog(final int seconds) +public boolean onCreateOptionsMenu(Menu menu) +public boolean onOptionsItemSelected(MenuItem item) +public String[] pemisah(String d) +public String[] t(String d)
+final String SOAP_ACTION +final String METHOD +final String URL +String NAMESPACE +public void onCreate(Bundle savedInstanceState) +public String[] s(String d) +public String[] t(String d) +public void DataSpinner() +public void judulTabel() +public void buatTabelIsi(String cari) +public boolean onCreateOptionsMenu(Menu menu) +public boolean onOptionsItemSelected(MenuItem item) +public void onItemSelected(AdapterView parent, View v, int position, long id) +public void onNothingSelected(AdapterView> arg0)
Pencarian +final String SOAP_ACTION +final String METHOD +final String URL +String NAMESPACE +final String SOAP_ID +final String METHODID +final String SOAP_KOTA +final String METHODKOTA +public String[] s(String d) +public String[] persen(String d) +public String[] bintang(String d) +public String[] dan(String d) +public String[] panah(String d) +public String[] pagar(String d) +public void onCreate(Bundle savedInstanceState) +public void DataSpinner() +public void onRadioButtonClicked(View view) +public void aksiCari(View view) +public void onItemSelected(AdapterView parent, View v, int position, long id) +public void onNothingSelected(AdapterView> arg0) +public void judulTabelKode() +public void judulTabelKota() +public void buatTabelKota(String cari) +public void buatTabelKode(String cari) +public void hapusTabel()
Gambar 4.5: Class Diagram
50
Pada gambar diatas digambarkan class utama yang terdapat dalam aplikasi ini. Semuanya terdiri dari lima class utama yaitu HomeActivity, AppActivity, DmzActivity, SpbuActivity, serta Pencarian. 4.3.5. Perancangan Kemanan Webservice adalah layanan yang terbuka untuk umum, jadi siapa saja akan bisa mengakses layanan tersebut. Mengingak aplikasi yang di bangun adalah bersifat private jadi hanya orang dan kalangan tertentu saja yang bisa mengakses layanan ini maka di buatlah rancangan keamanan, seperti berikut: 1. Parameter yang diterima hanyalah satu parameter, sehingga jika ada client yang mengirim lebih dari satu parameter akan langsung di tolak. 2. Disetiap pengiriman selalu menyertakan token atau code yang jika code atau tokennya sama maka nantinya webservice akan bisa di akses. 3. Beberapa parameter di satukan menjadi satu parameter dan di pisahkan dengan tanda atau simbol-simbol. 4. Parameter yang dikirim berupa String. 4.3.6. Perancangan Antar Muka Aplikasi Perancangan antarmuka bertujuan untuk memberikan gambaran tentang aplikasi
yang
akan
dibangun.
Sehingga
akan
mempermudah
dalam
mengimplementasikan aplikasi. Berikut ini adalah tampilan antar muka yang dirancang: 1. Tampilan Home
Gambar 4.6 : Perancangan Tampilan Home
51
Gambar diatas adalah perancangan untuk tampilan Home. Disana akan ada List View pilihan menu, logo Pertamina sebagai logo perusahaan, serta logo aplysit sebagai pihak software house. 2. Tampilan App dan DMZ Server
Gambar 4.7 : Perancangan Tampilan App dan DMZ Server Untuk perancangan tampilan di App serta DMZ Server sama saja. Yang membedakan hanya method yang akan diakses di web service. Berisi list view ang bersifat dinamis serta ada penggambaran service hidup atau mati. 3. Tampilan App dan DMZ Server
Gambar 4.8 : Perancangan Tampilan Monitor SPBU
52
Untuk perancangan tampilan di Monitor SPBU diatas intinya adalah spinner dan tabel. Image pertamina di letakkan diatas sebagai gambaran aplikasi Pertamina. 4. Tampilan App dan DMZ Server
Gambar 4.9 : Perancangan Tampilan Pencarian SPBU
Untuk perancangan tampilan di Pencarian Detail. Disini akan ada pilihan berupa radio button dan tabel yang akan berubah sesuai dengan pilihan yang dipilih.
BAB V IMPLEMENTASI DAN PENGUJIAN
5.1.Implementasi Sistem 5.1.1.
Kedudukan Sistem Sistem yang sebelumnya dilakukan analisis dan desain, kemudian
diimplementasikan dimana sistem dapat dioperasikan seutuhnya. Sistem ini berbasis mobile dengan platform android dan memanfaatkan koneksi internet untuk mengakses informasi di webservice 5.1.2.
Persiapan Infrastuktur Pada
implementasi,
ada
hal
yang
harus
diperhatikan
yaitu
mempersiapkan semua infrastruktur yang dibutuhkan untuk pengujian sistem ini. a. Persiapan Perangkat Lunak (Software) Perangkat lunak yang digunakan pada aplikasi ini diantaranya : 1. Sistem Operasi Windows 7 2. Eclipse sebagai editor 3. ADT dan Android SDK untuk plugin dan Emulator Android b. Persiapan Perangkat Keras (Hardware) Berikut beberapa spesifikasi perangkat keras untuk implementasi aplikasi yang dibuat ini. 1. Personal Computer minimal dengan Pentium 4 2.8 GHz. 2. RAM minimal 256 MB. 3. Hard Disk Minimal 80 GB. 4. Keyboard. 5. Mouse USB atau mouse PS2. 6. Handphone Android dengan spesifikasi type Froyo atau lebih
53
54
5.1.3. Implementasi Coding 1. Pendeklarasian Variabel private static final String SOAP_ACTION = "http://tempuri.org/IESB/getStatusApp"; private static final String METHOD = "getStatusApp"; private static final String URL = "http://114.57.160.39/ESBAPLYMONITORING/ESB.svc?wsdll"; String NAMESPACE = "http://tempuri.org/"; SoapObject request = new SoapObject(NAMESPACE, METHOD); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); HttpTransportSE ht; Calendar cal = Calendar.getInstance(); SimpleDateFormat tgl = new SimpleDateFormat("dd MMM yyyy"); SimpleDateFormat jam = new SimpleDateFormat("HH:mm:ss");
Gambar 5.1 Implementasi Pendeklarasian Variabel Dari kode program diatas menjelaskan alamat dari web service yang digunakan oleh variable URL. Ciri utama dari web service adalah file dengan yang berakhiran wsdl. 2. Pemanggilan Web Service SoapObject request = new SoapObject(NAMESPACE, METHOD); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); HttpTransportSE ht; PropertyInfo pi = new PropertyInfo(); pi.setName("value"); pi.setValue("APLYAPP#"); pi.setType(String.class); pi.setNamespace(NAMESPACE); request.addProperty(pi); ht = new HttpTransportSE(URL); envelope.setOutputSoapObject(request); try { ht.call(SOAP_ACTION, envelope); SoapPrimitive response = (SoapPrimitive) envelope.getResponse(); SoapPrimitive s = response; } catch (Exception e) { Toast.makeText(this, "Terjadi Kesalahan : " +e.toString(), Toast.LENGTH_LONG).show();}
Gambar 5.2 Implementasi Pemanggilan Web Service di Android
55
Kode program tersebut menjelaskan bagaimna web service itu dipanggil
dengan
cara
mengirim
string
NAMESPACE,
METHOD
melalui objek request dari class SoapObject. Setelah itu ada perintah try and catch untuk mengirim nilai ke web service. Dan yang terakhir bagaiman envelope menangkap nilai yang di dapat dari webservice. 3. Pengolahan String Web Service String kataPisah = s.toString(); String q[] = pemisah(kataPisah); Toast.makeText(this, "Data yang didapat : " + kataPisah, Toast.LENGTH_LONG).show(); for (int i = 0; i < q.length; i++) { TableRow tbrow = new TableRow(this);// wajib TableRow.LayoutParams ParameterTableRow_title = new TableRow.LayoutParams( TableRow.LayoutParams.FILL_PARENT, TableRow.LayoutParams.FILL_PARENT); ParameterTableRow_title.setMargins(1, 1, 1, 1); TextView label = new TextView(this); TextView tanggal = new TextView(this); ImageView imageView = new ImageView(this); label.setText("Service Ke-" + (i+1)); if (q[i].equals(1)) { imageView.setImageResource(R.drawable.hijau); } else imageView.setImageResource(R.drawable.merah); tanggal.setText(" " + tglD + " " + jamD); tanggal.setTextSize(12); tbrow.addView(label, ParameterTableRow_title); tbrow.addView(imageView, ParameterTableRow_title); tbrow.addView(tanggal, ParameterTableRow_title); tabel.addView(tbrow); }
Gambar 5.3 Implementasi Pengolahan String dari Web Service di Android Kode program diatas menjelaskan bagaimana dari nilai yang didapat dan di olah kemudian membuat interface yang bersifat dinamis di android.
56
4. Pemisahan String dari Web Service public String[] pemisah(String d) { String date = d; String a[] = date.split("#"); return a; }
public String[] t(String d) { String date = d; String a[] = date.split("%"); return a;
} } Gambar 5.4 Implementasi Pemisahan String dari Web Service di Android Kode program diatas adalah mengolah nilai yang didapat dari web service dengan melakukan substring (pemisahan) di java. Sehingga panjang dari string itu kemudian menjadi array yang mempunyai panjang indeks yang digunakan untuk membuat tampilan dinamis sesuai dengan jumlah panjang array yang dipisahkan oleh tanda „#‟. 5.1.4.
Antar Muka Perangkat Lunak Berikut antarmuka yang dibuat dari hasil rancangan antarmuka pada
perangkat lunak client webservice: 1. Activity Home
Gambar 5.5 Tampilan Antarmuka home
57
Gambar diatas menampilkan tampilan home dari aplikasi monitoring service ini. Disini terdapat tiga pilihan berupa Monitoring DMZ Server, Monitoring App Server, serta Monitor SPBU b. Activity DMZ Server
Gambar 5.6 Tampilan Antarmuka DMZ Server Gambar diatas merupakan halaman pada monitoring DMZ Server. Pada halaman ini ada textview yang berisi sampai service keberapa nilainya, ini tergantung dari berapa nilai yang didapat dari web service(dinamis). Adapun lingkaran merah atau hijau adalah berupa keadaan service. Merah untuk padam, dan hijau untuk hidup. Sedangkan tanggal dan jam adalah kapan terakhir pengecekan ini dilakukan. Didalamnya juga terdapat menu yaitu back to main menu yang akan kembali pada activity home dan menu refresh yang akan melakukan koneksi lagi ke web service untuk merefresh service.
58
c. Activity App Server
Gambar 5.7 Tampilan Antarmuka App Server Activity diatas adalah Activity App Server. Hampir sama dengan Activity DMZ Server yang membedakan hanya server yang digunakan. Untuk fungsionalitas dan tampilan activity App Server ini sama saja dengan DMZ Server. d. Activity Monitor SPBU
Gambar 5.8 Tampilan Antarmuka Monitor SPBU
59
Activity diatas adalah activity monitor SPBU. Didalamnya ada spinner untuk kode SPBU dan tabel untuk menampilkan kode spbu, kota, total pengiriman premium, serta kapan pengiriman terakhir yang dilakukan. Jadi apabila spinner di klik maka isi tabel pun akan langsung berubah, selain itu juga ada menu back to main menu, refresh, dan searching. Searching adalah pencarian untuk masuk ke pencarian detail e. Activity Pencarian Detail
Gambar 5.9 Tampilan Antarmuka Pencarian Detail Gambar diatas adalah gambar untuk pencarian detail. Pada activity ini terdapat dua pilihan yaitu pencarian berdasarkan kode dan pencarian berdasarkan kota.
5.2.Pengujian Sistem Perangkat lunak yang telah dibuat tidak akan berjalan dengan seharusnya, jika belum dilakukan pengujian. Ini bertujuan untuk mencari kesalahan-kesalahan yang terjadi pada perangkat lunak client webservice . Nantinya, dari kesalahan yang terjadi dibuat suatu pemecahan masalah sehingga dapat meminimalisir kesalahan. Pengujian ini dapat dilakukan pada tiap-tiap method hal yang menjadi acuan adalah method telah bekerja sesuai rancangan dan sesuai apa yang di request oleh client.
60
Adapun pengujian sistem yang dilakukan pada perangkat lunak ini, menggunakan metode pengujian Black-Box yang terfokus pada spesifikasi fungsional dari perangkat lunak ini. Pengujian Penerimaan Pengguna seringkali merupakan langkah terakhir sebelum meluncurkan aplikasi. Biasanya pengguna akhir yang akan menggunakan aplikasi menguji aplikasi sebelum „menerima‟ aplikasi.
Jenis pengujian ini
memberikan pengguna akhir keyakinan bahwa aplikasi yang disampaikan kepada mereka memenuhi persyaratan mereka. UAT (user acceptance test) adalah bagian yang sangat penting dalam penerapan sebuah kegiatan pembangunan sistem berbasis IT. Melalui UAT maka pihak kontraktor pengembang/pembangun dapat memperoleh masukan sekaligus persetujuan dari pihak pengguna aplikasi perangkat lunak yang dikembangkannya. Sebenarnya proses audit teknologi informasi dimulai sejak awal sebuah proyek pengembangan/pembangunan sebuah sistem informasi. Salah satu alasan mendasarnya sangat sederhana, proses audit harus memiliki obyek yang jelas dan terukur dengan target hasil yang juga harus jelas dan terukur. Dengan demikian maka tidak heran jika hampir seluruh standard framework audit teknologi informasi menetapkan keterlibatan IT auditor sejak proses perencanaan proyek hingga penerapannya. 5.1 Tabel User Acceptance Test NO PEKERJAAN NO INDUK CHILD
R.1
Monitoring DMZ Server
R.1.1
R.1.2
KETERANGAN
TEST RESULT 15/09/2013 Sukses Gagal
User Interface beupa teks √ service ke berapa, status service, serta tanggal terakhir akses ke web service User interface bersifat √ dinamis sesuai dengan nilai yang di dapat dari web service
61
Tabel Lanjutan 5.1 Tabel Lanjutan User Acceptance Test NO PEKERJAAN NO INDUK CHILD
R.1.3
R.1.4 R.2
Monitoring App Server
R.2.1
R.2.2
R.2.3
R.2.4 R.3
Monitoring SPBU
R.3.1
R.3.2
R.3.3
R.3.4
KETERANGAN
TEST RESULT 15/09/2013 Sukses Gagal
Terdapat dua menu yaitu back to main menu dan refresh Substring dilakukan pemisahan tanda „#‟ User Interface beupa teks service ke berapa, status service, serta tanggal terakhir akses ke web service User interface bersifat dinamis sesuai dengan nilai yang di dapat dari web service Terdapat dua menu yaitu back to main menu dan refresh Substring dilakukan pemisahan tanda „#‟
√
User Interface beupa spinner yang berisi kode spbu tabel yang berisi site code, kota, alamat, dan pengiriman terakhir User interface bersifat dinamis sesuai dengan nilai yang di dapat dari web service Terdapat tiga menu yaitu back to main menu, refresh, dan Pencarian Substring dilakukan pemisahan tanda „%‟ untuk pemisahan perisi column dan tanda „#‟
√
√ √
√
√ √
√
√ √
62
Tabel Lanjutan 5.1 Tabel Lanjutan User Acceptance Test NO PEKERJAAN NO INDUK CHILD
KETERANGAN
TEST RESULT 15/09/2013 Sukses Gagal
untuk pemisahan perisi baris R.3.5
R.3.6
R.3.7
R.4
Koneksi Web Service
R.4.1 R.4.2
Jika pencarian di lakukan √ maka akan masuk ke pencarian kota dan kode Pencarian kode terdiri √ dari edit text yag menjadi tempat memasukan kode SPBU dan tabel yang teridir dari site code, alamat, kota, dan last send Nilai di tabel mengikuti √ nilai yang di inputkan di edit text, apabila yang di nilai yang di cari pada web service ada, maka isi tabel mengikuti nilai yang di dapat dari web service. Jika tidak ada muncul pesan pemberitahuan Koneksi dengan format https Koneksi ke server yang sebenarnya
√ √
BAB VI PENUTUP Bab ini adalah bab penutup yang menguraikan kesimpulan dari penulisan kerja praktik ini serta saran yang bermanfaat bagi semua pihak yang terkait atas pembuatan Aplikasi Client Monitoring Service Pada Sistem Monitoring Pengisian Bahan Bakar Minyak (Smpbbm) Berbasis Android. 6.1. KESIMPULAN Kesimpulan yang dapat diambil berdasarkan uraian yang telah dikemukan pada bab-bab sebelumnya serta berdasarkan pengujian adalah sebagai berikut: 1. Sesuai perkembangannya, informasi saat ini sering digunakan sebagai dasar dari sebuah aplikasi. BUMN seperti Pertamina perlu memberikan informasi yang akurat untuk di konsumsi oleh petugas pertamina lainnya. Penerapannya dalam sistem baru pertamina yakni Sistem Monitoring Pengendalian Bahan Bakar Minyak pun dipandang perlu. 2. Program SMPBBM adalah langkah awal Pertamina dalam upaya monitoring dan pengendalian penggunaan BBM - khususnya BBM bersubsidi, serta menjaga kestabilan harga bahan baku dan komoditas guna menunjang pembangunan nasional serta sebagai upaya terus menerus dalam menjaga besaran volume Bahan Bakar Minyak sebagaimana ditetapkan dalam Anggaran Pendapatan dan Belanja Negara (APBN). 3. Besarnya manfaat dari SMPBBM ini maka Pertamina membutuhkan aplikasi monitoring khusus untuk server yang terpasang di setiap SPBU dan di server Pusat Pertamina. Perangkat mobile yang tersinkronisasi dengan web service pun dilirik sebagai solusi yang bisa mengatasi masalah monitoring service. Android menjadi pilihan untuk digunakan dalam aplikasi ini. Adapun yang dilakukan android berupa monitoring server hidup dan mati server dan informasi yang terkandung didalamnya.
63
64
6.2.SARAN Dilihat dari Aplikasi Client Monitoring Service Pada Sistem Monitoring Pengisian Bahan Bakar Minyak (SMPBBM) Berbasis Android yang dibuat berdasarkan kemampuan yang dimiliki, maka saran yang akan diajukan untuk pengembangan aplikasi ini, diantaranya : 1.
Desain untuk interface dari aplikasi ini bisa ditingkatkan sehingga lebih menarik dan refresentatif. Menarik disini maksudnya menggunakan tampilan yang lebih interaktif sedangkan representatif maksudnya bisa lebih mewakili citra dari Pertamina.
2.
Untuk selanjutnya akses web service diharapkan menggunakan protocol Https. Dengan menggunakan protocol Https maka sistem ini akan lebih meningkatan performa sistem dari sisi keamanan sistem.
3.
Sistem yang telah dibangun ini agar dapat dijadikan bahan untuk pengembangan sistem lebih lanjut. Dengan penyempurnaan di beberapa sisi penggunaan
dari
aplikasi
ini
akan
menjadikannya
lebih
efektif.
DAFTAR PUSTAKA
Ashary, Fadhly. 2012. Pengertian UML. http://fadhlyashary.blogspot.com/2012/06/pengertian-uml-unifiedmodeling.html, 6 Juni 2012, diakses 23 November 2013 Informatika. 2013. Pengertian UML. http://informatika.web.id/pengertianuml.htm, 14 Februari 2013, diakses 23 November 2013 Internet world stats. Asia Marketing Research, Internet Usage, Population Statistics and Facebook Information. http://www.internetworldstats.com/asia.htm 31 Desember 2011. Diakses 31 November 2013 Jamil,
Nuraisah. 2010. Contoh Use Case Diagram. http://saiiamilla.wordpress.com/2010/04/19/contoh-use-case-diagram/, 19 April 2010. diakses 31 Oktober 2013
Merdeka. 2013. Pemilik dan Komunitas Mobil Dipasangi Ring RFID Gratis. http://m.merdeka.com/otomotif/pemilik-dan-komunitas-mobil-dipasangiring-rfid-gratis.html, 16 Oktober 2013. diakses 31 November 2013 Murdiyanto, Joko. 2013. Class Diagram dan Kasus Class Diagram. http://jokomurdiyanto.blogspot.com/2013/01/class-diagram-adalahcontoh-kasus-class.html, 1 4 J a n u a r i 2 0 1 , diakses 31 November 2013 Permana, Yogi. 2013. Activity Diagram. http://yogiperman4.blogspot.com/2013/05/activity-diagram.html, 1 Mei 2013, diakses 31 Oktober 2013 Setiabudi. 2008. Perlukah IT Auditor Terlibat UAT?. http://www.setiabudi.name/archives/563, 5 Agustus 2008, diakses 23 November 2013 Siregar, Ivan Michael dan Purba Johanes. 2012.Membongkar Teknologi Pemrograman Web Service.Gava Media : Yogyakarta Wanhen. 2010. Apakah yang dimaksud dengan http://wanhen.wordpress.com/2010/02/05/apakah-yangdimaksud-dengan-uat-user-acceptance-test/, 5 2010, diakses 23 November
65
UAT. Februari 2013
66
Wirawan, Rio. Sequence http://rio_wirawan.staff.gunadarma.ac.id/Downloads/files/ 29030/Materi+6.PPT, diakses 23 November 2013
Digram.
Wu, Thomas C. 2010.An Introduction to OO Pragraming with Java, 5th Edition. New York: MGH
LAMPIRAN 1. HomeActivity package com.example.listwebservice; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.Toast; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; public class HomeActivity extends Activity implements OnItemClickListener { public static final String[] titles = new String[] { "Monitor DMZ Server","Monitor App Server","Monitor SPBU" }; public static final Integer[] images = { R.drawable.server, R.drawable.serverhijau, R.drawable.spbu }; public static final Integer[] imagePanah = { R.drawable.server, R.drawable.app, R.drawable.spbu }; ListView listView; List rowItems; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_home); rowItems = new ArrayList(); for (int i = 0; i < titles.length; i++) { RowItem item = new RowItem(images[i], titles[i], imagePanah[i]); rowItems.add(item);} listView = (ListView) findViewById(R.id.list); View header=(View)getLayoutInflater().inflate(R.layout.listview_header, null);
67
68
listView.addHeaderView(header); CustomListViewAdapter adapter = new CustomListViewAdapter(this, R.layout.list_item, rowItems); listView.setAdapter(adapter); listView.setOnItemClickListener(this);} public void onItemClick(AdapterView> arg0, View v, int position, long arg3) { if (position == 0) { Toast.makeText(this, "Anda : " + "", Toast.LENGTH_LONG).show(); } else if (position == 1) { Intent intent = new Intent(this, DmzActivity.class); startActivity(intent); } else if (position == 2) { Intent intent2 = new Intent(this, AppActivity.class); startActivity(intent2); } else if (position == 3) { Intent intent2 = new Intent(this, Spbu.class); startActivity(intent2); } } public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu_home, menu); return true; } public boolean onOptionsItemSelected(MenuItem item) { Intent intent = null; switch (item.getItemId()) { case R.id.about: { AlertDialog alertDialog = new AlertDialog.Builder(this).create(); alertDialog.setTitle("Aplikasi Monitoring Server"); alertDialog.setMessage("Aplikasi ini memiliki dua fungsi utama yaitu Monitoring dan Akses data Server Hasil PT Inti dan Pertamina"); alertDialog.setIcon(R.drawable.iconkecil); alertDialog.setButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { }}); alertDialog.show(); } default: return super.onOptionsItemSelected(item); } } }
69
2. APPActivity package com.example.listwebservice; import import import import import import import
org.ksoap2.SoapEnvelope; org.ksoap2.serialization.PropertyInfo; org.ksoap2.serialization.SoapObject; org.ksoap2.serialization.SoapPrimitive; org.ksoap2.serialization.SoapSerializationEnvelope; org.ksoap2.transport.AndroidHttpTransport; org.ksoap2.transport.HttpTransportSE;
import java.text.SimpleDateFormat; import java.util.Calendar; import import import import import import import import import import import import import import import import import
android.os.Bundle; android.os.Handler; android.app.Activity; android.app.ProgressDialog; android.content.Intent; android.view.Menu; android.view.MenuInflater; android.view.MenuItem; android.view.View; android.view.View.OnClickListener; android.widget.Button; android.widget.EditText; android.widget.ImageView; android.widget.TableLayout; android.widget.TableRow; android.widget.TextView; android.widget.Toast;
public class AppActivity extends Activity {
String kal; Button kalimat; ImageView img; TextView txt; private ProgressDialog pd; private Handler handler; TableLayout tabel; String tglD, jamD; private static final String SOAP_ACTION = "http://tempuri.org/IESB/getStatusApp"; private static final String METHOD = "getStatusApp"; private static final String URL = "http://114.57.160.39/ESBAPLYMONITORING/ESB.svc?wsdll";
70
String NAMESPACE = "http://tempuri.org/";
SoapObject request = new SoapObject(NAMESPACE, METHOD); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); HttpTransportSE ht; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); runDialog(1); setContentView(R.layout.activity_app); tabel = (TableLayout) findViewById(R.id.tabel); // Dekalrasi penggunaan format waktu di java Calendar cal = Calendar.getInstance(); SimpleDateFormat tgl = new SimpleDateFormat("dd MMM yyyy"); SimpleDateFormat jam = new SimpleDateFormat("HH:mm:ss"); String tglD = tgl.format(cal.getTime()); String jamD = jam.format(cal.getTime()); // pemanggilan web service PropertyInfo pi = new PropertyInfo(); pi.setName("value"); pi.setValue("APLYAPP#"); // parameter kunci pi.setType(String.class); pi.setNamespace(NAMESPACE); request.addProperty(pi); ht = new HttpTransportSE(URL); envelope.setOutputSoapObject(request); try { ht.call(SOAP_ACTION, envelope); SoapPrimitive response = (SoapPrimitive) envelope.getResponse(); SoapPrimitive s = response; String kataPisah = s.toString(); //substring (pemisahan string) di java String q[] = pemisah(kataPisah); for (int i = 0; i < q.length; i++) { TableRow tbrow = new TableRow(this); TableRow.LayoutParams ParameterTableRow_title = new TableRow.LayoutParams( TableRow.LayoutParams.FILL_PARENT, TableRow.LayoutParams.FILL_PARENT); ParameterTableRow_title.setMargins(1, 1, 1, 1);
71
TextView label = new TextView(this); TextView tanggal = new TextView(this); ImageView imageView = new ImageView(this); label.setText("Service Ke-" + (i+1)); label.setTextSize(12); if (q[i].equals("1")) { imageView.setImageResource(R.drawable.hijau); } else imageView.setImageResource(R.drawable.merah); tanggal.setText(" " + tglD + " " + jamD); tanggal.setTextSize(12); tbrow.addView(label, ParameterTableRow_title); tbrow.addView(imageView, ParameterTableRow_title); tbrow.addView(tanggal, ParameterTableRow_title); tabel.addView(tbrow); } } catch (Exception e) { Toast.makeText(this, "Terjadi Kesalahan : " + e.toString(), Toast.LENGTH_LONG).show(); }}
private void runDialog(final int seconds) { // TODO Auto-generated method stub pd = ProgressDialog.show(this, "Loading....", "Checking Service"); new Thread(new Runnable() { public void run() { try { Thread.sleep(seconds * 1000); pd.dismiss(); } catch (InterruptedException e) { e.printStackTrace();}} }).start(); } public boolean onCreateOptionsMenu(Menu menu) { // buat menu MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu_spbu, menu); return true; } public boolean onOptionsItemSelected(MenuItem item) { // get Nilai Menu Intent intent = null; switch (item.getItemId()) { case R.id.MM: {
72
intent = new Intent(this, HomeActivity.class); startActivity(intent); return true;} case R.id.Refreshmenu: { intent = new Intent(this, AppActivity.class); startActivity(intent); return true;} default: return super.onOptionsItemSelected(item); }} public String[] pemisah(String d) { String date = d; String a[] = date.split("#"); return a; } public String[] t(String d) { String date = d; String a[] = date.split("%"); return a; } }
3. DMZActivity package com.example.listwebservice; import import import import import import import
org.ksoap2.SoapEnvelope; org.ksoap2.serialization.PropertyInfo; org.ksoap2.serialization.SoapObject; org.ksoap2.serialization.SoapPrimitive; org.ksoap2.serialization.SoapSerializationEnvelope; org.ksoap2.transport.AndroidHttpTransport; org.ksoap2.transport.HttpTransportSE;
import java.text.SimpleDateFormat; import java.util.Calendar; import import import import import import import import import import import import import import import import import import import
android.os.Bundle; android.os.Handler; android.app.Activity; android.app.ProgressDialog; android.content.Intent; android.graphics.Color; android.support.v4.view.ViewPager.LayoutParams; android.view.Gravity; android.view.Menu; android.view.MenuInflater; android.view.MenuItem; android.view.View; android.view.View.OnClickListener; android.widget.Button; android.widget.EditText; android.widget.ImageView; android.widget.LinearLayout; android.widget.TableLayout; android.widget.TableRow;
73
import android.widget.TextView; import android.widget.Toast; public class DmzActivity extends Activity {
String kal; Button kalimat; ImageView img; String tglD, jamD; TextView txt; private ProgressDialog pd; private Handler handler; TableLayout tabel;
private static final String SOAP_ACTION = "http://tempuri.org/IESB/getStatusDmz"; private static final String METHOD = "getStatusDmz"; private static final String URL = "http://114.57.160.39/ESBAPLYMONITORING/ESB.svc?wsdl"; String NAMESPACE = "http://tempuri.org/"; SoapObject request = new SoapObject(NAMESPACE, METHOD); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); HttpTransportSE ht; /* ip config private static final String SOAP_ACTION = "http://tempuri.org/IAPLY_8AA3397B2351C7361E45068EC7E0608F/getConnection DMZ"; private static final String METHOD = "getConnectionDMZ"; private static final String URL = "http://114.57.160.42/APLY_MONITORINGDMZ/APLY_8AA3397B2351C7361E45068EC7 E0608F.svc?wsdl"; String NAMESPACE = "http://tempuri.org/"; SoapObject request = new SoapObject(NAMESPACE, METHOD); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); HttpTransportSE ht; */ // sering salah jika build path dengan external jar @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
74
runDialog(2); setContentView(R.layout.activity_dmz); tabel= (TableLayout) findViewById(R.id.tabel); Calendar cal = Calendar.getInstance(); SimpleDateFormat tgl = new SimpleDateFormat("dd MMM yyyy"); SimpleDateFormat jam = new SimpleDateFormat("HH:mm:ss"); // SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); String tglD = tgl.format(cal.getTime()); String jamD = jam.format(cal.getTime());
PropertyInfo pi = new PropertyInfo(); pi.setName("value"); pi.setValue("APLYDMZ#"); pi.setType(String.class); pi.setNamespace(NAMESPACE); request.addProperty(pi); ht = new HttpTransportSE(URL); envelope.setOutputSoapObject(request); try { ht.call(SOAP_ACTION, envelope); SoapPrimitive response = (SoapPrimitive) envelope.getResponse(); SoapPrimitive s = response; String kataPisah = s.toString(); String q[] = pemisah(kataPisah); // Toast.makeText(this, "Data yang didapat : " + kataPisah,Toast.LENGTH_LONG).show();
for (int i = 0; i < q.length; i++) { TableRow tbrow = new TableRow(this);// wajib TableRow.LayoutParams ParameterTableRow_title = new TableRow.LayoutParams( TableRow.LayoutParams.FILL_PARENT, TableRow.LayoutParams.FILL_PARENT); ParameterTableRow_title.setMargins(1, 1, 1, 1); TextView label = new TextView(this); TextView tanggal = new TextView(this); ImageView imageView = new ImageView(this);
label.setText("Service Ke-" + (i+1));
75
label.setTextSize(12); if (q[i].equals("1")){ imageView.setImageResource(R.drawable.hijau); } else imageView.setImageResource(R.drawable.merah); tanggal.setText(" " + tglD + " " + jamD); tanggal.setTextSize(12);
tbrow.addView(label, ParameterTableRow_title); tbrow.addView(imageView, ParameterTableRow_title); tbrow.addView(tanggal, ParameterTableRow_title);
tabel.addView(tbrow);
}
} catch (Exception e) { Toast.makeText(this, "Terjadi Kesalahan : " + e.toString(), Toast.LENGTH_LONG).show(); } } private void runDialog(final int seconds) { // TODO Auto-generated method stub pd = ProgressDialog.show(this, "Loading....", "Checking Service"); new Thread(new Runnable() { public void run() { try { Thread.sleep(seconds * 1000); pd.dismiss(); } catch (InterruptedException e) { e.printStackTrace(); } } }).start(); }
76
public void kirim(String lampu, ImageView img) { // public void kirim(String lampu, String img){ // // int gam= Integer.parseInt(i); if (lampu.equals("1")) { img.setImageResource(R.drawable.hijau); } else { img.setImageResource(R.drawable.merah); } } public boolean onCreateOptionsMenu(Menu menu) { // buat menu MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu_spbu, menu); return true; } public boolean onOptionsItemSelected(MenuItem item) { // get Nilai Menu Intent intent = null; switch (item.getItemId()) { case R.id.MM: { intent = new Intent(this, HomeActivity.class); startActivity(intent); return true; } case R.id.Refreshmenu: { intent = new Intent(this, DmzActivity.class); startActivity(intent); return true; } default: return super.onOptionsItemSelected(item); } } public String[] pemisah(String d) { String date = d; String a[] = date.split("#"); return a; } }
4. Spbu package com.example.listwebservice;
77
import import import import import import
org.ksoap2.SoapEnvelope; org.ksoap2.serialization.PropertyInfo; org.ksoap2.serialization.SoapObject; org.ksoap2.serialization.SoapPrimitive; org.ksoap2.serialization.SoapSerializationEnvelope; org.ksoap2.transport.HttpTransportSE;
import import import import import import import import import import import import import import import import import import
android.app.Activity; android.content.Intent; android.graphics.Color; android.graphics.Typeface; android.os.Bundle; android.view.Gravity; android.view.Menu; android.view.MenuInflater; android.view.MenuItem; android.view.View; android.widget.AdapterView; android.widget.ArrayAdapter; android.widget.Spinner; android.widget.TableLayout; android.widget.TableRow; android.widget.TextView; android.widget.Toast; android.widget.AdapterView.OnItemSelectedListener;
public class Spbu extends Activity implements OnItemSelectedListener { Spinner spinnerId; String array_spinner[]; String a[] = new String[5]; TableLayout TL; TableLayout TS; /* * final String SOAP_ACTION = * "http://tempuri.org/IAPLY_B360314F6AB61924DFC4C98E71845B0B/getListId"; * final String METHOD = "getListId"; final String URL = * "http://114.57.160.42/APLY_MONITOR/APLY_B360314F6AB61924DFC4C98E71845B0B .svc?wsdl" * ; String NAMESPACE = "http://tempuri.org/"; * * SoapObject request = new SoapObject(NAMESPACE, METHOD); */ private static final String SOAP_ACTION = "http://tempuri.org/IESB/getId"; private static final String METHOD = "getId"; private static final String URL = "http://114.57.160.39/ESBAPLYMONITORING/ESB.svc?wsdl"; String NAMESPACE = "http://tempuri.org/";
78
SoapObject request = new SoapObject(NAMESPACE, METHOD); private static final String URL2 = "http://114.57.160.39/ESBAPLYMONITORING/ESB.svc?wsdl"; final String SOAP_ID = "http://tempuri.org/IESB/getStatusSpbu"; final String METHODID = "getStatusSpbu"; SoapSerializationEnvelope envelope = new SoapSerializationEnvelope( SoapEnvelope.VER11); HttpTransportSE ht; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.spbu_layout); // Mengisi data spinner Term spinnerId = (Spinner) findViewById(R.id.spinner_spbu); ht = new HttpTransportSE(URL); DataSpinner(); TL = (TableLayout) findViewById(R.id.tabel); judulTabel(); } public String[] s(String d) { String date = d; String a[] = date.split("#"); return a; } public String[] t(String d) { String date = d; String a[] = date.split("%"); return a; } public void DataSpinner() { PropertyInfo pi = new PropertyInfo(); pi.setName("value"); pi.setValue("APLYSPBUID#"); pi.setType(String.class); pi.setNamespace(NAMESPACE); request.addProperty(pi); ht = new HttpTransportSE(URL); envelope.setOutputSoapObject(request); try { ht.call(SOAP_ACTION, envelope); SoapPrimitive response = (SoapPrimitive) envelope.getResponse(); SoapPrimitive s = response;
79
Spbu pk = new Spbu(); String kataPisah = s.toString(); String dataSpin[] = pk.s(kataPisah); array_spinner = new String[dataSpin.length]; String data = kataPisah; // Toast.makeText(this, "Data spin: " + data, Toast.LENGTH_SHORT).show(); /* * for (int i = 0; i < dataSpin.length; i++) { array_spinner[i] = * data.substring(0, data.indexOf("#")); data = * data.substring(array_spinner[i].length() + 1, data.length()); * a[i] = array_spinner[i]; } */ for (int i = 0; i < dataSpin.length; i++) { array_spinner[i] = dataSpin[i]; } ArrayAdapter> adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, array_spinner); adapter.setDropDownViewResource(android.R.layout.simple_spinner_d ropdown_item); spinnerId.setAdapter(adapter); spinnerId.setOnItemSelectedListener(this); } catch (Exception e) { // e.printStackTrace(); Toast.makeText(this, "Data spin salah: " + e, Toast.LENGTH_SHORT) .show(); } } public void judulTabel() { TableLayout.LayoutParams ParameterTableLayout = new TableLayout.LayoutParams( TableLayout.LayoutParams.FILL_PARENT, TableLayout.LayoutParams.FILL_PARENT); TableRow TR_title = new TableRow(this); TR_title.setLayoutParams(ParameterTableLayout); TableRow.LayoutParams ParameterTableRow_title = new TableRow.LayoutParams( TableRow.LayoutParams.FILL_PARENT,
80
TableRow.LayoutParams.FILL_PARENT); ParameterTableRow_title.setMargins(1, 1, 1, 1); TextView TV0 = new TextView(this); TV0.setText("SITE CODE"); TV0.setTextColor(Color.WHITE); TV0.setPadding(2, 5, 2, 5); TV0.setGravity(Gravity.CENTER); TV0.setBackgroundColor(Color.RED); TV0.setTypeface(null, Typeface.BOLD); TR_title.addView(TV0, ParameterTableRow_title); TextView TV1 = new TextView(this); TV1.setText("CITY"); TV1.setTextColor(Color.WHITE); TV1.setPadding(2, 5, 2, 5); TV1.setGravity(Gravity.CENTER); TV1.setBackgroundColor(Color.RED); TV1.setTypeface(null, Typeface.BOLD); TR_title.addView(TV1, ParameterTableRow_title); TextView TV2 = new TextView(this); TV2.setText("STATUS"); TV2.setTextColor(Color.WHITE); TV2.setPadding(2, 5, 2, 5); TV2.setGravity(Gravity.CENTER); TV2.setBackgroundColor(Color.RED); TV2.setTypeface(null, Typeface.BOLD); TR_title.addView(TV2, ParameterTableRow_title); TextView TV3 = new TextView(this); TV3.setText(" LAST "); TV3.setTextColor(Color.WHITE); TV3.setPadding(2, 5, 2, 5); TV3.setGravity(Gravity.CENTER); TV3.setBackgroundColor(Color.RED); TV3.setTypeface(null, Typeface.BOLD); TR_title.addView(TV3, ParameterTableRow_title); TL.addView(TR_title); } public void buatTabelIsi(String cari) { SoapObject requestId = new SoapObject(NAMESPACE, METHODID); PropertyInfo pi = new PropertyInfo(); pi.setName("value"); pi.setValue("APLYSPBU#" + cari + "#"); pi.setType(String.class); pi.setNamespace(NAMESPACE); requestId.addProperty(pi); ht = new HttpTransportSE(URL2); envelope.setOutputSoapObject(requestId);
81
TL.removeAllViews(); judulTabel(); try { ht.call(SOAP_ID, envelope); SoapPrimitive response = (SoapPrimitive) envelope.getResponse(); SoapPrimitive s = response; Spbu pk = new Spbu(); String kataPisah = s.toString(); Toast.makeText(this, "Data Tabel web service: " + kataPisah, Toast.LENGTH_LONG).show(); // if (kataPisah != null) { String q[] = pk.t(kataPisah); String spbu[] = new String[q.length]; TableRow tbrow = new TableRow(this);// wajib TableRow.LayoutParams ParameterTableRow_title = new TableRow.LayoutParams( TableRow.LayoutParams.FILL_PARENT, TableRow.LayoutParams.FILL_PARENT); ParameterTableRow_title.setMargins(1, 1, 1, 1); TextView TextView TextView TextView
text_v1 text_v2 text_v3 text_v4
= = = =
new new new new
TextView(this); TextView(this); TextView(this); TextView(this);
// UI text_v1.setPadding(2, 5, 2, 5); text_v1.setBackgroundColor(Color.DKGRAY); text_v1.setTextColor(Color.WHITE); text_v1.setGravity(Gravity.CENTER); text_v1.setTextSize(14.0f); text_v2.setPadding(2, 5, 2, 5); text_v2.setBackgroundColor(Color.DKGRAY); text_v2.setTextColor(Color.WHITE); text_v2.setGravity(Gravity.CENTER); text_v2.setTextSize(10.0f); text_v3.setPadding(2, 5, 2, 5); text_v3.setBackgroundColor(Color.DKGRAY); text_v3.setTextColor(Color.WHITE); text_v3.setGravity(Gravity.CENTER); text_v3.setTextSize(15.0f); text_v4.setPadding(2, 5, 2, 5); text_v4.setBackgroundColor(Color.DKGRAY);
82
text_v4.setTextColor(Color.WHITE); text_v4.setGravity(Gravity.CENTER); text_v4.setTextSize(10.0f); // VALUE text_v1.setText(q[0]); text_v2.setText(q[1]); text_v3.setText(q[2]); text_v4.setText(q[3]); tbrow.addView(text_v1, tbrow.addView(text_v2, tbrow.addView(text_v3, tbrow.addView(text_v4,
ParameterTableRow_title); ParameterTableRow_title); ParameterTableRow_title); ParameterTableRow_title);
TL.addView(tbrow); // } } catch (Exception e) { Toast.makeText(this, "Terjadi Kesalahan di tabel: " + e, Toast.LENGTH_LONG).show(); // TL.removeAllViews(); // e.printStackTrace(); } } public boolean onCreateOptionsMenu(Menu menu) { // buat menu MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.popup_menu, menu); return true; } public boolean onOptionsItemSelected(MenuItem item) { // get Nilai Menu Intent intent = null; switch (item.getItemId()) { case R.id.MM: { intent = new Intent(this, HomeActivity.class); startActivity(intent); return true; } case R.id.refreshmenu: { intent = new Intent(this, Spbu.class); startActivity(intent); return true; } case R.id.pencarian: { intent = new Intent(this, Pencarian.class); startActivity(intent);
83
return true; } default: return super.onOptionsItemSelected(item); } } public void onItemSelected(AdapterView parent, View v, int position, long id) { String hasil = array_spinner[position]; buatTabelIsi(hasil); } public void onNothingSelected(AdapterView> arg0) { // TODO Auto-generated method stub } } 5. Pencarrian package com.example.listwebservice; import import import import import import import import import import import import import import import import import import
android.os.Bundle; android.app.Activity; android.graphics.Color; android.graphics.Typeface; android.text.Editable; android.view.Gravity; android.view.View; android.widget.AdapterView; android.widget.AdapterView.OnItemSelectedListener; android.widget.ArrayAdapter; android.widget.Button; android.widget.EditText; android.widget.RadioButton; android.widget.Spinner; android.widget.TableLayout; android.widget.TableRow; android.widget.TextView; android.widget.Toast;
import import import import import import
org.ksoap2.SoapEnvelope; org.ksoap2.serialization.PropertyInfo; org.ksoap2.serialization.SoapObject; org.ksoap2.serialization.SoapPrimitive; org.ksoap2.serialization.SoapSerializationEnvelope; org.ksoap2.transport.HttpTransportSE;
84
public class Pencarian extends Activity implements OnItemSelectedListener { RadioButton kode, kota; Button buttonSub, butRes; String array_spinner[]; View layout1, layout2, Lkode, Lkota; TableLayout tabelKota, tabelKode; TableLayout isiTabel, isiTabelKode; String isi; Spinner spinnerId; EditText isiCari; String dataSpin[];
String NAMESPACE = "http://tempuri.org/"; final String URL_ID = "http://114.57.160.39/ESBAPLYMONITORING/ESB.svc?wsdl"; final String SOAP_ID = "http://tempuri.org/IESB/getStatusSpbu"; final String METHODID = "getStatusSpbu"; SoapObject request_Id = new SoapObject(NAMESPACE, METHODID); final String URL_KOTA = "http://114.57.160.39/ESBAPLYMONITORING/ESB.svc?wsdl"; final String SOAP_KOTA = "http://tempuri.org/IESB/getStatusSpbuKota"; final String METHODKOTA = "getStatusSpbuKota"; SoapObject request_Kota = new SoapObject(NAMESPACE, METHODKOTA); // belum spinner final String URL_GETNAMA = "http://114.57.160.42/APLY_MONITOR/APLY_B360314F6AB61924DFC4C98E71845B0B .svc?wsdl"; final String SOAP_GETNAMA = "http://tempuri.org/IAPLY_B360314F6AB61924DFC4C98E71845B0B/getListCity"; // final String SOAP_GETNAMA = "http://tempuri.org/IESB/getListCity"; final String METHOD_GETNAMA = "getListCity"; SoapObject request_GetNama = new SoapObject(NAMESPACE, METHOD_GETNAMA);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); HttpTransportSE ht;
@Override
85
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_pencarian); Lkode = findViewById(R.id.laytabelKode); Lkota = findViewById(R.id.laytabelKota); kode = (RadioButton) findViewById(R.id.radio_kode); kota = (RadioButton) findViewById(R.id.radio_kota); layout1 = findViewById(R.id.pil2); layout1.setVisibility(View.GONE); layout2 = findViewById(R.id.pil1); layout2.setVisibility(View.GONE); isiCari = (EditText) findViewById(R.id.inputKode); spinnerId = (Spinner) findViewById(R.id.spinKota); tabelKota = (TableLayout) findViewById(R.id.tabelKota); tabelKode = (TableLayout) findViewById(R.id.tabelKode); Lkode.setVisibility(View.GONE); Lkota.setVisibility(View.GONE);
ht = new HttpTransportSE(URL_ID); DataSpinner();
} public void onRadioButtonClicked(View view) { boolean checked = ((RadioButton) view).isChecked();
//
// Check which radio button was clicked switch (view.getId()) { case R.id.radio_kode: if (checked) { DataSpinner(); layout2.setVisibility(View.GONE); layout1.setVisibility(0); hapusTabel(); judulTabelKode(); Lkota.setVisibility(View.GONE); Lkode.setVisibility(0);
//
} break; case R.id.radio_kota: if (checked) { DataSpinner(); layout1.setVisibility(View.GONE);
86
layout2.setVisibility(0); hapusTabel(); judulTabelKota(); Lkode.setVisibility(View.GONE); Lkota.setVisibility(0); } break; } } public void DataSpinner() { PropertyInfo pi = new PropertyInfo(); pi.setName("value"); pi.setValue("APLYSITMON#"); pi.setType(String.class); pi.setNamespace(NAMESPACE); request_GetNama.addProperty(pi); ht = new HttpTransportSE(URL_GETNAMA); envelope.setOutputSoapObject(request_GetNama); try { ht.call(SOAP_GETNAMA, envelope); SoapPrimitive response = (SoapPrimitive) envelope.getResponse(); SoapPrimitive s = response; Spbu pk = new Spbu(); String kataPisah = s.toString(); String dataSpin[] = pk.s(kataPisah); array_spinner = new String[dataSpin.length]; String data = kataPisah; for (int i = 0; i < dataSpin.length; i++) { array_spinner[i] = data.substring(0, data.indexOf("#")); data = data.substring(array_spinner[i].length() + 1, data.length()); } ArrayAdapter> adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, array_spinner); adapter.setDropDownViewResource(android.R.layout.simple_spinner_d ropdown_item); spinnerId.setAdapter(adapter); spinnerId.setOnItemSelectedListener(this); } catch (Exception e) {
87
e.printStackTrace(); } } public void judulTabelKode() { TableLayout.LayoutParams ParameterTableLayout = new TableLayout.LayoutParams( TableLayout.LayoutParams.WRAP_CONTENT, TableLayout.LayoutParams.WRAP_CONTENT); TableRow TR_title = new TableRow(this); TR_title.setLayoutParams(ParameterTableLayout); TableRow.LayoutParams ParameterTableRow_title = new TableRow.LayoutParams( TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT); ParameterTableRow_title.setMargins(1, 1, 1, 1); TextView TV0 = new TextView(this); TV0.setText("SITE CODE"); TV0.setTextColor(Color.WHITE); TV0.setPadding(2, 5, 2, 5); TV0.setGravity(Gravity.CENTER); TV0.setBackgroundColor(Color.RED); TV0.setTypeface(null, Typeface.BOLD); TR_title.addView(TV0, ParameterTableRow_title); TextView TV1 = new TextView(this); TV1.setText("CITY"); TV1.setTextColor(Color.WHITE); TV1.setPadding(2, 5, 2, 5); TV1.setGravity(Gravity.CENTER); TV1.setBackgroundColor(Color.RED); TV1.setTypeface(null, Typeface.BOLD); TR_title.addView(TV1, ParameterTableRow_title); TextView TV2 = new TextView(this); TV2.setText("TOTAL"); TV2.setTextColor(Color.WHITE); TV2.setPadding(2, 5, 2, 5); TV2.setGravity(Gravity.CENTER); TV2.setBackgroundColor(Color.RED); TV2.setTypeface(null, Typeface.BOLD); TR_title.addView(TV2, ParameterTableRow_title); TextView TV3 = new TextView(this); TV3.setText(" LAST "); TV3.setTextColor(Color.WHITE); TV3.setPadding(2, 5, 2, 5); TV3.setGravity(Gravity.CENTER); TV3.setBackgroundColor(Color.RED); TV3.setTypeface(null, Typeface.BOLD);
88
TR_title.addView(TV3, ParameterTableRow_title); // TL.addView(TR_title); tabelKode.addView(TR_title); } public void judulTabelKota() { TableLayout.LayoutParams ParameterTableLayout = new TableLayout.LayoutParams( TableLayout.LayoutParams.WRAP_CONTENT, TableLayout.LayoutParams.WRAP_CONTENT); TableRow TR_title = new TableRow(this); TR_title.setLayoutParams(ParameterTableLayout); TableRow.LayoutParams ParameterTableRow_title = new TableRow.LayoutParams( TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT); ParameterTableRow_title.setMargins(1, 1, 1, 1); TextView TV0 = new TextView(this); TV0.setText("SITE CODE"); TV0.setTextColor(Color.WHITE); TV0.setPadding(2, 5, 2, 5); TV0.setGravity(Gravity.CENTER); TV0.setBackgroundColor(Color.RED); TV0.setTypeface(null, Typeface.BOLD); TR_title.addView(TV0, ParameterTableRow_title); TextView TV1 = new TextView(this); TV1.setText("CITY"); TV1.setTextColor(Color.WHITE); TV1.setPadding(2, 5, 2, 5); TV1.setGravity(Gravity.CENTER); TV1.setBackgroundColor(Color.RED); TV1.setTypeface(null, Typeface.BOLD); TR_title.addView(TV1, ParameterTableRow_title); TextView TV2 = new TextView(this); TV2.setText("PHONE"); TV2.setTextColor(Color.WHITE); TV2.setPadding(2, 5, 2, 5); TV2.setGravity(Gravity.CENTER); TV2.setBackgroundColor(Color.RED); TV2.setTypeface(null, Typeface.BOLD); TR_title.addView(TV2, ParameterTableRow_title); TextView TV3 = new TextView(this);
89
TV3.setText("
LAST
");
TV3.setTextColor(Color.WHITE); TV3.setPadding(2, 5, 2, 5); TV3.setGravity(Gravity.CENTER); TV3.setBackgroundColor(Color.RED); TV3.setTypeface(null, Typeface.BOLD); TR_title.addView(TV3, ParameterTableRow_title); tabelKota.addView(TR_title); } public void buatTabelKode(String cari) {
//
PropertyInfo pi = new PropertyInfo(); pi.setName("value"); pi.setValue("APLYSITMON#3110703#"); pi.setValue("APLYSPBU#" + cari + "#"); pi.setType(String.class); pi.setNamespace(NAMESPACE); request_Id.addProperty(pi); ht = new HttpTransportSE(URL_ID); envelope.setOutputSoapObject(request_Id); tabelKode.removeAllViews(); judulTabelKode();
try { ht.call(SOAP_ID, envelope); SoapPrimitive response = (SoapPrimitive) envelope.getResponse(); SoapPrimitive s = response; Pencarian pk = new Pencarian(); String kataPisah = s.toString();
String q[] = pk.persen(kataPisah); String bintang[] = new String[q.length];
String ada = q[0]; Pencarian pks = new Pencarian(); String String String String
bin[] = dan[] = panah[] pagar[]
pks.bintang(q[0]); pks.dan(q[1]); = pks.panah(q[2]); = pks.pagar(q[3]);
90
for (int i = 0; i < q.length; i++) { TableRow tbrow = new TableRow(this);// wajib TableRow.LayoutParams ParameterTableRow_title = new TableRow.LayoutParams( TableRow.LayoutParams.FILL_PARENT, TableRow.LayoutParams.FILL_PARENT); ParameterTableRow_title.setMargins(1, 1, 1, 1); TextView TextView TextView TextView
text_v1 text_v2 text_v3 text_v4
= = = =
new new new new
TextView(this); TextView(this); TextView(this); TextView(this);
text_v1.setText(bin[i]); text_v2.setText(dan[i]); text_v3.setText(panah[i]); text_v4.setText(pagar[i]); // UI text_v1.setPadding(2, 5, 2, 5); text_v1.setBackgroundColor(Color.DKGRAY); text_v1.setTextColor(Color.WHITE); text_v1.setGravity(Gravity.CENTER); text_v1.setTextSize(14.0f); // text_v2.setPadding(2, 5, 2, 5); text_v2.setBackgroundColor(Color.DKGRAY); text_v2.setTextColor(Color.WHITE); text_v2.setGravity(Gravity.CENTER); text_v2.setTextSize(12.0f); text_v3.setPadding(2, 5, 2, 5); text_v3.setBackgroundColor(Color.DKGRAY); text_v3.setTextColor(Color.WHITE); text_v3.setGravity(Gravity.CENTER); text_v3.setTextSize(12.0f); text_v4.setPadding(2, 5, 2, 5); text_v4.setBackgroundColor(Color.DKGRAY); text_v4.setTextColor(Color.WHITE); text_v4.setGravity(Gravity.CENTER); text_v4.setTextSize(11.0f); tbrow.addView(text_v1, ParameterTableRow_title); tbrow.addView(text_v2, ParameterTableRow_title); tbrow.addView(text_v3, ParameterTableRow_title);
91
tbrow.addView(text_v4, ParameterTableRow_title); tabelKode.addView(tbrow); }
} catch (Exception e) { Toast.makeText(this, "Data tidak ada Toast.LENGTH_LONG).show();
: \n" ,
}
}
public void buatTabelKota(String cari) { PropertyInfo pi = new PropertyInfo(); pi.setName("value"); // pi.setValue("APLYSITMON#BANDUNG#"); pi.setValue("APLYSPBU#" + cari + "#"); pi.setType(String.class); pi.setNamespace(NAMESPACE); request_Kota.addProperty(pi); ht = new HttpTransportSE(URL_KOTA); envelope.setOutputSoapObject(request_Kota); tabelKota.removeAllViews(); judulTabelKota(); try { ht.call(SOAP_KOTA, envelope); SoapPrimitive response = (SoapPrimitive) envelope.getResponse(); SoapPrimitive s = response; Pencarian pk = new Pencarian(); String kataPisah = s.toString(); Toast.makeText(this, "Kota Kesalahan: " + kataPisah,Toast.LENGTH_LONG).show(); String q[] = pk.persen(kataPisah); String bintang[] = new String[q.length]; String ada = q[0]; Pencarian pks = new Pencarian();
String bin[] = pks.bintang(q[0]); String dan[] = pks.dan(q[1]);
92
String panah[] = pks.panah(q[2]); String pagar[] = pks.pagar(q[3]); for (int i = 0; i < q.length; i++) { TableRow tbrow = new TableRow(this);// wajib TableRow.LayoutParams ParameterTableRow_title = new TableRow.LayoutParams( TableRow.LayoutParams.FILL_PARENT, TableRow.LayoutParams.FILL_PARENT); ParameterTableRow_title.setMargins(1, 1, 1, 1); TextView TextView TextView TextView
text_v1 text_v2 text_v3 text_v4
= = = =
new new new new
TextView(this); TextView(this); TextView(this); TextView(this);
text_v1.setText(bin[i]); text_v2.setText(dan[i]); text_v3.setText(panah[i]); text_v4.setText(pagar[i]); // UI text_v1.setPadding(2, 5, 2, 5); text_v1.setBackgroundColor(Color.DKGRAY); text_v1.setTextColor(Color.WHITE); text_v1.setGravity(Gravity.CENTER); text_v1.setTextSize(14.0f); // text_v2.setPadding(2, 5, 2, 5); text_v2.setBackgroundColor(Color.DKGRAY); text_v2.setTextColor(Color.WHITE); text_v2.setGravity(Gravity.CENTER); text_v2.setTextSize(12.0f); text_v3.setPadding(2, 5, 2, 5); text_v3.setBackgroundColor(Color.DKGRAY); text_v3.setTextColor(Color.WHITE); text_v3.setGravity(Gravity.CENTER); text_v3.setTextSize(12.0f); text_v4.setPadding(2, 5, 2, 5); text_v4.setBackgroundColor(Color.DKGRAY); text_v4.setTextColor(Color.WHITE); text_v4.setGravity(Gravity.CENTER); text_v4.setTextSize(10.0f); tbrow.addView(text_v1, ParameterTableRow_title); tbrow.addView(text_v2, ParameterTableRow_title);
93
tbrow.addView(text_v3, ParameterTableRow_title); tbrow.addView(text_v4, ParameterTableRow_title); tabelKota.addView(tbrow); }
} catch (Exception e) { // Toast.makeText(this, "Terjadi Kesalahan: " + e,Toast.LENGTH_LONG).show(); } }
public void hapusTabel() { TableRow tbrow = new TableRow(this);// wajib tabelKota.removeAllViews(); tabelKode.removeAllViews(); } public void aksiCari(View view) {// button refresh Editable cari = isiCari.getText(); String pesan = isiCari.getText().toString(); buatTabelKode(pesan); } public void onItemSelected(AdapterView parent, View v, int position, long id) { isi = array_spinner[position]; buatTabelKota(isi); } public void onNothingSelected(AdapterView> arg0) { // TODO Auto-generated method stub }
public String[] s(String d) { String date = d; String a[] = date.split("#");
94
return a; } public String[] persen(String d) { String date = d; String a[] = date.split("%"); return a; } public String[] bintang(String d) { String date = d; String a[] = date.split(" "); return a; } public String[] dan(String d) { String date = d; String a[] = date.split("&"); return a; } public String[] panah(String d) { String date = d; String a[] = date.split(">"); return a; } public String[] pagar(String d) { String date = d; String a[] = date.split("#"); return a; }
}