8
BAB II
LANDASAN TEORI
2.1 ADS-B
Automatic Dependent Surveillance Broadcast (ADS-B) adalah teknologi
pengamatan (surveillance) yang digunakan untuk memberikan informasi posisi
pesawat di udara. Pesawat dilengkapi dengan sebuah transponder ADS-B yang
berfungsi untuk mengirimkan informasi secara terus-menerus ke ADS-B receiver
yang ada di darat (ADS-B Ground Station). Data ini dipakai untuk menampilkan
posisi pesawat secara visual dan informasi lainnya seperti ketinggian, kecepatan,
identifikasi pesawat. Selain itu sistem ADS-B memberi keuntungan dibandingkan
dengan sistem radar seperti pembaharuan data yang lebih sering dan data pesawat
yang potensial seperti update cuaca, tujuan pesawat dan data avionic. ADS-B kalau
diartikan per kata artinya sbb:
Automatic : pekerjaannya tidak diintervensi oleh manusia
Dependent : hasil pengamatan tidak ditentukan oleh pengamat tetapi
yang memberikan pengamatan adalah objek tersebut.
Surveillance : data yang masuk berupa posisi, ketinggian, kecepatan,
arah, dan lain-lain
Broadcast : pengiriman tanpa external trigger yang memiliki spesifik
address.
Keunggulan Sistem ADS-B seperti mengurangi kepadatan komunikasi,
memberikan keselamatan dan kewaspadaan pada penerbang, mengurangi penundaan
9
taxi atau take off dan mengurangi biaya. Seperti terlihat pada gambar 2.1 dibawah,
pesawat dilengkapi dengan MOD-S Transponder yang akan menerima data lokasi
dari GNSS (Global Navigation Satellite System), kemudian akan mengirim data-data
tersebut ke ADS-B Receiver atau ADS-B Ground Station. Format data dari pesawat
ke ADS-B Receiver disebut dengan data MOD-S sedangkan data yang dikirim dari
ADS-B Receiver ke ATC adalah data dengan format Asterix-21. Semua standard
yang digunakan sudah diatur oleh ICAO (International Civil Aviation Organization).
Gambar 2.1 Sistem ADS-B
Asterix‐21
10
ADS-B saat ini di wilayah Indonesia timur telah di pasang 11 ADS-B Ground
Station dan 9 ADS-B Ground Station datanya telah dikirim ke MATSC (Makassar
Air Traffic Service Center) dan sudah masuk ke RCMS (Remote Control and
Monitoring System) ADS-B MATSC. Sedangkan dua ADS-B ground station yaitu
Kupang dan Merauke datanya belum masuk ke MATSC. Ke sembilan ADS-B yang
sudah masuk ke RCMS MATSC tersebut adalah : Malino, Sorong, Pangkalan Bun,
Palu, Kintamani, Waingapu, Alor, Ambon dan Saumlaki. Lokasi ADS-B Ground
Station di wilayah Indonesia seperti terlihat pada gambar 2.2 dibawah.
Gambar 2.2. Lokasi ADS-B Ground Station di Wilayah Indonesia
2.2 Konkurensi
Pada prosesor tunggal beberapa proses akan dieksekusi secara bergilir
berdasarkan waktu yang disebut waktu Quantum. Pada sistem konkurensi seperti ini
11
sebenarnya tidak terjadi pengolahan secara paralel dan akan muncul sejumlah
overhead yang terjadi dalam peralihan dari satu proses ke proses yang lainnya.
Eksekusi secara konkuren dapat memberikan keuntungan yang penting dalam
mencapai efisiensi pengolahan dan dalam penstrukturan program (Stalings, 2003,
p181). Pada gambar 2.3 digambarkan bagaimana proses dijalankan secara simultan.
Gambar 2.3 Interleaving ( pada prosesor tunggal )
2.2.1 Multi Proses
Proses adalah sebuah instant dari program yang dieksekusi. Perbedaan antara
program dan proses adalah program merupakan entitas pasif atau lebih sering dikenal
dengan file yang siap dieksekusi (executable file), sedangkan proses adalah entitas
aktif dengan program counter yang menspesifikasikan instruksi berikut yang akan
dieksekusi dan sumber daya yang diasosiasikan. Secara konsep setiap proses
memiliki virtual CPU masing-masing. Tetapi pada kenyataannya CPU sebenarnya
mengolah secara bergantian dari satu proses ke proses yang lain. Terkadang beberapa
orang menyebutnya adalah pseudoparallelism (Tanenbaum, 2009, p82).
12
Sistem operasi mendukung multitasking yang mampu mengelola dan
mengontrol lebih dari satu proses. Dalam proses pengelolaannya sistem operasi
tersebut melakukan penjadwalan proses. Kadang kadang beberapa proses
membutuhkan interaksi dengan proses yang lain. Proses mungkin membuat suatu
output yang digunakan proses lain sebagai input.
Ketika proses di-block dikarenakan secara logika proses tersebut tidak dapat
dilanjutkan, yang biasanya disebabkan karena menunggu input yang tidak tersedia.
Terdapat juga kemungkinan untuk proses yang sudah ready dan siap dijalankan untuk
dihentikan karena Sistem Operasi memutuskan untuk mengalokasikan CPU untuk
proses yang lain untuk sementara (Tanenbaum, 2009, p88). Pada gambar 2.4
ditunjukkan state diagram yang menggambarkan tiga state yang dimiliki oleh proses.
Running
Blocked Ready
1
3
4
2
Gambar 2.4 Status Proses
Pada gambar 2.4 anak panah menunjukkan transisi antara state pada proses.
Berikut adalah deskripsi dari masing-masing transisi :
1. Proses diblok hingga mendapatkan input.
2. Scheduler mengambil proses yang lain.
3. Scheduler menjalankan proses.
13
4. Input sudah dimasukkan, sehingga proses siap untuk dijalankan.
Routine1 var1()var2()
Main()routine1()routine2()
ArrayAArrayB
Stack
Text
Heap
Data
User Address Space
Stack Pointer Prgm. Counter
Registers
Process IDGroup IDUser ID
File LocksSockets
Gambar 2.5 Skema umum sebuah proses
Bila dilihat dari sudut pandang sistem operasi, sebuah proses memiliki sifat-
sifat sebagai berikut (Stallings, 2003, p140) :
1. Setiap proses memiliki user address space. User address space proses
terdiri atas segmen text, segmen data, segmen stack, dan segmen heap.
2. Sebuah proses memiliki sebuah image dari kode-kode biner sebuah
perangkat lunak yang akan dieksekusi. Image tersebut tersimpan pada
segmen text pada user address space milik proses
3. Sebuah proses memiliki variable global yang tersimpan pada segmen
data.
14
4. Sebuah proses memiliki jatah memori yang bersifat privat yang dapat
dialokasikan untuk kebutuhan melacak subrutin yang aktif dan
menyimpan data temporer di segmen stack dan untuk menyimpan data
yang teralokasi pada saat runtime di segmen heap. Memori yang
disediakan dapat berupa memori virtual maupun nyata.
5. Sebuah proses memiliki descriptor sumber daya yang dimiliki seperti
deskriptor file, deskriptor socket, deskriptor shared memory, dll.
6. Sebuah proses memiliki atribut keamanan yang diberikan oleh system
operasi pada saat proses berjalan seperti pemilik proses, identifikasi
proses (pid), dll.
7. Sebuah proses memiliki status proses, yaitu penanda bahwa proses
terdapat di register system operasi bila proses aktif, atau di memori sistem
bila proses tidak aktif.
8. Proses dapat melakukan komunikasi dan sharing resource dengan proses
lain dalam komputer yang sama dengan menggunakan mekanisme
komunikasi antar proses namun menyebabkan perlunya mekanisme
sinkronisasi proses.
Dalam lingkungan sistem operasi multitasking dikenal adanya istilah proses
orang tua dan proses anak. Sebuah proses tidak dapat hidup dengan sendirinya,
melainkan membutuhkan sebuah proses orang tua yang akan membangkitkan proses
anak. Sebuah proses utama dibangkitkan pertama kali oleh mekanisme hardware pada
saat sistem operasi hidup. Proses utama tersebut bertanggung jawab membangkitkan
15
proses-proses lainnya. Pada varian Unix (termasuk Linux), proses utama tersebut
disebut dengan init. Init merupakan orang tua dari semua proses, tercipta pada saat
terciptanya kernel sistem operasi. Sedangkan pada sistem operasi Windows 32 bit,
proses utama tersebut dikenal dengan System32.
2.2.2 Multi Thread
Pada Sistem Operasi tradisional setiap proses memiliki sebuah alamat memori
dan sebuah thread. Pada kenyataannya itu adalah definisi dari proses itu sendiri.
Terdapat beberapa situasi dibutuhkan beberapa thread dalam alamat memori yang
sama (Tanenbaum, 2009, p93). Sebuah thread adalah sebuah unit dasar utilisasi
prosesor (CPU). Sebuah thread memiliki threaded, program counter, satu set register,
dan sebuah stack. Sebuah thread berbagi pakai segmen kode, segmen data, sumber
daya sistem operasi (file dan signal) dengan thread lain dalam satu proses yang sama.
Bila sebuah proses memiliki banyak thread, proses tersebut dapat melakukan lebih
dari satu tugas pada satu waktu (Silberschatz, 2005)
16
Gambar 2.6 Skema umum thread
Satu cara untuk membedakan proses dan thread adalah proses memiliki alamat
memori mengandung program teks dan data beserta sumber daya yang lain. Dengan
menggabungkan semua maka terbentuklah sebuah proses agar sumber daya yang
dapat di manajemen lebih mudah. Sedangkan konsep yang lain adalah sebuah proses
memiliki thread of execution, yang biasanya disingkat menjadi thread. Thread
memiliki program counter yang mengatur intruksi yang dieksekusi berikutnya.
Thread memiliki register yang menyimpan variable yang dikerjakan. Thread memiliki
stack yang berisi histori dari eksekusi. Meskipun thread harus dieksekusi didalam
proses tetapi proses dan thread memiliki konsep yang berbeda. Proses digunakan
17
menggabungkan sumber daya sedangkan thread adalah entitas yang melakukan
penjadwalan untuk eksekusi yang dilakukan oleh CPU (Tanenbaum, 2009, p98-99).
Sistem operasi komputer modern memungkinkan berjalannya lebih dari satu
thread pada sebuah proses pada waktu yang bersamaan. Walaupun secara logika
beberapa thread dapat berjalan pada saat yang bersamaan, namun pada prakteknya,
sebuah CPU hanya mampu menangani satu buah thread saja. Thread lain harus
mengantri untuk mendapatkan giliran.
2.2.3 Pemrograman Konkuren
Program konkuren adalah dua atau lebih program sekuensial yang mungkin
dieksekusi secara bersama-sama sebagai proses paralel. Sedangkan pemrograman
konkuren adalah proses memrogram dua atau lebih kode agar kode-kode tersebut
dapat dieksekusi pada saat yang bersamaan.
Jika kode program yang hendak dieksekusi secara simultan berada di
beberapa komputer disebut distributed computing. Jika kode program berada di
komputer yang sama disebut single computing, yang memanfaatkan fasilitas
konkurensi semu pada sistem operasi. Pemrograman konkuren dalam single
computing dapat diterapkan menjadi pemrograman multiproses dan pemrograman
multithread.
2.2.4 Pemrograman Multi Proses
Untuk menciptakan sebuah proses anak pada sistem operasi Unix digunakan
18
system call fork(), kemudian menyalin semua sumber daya proses orang tua (parent
process) kepada proses baru tersebut, proses anak (child process) yang telah
terciptakan dapat digunakan untuk mengeksekusi baris-baris kode perangkat lunak
lainnya.
Sedangkan dalam Sistem Operasi Windows, system call yang bersesuaian
adalah CreateProcess(), walaupun terdapat sedikit perbedaan diantara keduanya
yaitu: bila pada Sistem Operasi Linux bila proses orang tua (parent process) mati
maka proses anak akan tetap hidup dan memiliki proses orang tua yang disebut
dengan init, sedangkan pada sistem operasi Windows, bila proses orang tua mati
maka proses anak akan mati.
Agar suatu proses dapat berkomunikasi dengan proses yang lain diperlukan
mekanisme komunikasi antar proses / Inter Process Communication (IPC). IPC dapat
berupa mengakses file bersama-sama, menggunakan shared memory, menggunakan
pipe atau menggunakan socket.
2.2.5 Pemrograman Multi Thread
Multithread berkaitan dengan kemampuan sistem operasi untuk mendukung
sejumlah thread dieksekusi di dalam sebuah proses tunggal. Pada Windows
mendukung multithread jadi main thread dapat membuat lebih dari satu thread dalam
proses yang sama. Thread-thread ini dijalankan pada memori yang sama dengan main
thread. Pada .NET framework terdapat konsep proses yang dikenal dengan
AppDomain. Setiap AppDomain diisolasi dalam memori tertentu dan code yang
19
dijalankan di satu AppDomain tidak dapat diakses oleh AppDomain yang lain (Evjen,
2008, p1047).
Dalam pemrograman multithread terdapat tahapan-tahapan yang berhubungan
dengan status thread yang dikelola. Contoh tahapan-tahapan untuk kasus dua thread
yang berjalan bersama-sama (konkuren), kemudian di tengah perjalanan salah satu
thread menunggu thread lainnya selesai, dapat dilihat pada tabel 2.1
Tabel 2.1 - Contoh Tahapan-Tahapan Untuk Kasus Dua Thread
No. Thread Utama1. Thread utama membuat dan menjalankan 2 buah thread. Thread utama aktif Thread 1 Thread 2
2. Thread 1 melakukan proses pembuatan (Create).
Thread 2 melakukan proses pembuatan (Create).
3. Thread 1 melakukan proses Join terhadap thread 2, thread 1 menunggu hingga thread 2 selesai
Thread 2 Aktif
4. Thread 2 selesai, memberitahukan ke thread 1 bahwa telah selesai.
Thread 1 menerima pemberitahuan thread 2 bahwa telah selesai, thread 1 kembali aktif.
5. Thread 1 selesai
2.2.6 Sinkronisasi Multi Thread
Pemrograman multithread membutuhkan sebuah mekanisme sinkronisasi
antar thread. Sinkronisasi dibutuhkan untuk mencegah dua buah thread mengakses
data atau sumber daya kritis pada saat yang bersamaan. Ada beberapa mekanisme
sinkronisasi multithread seperti mutex, semaphore, variable condition, dll.
20
Mekanisme yang sering digunakan karena lebih sederhana adalah mutex. Mutex baik
digunakan untuk menjamin mutual exclusion untuk beberapa sumber daya yang
dibagi atau bagian dari code. Mutex mudah dan efisien untuk di implementasikan,
terutama untuk multithread yang diimplementasikan pada proses yang sama
(Tanenbaum, 2009, p129).
Mutex adalah sebuah variable yang hanya memiliki dua kondisi yaitu:
unlocked atau locked. Oleh karena itu hanya 1 bit yang dibutuhkan untuk
menampung mutex, tetapi pada implementasi sering digunakan integer, dimana 0
berarti unlocked dan nilai yang lain berarti locked. Ketika sebuah thread melakukan
akses ke critical region, prosedur tersebut memanggil mutex_lock (Pada .NET
framework dikenal dengan WaitOne()). Jika mutex sedang unlocked, maka thread
yang memanggil mutex dapat memasuki critical region. Sebaliknya jika mutex dalam
keadaaan locked, thread yang memanggil harus menunggu hingga mutex dalam
kondisi unlocked. Pada tabel 2.2 digambarkan bagaimana sinkronisasi antar dua
thread pada pemrograman multithread.
Tabel 2.2 - Contoh Sinkronisasi Antar Dua thread
No. Thread Utama 1. Thread utama aktif, Thread utama membuat sebuah objek mutex yang akan
dipakai bersama-sama oleh semua thread. Thread utama membuat dan menjalankan 2 buah thread
Thread 1 Mutex Thread 2 2. Thread 1 aktif Thread 2 Aktif 3. Thread 1 melakukan
proses Lock terhadap mutex.
Dipegang Thread 1 (Locked)
Thread 2 Aktif
4. Thread 1 Aktif Dipegang Thread 1 (Locked)
Thread 2 ingin mengakses Critical Region tetapi mutex statusnya Locked
21
maka thread 2 harus menunggu.
5. Thread 1 melakukan proses Unlock terhadap mutex dan keluar dari Critical Region
Thread 2 mengakses Critical Region
6. Dipegang Thread 2 (Locked)
Thread 2 melakukan proses Lock terhadap mutex. Thread 2 aktif
7. Thread 1 selesai Thread 1 melakukan proses Unlock terhadap mutex dan keluar dari Critical Region. Thread 2 selesai
8. Thread utama menghapus objek mutex
2.3 Pemrograman Socket
Socket adalah mekanisme komunikasi yang memungkinkan terjadinya
pertukaran data antar program atau proses baik dalam satu mesin maupun antar
mesin. Gaya pemrograman socket sendiri berawal dari sistem Unix BSD yang
terkenal dengan kepeloporannya pada bidang penanganan jaringan, sehingga sering
disebut BSD Socket. Socket pertama kali diperkenalkan di sistem Unix BSD versi 4.2
tahun 1983 sebagai kelanjutan dari implementasi protocol TCP/IP yang muncul
pertama kali pada sistem Unix BSD 4.1 pada akhir 1981. Hampir setiap varian Unix
dan Linux mengadopsi BSD socket.
Linux menggunakan paradigm open-read-write-close. Sebagai contoh, suatu
aplikasi pertama harus memanggil open untuk menyiapkan file yang akan diakses,
kemudian aplikasi tersebut memanggil read atau write untuk membaca data dari pada
file atau menuliskan data ke file. Setelah itu close dijalankan untuk mengakhiri
22
aplikasi yang digunakan. Model InterProcess Communication (IPC) dengan
menggunakan socket bisa dilihat dalam gambar 2.7 dibawah.
Gambar 2.7 Model IPC dengan soket
2.3.1 Model Aplikasi Client Server
Model aplikasi yang menggunakan komunikasi soket dengan protokol TCP
digambarkan pada gambar 2.8, socket pada sisi client dan server berbeda sedikit.
Pada sisi server suatu soket server akan dibentuk dan kemudian dilakukan operasi
bind untuk membuat socket memiliki alamat yang unik. Pada bind ini diperlukan
nomor Port dan alamat IP kemudian baru server melakukan operasi listen. Operasi ini
pada intinya menunggu permintaan koneksi dari sisi client. Sedangkan pada sisi client
akan dibentuk suatu soket biasa atau sering disebut dengan socket data. Pada soket
client informasi alamat soket server dilewatkan sebagai argumen dan soket client
akan otomatis mencoba meminta koneksi ke soket server. Pada saat permintaan
koneksi client sampai pada server, maka server akan membuat suatu soket biasa
dengan operasi accept. Soket ini yang nantinya akan berkomunikasi dengan soket
23
pada sisi client. Setelah itu soket server dapat kembali melakukan listen untuk
menunggu permintaan koneksi dari client lainnya, jika aplikasi server
mengimplementasikan multithreading atau multiprocess. Setelah tercipta koneksi
antara client dan server, maka keduanya dapat saling bertukar pesan. Salah satu atau
keduanya kemudian dapat mengakhiri komunikasi dengan menutup soket.
Gambar 2.8 Model Aplikasi Client / Server pada protokol TCP
Didalam bahasa pemrograman umumnya sudah disediakan API (Application Program
Interface) untuk menggunakan socket. Pada gambar 2.8 diatas adalah contoh model
aplikasi Client Server dengan menggunakan bahasa C di Linux. Di dalam kotak
menunjukkan system call yang dibutuhkan untuk membuat aplikasi client server
dengan menggunakan socket, seperti socket(), bind (), listen(), connect(). Secara garis
besar langkah – langkah yang dilakukan pada client dan server adalah sebagai
berikut:
24
1. Langkah – langkah dasar di client :
a) Membuka koneksi client ke server, yang di dalamnya adalah:
• Membuat socket dengan perintah socket()
• Melakukan koneksi dengan server dengan perintah connect()
b) Melakukan komunikasi (mengirim dan menerima data) dengan
menggunakan perintah write() dan read().
c) Menutup hubungan dengan perintah close().
2. Langkah – langkah dasar di server :
a) Membuat socket dengan perintah socket()
b) Mengikat socket kepada sebuah alamat network dengan perintah bind()
c) Menyiapkan socket untuk menerima koneksi yang masuk ke server dengan
perintah listen()
d) Menerima koneksi yang masuk ke server dengan perintah accept()
e) Melakukan komunikasi (mengirim dan menerima data), dengan
menggunakan perintah write() dan read()
f) Menutup hubungan dengan perintah close().
2.4 Format Data Asterix
Asterix (All purpose STructured Eurocontrol suRveillance Information
eXchange) adalah standar untuk pertukaran informasi pada Air Traffic Control
(ATC). Asterix ini dibuat oleh European ATC organization Eurocontrol. Asterix
25
dapat dikategorikan dalam beberapa kategori, masing-masing kategori dapat
memberikan informasi tertentu. Asterix yang dikirimkan adalah kumpulan bytes,
sehingga pada saat yang bersamaan dapat mengirimkan lebih dari satu buah data
berformat Asterix. Byte pertama pada pembungkus data Asterix adalah kategori dari
Asterix tersebut, kemudian byte kedua dan ketiga memberikan informasi panjang dari
keseluruhan paket yang dikirimkan. Data berikutnya adalah data Record-1 sampai
data Record-n. Setiap record diawali dengan FSPEC (Field Specification) yang
menentukan jumlah data field yang dikirim.
Gambar 2.9 Data Block Structure
2.4.1 Struktur Data Asterix
Data Field adalah sebuah slot yang berisi sebuah data (kumpulan byte) yang
memiliki arti semantik yang bergantung tipe data field tersebut. Sebuah slot data field
dapat berupa 5 kemungkinan tipe data field yaitu : Fixed length data field, Extended
26
length data field, Field Specification data field, Repetitive Data Field dan Compound
Data. Selain fixed length data field, data field lain berisi lebih dari satu buah data
field, sehingga memungkinkan terjadinya rekursi. Dimana didalam sebuah data field
terdapat data field yang lain.
2.4.1.1 Fixed Length Data Field
Fixed length data field adalah sebuah data field dimana panjang byte-nya
sudah ditetapkan oleh Eurocontrol. Contohnya adalah "Position co-ordinates"
memiliki panjang 8 byte dimana 4 byte pertama sebagai latitude dan 4 byte
selanjutnya sebagai longitude. Format position yang ditampilkan dalam format WGS-
84.
2.4.1.2 Extended Length Data Field
Extended length data field adalah sebuah field dimana panjang byte-nya
tidak ditetapkan. Untuk menentukan byte selanjutnya dengan melihat bit terakhir
pada data field. Bila bit terakhir bernilai 1 maka byte selanjutnya merupakan satu
kesatuan, sebaliknya bila bernilai 0 maka itu merupakan akhir dari data field.
2.4.1.3 Field Specification Data Field
Field specification data field adalah sebuah data yang berisi lebih dari satu
buah data field tidak sejenis. Keterurutan data field di dalamnya telah diterapkan oleh
spesifikasi Asterix, namun tidak semua data field selalu aktif (berisi nilai 1), untuk
menghemat ruang, data field yang tidak perlu dianggap tidak aktif.
27
Untuk menentukan data fields yang aktif digunakan sebuah field
specification yang terletak di byte-byte awal. Field Specification adalah daftar isi data
field yang aktif yang merupakan sebuah kumpulan (array) bit-bit biner. Bit ke-n
menunjukkan status keberadaan data field ke-n, bila bit tersebut bernilai 1, maka
dalam pesan tersebut terdapat data untuk data field ke-n. Bit ke-8 pada setiap byte
menyatakan bila bit tersebut bernilai 1, maka byte berikutnya masih merupakan field
spesification, namun bila bit tersebut bernilai 0, maka byte tersebut merupakan akhir
dari field specification dan byte berikutnya merupakan data field pertama. Sebuah
record Asterix merupakan sebuah field specification field.
28
Gambar 2.10 Struktur FSPEC dan Contoh Isi Data FSPEC
29
2.4.1.4 Repetitive Data Field
Repetitive data field adalah sebuah data field yang berisi n buah data field
sejenis. Nilai n tersebut tersimpan pada byte awal dari repetitive data field.
Gambar 2.11 Standard Data Fields Types
2.4.1.5 Compound Data Field
Tipe compound data field ini sama dengan tipe field specification hanya saja
compound data field terdapat pada data field, sedangkan field specification selalu ada
30
pada setiap record data Asterix. Contoh compound data field seperti terlihat pada
gambar 2.12 dibawah.
Gambar 2.12 Compound Data Field Type
2.5 Tipe Data Asterix-21
Pada format Asterix-21 byte pertama selalu berisi data 21, kemudian diikuti 2
byte berikutnya yang menyatakan panjang keseluruhan data dari byte pertama sampai
byte terakhir. Byte ke-empat merupakan Field Specification Data Field yang
31
panjangnya tidak tetap, field ini yang menentukan ketersediaan data field yang lain.
Pada tabel dibawah ini merupakan informasi-informasi yang diberikan oleh Asterix-
21 versi 0.26.
Nilai FRN (Field Refference Number) ditentukan oleh nilai FSPEC
(perhatikan gambar 2.10 ) diatas, dan jika bernilai 1 berarti data item yang ditunjuk
oleh FRN tersebut ada dalam paket data Asterix-21.
Tabel 2.3 - Asterix-21
32
Gambar 2.13 Contoh Data Item
2.5.1 Contoh Data Asterix
Berikut dibawah ini adalah contoh satu record data dengan format Asterix-21 versi 0.26. dalam satuan heksadesimal. 15 00 2B FB A3 51 02 00 00 00 20 25 90 83 FF EE 5D 87 01 2E EF 72 8A 18 20 00 06 08 00 58 00 00 03 2E 30 E0 00 00 00 00 00 00 00 Arti dari data tersebut adalah sbb: 15 => bilangan decimalnya 21, yang menunjukkan Data Category = 021 (Asterix-21) 00 2B => bilangan decimalnya 43, yang menunjukkan bahwa panjang data (LEN) 43 oktet FB A3 51 02 => FSPEC menentukan isi FRN nya seperti tabel dibawah. Kemudia FRN1 menunjuk ke DataItem-1, FRN2 menunjuk ke DataItem-2, dst.
Tabel 2.4 - Isi FSPEC Bit Number Nilai Biner FRN Bit Number Nilai Biner FRN
1 1 FRN 1 8 1 FRN 8 2 1 FRN 2 9 0 - 3 1 FRN 3 10 1 FRN 10 4 1 FRN 4 11 0 - 5 1 FRN 5 12 0 - 6 0 - 13 0 - 7 1 FRN 7 14 1 FRN 14
FX 1 FX FX 1 FX 15 0 - 22 0 - 16 1 FRN 16 23 0 - 17 0 - 24 0 - 18 1 FRN 18 25 0 - 19 0 - 26 0 -
33
20 0 - 27 0 - 21 0 - 28 1 FRN 28 FX 1 FX FX 0
2.6 Sistem Informasi Geografis
Sistem Informasi Geografi (SIG) merupakan kombinasi perangkat keras dan
perangkat lunak komputer yang memungkinkan untuk mengelola, memtakan
informasi spasial berikut data attributnya dengan akurasi kartografi. Alasan SIG
dibutuhkan adalah karena untuk data spasial penanganannya sangat sulit terutama
karena peta dan data statistic cepat kadaluarsa sehingga tidak ada pelayanan
penyediaan data dan informasi yang diberikan menjadi tidak akurat (Charter, 2003,
p6-7). Berikut adalah dua keistimewaan analisa melalui Geographical Information
System (GIS), yaitu :
Analisa Proximity
Analisa proximity merupakan suatu analisa geografi yang berbasis pada jarak
antar layer. Dalam analisis proximity SIG menggunakan proses yang disebut
dengan buffering (membangun lapisan pendukung sekitar layer dalam jarak
tertentu untuk menentukan dekatnya hubungan antara sifat bagian yang ada.
Analisa Overlay
Proses integrasi data dari lapisan-lapisan layer yang berbeda disebut dengan
overlay. Secara analisa membutuhkan lebih dari satu layer yang akan
ditumpang susun secara fisik agar bisa dianalisa secara visual.
34
2.6.1 Komponen Sistem Informasi Geografis
Komponen-komponen SIG terdiri dari :
Hardware
SIG membutuhkan komputer untuk penyimpanan dan pemrosesan data.
Ukuran dari sistem komputerisasi bergantung pada tipe SIG itu sendiri.
SIG dengan skala yang lebih kecil hanya membutuhkan PC (personal
computer) yang kecil pula untuk menjalankannya, namun ketika sistem
menjadi besar, dibutuhkan pula komputer yang lebih besar serta host untuk
client machine yang mendukung penggunaan multiple user (Charter, 2003,
p9).
Perangkat Lunak
Sebuah perangkat lunak GIS haruslah menyediakan fungsi dan tool yang
mampu melakukan penyimpanan data, analisis dan menampilkan informasi
geografis. Sebagai inti dari sistem SIG adalah perangkat lunak dari SIG itu
sendiri yang menyediakan fungsi-fungsi untuk penyimpanan, pengaturan,
link, queri, dan analisa data geografi(Charter, 2003, p10).
Data
Data dalam SIG dibagi atas dua bentuk, yakni data spasial dan data
aspasial. Data spasial adalah data yang terdiri atas lokasi eksplisit suatu
grografi yang diset ke dalam bentuk koordinat. Data aspasial adalah
gambaran data yang terdiri atas informasi yang relevan terhadap suatu
lokasi, seperti kedalama, ketinggian, lokasi penjualan, dan lain-lain dan
35
bisa dihubngkan dengan lokasi tertentu dengan maksud untuk memberikan
identifikasi (Charter, 2003, p10).
Metode
SIG yang baik memiliki keserasian antara rencana desain yang baik dan
aturan dunia nyata, yaitu metode, model dan implementasi akan berbeda-
beda untuk setiap permasalahan. Pada beberapa organisasi penggunaan SIG
dapat dalam bentuk dan standar tersendiri untuk metode analisisnya
(Charter, 2003, p11).
2.6.2 MapWindow
MapWindow adalah aplikasi SIG yang bersifat open source, dan distribusi
MapWindow berdasarkan Mozilla Public License. MapWindow dapat diprogram
ulang untuk fungsi-fungsi khusus dan juga disediakan beberapa plug-in yang dapat
diintegrasikan dengan .NET Framework. Map Window bisa digunakan antara lain :
1. Sebagai salah satu alternatif pengolah data sistem informasi geografis.
2. Untuk mendistribusikan data-data geografis.
3. Untuk mengembangkan dan mendistribusikan hasil dari analisis data spasial.
Kelebihan Mapwindow antara lain :
Mapwindow bukan hanya digunakan untuk menampilkan data SIG, tetapi
juga sebagai sistem informasi geografis yang dapat dikembangkan.
Mapwindow memiliki visualisasi data SIG yang standar seperti mengubah
tabel DBF, mengubah bentuk file, dan mengirim serta mengubah Grid.
36
Mapwindow dapat didistribusikan secara Gratis.
Mapwindow mudah digunakan bila dibanding dengan apliksi SIG lainnya.
Kekurangan Mapwindow antara lain :
Mapwindow tidak kompatibel pada semua Sistem operasi, pada sistem
operasi tertentu, mapwindow tidak dapat dijalankan.
MapWindow GIS sepertinya pada suatu saat nanti akan mampu mengungguli
ArcView, sebab MapWindow GIS juga menyediakan fasilitas scripting seperti halnya
Script Avenue. Fasilitas scripting dalam aplikasi GIS adalah suatu hal yang luar
biasa, sebab dengan fasilitas ini akan memudahkan bagi para developer ataupun
pengguna untuk membuat sebuah plugin/ekstension tambahan untuk mempermudah
kerja mereka. MapWindow sudah mampu menggantikan keberadaan MapObjects
dalam membuat sebuah aplikasi GIS. MapObjects dapat digantikan oleh MapWinGIS
ActiveX atau MapWinGIS.NET.
2.7 SDLC
System Development Life Cycle atau yang selanjutnya disebut dengan SDLC
merupakan proses pembuatan dan pengubahan sistem serta model dan metodologi
yang digunakan untuk mengembangkan sistem-sistem tersebut. Konsep ini umumnya
merujuk pada sistem komputer atau informasi. Dalam rekayasa perangkat lunak,
konsep SDLC mendasari berbagai jenis metodologi pengembangan perangkat lunak.
Metodologi-metodologi ini membentuk suatu kerangka kerja untuk perencanaan dan
pengendalian proses pengembangan perangkat lunak.
37
Beberapa langkah SDLC adalah : (Hughes & Cotterell, 2006, p6-7)
Requirement analysis. Dimulai dengan mencari tahu apa yang dibutuhkan
oleh user pada sistem yang ingin dibuat.
Architecture design. Tahap ini memetakan kebutuhan ke komponen-
komponen yang akan dibuat pada sistem. Pada level sistem, keputusan
perlu dibuat untuk mengetahui proses mana yang akan dilakukan oleh user
dan yang dapat dikomputerisasi.
Detailed design. Setiap komponen software dibuat dari beberapa unit
software yang dapat diprogram dan di test secara terpisah.
Code and test. Pada tahap ini, setiap unit software diubah ke dalam bahasa
mesin melalui proses coding. Testing awal dilakukan untuk memastikan
kerja setiap unit software dilakukan tahap ini.
Integration. Masing-masing komponen akan dikumpulkan menjadi satu
dan ditest untuk melihat apakah keseluruhan komponen tersebut telah
memenuhi kebutuhan.
Qualification testing. Test akan dilakukan terhadap sistem yang baru untuk
memastikan bahwa semua kebutuhan telah terpenuhi.
Installation. Tahap ini merupakan proses untuk membuat sistem yang baru
beroperasi secara baik pada lingkungan user. Proses ini termasuk
menginstall software pada hardware platform user, melakukan setting pada
parameter sistem, dan pelatihan kepada user.
38
Acceptance support. Aktifitas dalam tahap ini termasuk menyelesaikan
masalah-masalah yang mungkin timbul pada sistem yang baru ataupun
melakukan penambahan fasilitas pada sistem yang baru
2.7.1 Metodologi Pengembangan Sistem
System Development Methodology adalah suatu rangkaian langkah untuk
mengimplementasikan SLDC itu sendiri. Dalam dunia rekayasa perangkat lunak
terdapat beberapa metodologi dalam menerapkan SLDC diantaranya :
1. Waterfall Development Methodology
2. Parallel Development Methodology
3. Rapid Application Development
4. Agile Development: Extreme Programming
Semua metodelogi mempunyai kelebihan dan kekurangan, tergantung pada kelompok
pengembang perangkat lunak menggunakan metode apa yang paling cocok dengan
kondisi lingkungan pengembangan perangkat lunak tersebut.
A. Waterfall Development Methodology
Waterfall Development Methodology merupakan suatu cara pengembangan
software yang fase – fasenya berurutan. Sebuah fase tidak bisa dikerjakan
sebelum fase sebelumnya telah selesai dikerjakan. Kelebihan dari Waterfall
Development Methodology adalah :
1. Proses pengidentifikasian sistem memerlukan waktu yang lama sebelum
fase programming dimulai.
39
2. Meminimalisasi pengubahan sistem pada saat proses pengembangan
perangkat lunak.
Kekurangan dari Waterfall Development Methodology adalah :
1. Fase perencanaan / design harus dilakukan pada paper yang khusus
sebelum fase programming dimulai.
2. Terjadi selisih waktu yang cukup lama antara pengajuan sistem dan
pembaharuan sistem.
B. Parallel Development Methodology
Parallel Development Methodology merupakan suatu cara pada SDLC yang
melakukan fase design dan implementation secara paralel. Kelebihan dari
Parallel Development Methodology adalah : Meminimalisasi waktu
penjadwalan dan Meminimalisasi kesempatan untuk dikerjakan ulang.
Kekurangan dari Parallel Development Methodology adalah : Masih
menggunakan dokument di kertas, dan pada saat menggabungkan subproyek
memerlukan suatu keahlian yang khusus, biasanya banyak terjadi kegagalan
pada saat proses penggabungannya
C. Rapid Application Development
Rapid Application Development merupakan suatu cara penerapan SDLC
dengan membuat suatu software prototype terlebih dahulu dan kemudian
dipresentasikan ke costumer. Jika costumer menyetujuinya, maka software
akan dikembangkan lebih lanjut. Kelebihan Rapid Application Development
40
adalah Pengguna dapat menggunakan sistem lebih awal dan juga pengguna
dapat merencanakan beberpa tambahan untuk versi setelahnya. Kekurangan
Rapid Application Development adalah pengguna bekerja dengan sistem yang
sebenarnya belum selesai secara keseluruhan
D. Agile Development: Extreme Programming
Agile Development: Extreme Programming merupakan suatu pengerjaan
perangkat lunak secara cepat. Metode ini sangat cocok untuk proyek
perangkat lunak yang membutuhkan waktu lebih instan dalam
pengembangannya. Kelebihan dari Agile Development: Extreme
Programming adalah :
1. Hasil bisa didapat dalam waktu yang sangat cepat.
2. Bekerja lebih baik dalam projek dengan tidak ada perubahan yang tak
tentu.
Kekurangan dari Agile Development: Extreme Programming adalah :
1. Membutuhkan kedisiplinan tinggi
2. Tepat hanya jika dilakukan di projek kecil
3. Membutuhkan lebih banyak inputan dari pengguna
2.7.2 UML
Saat ini piranti lunak semakin luas dan besar lingkupnya, sehingga tidak bisa
lagi dibuat asal-asalan. Piranti lunak saat ini seharusnya dirancang dengan
memperhatikan hal-hal seperti scalability, security, dan eksekusi yang robust
41
walaupun dalam kondisi yang sulit. Selain itu arsitekturnya harus didefinisikan
dengan jelas, agar bug mudah ditemukan dan diperbaiki, bahkan oleh orang lain
selain programmer aslinya. Keuntungan lain dari perencanaan arsitektur yang matang
adalah dimungkinkannya penggunaan kembali modul atau komponen untuk aplikasi
piranti lunak lain yang membutuhkan fungsionalitas yang sama.
Pemodelan (modeling) adalah proses merancang piranti lunak sebelum
melakukan pengkodean ( coding ). Model piranti lunak dapat dianalogikan seperti
pembuatan blueprint pada pembangunan gedung. Membuat model dari sebuah sistem
yang kompleks sangatlah penting karena kita tidak dapat memahami sistem semacam
itu secara menyeluruh. Semakin komplek sebuah sistem, semakin penting pula
penggunaan teknik pemodelan yang baik. Dengan menggunakan model, diharapkan
pengembangan piranti lunak dapat memenuhi semua kebutuhan pengguna dengan
lengkap dan tepat, termasuk faktor-faktor seperti scalability, robustness, security ,
dan sebagainya.
Kesuksesan suatu pemodelan piranti lunak ditentukan oleh tiga unsur, yang
kemudian terkenal dengan sebuan segitiga sukses ( the triangle for success ). Ketiga
unsur tersebut adalah metode pemodelan ( notation ), proses ( process ) dan tool yang
digunakan.
Memahami notasi pemodelan tanpa mengetahui cara pemakaian yang sebenarnya
(proses) akan membuat proyek gagal. Dan pemahaman terhadap metode pemodelan
dan proses disempurnakan dengan penggunaan tool yang tepat.
42
Unified Modelling Language (UML) adalah sebuah “bahasa” yg telah
menjadi standar dalam industri untuk visualisasi, merancang dan mendokumentasikan
sistem piranti lunak. UML menawarkan sebuah standar untuk merancang model
sebuah sistem. Dengan menggunakan UML kita dapat membuat model untuk semua
jenis aplikasi piranti lunak, dimana aplikasi tersebut dapat berjalan pada piranti keras,
sistem operasi dan jaringan apapun, serta ditulis dalam bahasa pemrograman apapun.
Tetapi karena UML juga menggunakan class dan operation dalam konsep dasarnya,
maka ia lebih cocok untuk penulisan piranti lunak dalam bahasa bahasa berorientasi
objek seperti C++, Java, C# atau VB.NET. Notasi UML merupakan sekumpulan
bentuk khusus untuk menggambarkan berbagai diagram piranti lunak. Setiap bentuk
memiliki makna tertentu, dan UML syntax mendefinisikan bagaimana bentuk-bentuk
tersebut dapat dikombinasikan. UML mendefinisikan diagram-diagram sebagai
berikut:
use case diagram
class diagram
statechart diagram
activity diagram
sequence diagram
collaboration diagram
component diagram
deployment diagram
43
• Diagram Use Case
Diagram Use case menggambarkan fungsionalitas yang diharapkan
dari sebuah sistem. Yang ditekankan adalah “apa” yang diperbuat sistem,
dan bukan “bagaimana”. Sebuah use case merepresentasikan sebuah
interaksi antara aktor dengan sistem. Use case merupakan sebuah pekerjaan
tertentu, misalnya login ke sistem, meng- create sebuah daftar belanja, dan
sebagainya. Seorang/sebuah aktor adalah sebuah entitas manusia atau mesin
yang berinteraksi dengan sistem untuk melakukan pekerjaan-pekerjaan
tertentu. Diagram Use case dapat membantu bila kita sedang menyusun
requirement sebuah sistem, mengkomunikasikan rancangan dengan klien,
dan merancang test case untuk semua fitur yang ada pada sistem. Sebuah use
case dapat meng- include fungsionalitas use case lain sebagai bagian dari
proses dalam dirinya. Secara umum diasumsikan bahwa use case yang di-
include akan dipanggil setiap kali use case yang meng- include dieksekusi
secara normal. Sebuah use case dapat di- include oleh lebih dari satu use
case lain, sehingga duplikasi fungsionalitas dapat dihindari dengan cara
menarik keluar fungsionalitas yang common . Sebuah use case juga dapat
meng- extend use case lain dengan behaviour -nya sendiri. Sementara
hubungan generalisasi antar use case menunjukkan bahwa use case yang
satu merupakan spesialisasi dari yang lain.
44
• Diagram Kelas (Class Diagram)
Class adalah sebuah spesifikasi yang jika diinstansiasi akan
menghasilkan sebuah objek dan merupakan inti dari pengembangan dan
desain berorientasi objek. Class menggambarkan keadaan (atribut/properti)
suatu sistem, sekaligus menawarkan layanan untuk memanipulasi keadaan
tersebut (metoda/fungsi). Class diagram menggambarkan struktur dan
deskripsi class, package dan objek beserta hubungan satu sama lain seperti
containment , pewarisan, asosiasi, dan lain-lain. Class memiliki tiga area
pokok :
1. Nama (dan stereotype)
2. Atribut
3. Metoda
Atribut dan metoda dapat memiliki salah satu sifat berikut :
• Private , tidak dapat dipanggil dari luar class yang bersangkutan
• Protected , hanya dapat dipanggil oleh class yang bersangkutan
dan anak-anak yang mewarisinya
• Public , dapat dipanggil oleh siapa saja
Class dapat merupakan implementasi dari sebuah interface , yaitu class
abstrak yang hanya memiliki metoda. Interface tidak dapat langsung
diinstansiasikan, tetapi harus diimplementasikan dahulu menjadi sebuah
class. Dengan demikian interface mendukung resolusi metoda pada saat run-
time. Sesuai dengan perkembangan class model, class dapat dikelompokkan
45
menjadi package . Kita juga dapat membuat diagram yang terdiri atas
package .
Hubungan Antar Class
1. Asosiasi, yaitu hubungan statis antar class . Umumnya
menggambarkan class yang memiliki atribut berupa class lain, atau
class yang harus mengetahui eksistensi class lain. Panah navigability
m enunjukkan arah query antar class .
2. Agregasi, yaitu hubungan yang menyatakan bagian (“terdiri atas..”).
3. Pewarisan, yaitu hubungan hirarkis antar class . Class dapat
diturunkan dari class lain dan mewarisi semua atribut dan metoda class
asalnya dan menambahkan fungsionalitas baru, sehingga ia disebut
anak dari class yang diwarisinya. Kebalikan dari pewarisan adalah
generalisasi.
4. Hubungan dinamis, yaitu rangkaian pesan ( message ) yang di- passing
dari satu class kepada class lain. Hubungan dinamis dapat
digambarkan dengan menggunakan sequence diagram yang akan
dijelaskan kemudian.
• Statechart Diagram
Statechart diagram menggambarkan transisi dan perubahan keadaan
(dari satu state ke state lainnya) suatu objek pada sistem sebagai akibat dari
46
stimuli yang diterima. Pada umumnya statechart diagram menggambarkan
class tertentu (satu class dapat memiliki lebih dari satu statechart diagram ).
Dalam UML, state digambarkan berbentuk segiempat dengan sudut
membulat dan memiliki nama sesuai kondisinya saat itu. Transisi antar state
umumnya memiliki kondisi guard yang merupakan syarat terjadinya transisi
yang bersangkutan, dituliskan dalam kurung siku. Action yang dilakukan
sebagai akibat dari event tertentu dituliskan dengan diawali garis miring.
Titik awal dan akhir digambarkan berbentuk lingkaran berwarna penuh dan
berwarna setengah.
• Activity Diagram Activity diagrams menggambarkan berbagai alir aktivitas dalam sistem
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. Activity diagram merupakan state diagram khusus, di
mana sebagian besar state adalah action dan sebagian besar transisi di-
trigger oleh selesainya state sebelumnya ( internal processing ). Oleh karena
itu activity diagram tidak menggambarkan behaviour internal sebuah sistem
(dan interaksi antar subsistem) secara eksak, tetapi lebih menggambarkan
proses-proses dan jalur-jalur aktivitas dari level atas secara umum. Sebuah
aktivitas dapat direalisasikan oleh satu use case atau lebih. Aktivitas
menggambarkan proses yang berjalan, sementara use case menggambarkan
bagaimana aktor menggunakan sistem untuk melakukan aktivitas. Sama
47
seperti state , standar UML menggunakan segiempat dengan sudut membulat
untuk menggambarkan aktivitas. Decision digunakan untuk menggambarkan
behaviour pada kondisi tertentu. Untuk mengilustrasikan proses-proses
paralel ( fork dan join ) digunakan titik sinkronisasi yang dapat berupa titik,
garis horizontal atau vertikal. Activity diagram dapat dibagi menjadi
beberapa object swimlane untuk menggambarkan objek mana yang
bertanggung jawab untuk aktivitas tertentu.
• Diagram Interaksi (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).
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. Masing-masing objek, termasuk
aktor, memiliki lifeline vertikal. Message digambarkan sebagai garis
berpanah dari satu objek ke objek lainnya. Pada fase desain berikutnya,
message akan dipetakan menjadi operasi/metoda dari class . Activation bar
48
menunjukkan lamanya eksekusi sebuah proses, biasanya diawali dengan
diterimanya sebuah message.
• Collaboration Diagram Collaboration diagram juga menggambarkan interaksi antar objek
seperti sequence diagram , tetapi lebih menekankan pada peran masing-
masing objek dan bukan pada waktu penyampaian message . Setiap message
memiliki sequence number , di mana message dari level tertinggi memiliki
nomor 1. Messages dari level yang sama memiliki prefiks yang sama.
• Component Diagram Component diagram menggambarkan struktur dan hubungan antar
komponen piranti lunak, termasuk ketergantungan ( dependency ) di
antaranya. Komponen piranti lunak adalah modul berisi code , baik berisi
source code maupun binary code , baik library maupun executable , baik
yang muncul pada compile time, link time , maupun run time . Umumnya
komponen terbentuk dari beberapa class dan/atau package , tapi dapat juga
dari komponen-komponen yang lebih kecil. Komponen dapat juga berupa
interface , yaitu kumpulan layanan yang disediakan sebuah komponen untuk
komponen lain.
• Deployment Diagram Deployment/physical diagram menggambarkan detail bagaimana
komponen di- deploy dalam infrastruktur sistem, di mana komponen akan
terletak (pada mesin, server atau piranti keras apa), bagaimana kemampuan
jaringan pada lokasi tersebut, spesifikasi server, dan hal-hal lain yang
bersifat fisikal Sebuah node adalah server, workstation , atau piranti keras
49
lain yang digunakan untuk men- deploy komponen dalam lingkungan
sebenarnya. Hubungan antar node (misalnya TCP/IP) dan requirement dapat
juga didefinisikan dalam diagram ini.