BAB 2 LANDASAN TEORI
2.1
Metode Transmisi Data Metode transmisi data terbagi menjadi 3 cara yaitu unicast, multicast, dan broadcast. 2.1.1 Unicast Unicast adalah metode transmisi data dimana server mengirim data hanya kepada satu client. Dengan kata lain, hanya melibatkan satu pengirim dan satu penerima. Server harus membuat jalur koneksi yang baru untuk setiap client yang meminta data. Oleh karna itu, metode
unicast
menghabiskan
bandwidth
yang
besar dan
mengakibatkan beban server bertambah. Bandwidth sendiri adalah kecepatan untuk melakukan transmisi data antar device yang memiliki jaringan internet. Biasanya metode ini dipakai untuk melakukan browsing internet. Protokol yang dipakai oleh metode ini adalah protokol TCP (Transmission Control Protocol) sehingga pertukaran data lebih reliable (Kurose & Ross, 2003).
2.1.2 Multicast Multicast adalah metode transmisi data dimana server mengirim data kepada banyak client melalui IP multicast. Metode ini 7
8
dapat bekerja apabila router atau switch yang berada di antara server dan client merupakan router atau switch yang multicast-enabled. Metode ini bertujuan untuk mengurangi beban pada server jaringan. Data dari server akan di-copy oleh router sesuai kebutuhan client sehingga bandwidth yang diperlukan hanya sedikit. Biasanya metode ini dipakai untuk melakukan transfer data secara massal seperti update program atau update sistem operasi. Protokol yang digunakan oleh metode ini adalah protokol UDP (User Datagram Protocol) sehingga pertukaran data unreliable (Meserve, 2000). . 2.1.3 Broadcast Broadcast adalah metode transmisi data dimana server mengirim data kepada banyak client sesuai broadcast address yang telah ditetapkan. Metode ini menggunakan protokol UDP sehingga memiliki sifat yang unreliable dan memungkinkan terjadinya duplikasi datagram. Mekanisme kerja broadcast adalah ketika datagram sedang di-broadcast, semua client yang berada dalam broadcast address akan menerima datagram tersebut (Tanenbaum, 1996).
Broadcast dibagi menjadi 2 yaitu : 1. Limited Broadcast : mengirimkan data ke semua NIC (Network Interface Card). Limited Broadcast mempunyai broadcast address
9
yaitu 255.255.255.255 dalam TCP/IP. Metode ini tidak melibatkan router. 2. Direct Broadcast : mengirimkan data ke semua host dalam sebuah jaringan. Contohnya adalah jaringan dengan IP address 192.168.0.0 memiliki broadcast address 192.168.255.255.
2.2
Metodologi Perancangan dan Pengembangan Program Terdapat beberapa metodologi dalam melakukan perancangan dan pengembangan program : 2.2.1 Waterfall Model Waterfall
model
merupakan
proses
perancangan
dan
pengembangan program yang langkah-langkahnya berurutan. Berikut adalah langkah-langkah yang dilakukan apabila ingin memakai waterfall model : 1. Communication = mengumpulkan informasi yang dibutuhkan untuk merancang program. 2. Planning = menentukan berapa lama waktu yang dibutuhkan untuk membuat program. 3. Modeling = menganalisis dan mendesain program. 4. Construction = melakukan koding dan tes program. 5. Deployment = menyerahkan program kepada klien dan melakukan perbaikan apabila terdapat error.
10
Kelebihan menggunakan waterfall model : 1. Tersedia waktu yang cukup untuk mengidentifikasi sistem. 2. Mengurangi peluang terjadinya pengubahan sistem pada saat proses pengembangan perangkat lunak.
Kekurangan menggunakan waterfall model : 1. Harus melakukan perancangan sistem dengan sebaik mungkin. 2. Selisih
waktu
yang
cukup
lama
antara
pengajuan
dan
pembaharuan sistem.
Gambar 2.1 Ilustrasi Waterfall Model
2.2.2 Agile Model Agile Model merupakan proses pengerjaan perangkat lunak dengan waktu yang singkat. Metode pengembangan program ini mengutamakan kecepatan dalam prosesnya.
11
Kelebihan menggunakan agile model : 1. Hasil dapat diraih dalam waktu yang singkat. 2. Fokus dalam pengerjaan proyek.
Kekurangan menggunakan agile model : 1. Membutuhkan kedisiplinan yang tinggi. 2. Cocok untuk pengerjaan proyek dalam skala kecil. 3. Membutuhkan lebih banyak informasi dari user.
2.2.3 Parallel Model Parallel
model
merupakan
proses
perancangan
dan
pengembangan perangkat lunak dimana fase desain dan implementasi dilakukan secara parallel. Kelebihan dari model ini adalah mengurangi waktu penjadwalan dan meminimalisasi pengerjaan ulang. Kekurangan dari model ini adalah banyak terjadi kegagalan saat penggabungan subproyek.
2.2.4 Rapid Model Rapid
model
merupakan
proses
perancangan
dan
pengembangan perangkat lunak dimana developer terlebih dahulu menunjukkan software prototype kepada customer. Kelebihan dari model ini adalah user dapat menggunakan sistem lebih awal dan user dapat mengajukan fitur apa yang harus ditambahkan untuk versi selanjutnya.
12
2.3
UML (Unified Modelling Language) Unified modeling language adalah standar untuk visualisasi, perancangan, dan dokumentasi pada sistem perangkat lunak. Berikut adalah beragam macam diagram yang direpresentasikan oleh UML :
2.3.1 Use Case Diagram Use case diagram menggambarkan kegunaan yang diharapkan dari sebuah sistem. Use case merepresentasikan interaksi antara user dan sistem. Use case sangat membantu bila kita sedang menyusun persyaratan sebuah sistem, mengkomunikasikan rancangan dengan klien, dan merancang test case untuk semua fitur yang ada pada sistem.
Gambar 2.2 Notasi Use Case Diagram
2.3.2 Class Diagram Class diagram menggambarkan struktur dan deskripsi class, package, dan objek beserta hubungan satu sama lain dalam konsep
13
OOP. Class memiliki 3 hal penting yaitu nama, atribut, dan metoda. Atribut dan metoda dapat memiliki salah satu sifat berikut : 1. Private
= Tidak dapat dipanggil oleh class lain.
2. Protected = Hanya dapat dipanggil oleh class yang bersangkutan dan subclass yang mewarisinya. 3. Public
= Dapat dipanggil oleh siapa saja.
2.3.3 State Diagram State diagram menggambarkan perubahan keadaan suatu objek pada sistem dan pada umumnya state diagram menggambarkan class tertentu.
2.3.4 Activity Diagram Activity diagram menggambarkan berbagai alur aktivitas dalam sistem yang sedang dirancang, bagaimana setiap alur berawal, decision yang mungkin terjadi, dan bagaimana alur-alur tersebut berakhir. Activity diagram dapat juga menggambarkan proses parallel yang mungkin terjadi pada beberapa eksekusi.
2.3.5 Sequence Diagram Sequence diagram menggambarkan interaksi antar objek yang berada di dalam sistem. Jika digambarkan dalam sebuah grafik, garis vertikal menggambarkan dimensi waktu dan garis horizontal menggambarkan objek-objek yang terhubung berada suatu sistem.
14
Sequence diagram biasanya menggambarkan skenario dari sebuah event untuk menghasilkan output tertentu.
2.4
ADS-B (Automatic Dependent Surveillance-Broadcast) ADS-B adalah sebuah teknologi baru dalam dunia penerbangan yang berfungsi untuk melakukan pengamatan dan memperoleh informasi dari pesawat yang sedang mengudara (Stites, 2006). Pesawat yang telah menggunakan teknologi ADS-B saja yang dapat memberikan informasi ke ADS-B ground station. Data yang diperoleh dari teknologi ADS-B adalah visualisasi posisi pesawat dan informasi seperti : ketinggian, kecepatan, dan identifikasi pesawat. Teknologi ini memberikan kelebihan dalam hal keselamatan penerbangan (Access Intelligence LLC, 2007). Teknologi lain yang digunakan oleh dunia penerbangan adalah sistem radar. Radar adalah sistem yang berfungsi untuk mendeteksi posisi dari pesawat yang sedang mengudara. Perbedaan kedua sistem tersebut adalah pesawat yang memakai sistem ADS-B dapat mengirimkan data secara real time kepada pesawat lain dan ground station yang telah menggunakan sistem yang sama sedangkan radar membutuhkan rentang waktu 12 detik agar dapat meng-update posisi pesawat (Ross, 2012).
15
Gambar 2.2 Perbandingan Cara Kerja Radar dengan ADS-B Pesawat yang dilengkapi oleh MOD-S Transponder akan menerima data dari GNSS (Global Navigation Satellite System) lalu kemudian mengirimkan data tersebut ke ADS-B receiver atau ground station. Format data yang digunakan oleh pesawat ke ADS-B receiver adalah format data MOD-S sedangkan dari ADS-B receiver ke ATC adalah format data ASTERIX-21. ADS-B receiver menggunakan metode transmisi data unicast dan format data Asterix kategori versi 0.26, sedangkan ADP menggunakan metode transmisi data multicast dan format data Asterix kategori versi 0.23 (ICAO, 2010).
16
Gambar 2.3 Proses Kerja ADS-B
2.5
Konkurensi Konkurensi adalah beberapa proses yang terjadi pada saat bersamaan dan berpotensi saling berinteraksi dengan proses lainnya. Kelebihan dalam menggunakan konkurensi adalah dapat memberikan efisiensi dalam pengolahan dan penstrukturan program (Rescoe, 1997). Berikut prinsip-prinsip dalam konkurensi : 1. Alokasi waktu untuk menjalankan banyak proses.
17
2. Pemakaian proses secara bersamaan dan persaingan untuk mendapatkan sumber daya. 3. Komunikasi antar proses. 4. Sinkronisasi aktivitas yang dijalankan oleh banyak proses.
Adapun kemungkinan terjadi masalah-masalah pada konkurensi : 1. Deadlock = kondisi dimana banyak proses yang terlibat namun tidak dapat menyelesaikan prosesnya. 2. Starvation = kondisi dimana terdapat proses yang tidak dilayani.
Sinkronisasi merupakan sebuah langkah untuk mengatur jalannya proses pada saat yang bersamaan. Tujuan utama dari sinkronisasi adalah menghindari terjadinya inkonsistensi data karna pengaksesan oleh beberapa proses yang berbeda dan juga untuk mengatur urutan jalannya proses-proses agar terhindar dari deadlock dan starvation (Stalings, 2008).
2.5.1 Pemrograman Konkuren Pemrograman konkuren adalah proses memprogram dua atau lebih kode supaya dapat dijalankan secara bersamaan. Beberapa komputer yang mengeksekusi kode program secara simultan disebut
18
sebagai distributed computing sedangkan jika berada pada satu komputer saja disebut sebagai single computing (Bustard, 1990).
2.6
Proses Proses adalah program yang dieksekusi. Perbedaan antara program dan proses adalah program merupakan sebuah entitas pasif atau yang lebih sering dikenal dengan file yang siap dieksekusi (executable file). Sedangkan proses adalah sebuah entitas aktif dengan program counter yang menspesifikasikan instruksi yang akan dieksekusi dan menyiapkan sumber daya yang akan digunakan. Sebuah program akan menjadi sebuah proses apabila file tersebut sudah siap untuk dieksekusi (executable file) dan telah dimuat ke dalam memori (Silberschatz, 2005).
19
Gambar 2.4 Skema Umum Proses
Sebuah proses memiliki sifat–sifat sebagai berikut : 1. Setiap proses memiliki sebuah user address space yang terdiri dari
segmen teks, 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 terdapat dalam segment teks pada user address space. 3. Sebuah proses memiliki variabel global yang tersimpan di dalam segmen
data.
20 4. Sebuah proses memiliki jatah memori yang bersifat privat yang dapat
dialokasikan untuk kebutuhan melacak subrutin yang sedang aktif dan menyimpan data temporer di segmen stack serta menyimpan data yang teralokasi pada saat runtime di segmen heap. Memori yang tersedia dapat berupa memori virtual maupun nyata. 5. Sebuah proses memiliki deskriptor seperti deskriptor file, deskriptor
socket, deskriptor shared memory, dll. 6. Sebuah proses memiliki atribut keamanan yang telah disediakan oleh
sistem operasi pada saat proses berjalan. 7. Sebuah proses memiliki status proses yaitu penanda bahwa proses yang
terdapat di register sistem operasi bila proses aktif atau di memori sistem bila proses tidak aktif. 8. Proses dapat saling melakukan komunikasi dan sharing resources dengan
proses lain dalam komputer yang sama.
21
Gambar 2.5 Status-Status pada Proses
Berikut status-status pada proses : 1.
Running
: Proses yang terdapat pada state ini sudah berjalan.
2.
Ready
: Proses yang dipersiapkan untuk segera dieksekusi.
3.
Blocked
: Proses tidak dapat dilanjutkan selagi menunggu event atau I/O dari Sistem Operasi.
4.
New
: Proses yang baru dibuat oleh Sistem Operasi, dan belum mendapatkan alokasi memori.
5.
Exit
: Proses sudah dihentikan dan keluar dari model state tersebut.
22
2.6.1 Multiprocess Secara konsep, setiap proses memiliki virtual CPU masingmasing. Namun dalam praktiknya, CPU hanya dapat melakukan proses
secara
bergantian
atau
yang
sering
disebut
sebagai
pseudoparalleism. Jika memang terjadi sebuah multiprocess, proses yang sedang berjalan akan memblok proses yang lainnya. Proses membuat suatu output yang bisa digunakan proses lain sebagai input. Namun, proses ini tidak memberikan output yang dibutuhkan oleh proses lain, sehingga proses lain pun akan menunggu hingga input tersedia. Adapun kasus lain yang memungkinkan untuk proses yang sudah siap namun dihentikan oleh sistem operasi karena sistem operasi tersebut memutuskan untuk mengalokasikan memori agar dapat digunakan oleh proses yang lain (Tanenbaum, 2009).
2.7
Thread Thread adalah sebuah unit dasar utilisasi prosesor (CPU). Sebuah thread memiliki thread ID, program counter, satu set register, dan sebuah stack. Sebuah thread saling berbagi sumber daya sistem operasi, segmen kode, dan segmen data dengan thread lainnya dalam satu proses yang sama. Bila suatu proses memiliki thread yang banyak, maka proses tersebut dapat melakukan tugasnya lebih dari satu dalam satu waktu.
23
Gambar 2.6 Skema Umum Thread Sebuah proses memiliki minimal satu buah thread. Komunikasi antar thread dapat dilakukan selama masih dalam satu proses. Dalam konsepnya juga, thread dapat berjalan secara bersamaan, namun dalam praktiknya, CPU hanya dapat menjalankan satu buah thread saja. Thread lainnya harus menunggu untuk mendapatkan giliran (Silberschatz & Galvin, 2008).
Berikut karakteristik thread dengan standar POSIX : 1. Thread dimiliki oleh suatu proses dan menggunakan sumber daya yang
sama dengan proses tersebut.
24 2. Suatu sistem kontrol dimiliki oleh thread selama proses parent
berlangsung dan sistem operasi mendukung. 3. Komunikasi dan sharing resources dapat dilakukan oleh thread dengan
thread lainnya namun memerlukan sinkronisasi antar thread. 4. Jika proses berhenti maka thread akan berhenti.
2.7.1 Multithread Pemrograman multithread sering digunakan karna tidak komplek dan
lebih mudah dalam melakukan maintenance dan
berbagi informasi (Silberschatz & Galvin, 2008). Setiap sistem operasi memiliki system call yang berbeda untuk memanggil fungsi pada multithread programming. Pada sistem operasi varian UNIX/LINUX, digunakan standar pustaka POSIX thread (pthread). Sedangkan pada sistem operasi Windows, digunakan pustaka CWinThread yang terdapat dalam Microsoft Foundation Classes (MFC) Windows SDK.
No.
Thread Utama
1
Thread utama membuat dan menjalankan 2 buah thread. Thread utama aktif.
2
Thread 1 melakukan proses create dan thread
Thread 2 juga melakukan
diaktifkan.
proses create dan thread diaktifkan.
25 3
Thread 1 dan 2 melakukan proses join dimana
Thread 2 masih aktif.
thread 1 akan menunggu hingga thread 2 selesai. Thread 2 telah selesai dan
4
memberitahukan ke thread 1. 5
Pemberitahuan dari thread 2 diterima oleh thread 1, lalu thread 1 kembali aktif.
6
Thread selesai. Tabel 2.1 Tahapan Pembuatan Thread
Tahapan
Command
Keterangan
Create
pthread_create
Membentuk sebuah thread.
Join
pthread_join
Menunggu sebuah thread sampai selesai.
Detach
pthread_detach
Membatalkan tahapan join.
Terminate pthread_exit
Memberhentikan sebuah thread. Tabel 2.2 Library pthread
2.7.2 Mutex (Mutual Exclusion) Mutual exclusion adalah kondisi dimana terdapat sumber daya yang tidak dapat dipakai dalam waktu bersamaan. Kondisi seperti ini hanya dapat mengijinkan satu proses pada waktu tertentu untuk masuk ke critical section. Mutual exclusion menjamin hanya ada satu proses
26
yang mengakses sumber daya pada waktu tertentu (Silberschatz & Galvin, 2008). No.
Thread Utama
1
Thread utama membuat sebuah mutex yang akan digunakan oleh semua thread. Thread utama membuat dan menjalankan 2 buah thread. Thread utama aktif. Thread 1
Mutex
2
Thread 1 diaktifkan.
3
Thread 1 memulai proses
Mutex berada di
dengan menggunakan
thread 1.
Thread 2 Thread 2 diaktifkan. Thread 2 masih Aktif.
lock terhadap mutex. 4
Thread 1 masih aktif.
Mutex berada di
Thread 2 melakukan
thread 1.
lock terhadap mutex. Thread 2 menunggu.
5
6
Thread 1 melakukan
Thread 2 selesai
unlock terhadap mutex
menunggu.
Thread 1 selesai.
Mutex berada di
Thread 2 melakukan
thread 2.
unlock terhadap mutex. Thread 2 selesai.
7
Thread selesai dan mutex dihapus. Tabel 2.3 Tahapan Pembuatan Mutex
27
Tahapan
Command
Keterangan
Create
pthread_mutex_init
Membuat sebuah mutex.
Lock
pthread_mutex_lock
Mengunci sebuah mutex.Bila tidak berhasil, dicoba terus sampai berhasil.
pthread_mutex_trylock
Mengunci sebuah mutex. Bila tidak berhasil mengembalikan nilai false.
pthread_mutex_timedlock
Mengunci sebuah mutex dalam satuan waktu. Bila tidak berhasil mengembalikan nilai false.
Unlock
pthread_mutex_unlock
Melepaskan kunci mutex.
Destroy
pthread_mutex_destroy
Menghancurkan sebuah mutex.
Tabel 2.4 Library Mutex
2.8
Socket Socket digunakan untuk menjembatani komunikasi antar proses yang berada di satu atau beberapa komputer melalui sebuah aplikasi. Pemrograman socket berada pada network layer (layer 3) dan transport layer (layer 4). Ipv4 digunakan pada network layer. Sedangkan untuk transport layer, yang akan digunakan adalah TCP dan UDP (Comer, 2004).
TCP
UDP
Membutuhkan koneksi 2 arah
Hanya membutuhkan koneksi searah
Reliable
Unreliable
28
Kecepatan pengiriman lambat
Kecepatan pengiriman cepat
Tabel 2.5 Perbedaan TCP dan UDP
2.8.1 Pemrograman Socket Pemrograman socket memerlukan 2 buah program yaitu untuk client dan server serta bertujuan agar client dan server dapat melakukan komunikasi. No.
Server
Client
1
Membuat socket.
Membuat socket.
2
Melakukan bind ke sebuah port.
Melakukan bind ke sebuah port.
3
Untuk
TCP
:
proses
accept.
Sedangkan UDP : langsung memulai pertukaran data. 4
Koneksi terhubung.
Koneksi terhubung.
5
Melakukan proses send/receive.
Melakukan proses send/receive.
6
Melakukan proses close.
Melakukan proses close.
7
Koneksi terputus.
Koneksi terputus.
8
Menghapus socket.
Menghapus socket.
Tabel 2.6 Tahapan Pembuatan Socket
Tahapan
Command
Create
Socket
Keterangan Membuat socket.
29
Bind
Bind
Memesan port.
Listen
Listen
Menunggu koneksi yang akan masuk.
Accept
Accept
Menerima koneksi.
Send
Send
Mengirimkan data.
Receive
Receive
Menerima data.
Sendto
Sendto
Mengirimkan data. (untuk UDP)
ReceiveFrom
Receivefrom
Menerima data. (untuk UDP)
Close
Close
Menutup koneksi. Tabel 2.7 Library Socket
Server akan membuat sebuah socket dan kemudian melakukan bind agar socket memiliki alamat yang unik. Pada bind diperlukan nomor port dan alamat IP kemudian server memulai untuk listen. Client juga akan membuat socket dan meminta koneksi agar dapat terhubung dengan server. Setelah tercipta sebuah komunikasi atau pertukaran data, client atau server dapat mengakhiri komunikasi dengan menutup koneksi socket (Comer, 2004).
30
Gambar 2.7 Pemodelan Server dan Client
Hal-hal yang harus diperhatikan dalam membuat program untuk client: 1. Harus mendukung operating system yang beragam. 2. Performa yang stabil untuk melakukan komunikasi.
Hal-hal yang harus diperhatikan dalam membuat program untuk server : 1. Harus dapat melayani tiap client dengan baik dari segi jaringan dan pertukaran data.
31
2. Server dapat diakses oleh banyak client dan setiap client dapat melakukan komunikasi dengan server secara simultan. 3. Memiliki tingkat keamanan yang tinggi agar tidak terjadi pencurian data.
2.9
OOP (Object Oriented Programming) Object Oriented Programming adalah suatu metode pemrograman yang berorientasi pada objek. Objek digunakan untuk membungkus data dan fungsi. Sementara kelas merupakan kumpulan data dan fungsi yang penjelasannya sebagai berikut : 1. Attributes = menentukan karakteristik dari sebuah objek dan memiliki nilai. Contoh : mobil mempunyai atribut warna, ukuran velg, dan jenis mesin. 2. Methods = menentukan bagaimana sebuah objek dapat berinteraksi dengan objek lain. Contoh : method dari mobil adalah startCar, driveCar, dan changeWheel. 3. Object state = menentukan status objek yang sedang diakses. Contoh : stopped, running.
32
Gambar 2.8 Ilustrasi Objek dan Kelas
Konsep dasar OOP : 1. Encapsulation = sebuah konsep dimana isi dari sebuah informasi dimanipulasi
sedemikian
mungkin
sehingga
atribut-atribut
yang
digunakan tidak diketahui oleh user. 2. Inheritance = sebuah konsep dimana suatu kelas baru mewarisi sifat dari kelas lain yang sudah ada. 3. Polymorphism = sebuah konsep dimana tiap-tiap objek yang berbeda kelas menggunakan metode yang sama. 4. Overriding = sebuah konsep dimana kelas child mengimplementasikan metode-metode yang disediakan oleh kelas parent.
33
2.10
Array
Array adalah suatu kumpulan data homogen yang jumlah elemennya telah ditentukan dari awal. Pembentukan array dimulai dari menentukan tipe data, memberikan nama variabel, dan menentukan jumlah maksimum index yang akan dipakai (Ngoen, 2009). Contoh : Int billy[5];
Tipe data yang digunakan adalah integer, nama variabel adalah billy, dan jumlah maksimum index adalah 5.
Gambar 2.9 Contoh Array
Karakteristik dari sebuah array :
1. Mempunyai batasan dalam memesan alokasi memori. 2. Mempunyai tipe data yang sama.
Keunggulan dalam menggunakan array :
1. Dapat mengakses elemen secara acak. 2. Penyimpanan elemen sangat efisien.
34
Kelemahan dalam menggunakan array :
2.11
1.
Harus bersifat homogen.
2.
Sulit untuk merubah batasan maksimum index (Deitel, 2004).
Linked List
Linked list adalah suatu kumpulan data linier yang mengisi setiap node dan node-node tersebut dihubungkan oleh pointer. Sebuah linked list diakses oleh pointer dari node pertama dalam list tersebut. Node terakhir dalam sebuah linked list di-set menjadi NULL untuk menandakan akhir dari list. Setiap node dibuat sesuai kebutuhan dan dapat mempunyai tipe data apa saja (Sjukani, 2010). Data dapat disimpan dalam bentuk array, tetapi linked list memberikan beberapa kelebihan. Linked list lebih cocok digunakan saat jumlah elemen data yang ingin disimpan belum dapat dipastikan. Data disimpan dalam linked list secara dinamis, jadi panjang sebuah list dapat ditambah atau dikurangi sesuai kebutuhan tetapi ukuran dari sebuah array tidak dapat diubah saat memori sudah ditentukan. Linked list dapat menjadi penuh jika sistem tidak memiliki memori yang cukup untuk menampung data (Deitel, 2004). .
Berikut merupakan fungsi-fungsi yang terdapat dalam linked list : 1. Insert = fungsi yang digunakan untuk menambah elemen pada sebuah node.
35
2. Delete = fungsi yang digunakan untuk menghapus elemen pada sebuah node. 3. IsEmpty = fungsi yang digunakan untuk menentukan apakah node yang ditunjuk oleh pointer kosong atau tidak. 4. Retrieve = fungsi yang digunakan untuk mengambil elemen pada sebuah node. 5. Update = fungsi yang digunakan untuk merubah isi sebuah node.
2.12
Queue
Queue adalah suatu kumpulan data dimana penambahan data dilakukan pada akhir antrian dan penghapusan data dilakukan pada awal antrian. Dengan kata lain, queue memakai prinsip FIFO (First In First Out) yakni data yang masuk terlebih dahulu akan didahulukan prosesnya dan data yang lain akan menunggu hingga proses itu selesai dieksekusi. Istilah yang digunakan untuk penambahan dan penghapusan data adalah enqueue dan dequeue (Sjukani, 2010)
36
Gambar 2.10 Proses Queue
Berikut merupakan pergerakan pointer dari enqueue :
1.
Untuk membuat node baru. Ditujukan untuk menempatkan lokasi memori
(newPtr)
dan
memasukkan
nilai
ke
dalam
queue
(newPtrdata). 2.
Jika queue kosong, newPtr menuju ke nextPtr atau tailPtr menuju ke nextPtr.
Berikut merupakan pergerakan pointer dari dequeue :
1.
Untuk menyimpan data (headPtr->data).
2.
Untuk mengosongkan memori yang tidak digunakan (headPtr>tempPtr).
37
3.
Menempatkan (headPtrnextPtr) menuju ke headPtr sehingga headPtr sekarang menunjuk ke node baru pada queue.
4.
2.13
Jika headPtr berisi NULL, NULL ditujukan ke tailPtr (Deitel, 2004).
ASTERIX ASTERIX (All purpose STructured Eurocontrol suRveillance Information eXchange) adalah standar Eurocontrol untuk format data yang digunakan dalam pertukaran informasi antara sistem yang berada di pesawat dan ATC. Menurut Open System Interconnection (OSI) Reference Model (International Standar Organization (ISO) Standar 7498), ASTERIX bekerja pada layer 6 dan layer 7, yaitu presentation layer dan application layer. Untuk transmisi data yang terkait dengan aplikasi tertentu, ASTERIX telah dikelompokkan ke dalam 256 kategori oleh RDE-TF (suRveillance Data Exchange-Task Force). Transmisi data untuk penerbangan komersil menggunakan format data ASTERIX kategori 21 (Icriverzi & Cristea, 2012).
Berikut ini merupakan definisi dari istilah-istilah yang digunakan dalam format data ASTERIX kategori 21 : •
Catalogue of Data Items : daftar seluruh data items yang berada di setiap data category.
•
Data Block
:
kumpulan
informasi
yang
berisi
data
category, panjang dari data block, dan record. Sebuah data block berisi satu atau lebih record dari category yang sama.
38
•
Data Category
: kategori yang digunakan oleh struktur data
ASTERIX. •
Data Field
: unit terkecil dari informasi yang telah
ditransmisi dan memiliki field reference number yang unik. •
Data Item
: unit informasi terkecil pada setiap data
category. •
Record
: kumpulan data field yang berasal dari
category yang sama dan telah ditransmisi. •
User Application Profile : Memasangkan tiap data item ke tiap data field.
Gambar 2.11 Struktur Data Block
2.13.1 Format Standar Data Field Data field adalah slot yang berisi data item.
39
2.13.1.1
Fixed Length Data Field Fixed length data field adalah data field yang panjang byte-nya sudah tetap.
2.13.1.2
Extended Length Data Field Extended length data field adalah data field yang panjang byte-nya tidak tetap. Apabila bit terakhir bernilai 1, maka akan dilanjutkan ke data field sesudahnya. Apabila bit terakhir bernilai 0, berarti itu adalah akhir dari data field.
2.13.1.3
Repetitive Data Field Repetitive data field merupakan data field yang byte awalnya berisi nilai n untuk menunjukkan adanya data field yang sejenis.
2.13.1.4
Field Specification Field specification merupakan sebuah data yang berisi lebih dari satu buah data field yang tidak sejenis. Urutan data field telah ditentukan oleh
40
ASTERIX namun tidak semua data field selalu aktif. Field specification yang terletak pada byte-byte awal digunakan untuk menentukan data field yang aktif. Field specification adalah daftar isi dari data field yang aktif
berupa
kumpulan
bit-bit biner.
Bit ke-n
menunjukkan status data field ke-n. Jika bit 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
merupakan field specification. Namun jika bit tersebut adalah 0, maka byte tersebut merupakan akhir dari field specification dan byte berikutnya adalah data field pertama.
2.13.1.5
Compound Data Field Yang
membedakan
compound
data
field
dengan field specification adalah compound data field terdapat pada data field sedangkan field specification selalu terdapat pada setiap record data ASTERIX.
41
Gambar 2.12 Fixed, Extended, dan Repetitive Data Field
Gambar 2.13 Field Specification
42
Gambar 2.14 Compound Data Field
2.13.2 Tipe Data ASTERIX-21
Gambar 2.15 Data Block ASTERIX-21
•
CAT = 021 adalah field berisi 8 bit yang menjelaskan bahwa data block ini mengandung pesan ASTERIX-21.
43
•
LEN adalah field berisi 16 bit yang menjelaskan total panjang dari data block.
•
FSPEC adalah field berisi 8 bit yang menjelaskan eksistensi dari data field.
•
Pesan ASTERIX-21 akan dibuat berdasarkan data items yang disusun sesuai urutan yang ditentukan oleh field reference number.
Tabel Isi Record ASTERIX-21 Versi 0.26 FRN
Data Item
Information
Length
1
I021/010
Data Source Identification
2
2
I021/040
Targer Report Descriptor
1+
3
I021/030
Time of Day
3
4
I021/130
Position in WGS-84 co-ordinates
6
5
I021/080
Target Address
3
6
I021/140
Geometric Altitude
2
7
I021/090
Figure Of Merit
2
FX
-
Field extension indicator
-
8
I021/210
Link Technology
1
9
I021/230
Roll Angle
2
44
10
I021/145
Flight Level
2
11
I021/150
Air Speed
2
12
I021/151
True Air Speed
2
13
I021/152
Magnetic Heading
2
14
I021/155
Barometric Vertical Rate
2
FX
-
Field extension indicator
-
15
I021/157
Geometric Vertical Rate
2
16
I021/160
Ground Vector
4
17
I021/165
Rate of Turn
1+
18
I021/170
Target Identification
6
19
I021/095
Velocity Accuracy
1
20
I021/032
Time of Day Accuracy
1
21
I021/200
Target Status
1
FX
-
Field extension indicator
-
22
I021/020
Emitter Category
1
23
I021/220
Met Report
1+
24
I021/146
Intermediate State Selected Altitude
2
45
25
I021/148
Final State Selected Altitude
2
26
I021/110
Trajectory Intent
1+N*15
27
I021/070
Mode
3/A
Code
in
Octal 2
Representation 28
I021/131
Signal Amplitude
1
FX
-
Field extension indicator
-
29
-
Spare Bits Set To Zero
-
30
-
Spare Bits Set To Zero
-
31
-
Spare Bits Set To Zero
-
32
-
Spare Bits Set To Zero
-
33
-
Spare Bits Set To Zero
-
34
RE
Reserved Expansion Field
1+
35
SP
Special Purpose Field
1+
FX
-
Field extension indicator
-
Tabel 2.8 Isi Record Asterix-21 •
FRN (Field Reference Number) terasosiasi dengan setiap data item yang ada pada record sebagai penanda dari informasi yang dimiliki oleh field tersebut.
•
FX (Field Extension Indicator) adalah indikator perpanjangan field yang menunjukkan setiap kelipatan dari 7 FRN.
46
•
Length
menjelaskan
panjang
data
dimana
angka
tersebut
menunjukkan jumlah oktet dari fixed-length data item. •
Pada ASTERIX-21 versi 0.23, panjang data item dari FRN 27 dan FRN 28 telah di-set menjadi 0 (EUROCONTROL, 2002).
2.13.3 Contoh Data ASTERIX-21 Dibawah ini merupakan sebuah contoh record ASTERIX-21 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] Keterangan masing-masing bit : 1. 15 bila dirubah menjadi bilangan desimal adalah 21, yang
menunjukkan data category 021. 2. 00 2B bila dirubah menjadi bilangan desimal adalah 43, yang
menunjukkan panjang data 43 oktet. 3. FB A3 51 02 adalah FSPEC menentukan isi FRN. FRN 1
menunjuk data item ke 1, FRN 2 menunjuk data item ke 2, dan seterusnya.