7
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
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
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.
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.
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.
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
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.
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).
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).
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 :
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
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).
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.
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.
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.
2.6.1 Multiprocess
Secara konsep, setiap proses memiliki virtual CPU masing-masing. 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.
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.
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
diaktifkan.
Thread 2 juga melakukan proses create dan thread diaktifkan.
3 Thread 1 dan 2 melakukan proses join dimana thread 1 akan menunggu hingga thread 2 selesai.
Thread 2 masih aktif.
4 Thread 2 telah selesai dan
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
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 Thread 2
2 Thread 1 diaktifkan. Thread 2 diaktifkan.
3 Thread 1 memulai proses dengan menggunakan lock terhadap mutex.
Mutex berada di thread 1.
Thread 2 masih Aktif.
4 Thread 1 masih aktif. Mutex berada di thread 1.
Thread 2 melakukan lock terhadap mutex. Thread 2 menunggu. 5 Thread 1 melakukan
unlock terhadap mutex
Thread 2 selesai menunggu. 6 Thread 1 selesai. Mutex berada di
thread 2.
Thread 2 melakukan unlock terhadap mutex. Thread 2 selesai.
7 Thread selesai dan mutex dihapus.
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
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 Keterangan
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).
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.
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.
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.
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.
Kelemahan dalam menggunakan array :
1. Harus bersifat homogen.
2. Sulit untuk merubah batasan maksimum index (Deitel, 2004).
2.11 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.
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)
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).
3. Menempatkan (headPtrnextPtr) menuju ke headPtr sehingga headPtr sekarang menunjuk ke node baru pada queue.
4. Jika headPtr berisi NULL, NULL ditujukan ke tailPtr (Deitel, 2004).
2.13 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.
• 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
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
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.
Gambar 2.12 Fixed, Extended, dan Repetitive Data Field
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.
• 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
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+
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
Representation
2
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.
• 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.