Metode Rekayasa Perangkat Lunak


BAB I
PENDAHULUAN
1.1.Latara Belakang
Rekayasa perangkat lunak telah berkembang sejak pertama kali ddiciptakan pada tahun 1940-an hingga kini. Focus utama pengembangannya adalah untuk mengembangkan praktek dan teknologi untuk meningkatkan produktivitas para praktisi pengembang perangkat luank dan kualitas aplikasi yang dapat digunakan oleh pemakai.
Istilah software engineering digunakan pertama kali pada akhir 1950-an dan awal 1960-an. Saat itu, masih terdapat perdebatan tajam mengenai aspek engineering dari pengembangan perangkat lunak. Pada tahun 1968 dan 1969, komite sains NATO mensponsori dua konferensi tentang rekayasa perangkat lunak, yang memberikan dampak kuat terhadap pengembangan rekayasa perangkat lunak. Banyak yang menganggap dua konferensi inilah yang menandai awal resmi profesi rekayasa perangkat lunak.
Pada tahun 1960-an hingga 1980-an, banyak masalah yang ditemukan para praktisi pengembangan perangkat lunak. Banyak project yang gagal, hingga masa ini disebut sebagai krisis perangkat lunak. Kasus kegagalan pengembangan perangkat lunak terjadi mulai dari project yang melebihi anggaran, hingga kasusu yang mengakibatkan kerusakan fisik dan kematian. Salah satu kasus yang terkenal antara lain meledaknya roket Ariane akibat kegagalan perangkat lunak. Selama bertahun-tahun, para peneliti memfokuskan usahanay untuk menemukan teknik jitu untuk memecahkan masalah krisi perangkat lunak. Berbagai teknik, metode, alat, proses diciptakan dan diklaim sebagai senjata pamungkas untuk memecahkan kasus ini. Mulai dari pemrograman terstruktur, pemrograman berorientasi objek, pernagkat pembantu pengembangan perangkat lunak (CASE tools), berbagai standar, UML hingga metode formal diagung-agungkan sebagai senjaat pamungkas untuk menghasilkan software yang benar, sesuai anggaran dan tepat waktu. Pada tahun 1987, Fred Brooks menulis artikel No Silver Bullet, yang berproposisi bahwa tidak ada satu teknologi atau praktek yang sanggup mencapai 10 kali lipat perbaikan dalam produktivitas pengembanan perngkat lunak dalam tempo 10 tahun.
Sebagian berpendapat, no silver bullet berarti profesi rekayasa perangkat lunak dianggap telah gagal. Namun sebagian yang lain justru beranggapan, hal ini menandakan bahwa bidang profesi rekayasa perangkat lunak telah cukup matang, karena dalam bidang profesi lainnya pun, tidak ada teknik pamungkas yang dapat digunakan dalam berbagai kondisi.








BAB II
PERMASALAHAN
2.1.  Pengertian Dasar
Istilah Reakayasa Perangkat Lunak (RPL) secara umum disepakati sebagai terjemahan dari istilah Software engineering. Istilah Software Engineering mulai dipopulerkan pada tahun 1968 pada software engineering Conference yang diselenggarakan oleh NATO. Sebagian orang mengartikan RPL hanya sebatas pada bagaimana membuat program komputer. Padahal ada perbedaan yang mendasar antara perangkat lunak (software) dan program komputer.
Perangkat lunak adalah seluruh perintah yang digunakan untuk memproses informasi. Perangkat lunak dapat berupa program atau prosedur. Program adalah kumpulan perintah yang dimengerti oleh komputer sedangkan prosedur adalah perintah yang dibutuhkan oleh pengguna dalam memproses informasi (O’Brien, 1999).
Pengertian RPL sendiri adalah suatu disiplin ilmu yang membahas semua aspek produksi perangkat lunak, mulai dari tahap awal yaitu analisa kebutuhan pengguna, menentukan spesifikasi dari kebutuhan pengguna, disain, pengkodean, pengujian sampai pemeliharaan sistem setelah digunakan. Dari pengertian ini jelaslah bahwa RPL tidak hanya berhubungan dengan cara pembuatan program komputer. Pernyataan ”semua aspek produksi” pada pengertian di atas, mempunyai arti semnua hal yang berhubungan dengan proses produksi seperti manajemen proyek, penentuan personil, anggaran biaya, metode, jadwal, kualitas sampai dengan pelatihan pengguna merupakan bagian dari RPL.
 I.      Tujuan Rekayasa Perangkat Lunak
Secara umunmm tujuan RPL tidak berbeda dengan bidang rekayasa yang lain. Hal ini dapat kita lihat pada Gambar di bawah ini.






Gambar 1. Tujuan RPL
Dari Gambar di atas dapat diartikan bahwa bidang rekayasa akan selalu berusaha menghasilkan output yang kinerjanya tinggi, biaya rendah dan waktu penyelesaian yang tepat. Secara leboih khusus kita dapat menyatakan tujuan RPL adalah:
  1. memperoleh biaya produksi perangkat lunak yang rendah
  2. menghasilkan pereangkat lunak yang kinerjanya tinggi, andal dan tepat waktu
  3. menghasilkan perangkat lunak yang dapat bekerja pada berbagai jenis platform
  4. menghasilkan perangkat lunak yang biaya perawatannya rendah


II.      Ruang Lingkup
Sesuai dengan definisi yang telah disampaikan sebelumnya, maka ruang lingkup RPL dapat digambarkan sebagai berikut:






Gambar 2. Ruang lingkup RPL (Abran et.al., 2004).
-          software Requirements berhubungan dengan spesifikasi kebutuhan dan persyaratan perangkat lunak
-          software desain mencakup proses penampilan arsitektur, komponen, antar muka, dan karakteristik lain dari perangkat lunak
-          software construction berhubungan dengan detail pengembangan perangkat lunak, termasuk algoritma, pengkodean, pengujian dan pencarian kesalahan
-          software testing meliputi pengujian pada keseluruhan perilaku perangkat lunak
-          software maintenance mencakup upaya-upaya perawatan ketika perangkat lunak telah dioperasikan
-          software configuration management berhubungan dengan usaha perubahan konfigurasi perangkat lunak untuk memenuhi kebutuhan tertentu
-          software engineering management berkaitan dengan pengelolaan dan pengukuran RPL, termasuk perencanaan proyek perangkat lunak
-          software engineering tools and methods mencakup kajian teoritis tentang alat bantu dan metode RPL
-          software engineering process berhubungan dengan definisi, implementasi pengukuran, pengelolaan, perubahan dan perbaikan proses RPL
-          software quality menitik beratkan pada kualitas dan daur hidup perangkat lunak
  III.      Rekayasa Perangkat Lunak Dan Disiplin Ilmu Lain
Cakupan ruang lingkup yang cukup luas, membuat RPL sangat terkait dengan disiplin dengan bidang ilmu lain. tidak saja sub bidang dalam disiplin ilmu komputer namun dengan beberapa disiplin ilmu lain diluar ilmu komputer.
Hubungan keterkaitan RPL dengan ilmu lain dapat dilihat pada gambar dibawah ini





Gambar 3. Keterkaitan RPL dengan bidang ilmu lain.
-          bidang ilmu manajemen meliputi akuntansi, finansial, pemasaran, manajemen operasi, ekonomi, analisis kuantitatif, manajemen sumber daya manusia, kebijakan, dan strategi bisnis
-          bidang ilmu matematika meliputi aljabar linier, kalkulus, peluang, statistik, analisis numerik, dan matematika diskrit
-          bidang ilmu manajemen proyek meliputi semua hal yang berkaitan dengan proyek, seperti ruang lingkup proyek, anggaran, tenaga kerja, kualitas, manajemen resiko dan keandalan, perbaikan kualitas, dan metode-metode kuantitatif
-          bidang ilmu ergonomika menyangkut hubungan ( interaksi) antar manusia dengan komponen-komponen lain dalam sistem komputer
-          bidang ilmu rekayasa sistem meliputi teori sistem, analisis biaya-keuntungan, pemodelan, simulasi, proses, dan operasi bisnis
  IV.      Perkembangan Rekayasa Perangkat Lunak
Meskipun baru dicetuskan pada tahun 1968, namun RPL telah memiliki sejarah yang cukup yang panjang. Dari sisi disiplin ilmu, RPL masih reklatif muda dan akan terus berkembang.
Arah perkembangan yang saat ini sedang dikembangkan antara lain meliputi :
Tahun
Kejadian
1940an
Komputer pertama yang membolehkan pengguna menulis kode program langsung
1950an
Generasi awal interpreter dan bahasa macro Generasi pertama compiler
1960an
Generasi kedua compiler Komputer mainframe mulai dikomersialkan Pengembangan perangkat lunak pesanan
Konsep Software Engineering mulai digunakan
1970an
Perangkat pengembang perangkat lunak Perangkat minicomputer komersial
1980an
Perangkat Komputer Personal (PC) komersial Peningkatan permintaan perangkat lunak
1990an
Pemrograman berorientasi obyek (OOP) Agile Process dan Extreme Programming Peningkatan drastis kapasitas memori Peningkatan penggunaan internet
2000an
Platform interpreter modern (Java, .Net, PHP, dll) Outsourcing
V.      Metode Rekayasa Perangkat Lunak
Pada rekayasa perangkat lunak, banyak model yang telah dikembangkan untuk membantu proses pengembangan perangkat lunak. Model-model ini pada umumnya mengacu pada model proses pengembangan sistem yang disebut System Development Life Cycle (SDLC) seperti terlihat pada Gambar berikut ini.




Gambar 4. System Development Life Cycle (SDLC).
  • Kebutuhan terhadap definisi masalah yang jelas.  Input utama dari setiap model pengembangan perangkat lunak adalah pendefinisian masalah yang jelas.  Semakin jelas akan semakin baik karena akan memudahkan dalam penyelesaian masalah.  Oleh karena itu pemahaman masalah seperti dijelaskan pada Bab 1, merupakan bagian penting dari model pengembangan perangkat lunak.
  • Tahapan-tahapan pengembangan yang teratur.  Meskipun model-model pengembangan perangkat lunak memiliki pola yang berbeda-beda, biasanya model-model tersebut mengikuti pola umum  analysis – design – coding – testing - maintenance
  • Stakeholder berperan sangat penting dalam keseluruhan tahapan pengembangan.  Stakeholder dalam rekayasa perangkat lunak dapat berupa pengguna, pemilik, pengembang, pemrogram dan orang-orang yang terlibat dalam rekayasa perangkat lunak tersebut.
  • Dokumentasi merupakan bagian penting dari pengembangan perangkat lunak.  Masing-masing tahapan dalam model biasanya menghasilkan sejumlah tulisan, diagram, gambar atau bentuk-bentuk lain yang harus didokumentasi dan merupakan bagian tak terpisahkan dari perangkat lunak yang dihasilkan.
  • Keluaran dari proses pengembangan perangkat lunak harus bernilai ekonomis.  Nilai dari sebuah perangkat lunak sebenarnya agak susah di-rupiah-kan.  Namun efek dari penggunaan perangkat lunak yang telah dikembangkan haruslah memberi nilai tambah bagi organisasi. Hal ini dapat berupa penurunan biaya operasi,  efisiensi penggunaan sumberdaya, peningkatan keuntungan organisasi, peningkatan “image” organisasi dan lain-lain.
  VI.      Tahapan Rekayasa Perangkat Lunak
Meskipun dalam pendekatan berbeda-beda, namun model-model pendekatan memiliki kesamaan, yaitu menggunaka pola tahapan analysis – design – coding(construction) – testing – maintenance.
1.      Analisis sistem adalah sebuah teknik pemecahan masalah yang menguraikan sebuah sistem menjadi komponen-komponennya dengan tujuan mempelajari seberapa bagus komponen-komponen tersebut bekerja dan berinteraksi untuk meraih tujuan mereka.
Analisis mungkin adalah bagian terpenting dari proses rekayasa perangkat lunak.  Karena semua proses lanjutan akan sangat bergantung pada baik tidaknya hasil analisis. Ada satu bagian penting yang biasanya dilakukan dalam tahapan analisis yaitu pemodelan proses bisnis.
2.      Model proses adalah model yang memfokuskan pada seluruh proses di dalam sistem  yang mentransformasikan data menjadi informasi (Harris, 2003).  Model proses juga menunjukkan aliran data yang masuk dan keluar pada suatu proses.  Biasanya model ini digambarkan dalam bentuk Diagram Arus Data (Data Flow Diagram / DFD).  DFD meyajikan gambaran apa yang manusia, proses dan prosedur lakukan untuk mentransformasi data menjadi informasi.

3.      Disain perangkat lunak  adalah tugas, tahapan atau aktivitas yang difokuskan pada spesifikasi detil dari solusi berbasis computer (Whitten et al, 2004).
Disain perangkat lunak sering juga disebut sebagai physical design.  Jika tahapan analisis sistem menekankan pada masalah bisnis (business rule), maka sebaliknya disain perangkat lunak fokus pada sisi teknis dan implementasi sebuah perangkat lunak (Whitten et al, 2004).
Output utama dari tahapan disain  perangkat lunak adalah spesifikasi disain.  Spesifikasi ini meliputi spesifikasi disain umum yang akan disampaikan kepada stakeholder sistem dan spesifikasi disain rinci yang akan digunakan pada tahap implementasi.  Spesifikasi disain umum hanya berisi gambaran umum agar stakeholder sistem mengerti akan seperti apa perangkat lunak yang akan dibangun.  Biasanya diagram USD tentang perangkat lunak yang baru merupakan point penting dibagian ini.   Spesifikasi disain rinci atau kadang disebut disain arsitektur rinci perangkat lunak diperlukan untuk merancang sistem sehingga memiliki konstruksi yang baik, proses pengolahan data yang tepat dan akurat, bernilai, memiliki aspek user friendly dan memiliki dasar-dasar untuk pengembangan selanjutnya.
Desain arsitektur ini terdiri dari desain database, desain proses, desain user interface  yang mencakup desain  input,  output form dan report, desain hardware, software dan jaringan.  Desain proses merupakan kelanjutan dari pemodelan proses yang dilakukan pada tahapan analisis.

4.      Konstruksi adalah tahapan menerjemahkan hasil disain logis dan fisik ke dalam kode-kode program komputer.
5.      Pengujian sistem melibatkan semua  kelompok pengguna yang telah direncanakan pada tahap sebelumnya. Pengujian tingkat penerimaan terhadap perangkat lunak akan berakhir ketika dirasa semua kelompok pengguna menyatakan bisa menerima perangkat  lunak tersebut berdasarkan kriteria-kriteria yang telah ditetapkan.
6.      Perawatan dan Konfigurasi. Ketika sebuah perangkat lunak telah dianggap layak untuk dijalankan, maka tahapan baru menjadi muncul yaitu perawatan perangkat lunak.  Ada beberapa tipe perawatan yang biasa dikenal dalam dunia perangkat lunak seperti terlihat pada diagram di Gambar di bawah ini :






Gambar 5. Tipe-tipe perawatan.
  • Tipe perawatan  corrective dilakukan jika terjadi kesalahan atau biasa dikenal sebagai bugs.  Perawatan  bisa dilakukan dengan memperbaiki kode program, menambah bagian  yang dirasa perlu atau malah menghilangkan bagian-bagian tertentu.  
  • Tipe perawatan  routine biasa juga disebut preventive maintenance dilakukan secara rutin untuk melihat kinerja perangkat lunak ada atau tidak ada kesalahan. 
  • Tipe perawatan  sistem upgrade dilakukan jika ada perubahan dari komponen-komponen yang terlibat  dalam perangkat lunak tersebut. Sebagai contoh perubahan platform sistem operasi dari versi lama ke versi baru menyebabkan perangkat lunak harus diupgrade.

software engineering

Arti Software Engineering :
Ilmu yang mempelajari tehnik pembuatan software yang baik dengan pendekatan tehnik (Engineering ap­proach)
Dalam membuat softrare yang baik, ada beberapa cara :
1.      Fase Perencanaan (Planning) :
a)      Rencana software
b)      Analisa kebutuhan software
c)      Analisa cost banefit (Salah satu bagian dari studi kelayakan)
2.      Fase Pengembangan (Development) :
a)      Coding
b)      Testing
Macam-macam test program :
i)        Unit test (Test per modul)
ii)      Integreated test (Test penggabungan dari modul-modul yang telah diuji)
iii)    Validated test (Diuji dengan data sebenarnya)
iv)    System test (Test dilakukan dengan lingkungan sebenarnya)
v)      Topdown test (Test gabungan dari atas ke bawah)
vi)    Bottom up test (Test gabungan dari bawah ke atas)
3.      Fase Pemeliharaan (Maintenance) :
Jenis-jenis maintenance
a)      Koreksi (Corection)
b)      Adaptasi (Adaptive)
Software dikembangkan sesuai dengan tuntutan perkembangan jaman
c)      Adaptasi yang berkembang pada dewasa ini terbagi atas :
i)        Sistem Operasi
à        Pengarahan sistem operasi yang bersifat multi user. Contoh : UNIX
à        Sistem operasi yang bersifat jaringan. Contoh : NOVELL
ii)      RDBMS - Relational DataBase Management System
à        Berkembang dalam bentuk bahasa SQL (Structure Query Language).
iii)    Bahasa
Mengarah pada perkembangan bahasa generasi ke empat (4GL - Fourth Generation Language)
Bahasa 4GL adalah suatu bahasa yang dibuat untuk meningkatkan produktifitas programmer dan end user. Contoh :
a)      INFORMIX - Dapat dijalankan pada PC dengan minimum RAM 4MB + 640KB dan disk sto­r­age > 40MB
b)      ORACLE
c)      INGRES
d)     AS / SET - Digunakan pada IBM AS 400
e)      POWER HOUSE - digunakan pada HR 3000
iv)    Perfective

Menyempurnakan software yang ada biasanya dilakukan karena permin­taan/saran/kritikuser.

software and software engineering

Selama tiga dekade pertama dari era komputerisasi, tantangan utama adalah mengembangkan hardware kom­puter yang dapat mengurangi biaya pengolahan dan penyimpanan data. Selama dekade tahun 1980 an, kemajuan yang pesat dari mikro elektronik menghasilkan kemampuan komputer yang lebih baik pada tingkat biaya yang lebih rendah. Namun masalah sekarang berbeda. Tantangan utama adalah mengurangi biaya dan memperbaiki kualitas solusi berbasis komputer (Solusi yang diimplementasikan dengan mempergunakan software). Software merupakan faktor kunci dalam keberhasilan suatu usaha, software dapat membedakan satu perusahaan dari per­usahan saingannya.
Evolusi Perkembangan Software
Evolusi software
Tahun-tahun awal :
à        Batch orientation
à        Limmited distribution
à        Custummer software
Era kedua :
à        Multi user
à        Real time
à        Database

Era ketiga
à        Distibuted system
à        Embedded intellegence
à        Low cost hardware
à        Consumer infact
Era keempat :
à        Expert system
à        A I Machine
à        Parallel architecture

Tahun-tahun pertama :
à        Batch Orientation
Suatu orientasi di mana proses dilakukan setelah data dikumpulkan dalam satuan waktu tertentu, atau proses dilakukan setelah data terkumpul, lawan dari batch adalah ONLINE atau Interactive Process.
Keuntungan dari Interactive adalah mendapatkan data yang selalu up to date.
à        Limmited distribution
Suatu penyebaran software yang terbatas pada perusahaan-perusahaan tertentu.
à        Custom software
Software yang dikembangkan berdaasarkan perusahaan-perusahaan tertentu.
Era kedua :
à        Multi user
Suatu sistem di mana satu komputer digunakan oleh beberapa user pada saat yang sama.
à        Real Time
Suatu sistem yang dapat mengumpulkan, menganalisa dan mentransformasikan data dari berbagai sumber, mengontrol proses dan menghasilkan output dalam mili second.
à        Database
Perkembangan yang pesat dari alat penyimpan data yang OnLine menyebabkan muncul generasi pertama DBMS (DataBase Management System).
à        Product Software
Adalah software yang dikembangkan untuk dijual kepada masyarakat luas.
ERA KETIGA  :
à        Distributed system
Suatu sistem yang tidak hanya dipusatkan pada komputer induk (Host computer), daerah atau bidang lain­nya yang juga memiliki komputer yang ukurannya lebih kecil dari komputer induk. Lawan dari distributed system adalah Centralized System.
à        Embedded Intelegence
Suatu product yang diberi tambahan “Intellegence” dan biasanya ditambahkan mikroprocessor yang mutak­hir. Contohnya adalah automobil, robot, peralatan diagnostic serum darah.
à        Low Cost Hardware
harga hardware yang semakin rendah, ini dimungkinkan karena munculnya Personal Computer.
à        Consummer Inpact
Adanya perkembangan komputer yang murah menyebabkan banyaknya software yang dikembangkan, soft­ware ini memberi dampak yang besar terhadap masyarakat.
ERA KEEMPAT :
à        Expert system
Suatu penerapan A.I. (Artificial Intellegence) pada bidang-bidang tertentu, misalnya bidang kedokteran, komunikasi, dll.
à        AI Machine
Suatu mesin yang dapat meniru kerja dari sebagian otak manusia. Misalnya mesin robot, komputer catur.
à        Parallel Architecture
Arsitektur komputer yang memungkinkan proses kerja LAN paralel, yang dimungkinkan adanya prosesor berbeda dalam satu komputer
ARTI SOFTWARE
1.      Instruksi
Atau program komputer yang ketika dieksekusi akan memberi fungsi dan hasil yang diinginkan.
2.      Struktur data
Yang memungkinkan program memanipulasi informasi
3.      Dokumen
Yang menggambarkan operasi dan penggunaan program.
SIFAT DAN KARAKTERISTIK SOFTWARE
1.      Software merupakan elemen sistem logik dan bukan elemen sistem fisik seperti hardware
2.      Elemen itu tidak aus, tetapi bisa rusak.
3.      Elemen software itu direkayasa atau dikembangkan dan bukan dibuat di pabrik seperti hardware
4.      Software itu tidak bisa dirakit.
KOMPONEN SOFTWARE
1.      Bentuk bahasa
Terbagi 2, yaitu
A.    High Level, contoh PASCAL, COBOL, FORTRAN.
B.     Middle Level, contoh C
2.      Bentuk translator
Terbagi 3 , yaitu :
A.    Interpreter
Menerjemahkan dari bahasa tingkat tinggi ke bahasa tingkat rendah secara satu persatu (statemen demi statemen)
B.     Compiler
Menerjemahkan secara keseluruhan, proses lebih cepat dari interpreter
C.     Assembler
Menerjemahkan dari bahasa rakitan ke bahasa mesin
3.      Bentuk mesin :

aplikasi software

1.      Sistem Software
Adalah sekumpulan program yang ditulis untuk melayani atau menunjang program lainnya. Beberapa sistem software seperti compiler, editor, komponen-komponen sistem operasi, driver dan prosesor telekomunikasi.
2.      Real Time software
Software yang mengukur, menganalisis dan mengontrol kejadian yang sesungguhnya terjadi di dunia. Ele­men-elemen real time software terdiri dari :
A.    Komponen pengumpul data
Yang mengumpulkan dan menyusun informasi dari lingkungan external.
B.     Komponen analisis
Yang mentransformasikan informasi yang diperlukan oleh aplikasi
C.     Komponen kontrol
Yang memberikan respon kepada lingkungan external
D.    Komponen monitor
Yang mengkoordinasi semua komponen-komponen lainnya, sehingga respons real time yang berkisar 1 milisecond sampai 1 menit dapat dipertahankan.
Perlu dicatat bahwa istilah real time berbeda dari istilah interactive atau time sharing.
Sistem real time harus memberikan respons pada waktu yang ditentukan, sedangkan pada sistem interactive atau time sharing respons time biasanya melebihi batas waktu yang ditentukan tanpa merusak hasil.
3.      Business software
Software yang palinmg banyak digunakan dalam bidang aplikasi software. Software ini digunakan oleh manajemen untuk mengambil kepitusan ( Decision Making ) dalam bidang bisnis. Contoh :
à        DAC EASY ACCOUNTING
à        FINANCE MANAJER
4.      Engineering and sciencetific software
Software yang dicirikan dengan algoritma numerik, aplikasinya berkisar dari astronomi sampai vulkanologi, dari analis ketegangan otomotif sampai dinamika orbit ruang angkasa. Software ini banyak digunakan dalam bidang engineering dan science. Contoh
à        CAD / CAM ( Computer Aided Design / Computer Aided Manufacture - Ssimulasi sistem )
5.      Emdebed software
Suatu software disimpan dalam memori tetap - ROM - Read Only Memory, dan digunakan untuk mengon­trol product dan sistem software ini dijalankan dengan berbagai fungsi terbatas.
6.      PC software (Personal Computer)
Software yang banyak digunakan di komputer pribadi (PC). Contoh :
à        Word Processing                     :           WS, WP
à        Spreadsheet                             :           Lotus, Supercalc
à        Computer Graphics                 :           Printshop, Print Magic
à        Games                                                 :           Paoman, Load Runner
à        DBMS                                                 :           Dbase III+, Foxbase, Clipper
à        Network                                              :           LAN, Novell
7.      Artificial Intelegence software
Software yang banyak menggunakan algoritma non numerik dalam memecahkan masalah kompleks yang tidak dapat dianalisis dengan analisis komputasi biasa. Saat ini bidang AI yang paling aktif adalah expert system atau knowledge base system. Bidang aplikasi lain dari software AI adalah pengenalan citra dan suara ( image and voice pattern recognition ), teorema pembuktian dan permainan / games.
KRISIS SOFTWARE
Adalah sekumpulan masalah yang ditemukan dalam pengembangan software computer. Masalahnya tidak hanya terbatas pada software yang tidak berfungsi sebagaimana mestinya, tetapi krisis software ini terdiri dari masalah yang berhubungan dengan :
1.      Bagaimana mengembangkan software
2.      Bagaimana memelihara software ynag ada, yang berkembang dalam jumlah besar
3.      Bagaimana mengimbangi permintaan software yang makin besar.
MASALAH
Krisis software oleh beberapa masalah :
1.      Estimasi jadual dan biaya yang seringkali tidak tepat
2.      Produktivitas orang-orang software yang tidak dapat mengimbangi permintaan software
3.      Kualitas software yang kurang baik.
Penyebab :
Masalah yang berhubungan dengan krisis software disebabkan oleh :
1.      Karakteristik software itu sendiri
Karakteristik software adalah software yang bersifat logika dibandingkan fisik, oleh karena itu mengukur software harus merupakan suatu kesatuan, tidak seperti hardware. Software yang bersifat tidak aus ini menyebabkan kesalahan yang terjadi pada software. Umumnya terjadi pada tahap pengembangan. Manajer tingkat menengah dan tingkat atas yang tidak mempunyai latar belakang software, seringkali diberi tang­gung jawab untuk mengembangkan software. Padahal tidak semua manajer itu dapat me-manage semua proyek.
Praktisnya : software programmer atau software engineering mendapatkan latihan formal yang sedikit dalam hal tehnik baru pengembangan software.
2.      Kegagalan mereka yang bertanggung jawab dalam pengembangan software.
MITOS SOFTWARE
1.      Mitos managements
A.    Kita tidak perlu mengubah pendekatan terhadap pengembangan software, karena jenis pemrograman yang kita lakukan sekarang ini sudah kita lakukan 10 tahun yang lalu.
Realitasnya : Walau hasil program sama, produktivitas dan kualitas software harus ditingkatkan dengan menggunakan pendekatan software developments
B.     Kita sudah mempunyai buku yang berisi standarisasi dan prosedur untuk pembentukan software.
Realitasnya : Memang buku tersebut ada, tetapi apakah buku tersebut sudah dibaca atau buku tersebut sudah ketinggalan jaman ( out of date ).
C.     Jika kita tertinggal dari jadwal yang ditetapkan, kita menambah beberapa programmer saja. Konsep ini sering disebut Mongolian harde concept.
2.      Mitos Langganan / Customer
A.    Pernyataan tujuan umum sudah cukup untuk memulai penulisan program. Penjelasan yang lebih rinci akan menyusul kemudian.
Realitasnya : Definisi awal yang buruk adalah penyebab utama kegagalan terhadap usaha-usaha pem­bentukkan software. Penjelasan yang formal dan terinci tentang informasi fungsi performance interface, hambatan desain dan kriteria validasi adalah penting. Karakteristik di atas dapat ditentukan hanya sete­lah adanya komunikasi antara customer dan developer.
B.     Kebutuhan proyek yang terus menerus berubah dapat dengan mudah diatasi karena software itu bersifat fleksibel. Kenyataannya memang benar bahwa kebutuhan software berubah, tetapi dampak dari peru­bahan berbeda dari waktu ke waktu.
Kesimpulan : Jika perubahan mendekati akhir penyelesaian, maka biaya akan lebih besar.
3.      Mitos Praktisi
A.    Tidak ada metode untuk analisis disain dan testing terhadap suatu pekerjaan, cukup menuju ke depan terminal dan mulai coding.
Realitasnya : Metode untuk analisis desain dan testing diperlukan dalam pengembangan software.
B.     Segera setelah software digunakan, pemeliharaan dapat diminimalisasikan dan diatasi dengan cara “CATCH AS CATCH CAM”.
Realitasnya : Diperlukan budget yang besar dalam maintenance software. Pemeliharaan software harus diorganisir, direncanakan dan dikontrol seolah-olah sebagai suatu proyek besar dalam sebuah or­ganisasi.
MODEL SOFTWARE ENGINEERING
Krisis software tidak dapat hilang dalam satu satu malam, di mana tidak ada suatu pendekatan yang baik dalam mengatasi krisis software, namun gabungan dari metode untuk semua fase dalam pengembangan siftware seperti peralatan yang lebih baik untuk mengautomatisasi metode-metode ini, tehnik yang lebih baik untuk mengontrol kualitas, dan filosofi untuk koordinasi kontrol, serta manajemen dipelajari dalam suatu disiplin ilmu yang kita sebut software engineering.
Definisi :
Menurut Fritz Badar, software engineering adalah disiplin ilmu yang menerapkan prinsip-prinsip engineering agar mendapatkan software yang ekonomis yang dapat dipercaya dan bekerja lebih efisien pada mesin yang se­benarnya.
Software engineering  terdiri dari 3 elemen kunci, yaitu :
  1. Metode,
2.      Peralatan (tools),
3.      Prosedur,
yang memungkinkan manajer mengontrol proses pengembangan software dan memberikan praktisi dasar yang baik untuk pembentukan software berkualitas tinggi.
1.      Metode Software Enginnering
Metode software engineering memberikan tehnik-tehnik bagaimana membentuk software. Metode ini terdiri dari serangkaian tugas :
à        Perencanaan & estimasi proyek
à        Analisis kebutuhan sistem dan software
à        Desain struktur data
à        Arsitektur program dan prosedur algoritma
à        Coding
à        Testing dan pemeliharaan
2.      Peralatan Software Engineering
Peralatan software engineering memberikan dukungan atau semiautomasi untuk metode. Contohnya :
à        CASE (Case Aided Software Engineering), yaitu suatu software yang menggabungkan software, hard­ware, dan database software engineering untuk menghasilkan suatu lingkungan software engineering.
à        Database Software Engineering, adalah sebuah struktur data yang berisi informasi penting tentang analisis, desain, kode dan testing.
à        Analogi dengan CASE pada hardware adalah : CAD, CAM, CAE
3.      Prosedur Software Engineering
Terdiri dari :
à        urut-urutan di mana metode tersebut diterapkan
à        dokumen
à        laporan-laporan
à        formulir-formulir yang diperlukan
à        mengontrol kualitas software
à        mengkoordinasi perubahan yang terjadi pada software
Dalam penguasaan atas model software engineering atau software engineering paradigm, dikenal ada 3 metode yang luas dipergunakan, yaitu :


1.      Classic Life Cycle Pradigm - Model Water Fall - Model Siklus Hidup Klasik
Keterangan :
A.    System Engineering and Analysis
Karena software merupakan bagian terbesar dari sistem, maka pekerjaan dimulai dengan cara menerap­kan kebutuhan semua elemen sistem dan mengalokasikan sebagian kebutuhan tersebut ke software. Pandangan terhadap sistem adalah penting, terutama pada saat software harus berhubungan dengan ele­men lain, seperti :
à        Hardware
à        Software
à        Database
B.     Analisis kebutuhan software
Suatu proses pengumpulan kebutuhan software untuk mengerti sifat-sifat program yang dibentuk soft­ware engineering, atau analis harus mengerti fungsi software yang diinginkan, performance dan inter­face terhadap elemen lainnya. Hasil dari analisis ini didokumentasikan dan direview / dibahas / ditinjau bersama-sama customer.
C.     Design
Desain software sesungguhnya adalah proses multi step (proses yang terdiri dari banyak langkah) yang memfokuskan pada 3 atribut program yang berbeda, yaitu :
à        Struktur data
à        Arsitektur software
à        Rincian prosedur
Proses desain menterjemahkan kebutuhan ke dalam representasi software yang dapat diukur kualitasnya sebelum mulai coding. Hasil dari desain ini didokumentasikan dan menjadi bagian dari konfigurasi software.
D.    Coding
Desain harus diterjemahkan ke dalam bentuk yang dapat dibaca oleh mesin
E.     Testing
Segera sesudah objek program dihasilkan, pengetesan program dimulai. Proses testing difokuskan pada logika internal software. Jaminan bahwa semua pernyataan atau statements sudah dites dan lingkungan external menjamin bahwa definisi input akan menghasilkan output yang diinginkan.
F.      Maintenance
Software yang sudah dikirim ke customer data berubah karena
à        Software mengalami error
à        Software harus diadaptasi untuk menyesuaikan dengan lingkungan external, misalnya adanya sistem operasi baru atau peripheral baru.
à        Software yang lebih disempurnakan karena adanya permintaan dari customer.
Masalah yang dihadapi dari model siklus hidup klasik adalah :
à        Proyek yang sebenarnya jarang mengikuti aliran sequential yang ditawarkan model ini. Iterasi (Pengulangan) selalu terjadi dan menimbulkan masalah pda aplikasi yang dibentuk oleh model ini.
à        Seringkali pada awalnya customer sulit menentukan semua kebutuhan secara explisit (jelas).
à        Customer harus sabar karena versi program yang jalan tidak akan tersedia sampai proyek software sele­sai dalam waktu yang lama.
2.      Prototype Paradigm
Keterangan :
Seringkali seorang customer sulit menentukan input yang lebih terinci, proses yang diinginkan dan output yang diharapkan. Tentu saja ini menyebabkan developer tidak yakin dengan efisiensi alogoritma yang di­buatnya, sulit menyesuaikan sistem operasi, serta interaksi manusia dan mesin yang harus diambil. Dalam hal seperti ini, pendekatan prototype untuk software engineering merupakan langkah yang terbaik. Proto­type sebenarnya adalah suatu proses yang memungkinkan developer membuat sebuah model software.

Ada 2 bentuk dari model ini, yaitu :
A.    Paper Prototype
Menggambarkan interaksi manusia dan mesin dalam sebuah bentuk yang memungkinkan user mengerti bagaimana interaksi itu terjadi.
B.     Working Prototype
Adalah prototype yang mengimplementasikan beberapa bagian dari fungsi software yang diinginkan seperti pada pendekatan pengembangan software. Model ini dimulai dengan :
à        Pengumpulan kebutuhan developer dan customer
à        Menentukan semua tujuan software
à        Mengidentifikasi kebutuhan-kebutuhan yang diketahui
Hasil dari pengumpulan kebutuhan diteruskan pada Quick Design. Quick Design ini memfokuskan pada representasi aspek-aspek software yang dapat dilihat oleh user, misalnya format input dan output, selanjutanya dari desain cepat diteruskan pada pembentukan prototype (langkah ke 3). Prototype ini dievaluasi oleh customer / user dan digunakan untuk memperbaiki kebutuhan-kebutuhan software. Proses iterasi terjadi agar prototype yang dihasilkan memenuhi kebutuhan customer, juga pada saat yang sama developer mengerti lebih baik tentang apa yang harus dikerjakan.
Masalah yang dihadapi oleh prototyping paradigm ini adalah :
à        Customer hanya melihat pada apa yang dihasilkan oleh software, tidak peduli pada hal-hal yang ber­hubungan dengan kualitas software dan pemeliharaan jangka panjang.
à        Developer seringkali menyetujui apa yang diterangkan oleh customer agar prototype dapat dihasilkan dengan cepat. Akibatnya timbul pemilihan sistem operasi / bahasa pemrograman yang tidak tepat.
3.      Fourth Generation Tehnique Paradigm - Model tehnik generasi   ke 4 / 4GT
Istilah Fourth Generation Technique (4GT) meliputi seperangkat peralatan software yang memungkinkan seorang developer software menerapkan beberapa karakteristik software pada tingkat yang tinggi, yang ke­mudian menghasilkan source code dan object code secara otomatis sesuai dengan spesifikasi yang ditentu­kan developer. Saat ini peralatan / tools 4GT adalah bahasa non prosedur untuk :
à        DataBase Query
à        Pembentukan laporan ( Report Generation )
à        Manipulasi data
à        Definisi dan interaksi layar (screen)
à        Pembentukan object dan source ( Object and source generation )
à        Kemampuan grafik yang tinggi, dan
à        Kemampuan spreadsheet
Keterangan gambar :
à        Model 4GT untuk software engineering dimulai dengan rangkaian pengumpulan kebutuhan. Idealnya, seorang customer menjelaskan kebutuhan-kebutuhan yang selanjutnay diterjemahkan ke dalam proto­type. Tetapi ini tidak dapat dilakukan karena customer tidak yakin dengan apa yang diperlukan, tidak jelas dalam menetapkan fakta-fakta yang diketahui dan tidak dapat menentukan informasi yang diing­inkan oleh peralatan 4GT.
à        Untuk aplikasi kecil adalah mungkin bergerak langsung dari langkah pengumpulan kebutuhan ke im­plementasi yang menggunakan bahasa non prosedur fourth generation (generasi ke 4). Tetapi untuk proyek besar, pengembangan strategi desain sistem tetap diperlukan, sekalipun kita menggunakan 4GL. Penggunaan 4GT tanpa desain untuk proyek besar akan menyebabkan masalah yang sama yang ditemui dalam pengembangan software yang menggunakan pendekatan konvensional.
à        Implementasi yang menggunakan 4GL memungkinkan developer software menjelaskan hasil yang diing­inkan yang kemudian diterjemahkan ke dalam bentuk source code dan object code secara otomatis.
à        Langkah yang terakhir adalah mengubah implementasi 4GT ke dalam sebuah product. Selanjutnya de­veloper harus melakukan pengetesan, pengembangan dokumentasi dan pelaksanaan semua aktifitas lainnya yang diwujudkan dalam model software engineering.
Masalah yang dihadapi dalam model 4GT adalah adanya sebagian orang yang beranggapan bahwa :
A.    peralatan 4GT tidak semudah penggunaan bahasa pemrograman,
B.     source code yang dihasilkan oleh peralatan ini tidak efisien,
C.     pemeliharaan sistem software besar yang dikembangkan dengan 4GT masih merupakan tanda tanya.
4.      Model Kombinasi - Combining Paradigm
Keterangan :
Model ini menggabungkan keuntungan-keuntungan dari beberapa model sebelumnya. Seperti pada model sebelumnya, model kombinasi ini dimulai dengan langkah pengumpulan kebutuhan.
Pendekatan yang dapat diambil adalah pendekatan siklus hidup klasik (Analisis sistem dan analisis kebu­tuhan software) atau dapat juga menggunakan pendekatan seperti prototyping jika definisi masalahnya tidak terlalu formal.
Jika kebutuhan untuk fungsi dan performance software diketahui dan dimengerti, pendekatan yang dianjur­kan adalah model siklus hidup klasik. Sebaliknya, jika aplikasi software menuntut interaksi yang sering antara manusia dan mesin,  membutuhkan algoritma yang tidak dapat dibuktikan, atau membutuhkan tehnik output / kontrol, maka pendekatan yang dianjurkan adalah model prototyping.
Pada kasus seperti ini, 4GL dapat digunakan untuk mendapat prototype dengan cepat. Segera sesudah pro­totype dievaluasi dan disempurnakan, langkah desain dan implementasi dalam siklus hidup klasik diterap­kan.
Dari model yang disebut di atas dapat diambil suatu kesimpulan, bahwa proses pengembangan software terdiri dari 3 fase, yaitu :
1.      Fase Definisi
2.      Fase Pengembangan (Development)
3.      Fase Pemeliharaan (Maintenance)
1.      Fase Definisi
Fase definisi memfokuskan pada “What”. Selama definisi ini, developer software berusaha untuk :
à        Mengidentifikasi informasi apa yang dikerjakan proses
à        Fungsi dan performance apa yang diinginkan
à        Interface apa yang dibutuhkan
à        Hambatan desain apa yang ada, dan
à        Kriteria validasi apa yang dibutuhkan untuk menetapkan keberhasilan sistem.
A.    Sistem Analis
Sistem analis menetapkan peranan dari setiap elemen dalam sistem berbasis komputer, terutama menga­lokasikan peranan software.

B.     Sistem Software Planning
Dalam sistem ini, setelah lingkungan software dialokasikan, maka langkah dari sistem software plan­ning ini adalah :
à        Pengalokasian sumber / resource
à        Estimasi biaya
à        Penetapan tugas pekerjaan dan jadual.
C.     Requirement Analysis
Penetapan lingkup untuk software memberikan petunjuk / arah. Namun definisi yang lebih rinci dari in­formasi dan fungsi software diperlukan sebelum pekerjaan dimulai.
2.      Fase Pengembangan
Fase pengembangan berfokus pada “How”. Selama pengembangan, developer software berusaha menjelas­kan :
à        Bagaimana struktur data dan arsitektur software yang didesain
à        Bagaimana rincian prosedur diimplementasikan ( diterapkan )
à        Bagaimana desain diterjemahkan ke dalam bahasa pemrograman atau bahasa non prosedur, dan
à        Bagaimana pengetesan akan dilaksanakan.
A.    Desain software  ( Software Design )
Desain menterjemahkan kebutuhan-kebutuhan software ke dalam sekumpulan representasi (grafik, ta­bel, diagram, atau bahasa yang menjelaskan struktur data, arsitektur software dan prosedur algoritma).
B.     Coding
Representasi desain harus diterjemahkan ke dalam bahasa tiruan / artificial language yang menghasilkan perintah-perintah yang dapat dieksekusi oleh komputer.
C.     Software Testing
Segera sesudah software diimplementasikan dalam bentuk yang dapat dieksekusi oleh mesin, software perlu ditest untuk menemukan kesalahan ( merupakan fungsi logika dan implementasi ).
3.      Fase Pemeliharaan
Fase pemelihaaan berfokus pada “Change” atau perubahan. Ini dapat disebabkan :
A.    Perubahan karena software error ( Corective Maintenance )
B.     Perubahan karena software disesuaikan / diadaptasi dengan lingkungan external, misalnya munculnya CPU baru, sistem operasi baru ( Adaptive Maintenance )
C.     Perubahan software yang disebabkan customer / user meminta fungsi tambahan, misalnya fungsi grafik, fungsi matematik, dll ( Perfective Maintenance )
Contoh  Penulisan laporan
Nama Kelomok             :
Anggota Kelompok       :           1. <nama>                                                       <nim>
                                                                           2. <nama>                                                       <nim>
                                                                           3. dst.
Nama Software / Perangkat Lunak       :           <nama yang anda inginkan>
A.    Daftar Kebutuhan perangkat lunak :
Jelaskan mengapa software yang akan anda buat dianggap perlu untuk dikembangkan, dan berikan gambaran hubungannya antar subsistem yang direncakan tersebut.
Gambaran tersebut bisa anda buat dengan teknik analisis menggunakan tool flowchart (untuk hal ini dapat anda lihat panduan).
B.     Analisis Kebutuhan Perangkat lunak
Hardware
Software Pendukung
Database yang akan digunakan
1.
2.
3. dst.
1.
2.
3.dst

1.
2.
3.dst
C.     Jadwal KerjaPengembangan perangkat lunak
Bagian ini adalah rencana jadwal kerja dalam bentuk time series



Contoh :
No.
Nama Kegiatan
Bulan/minggu/hari ke-
Bulan/minggu/hari ke-
dst
1.       
Pembelian Server







2.       
Instal P/L server dan S.O







3.       
Desain Database











4.       
dst.








Rekayasa Perangkat Lunak
Pada dasarnya terdapat empat langkah-langkah utama rekayasa perangkat lunak yang ditempuh, terdiri atas analisis, perancangan, pengkodean dan pengujian.
·         Analisis
Pada tahap ini dilakukan analisis terhadap masalah, diamana proses analisis ini dapat dibagi dalam lima tahapan, yaitu (1) identifikasi masalah; (2) evaluasi dan sintesa; (3) pemodelan; (4) spesifikasi; dan (5) review
Pada tahap pengenalan masalah, analis mengidentifikasikan semua elemen dasar permasalahan. Pada tahapan evaluasi dan sintesa, analis harus dapat mendefinisikan semua fungsi software; memahami perilaku software; menetapkan karakteristik interface sistem; dan membuat pembatasan perancangan. Semua proses ini dilakukan untuk mendapatkan deskripsi masalah, sehingga solusi yang menyeluruh dapat disintesa.
Setelah melakukan evaluasi masalah dengan informasikan input dan output yang diharapkan, analis mulai mensintesa satu atau lebih solusi. Data, fungsi proses, dan perlaku sistem didefinisikan secara detail.
Selama tahap evaluasi dan sintesis, fokus utama analis adalah menjawab pertanyaan “apa”. Data apa yang dihasilkan dan dibutuhkan oleh sistem, fungsi apa yang harus dilakukan oleh sistem, interface apa yang akan dipakai, hal-hal pa yang menjadi pembatas.
Selama melakukan evaluasi dan sintesa, analis juga membuat model sistem sebagai usaha untuk lebih memahami data dan control flow, fungsi proses, perilaku sistem, dan isi informasi. Model yang dibuat analis ini menjadi pondasi dalam merancang software.
Proses menentukan spesifikasi software adalah proses puncak dari keseluruhan proses analisis. Fungsi dan prformansi yang akan dialokasikan pada software disaring lagi dengan membuat deskripsi informasi lengkap, penjelasan fungsi dan perilaku detail sistem, kriteria validasi yang cocok, dan data yang berhubungan dengan requirement.
Review terhadap spesifikasi kebutuhan software dilakukan oleh pengembang dan pelanggan. Pada proses ini, pengembang meyakinkan pelanggan, apakah semua system requirement sudah tercakup.
·         Perancangan
Perancangan adalah proses penggunaan berbagai teknik dan prinsip untuk tujuan mendefinisikan proses atau sistem secara detail. Tujuan utama desainer adalah menghasilkan model atau representasi sebuah entitas yang akan dibangun.
·         Implementasi dan Pengkodean
Implementasi atau pengkodean adalah proses menterjemahkan dokumen hasil desain menjadi baris-baris perintah bahasa pemrograman komputer. Semakin baik hasil analisis dan disain yang dilakukan, maka proses pengkodean ini akan lebih mudah dilakukan.
·         Pengujian
Pengujian software adalah proses untuk memastikan apakah semua fungsi sistem bekerja dengan baik, dan mencari apakah masih ada kesalahan pada sistem.
Pengujian atau testing software sangat penting untuk dilakukan. Pengujian ini bertujuan untuk memnjamin kualitas software, dan juga menjadi peninjauan terakhir terhadap spesifikasi, disain dan pengkodean.
Terdapat dua pendekatan dalam melakukan pengujian software , yaitu :
1.      Pendekatan black-box testing
Pendekatan ini melakukan pengujian terhadap fungsi operasional software. Pendekatan ini biasanya dilakukan oleh penguji yang tidak ikut serta dalam pengkodean software.
2.      Pendekatan white-box testing
Metoda ini dilakukan oleh orang yang memahami cara kerja operasi internal software yang membentuk keseluruhan operasi software.
2.2     Teknologi Informasi untuk Implementasi Sistem
2.2.1  Database
Penggunaan metode file system pada server yang mengolah (menyimpan, mengambil, atau memproses) banyak data akan sangat  merepotkan. Disamping kesulitan bagi pengelola web, juga kinerja server akan lambat. Untuk mengatasi kesulitan di atas, akan lebih baik kalau server menggunakan database engine untuk membantu manajemen data pada server.
Manajemen dasar database relasional adalah pengarsipan data-data dalam record-record table. Sebuah database dapat berisi tabel-tabel. Record adalah bagian terkecil dari sebuah tabel. Saat ini banyak database engine yang tersedia dengan kemampuan yang berbeda-beda seperti Oracle, MySQL, Sybase ASE, Microsoft SQL Server, dan lain-lain.
Text Box: RecordText Box: RecordText Box: RecordText Box: Record

Gambar 2.3 Struktur Database

 
 










            Namun, meski penyimpanan data dalam sistem Database Management System (DBMS) konvensional seperti di atas (untuk selanjutnya disebut DBMS dalam skripsi ini) merupakan metode terhandal dan teraman untuk saat ini, masih terdapat beberapa kelemahan dari aspek pertukaran data yang disimpan. Pertukaran data di sini diartikan sebagai pengiriman dan penerimaan data.
Sebuah DBMS memperlakukan data sesuai dengan sifat dan strukturnya hanya di dalam DBMS itu sendiri. Setelah data tersebut di-retrieve atau dipanggil, data akan kehilangan sifat dan strukturnya. Contohnya dapat dilihat dari diagram berikut :

 





Gambar 2.4 Perbandingan proses pemanggilan data antara DBMS dan XML
 
 








            Dari gambar di atas dapat dilihat bahwa dalam DBMS, data-data mata kuliah tidak terintegrasi sebagai suatu data yang berkaitan satu sama lain begitu data-data tersebut diambil dari DBMS. Hal ini tetntunya dapat dipecahkan dengan cara mendeskripsikan data-data kembali, yaitu setelah diambil, dengan menggunakan pemrograman, misalkan memakai PHP, ASP, atau yang lain. Namun, cara ini tidaklah praktis dan bermasalah dalam hal pengembangannya, karena pengembang harus membuat program deskripsi data setiap kali data ditransferkan. Selain itu, pada umumnya tiap vendor DBMS menggunakan tipe data yang berbeda-beda untuk mendeskripsikan data. Oracle misalnya, menggunakan tag NUMBER untuk menyatakan data numerik, sementara MySQL menggunakan tag INT, dan/atau SMALLINT. Sehingga terdapat kesulitan bila suatu data yang disimpan dalam Oracle akan diambil dan dimasukkan dalam database MySQL.
            Di samping itu, tiap-tiap vendor tentunya menggunakan metode yang berbeda-beda dalam mendeskripsikan struktur data, sehingga aspek kompatibilitas menjadi masalah yang besar. Padahal, di era information sharing sekarang ini, benar-benar diperlukan suatu wahana penyimpanan dan pertukaran data yang bersifat universal yang memudahkan pengembang untuk menyimpan dan melakukan data exchange.
            Dengan XML, data dapat dipertahankan integritasnya pada saat ia dipanggil dari tempat penyimpanan data. Sehingga, suatu data selalu dapat diketahui sifatnya dan kaitannya dengan data yang lain. Misalkan dalam contoh di atas, kita dapat selalu mengetahui bahwa data Kode berkaitan dengan data Tujuan karena keduanya berada dalam satu struktur yang jelas. Hal ini dilakukan tanpa pengembang harus membuat suatu program khusus untuk mengidentifikasi data tersebut.
            Salah satu keunggulan XML lainnya yang penting adalah fleksibilitasnya dalam aspek penyimpanan data. Dengan XML kita dapat melakukan perubahan struktur data dengan mudah, antara lain dengan menggunakan XSLT. Hal ini dijelaskan melalui gambar berikut.
 





Gambar 2.5 Konversi struktur data XML menggunakan XSLT
 
 











            Dari gambar di atas kita dapat melihat keunggulan dari aspek fleksibilitas XML. Dalam DBMS, untuk mengubah suatu struktur data kita harus merubah deskripsi tabel, dan ini tentu membutuhkan usaha yang besar karena mengubah deskripsi tabel berarti mengubah pula diagram Entity Relationship (E-R) dari database yang bersangkutan. Apalagi bila yang diubah adalah tabel yang berperan penting, tentunya dapat mengubah hampir seluruh deskripsi relasi dalam database yang telah ditentukan sebelumnya. Untuk menjaga referential integrity dari database setelah perubahan merupakan pekerjaan yang tidak kecil.
            Berdasar argumen-argumen di atas maka sekarang vendor-vendor DBMS terkemuka seperti Oracle, IBM, dan Microsoft mulai menyediakan fasilitas konversi data dari DBMS ke format XML.
2.2.2   Database XML
            Seperti telah disebutkan di atas, penyimpanan data dalam bentuk file systems memang tidak praktis dan banyak kekurangannya. Kekurangan yang paling menonjol adalah redundancy data, yaitu terjadi pengulangan data yang sama pada tiap-tiap file yang menyimpan data. Kekurangan ini membuat tingkat skalabilitas sistem menjadi rendah, karena tiap kali kita ingin memodifikasi suatu data, maka file yang mengandung data yang sama harus turut pula dimodifikasi. XML pada awal perkembangannya menyimpan data dalam bentuk file systems. Setelah XML berkembang dan banyak pihak melihat potensinya yang besar, maka banyak pengembang perangkat lunak XML mengkombinasikan keunggulan pada sistem DBMS dengan XML, sehingga sekarang beredar beberapa alternatif pengembangan sistem database berbasis XML. Setidaknya ada dua cara dalam memasukkan keunggulan DBMS ke XML :
a.      Sistem Konversi
Sistem ini digunakan oleh vendor-vendor yang sudah sejak dahulu berkecimpung dalam dunia DBMS, seperti Oracle dan IBM. Cara kerja sistem ini pada dasarnya adalah dengan menyediakan suatu fasilitas konversi dari DBMS ke XML dan sebaliknya. Data yang disimpan dalam bentuk XML dapat dikonversi ke tabel-tabel dan record-record yang ada pada DBMS. Sebaliknya, tabel-tabel dalam DBMS dapat dikonversi menjadi elemen-elemen dan file XML.
Kelemahan dari sistem ini adalah beratnya kerja server ketika harus mengkonversikan data-data tersebut. Selain itu, metode ini masih belum menjamin sepenuhnya aspek kompatibilitas. Misalnya data XML yang dikonversi dari Oracle tentunya berbeda dengan data yang dikonversi dari MySQL ke XML. Masalah fleksibilitas juga masih belum sepenuhnya terpecahkan, karena untuk memodifikasi struktur data kita masih harus mengubah struktur tabel yang ada kemudian menjamin terwujudnya referential integrity kembali setelah modifikasi. Sedangkan kelebihan dari sistem ini adalah data masih tersimpan dalam sistem DBMS, sehingga keunggulan DBMS dalam hal penyimpanan data masih dapat dimanfaatkan.
b.      Database XML
Cara yang kedua adalah dengan menggunakan database XML. Istilah dalam hal ini adalah native XML database. Sistem ini menyimpan file-file XML dalam bentuk aslinya, jadi tidak dalam tabel dan record seperti pada cara yang pertama. Pada native XML database file-file XML saling direlasikan seperti pada sistem basis data relasional. Sistem ini memberikan tingkat kompatibilitas dan fleksibilitas yang lebih tingi dari cara yang pertama. Namun, sampai sekarang belum ada vendor native XML database yang mampu membuktikan kesetaraan database XML dengan DBMS dalam hal keamanan dan manajemen data internalnya.
2.3.  Skalabilitas Aplikasi Berbasis Web Menggunakan XML
Banyak situs internet mempunyai content dengan sifat statis, seperti profil perusahaan, artikel, dan keterangan-keterangan lain. Situs ini mempunyai dokumen dengan teks sederhana, image dan hyperlinks ke dokumen-dokemen miliknya. Untuk mengembangkan situs yang bersifat statis, kita cukup menggunakan teknologi client-side. HTML dan Cascading Style Sheet (CSS) dapat digunakan untuk mengatur struktur dan menampilkan halaman content. Seandainya tampilan ingin diperindah maka dapat ditambahkan script yang sifatnya client-side seperti JavaScript, Jscript ataupun VBScript. Tetapi dengan berkembangnya internet, situs yang ada di internet tidak hanya berfungsi untuk mempresentasikan content, tetapi cenderung berupa apilkasi yang kebanyakan terhubung ke suatu basis data. Pada tahap ini situs akan bersifat dinamis, karena content yang dipresentasikan akan bervariasi, berubah-ubah tergantung pada data yang diminta dan action dari suatu user. Untuk mengembangkan situs yang dinamis diperlukan teknologi server-side, seperti Java, PHP, ASP, CGI, dan lain sebagainya. Dengan teknologi server-side kita dapat mengembangkan suatu aplikasi berbasis internet yang dapat menghasilkan dan menampilkan content secara dinamis.
Perbedaan mendasar antara HTML dengan bahasa server-side adalah HTML diterjemahkan oleh script client browser, tidak dieksekusi di server. Dengan membuat kode yang dapat dieksekusi pada server, kita dapat menciptakan banyak sekali aplikasi yang sifatnya dinamis dan dapat dikendalikan oleh user melalui browser.
Bila kita mengembankan sebuah situs dinamik, hanya tinggal menunggu waktu saja bagi kita untuk memakai sebuah database, baik itu DBMS, maupun database berbasis XML. Teknologi server-side menggunakan banyak cara untuk menghubungkan antara aplikasi yang kita buat dengan database server.
Text Box: Gambar 2.9 Aristektur Aplikasi berbasis web menggunakan database server
 









            Dalam aplikasi berbasis web, aspek skalabilitas sistem harus benar-benar diperhatikan. Apalagi bila sistem yang dibuat merupakan sistem yang bersifat dinamis, dimana pengembangan dan modifikasi sistem sering dilakukan seperti pada sistem pembelajaran jarak jauh di MTI ini.
            Dengan menggunakan HTML sebenarnya pengembang perangkat lunak sudah dapat membuat suatu situs yang dinamik, seperti yang telah disebutkan di atas. Namun, dengan berkembangnya sistem yang ditandai dengan membengkaknya data, perlu dipikirkan alternatif pengganti HTML sebagai bahasa markup untuk menyimpan dan menampilkan data ke layar.
            Para pengembang beralih ke XML sebagai sarana untuk menampilkan data karena memandang HTML memiliki beberapa kelemahan mendasar sebagai berikut. Pertama, HTML tidak dapat mendeskripsikan sifat dan struktur data yang ada di dalamnya. Data yang ada dalam file HTML hanya diperlakukan seperti teks biasa. Sedangkan XML mampu mendeskripsikan baik sifat maupun struktur data. Kedua, HTML tidak mampu memisahkan antara content dan style dari suatu halaman. Jadi bila kita melihat suatu halaman web yang ditulis dengan HTML, akan sulit bagi kita untuk menemukan bagian yang berupa data di antara tag-tag yang berfungsi sebagai layout atau disain halaman. Apalagi bila halaman web tersebut dirancang dengan rumit.
            Sebaliknya, XML mampu memisahkan antara bagian yang berupa data dengan bagian yang bertugas untuk menampilkan data. Teknologi yang dimanfaatkan oleh XML dalam hal ini adalah XSL (eXtensible Stylesheet Language). XSL dalam beberapa aspek dapat dianalogikan dengan CSS pada HTML. Bedanya, XSL sendiri merupakan suatu dokumen XML, meskipun ekstensi filenya adalah .xsl. Lagipula, XSL mampu memodifikasi struktur dan tampilan data, serta mampu memanggil data dari berbagai dokumen XML. Lebih lanjut tentang XSL dan XML ini akan diterangkan pada bab III.

BAB III
EXTENSIBLE MARKUP LANGUAGE (XML)
DAN TEKNOLOGI PENDUKUNGNYA
Dalam bab ini akan dibahas mengenai XML dan XSLT, serta sekilas tentang Java dan Jakarta Tomcat Servlet Container.
3.1        eXtensible Markup Language (XML)
3.1.1    Sejarah Singkat
            XML merupakan bahasa markup yang direkomendasikan oleh World Wide Web Consortium (W3C). W3C merupakan sebuah organisasi yang mengatur standarisasi berbagai jenis bahasa dan perangkat lunak yang mendukung teknologi internet. XML direkomendasikan oleh W3C pada tahun 1998. XML sendiri merupakan derivat dari SGML (Standard Generalized Markup Language), yang juga merupakan bahasa yang extensible, namun sangat kompleks. Spesifikasi SGML sendiri mencakup lebih dari 500 halaman (www.extropia.com/tutorials/xml).
 Pada awalnya, XML dimaksudkan sebagai bahasa yang mendukung electronic publishing dalam skala besar. Dalam perkembangannya, XML tumbuh sebagai bahasa yang banyak digunakan dalam pertukaran informasi dan data.
            Pembahasan tentang XML dimulai pada tahun 1996. Saat itu komunitas internet meginginkan sebuah bahasa yang extensible seperti SGML, namun sederhana seperti HTML. Maka W3C menyeponsori sebuah kelompok ahli SGML untuk mengembangkan bahasa baru tersebut. Pekerjaan kelompok tersebut mirip dengan proses penciptaan Java, yang merupakan penyederhanaan dari C++. Mereka bekerja dengan cara membuang bagian-bagian yang tidak esensial dari SGML. Akhirnya, pada tahun 1998, W3C merekomendasikan versi 1.0 dari XML, dan lahirlah bahasa baru ini.
 Seperti disebutkan di atas, XML adalah respon atas tantangan yang tidak mampu dijawab oleh HTML : skalabilitas, integritas data, serta universalitas. Meskipun HTML dapat dikatakan universal untuk semua platform sistem operasi maupun browser, ia tidak dapat dipakai dalam platform non-PC, seperti PDA, handphone, dan peralatan bergerak lainnya. Sebaliknya, struktur XML memungkinkannya untuk menjadi bahasa markup yang universal, bahkan bisa diterapkan pada platform non-PC. Oleh karena sifat inilah, aplikasi yang paling banyak memanfaatkan keuntungan XML adalah aplikasi yang diterapkan dalam sistem yang banyak melakukan pertukaran data, misalnya aplikasi B2B (Business to Business).
3.1.2  Struktur dokumen XML
            Sebuah dokumen XML terdiri atas teks dan elemen. Elemen-elemen dalam dokumen XML dapat mengandung teks atau elemen lain. Elemen juga dapat mengandung atribut-atribut.
            Setiap dokumen XML harus memiliki sebuah pendeklarasian tipe dokumen yang diletakkan di posisi paling atas dokumen. Setiap dokumen juga harus memiliki sebuah elemen root yang mencakup semua teks dan elemen-elemen lain dalam dokumen. Semua elemen dalam dokumen XML harus dalam bentuk yang well-formed, artinya pendeklarasian elemen harus memiliki start tag dan end tag. Dokumen XML juga dapat memiliki deklarasi untuk menghubungkannya dengan XSL sebagai bahasa untuk menampilkan dokumen.
            Contoh sebuah dokumen XML adalah sebagai berikut :
<?xml version="1.0" encoding="UTF-8"?>                      (1)
<?xml-stylesheet href="xsl/kuliah.xsl" type="text/xsl"?>                        (2)
<kuliah>                      (3)                                           
<mk kodemk="MTI 611">
            <nama>Teknologi Informasi</nama>
            <sks>3</sks>
            <jenis>Wajib</jenis>
            <semester>1</semester>
            <tujuan>Teknologi informasi ditinjau dari segi perangkat                             (4)
keras dan perangkat lunak komputer. Arsitektur teknologi informasi.
Teknologi middleware. Faktor kehandalan, skalabilitas, dan keamanan.
 Implementasi proses-proses bisnis.</tujuan>
            <ktkunci>hardware software bisnis
arsitektur middleware kehandalan</ktkunci>
</mk>
<mk kodemk="MTI 612">
            <nama>Sistem Informatika</nama>
            <sks>3</sks>
            <jenis>Wajib</jenis>
            <semester>1</semester>
            <tujuan>Sistem informatika sebagai himpunan manusia, mesin dan prosedur,
            serta pelembagaannya dalam masyarakat. Ragam dan arsitektur sistem informatika. Strategi dan politik informasi. Perilaku dan budaya informasi. Proses pengelolaan informasi untuk berbagai keperluan.
            </tujuan>
            <ktkunci>software</ktkunci>
</mk>
</kuliah
Keterangan :
(1)      Deklarasi dokumen XML. Version menunjukkan versi dari standar yang direkomendasikan oleh W3C. Sedang encoding menunjukkan tipe karakter yang digunakan dalam dokumen. Encoding merupakan informasi bagi parser XML mengenai bagaimana seharusnya karakter yang  ada dalam dokumen diperlakukan. Lebih lanjut mengenai parser akan dijelaskan dalam bagian lain dari skripsi ini. Tipe karakter lain yang sering digunakan adalah ISO-8859-1, ASCII, UTF-16, ISO-10646, dan UCS-4. Namun, atribut encoding ini merupakan pilihan, dapat dicantumkan, dapat pula tidak.
(2)      Deklarasi stylesheet yang digunakan. Contoh di atas menunjukkan bahwa dokumen akan diproses menggunakan stylesheet XSL dalam file kuliah.xsl.
(3)      Merupakan top element dari dokumen. Seperti dijelaskan pada bagian sebelumnya, setiap dokumen XML harus memiliki sebuah elemen yang menampung seluruh elemen lain dan teks yang ada.
(4)      Merupakan elemen ‘mk’ yang terdiri atas beberapa elemen anakan, serta sebuah atribut ‘kodemk’.
Seperti disebutkan di atas, dokumen XML harus well-formed. Setiap deklarasi elemen harus memiliki start-tag dan end-tag. Selain itu, posisi dari tag deklarator harus urut sesuai dengan posisi elemen tersebut dalam struktur datanya. Barikut contoh dokumen yang tidak well-formed.
Contoh 1:
<kuliah>
<mk>
            <nama>Teknologi Informasi</nama>
</kuliah>
Kesalahan : tidak ada end-tag dari elemen ‘mk’.
Contoh 2:
<kuliah>
<mk>
            <nama>Teknologi Informasi<nama>
</mk>
</kuliah>
Kesalahan : Teknologi informasi diapit oleh dua start-tag
Contoh 3:
<kuliah>
<mk>
            <nama>Teknologi Informasi</nama>
</kuliah>
            </mk>
            Kesalahan : posisi end-tag ‘mk’ dan ‘kuliah’ terbalik.
            Dokumen yang well-formed adalah seperti berikut :
<kuliah>
<mk>
            <nama>Teknologi Informasi</nama>
</mk>
</kuliah>
            Dalam aplikasi XML, kesalahan yang sering terjadi adalah tidak well-formed nya sebuah dokumen. Kesalahan ini dapat diminimalisir dengan menggunakan perangkat lunak editor XML seperti XML Spy atau eXcHaNgER, daripada menulis dokumen XML secara manual, misalnya menggunakan Notepad. Bila kesalahan di atas terjadi, akibatnya fatal karena browser tidak akan dapat menampilkan dokumen XML. Hal ini karena XML merupakan bahasa yang ketat (strict), tidak seperti HTML yang relatif lebih bisa mentolerir kesalahan seperti di atas.
3.1.3    XML Validator
            Di bagian atas telah disebutkan bahwa sebuah dokumen XML harus well-formed. Ada sebuah kondisi lagi yang bersifat opsional yang dapat dimiliki oleh XML, yaitu sifat valid. Sebuah dokumen XML dikatakan valid bila dokumen tersebut sesuai dengan validatornya. Karena bersifat opsional, dan terutama karena dalam skripsi ini penulis tidak menggunakan validator, maka bagian ini hanya akan dibahas sekilas saja.
            Terdapat dua macam cara memvalidasi dokumen XML :
1.      Menggunakan Document Type Definitions (DTD)
DTD merupakan file teks biasa yang mengandung deklarasi tentang dokumen XML serta tipe data elemen-elemen yang terdapat di dalamnya. Contoh dari DTD untuk dokumen XML dalam contohkul.xml di atas adalah sebagai berikut.
<!ELEMENT kuliah (mk)>
<!ELEMENT mk (nama, sks, jenis, semester, tujuan, ktkunci)>
<!ATTLIST mk kodemk ID #REQUIRED>
Misalkan kemudian DTD di atas disimpan dalam file ‘kuliah.dtd’, maka dalam dokumen XML ditambahkan tag yang menunjukkan DTD tersebut. Tag tersebut adalah :
<!DOCTYPE perkuliahan SYSTEM “kuliah.dtd”>
<?xml version=”1.0” encoding=”UTF-8”?>
Atau dapat pula DTD tersebut disertakan langsung dalam dokumen XMLnya sebagai berikut :
<!DOCTYPE perkuliahan
            <!ELEMENT kuliah (mk)>
<!ELEMENT mk (nama, sks, jenis, semester, tujuan, ktkunci)>
<!ATTLIST mk kodemk ID #REQUIRED>
<?xml version=”1.0” encoding=”UTF-8”?>
Dalam DTD di atas dinyatakan bahwa tipe dokumen diberi nama perkuliahan. Pemberian nama ini terserah oleh kita. Jenis dan persyaratan dokumen yang diatur dalam DTD ini perlu diberi nama tertentu supaya dapat dibedakan dengan DTD-DTD lainnya.
DTD di atas juga mensyaratkan bahwa dokumen XML harus memiliki 8 elemen : 1 elemen (‘kuliah’) sebagai elemen root, yang memiliki elemen-elemen anakan ‘mk’. Tiap elemen ‘mk’ harus memiliki 6 elemen anakan : ‘nama’, ‘sks’, ‘jenis’, ‘semester’, ‘tujuan’, dan ‘ktkunci’. Di samping itu tiap elemen ‘mk’ harus memilki satu atribut, yaitu ‘kodemk’. Atribut ‘kodemk’ ini bersifat ID, artinye merupakan ciri khusus yang unique dari elemen ‘mk’. Sifat ID dalam DTD ini dapat dianalogikan seperti UNIQUE KEY pada RDBMS. Atribut ‘kodemk’ juga bersifat #REQUIRED, yaitu harus ada.
Kemudian setelah DTD dituliskan, sebuah parser validator ditugaskan untuk mengecek validitas dari dokumen XML terhadap DTDnya. Parser validator kemudian mengirimkan pesan apakah dokumen XML sudah valid atau masih ada beberapa bagian yang perlu diperbaiki.
2.      Menggunakan XML Schema
DTD merupakan cara yang baik untuk mengecek validitas sebuah dokumen XML. Sayangnya, DTD masih belum mampu mendefinisikan tipe data seperti string, dan integer sekaligus batas-batasnya. Misalnya ada sebuah dokumen XML berikut :
<ketinggian satuan=”meter”> 1206.90 </ketinggian>
DTD tidak mampu mendefinisikan bahwa isi elemen ‘ketinggian’ harus berupa integer dengan dua angka di belakang nol, atau nilai elemen ‘ketinggian’ harus berkisar dari 500 sampai 2000.
Selain itu, DTD ditulis dengan bahasa yang berbeda, yang menimbulkan kerancuan bila dicampurkan dengan dokumen XML (Roger L. Costello, XML Technologies Course, 2002). Maka muncul suatu alternatif dalam memvalidasi dokumen XML, yaitu menggunakan XML Schema. XML Schema memiliki sekitar 44 tipe data, diantaranya :
–string
–boolean
–decimal
–float
–double
–duration
–dateTime
–time
–date
–gYearMonth
–gYear
–gMonthDay
Contoh dari XML Schema ini adalah sebagai berikut (referensi dari http://www.w3.org/TR/xmlschema-0/ 
)

<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                      targetNamespace="http://localhost/skripsi"
                      xmlns=http://localhost/skripsi                                                   (1)
                      elementFormDefault="qualified">
    <xsd:element name="kuliah">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element ref="mk"/>                                                    (2)
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>


    <xsd:element name="mk">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element ref="nama" />
                <xsd:element ref="sks" />
                <xsd:element ref="jenis" />
                <xsd:element ref="semester" />                                          (3)
                <xsd:element ref="tujuan" />
                <xsd:element ref="ktkunci" />
            </xsd:sequence>
            <xsd:attribute ref=”kodemk” />
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="nama" type="xsd:string"/>
    <xsd:element name="sks" type="xsd:integer"/>
    <xsd:element name="jenis" type="xsd:string"/>
    <xsd:element name="semester" type="xsd:integer"/>                      (4)
    <xsd:element name="tujuan" type="xsd:string"/>
    <xsd:element name="ktkunci" type="xsd:string"/>
    <xsd:attribute name=”kodemk” type=”xsd:string”/>
</xsd:schema>


Keterangan :
(1)   Menyatakan xmlns (xml name space) dari dokumen XML Schema yang bersangkutan. Lebih lanjut tentang xmlns ini akan dijelaskan dalam bagian XSLT (eXtensible Stylesheet Language Transformastion)
(2)   Mendefinisikan elemen ‘root’ kuliah yang harus memiliki elemen ‘mk’
(3)   Mendefinisikan elemen ‘mk’ yang harus terdiri dari elemen dan atribut yang tertera
(4)    Mendefinisikan tipe data dari elemen-elemen dan atribut yang tertera.
Dari contoh XML Schema di atas dapat dilihat bahwa XML Schema memberikan persyaratan validitas yang lebih kompleks dari DTD, terutama dari syarat tipe data. 
XML Schema disimpan dalam suatu file yang berbentuk .xsd, misalkan file ‘kuliah.xsd’. Setelah itu kita menambahkan tag yang menunjukkan lokasi XML Schema pada dokumen XML yang kita buat, seperti contoh berikut :
<?xml version="1.0"?>
<kuliah xmlns ="http://localhost/skripsi"
                                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                                  xsi:schemaLocation="http://localhost/skripsi/xsd
                                                          kuliah.xsd">
        <mk kodemk=”MTI 001”>
        …………….

XML Schema merupakan suatu dukungan yang lengkap dan solid terhadap proses validasi dokumen XML. Lebih jauh tentang XML Schema dapat dilihat pada situs W3C di :
- http://www.w3.org/TR/xmlschema-0/
- http://www.w3.org/TR/xmlschema-1/ 
 - http://www.w3.org/TR/xmlschema-2/
3.1.4    XML Parser
Sebenarnya, semua teks yang berbentuk elemen-elemen well-formed bisa disebut sebagai dokumen XML (http://www.textuality.com/px/talk/show/s-22.html). Jadi tidak perlu tag deklarasi yang diletakkan di awal. Sebuah teks yang berupa : <jurusan>elektro</jurusan> sudah merupakan suatu dokumen XML yang well-formed, yang merupakan syarat wajib dokumen XML.
Namun, teks yang well-formed tersebut tidak ada artinya bila tidak ada suatu program aplikasi yang menterjemahkannya. Teks <jurusan> hanya akan dianggap sebagai teks yang terdiri atas karakter ‘<’, ’j’, ’u’, ’r’, ’u’, ’s’, ’a’, ’n’, dan ‘>’.
Untuk memberikan informasi bahwa teks <jurusan> merupakan sebuah start tag dari elemen ‘jurusan’, kita membutuhkan sebuah program yang disebut parser. Jadi, parser merupakan sebuah interface antara dokumen XML dengan berbagai program aplikasi yang menggunakannya (gambar 3.1). Parser merupakan sebuah program yang cukup kompleks, yang bisa ditulis dengan berbagai macam bahasa, seperti Java, PHP, Perl, dan C. Karenanya, dalam skripsi ini hanya akan dibahas garis besarnya saja.


 




Gambar 3.1 Kedudukan parser dalam struktur aplikasi XML
 
                                   

            Ada dua macam parser yang akan dibahas dalam skripsi ini, yaitu DOM Parser dan SAX Parser,
3.1.4.1   DOM Parser
            DOM merupakan singkatan dari dari Document Object Model. DOM Parser menterjemahkan dokumen XML dan menempatkan elemen-elemen yang ditemuinya ketika memproses dokumen ke dalam struktur pohon (gambar 3.2). Informasi mengenai struktur dokumen ini kemudian disimpan ke dalam memori. Informasi inilah yang digunakan program aplikasi untuk mengakses dokumen XML.

Gambar 3.2 Cara kerja XML DOM Parser

 
 











3.1.4.2   SAX Parser
            SAX adalah singkatan dari Simple API for XML. API sendiri adalah singkatan dari Application Program Interface. Seperti namanya, dibanding DOM Parser, isi program SAX Parser lebih sederhana. SAX parser bekerja berdasarkan apa yang disebut event-based. SAX Parser berjalan menjelajahi dokumen. Begitu SAX Parser menemukan deklarasi sebuah elemen, ia akan mencatatnya dan menyimpannya dalam suatu event-handler. Event-handler inilah yang menyediakan akses ke isi dokumen XML. Cara kerja SAX Parser diilustrasikan dalam gambar 3.3 berikut.


Dokumen XML
1
 
SAX Parser
 
<kuliah>
2
 
 

   <mk>
3
 
     
        <nama>                                  
Event Handler
Kejadian (event):
1.start elemen kuliah
2.start elemen mk
3.start elemen nama
4.isi elemen nama
5.end elemen nama
dan seterusnya
 
4
 
 

            Sistem Basis Data
5
 
 

       </nama>

6
 
       <jenis>

7
 
            Wajib
8
 
 

      </jenis>

9
 
   </mk>

10
 
</kuliah>
   

Gambar 3.3 Cara kerja SAX Parser

 
 


Dari dua jenis parser yang dibahas di atas, tidak ada parser yang dapat dikatakan lebih unggul dari yang lain (XML By Example). SAX Parser dan DOM Parser dapat dimanfaatkan secara optimal tergantung pada sifat dari dokumen yang hendak di-parse. Bila dokumen XMLnya besar, menggunakan DOM Parser akan banyak memakan memori untuk merepresentasikan dokumen dalam struktur pohon. Maka, penggunaan SAX Parser akan lebih menguntungkan dari segi penghematan resource. Sebaliknya, untuk dokumen XML berskala kecil, penggunaan DOM Parser akan lebih menguntungkan karena DOM Parser menyediakan struktur yang “siap pakai”, sehingga memudahkan program aplikasi dalam mengakses dokumen. Sedang bila kita menggunakan SAX Parser, seorang pemrogram harus bekerja lebih keras dalam mengakses dokumen XML, karena ia harus mendefinisikan sendiri struktur dokumen XMLnya. Sehingga, program aplikasi yang dibuatnya lebih kompleks, akibatnya membebani prosesor yang mengeksekusinya.
SAX Parser lebih tepat digunakan untuk menangani dokumen XML yang dinamis, sedang DOM Parser lebih tepat untuk menangani dokumen yang sifatnya statis.
Proses parsing, baik DOM Parsing maupun SAX Parsing dapat terjadi di dua tempat : di server dan di client. Proses parsing di server diperlukan bila browser yang kita miliki tidak memiliki built in parser. Hal ini tentu saja amat memberatkan server, oleh karena itu, pada skripsi ini penulis mengharuskan user untuk memilih browser yang mendukung XML, artinya memiliki built in parser untuk XML. Dalam proses pengujian, penulis menggunakan Internet Explorer 6.0 yang memiliki parser MSXML 4.0. Jadi, proses parsing terjadi di client. Berikut daftar browser lain yang memiliki built in parser untuk XML* :
  • AIX Netscape
Platform : AIX
  • DocZilla version 1.0
Platform : Windows 95/98/NT dan Linux
  • EXchaNGeR version 0.7
Platform : Java
  • EXeMeL version 0.9a
Platform : Java

  • HyBrick version 0.83
Platform : Windows95/NT
  • InDelv XML browser
Platform : Java 1.1.6 ke atas
  • JUMBO version 3.0
Platform : Java
  • Mozilla version 1.2 beta
Platform : Linux, Win32, MacOS
  • Netscape version 6.1
Platform : Linux/Unix, Win32, MacPPC
  • Opera version 6.05
Platform : Windows, BeOS, Linux, Symbian OS, Solaris (beta), QNX, OS/2 (beta), MacOS
  • XML Viewer version 2001-10-09
Platform : Java
  • X-Smiles version 0.6
Platform : Java
            * Catatan : dari referensi http://www.xmlsoftware.com
3.2       eXtensible Stylesheet Language Transformastion (XSLT)
Di bagian sebelumnya telah dijelaskan mengenai XML. Dalam contoh dokumennya, kita dapat melihat bahwa dokumen XML tidak memiliki perintah tentang bagaimana dokumen tersebut harus ditampilkan. Dengan kata lain, dokumen XML hanya berisi data-data saja. Untuk menampilkan dokumen XML tersebut maka dibutuhkan suatu tools lain, salah satunya adalah XSLT.
XSLT merupakan bahasa yang dirancang untuk mentransformasikan dokumen XML ke dalam format yang lain, seperti format HTML atau Microsoft Word. XSLT sendiri merupakan sebuah dokumen XML. XSLT mencapai tingkat rekomendasi W3C dengan direkomendasikannya versi 1.0 pada tanggal 16 November 1999.
XSLT merupakan cabang dari XSL (eXtensible Stylesheet Language). XSL sendiri merupakan bahasa untuk menentukan tampilan dan format dari data XML. Ada dua cabang dari XSL ini, yaitu XSLT dan XSL Formatting Object (XSL-FO). XSLT merupakan bahasa untuk mentransformasikan XML melalui proses reorganizing dan restructuring. Sedangkan XSL-FO berfungsi untuk memformat dan menentukan layout dari dokumen XML.
            Seperti XML yang merupakan penyederhanaan dari SGML, XSLT merupakan penyederhanaan dari DSSSL (Document Style Semantics and Specification Language), yang dikembangkan untuk menampilkan dokumen SGML.
            Di samping berfungsi sebagai bahasa untuk mentransformasikan dokumen XML, XSLT juga dapat digunakan untuk meng-query data dalam dokumen XML Perlu dijelaskan sebelumnya, proses transformasi yang dilakukan dalam skipsi ini tidak mengubah file XML, melainkan hanya memberikan perintah tentang bagaimana data XML harus tampil.
 Dalam skripsi ini, penulis menggunakan XSLT untuk melakukan transformasi sekaligus meng-query data yang ada, maka penulis berusaha menjelaskan bagian ini dengan lebih detail.
3.2.1    Struktur XSLT
            Transformasi XSLT pada dasarnya adalah mengubah source tree XML menjadi result tree yang baru yang pada umumnya berbeda dengan source tree. Atau, dengan kata lain, mengubah struktur dokumen XML ke dalam struktur baru yang biasanya berbeda. Proses transformasi ini dicapai dengan cara menerapkan XSLT stylesheet, yang mengandung satu atau beberapa template. Sebuah template menjalankan dua fungsi : mengidentifikasikan pola (pattern) yang akan dicocokkan dengan source tree dan kemudian menjelaskan struktur dari result tree yang diinginkan. Contoh dari suatu template dapat dilihat dari gambar berikut

<xsl:template match="/">                       pola (pattern)
 <html><body><b>
    <xsl:apply-templates/> *                                   struktur baru
 </b></body></html>
</xsl:template>

Gambar 3.4 Contoh template XSLT

 
 


            * Catatan :  bentuk <xsl:apply-templates/> sama dengan bentuk <xsl:apply-templates></xsl:apply-templates>, jadi merupakan elemen yang well-formed.

Dalam kasus di atas, berdasarkan pola yang dituliskan, template mencari elemen root dari dokumen XMLnya (dinyatakan dalam …..match=”/”). Kemudian setelah elemen tersebut ditemukan, template mengubah strukturnya menjadi struktur yang baru. Jadi, misalkan kita memiliki dokumen XML sebagai berikut :
<kuliah>
            <mk>
                        <nama> Sistem Basis Data </nama>
            </mk>
</kuliah>
Elemen ‘root’ yang terdapat dalam dokumen XML di atas adalah elemen ‘kuliah’. Maka, setelah ditransformasikan memakai template pada gambar 3.4 di atas, dokumennya menjadi :
<html>
<body>
<b>Sistem Basis Data</b>
</body>
<html>
Dengan demikian maka sekarang struktur dokumen XML menjadi sebuah struktur HTML, yang dapat ditampilkan oleh browser internet.
            Sebuah stylesheet XSLT dapat mengandung beberapa template. Setiap template biasanya mengacu pada satu atau beberapa elemen yang spesifik dalam struktur sumbernya (resource tree). Sebuah template dapat diterapkan pada sebuah elemen tanpa diterapkan pada elemen-elemen anakannya, atau dapat juga diterapkan pada sebuah elemen sekaligus semua elemen anakannya.
3.2.1.1 Pola XSLT
            Pola XSLT merupakan bagian penting yang menunjukkan elemen (atau simpul) dokumen XML mana yang akan ditransformasikan. XSLT memiliki tag-tag untuk menyatakan pola ini, diantaranya :
<xsl:template match="*"> : memproses semua elemen.
<xsl:template match="bab/bagian"> : memproses elemen ‘bagian’ yang mempunyai elemen induk bab
<xsl:template match="bab|bagian"> : memproses elemen ‘bab’ dan elemen ‘bagian’
<xsl:template match="bab//para"> : memproses setiap elemen ‘para’ yang berada satu level atau beberapa level di bawah elemen ‘bab’
<xsl:template match="bab[@id=’2’]"> : memproses elemen ‘bab’ yang memiliki atribut bernilai 2
<xsl:template match="para[6]">: memproses elemen ‘para’ yang menempati urutan ke-6 dalam elemen induknya
3.2.1.2 Namespace
            Setiap file XSLT harus memiliki dan menyebutkan Namespace. Namespace ini diperlukan agar prosesor XSLT mengenal elemen-elemen dan atribut-atribut spesifik yang didefinisikan oleh namespace ini.
Contoh dari penyebutan namespace ini adalah sebagai berikut.
<xsl:stylesheet version=”1.0”
xmlns:xsl=”http://www.w3.org/1999/XSL/Transform”>
…………(template XSLT)
</xsl:stylesheet>
Dalam contoh dipakai elemen-elemen dan atribut-atribut yang telah didefinisikan oleh World Wide Web Consortium (W3C). Namespace dari W3C adalah : http://www.w3.org/1999/XSL/Transform.
Kita dapat menggunakan definisi tambahan (extension) dengan menyebutkan namespace dari pembuatnya. Definisi ini tidak boleh merubah definisi yang telah ditetapkan oleh W3C.
Contohnya :
<xsl:stylesheet version=”1.0”
xmlns:xsl=”http://www.w3.org/1999/XSL/Transform”
xmlns:xslother=”http://localhost/skripsi/XSL”>
…………(template –template XSLT)
</xsl:stylesheet>
Bila namespace ini tidak disebutkan, maka prosesor transformasi tidak dapat mengetahui definisi mana yang dipakai.
Definisi tambahan yang dibuat dalam hal ini dapat berupa:
-          informasi yang digunakan oleh elemen-elemen dan/atau fungsi-fungsi tambahan
-          informasi tentang apa yang akan dilakukan dengan file hasil
-          informasi tentang bagaimana memperoleh file input
-          metadata XSL
-          dokumentasi terstruktur XSL
Dengan menyebutkan namespace W3C untuk XSLT, maka semua elemen dalam stylesheet XSLT yang mengandung kata <xsl:…..> akan diperlakukan sebagai elemen spesifik XSLT. Misalkan elemen <xsl:template match=”/”>…</xsl:template> akan diperlakukan sebagai instruksi untuk menyeleksi elemen dalam dokumen XML mana yang akan diproses. Sedangkan elemen yang mengandung namespace dari pihak lain sebagai definisi tambahan akan diperlakukan berbeda.  Jadi, misalkan kita membuat program untuk mendefinisikan suatu instruksi pemrosesan yang tidak ada dalam vocabulary XSLT dari W3C, maka kita perlu menambahkan namespace kita dalam elemen XSLT. Misalkan, dalam contoh di atas kita mendefinisikan namespace kita dalam http://localhost/skripsi/XSL, yang dimasukkan dalam variabel xslother. Di dalamnya kita mendefinisikan sendiri perintah untuk mencetak isi suatu elemen. Maka elemen XSLT yang merupakan instruksi tambahan kita tersebut adalah :
<xslother: print select=”nama”/>
            Sedangkan bila kita menulis elemen XSLT tanpa menyebutkan namespace, maka elemen tersebut akan dicetak apa adanya. Misalnya elemen <html>…</html> , <body>…</body>, dan <font face=”verdana”>…..</font>.
3.2.1.3 Version
Setiap elemen teratas dari file XSL harus menyebutkan versi dari XSL. Versi XSLT yang terakhir direkomendasikan oleh W3C adalah versi 1.0, yang direkomendasikan tanggal 16 November 1999. Versi 2.0 sampai sekarang masih dalam tahap penyempurnaan. Terakhir W3C mengeluarkan progress report untuk versi 2.0 pada tanggal 15 November 2002 (http:www.w3.org/TR/xslt20).
Contoh pendeklarasian versi adalah sebagai berikut :
<xsl:stylesheet version=”1.0”
xmlns:xsl=”http://www.w3.org/1999/XSL/Transform”>
3.2.1.4 Beberapa perintah XSLT yang penting
  1. <xsl:import href=”…” />
Perintah xsl:import adalah untuk memanggil stylesheet lain dan menggunakan template-template dari stylesheet yang diimport tersebut. Nilai dari atribut href menunjukkan lokasi stylesheet yang diimport. Pada xsl:import, template-template dari stylesheet yang diimport mempunyai prioritas yang lebih rendah dari template-template stylesheet yang mengimport. Misalkan dalam stylesheet yang diimport terdapat template dengan pola ‘<xsl:template match=”kuliah”> … </xsl:template>’. Sementara pada stylesheet yang mengimport juga terdapat template dengan pola yang sama, namun dengan struktur yang berbeda. Maka aturan template yang akan dieksekusi adalah aturan template stylesheet yang mengimport.
Perintah xsl:import ini harus diletakkan tepat di bawah elemen <xsl:stylesheet>…</xsl:stylesheet>, pada posisi tertatas. Elemen-elemen yang diletakkan tepat di bawah <xsl:stylesheet>…</xsl:stylesheet> disebut top level element.
  1. <xsl:include href=”…” />
Pada dasarnya perintah ini sama dengan perintah xsl:import , namun dengan satu perbedaan : prioritas template pada stylesheet yang mengimport sama dengan pada stylesheet yang diimport. Perintah <xsl:include…/> ini harus diletakkan pda posisi top level element, serta tidak boleh mendahului perintah <xsl:import …/>.
  1. <xsl:variable name=”…” select=”…”/>
Perintah ini berfungsi untuk menyimpan suatu nilai ke dalam suatu variabel. Nilai yang disimpan dapat berasal dari isi suatu elemen ataupun kita tentukan sendiri.
            Contoh nilai yang kita tentukan sendiri :
            <xsl:variable name=”sks” select=”2”/>
            atau bisa juga dengan cara:
            <xsl:variable name=”sks”> 2 </xsl:variable>
Perbedaan dua cara di atas adalah pada cara yang pertama, isi variabel bersifat angka. Sedang pada cara yang kedua, variabel tidak bersifat angka, namun hanya bersifat karakter biasa. Maka, perintah penggunaan variabel untuk kedua cara di atas berbeda.
Sedang contoh nilai yang kita ambil dari isi elemen lain :
<xsl:variable name=”nama” select=”mk/nama”/>
atau bisa juga dengan cara:
<xsl:variable name=”nama”>
<xsl:value-of select=”mk/nama”/> </xsl:variable>
Kedua cara di atas sama, yaitu menyimpan isi dari elemen ‘nama’ yang berada di bawah elemen ‘mk’ ke variabel nama. Untuk perintah <xsl:value-of select=”…”/> akan dijelaskan pada bagian lain setelah bagian ini.
Perintah xsl:variable dapat diletakkan pada top level, dapat pula tidak.
  1. <xsl:param name=”…” select=”…”/>
Pada dasarnya perintah xsl:param sama dengan perintah xsl:variable. Perbedaannya adalah, nilai pada xsl:param hanya bersifat default saja. Ketika ada suatu template yang mengandung parameter yang bersangkutan dipanggil, maka sebuah parameter dengan nilai baru dapat dimasukkan ke dalam template tersebut sebagai pengganti nilai default.
Contohnya :
<xsl:template name=”panggil”>
            <xsl:param name=”x” select=”1”/>      // nilai parameter x = 1 (default)
            <xsl:value-of select=”$x”/>
</xsl:template>
………
<xsl:call-template name=”panggil”/>   // nilai x = 1
………
<xsl:call-template name=”panggil”>
            <xsl:with-param name=”x” select=”2”/>  // dalam kasus ini, nilai x = 2
</xsl:call-template>
Pada contoh di atas, nilai default dari x adalah 1. Ketika template “panggil” dipanggil tanpa mengeset nilai parameter yang beru, outputnya adalah nilai default dari x, yaitu 1. Namun ketika template “panggil” dipanggil sambil mengeset nilai x yang baru, maka kali ini outputnya adalah 2.
  1. <xsl:value-of select=”…”/>
<xsl:value-of select=”…”/> barangkali merupakan perintah yang paling sering digunakan setelah perintah pola. Perintah ini sangat berguna. Bagi yang pernah mendalami PHP, perintah ini analog dengan perintah “echo” atau “printf”. Dalam Java, perintah ini analog dengan perintah “out.writeln”. Pendeknya, ketika kita ingin menampilkan isi dari suatu elemen, atribut, atau variabel, maka kita menggunakan perintah ini.
Misalkan kita memiliki dokumen XML berikut ini :
<kuliah>
                        <mk>
                                    <nama> Sistem Basis Data </nama>
                                    <jenis> Wajib </jenis>
                        </mk>
</kuliah>
Bila kita ingin menampilkan isi elemen dari ‘nama’, maka perintah yang kita tuliskan adalah :
<xsl:value-of select=”mk/nama”/>
  1. <xsl:if test=”…”/>
XSLT memiliki perintah kondisional seperti pada bahasa-bahasa pemrograman lainnya. Bila setelah diproses hasilnya benar, maka perintah yang ada di dalam elemen xsl:if akan dieksekusi. Bila salah, maka perintah tersebut diabaikan. Contohnya sebagai berikut. Misalkan kita ingin memberi warna merah pada suhu mesin yang melebihi 100°C. Dokumen XML kita adalah sebagai berikut :
<suhu>
            <mesin kode=”A”>
                        <nama> Mesin bubut </nama>
<temp> 89 </temp>
            </mesin>
            <mesin kode=”B”>
                        <nama> Mesin listrik </nama>
<temp> 120 </temp>
            </mesin>
            <mesin kode=”C”>
                        <nama> Mesin diesel </nama>
<temp> 72 </temp>
            </mesin>

</suhu>
………………….
Template untuk transformasi XSLTnya adalah:
…………………..
<xsl:template match=”mesin”>
            Nama mesin : <xsl:value-of select=”nama”/>
            <xsl:if test=”temp > 100”>
                        Temperatur : <font face=”verdana” color=”#FF0000”>
                        <xsl:value-of select=”temp”/>
                        </font>
            </xsl:if>
</xsl:template>
Keterangan :…color=”#FF0000” merupakan perintah untuk menampilkan warna merah.
  1. <xsl:choose/> dan <xsl:when test=”…”/>
Perintah ini mirip dengan xsl:if, namun digunakan untuk beberapa kondisi yang harus dipenuhi. Misalkan dalam contoh dokumen suhu di atas, untuk temperatur di bawah 100 derajat kita ingin menampilkan dengan warna biru. Maka template untuk transformasinya adalah sebagai berikut :
<xsl:template match=”mesin”>
            Nama mesin : <xsl:value-of select=”nama”/>
            <xsl:choose>
                        <xsl:when test=”temp > 100”>
                                    Temperatur : <font face=”verdana” color=”#FF0000”>
                                    <xsl:value-of select=”temp”/>
                                    </font>
                        </xsl:when>
                        <xsl:when test=”temp < 100”>
                                    Temperatur : <font face=”verdana” color=”#0000FF”>
                                    <xsl:value-of select=”temp”/>
                                    </font>
                        </xsl:when>
            </xsl:choose>
</xsl:template>
  1. <xsl:for-each select=”…”/>
Perintah ini adalah perintah kalang (loop) yang memproses secara rekursif. Di sini XSLT akan memproses perintah yang berada di dalam elemen xsl:for-each selama elemen yang ditunjuknya ditemukan. XSLT akan berhenti memproses bila sudah tidak menemukan lagi elemen yang ditunjuk. Contohnya, bila kita ingin menampilkan temperatur tiap mesin pada contoh dokumen XML di atas.
<xsl:template match=”suhu”>
            <xsl:for-each select=”mesin”>
                        Suhu :<xsl:value-of select=”temp”/><br/> *
            </xsl:for-each>
</xsl:template>
Outputnya adalah sebagai berikut :
Suhu: 89
Suhu: 120
Suhu: 72
* Catatan :  tag <br> merupakan perintah HTML untuk mengatur jarak satu baris. Karena bentuk ini bukan bentuk elemen yang well-formed, maka XSLT memberikan solusi dengan menambah karakter ‘/’. Solusi ini sama dengan solusi pada catatan gambar 3.4 di atas.
  1. <xsl:sort select=”…”/>
Perintah ini adalah untuk mensortir tampilan menurut suatu kata kunci tertentu, baik ascending maupun descending. Misalkan dalam contoh dokumen suhu di atas, kita ingin menampilkan nama mesin urut mulai dari yang temperaturnya paling tinggi. Di sini berarti kata kuncinya adalah elemen ‘temp’. Sedangkan template XSLTnya adalah sebagai berikut.
<xsl:template match=”mesin”>
            <xsl:sort select=”temp” order=”descending”/>
            <p>Nama mesin : <xsl:value-of select=”nama”/>
            Suhu : <xsl:value-of select=”temp”/></p>
</xsl:template>
Outputnya adalah sebagai berikut :
Nama mesin : Mesin listrik
Suhu : 100

Nama mesin : Mesin bubut
Suhu : 89
Nama mesin : Mesin diesel
Suhu : 72
  1. <xsl:element name=”…”/> dan <xsl:attribute name=”…”/>
Perintah di atas adalah untuk menciptakan sebuah elemen dalam struktur output, beserta atribut-atributnya. Perintah ini terutama berguna untuk membuat elemen berupa link HTML, dimana isi dari atribut ‘href’ nya diambil dari elemen lain. Perintah untuk membuat link pada bahasa HTML adalah : <a href=”link.htm”> link </a>. Perintah ini oleh XSLT dipandang sebagai sebuah elemen. Sebenarnya, menuliskan perintah di atas saja sudah cukup untuk membuat sebuah link dalam struktur output. Namun, masalah timbul ketika kita ingin memasukkan nilai dalam suatu elemen dokumen XML ke dalam atribut ‘href’ dari elemen ‘a’. Contohnya kita memiliki dokumen XML sebagai berikut.
<referensi>
            <modul>
                        <nama> Sistem Basis Data </nama>
                        <url> http://localhost/skripsi/kuliah/basisdata.xml </url>
            </modul>
</referensi>

Template XSLT yang salah untuk menampilkan link yang menuju lokasi yang disebutkan pada elemen ‘url’ di atas adalah :
<xsl:template match=”modul”>
     Nama modul : <xsl:value-of select=”nama”/>
     URL : <a href=”<xsl:value-of select=’url’/>”> http://localhost skripsi/kuliah/basisdata.xml
     </a>
</xsl:template>
Template di atas salah, karena XSLT tidak mengijinkan tag ‘<’ ataupun ‘>’ dalam definisi atribut suatu elemen seperti di atas. Sebenarnya untuk menampilkan karakter ‘<” kita dapat menggunakan escape character ‘&lt;’ dari ASCII, sedang untuk karakter ‘>’ kita dapat menggunakan ‘&gt;’. Namun, ini tidak menyelesaikan masalah, karena bila ini diterapkan, XSLT tidak akan menganggap &lt;xsl:value-of select=”…”/&gt; sebagai sebuah instruksi XSLT untuk menampilkan isi elemen tertentu. Jadi kita harus memikirkan solusi lainnya. Salah satu solusi untuk masalah ini diperlihatkan pada template berikut.
<xsl:template match=”modul>
     Nama modul : <xsl:value-of select=”nama”/>
     URL : <xsl:element name=”a” >
  <xsl:attribute name=”href”>
   <xsl:value-of select=”url”/>
  </xsl:attribute>
   http://localhost skripsi/kuliah/basisdata.xml
  </xsl:element>
</xsl:template>
atau
<xsl:template match=”modul>
     Nama modul : <xsl:value-of select=”nama”/>
     URL : <a>
  <xsl:attribute name=”href”>
   <xsl:value-of select=”url”/>
  </xsl:attribute>
   http://localhost skripsi/kuliah/basisdata.xml
</a>
</xsl:template>
Kedua template di atas akan membentuk elemen dengan nama ‘a’ pada struktur output. Elemen ‘a’ ini mempunyai atribut bernama ‘href’ yang isinya sama dengan isi dari elemen ‘url’ pada dokumen XMLnya. Sedangkan isi dari elemen ‘a’ sendiri adalah string “http://localhost skripsi/kuliah/basisdata.xml”. Sehingga terbentuk tag untuk link HTML seperti yang dimaksud.
3.2.2   Parser Transformasi XSLT

Sama seperti dokumen XML, dokumen XSLT juga harus di-parse. Proses parsing ini dapat terjadi di client, dapat pula di server. Untuk parsing di server, terdapat beberapa parser yang mendukungnya, seperti Xalan Java dari http://xml.apache.org. Parser Xalan Java ini harus diinstall di server agar proses transformasi dapat berjalan. Namun, penulis tidak merekomendasikan cara seperti ini, karena dapat memberatkan kerja server. Penulis merekomendasikan agar user memakai browser yang mendukung XSLT, artinya memiliki built in parser untuk XSLT *, seperti :
  • AIX Netscape
Platform : AIX
  • InDelv XML browser
Platform : Java 1.1.6 ke atas
  • Mozilla version 1.2 beta
Platform : Linux, Win32, MacOS
  • X-Smiles version 0.6
Platform : Java
  • Microsoft Internet Explorer 6.0
Platform : Windows98/NT/2000
            * Catatan : referensi dari http://www.xmlsoftware.com
3.2.3.   Metode Transformasi XSLT
            Terdapat dua metode untuk mentransformasikan dokumen XML menjadi format yang lainnya dengan menggunakan XSLT. Pertama adalah metode yang menghasilkan file baru, yang kedua adalah tidak menghasilkan file baru, yaitu hanya merubah tampilan saja. Untuk metode yang pertama, misalnya dapat dilakukan oleh Xalan Java yang dikeluarkan oleh Apache (http://www.apache.org). Parser ini ditulis dalam bahasa Java. Paser Xalan Java merupakan parser XSLT yang powerful. Ia mampu merubah dokumen XML ke dalam berbagai format, tergantung XSLTnya. Perubahan format yang pernah diuji oleh penulis menggunakan Xalan Java adalah perubahan dari format XML ke format MS-Word, HTML, dan MS-Power Point. Namun, dalam skripsi ini penulis tidak menggunakan parser Xalan Java karena ia dijalankan di server, sehingga dapat membebani kerja server. Perlu diperhatikan, dalam proses transformasi, Xalan Java tidak merubah dokumen XML yang ada, namun hanya membuat sebuah file baru sebagai hasil dari transformasinya.
            Metode yang kedua adalah metode dimana tidak dihasilkan file baru. XSLT hanya berfungsi untuk menampilkan dokumen XMLnya saja. Metode ini dapat digambarkan dengan gambar-gambar berikut.

Gambar 3.5 Contoh tampilan dokumen main.xml menggunakan stylesheet main.xsl



Gambar 3.6 Source code dari dokumen main.xml ketika dilihat menggunakan menu View-Source dari I.E 6.0
File main.xsl nya adalah sebagai berikut.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html><body>
<xsl:apply-templates/>
</body></html>
</xsl:template>
<xsl:template match="mk">
<p>Nama mata kuliah : <xsl:value-of select="nama"/><br/>
Jenis : <xsl:value-of select="jenis"/><br/>
Jumlah SKS : <xsl:value-of select="sks"/></p>
</xsl:template>
</xsl:stylesheet>
Dari contoh di atas dapat dilihat bahwa XSLT tidak merubah file dokumen XML yang ditransformasikan, terbukti dari source codenya yang tidak berubah. Sedangkan untuk tampilan tanpa menggunakan XSLT terlihat dalam gambar 3.7 berikut.

Gambar 3.7 Tampilan dokumen XML yang tidak menggunakan XSLT

Dapat dilihat dari contoh tampilan di atas, bahwa bila dokumen XML tidak memakai XSLT, tampilannya akan persis sama dengan source codenya.
Demikian penjelasan mengenai XSLT. Untuk aplikasi yang lebih teknis dari XSLT dapat dilihat pada Bab IV yang membahas dan menganalisa skripsi secara teknis.
3.3  J  a  v  a
Java merupakan sebuah bahasa pemrograman yang dikeluarkan oleh Sun Microsystem (http://java.sun.com) pada bulan November 1995. Java termasuk dalam kategori Pemrograman Berorientasi Obyek. Bahasa ini, sebelum bernama Java, sebelumnya bernama Oak – Oak diciptakan oleh James Gosling – merupakan bahasa yang dapat diterapkan pada berbagai macam platform. Keistimewan dari Oak – dan oleh karenanya diwarisi oleh Java – adalah kedekatannya dengan Internet. Salah satu keistimewaan Java yang paling banyak dikenal orang adalah ia dapat menciptakan program yang dieksekusi melalui browser internet. Program ini disebut applet.
Pada saat James Gosling menulis Oak, ia banyak mengambil fungsionalitas dan syntax dari bahasa C dan C++. Oleh karenanya Java memiliki banyak kemiripan dengan C++. Perbedaannya adalah Java lebih sederhana, dan beberapa bagian yang kompleks dari C++ dihilangkan, seperti pointer dan manajemen memori. Dalam Java, memori diatur secara otomatis, dan pemrogram tidak perlu menulis kode untuk mengaturnya secara manual.
Kode Java ditulis sebagai teks biasa, kemudian disimpan dalam bentuk file .java. Kemudian setelah file .java ini di-compile, akan menghasilkan file lain yang disebut class (berbentuk .class). File class inilah yang dipanggil ketika kita ingin menjalankan aplikasi Java. File class berbentuk bytecode. Bytecode merupakan serangkaian instruksi yang langsung dapat dijalankan komputer, jadi merupakan bahasa mesin. Untuk dapat meng-kompile file .java menjadi bentuk bytecode diperlukan lingkungan (environment) Java. Contohnya adalah Java Development Kit (JDK). Dalam skripsi kali ini, versi JDK yang digunakan adalah JDK 1.3.
3.3.1  Classpath dalam Java
            Dalam contoh mengatur classpath di bawah ini, penulis menggunakan setting classpath yang diperlukan untuk melakukan transformasi XSLT menggunakan Xalan Java. Seperti disebutkan pada bagian sebelumnya, Xalan Java merupakan parser server side yang handal untuk melakukan transformasi XSLT.
            Salah satu hal yang paling penting dalam menjalankan program Java adalah mengatur classpath. Class dianggap sebagai sebuah obyek yang saling berkaitan dengan class-class lainnya. Di sini keistimewaan Pemrograman Orientasi Obyek benar-benar ditonjolkan, yaitu reusability dari class-class tersebut. Kita dapat menghemat banyak waktu karena kita tidak perlu menuliskan kode yang sama untuk beberapa aplikasi. Kita dapat menggunakan class-class yang telah tersedia tersebut untuk berbagai aplikasi.
            Sebelum menjalankan aplikasi Java, kita harus mendefinisikan dimana JDK harus mencari class-class yang diperlukan. Kita harus mendefinisikan lokasi yang spesifik dari class-class tersebut sampai pada direktori yang tepat ada di atasnya. Jadi misalkan kita meletakkan Process.class dalam direktori c:\java\xalan\bin , maka kita harus menuliskan path yang lengkap sebagai berikut :
> set classpath = c:\java\xalan\bin
Program akan menampilkan pesan kesalahan (error) bila kita hanya menuliskan :
> set classpath = c:\java\ , atau
 > set classpath = c:\java\xalan
Pesan kesalahan ini biasanya berujud :
> Exception in thread “main” java.lang.NoClassDefFoundError : org/apache/xalan/xslt/Process.
            Untuk memudahkan pencarian class dan distribusi paket-paket Java, maka pada umumnya class-class yang berfungsi untuk melaksanakan instruksi tertentu diintegrasikan dalam file Java Archive (berbentuk .jar). File .jar ini mirip dengan file .zip, dan file .jar ini dapat diekstrak dengan aplikasi pengekstrak seperti WinZip.
            Jadi kita dapat mendefinisikan classpath kita ke alamat loaksi file .jar ini, karena pada dasarnya file .jar bersifat seperti direktori yang berada tepat satu tingkat di atas file .class. Contoh kasus, dalam transformasi XML ke format file lain, kita memerlukan class Process. Class process ini ada dalam file xalan.jar. Maka kita harus mengatur classpath kita sebagai berikut :
> set classpath = c:\java\xalan\bin\xalan.jar
            Suatu aplikasi biasanya membutuhkan beberapa file class yang terdapat dalam beberapa file .jar. Jadi classpath harus menyebutkan alamat-alamat file-file .jar tersebut. Dalam Java Archive (jar) ini biasanya file-file .class sudah dikelompokkan dalam direktori-direktori tertentu.
3.3.2 Memanggil Class
Pemanggilan class dalam Java dilakukan dengan menyebutkan secara lengkap letak dari kelas tersebut. Berbeda dengan pengaturan classpath, pemanggilan class adalah seperti menuliskan perintah command.com dalam dos prompt, yaitu berfungsi untuk eksekusi sebuah aplikasi.
Misalkan kita akan melaksanakan proses transformasi dari format XML ke HTML. Class yang menangani ini adalah class Process. Class Process berada di bawah direktori xslt. Direktori xslt berada di bawah direktori xalan,  xalan berada di bawah xml, direktori xml berada di bawah direktori apache, dan  apache berada di bwah direktori org. Jadi, untuk memanggilnya secara lengkap adalah sebagai berikut :
> java org.apache.xalan.xslt.Process
Dapat dilihat bahwa tiap direktori dengan tanda titik (.).
3.3.3 JAVA  DEVELOPMENT KIT (JDK, versi 1.3)
            JDK adalah suatu perangkat lunak yang dikeluarkan oleh Sun Microsystem untuk membuat aplikasi, applet, dan komponen yang dapat dijalankan dalam platform Java. JDK mempunyai fasilitas untuk mengembangkan dan menguji program yang ditulis dalam bahasa Java dan dijalankan dalam platform Java. Fasilitas-fasilitas ini hanya dapat dieksekusi melalui perintah yang dituliskan di command line, kecuali untuk appletviewer. Jadi, fasilitas-fasilitas pada JDK 1.3 tidak memiliki Graphical User Interface (GUI). Fasilitas-fasilitas tersebut di antaranya :
-          Java compiler (dieksekusi dengan perintah javac)
Fasilitas ini berfungsi untuk meng-compile program yang ditulis dalam Java menjadi bytecode. Jadi sebelum dapat dieksekusi, file-file yang berbentuk .java harus dijadikan file bytecode terlebih dahulu, biasanya dalam bentuk file .class.
-          Java Interpreter (dieksekusi dengan perintah java)
Mengeksekusi file-file dalam bentuk bytecode.
-          AppletViewer (dieksekusi dengan perintah appletviewer)
Berfungsi untuk menguji dan menjalankan applet.
-          Java Debugger (dieksekusi dengan perintah jdb)
Membantu menemukan bug-bug dalam program
-          Java Archive Tool (dieksekusi dengan perintah jar)
Menggabungkan file-file class dan acuan-acuan lainnya dalam satu file jar.
Masih banyak fasilitas-fasilitas lain dalam JDK 1.3, namun fasilitas-fasilitas di ataslah yang dianggap penulis merupakan fasilitas-fasilitas utama yang sering digunakan para pemrogram.
            Seperti telah disebutkan di atas, fasilitas-fasilitas di atas hanya dapat dijalankan melalui command line (misal MS-DOS Prompt untuk Windows 32). Contoh penulisan perintahnya, untuk Java Interpreter telah dituliskan dalam bagian Memanggil Kelas di atas.
            Dalam JDK 1.3, terdapat sebuah virtual machine, library class, dan file-file lain yang dibutuhkan dalam proses eksekusi aplikasi Java. Ketiga hal tersebut berada dalam suatu lingkungan yang disebut Java Runtime Environment (JRE).
3.4       Jakarta Tomcat
            Jakarta Tomcat ( http://jakarta.apache.org/tomcat/index.html ) merupakan sebuah servlet container yang juga dapat berfungsi sebagai web server. Jakarta Tomcat, seperti halnya Xalan Java merupakan software yang open source. Dalam skripsi ini, Jakarta Tomcat yang digunakan adalah versi 3.3 yang dikeluarkan tanggal 18 April 2002. Sampai sekarang Jakarta Tomcat telah mencapai versi 5.0 yang dikeluarkan pada bulan Oktober 2002. Jakarta Tomcat merupakan implementasi resmi (official implementation) dari teknologi Java Servlet dan Java Server Page (JSP). Dengan Jakarta Tomcat kita dapat menjalankan aplikasi server side yang dibuat dengan Java. Penjelasan mengenai server side application ini telah dibahas pada Bab II.
3.4.1    Java Servlet
            Java Servlet merupakan aplikasi Java berbasis Web yang dijalankan di server. Tidak seperti yang telah dijelaskan pada bagian sebelumnya tentang aplikasi Java yang menjalankannya dari dos prompt, Java Servlet dipanggil oleh browser melalui URL (Uniform Resourced Location). Jadi misalnya kita memiliki sebuah servlet dalam file Cipta.class. Maka bila kita ingin menjalankan program tersebut, kita memanggil dengan mengetikkan perintah berikut pada Address Field browser kita : http://localhost/examples/servlet/Cipta. Atau kita dapat membuat sebuah link yang menuju pada lokasi servlet yang dimaksud. Ketika link tersebut diklik, maka servlet akan dieksekusi. Pemanggilan servlet tidak perlu menyertakan ekstensi dari file servletnya, cukup menyebutkan nama filenya saja.
            Pada Jakarta Tomcat, letak servlet containernya adalah pada direktori : base directory\WEB-INF\classes. Dalam skripsi ini, base directory dari servlet yang digunakan untuk aplikasi adalah tomcat\webapps\Root\skripsi.
            Meskipun letak servlet container adalah pada direktori yang tersebut di atas, namun pada URL yang disebutkan adalah berbeda, tergantung pada setting path dan base directory dari servlet. Path dan base directory dalam skripsi ini akan dijelaskan di Bab IV.
            Untuk membuat servlet, pertama kita harus mengeset classpath (seperti yang telah disebutkan pada bagian sebelumnya tentang classpath dalam Java) menuju suatu file Java Archive yang bernama servlet.jar. Kemudian dari file ini kita dapat mengimport class-class yang berfungsi untuk membentuk servlet dalam kode java kita. Setelah kita membuat file java tersebut, maka kita compile dengan Java Compiler. Kemudian, file bytecode Java (ekstensi .class) yang dihasilkan dimasukkan dalam direktori servlet container.
3.4.2    Struktur direktori Jakarta Tomcat 3.3
Pada dasarnya ada tiga komponen penting dalam Jakarta Tomcat. Pertama adalah servlet container yang berada pada direktori tomcat\webapps\path\WEB-INF\classes. Kedua adalah web server yang base direktorinya adalah tomcat\webapps\ROOT. Sedang yang ketiga adalah library yang diperlukan Jakarta Tomcat untuk mencari class-class Java yang dipanggil oleh servlet. Library ini terletak dalam direktori tomcat\lib.
Dalam direktori tomcat\lib terdapat tiga jenis library, yaitu ‘apps’, ‘common’, dan ‘container’. Library yang berada dalam direktori ‘apps’ adalah library spesifik untuk suatu aplikasi. Library ‘common’ adalah library yang dipakai bersama oleh Jakarta Tomcat dan beberapa aplikasi tertentu. Sedang library ‘container’ dipakai khusus oleh Jakarta Tomcat. Struktur komponen-komponen utama Jakarta Tomcat ini dapat dilihat pada gambar 3.8 berikut.




Gambar 3.8 Struktur direktori Jakarta Tomcat 3.3 pada skripsi ini

 
 

















BAB IV
PENUTUP
            Dari proses penelitian, perancangan, serta implementasi dari sistem dalam skripsi ini, maka penulis membuat beberapa kesimpulan dan saran sebagai berikut.
4.1. Kesimpulan
1.      Penyimpanan data dalam bentuk filesystems XML tepat dan praktis digunakan untuk data-data yang tidak terlalu kompleks relasinya, dan tidak terlalu besar ukurannya.
2.      Aplikasi dalam skripsi ini memiliki keunggulan utama yaitu query data dilakukan di sisi client, sehingga tidak memberatkan kerja server, dengan catatan sumber data harus dirancang seefisien mungkin.
3.      XML mampu mendukung terciptanya suatu gudang data yang lengkap untuk suatu sistem, karena XML mampu melakukan pertukaran data dari berbagai platform, baik hardware maupun software. Dengan demikian Sistem Distance Learning yang dikembangkan dengan XML akan mampu menghadirkan informasi yang lengkap bagi para siswanya, misalnya referensi-referensi materi yang diperoleh melalui pertukaran data dari berbagai sumber.
4.      Sistem Pencarian Data dengan menampilkan kata kunci-kata kunci dari data yang ingin dicari memudahkan user untuk mencari data.
5.      Kombinasi antara XML dan XSLT mampu menghasilkan tampilan halaman web yang baik. Semua yang dapat dilakukan oleh HTML dapat dilakukan oleh XML dibantu dengan XSLT.
4.2. Saran
1.      Agar aplikasi ini dapat diterapkan pada Sistem Distance Learning yang sesungguhnya maka perlu dibuat salah satu dari dua cara untuk mengatasi kelemahan aplikasi dari segi redundansi data : implementasi Database XML atau Sistem Konversi dari DBMS ke XML
2.      Perlu dibuat suatu fasilitas modifikasi data secara otomatis untuk memudahkan operator sistem. Fasilitas modifikasi data ini dapat tersambung ke DBMS untuk penerapan Sistem Konversi atau langsung ke Database XML.
3.      Skripsi ini perlu dikembangkan lebih lanjut demi kepentingan kepekaan Jurusan Teknik Elektro UGM terhadap perkembangan teknologi yang sedang berlangsung, khususnya dalam bidang pengembangan aplikasi berbasis internet. Selain itu, dengan menerapkan dan mengembangkan aplikasi berbasis XML maka kita telah bergabung dalam jutaan pengembang lainnya di seluruh dunia dalam misi mewujudkan suatu sistem yang universal, non vendor specific, diterima dalam berbagai platform, di era pertukaran informasi yang tanpa batas.

DAFTAR PUSTAKA
1.      http://www.xml.com/pub/a/2000/07/26/xslt/xsltstyle.html
2.      Quin, Liam, Open Source Database Toolkit: Resource and Techniques for Improved Development, Wiley Computer Publishing, 2000, halaman 1-34
3.      http://www.malt.com/index.cfm?fuseaction=articles.article1
4.      Piez, Wendel , Converting HTML to XML,http://www.idealliance.org/ papers/xml2001/papers/html/03-03-05.html
5.      http://www.extropia.com/tutorials/xml/history.html
6.      Roger L. Costello, XML Technologies Course, http://www.xfront.com/xml-schema.html, 2000
7.      http://www.textuality.com/px/talk/show/s-22.html
8.      XML By Example
9.      http://msdn.microsoft.com/webservices/building/xmldevelopment/msxml/default.aspx?pull=/library/en-us/dnmsxml/html/xmlparser.asp
10.  http://www.xmlsoftware.com/browsers.html
11.  http://www.w3.org/TR/xslt
12.  http:www.w3.org/TR/xslt20
13.  Deitel, H.M dan Deitel, P.J, Java How To Program, Prentice Hall, 1998
14.  Myers, Tom dan Nakhimovsky, Alexander, Professional Java XML Programming with Servlets and JSP, Wrox Press, 1999, halaman 1-319
15.  IEEE Xplore - Software Engineering, IEEE Transactions on.
16.  http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=32. Diakses pada tanggal 25 Mei 2009 jam 23.05 WIB
17.  Pengertian Software Engineering.
18.  http://www.total.or.id/info.php?kk=Software%20Engineering. Diakses pada tanggal 25 Mei 2009 jam 22.50 WIB
19.  Wikipedia, the free encyclopedia - Software engineering .
20.  http://en.wikipedia.org/wiki/Software_engineering. Diakses pada tanggal 25 Mei 2009 jam 23.00 WIB

Posting Komentar

0 Komentar