BAB II
LANDASAN TEORI 2.1
Web Programming [11] Web programming adalah perangkat lunak yang dijalankan pada server
dengan bantuan antarmuka yang dijalankan pada browser. Perangkat lunak berbasis web hanya mengirimkan hasil jadi proses yang dijalankan di komputer server pada komputer klien dengan bantuan browser. Keuntungan web programming antara lain : 1. Perangkat lunak yang dikembangkan dapat disesuaikan dengan keinginan programmer. 2. Aspek keamanan dapat diatur untuk mendapatkan keamanan yang maksimal atau tidak default. 3. Referensi yang ada saat ini sudah cukup banyak dibandingkan penggunaan framework. 2.2
Web Application Framework [5] Web application framework adalah suatu software framework yang
didesain untuk mendukung pengembangan web dinamis, aplikasi web dan web service. Web application framework biasanya menyediakan fungsi untuk pembuatan template tampilan, database dan lain sebagainya. Hampir semua framework paling tidak mengatur beberapa aspek dari alur kerja perangkat lunak yang dibangun, sebagaimana framework untuk aplikasi berbasis web mengatur rute dari uniform resource locator (URL). Contoh dari web application framework adalah Ruby on Rails, django, struts dan spring MVC. Selain menggunakan framework, dalam mengembangkan aplikasi berbasis web para pengembang juga dapat menggunakan pemrograman berorientasi obyek yang merupakan paradigma pemrograman yang berorientasikan kepada objek Atau juga dapat menggunakan pemrograman terstruktur yaitu suatu proses untuk mengimplementasikan urutan langkah untuk menyelesaikan suatu masalah dalam bentuk program.
III - 1
II - 2
Beberapa keuntungan penggunaan framework antara lain : 1.
Penggunaan kode yang telah dibuat, diuji, dan digunakan oleh programmer lain, sehingga dapat meningkatkan reabilitas kode dan mengurangi waktu pemrograman.
2.
Pemecahan tim pengembang perangkat lunak dapat dipecah menjadi beberapa tim yang mengerjakan menurut keahliannya secara bersamasama. Pada aplikasi berbasis web, ini akan sangat berguna , karena seringkali harus membedakan programmer dan desain tampilan halaman.
3.
Framework dikembangkan oleh para ahli, biasanya bukan hanya menyiapkan
fungsionalitas,
tapi
juga
mempertimbangkan
aspek
keamanan, karena secara langsung sudah ada pada komponen framework itu sendiri. 2.2.1
Arsitektur Pada Web application framework dibagi dua arsitektur yaitu:
1.
Model view controller (MVC) Banyak framework yang menggunakan pola arsitektur Model View
Controller (MVC) untuk memisahkan model data dengan aturan bisnis dari antarmuka pengguna. Model View Controller (MVC) dibagi menjadi 3 jenis yaitu: a. Model Mewakili data yang diproses oleh suatu aplikasi. Menyediakan suatu link ke penyimpanan data. b. View Representasi visual dari user interface atau bisa dibilang tampilan suatu aplikasi. c. Controller Mewakili control flow logic. Keputusan mengenai view mana yang harus dipanggil untuk menampilkan data tertentu, bagian mana dari model yang harus yang di-update ditangani oleh controller. Berperan sebagai perantara dari aplikasi dan mengambil tiap request. Lalu memanggil model yang cocok untuk meng-update atau mengambil data. Setelah itu memilih view yang cocok untuk menampilkan data.
II - 3
2.
Content Management Systems (CMS) Content Management Systems (CMS) adalah sebuah sistem yang
mempermudah penciptaaan sebuah website dinamis, di mana dalam sistem ini pengelolaan isi dan tampilan teknis dipisahkan antara editor, web master, web designer dan web developer. Dengan pemisahan ini editor dapat mengelola isi website tanpa harus tergantung pada web master. Selanjutnya web developer bertanggung jawab atas dalam pengelolaan teknis dari sistem yang dipakai. Sedangkan web desainer bertanggung jawab terhadap tampilan yang digunakan. Aplikasi berbasis CMS yang digunakan untuk membangun website perpustakaan beragam jenisnya dan jumlahnya sangat banyak. Perpustakaan di Indonesia sendiri berbeda-beda dalam memilih aplikasi berbasis CMS yang digunakan untuk membangun website perpustakaan. Berbagai aplikasi berbasis CMS yang dapat digunakan untuk membangun website perpustakaan antara lain : 1.
Joomla Joomla saat ini adalah salah satu CMS yang paling banyak digunakan. CMS ini menjadi CMS yang paling banyak digunakan karena stabil, memiliki modul atau fasilitas yang lengkap dan memiliki prospek pengembangan yang bagus karena didukung oleh banyak komunitas termasuk komunitas pengguna.
2.
Mambo Mamboo memiliki kesamaan dengan Joomla. Modul serta fasilitas yang disediakannya sama dengan modul atau fasilitas-fasilitas yang disediakan Joomla. Pengguna CMS mengenal Mamboo sebagai cikal bakal dari lahirnya Joomla.
3.
Drupal Jenis aplikasi CMS lainnya yang sering digunakan adalah Drupal. Motivasi pengguna untuk menggunakana aplikasi ini karena perangkat lunak ini fleksibel. Dengan pilihan modul, kostumisasi dan pilihan templete (thema) yang tepat website yang indah dan dengan fungsi yang kompleks dapat dibuat dengan mudah.
II - 4
2.2.2
Fitur Beberapa fitur uang disediakan pada web application framework antara lain : 1. Security Berhubungan dengan authentification dan authorization 2. Database access and mapping Berhubungan dengan pengaksesan database 3. URL mapping Berhubungan dengan pemetaan URL yaitu dari URL yang sebenarnya menjadi URL yang virtual 4. Web template system Digunakan untuk meminimalisasi pengkodean 5. Caching Data yang disimpan sebagai cache untuk meminimalkan penggunaan bandwidth 6. Ajax Digunakan untuk membuat aplikasi web menjadi lebih atraktif 7. Automatic configuration Digunakan untuk mengkonfigurasi secara otomatis pada komponen 8. Web services Berhubungan dengan integritas data dan aplikasi
2.3
Ruby [10] Ruby adalah bahasa skripting yang berorientasi obyek. Tujuan dari ruby
adalah menggabungkan kelebihan dari semua bahasa-bahasa pemrograman scripting yang ada di dunia. Ruby ditulis dengan bahasa pemrograman C dengan kemampuan dasar seperti Perl dan Python. Ruby pertama kali dibuat oleh seorang programmer Jepang bernama Yukihiro Matsumoto. Pada tahun 1993 Yukihiro ingin membuat sebuah bahasa skripting yang memiliki kemampuan orientasi obyek. Pada saat itu pemrograman berorientasi obyek sedang berkembang tetapi belum ada bahasa pemrograman scripting yang mendukung pemrograman obyek. Penulisan Ruby dimulai pada Februari 1993 dan pada Desember 1994 dirilis versi alpha dari Ruby. Pada awal
II - 5
perkembangan Ruby, Yukihiro menulis Ruby sendiri sampai pada tahun 1996 sudah terbentuk komunitas Ruby yang banyak mengontribusikan perkembangan Ruby.Saat ini Ruby telah berkembang tidak hanya di Jepang, tetapi diseluruh dunia. Bulan Agustus tahun 2006, Macintosh telah melakukan kerja sama dengan mengintegrasikan Ruby on Rails pada Mac OS X v10.5 Leopard telah diluncurkan bulan Oktober 2007. Sejak Ruby pertama kali dirilis ke publik pada tahun 1995, banyak programmer profesional dari seluruh dunia serius ikut mengembangkan Ruby. Pada tahun 2006, Ruby diterima oleh banyak orang. Dengan komunitas pengguna Ruby yang aktif di banyak kota-kota di seluruh dunia dan konferensi-konferensi beserta pertemuan Ruby terkait.
Gambar 2.1 Statistik Pengguna Ruby
Ruby-Talk, milis utama untuk diskusi Ruby (dalam bahasa Inggris) telah mencapai kisaran 200 email setiap hari. TIOBE index, yang menghitung perkembangan bahasa-bahasa pemrograman, menempatkan Ruby pada peringkat ke 10 diantara bahasa-bahasa pemrograman di seluruh dunia. Melihat pada perkembangan ini, mereka memperkirakan, “Kesempatan Ruby memasuki peringkat atas 10 besar adalah dalam waktu setengah tahun.” Kebanyakan dari perkembangan Ruby beratribut pada terkenalnya software yang ditulis dengan Ruby, terutama framework web Ruby on Rails. Ruby juga sepenuhnya bebas. Tidak hanya gratis, tetapi juga bebas untuk menggunakan, memodifikasi dan mendistribusikan Ruby. Pertama kali, Matz melihat bahasa-bahasa lain untuk mencari sintaks yang ideal. Terkenang pencariannya, Matz berkata, “Saya mau bahasa scripting yang lebih hebat daripada Perl dan lebih berorientasi obyek daripada Python. Di Ruby, semua adalah obyek. Setiap informasi dan kode bisa diberi property dan action. Pemrograman berorientasi obyek memanggil property dengan nama variabel
II - 6
instan dan action, yang disebut sebagai metode. Pendekatan murni berorientasi obyek terutama terlihat pada demonstrasi sedikit kode yang diberikan pada number. Di banyak bahasa-bahasa lain, number dan tipe primitif bukan obyek. Ruby mengikuti pengaruh bahasa Smalltalk dengan memberikan metode dan variabel instan pada semua tipe. Ini memudahkan menggunakan Ruby, karena peraturan-peraturan mengenai obyek semua berlaku pada Ruby. Ruby dianggap sebagai bahasa yang fleksibel, karena bagian-bagian dari Ruby bisa diubah-ubah dengan bebas. Bagian-bagian yang esensi di Ruby bisa dihapus maupun didefinisikan ulang. Bagian-bagian yang sudah ada bisa ditambahkan. Ruby mencoba untuk tidak membatasi programmer. Misalnya, penambahan dilakukan dengan operator plus (+). Tetapi, jika Anda ingin menggunakan kata plus yang lebih mudah dibaca, maka Anda dapat menambahkan metode tersebut pada kelas builtin. Demi kemudahan, operator-operator Ruby adalah juga metode. Anda juga bisa mendefinisikan ulang operator. Contoh sebagai berikut: class Numeric def plus(x) self.+(x) end end y = 5.plus 6 # y sekarang adalah 11
Blok Ruby juga dianggap sebagai sumber kekuatan Ruby yang sangat fleksibel. Programmer dapat menyertakan closure pada setiap metode, menjelaskan bagaimana metode yang bersangkutan seharusnya berperilaku. Closure disebut blok dan telah menjadi satu diantara banyak fitur-fitur Ruby yang paling populer pada banyak pendatang baru Ruby dari bahasa-bahasa imperatif lain seperti PHP atau Visual Basic. Blok terinspirasi dari bahasa-bahasa fungsional. Matz berkata, “Saya ingin menghormati kultur Lisp di closure Ruby”. search_engines = %w[Google Yahoo MSN].map do |engine| "http://www." + engine.downcase + ".com" end
II - 7
Pada kode diatas, blok dijelaskan dalam bentuk do ... end. Metode map memberlakukan blok agar menerima array kata-kata (Google, Yahoo dan MSN). Banyak metode-metode lain di Ruby dibiarkan mempunyai hole yang dibuka untuk programmer agar menulis blok mereka sendiri untuk mengisi dengan lebih lengkap apa saja yang seharusnya sebuah metode lakukan. Tidak seperti banyak bahasa-bahasa berorientasi obyek lain, Ruby hanya menyediakan single inheritance dengan sengaja. Tetapi Ruby mengetahui konsep module (disebut sebagai Categories di Objective-C). Module merupakan kumpulan dari metode-metode. Kelas dapat menggabungkan sebuah module dan menerima semua metode-metode (dari module yang bersangkutan) dengan bebas. Contoh, setiap kelas yang mengimplementasikan metode each bisa mixin module Enumerable, yang menambahkan banyak metode-metode yang menggunakan each untuk melakukan perulangan. Secara umum, Rubyist menganggap ini sebagai cara yang lebih jelas ketimbang multiple inheritance, yang rumit dan bahkan terlalu membatasi. Ruby jarang menggunakan tanda baca dan biasanya cenderung menggunakan keyword berbahasa Inggris, biasanya beberapa tanda baca digunakan untuk memperjelas kode Ruby. Ruby tidak perlu deklarasi variabel. Ruby menggunakan aturan penamaan yang mudah untuk menyatakan scope suatu variabel. Semua ini bertujuan untuk memudahkan dan memperjelas ketika dibaca bagi programmer untuk mengidentifikasi fungsi dari setiap variabel. Dan juga bisa menjadi hal yang tidak perlu bila harus digunakan pada setiap member instan self. Fitur-fitur pada ruby antara lain : 1. Ruby memiliki fitur-fitur yang menangani exception, seperti Java atau Python, untuk mempermudah menangani error. 2. Ruby menyediakan mark-and-sweep garbage collector untuk semua obyek Ruby. Tidak perlu me-maintain reference count pada library extension. Seperti yang Matz katakan, “Ini lebih baik untuk kesehatan Anda.”
II - 8
3. Menulis extension C di Ruby lebih mudah daripada di Perl ataupun di Python, dengan API yang elegan untuk memanggil Ruby dari C. Ini termasuk memanggil Ruby embedded di software, untuk digunakan sebagai bahasa scripting. Interface SWIG juga tersedia. 4. Ruby bisa load library extension secara dinamis jika Sistem Operasi mengijinkan. 5. Ruby menyediakan fitur OS threading yang independent. Maka, untuk semua platform dimana Ruby berjalan, Anda juga punya multithreading, terlepas dari apakah Sistem Operasi mendukung multithreading atau tidak, bahkan pada MS-DOS sekalipun Ruby sangat portable: Ruby kebanyakan dikembangkan di GNU/Linux, tetapi
juga
berjalan
di
banyak
tipe
UNIX,
Mac
OS
X,
Windows
95/98/Me/NT/2000/XP, DOS, BeOS, OS/2, dan lain-lain. Kelebihan Ruby antara lain : 1. Sintaks sederhana. 2. Memiliki exception handling yang baik. 3. Bahasa Pemrograman Berorientasi Objek. 4. Open source, siapa saja dapat menggunakannya dengan cuma-cuma dan dapat ikut berpartisipasi mengembangkannya. 5. Memiliki garbage collector yang secara otomatis akan menghapus informasi tak terpakai dari memori.
2.4
Ruby on rails [4],[14] Ruby on Rails merupakan Ruby-based framework yang menggunakan
pendekatan Model View Controller (MVC). Rails ditulis menggunakan bahasa pemrograman Ruby yang dikenal sangat Object Oriented. Jika ingin membangun suatu website dengan menggunakan Ruby, maka dibutuhkan Rails. Rails merupakan salah satu framework Ruby yang paling populer sekarang ini. Oleh karena itu dinamakan Ruby on Rails. Dilihat dari namanya sering ada salah pengertian bahwa bukan Ruby yang digunakan pada Rails tetapi Rails yang
II - 9
digunakan pada Ruby. Rails dibangun pada dua prinsip yaitu convention over configuration dan Don’t Repeat Yourself (DRY) :
1.
Convention Over Configuration Hal inilah yang membuat kita harus mengikuti segala sesuatu yang telah
menjadi konvensi di dalam Rails. Misalnya, untuk penamaan tabel di database, Rails menentukan bahwa nama tabel haruslah kata benda jamak dari nama model yang kita miliki. Sebagai contoh, jika kita memiliki model Article maka kita harus memiliki tabel articles di database. Tetapi, hal ini bisa saja tidak kita ikuti dengan konsekuensi kita harus melakukan konfigurasi secara manual untuk melakukan mapping dari model Article ke table articles di database. Dengan puluhan namanama untuk mengkodekan di berbagai tingkatan dari suatu aplikasi, programer menghabiskan berjam-jam menulis file konfigurasi dan menetapkan nama rantai secara kompleks. Pada akhirnya, kesalahan merayap ke dalam sistem, dan programmer menghabiskan waktu hanya untuk mengejar bug.
Banyak kerangka lainnya (seperti Struts berbasis Java atau Python Zopebased) mengharuskan Anda untuk melangkah melalui proses konfigurasi yang panjang sebelum Anda dapat membuat memulai bahkan dengan aplikasi sederhana. Informasi konfigurasi biasanya disimpan dalam beberapa file XML, dan file-file ini dapat menjadi cukup besar dan rumit untuk di-maintain. Dalam banyak kasus, anda terpaksa harus mengulangi seluruh proses konfigurasi setiap kali Anda memulai proyek baru. Sementara Rails awalnya diekstraksi dari aplikasi yang sudah ada, pekerjaan arsitektur luas masuk ke kerangka kerja nanti. Heinemeier Hansson sengaja diciptakan Rails sedemikian rupa sehingga tidak memerlukan konfigurasi yang berlebihan, selama beberapa konvensi standar yang diikuti. Hasilnya adalah bahwa tidak ada file konfigurasi yang panjang diperlukan. Bahkan, jika Anda tidak perlu mengganti default-default ini, Rails benar-benar hanya membutuhkan file konfigurasi tunggal dalam rangka untuk menjalankan aplikasi Anda. File ini digunakan untuk membuat koneksi database: ini memasok Rails dengan jenis database server yang diperlukan, nama server, nama
II - 10
pengguna, dan password untuk masing-masing lingkungan, dan hanya itu. Berikut adalah contoh file konfigurasi database.yml development: adapter: sqlite3 database: db/development.sqlite3 timeout: 5000 test: adapter: sqlite3 database: db/test.sqlite3 timeout: 5000 production: adapter: sqlite3 database: db/production.sqlite3 timeout: 5000 2.
Don’t Repeat Yourself (DRY) Rails mendukung prinsip-prinsip DRY (Don’t Repeat Yourself). Bila kita
memutuskan untuk mengubah perilaku suatu aplikasi yang didasarkan pada prinsip DRY, kita tidak perlu mengubah kode aplikasi di lebih dari satu lokasi otoritatif. Meskipun hal ini mungkin terdengar rumit, itu sebenarnya cukup sederhana. Sebagai contoh, daripada menyalin dan menyisipkan kode dengan fungsi serupa atau bahkan identik, Anda mengembangkan aplikasi Anda sedemikian rupa sehingga fungsi ini disimpan sekali, di lokasi pusat, dan dirujuk dari setiap bagian aplikasi yang perlu menggunakan itu. Dengan cara ini, jika perilaku asli perlu berubah, Anda hanya perlu membuat perubahan di satu lokasi, bukan di berbagai tempat di seluruh anda beberapa aplikasi yang dapat Anda terlalu mudah mengabaikan. Salah satu contoh bagaimana Rails mendukung prinsip DRY adalah bahwa tidak seperti Java, ia tidak memaksa Anda untuk mengulangi skema database definisi dalam aplikasi Anda. Database definisi schema menggambarkan bagaimana penyimpanan data aplikasi adalah terstruktur. Menganggapnya sebagai sejumlah spreadsheet, masing-masing yang berisi baris dan kolom yang mendefinisikan berbagai potongan data, dan mengidentifikasi di mana setiap item data disimpan. Rails menganggap database Anda menjadi sumber otoritatif informasi tentang penyimpanan data, dan cukup pintar untuk meminta database untuk setiap informasi yang mungkin perlu untuk memastikan bahwa
II - 11
memperlakukan data Anda dengan benar. Rails juga menganut prinsip DRY ketika menerapkan teknik mutakhir seperti Ajax (Asynchronous JavaScript and XML). Ajax adalah sebuah pendekatan yang memungkinkan aplikasi web Anda untuk mengganti konten dalam browser secara dinamis, atau untuk pertukaran data dengan server tanpa mengambil ulang halaman. Rails menggunakan Model View Controller (MVC) sebagai design pattern-nya. Struktur penyusun MVC ada 3 jenis yang saling bekerja sama yaitu: 1. Model Mewakili data yang diproses oleh suatu aplikasi. Menyediakan suatu link ke penyimpanan data. 2. View Representasi visual dari user interface atau bisa dibilang tampilan suatu aplikasi. 3. Controller Mewakili control flow logic. Keputusan mengenai view mana yang harus dipanggil untuk menampilkan data tertentu, bagian mana dari model yang harus yang di-update ditangani oleh controller. Berperan sebagai perantara dari aplikasi dan mengambil tiap request. Lalu memanggil model yang cocok untuk meng-update atau mengambil data. Setelah itu memilih view yang cocok untuk menampilkan data.
Proses yang terjadi dalam suatu user request adalah sebagai berikut : 1. Client melalui browser mengirimkan suatu request untuk suatu halaman kepada controller yang berada di server. 2. Controller mengambil data yang diperlukan dari model dalam hal melakukan respond terhadap request. 3. Controller me-render halaman dan mengirimkannya kepada view. 4. View mengirim halaman kembali melalui browser agar dapat dilihat oleh client. Proses di atas dapat dilihat pada gambar dibawah ini :
II - 12
Gambar 2.2 Proses User Request pada MVC
Ruby on Rails (RoR) mengimplementasikan MVC dengan menyediakan 3 komponen sebagai bagian dari framework, yaitu: 1. Active Record adalah merupakan model dalam Ruby on Rails. Komponen Model menyimpan data dan menyediakan fungsionalitas untuk bekerja dengan data. 2. Action View adalah komponen View meliputi presentasi logik dari data yang ada pada komponen Model. Action View merupakan komponen View pada Ruby on Rails. 3. Action Controller adalah controller menyusun aliran logika. Dalam suatu aplikasi web, controller bertugas mengatur dan menyusun flow dari suatu logika aplikasi. Controller duduk sebagai batas dari suatu aplikasi dan menangkap semua request. Berdasarkan request, controller meng-update objek Model yang diinginkan dan memanggil View logic untuk menampilkan data yang telah ter-update. Dalam RoR, Action Controller menyediakan fungsionalitas-fungsionalitas dari controller.
II - 13
2.5
Unified Modelling Language (UML) [1],[3] UML adalah suatu bahasa untuk membuat model dari suatu sistem dengan
menggunakan teknik pendiagraman. Berikut adalah diagram-diagram utama yang terdapat pada UML beserta elemen-elemennya
yang digunakan dalam
perancangan sistem ini.
2.5.1. Use Case Diagram Digunakan untuk memodelkan interaksi dari suatu sistem informasi dengan lingkungannya. Dalam hal ini, proses-proses yang ada pada sistem tersebut baik dengan end-user maupun sistem eksternal lainnya. Tabel 2.1 Elemen-elemen use case diagram
No.
Elemen
Simbo Keterangan l
1.
Use Case
Deskripsi dari apa yang dilakukan oleh sistem. Sebuah use case mengandung skenario
yang
menjelaskan
urutan
kejadian pada use case tersebut. 2.
Package
Pengelompokan
elemen-elemen
pemodelan. Package digunakan dalam diagram use case, class, dan component. 3.
Actor
Peran
dari
pemakai
sistem
yang
berinteraksi dengan sistem pada use case. Actor dapat berupa makhluk hidup, alat, maupun sistem lainnya. 4.
Include
Bentuk ketergantungan antar use case, dimana use case utama mengambil perilaku use case lainnya pada lokasi tertentu secara eksplisit.
II - 14
5.
Bentuk ketergantungan antar use case,
Extend
dimana use case memperluas perilaku daripada use case utamanya. 6.
Generalization
Bentuk
hubungan
secara
taksonomi
antara sebuah elemen yang lebih umum dengan elemen yang lebih spesifik. 7.
Association
Hubungan yang mengasosiasikan dan menunjukkan
partisipasi
dari
sebuah
actor ke sebuah use case.
2.5.2. Class Diagram Digunakan untuk merepresentasikan hal, ide, maupun konsep yang terkandung pada sistem. Tujuan utamanya adalah untuk mengilustrasikan hubungan antar kelas-kelas yang ada.
Tabel 2.2 Elemen-elemen class diagram
No. Elemen 1.
Class
Simbol
Keterangan Setiap kelas regular yang terdapat dalam sistem.
2.
Actor
Peran yang dimiliki oleh pengguna sistem.
3.
Interface
Sebuah stereotip dari kelas yang hanya menawarkan operasi-operasi yang sifatnya public, tanpa adanya attribute dan method.
4.
Package
Pengelompokan kelas dengan/pada definisi tertentu.
II - 15
No. Elemen 5.
Utility Class
Simbol
Keterangan Kumpulan prosedur maupun variabel global diluar atribut dan operasi yang dimiliki oleh kelas.
6.
Generalization
Bentuk hubungan antara tipe super elemen dengan sub elemen, yang memiliki atribut yang sama.
7.
Implementation
Hubungan yang menunjukkan implementasi antara 2 elemen.
8.
Nested Link
Hubungan antar kelas-kelas yang bersarang.
9.
Boundary Class
Sebuah elemen yang menunjukkan penggunaan objek pembatas oleh actor untuk berkomunikasi dengan sistem.
10.
Control Class
Sebuah elemen yang menghubungkan objek pembatas dengan objek entitas. Objek yang menjadi elemen ini mengkoneksikan user ke data yang telah disimpan pada sistem.
11.
Entity Class
Sebuah elemen yang merupakan objek dari domain model. Objek ini melakukan pemetaan ke file dan database.
II - 16
2.5.3. Sequence Diagram Digunakan untuk memodelkan perilaku dari suatu objek yang terdapat pada use case berdasarkan urutan kejadian.
Tabel 2.3 Elemen-elemen sequence diagram.
No.
Elemen
1.
Lifeline
Simbol Keterangan Sebuah partisipan individual dalam proses
interaksi
yang
merepresentasikan hanya satu entitas yang berinteraksi. 2.
Actor
Peran yang dimiliki oleh pengguna sistem.
3.
Synchronous
Sebuah pesan yang tidak kembali
Message
kepada pengirimnya sampai proses dari penerimanya telah selesai.
4.
Asynchronous
Sebuah pesan yang menghalangi atau
Message
menahan objek pemanggil, digunakan untuk membuat sebuah objek baru, sebuah
thread
baru,
melakukan
komunikasi dengan thread yang sudah ada. 5.
Create
Sebuah elemen yang memperbolehkan
Message
penciptaan sebuah lifeline maupun instan.
6.
Message to Self
Sebuah pesan yang ditujukan untuk objek pengirim.
II - 17
2.5.4. Collaboration Diagram Digunakan untuk memodelkan use case dengan melibatkan kumpulan kelas yang memungkinkan, dimana nantinya kumpulan kelas tersebut mampu menampilkan fungsionalitas dari use case tersebut dengan sudut pandang dan tingkat abstraksi yang berbeda dari use case diagram.
Tabel 2.4 Elemen-elemen collaboration diagram.
No.
Elemen
1.
Lifeline
Simbol Keterangan Sebuah partisipan individual dalam proses interaksi yang merepresentasikan hanya satu entitas yang berinteraksi.
2.
Actor
Sebuah peran yang dijalankan oleh pengguna sistem.
3.
Connector
Hubungan
yang
spesifik
yang
memperbolehkan komunikasi antara 2 atau lebih instan.
2.5.5. Activity Diagram Digunakan untuk mengilustrasikan alur kerja kelas-kelas dari suatu use case.
Tabel 2.5 Elemen-elemen activity diagram.
No.
Elemen
1.
Invocation
Simbol Keterangan Penggunaan perilaku dalam sebuah aktifitas.
2.
Activity Edge
Sebuah kelas abstrak untuk koneksi berarah antara 2 simpul aktifitas.
3.
Activity Group
Kumpulan dari invocation node dan
II - 18
No.
Elemen
Simbol Keterangan activity edge dalam suatu aktifitas.
4.
Initial Node
Sebuah
simpul
kontrol
yang
menandakan awal dari aktivitas. 5.
6.
Activity Final
Sebuah
simpul
Node
menandakan akhir dari aktifitas.
Flow Final
Simpul
yang
terhadap
kontrol
melakukan
sebuah
menghancurkan
yang
terminasi
alur
semua
dan
tanda
yang
sampai pada simpul tersebut. 7.
Decision
Sebuah simpul kontrol yang melakukan pemilihan terhadap alur yang ada.
2.5.6. State Diagram Digunakan untuk mengilustrasikan keadaan kelas-kelas dari sebuah aktifitas pada suatu use case. Tabel 2.6 Elemen-elemen state diagram.
No.
Elemen
1.
Simple State
Simbol Keterangan Sebuah kondisi atau situasi dari sebuah objek selama siklus hidupnya, yang menandakan
objek
tersebut
sedang
memenuhi suatu kondisi, mengerjakan suatu aktifitas, maupun menunggu suatu kejadian. 2.
State
Sebuah hubungan antara 2 buah state.
Transition 3.
Initial State
Sebuah state khusus yang menandakan
II - 19
No.
Elemen
Simbol Keterangan awal dari keseluruhan state.
4.
Sebuah state khusus yang menandakan
Final State
akhir dari keseluruhan state.
2.6
MVC (Model, View, Controller) [12] Model-View-Controller atau MVC adalah sebuah metode untuk membuat
sebuah aplikasi dengan memisahkan data (Model) dari tampilan (View) dan cara bagaimana memprosesnya (Controller).
Gambar 2.3 Proses MVC
Diagram di atas menunjukkan 3 komponen yang terdapat dalam pola MVC dan interaksi yang terjadi.
2.6.1. Model Pola MVC memiliki
layer yang disebut dengan Model
yang
merepresentasikan data yang digunakan oleh aplikasi sebagaimana proses bisnis yang diasosiasikan terhadapnya. Dengan memilahnya sebagai bagian terpisah, seperti penampungan data, persistence, serta proses manipulasi, terpisah dari bagian lain aplikasi.
II - 20
Terdapat beberapa kelebihan dalam pendekatan ini. Pertama, membuat detail dari data dan operasinya dapat ditempatkan pada area yang ditentukan (Model) dibanding tersebar dalam keseluruhan lingkup aplikasi. Hal ini memberikan keuntungan dalam proses maintenance aplikasi. Kedua, dengan pemisahan total antara
data dengan implementasi
interface, komponen model dapat digunakan kembali oleh aplikasi lain yang memiliki kegunaan yang hampir sama.
2.6.2. View Layer ini mengandung keseluruhan detail dari implementasi user interface. Disini, komponen grafis menyediakan representasi proses internal aplikasi dan menuntun alur interaksi user terhadap aplikasi. Tidak ada layer lain yang berinteraksi dengan user, hanya View. Penggunaan layer View memiliki beberapa kelebihan : Pertama, memudahkan pengabungan divisi desain dalam development team. Divisi desain dapat berkonsentrasi pada style, look & feel, dan sebagainya, dalam aplikasi tanpa harus memperhatikan lebih pada detail yang lain. Dan juga, memiliki layer View yang terpisah memungkinkan ketersediaan multiple interface dalam aplikasi. Jika inti dari aplikasi terletak pada bagian lain (dalam Model), multiple interfaces dapat dibuat (Swing, Web, Console), secara keseluruhan memiliki tampilan yang berbeda namun mengeksekusi komponen Model sesuai fungsionalitas yang diharapkan.
2.6.3. Controller Layer ini menyediakan detail alur program dan transisi layer, dan juga bertanggungjawab akan penampungan events yang dibuat oleh user dari View dan melakukan update terhadap komponen Model menggunakan data yang dimasukkan oleh user. Kelebihan dalam penggunaan layer Controller secara terpisah : Pertama, dengan menggunakan komponen terpisah untuk menampung detail dari transisi layer, komponen view dapat didesain tanpa harus memperhatikan bagian lain secara berlebih. Hal ini memudahkan team pengembang multiple interface bekerja
II - 21
secara terpisah dari yang lain secara simultan. Interaksi antar komponen View terabstraksi dalam Controller. Kedua, dengan menggunakan layer terpisah yang melakukan update terhadap komponen Model, detail tersebut dihapus dari layer presentasi. Layer presentasi kembali pada fungsi utamanya untuk menampilkan data kepada user. Detail tentang bagaimana data dari user mengubah ketetapan aplikasi disembunyikan oleh Controller. Hal ini memisahkan dengan jelas antara presentation logic dengan business logic. Tidak dapat disimpulkan bahwa pola MVC hadir dengan kelebihankelebihan tanpa ada efek samping. Pembagian aplikasi dalam 3 bagian terpisah meningkatkan kompleksivitas. Pada aplikasi kecil yang tidak membutuhkan loose coupling pada Model, hal ini dapat menjadi blok penghalang dalam penggunaan pola ini.
2.7
Waterfall [2] Model ini adalah model klasik yang bersifat sistematis, berurutan dalam
membangun software. Berikut ini ada dua gambaran dari waterfall model. Sekalipun keduanya menggunakan nama-nama fase yang berbeda, namun sama dalam intinya. Fase-fase dalam Waterfall Model menurut referensi Pressman:
Gambar 2.4 Waterfall Model (Pressman)
II - 22
Fase-fase dalam Waterfall Model menurut referensi Sommerville:
Gambar 2.5 Waterfall Model (Sommerville)
1. Requirements analysis and definition: Mengumpulkan kebutuhan secara lengkap kemudian kemudian dianalisis dan didefinisikan kebutuhan yang harus dipenuhi oleh program yang akan dibangun. Fase ini harus dikerjakan secara lengkap untuk bisa menghasilkan desain yang lengkap. 2. System and software design: Desain dikerjakan setelah kebutuhan selesai dikumpulkan secara lengkap. 3. Implementation and unit testing: desain program diterjemahkan ke dalam kode-kode dengan menggunakan bahasa pemrograman yang sudah ditentukan. Program yang dibangun langsung diuji baik secara unit. 4. Integration and system testing: Penyatuan unit-unit program kemudian diuji secara keseluruhan (system testing). 5. Operation and maintenance: mengoperasikan program dilingkungannya dan melakukan pemeliharaan, seperti penyesuaian atau perubahan karena adaptasi dengan situasi sebenarnya. Kekurangan yang utama dari model ini adalah kesulitan dalam mengakomodasi perubahan setelah proses dijalani. Fase sebelumnya harus lengkap dan selesai sebelum mengerjakan fase berikutnya.
II - 23
2.8
Apache Web Server [6] Versi pertama dari server web Apache telah dibuat oleh Robert McCool,
yang sangat terlibat dengan Pusat Nasional untuk Supercomputing Aplikasi web server, cukup dikenal sebagai NCSA httpd. Ketika McCool kiri NCSA di pertengahan 1994, pengembangan httpd diinstall, meninggalkan berbagai patch untuk perbaikan beredar melalui e-mail. Tambalan ini disediakan oleh sejumlah pengembang lain selain McCool: Brian Behlendorf, Roy Fielding, Rob Hartill, David Robinson, Cliff Skolnick, Randy Terbush, Robert S. Thau, Andrew Wilson, Eric Hagberg, Frank Peters dan Nicolas Pioch, dan mereka sehingga membantu untuk membentuk asli Apache Group. Ada dua penjelasan proyek nama. Menurut Apache Foundation, nama ini dipilih dari terhadap Indian suku Apache, terkenal untuk daya ketahanan dan kemampuan mereka dalam peperangan. Namun, asli FAQ Apache Server proyek website, dari 1996 sampai 2001, mendakwa bahwa "Hasilnya setelah menggabungkan (NCSA httpd patch) adalah server yang setengah-setengah. Pertama penjelasan didukung pada Konferensi dan Apache dalam sebuah wawancara di 2000 oleh Brian Behlendorf, yang mengatakan bahwa nama connoted "Ambil tidak tahanan. Jadilah jenis agresif dan menendang beberapa keledai ". Behlendorf kemudian bertentangan ini dalam sebuah wawancara 2007, yang menyatakan bahwa" The Apache server tidak bernama di Geronimo kehormatan dari suku "tetapi yang banyak revisi yang telah dihantar dalam" grup itu disebut Web server yang setengah-setengah. Kedua penjelasan yang mungkin sesuai penjelasan kata-kata walaupun telah jatuh ke dalam ketidakkasihan. Versi 2 dari server Apache telah menjadi penyebab kembali menulis dari banyak Apache kode 1.x, dengan fokus yang kuat pada modularization lebih lanjut dan pengembangan suatu sifat lapisan, Apache Portable Runtime. Apache 2.x inti utama memiliki beberapa perangkat tambahan atas Apache 1.x. Termasuk UNIX threading, dukungan yang lebih baik untuk non-Unix platform (seperti Microsoft Windows), baru Apache API, dan mendukung IPv6. Rilis alpha pertama dari Apache 2 adalah pada bulan Maret 2000, dengan pertama umum ketersediaan rilis pada 6 April 2002. Versi 2.2 memperkenalkan versi yang lebih fleksibel otorisasi API. Ia juga meningkatkan fitur dan modul cache proxy.
II - 24
Apache mendukung berbagai fitur, banyak diimplementasikan sebagai modul yang dikompilasi memperpanjang fungsionalitas inti. Ini dapat server dari berbagai sisi bahasa pemrograman untuk mendukung skema otentikasi. Beberapa bahasa antarmuka dukungan mod perl, mod python, Tcl, dan PHP. Populer otentikasi termasuk modul mod_access, mod_auth, dan mod_digest. Contoh dari fitur-fitur lainnya termasuk dukungan SSL dan TLS (mod_ssl), proxy modul, URL rewriter (juga dikenal sebagai menulis ulang mesin, dilaksanakan di bawah mod_rewrite),
file-file
log
kustom
(mod_log_config),
dan
mendukung
penyaringan (mod_include dan mod_ext_filter). Metode kompresi populer di Apache termasuk modul ekstensi eksternal, mod_gzip, dilaksanakan untuk membantu dengan pengurangan ukuran (berat) dari halaman web melalui HTTP. Apache log dapat dianalisis melalui web browser menggunakan skrip gratis seperti AWStats/W3Perl atau Pengunjung. Virtual hosting memungkinkan satu instalasi Apache untuk melayani berbagai situs yang sebenarnya. Misalnya, satu mesin, dengan satu instalasi Apache dapat melayani secara bersamaan www.example.com, www.test.com, test47.test-server.test.com, dll. Apache dikonfigurasi fitur pesan kesalahan, DBMS otentikasi berbasis database, dan negosiasi konten. Hal ini juga didukung oleh beberapa pengguna grafis antarmuka (GUIs).
2.9
PHP (PHP Hypertext Preprocessor) [7][15] PHP (singkatan dari PHP Hypertext Preprocessor) adalah bahasa
pemrograman web yang paling banyak dipakai saat ini. PHP banyak dipakai untuk memprogram situs web dinamis, walaupun tidak tertutup kemungkinan digunakan untuk pemakaian lain. Contoh terkenal dari aplikasi PHP adalah phpBB dan MediaWiki (software di belakang Wikipedia). PHP juga dapat dilihat sebagai pilihan lain dari ASP.NET/C#/VB.NET Microsoft, ColdFusion Macromedia, JSP/Java Sun Microsystems, dan CGI/Perl. Contoh aplikasi lain yang lebih kompleks berupa CMS (Content Management System) yang dibangun menggunakan PHP adalah Mambo, Joomla, Postnuke, Xaraya, dan lain-lain. Kelebihan PHP adalah :
II - 25
a.
Bahasa pemrograman PHP adalah sebuah bahasa script yang tidak memerlukan sebuah kompilasi dalam penggunaanya.
b.
Web Server yang mendukung PHP dapat ditemukan dimana - mana dari mulai apache, IIS, Lighttpd, hingga Xitami dengan konfigurasi yang relatif mudah.
c.
Teknologi sudah dipahami masyarakat, banyak referensi yang tersedia, milis-milis maupun pakar/developmet yang siap membantu bila ada kesulitan dalam pengembangan.
d.
PHP adalah bahasa open source yang dapat digunakan di berbagai mesin (Linux, Unix, Macintosh, Windows) dan dapat dijalankan secara runtime melalui console serta juga dapat menjalankan perintah-perintah sistem.
Browser
Web Server
Aplikasi dengan PHP
MySQL Server
Gambar 2.6 PHP Proses
2.10
MYSQL [8] MySQL adalah sebuah perangkat lunak sistem manajemen basis data SQL
atau DBMS yang multithread, multi-user, dengan sekitar 6 juta instalasi di seluruh dunia. MySQL AB membuat MySQL tersedia sebagai perangkat lunak gratis dibawah lisensi GNU General Public License (GPL), tetapi mereka juga menjual dibawah lisensi komersial untuk kasus-kasus dimana penggunaannya tidak cocok dengan penggunaan GPL. Tidak sama dengan proyek-proyek seperti Apache, dimana perangkat lunak dikembangkan oleh komunitas umum, dan hak cipta untuk kode sumber dimiliki oleh penulisnya masing-masing, MySQL dimiliki dan
II - 26
disponsori oleh sebuah perusahaan komersial Swedia MySQL AB, dimana memegang hak cipta hampir atas semua kode sumbernya. Kedua orang Swedia dan satu orang Finlandia yang mendirikan MySQL AB adalah: David Axmark, Allan Larsson, dan Michael "Monty" Widenius. MySQL adalah Relational Database Management System (RDBMS) yang didistribusikan secara gratis dibawah lisensi GPL (General Public License). Dimana setiap orang bebas untuk menggunakan MySQL, namun tidak boleh dijadikan produk turunan yang bersifat closed source atau komersial. MySQL sebenarnya merupakan turunan salah satu konsep utama dalam database sejak lama, yaitu SQL (Structured Query Language). SQL adalah sebuah konsep pengoperasian database, terutama untuk pemilihan atau seleksi dan pemasukan data, yang memungkinkan pengoperasian data dikerjakan dengan mudah secara otomatis. Keandalan suatu sistem database (DBMS) dapat diketahui dari cara kerja optimizer-nya dalam melakukan proses perintah-perintah SQL, yang dibuat oleh user maupun program-program aplikasinya. Sebagai database server, MySQL dapat dikatakan lebih unggul dibandingkan database server lainnya dalam query data. Hal ini terbukti untuk query yang dilakukan oleh single user, kecepatan query MySQL bisa sepuluh kali lebih cepat dari PostgreSQL dan lima kali lebih cepat dibandingkan Interbase. Selain itu MySQL juga memiliki beberapa keistimewaan, antara lain : a. Portability MySQL dapat berjalan stabil pada berbagai sistem operasi seperti Windows, Linux, FreeBSD, Mac Os X Server, Solaris, Amiga, dan masih banyak lagi. b. Open Source MySQL didistribusikan secara open source (gratis), dibawah lisensi GPL sehingga dapat digunakan secara cuma-cuma. c. Multiuser MySQL dapat digunakan oleh beberapa user dalam waktu yang bersamaan tanpa mengalami masalah atau konflik.
II - 27
d. Performance tuning. MySQL memiliki kecepatan yang menakjubkan dalam menangani query sederhana, dengan kata lain dapat memproses lebih banyak SQL per satuan waktu. e. Column types MySQL memiliki tipe kolom yang sangat kompleks, seperti signed / unsigned integer, float, double, char, text, date, timestamp, dan lain-lain. f. Command dan functions MySQL memiliki operator dan fungsi secara penuh yang mendukung perintah Select dan Where dalam query. g. Security MySQL memiliki beberapa lapisan sekuritas seperti level subnetmask, nama host, dan izin akses user dengan sistem perizinan yang mendetail serta password terenkripsi. h. Scalability dan limits MySQL mampu menangani database dalam skala besar, dengan jumlah records lebih dari 50 juta dan 60 ribu tabel serta 5 milyar baris. Selain itu batas indeks yang dapat ditampung mencapai 32 indeks pada tiap tabelnya. i. Connectivity MySQL dapat melakukan koneksi dengan client menggunakan protokol TCP/IP, Unix soket (UNIX), atau Named Pipes (NT). j. Localisation MySQL dapat mendeteksi pesan kesalahan pada client dengan menggunakan lebih dari dua puluh bahasa. Meskipun demikian, bahasa Indonesia belum termasuk didalamnya. k. Interface MySQL memiliki interface (antar muka) terhadap berbagai aplikasi dan bahasa pemrograman dengan menggunakan fungsi API (Application Programming Interface). l. Clients dan tools
II - 28
MySQL dilengkapi dengan berbagai tool yang dapat digunakan untuk administrasi database, dan pada setiap tool yang ada disertakan petunjuk online. m. Struktur tabel MySQL memiliki struktur tabel yang lebih fleksibel dalam menangani ALTER TABLE, dibandingkan database lainnya semacam PostgreSQL ataupun Oracle.
2.11
PhpMyAdmin [12] Aplikasi phpMyAdmin adalah perangkat lunak bebas yang ditulis dalam
bahasa pemrograman PHP yang digunakan untuk menangani administrasi MySQL melalui World Wide Web. Aplikasi phpMyAdmin mendukung berbagai operasi MySQL, diantaranya (mengelola basis data, tabel-tabel, bidang (fields), relasi (relations), indeks, pengguna (users), perijinan (permissions), dan lain-lain). Pada dasarnya, mengelola basis data dengan MySQL harus dilakukan dengan cara mengetikkan baris-baris perintah yang sesuai (command line) untuk setiap maksud tertentu. Jika seseorang ingin membuat basis data (database), ketikkan baris perintah yang sesuai untuk membuat basis data. Jika seseorang menghapus tabel, ketikkan baris perintah yang sesuai untuk menghapus tabel. Hal tersebut tentu saja sangat menyulitkan karena seseorang harus hafal dan mengetikkan perintahnya satu per satu. Saat ini banyak sekali perangkat lunak yang dapat dimanfaatkan untuk mengelola basis data dalam MySQL, salah satunya adalah phpMyAdmin. Dengan phpMyAdmin, seseorang dapat membuat database, membuat tabel, mengisi data, dan lain-lain dengan mudah, tanpa harus menghafal baris perintahnya. Aplikasi phpMyAdmin merupakan bagian untuk mengelola basis data MySQL yang ada di komputer. Untuk membukanya, buka browser lalu ketikkan alamat http://localhost/phpmyadmin, maka akan muncul halaman phpMyAdmin. Sehingga seseorang bisa membuat (create) basis data baru, dan mengelolanya. Pengembangan phpMyAdmin dimulai pada tahun 1998 oleh Tobias Ratschiller seorang konsultan IT. Ratschiller mengerjakan sebuah program bernama MySQL-Webadmin dengan bebas, yang merupakan produk dari Petrus
II - 29
Kuppelwieser, yang telah berhenti mengembangkannnya pada saat itu. Ratschiller menulis kode baru untuk phpmyadmin, dan ditingkatkan pada konsep dari proyek Kuppelwiesser. Ratschiller meninggalkan proyek phpMyAdmin pada tahun 2001. Sekarang, Sebuah tim dari delapan pengembang yang dipimpin oleh Oliver Muller
meneruskan
pengembangan
phpMyAdmin
di
SourceForge.net
(http://sourceforge.net). Beberapa pengembang diantaranya adalah: 1. Marc Delisle 2. Michal Čihař 3. Sebastian Mendel 4. Herman van Rink Beberapa fitur dalam phpMyAdmin : a. Antarmuka
berbasis
web.
Dukungan banyak fitur MySQL : 1. Menelusuri dan drop basisdata (database), tabel, pandangan (view), bidang (fields) dan indeks. 2. Membuat, menyalin, drop, dan mengubah nama basis data, tabel, kolom dan indeks. 3. Pemeliharaan server, basis data dan tabel, dengan server konfigurasi. 4. Melaksanakan, mengedit dan penunjuk pernyataan-SQL, bahkan batch-queries. 5. Mengelola pengguna MySQL dan hak istimewa. 6. Mengelola prosedur penyimpanan. b. Impor data dari CSV dan SQL. c. Ekspor data ke berbagai format: CSV, SQL, XML, PDF, ISO / IEC 26300 – Open Document Text dan Spreadsheet, Word, Excel, LATEKS dan lain-lain. d. Membuat grafik PDF dari tampilan basis data anda. e. Membuat kompleks query menggunakan Query-by-example (QBE). f. Pencarian global dalam basis data.
II - 30
g. Transformasi data disimpan ke dalam format yang menggunakan satu set fungsi yang telah ditetapkan, seperti menampilkan data blob-data atau download-link.
2.12
Linux [13] Linux
adalah nama yang diberikan kepada sistem operasi komputer
bertipe Unix. Linux merupakan salah satu contoh hasil pengembangan perangkat lunak bebas dan sumber terbuka utama. Seperti perangkat lunak bebas dan sumber terbuka lainnya pada umumnya, kode sumber Linux dapat dimodifikasi, digunakan dan didistribusikan kembali secara bebas oleh siapa saja. Nama "Linux" berasal dari nama pembuatnya, yang diperkenalkan tahun 1991 oleh Linus Torvalds. Sistemnya, peralatan sistem dan pustakanya umumnya berasal dari sistem operasi GNU, yang diumumkan tahun 1983 oleh Richard Stallman. Kontribusi GNU adalah dasar dari munculnya nama alternatif GNU/Linux. Linux telah lama dikenal untuk penggunaannya di server, dan didukung oleh perusahaan-perusahaan komputer ternama seperti Intel, Dell, HewlettPackard, IBM, Novell, Oracle Corporation, Red Hat, dan Sun Microsystems. Linux digunakan sebagai sistem operasi di berbagai macam jenis perangkat keras komputer, termasuk komputer desktop, superkomputer, dan sistem benam seperti pembaca buku elektronik, sistem permainan video (PlayStation 2, PlayStation 3 dan XBox), telepon genggam dan router. Para pengamat teknologi informatika beranggapan kesuksesan Linux dikarenakan Linux tidak bergantung kepada vendor (vendor independence), biaya operasional yang rendah, dan kompatibilitas yang tinggi dibandingkan versi UNIX tak bebas, serta faktor keamanan dan kestabilannya yang tinggi dibandingkan dengan sistem operasi lainnya seperti Microsoft Windows. Ciri-ciri ini juga menjadi bukti atas keunggulan model pengembangan perangkat lunak sumber terbuka (opensource software). Sistem operasi Linux yang dikenal dengan istilah distribusi Linux (Linux distribution) atau distro Linux umumnya sudah termasuk perangkat-perangkat lunak pendukung seperti server web, bahasa pemrograman, basis data, tampilan desktop (desktop environment) seperti GNOME, KDE dan Xfce juga memiliki
II - 31
paket aplikasi perkantoran (office suite) seperti OpenOffice.org, KOffice, Abiword, dan Gnumeric.