BAB II LANDASAN TEORI
2.1
Sekilas radio EMC 93.6 FM
Radio EMC 93.6 FM merupakan radio milik pemerintah Kabupaten Tangerang yang beralamat di jalan Perintis Kemerdekaan II no 4 Cikokol Tangerang dimana pengelolaannya dipercayakan kepada pihak swasta dalam hal ini PT. Elmizan Cakrawala Cemerlang. Radio EMC mengudara pada gelombang 93.6 FM dan
dapat
dinikmati oleh sebagian besar daerah di propinsi Banten serta sebagian wilayah Jakarta dan Bogor. Untuk lebih meluaskan jangkauan siarnya serta mengikuti perubahan era informasi, maka PT. Elmizan Cakrawala Cemerlang ingin pula agar radio EMC 93.6 FM dapat disiarkan dan dinikmati oleh pendengarnya melalui siaran streaming lewat internet. Untuk itu penulis akhirnya mengambil kesempatan ini dan menjadikan hal ini sebagai dasar penulisan tugas akhir penulis. 2.2
Streaming
Streaming sebenarnya adalah proses pengiriman data dari server streaming secara terus menerus yang dilakukan secara broadcast melalui internet untuk ditampilkan oleh aplikasi streaming pada computer (client).Paket data yang dikirimkan telah di kompresi untuk memudahkan pengirimannya melalui internet Streaming suara sering juga disebut sebagai streaming media. Teknologi ini merupakan pengembangan dari teknologi MPEG (Moving Pictures Experts Group) yang diakui oleh ISO (International Standard Organisation). Teknik kompresi suara menggunakan istilah coding dan decoding. Proses coding dilakukan pada sisi server (coder) sedangkan proses decoding dilakukan oleh client (decoder).
7
8
Proses coding dilakukan server untuk mengkompresi data sebelum dikirimkan ke client melalui jaringan local / internet dan decoding dilakukan oleh client untuk ditampilkan data tanpa kompresi. Proses kompresi dan dekompresi oleh coder dan decoder ini sering disingkat menjadi codec. Proses codec bisa dilakukan menggunakan algoritma standar MPEG. Beberapa versi MPEG telah dikembangkan secara masal (versi 1 dan 2). MPEG versi 3 telah dikembangkan untuk proses broadcast HDTV (High Definition Television). Hingga saat ini sudah ada 7 versi MPEG, dan versi 6 digunakan oleh NASA untuk mentransfer rekaman pesawat tanpa awak pathfinder di Mars. Dengan tehnik codec yang berkembang semakin baik, kini banyak para pengguna internet yang bisa melakukan streaming audio (suara). Untuk melakukan streaming audio (suara), kita hanya perlu memiliki koneksi internet antara 16Kbps hingga 48Kbps. Dengan koneksi 16Kbps hingga 48Kbps ini, maka pengakses dial-up pun dapat melakukan streaming audio (suara). Streaming audio (suara) dapat dilakukan secara live, artinya realtime dan seluruh pengguna internet yang mengakses streaming dari kanal yang sama akan menerima data yang sama pula. Streaming audio yang populer dan paling banyak di implementasikan adalah siaran radio FM. Dengan streaming audio (suara) kita dapat mendengarkan siaran radio FM dimana saja tanpa perlu berada pada jangkauan siar radio FM tersebut.
2.3
RTP (Real Time Protocol) dan RTCP (Real Time Control Protocol)
RTP (Real-time Protocol) adalah protokol berbasis IP yang menyediakan dukungan untuk transport data real time seperti streaming video dan audio melalui Internet. Layanan yang disediakan oleh RTP meliputi time reconstruction, loss detection, security dan content identification. Pada dasarnya RTP dirancang untuk multicast data real-time, tetapi dapat juga digunakan dalam unicast. RTP digunakan
9
secara luas dalam sistem komunikasi dan hiburan yang melibatkan media streaming, seperti telepon, video teleconference aplikasi dan web berbasis fitur push to talk.
RTP didesain untuk bekerja bersama dengan kontrol tambahan protokol RTCP untuk mendapatkan umpan balik terhadap kualitas transmisi data (QoS) dan informasi tentang peserta dalam sesi yang sedang berlangsung.
RTCP (Real-time Control Protocol) merupakan protokol kontrol yang dirancang untuk bekerja bersama-sama dengan RTP. Ini adalah standar di RFC 1889 dan 1890. RTCP mengirimkan paket secara berkala untuk menyampaikan umpan balik pada kualitas pengiriman data dan informasi keanggotaan. RTCP menyediakan layanan seperti : QoS monitoring dan congestion control, source identification, inter-media synchronization, serta control information scaling.
Gambar 2. 1 Protokol RTP dan RTCP
Ada 5 jenis paket RTCP yang di definisikan RFC 1889, Kelima jenis tersebut adalah: RR
: Receiver Report. Receiver Report berisi kualitas penerimaan umpan
balik tentang pengiriman data, termasuk jumlah paket tertinggi yang diterima, jumlah packet lost, inter-arrival jitter, dan timestamps untuk menghitung roundtrip delay antara pengirim dan penerima.
10
SR
: Sender Report. Selain umpan balik kualitas penerimaan seperti di RR,
sender report berisi bagian informasi pengirim, memberikan
informasi
tentang sinkronisasi inter-media, kumulatif packet counters, dan jumlah byte yang dikirim. SDES : Source Description Items. Source Description Items berisi informasi untuk menjelaskan tentang source. BYE : Indicates end of participation. APP
: Application specific functions. Application Specific Functions
bermaksud untuk digunakan sebagai aplikasi eksperimental baru dan mengembangkan fitur baru. 2.4
RTSP (Real Time Streaming Protocol)
RTSP (Real Time Streaming Protocol)adalah protokol klien-server multimedia, protokol yang memungkinkan pengiriman terkendali dari streaming data multimedia melalui jaringan IP. RTSP memberikan "VCR-style" fungsi remote control untuk audio dan video stream, seperti pause, fast forward, reverse, dan absolute positioning. Sumber data mencakup data feed dan stored klip.RTSP merupakan protokol level aplikasi yang dirancang untuk bekerja dengan protokol tingkat rendah seperti RTP dan RSVP yang berfungsi untuk menyediakan layanan streaming yang lengkap melalui internet. RTSP menyediakan sarana untuk memilih saluran distribusi (seperti UDP, multicast UDP dan TCP),
dan
mekanisme
pengiriman
berdasarkan
RTP.RTSP
bertujuan
untuk
menyediakan layanan yang sama pada streaming audio dan video.
RTSP menetapkan dan mengatur media stream audio dan video antara server media dan klien. Sebuah server media playback menyediakan layanan untuk media stream sementara permintaan klien terus menerus media data dari server media. RTSP adalah "jaringan remote control" antara server dan klien.
11
RTSP benar-benar menggunakan metode streaming yaitu teknik pengiriman media seperti video dimana client memainkan data yang diterima dan kemudian langsung mengabaikannya tanpa harus menyimpannya dalam buffer terlebih dahulu. 2.5
Protokol H.323 Dalam Distribusi Data Multimedia
Protocol H.323 adalah rekomendasi ITU-T untuk komunikasi multimedia berbasis paket, khususnya VoIP. H.323 merupakan suite yang terdiri dari berbagai protokol, yang masing-masing distandarkan secara terpisah oleh ITU-T dan IETF. Banyak dari protokol di dalam H.323 diterbitkan sebelum skema VoIP sendiri dikenal.
Gambar 2. 2 Protocol H.323
2.5.1 Protokol dalam H.323
Protokol H.225 atau RAS (registration, admission, and status) untuk permintaan panggilan dari terminal atau gateway ke gatekeeper GK. Dari data di dalam GK, diketahui hak akses user atau perangkat yang melakukan permintaan hubungan melalui GK ini. Jika permintaan disetujui, RAS membuka sesi komunikasi Q.931 dengan ujung lawan.
12
Protokol Q.931 untuk setup panggilan, seperti protokol yang digunakan oleh telepon PSTN atau ISDN, termasuk transfer dan penerjemahan nomor-nomor telepon. Jika semuanya berjalan baik, akan dibuka sesi H.245 dari ujung ke ujung. Untuk hubungan VoIP yang lebih sederhana, sebenarnya bagian dari H.225 sudah cukup untuk melakukan setup tanpa Q.931. Protokol H.245 untuk melakukan setup network, termasuk memeriksa kapabilitas yang tersedia, menyusun hubungan master-slave jika diperlukan, membuka kanal logika (paket), dan memberikan deskripsi serta alamat untuk paket RTP dan RTCP bagi pertukaran data percakapan. Protokol RTP (real-time transport protocol) untuk menyampaikan data dari ujung ke ujung selama komunikasi berlangsung. RTP dienkapsulasi oleh UDP kemudian oleh IP. UDP hanya memberikan fasilitas multipleks dan checksum, sehingga RTP harus memiliki fasilitas info identifikasi, pengurutan paket, dan monitoring. RTP merupakan standar dari IETF (RFC 3550). Protokol RTCP (Real-time Transport Control Protocol) merupakan metode pengendalian bagi RTP. Yang dilakukan RTCP adalah memberikan feedback atas kualitas distribusi data, serta membawa nama kanonik bagi sumber-sumber RTP yang akan digunakan untuk sinkronisasi audio dan video. Pengkodean suara dilakukan dengan protokol-protokol G.711 untuk rate 64 kb/s dan delay 1/8 ms; G.721, G.723, atau G.726 untuk rate 16 hingga 40 kb/s dengan delay 1/8 ms; G.728 untuk rate 16 kb/s dengan delay 2.5 ms; G.729 untuk rate 8 kb/s dan delay 10 ms; atau G.723.1 untuk rate 5.3 atau 6.3 kb/s dengan delay 30 ms. 2.6
Stream Buffer
Salah satu konsep paling penting dalam USL I / O Stream library adalah buffer stream. Kelas streambuf mengimplementasikan beberapa fungsi yang menentukan buffer streaming, tetapi fungsi-fungsi khusus yang tersisa untuk kelas yang berasal dari streambuf: strstreambuf, stdiobuf, dan filebuf.
13
AT & T dan UNIX System Laboratories C
Language System documentation
menggunakan istilah reserve area dan buffer, bukan buffer streaming. Stream buffer berfungsi sebagai buffer antara sumber data atau target data dan fungsi fungsi anggota kelas yang berasal dari ios menganggapnya sebagai raw data.
Dalam sebagian besar sistem operasi, panggilan sistem untuk membaca data dari sumber data atau menulis ke target data adalah sebuah operasi yang besar. Jika aplikasi Anda dapat mengurangi jumlah sistem panggilan yang mereka harus buat, kinerja akan meningkat. Dengan bertindak sebagai buffer antara sumber data atau target data dan fungsi format, stream buffer dapat mengurangi jumlah panggilan sistem yang dibuat.
Perhatikan, misalnya, sebuah aplikasi yang membaca data dari sumber data. Jika tidak ada buffer, aplikasi harus membuat system call untuk setiap karakter yang dibaca. Namun, jika aplikasi yang menggunakan buffer stream, panggilan sistem hanya akan dibuat ketika buffer kosong. Setiap panggilan sistem akan membaca karakter yang cukup dari sumber data (jika tersedia) untuk mengisi buffer lagi.
Buffer stream diimplementasikan sebagai array dari byte. Untuk setiap buffer streaming, pointer didefinisikan yang mengarah ke elemen dalam array ini untuk menentukan mendapatkan area (ruang yang tersedia untuk menerima byte dari sumber data), dan menempatkan area (ruang yang tersedia untuk menyimpan byte yang dalam perjalanan mereka ke target data).
Buffer stream tidak harus terpisah antara get area dan input area:
Buffer stream yang digunakan untuk input, seperti yang terpasang ke sebuah obyek istream, memiliki get area.
Buffer stream yang digunakan untuk output, seperti yang terpasang ke sebuah obyek ostream, memiliki put area.
14
Buffer stream yang digunakan untuk kedua input dan output, seperti yang terpasang ke sebuah obyek iostream, dapat terdiri dari get area dan put area.
Dalam implementasi stream buffer oleh kelas filebuf yang khusus untuk menggunakan file-file sebagai sumber data atau target data, get area dan put area tumpang tindih (overlap).
Dalam pelaksanaan sebenarnya stream buffer , pointer yang dikembalikan oleh fungsi-fungsi ini dengan nilai char. Dalam konsep abstrak stream buffer , di sisi lain, pointer ini menunjuk ke batas antara nilai-nilai char. Untuk membuat korespondensi antara konsep abstrak dan pelaksanaan aktual, Anda harus melihat pointer sebagai batas sebelum karakter.
Gambar 2. 3 Diagram Stream Buffer
2.7
Radio Broadcasting
Penggunaan teknologi internet broadcasting (sumber: http://www.ibsys.com) pada radio streaming ini memungkinkan sebuah stasiun radio melakukan siarannya menggunakan jalur internet. Ada dua jenis layanan yang dapat dilakukan oleh teknologi
15
intenet broadcasting ini yaitu secara on-demand dan live. On-Demand adalah teknologi internet broadcasting dimana penyiaran dilakukan setelah dilakukan rekaman sebelumnya. Contoh stasiun radio yang melakukan hal ini adalah radio BBC berbahasa Indonesia yang dapat diakses pada alamat http://www.bbc.co.uk/indonesia. Sedangkan internet broadcasting secara live atau livecasting, adalah penyiaran dilakukan saat itu juga atau real time saat kejadian tengah berlangsung. Contoh stasiun radio yang menggunakan teknologi ini adalah radio Elshinta yang dapat diakses pada alamat pnm://elshinta.indosat.net.id/live.ra. Secara teknis internet broadcasting terbagi atas dua jenis yaitu unicasting dan multicasting
2.8
Pengertian Unicasting
Unicasting adalah proses pengiriman data dari satu titik ke titik lainnya tidak secara realtime sebagaimana layaknya layanan berbasis IP (Internet Protocol) . Proses unicasting, seperti kita mengirimkan email yang isinya sama satu persatu ke rekan kita. Dengan unicasting, sebuah file media yang telah dibuat kita simpan dahulu di sebuah media penyimpanan.
Gambar 2. 4 Skema Unicasting
Jika ada pengguna internet yang ingin menikmati file media tersebut, maka file akan di encode terlebih dahulu oleh server streaming sebelum diterima oleh komputer pengguna tersebut. Proses penyampaian file media dari media penyimpanan hingga ke komputer pengguna tersebut dapat terjadi berulang ulang, tergantung berapa banyak
16
orang yang ingin menikmati file tersebut. Untuk itu maka unicasting ini cocok untuk internet broadcasting on-demand.
2.9
Pengertian Multicasting
Multicasting adalah proses pengiriman data dari satu titik ke banyak titik yang merupakan bagian tertentu dari suatu grup tertentu dan yang memang menginginkan data tersebut, seperti jika kita mengirimkan sebuah email ke suatu mailing list kelompok kerja yang terbatas.
Gambar 2. 5 Skema Multicasting
Multicasting bersifat real time dan saling berbagi rute antar titik untuk menuju ke titik tujuan yang beragam tersebut. Dengan multicasting, file media yang tengah kita buat langsung dibawa ke streaming server untuk di streaming kan dan hasilnya langsung disalurkan saat itu juga ke satu titik tertentu untuk disebarkan. Proses penyampaian file media dari proses pembuatan hingga ke komputer pengguna tersebut hanya terjadi sekali saja, yaitu saat file media tersebut dibuat untuk pertama kalinya. Untuk itu maka multicasting ini cocok untuk internet broadcasting live.
17
2.10
Pengertian Broadcasting
Broadcasting adalah proses pengiriman data dari satu titik ke banyak titik, seperti kita mengirimkan sebuah email ke mailing list, setiap titik ( anggota mailing list) mau tidak mau akan menerima email kita. Proses broadcasting ini berlaku pada pemancaran siaran radio atau televisi melalui gelombang udara (frekuensi) tertentu yang sebenarnya semua frekuensi tersebut di terima oleh antena pesawat penerima kita.
Gambar 2. 6 Skema Broadcasting
2.11
Komponen Streaming Media
Streaming media merupakan suatu system yang terdiri dari komponenkomponen yang saling mendukung. Komponen-komponen yang diperlukan untuk melakukan streaming media adalah sebagai berikut : 1. Media source, yaitu sumber yang akan menampilkan suatu konten presentasi. Media source dapat berupa file atau sumber yang sifatnya live seperti kamera video atau mikrofon. 2. Encoder, adalah program yang digunakan untuk mengubah media source ke format yang sesuai untuk streaming. Biasanya melalui kompresi yang cukup tinggi untuk mengatasi keterbatasan lebar jaringan (bandwidth).
18
3. Media server, digunakan untuk mendistribusikan on demand dan live suatu konten ke pengguna. Juga bertanggung jawab untuk mencatat segala aktifitas streaming yang nantinya digunakan untuk billing maupun statistik. 4. Player, dibutuhkan untuk menampilkan atau mempresentasikan konten multimedia (datastream) yang diterima dari media server. File file khusus yang disebut metafile digunakan untuk mengaktifkan player dari halaman web. Metafile berisi keterangan dari konten multimedia. Browser web mengunduh dan meneruskannya ke player yang tepat untuk mempresentasikannya. Selain itu juga berfungsi untuk melakukan dekompresi (decode). 2.12
Masalah Streaming multimedia
Dalam melakukan streaming multimedia, untuk menghasilkan presentasi yang baik seringkali timbul kendala. Kendala kendala yang dapat terjadi dalam melakukan streaming multimedia adalah bandwidth, waktu tunda (delay) dan sinkronisasi, Interoperability. 2.12.1 Bandwidth
Bandwidth sangat berpengaruh terhadap kualitas presentasi suatu data stream. Disamping kondisi jaringan juga mempengaruhi bandwidth, hal yang perlu diperhatikan adalah ukuran data stream harus sesuai dengan kapasitas bandwidth jaringan. Untuk mengatasinya digunakan kompresi data dan penggunaan buffer. 2.12.2 Sinkronisasi dan delay
Agar media yang berbeda sampai dan di presentasikan pada pengguna seperti aslinya, maka media tersebut harus tersinkronisasi sesuai dengan timeline presentasi tersebut dan delay seminimal mungkin. Adanya kerugian sinkronisasi dan delay dapat
19
disebabkan oleh kondisi jaringan yang buruk, sehingga mengakibatkan timeline presentasi menjadi kacau. Delay (latency), adalah waktu tunda yang dibutuhkan data untuk menempuh jarak dari asal ke tujuan. Dalam audio streaming, waktu tunda merupakan suatu permasalahan yang harus diperhitungkan karena kualitas suara bagus tidaknya tergantung dari waktu tunda.
Waktu tunda end-to-end adalah jumlah waktu tunda konversi suara analog ke digital, waktu tunda waktu paketisasi atau bisa disebut juga waktu tunda panjang paket dan waktu tunda jaringan pada saat t (waktu) tertentu.
2.12.3 Interoperability
Idealnya adalah presentasi yang kita buat harus dapat dipakai oleh semua jenis pengguna,CPU yang berbeda,system operasi yang berbeda dan media player lainnya. 2.13
QoS (Quality of Service)
QoS merupakan kependekan dari Quality of Service. Dalam buku Quality of Service yang ditulis oleh Paul Ferguson, didefinisikan bahwa QoS adalah suatu pengukuran tentang seberapa baik jaringan dan merupakan suatu usaha untuk mendefinisikan karakteristik dan sifat dari suatu servis. QoS biasanya digunakan untuk mengukur sekumpulan atribut performansi yang telah dispesifikasikan dan biasanya diasosiasikan dengan suatu servis. Pada jaringan berbasis IP, IP QoS mengacu pada performansi dari paket-paket IP yang lewat melalui satu atau lebih jaringan. QoS didesain untuk membantu end user menjadi lebih produktif dengan memastikan bahwa dia mendapatkan performansi yang handal dari aplikasi-aplikasi berbasis jaringan.
20
QoS mengacu pada kemampuan jaringan untuk menyediakan layanan yang lebih baik pada trafik jaringan tertentu melalui teknologi yang berbeda-beda. QoS merupakan suatu tantangan yang cukup besar dalam jaringan berbasis IP dan internet secara keseluruhan. Tujuan dari QoS adalah untuk memuaskan kebutuhan-kebutuhan layanan yang berbeda, yang menggunakan infrastruktur yang sama. QoS menawarkan kemampuan untuk mendefinisikan atribut-atribut layanan jaringan yang disediakan, baik secara kualitatif maupun kuantitatif. 2.13.1 Komponen-komponen dari QoS
Kompponen Komponen dari QoS adalah: -
Delay, merupakan total waktu yang dilalui suatu paket dari pengirim ke penerima melalui jaringan. Delay dari pengirim ke penerima pada dasarnya tersusun atas hardware latency, delay akses, dan delay transmisi. Delay yang paling sering dialami oleh trafik yang lewat adalah delay transmisi. Untuk aplikasi-aplikasi suara dan video interaktif, kemunculan dari delay akan mengakibatkan sistem seperti tak merespon. Tabel 2. 1 Delay yang direkomendasikan
No Waktu tunda 1 0-150 ms 2 150-300 ms
Kategori Dapat diterima untuk kebanyakan aplikasi pengguna Masih dapat diterima jika pelaksana (administrator) telah mengetahui akibat waktu transmisi pada QoS aplikasi pengguna 3 Lebih dari 300 ms Tidak dapat diterima untuk perencanaan rancangan jaringan pada umumnya; bagaimana pun juga, hal ini disadari bahwa kasus-kasus tertentu batas ini akan terlampaui [sumber : http://www.ciscopress.com]
-
Packet Loss, Packet loss terjadi ketika ada peak load dan congestion ( kemacetan transmisi paket akibat padatnya traffic yang harus dilayani) dalam batas waktu tertentu, maka frame (gabungan data payload dan header yang ditransmisikan ) akan dibuang. Sebagaimana perlakuan terhadap frame data lainnya pada jarinngan berbasis IP. Packet loss untuk aplikasi voice dan multimedia tidak dapat di
21
toleransi,sehingga harus dibuat seminimal mungkin agar streaming berjalan dengan baik. Tabel 2. 2 Rekomendasi Packet Loss
No Paket hilang Kategori 1 0-1% Baik 2 1-5% Dapat Diterima 3 >10 % Tidak Dapat Diterima [sumber : http://www.ciscopress.com]
-
Throughput, ternyata konsep bandwidth tidak cukup untuk menjelaskan kecepatan jaringan dan apa yang terjadi di jaringan. Untuk itulah konsep throughput muncul. Throughput adalah bandwidth aktual yang terukur pada suatu ukuran waktu tertentu dalam suatu hari menggunakan rute internet yang spesifik ketika sedang mendownload suatu file. Throughput walaupun memiliki satuan dan rumus yang sama dengan bandwidth, tetapi throughput lebih pada menggambarkan bandwidth yang sebenarnya (aktual) pada suatu waktu tertentu dan pada kondisi dan jaringan internet tertentu yang digunakan untuk men-download suatu file dengan ukuran tertentu. Dengan hanya memgunakan bandwidth sebagai ukuran, seharusnya file yang berukuran 64 kb akan bisa di-download dalam waktu sekedip mata atau satu detik, tetapi setelah diukur ternyata memerlukan waktu 4 detik. Jadi jika ukuran file yang di-download adalah 64 kb, sedangkan waktu downloadnya adalah 4 detik, maka bandwidth yang sebenarnya atau disebut sebagai throughput adalah 64 kb / 4 detik = 16 kbps. Beberapa faktor yang menentukan bandwidth dan throughput adalah: -
Piranti jaringan
-
Tipe data yang ditransfer
-
Topologi jaringan
-
Banyaknya pengguna jaringan
-
Spesifikasi komputer client/user
-
Spesifikasi komputer server
-
Induksi listrik dan cuaca
-
Dan alasan-alasan lain
22
2.14
Shoutcast DNAS Server
Shoutcast Radio Distributed Network Audio Software (DNAS) merupakan software encoder yang berguna untuk mengalirkan data audio yang dikirimkan oleh komputer pengguna dengan dukungan Shoutcast DSP plugin for Winamp yang terpasang pada Winamp media player untuk dapat dialirkan melalui jalur internet pada komputer pengguna. Saat ini Shoutcast DNAS server tersedia dalam beberapa versi yaitu versi windows,mac dan linux. Versi terakhir Shoutcast DNAS server dapat diunduh secara gratis pada situs : http://www.shoutcast.com/download.
Gambar 2. 7 SHOUTcast Server yang sedang berjalan
2.15
Shoutcast DSP plugin
Shoutcast radio Source Plugin for Winamp (DSP Plugin), hanya tersedia pada versi x86/win32 platform. Pada versi Windows ini, DSP plugin setelah terinstal akan menyatu dengan pemutar Winamp sebagai sebuah source DSP/Effect. Pengguna dapat mengatur konfigurasi server radio streaming dengan mudah karena antarmuka
23
nya menggunakan GUI. Sementara itu untuk pengguna linux hanya tersedia versi transcoder nya (sc_trans) saja yang berfungsi sebagai alat komunikasi antara server audio streaming dengan pengguna. Shoutcast DSP plugin maupun transcoder sc_trans untuk
Linux
dapat
diunduh
secara
gratis
melalui
situs
:
http://www.shoutcast.com/download.
Gambar 2. 8 SHOUTcast Plugin
2.16
Pengertian perangkat lunak
Menurut (Roger S. Pressman,1997:10) Perangkat lunak adalah : 1. Perintah (program computer) yang bila di eksekusi memberikan fungsi seperti yang diinginkan 2. Struktur data yang memungkinkan program memanipulasi informasi 3. Dokumen yang menggambarkan operasi dan kegunaan program
24
2.17
Karakteristik perangkat lunak
2.17.1 Karakteristik yang terdapat pada perangkat lunak
1. Pembuatan suatu perangkat lunak berdasarkan logika. Ini yang menyebabkan pembuatan suatu perangkat lunak yang dibuat oleh seseorang akan berbeda dengan orang lain walaupun hasilnya sama 2. Perangkat lunak dikembangkan bukan dibuat oleh pabrik tertentu. Hal ini menandakan bahwa perangkat lunak tidak dibuat secara massal, karena dalam pembuatan perangkat lunak memerlukan perencanaan yang baik. 3. Perangkat lunak tidak akan pernah usang karena selalu diperbaharui.
2.18
Batasan perangkat lunak
Ada beberapa hal yang harus diperhatikan dalam pembuatan perangkat lunak yaitu : 1. Function Fungsi dari perangkat lunak yang akan dibuat harus dievaluasi kembali. Hingga didapat fungsi dari perangkat secara lebih rinci 2. Performance Unjuk kerja meliputi hambatan atau kendala pembuatan perangkat lunak, keterbatasan memori serta ketergantungan terhadap mesin mesin tertentu. 3. Interface Antarmuka meliputi : a. Perangkat keras yang akan dipakaiuntuk mengerjakan perangkat lunak dan peralatan yang secara tidak langsung mengontrol perangkat lunak b. Perangkat lunak yang telah ada harus digabung dengan perangkat lunak yang baru
25
c. Pemakai yang akan menggunakan perangkat lunak melalui terminal atau piranti input/output d. Prosedur pemakaian perangkat lunak 4. Reliability Hal terakhir yang perlu diperhatikan adalah realibility atau keandalan perangkat lunak yang dihasilkan.
2.19
REKAYASA WEB RINGKAS (AGILE WEB ENGINEERING)
Teknologi Web sebetulnya tidaklah berbeda dengan teknologi baru yang pernah dimunculkan dalam pengembangan Rekayasa Perangkat Lunak. Namun ada beberapa kriteria yang membedakan antara aplikasi berbasis Web dengan pengembangan perangkat lunak tradisional (McDonald and Welland 7). Hal ini meliputi: 1. Siklus hidup (life-cycle) pengembangan yang pendek, biasanya kurang dari 3 bulan. 2. Pembuatan sistem yang mengintegrasikan perangkat lunak (software) dan data. 3. Tim pengembang (developer team) yang terdiri dari orang-orang dari berbagai ilmu disiplin. 4. Fokus terhadap analisa kebutuhan, termasuk analisa kebutuhan bisnis yang lebih jelas. 5. Melakukan pengujian dan evaluasi secara bertahap. 6. Memperhatikan evolusi yang mungkin terjadi terhadap sistem yang sedang dikembangkan. Proyek-proyek perangkat lunak semestinya dapat memetakan siapa melakukan apa, dimana, mengapa, bagaimana dan kapan. Saat ini banyak yang mulai mengklasifikasikan proses perangkat lunak menjadi dua macam yakni, kelas berat (monumental process) atau kelas ringan (agile process).
26
Proses monumental meliputi berbagai variasi dari Waterfall Approach atau Stagewise Model seperti Structured System Analysis and Design Method (SSADM). Proses monumental terkini seperti Rational Unified Process (RUP) terpengaruhi lebih banyak oleh pengembangan yang dikendalikan oleh resiko pada tahun 1980-an, dan pengembangan dengan orientasi obyek pada awal tahun 1990-an. Proses monumental mencoba mencakup seluruh aktifitas pengembangan perangkat lunak yang luas. Contohnya pada RUP, sangat bergantung pada organisasi dan pengembang untuk membuat sekumpulan proses dan teknik pendukung yang cocok bagi satu bagian (divisi) yang dibutuhkan oleh proyek bersangkutan. Kebanyakan proses monumental adalah berorientasi pada proses dan prediktif secara alami, sehingga lebih dini dalam mendeskripsikan masalah dan menawarkan pemecahannya. Pada ujung yang berlawanan dengan proses monumental, terdapat klasifikasi terbaru yang disebut proses ringkas (agile), contohnya Extreme Programming dan Dynamic System Development (DSDM). Proses ringkas cenderung untuk fokus terhadap aktifitas tertentu dalam pengembangan perangkat lunak dan mempunyai karakteristik umum seperti tim pengembang yang berjumlah sedikit dan jangka waktu pengembangan yang pendek, ditambah lagi dengan fokus terhadap penyampaian dengan perangkat lunak dibandingkan dengan penyampaian yang terdokumentasi. Proses ringkas menuntut tim kecil yang terdiri dari pengembang-pengembang dengan kemampuan tinggi untuk memulai proses sederhana dan mengembangkannya untuk memenuhi kebutuhan organisasi dan proyek mereka. Proses ringkas sangat berorientasi pada manusia, memberikan semangat dan mendukung perubahan, sehingga memungkinkan pemanfaatan seluruh waktu pengembangan untuk menyelesaikan masalah-masalah yang dihadapi dan solusi yang akan diberikan.
27
2.19.1 Pemodelan
Proyek-proyek
perangkat
lunak
tradisional
selalu
berkonsentrasi
pada
pembuatan komponen-komponen perangkat lunak dengan sistem-sistem pendukung, yang biasanya adalah bersifat umum. Komponen-komponen perangkat lunak dan sistem pendukung biasanya dikembangkan terpisah dari data yang mereka operasikan.
Rekayasa Web (Web Engineering) dilain pihak menghasilkan penyampaianpenyampaian (deliverables), yang terdiri dari komponen-komponen perangkat lunak dan sistem pendukung yang dikembangkan bersamaan dengan pembuatan data yang akan dioperasikan ataupun yang akan mereka dampingi. Artinya, proyek Rekayasa Web menghasilkan solusi yang terdiri dari data dan perangkat lunak. Hal yang perlu diperhatikan juga adalah bagaimana nantinya pengguna berinteraksi dengan sistem itu sendiri. Dalam hal ini yang perlu diperhatikan adalah bagaimana menyediakan pengguna dengan antarmuka (interface) yang mudah digunakan. Perubahan utama yang dilakukan oleh rekayasa perangkat lunak tradisional dalam mengembangkan sistem lawas adalah di model perangkat lunak (software model), yang dikendalikan oleh tilik-tilik (views) dari model bisnis (business) dan model ranah (domain).
Gambar 2. 9 Hubungan domain-domain dalam RPL
Siklus hidup (life-cycle) dan informasi yang dipegang oleh model perangkat lunak berhubungan dengan model bisnis (business) dan model ranah (domain)
28
cenderung terlihat statis. Jarang sekali model perangkat lunak (software) mempengaruhi perubahan terhadap model bisnis ataupun model ranah. Akibatnya, banyak solusi perangkat lunak yang dihasilkan dengan rekayasa perangkat lunak hanyalah merupakan implementasi dari praktek bisnis yang sedang berjalan. Rekayasa Web di sisi lain terlihat lebih rumit dengan adanya penambahan model rancang
kreatif
(creative design),
yang memaparkan masalah-masalah
yang
berhubungan dengan aspek-aspek kemudahan antarmuka bagi pengguna. Web engineering membutuhkan adanya rekayasa ulang (re-engineering) di model-model bisnis, ranah dan perangkat lunak. Jika organisasi ingin membuat dampak ini menjadi suatu keuntungan, maka inisiatif rekayasa ulang (re-engineering) sangat disarankan untuk memakai model-model dalam rangka memastikan kesuksesan dari sebuah sistem yang ditawarkan.
Gambar 2. 10 Hubungan domain-domain dalam RWR
Benturan yang terjadi antara model-model perangkat lunak (sofware), rancang kreatif (creative design), bisnis (business) dan ranah (domain) dalam Rekayasa Web harus direfleksikan dalam sebuah proses Rekayasa Web, jika hal tersebut ditunjuk untuk menangani masalah-masalah yang dikaitkan dengan pengembangan aplikasi Web.
29
Esensinya tim pengembang sadar akan berbagai interaksi yang terjadi selama siklus hidup pengembangan diantara model-model Rekayasa Web.
2.19.2 Siklus Hidup (Life-Cycle) Rekayasa Web Ringkas
Proses Rekayasa Web Ringkas (RWR) mengidentifikasikan semua tahapantahapan utama yang dirasa perlu dalam pengembangan aplikasi berbasis Web. Siapapun yang memiliki pengalaman dalam proses perangkat lunak, terutama yang beradasarkan model Waterfall, mungkin awalnya kurang tertarik pada diagram dibawah ini. Walaupun banyak kesamaan nama untuk
setiap tahap:
Business
Analysis,
Requirements, Design, Implementation, Testing dan Evaluation, namun berbeda dalam penerapannya.
Gambar 2. 11 Siklus hidup dalam Rekayasa Web Ringkas
30
2.19.3 Business Analysis
Pada dasarnya tujuan dari tahap Business Analysis adalah mengerti secara jelas masalah-masalah yang akan ditangani oleh aplikasi Web yang ditawarkan. Hal ini lebih sulit dari kedengarannya. Penting sekali bahwa semua pengembang harus terlibat dalam tahap ini sehingga semua mengerti tentang masalah-masalah yang akan dihadapi. Tim pengembang harus menyediakan dan mengajukan solusi, dan adalah hal yang naif jika seseorang memberikan solusi tanpa mengerti permasalahannya. Kebanyakan proyek-proyek akan memulai proses RWR (Rekayasa Web Ringkas) pada fase Business Analysis. Jika tim menemukan bahwa sulit untuk menjelaskan ataupun setuju dengan ruang masalahnya, maka diperlukan kehati-hatian juga ketika masuk ke dalam fase Evaluation nanti. Fase Evaluation dapat digunakan untuk mengevaluasi keberadaan Web yang ada ataupun yang dimiliki oleh pesaingpesaing lainnya untuk memahami permasalahan lebih baik lagi. Tim juga seharusnya memberikan pikiran kepada rencana Evaluation mengenai pertanyaan-pertanyaan berikut: sudahkah kita menghasilkan sebuah produk? Dengan kata lain, solusi yang memecahkan permasalahan yang terindetifikasi.
2.19.4 Requirements
Setiap anggota tim harus setuju bahwa setiap masalah harus diselesaikan sebelum aktifitas dimulai. Tahap Requirements adalah mengenai bagaimana memberikan definisi terhadap apa yang akan dilakukan oleh solusi yang sedang ditawarkan (functional requirements), dan apa hambatan-hambatan yang akan dihadapi nantinya (non-functional requirements). Di dalam pengembangan aplikasi berbasis Web, wajar terdapat sejumlah besar non-functional requirements yang harus secara seksama diperhatikan jika ingin proses pengembangan Web tersebut berhasil. Pertimbangan besar seharusnya diberikan untuk
menunjukkan
non-functional
31
requirements, khususnya hal-hal yang terkati dengan arsitektur, termasuk antarmuka pengguna dan penggunaannya.
2.19.5 Design
Rancangan (design) melibatkan pengertian, koordinasi dan komunikasi mengenai semua hal-hal penting, sebelum implementasi, pada pembangunan aplikasi berbasis Web. Perlu dilakukan komunikasi antara para pengembang sejenis, yang terdapat dalam tim. Komunikasi yang dilakukan akan memungkinkan terwujudnya suatu pola rancang (design pattern) yang dapat bertumbuh dan matang secara cepat. Disamping itu juga akan mengurangi masalah-masalah portabilitas dan pengulangan design.
2.19.6 Implementation
Tahap ini tidak kalah penting dari tahap-tahap sebelumnya. Walaupun terdapat banyak perbedaan antara fase design dan implementation (implementasi), keduanya membutuhkan pengambilan keputusan yang memiliki dampak besar terhadap kesukesan suatu proyek. Dalam tahap implementasi, diharapkan para pengembang dapat berkomunikasi melalui source code. Namun sayangnya, komunikasi melalui source code mungkin hanya cocok untuk bagi sudut pandang software model dan creative design model. Semua pengembang seharusnya berkolaborasi dan fokus dengan usaha yang dilakukan melalui sesi-sesi diskusi dan review dari penggunaan aplikasi melalui browser.
2.19.7 Testing
Testing merupakan tahap penting dalam kegiatan pembuatan perangkat lunak. Sangatlah esensial bagi setiap pengembang untuk menyadari mengenai tujuan tahap
32
testing ini. Tujuan dari testing adalah memastikan apakah aplikasi telah dibangun sesuai dengan rencana awal. Setiap pengembang harus menanyakan pertanyaan ini. Apakah mereka telah menghasilkan produk yang benar? Selain melakukan testing pada kebutuhan-kebutuhan fungsional, adalah esensial bahwa setiap pengembang mengerti pentingnya testing dilakukan pada kebutuhankebutuhan non-fungsional. Tim pengembang, seharusnya juga mengajukan pertanyaanpertanyaan non-fungsional dalam tahap testing ini. Contohnya adalah: apakah aplikasi yang kita buat akan kompatibel dengan berbagai jenis web browser yang akan digunakan oleh pengguna nantinya. Bagaimana juga dengan spesifikasi komputer yang akan digunakan (ukuran layar, bandwidth , kecepatan processor, memory, dan lainlain)? Apakah aplikasi akan mampu menangani beban yang diharapkan? Apakah sistem cukup portable?
2.19.8 Evaluation
Rencana evaluation (evaluasi) seharusnya didapat dari masalah-masalah yang ditemui pada saat tahap Business Analysis. Pada dasarnya, tim harus melakukan tahap evaluasi dengan menanyakan pertanyaan berikut: apakah kita telah menghasilkan produk yang benar? Barulah setiap orang dimungkinkan untuk mengetahui apakah suatu proyek dapat memecahkan masalah atau tidak. Evaluasi yang dilakukan oleh pengembang dengan keahlian tinggi akan memberikan pengertian yang lebih baik mengenai masalah-masalah yang timbul. Pengertian baru tersebut akan menjadi masukan yang dapat dibawa kembali ke tahap Business Analysis dan Requirements.
33
Gambar 2. 12 Tahap evaluasi dalam RWR
2.20
Pengertian UML (Unified Modeling Language)
UML adalah bahasa standar yang digunakan untuk menjelaskan dan memvisualisasikan artifak dari proses analisis dan desain berorientasi obyek. UML menyediakan standar notasi dan diagram yang bisa digunakan memodelkan suatu sistem. UML dikembangkan oleh Grady Booch, Jim Rumbaugh dan Ivar Jacobson. UML menjadi bahasa yang bisa digunakan untuk berkomunikasi dalam perspektif obyek antara user, developer dan project manajer. UML memungkinkan developer melakukan pemodelan secara visual,yaitu penekanan pada penggambaran, bukan didominasi oleh narasi. Pemodelan visual membantu untuk menangkap struktur dan kelakuan (behavior) suatu obyek,
34
mempermudah
penggambaran
interaksi
antara
elemen
dalam
sistem
dan
mempertahankan konsistensi antara desain dan implementasi dalam pemrograman. Namun karena UML hanya merupakan bahasa pemodelan, maka UML bukanlah rujukan bagaimana melakukan analisis dan desain berorientasi obyek. Untuk mengetahui bagaimana melakukan analisis dan desain berorientasi obyek, sudah terdapat beberapa metodologi yang bisa diikuti seperti Metode Booch, Metode Coad and Yourdan, Metode Jacobson, Metode Rumbaugh, Metode Wirfs-Brock, atau mengikuti metode pengembangan sistem RUP (Rational Unified Process). Didalam UML terdapat 8 diagram, antara lain Use Case Diagram, Class Diagram, Sequence Diagram, Collaboration Diagram, Statechart Diagram, Activity Diagram, Component Diagram, dan Deployment Diagram. 2.20.1 Notasi Umum dalam UML
Dalam UML terdapat notasi-notasi yang sering digunakan antara lain : 1. Actor Actor adalah segala sesuatu yang berinteraksi dengan sistem komputer. Actor bisa merupakan sebuah perangkat keras / komputer, orang maupun obyek lain dalam sistem yang sama. Biasanya yang dilakukan oleh actor adalah memberikan informasi pada sistem dan/atau memerintahkan sistem untuk melakukan sesuatu.
Gambar 2. 13 Actor
2. Class Class merupakan pembentuk utama dari sistem berorientasi obyek karena class menunjukan kumpulan obyek yang memiliki attribut dan operasi
35
yang sama. Class digunakan untuk mengimplementasikan interface. Class digunakan untuk mengabstraksikan elemen elemen dari sistem yang
sedang
dibangun.
Class
juga
bisa
digunakan
untuk
mengabstraksikan elemen-elemen dari sistem yang sedang dibangun. Class bisa untuk mempresentasikan baik perangkat lunak maupun perangkat keras, baik konsep maupun benda nyata. Notasi class berbentuk persegi panjang yang berisi 3 bagian : persegi panjang paling atas untuk nama class, persegi panjang paling bawah untuk operasi dan persegi panjang di tengah untuk attribut. Attribut digunakan untuk menyimpan informasi. Nama attribut menggunakan kata benda yang bisa dengan jelas merepresentasikan informasi yang disimpan didalamnya. Operasi menunjukan sesuatu yang bisa dilakukan oleh obyek, dan menggunakan kata kerja.
Gambar 2. 14 Class
2.20.2 Business Use Case Diagram vs. Use Case Diagram
Business Use Case : 1. Menggambarkan proses bisnis dari suatu organisasi 2. Proses bisnis nya bisa bercerita tentang proses manual atau proses otomatis
Use Case : 1. Menjelaskan apa yang akan dilakukan oleh sistem yang akan dibangun dan siapa yang berinteraksi dengan sistem.
36
2. Bagaimana actor berinteraksi dengan software Untuk lebih jelasnya dapat dijelaskan dibawah ini :
Business Use Case :
Gambar 2. 15 Business Use Case
Penjelasan : Pemohon diatas disebut Actor. Pemohon rolenya yaitu mendaftar dan mengambil surat ijin. Business use case digambarkan seperti oval dan ada garisnya. Gambar diatas business use case “mendaftar” sudah termasuk business use case “meminta persyaratan”. Istilah ini disebut “include”.
Use Case :
Gambar 2. 16 Use Case
37
Penjelasan : Gambar use case diatas adalah use case diagram untuk sistem ATM. Actor customer melalui sistem ATM bias apa aja? Jawabannya : bisa deposit funds, transfer fund, change pin, withdraw money, view balance dan make payment. Begitu juga untuk actor bank officer dan credit system.
2.20.3 Class Diagram
Class Diagram menunjukan hubungan antar kelas dalam sistem yang sedang dibangun dan bagaimana mereka saling berkolaborasi untuk mencapai suatu tujuan. Class Diagram umumnya tersusun dari elemen class, interface, dependency, generalization, dan association. Berikut contoh dari Class Diagram :
Gambar 2. 17 Class Diagram
Penjelasan : Class diagram diatas menggambarkan Class diagram untuk use case Withdraw Money pada kasus use case diatas. Terdapat 4 class yaitu : Card Reader, Account, ATM Screen dan Cash Dispenser. Pada class Card Reader, memiliki “attribute” Card Number dan memiliki “operation” Accept Card, Eject Card dan Read Card. Jadi inti
38
dari attribute adalah dimisalkan isi tabel dari suatu database dan untuk inti dari operation adalah “suatu class melakukan apa / bisa apa saja”.
2.20.4 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 atas dimensi vertikal (waktu) dan dimensi horizontal (objek-objek yang terkait). Sequence diagram biasa digunakan untuk menggambarkan skenario atau rangkaian langkah langkah yang dilakukan sebagai respon dari sebuah event untuk menghasilkan output tertentu.
Diawali dari apa yang memicu aktivitas tersebut, proses dan perubahan apa saja yang terjadi secara internal dan output apa yang dihasilkan. Pembuatan Sequence Diagram merupakan aktivitas yang paling kritikal dari proses desain karena inilah yang menjadi pedoman dalam proses pemrograman nantinya dan berisi aliran kontrol dari program.
Gambar 2. 18 Sequence Diagram
39
Penjelasan : Dari gambar diatas adalah misalkan customer bernama Joe, ingin mengambil uang $20 di ATM. Sequence Diagramnya adalah seperti diatas. Mulai dari Joe memasukan kartu ke card reader (no.1) yang kemudian oleh card reder dibaca nomornya dan sampai keluar kartunya (no.17).
2.21
PHP (Hypertext Preprocessor)
PHP adalah bahasa pemrograman script yang paling banyak dipakai saat ini. PHP banyak dipakai untuk memrogram situs web dinamis, walaupun tidak tertutup kemungkinan digunakan untuk pemakaian lain. Contoh terkenal dari aplikasi PHP adalah phpBB dan MediaWiki (software di belakang
Wikipedia).
ASP.NET/C#/VB.NET
PHP
juga
Microsoft,
dapat
dilihat
ColdFusion
sebagai
Macromedia,
pilihan
lain
dari
JSP/Java
Sun
Microsystems, dan CGI/Perl. Contoh aplikasi lain yang lebih kompleks berupa CMS (Content management System) yang dibangun menggunakan PHP adalah Mambo, Joomla!, Postnuke, Xaraya, dan lain-lain. 2.21.1 Sejarah PHP
Pada awalnya PHP merupakan kependekan dari Personal Home Page (Situs Personal). PHP pertama kali dibuat oleh Rasmus Lerdorf pada tahun 1995. Pada waktu itu PHP masih bernama FI (Form Interpreted), yang wujudnya berupa sekumpulan script yang digunakan untuk mengolah data form dari web. Selanjutnya Rasmus merilis kode sumber tersebut untuk umum dan menamakannya PHP/FI. Dengan perilisan kode sumber ini menjadi open source, maka banyak programmer yang tertarik untuk ikut mengembangkan PHP.
40
Pada November 1997, dirilis PHP/FI 2.0. Pada rilis ini interpreter PHP sudah diimplementasikan dalam program C. Dalam rilis ini disertakan juga modul-modul ekstensi yang meningkatkan kemampuan PHP/FI secara signifikan. Pada tahun 1997, sebuah perusahaan bernama Zend menulis ulang interpreter PHP menjadi lebih bersih, lebih baik, dan lebih cepat. Kemudian pada Juni 1998, perusahaan tersebut merilis interpreter baru untuk PHP dan meresmikan rilis tersebut sebagai PHP 3.0 dan singkatan PHP dirubah menjadi akronim berulang PHP: Hypertext Preprocessing. Pada pertengahan tahun 1999, Zend merilis interpreter PHP baru dan rilis tersebut dikenal dengan PHP 4.0. PHP 4.0 adalah versi PHP yang paling banyak dipakai pada awal abad ke-21. Versi ini banyak dipakai disebabkan kemampuannya untuk membangun aplikasi web kompleks tetapi tetap memiliki kecepatan dan stabilitas yang tinggi. Pada Juni 2004, Zend merilis PHP 5.0. Dalam versi ini, inti dari interpreter PHP mengalami perubahan besar. Versi ini juga memasukkan model pemrograman berorientasi objek ke dalam PHP untuk menjawab perkembangan bahasa pemrograman ke arah paradigma berorientasi objek. 2.21.2 Kelebihan PHP dari bahasa pemrograman lain
Bahasa pemrograman PHP adalah sebuah bahasa script yang tidak melakukan sebuah kompilasi dalam penggunaanya. Web Server yang mendukung PHP dapat ditemukan dimana - mana dari mulai apache, IIS, Lighttpd, nginx, hingga Xitami dengan konfigurasi yang relatif mudah. Dalam sisi pengembangan lebih mudah, karena banyaknya milis - milis dan pengembang perangkat lunak yang siap membantu dalam pengembangan. Dalam sisi pemahaman, PHP adalah bahasa scripting yang paling mudah dipelajari karena memiliki referensi yang banyak.
41
PHP adalah bahasa open source yang dapat digunakan di berbagai mesin (Linux, Unix, Macintosh, Windows) dan dapat dijalankan secara runtime melalui console serta juga dapat menjalankan perintah-perintah system. 2.21.3 Sintaks dasar PHP
Sintaks dasar PHP mirip dengan penggunaan javascript dan beberapa bahasa scripting lainnya. Untuk memulai membuat script PHP bisa dilakukan dengan beberapa cara. Suatu skrip akan dikenali sebagai skrip PHP bila diapit oleh tanda: • • . . . . . . .?> • <script language=”PHP”>. . .
Contoh penulisannya dalam program adalah <script language=”PHP”> echo (”Hallo PHP, Aku akan menaklukanmu !! ”);
Atau bisa juga dengan menggunakan tanda Dan ?> echo (”Hallo PHP, Aku akan menaklukanmu !! ”); ?>
2.21.4 Penggabungan script PHP dengan script HTML
Perintah-perintah PHP dapat disisipkan dibagian manapun dalam dokumen HTML, yang perlu dilakukan hanyalah menyisipkannya di dalam skrip HTML dan menyimpannya sebagai file berekstensi PHP. Contoh penggabungan script PHP dengan script HTML:
Script Sisip.php <TITLE>Menyisipkan PHP di Dokumen HTML Cara menyapa PHP dengan akrab:
42
echo("Hallo PHP, Aku akan menaklukanmu !!"); ?>
Jika dijalankan file sisip.php ini, maka akan didapatkan tampilan seperti ditunjukkan pada gambar 2.19.
Gambar 2. 19 hasil tampilan script sisip.php
2.21.5 Penggabungan Script PHP dengan Script HTML
Selain dapat disisipkan pada script HTML, script PHP juga dapat menyisipkan script HTML didalam script PHP itu sendiri dengan menggunakan satu perintah yang terdapat pada PHP <echo>, maka script HTML dapat disisipkan pada script PHP. Contoh : Skrip Sisip.php
Ini ditulis dengan HTML Mudahkan ??"); ?>
43
Jika dijalankan file sisip.php ini, maka akan didapatkan tampilan seperti ditunjukkan pada gambar 2.19.
Gambar 2. 20 Hasil dari script sisip.php
2.21.6
Variabel dan Type data pada PHP
2.21.6.1
Variabel
Mendefinisikan variabel cukup dengan memilih sebuah kata yang akan menjadi nama variabel kemudian diawali dengan tanda $, kemudian isikan nilai dari variabel tersebut. Contoh : $hari = “Senin”; $tanggal = 30;
Sedangkan type variabel dasar yang terdapat pada PHP adalah sebagai berikut : -
Integer Integer menyatakan tipe data bilangan bulat dengan jangkauan/range kira kira dari -2,147,483,648 hingga +2,147,483,647 pada platform 32 bit. Namun bila terdapat data diluar jangkauan tersebut, maka secara otomatis PHP akan mengkonversikannya ke dalam tipe data Floating Point. Contoh : $a=2; $b=3;
44
-
Double/Float Double/Floating point adalah tipe data yang berisi bilangan real atau pecahan. Jangkauan/range dari tipe data ini adalah antara 1.7e-308 sampai 1.7e+308. Data tersebut berbentuk desimal ataupun berbentuk pangkat. Contoh : $c = 4.352; $b = 1.2e3;
-
String String menyatakan tipe data teks (sederetan teks karakter yang tidak menyatakan bilangan). Dalam penulisannya, tipe data string menggunakan tanda kutip tunggal (' ') atau bisa juga menggunakan tanda kutip ganda (" "). Contoh : $nama="Wahyudi Blog"; $url='http://pksm.com';
-
Array Tipe data array ini mampu untuk menyimpan lebih dari satu data akan tetapi tiap element data dalam array dibedakan menurut nomor indeksnya. Selain itu juga, array merupakan tipe data terstruktur yang berguna untuk menyimpan sejumlah data yang bertipe sama. Bagian bagian yang menyusun array disebut juga dengan element array, yang masing masing dari element dapat diakses secara tersendiri melalui indeks array. Contoh : Array berdimensi satu $hewan[0] $hewan[1] $hewan[2] $hewan[3]
= = = =
"Kucing"; "Kura-kura"; "Anjing"; "Kelinci";
echo("Hewan peliharaan saya adalah $hewan[0]"); ?>
45
2.21.6.2 Tipe Data Object
Tipe data Object bisa berupa bilangan, variabel, ataupun fungsi. Tipe data tersebut dapat membantu programmer untuk membuat sebuah program. Data itu dapat disertakan dalam program sehingga meringkas beberapa fungsi dan dapat memperkecil ukuran file. Semakin kecil ukuran file semakin singkat waktu yang dibutuhkan untuk mengakses file tersebut. Contoh : class blog{ function data_blog(){ echo "http://pksm.com"; } } echo "
Kelas karyawan beralamat di "; $data=new blog; $data->data_blog(); ?>
2.22
Sekilas tentang HTML
2.22.1 Sejarah HTML
HTML merupakan singkatan dari HyperText Markup Language adalah script untuk menyusun dokumen-dokumen Web. Dokumen HTML disimpan dalam format teks reguler dan mengandung tag-tag yang memerintahkan web browser untuk mengeksekusi perintah-perintah yang telah dispesifikasikan di dalam script HTML.
Hypertext Markup Language (HTML) adalah bahasa yang digunakan untuk menulis halaman web. HTML merupakan pengembangan dari standart pemformatan dokumen teks yaitu Standard Generalized Markup Language (SGML). HTML
46
sebenarnya adalah dokumen ASCII atau teks biasa, yang dirancang untuk tidak tergantung pada suatu system operasi tertentu.
HTML dibuat oleh Tim Berners-Lee ketika masih berkerja untuk CERN dan dipopulerkan pertama kali oleh browser Mosaic. Selama awal pengembangan yang sangat pesat. Setiap pengembangan HTML pasti akan menambahkan kemampuan dan fasilitas yang lebih baik daripada versi sebelumnya. Namun perkembangan tersebut tidak sampai mengubah cara kerja dari HTML. 2.22.2 Struktur Dokumen HTML
Hypertext Markup Language ( HTML ) adalah bahasa yang digunakan untuk menulis halaman web. Untuk menyampaikan ide pada web browser, HTML menggunakan apa yang dinamakan tag. Tag selalu dituliskan diantara tanda kecil dan tanda besar (
).
Secara sederhana HTML terdiri dari dua bagian yaitu Header dan Body. Struktur HTML diapit oleh tag awal dan tag akhir . Standar penulisannya adalah: Disini Judul Dokumen HTML Disini penulisan informasi Web
Kode HTML berupa sebuah berkas teks dengan akhiran berekstensi .HTML, .html, .HTM, atau .htm.
47
2.23
Sekilas tentang Multimedia dan Socket Programming
Multimedia
adalah
penggunaan
komputer
untuk
menyajikan
dan
menggabungkan teks, suara, gambar, animasi, juga video dengan alat bantu dan juga koneksi sehingga pengguna dapat berkomunikasi dan berinteraksi dua arah. Data multimedia terdiri dari beberapa jenis : 1. Text (text/plain,text/html) 2. Image (image/gif,image/jpg,image/png) 3. Video (video/mpeg,video/quicktime) 4. Audio (audio/mp3,audio/wav) 5. Application (application/msword,application/octet-stream)
Socket programming adalah pemrograman yang memanfaatkan IP address dan port dalam mengakses sebuah aplikasi. Dalam penyusunan tugas akhir ini, penulis menggunakan Shoutcast DNAS server yang terdapat pada hosting server audio streaming dan menggunakan port 8036 yang didapat dari hosting.
2.24
Script dan Scripting
Skrip (script) adalah semacam bahasa pemrograman dalam tingkat kesulitan yang lebih rendah, tanpa aplikasi hasil kompilasi interpreter; skrip biasanya disisipkan ke dalam bahasa pemrograman yang lebih kompleks dan hasil skrip digunakan oleh bahasa pemrograman yang lebih kompleks itu. Contohnya ialah penyisipan skrip assembly ke dalam program Pascal untuk mengakses hardware pada level bahasa tingkat rendah. Skrip merupakan kumpulan sintaks bahasa pemrograman yang siap untuk di-compile. Scripting adalah semacam metoda untuk menulis skrip pada text editor agar dapat diterjemahkan oleh browser. Pada praktiknya, scripting merupakan teknik
48
membuat skrip sehingga skrip yang kita buat menjadi lebih efisien dan tak memakan banyak memori ketika di-compile / dijalankan. 2.24.1 Perbedaan mendasar antara skrip dengan bahasa pemrograman
a. Pada dasarnya, skrip lebih sederhana daripada bahasa pemrograman. Namun pada perkembangannya, bahasa scripting pun sekarang sudah cukup lengkap. b. Untuk menerjemahkan skrip (menjalankan) tidak perlu suatu kompiler khusus yang lengkap, sedangkan bahasa pemrograman membutuhkan suatu kompiler khusus untuk menjalankan program tersebut. Kompiler sebuah skrip biasanya hanyalah modul (semacam plug-in) pada sisi pemroses skrip; dalam hal ini aplikasi server web seperti Apache. c. Dalam kasus halaman web, skrip diakses melalui browser di internet, sedangkan bahasa pemrograman diakses dengan membuka file atau program aplikasinya. Dilihat dari prosesor mana yang mengeksekusi skrip, penulisan skrip pada dasarnya dibagi menjadi dua, yakni client-side scripting dan server side scripting.
2.24.2 Client-Side Scripting
Client-side scripting melibatkan blok skrip tambahan untuk ditambahkan di file HTML. Dalam hal ini server web tidak akan memperlakukan skrip lain dari tag-tag lain yang sudah ada di halaman HTML, sebaliknya browser-lah yang akan menerjemahkan mereka pada komputer pengguna. Karena itu, scripting jenis ini disebut client-side, yang bekerja di komputer pengguna, bukan di server.
49
2.24.2.1 Kelebihan client-side scripting
1. Tidak diperlukan server khusus untuk menjalankan skrip. 2. Tidak membebani kerja server web, terutama di server web dengan traffic tinggi.
2.24.2.2 Kekurangan client-side scripting
1. Harus didukung oleh browser pihak klien (walaupun secara umum hampir bisa dibilang semua browser mendukung bahasa-bahasa skrip seperti JavaScript atau VBScript, 2. Kode skrip menjadi terlihat oleh pengguna (visible) dan dapat ditiru. Namun demikian, di era open source seperti sekarang ini kebanyakan skrip memang hasil cut & paste. 2.24.2.3 Contoh bahasa client-side script
1. JavaScript JavaScript secara umum didukung oleh dua browser populer, yakni Microsoft Internet Explorer dan Netscape Navigator, hanya saja mereka mendukung dengan caranya masing-masing, tetapi kebanyakan script JavaScript dapat berjalan di kedua browser ini. Demikian pula pada browser lain seperti Opera atau FireFox. Pada tahun 1997 terbentuk The European Computer Manufacturers Association sebagai penyedia standar untuk JavaScript. Netscape baru-baru ini mengumumkan keluarnya JavaScript versi 1.3.
50
2. VBScript Kebanyakan VBScript hanya didukung oleh Microsoft Internet Explorer. Tersedia plug-in untuk memungkinkan klien menggunakan VBScript di Netscape Navigator, tapi plug-in ini tidak gratis.
2.24.3 Server-Side Scripting
Server-side scripting mengunakan skrip yang dijalankan di server web, hasilnya saja yang dikirim ke browser pada sisi klien. 2.24.3.1 Kelebihan server-side scripting
1. Karena skrip berjalan di server, Anda tahu pasti apa yang dapat Anda lakukan dengan script tersebut dan perangkat lunak apa yang tersedia, 2. Jika skrip Anda menghasilkan keluaran dalam bentuk HTML yang baku, hampir semua browser akan dapat melihatnya.
2.24.3.2 Kekurangan server-side scripting
1. Menambah beban kerja Server, 2. Anda harus punya hak akses / permission khusus untuk menggunakan server-side scripting 2.24.3.3 Beberapa contoh server-side script
1. Common Gateway Interface (CGI) Merupakan salah satu protokol gateway yang pertama diciptakan, dan tersukses, untuk menghubungkan web server dan aplikasi. CGI adalah
51
aplikasi eksternal standar yang menghubungkannya dengan informasi server, seperti HTTP atau web server. 2. Server-Side Java, JavaScript, dan VBScript Microsoft IIS server dapat menerjemahkan Java, JavaScript, dan VBScript di server (juga untuk PerlScript). Sever Netscape juga mendukung Java dan Javascript untuk dijalankan di Server. 3. ASP Andalan Microsoft untuk teknologi Scripting Web, terutama didukung oleh Microsoft IIS Server. ASP ini sebenarnya VBScript yang berjalan di sisi server. 4. PHP Bahasa scripting yang baru-baru ini menjadi populer. PHP kadang dikelompokkan dengan sistem operasi Linux dan Web Server Apache, karena sifatnya yang open source dan gratis. 5. Cold-Fusion Dikeluarkan oleh Allaire, Cold-Fusion mulai meningkat kepopulerannya terutama dengan kemampuan pengembangan di lingkungan pengembangan visual (ColdFusion Studio) yang ditawarkan. 6. Miva Dulu dikenal dengan HTMLScript, mirip dengan PHP, namun ditawarkan secara komersial. 7. Servlets Servlets sedang meningkat popularitasnya untuk menulis Java Objects yang meningkatkan fungsi server. Sifat Java yang berorientasi obyek (object oriented) membuat pemrogram mudah menuliskan Servlets. Untuk beberapa kalangan, Java Servlets dianggap lebih efisien daripada CGI. 8. ISAPI, NSAPI, and Native Server APIs Semua yang berbasis atau berhubungan dengan API (Application Programming Interface) ini kebanyakan hanya untuk pemrogram hard-core.