BAB II
LANDASAN TEORI
2.1. SMS (Short Message Service)
2.1.1. Definisi SMS
Short Message Service merupakan salah satu fitur dari Global System For Mobile Communication (GSM), Code Division Multiple Access (CDMA) ataupun Time Division Multiple Access (TDMA) yang dikembangkan dan distandarisasi oleh European Telecommunication Standard Institute (ETSI) yang berupa layanan pengiriman pesan teks singkat dari dan ke telepon seluler, mesin fax, atau pengiriman ke sebuah IP Address. Layanan ini disebut pesan singkat karena memang lebar atau jumlah karakternya hanya sebanyak 160 karakter alfanumerik dan tidak berisi gambar atau grafik. Karena penggunaannya yang praktis serta didukung dengan tarif yang cukup murah, maka tidak heran jika sebuah layanan ini menjadi komunikasi yang banyak digunakan oleh kalangan masyarakat pada saat ini. (Ferry Gunawan, 2002 : 13)
2.1.2. Proses Kerja SMS
Mekanisme utama yang dilakukan dalam sistem kerja SMS adalah melakukan pengiriman pesan dari satu terminal ke terminal yang lain. Hal ini dapat dilakukan berkat adanya sebuah entitas dalam sistem kerja SMS yang bernama Short Messaging Service (SMSC) atau Message Center (MC). SMSC
Forward dalam mengirimkan, menyimpan ataupun menerima pesan dari pengguna layanan ini. Contoh proses kerja SMS, dapat dilihat pada Gambar 2.1.
Bekerja dengan prinsip Store and Forward adalah pengirim mengirimkan pesan ke suatu nomor tujuan (Store) melalui SMSC, dan selanjutnya SMSC bertanggung jawab mengirimkan pesan tersebut (Forward) ke nomor tujuan. Oleh karena itu, melalui keberadaan SMSC, kita dapat mengetahui status dari pesan atau SMS yang dikirimkan, apakah telah sampai atau gagal diterima oleh nomor tujuan.
2.2. Pengenalan SMS Gateway
SMS Gateway adalah suatu platform yang menyediakan mekanisme untuk EUA menghantar dan menerima SMS dari peralatan mobile (HP, PDA Phone, dll) melalui SMS Gateway’s shortcode (sbg contoh 9221). SMS Gateway merupakan pintu gerbang bagi penyebaran informasi dengan menggunakan SMS. Anda dapat menyebarkan pesan ke ratusan nomor secara otomatis dan cepat yang langsung terhubung dengan database nomor-nomor ponsel saja tanpa harus mengetik
ratusan nomor dan pesan di ponsel Anda karena semua nomor akan diambil secara otomatis dari database tersebut. Selain itu, dengan adanya SMS Gateway, dapat mengustomisasi pesan-pesan yang ingin dikirm. Dengan menggunakan program tambahan yang dapat dibuat sendiri, pengirim pesan dapat lebih fleksibel dalam mengirim berita karena biasanya pesan yang ingin dikirim berbeda-beda untuk masing-masing penerimanya. (http://id.wikipedia.org/wiki/SMS_Gateway).
2.3. Pengenalan GAMMU
Gammu (GNU All Mobile Management Utilities) adalah nama sebuah project yang ditujukan untuk membangun aplikasi, script dan drivers yang dapat digunakan untuk semua fungsi yng memungkinkan pada telepon seluler atau alat sejenisnya. Sekarang Gammu telah menyediakan codebase yang stabil dan mapan untuk berbagai macam model telepon yang tersedia di pasaran dibandingkan dengan project sejenis. Gammu merupakan project yang berlisensi GNU GPL 2 sehingga menjamin kebebasan menggunakan tool ini tanpa perlu takut dengan masalah legalitas dan biaya yang mahal yang harus dikeluarkan. Gammu mendukung berbagai macam model telepon seluler dengan berbagai jenis koneksi dan tipe.
Gammu merupakan sebuah modul yang bisa digabungkan dengan bahasa pemrograman apa saja. Jika dikembangkan dalam web based, bisa menggunakan PHP atau ASP, jika ingin dikembangkan dalam desktop Apps, bisa menggunakan
penggunaan Gammu tanpa interface bisa langsung mengakses lewat database administration seperti PHP Myadmin.
Beberapa perintah gammu pada command prompt :
1. gammu identify, untuk melakukan uji koneksi antara gammu dengan modem yang telah terhubung di komputer.
2. gammu-smsd -c smsdrc -i, untuk membuat service gammu di Windows.
Kelebihan Gammu dari tool sms gateway lainnya adalah :
1. Gammu bisa dijalankan di windows maupun linux.
2. Banyak device (handphone) yang kompatibel dengan gammu. 3. Gammu menggunakan database MySQL.
4. Baik kabel data USB maupun Serial, semuanya kompatibel di gammu.
2.4. Metode Waterfall
Metode Waterfall biasa disebut juga dengan siklus hidup perangkat lunak merupakan salah satu model pengembangan perangkat lunak dari sekian banyak model pengembangan perangkat lunak. Waterfall adalah model yang umumnya paling banyak digunakan. Pada model ini, desain perangkat lunak atau sistem dibagi menjadi sejumlah langkah linier, sistematis, dan sekuensial di mana evolusi perangkat lunak atau sistem terlihat seperti air yang mengalir semakin turun melalui serangkaian tahapan.
Tahapan-tahapan dalam metode waterfall adalah sebagai berikut :
1. Analisis dan Definisi Persyaratan
Pada tahapan ini biasanya dilakukan pengumpulan data-data / informasi-informasi yang berkaitan dengan perangkat lunak / sistem yang akan dikembangkan.
2. Perancangan Sistem dan Perangkat Lunak
Pada tahapan ini, arsitektur perangkat lunak / sistem mulai dibuat berdasarkan data-data yang diperoleh sebelumnya pada tahapan analisa. Coding juga dilakukan pada tahapan ini, kemudian komponen antarmuka perangkat lunak juga dirancang dengan mengacu pada
kebutuhan-Gambar 2.2. Siklus Hidup Perangkat Lunak Sumber (IAN SOMMERVILLE, 2003)
3. Implementasi dan Pengujian Unit
Pada tahapan ini, dilakukan pengujian terhadap tiap unit-unit program yang telah dibuat. Tujuan dilakukannya tahapan ini adalah untuk mem-verifikasi bahwa setiap unit program telah berjalan sesuai dengan fungsi yang telah ditetapkan sebelumnya.
4. Integrasi dan Pengujian Sistem
Pada tahapan ini, seluruh unit program mulai diintegrasikan satu sama lain kemudian diuji sebagai perangkat lunak / sistem secara lengkap dan utuh. Tujuan dari tahapan ini adalah untuk menjamin bahwa segala persyaratan yang sebelumnyadicatat pada tahapan analisa telah terpenuhi dan tidak ada yang meleset dari perkiraan atau prediksi.
5. Operasi dan Pemeliharaan
Pada tahapan ini biasanya dilakukan perbaikan / penambahan / pengembangan perangkat lunak / sistem berdasarkan permintaan dari user atau pemilik.
2.5. Unified Modeling Language (UML)
Flower (2005 : 1) mengatakan, Unified Modeling Language (UML) adalah sebuah bahasa yang telah menjadi standar dalam industri untuk visualisasi, merancang dan mendokumentasikan sistem piranti lunak. UML menawarkan sebuah standar untuk merancang model sebuah sistem.
Dengan menggunakan UML dapat membuat model untuk semua jenis aplikasi piranti lunak, dimana aplikasi tersebut dapat berjalan dalam piranti keras,
sistem operasi dan jaringan apapun, serta ditulis dalam bahasa pemrograman apapun. Tetapi karena UML juga menggunakan class dan operation dalam konsep dasarnya, maka lebih cocok untuk penulisan piranti lunak dalam bahasa – bahasa berorientasi objek seperti C++, Java, C# atau VB.Net. Walaupun demikian, UML dapat juga digunakan untuk model aplikasi procedural dalam VB atau C.
Seperti bahasa-bahasa lainnya, UML mendefinisikan notasi dan sintaks / semantic. Notasi UML merupakan sekumpulan bentuk khusus untuk menggambarkan diagram piranti lunak. Setiap bentuk memiliki makna tertentu, dan sintak UML mendefinisikan bagaimana bentuk-bentuk tersebut dapat dikombinasikan. UML terdiri dari beberapa diagram, yaitu : use case diagram, class diagram, statechart diagram, activity diagram, sequence diagram, collaboration diagram, component diagram dan deployment diagram.
2.5.1. Use Case Diagram
Use Case diagram adalah teknik untuk merekam persyaratan fungsional sebuah sistem. Use Case diagram mendeskripsikan interaksi tipikal antara para pengguna sistem itu sendiri, dengan memberi sebuah narasi tentang bagaimana sistem tersebut digunakan (Fowler, 2005 : 141). Use Case menjelaskan manfaat sistem jika dilihat menurut pandangan orang yang berbeda diluar sistem (aktor) diagram ini menunjukkan fungsionalitas suatu sistem atau kelas dan bagaimana sistem berinteraksi dengan dunia luar (A. Suhendar dan Hariman Gunadi, 2002 : 49).
NOTASI DESKRIPSI
Aktor, yang digunakan untuk menggambarkan pelaku atau pengguna. Pelaku ini meliputi manusia atau sistem komputer atau subsistem lain yang memiliki metode untuk melakukan sesuatu. Contoh, manager, pelanggan dan lain-lain.
Use Case, digunakan untuk menggambarkan spesifikasi pekerjaan dan deskripsi pekerjaan, serta keterkaitan antara pekerjaan. Contoh, pesan barang, menutup pintu dan lain-lain.
Aliran proses (relationship), digunakan untuk menggambarkan hubungan antara use case dengan use case lainnya.
Aliran perpanjang (extension point), digunakan untuk menggambarkan hubungan antara use case dengan use case yang diperpanjang (extended use case) maupun dengan use case yang dimasukkan (include use case).
Aliran yang digunakan untuk menggambarkan hubungan antara actor dengan use case.
<<extended>> Kondisi yang mendeskripsikan apa yang terjadi antara use case dengan use case yang diperpanjang.
<<include>> Include adalah kondisi aliran proses langsung (directed relationship) antara dua use case yang secara tak langsung menyatakan kelakuan (behavior) dari use case yang dimasukkan.
<<has>> Adalah kondisi yang mendeskripsikan apa yang terjadi antara actor dengan use case.
2.5.2. Activity Diagram
Activity diagram adalah teknik untuk menggambarkan logika procedural, proses bisnis dan jalur kerja. Dalam beberapa hal, diagram hampir sama dengan sebuah aliran data, akan tetapi perbedaan prinsip antara activity diagram dengan notasi diagram alir adalah pada activity diagram lebih mendukung kepada behavior parallel.
Sebuah activity diagram menunjukkan suatu alur kegiatan secara berurutan. Activity diagram digunakan untuk mendeskripsikan kegiatan-kegiatan dalam sebuah operasi meskipun juga dapat digunakan untuk mendeskripsikan alur kegiatan yang lainnya seperti use case atau suatu interaksi.
2.5.3. Sequence Diagram
Sebuah diagram sequence secara khusus menjabarkan aktifitas sebuah skenario tunggal. Diagram tersebut menunjukkan sebuah objek contoh dan pesan-pesan yang melewati objek-objek di dalam ese case diagram (Fowler, 2005:81). Diagram sequence menggambarkan interaksi dengan menampilkan setiap partisipan dengan garisalir secara vertikal dan pengurutan pesan dari atas ke bawah.
Diagram sequence biasa digunakan untuk mnggambarkan skenario atau rangkaian langkah-langkah yang dilakukan sebagai respon dari sebuah kejadian (event) untuk menghasilkan output tertentu. Di awali dari apa yang men-trigger aktivitas tersebut, proses dan perubahan apa saja yang terjadi secara internal dan output apa yang dihasilkan. Masing-masing objek, termasuk aktor memiliki lifeline vertikal. Pesan digambarkan sebagai garis berpanah dari satu objek ke objek lainnya. Notasi-notasi yang digunakan dalam pemodelan sequence diagram terlihat dalam Tabel 2.3.
Tabel 2.3. Notasi Sequence Diagram (Fowler, 2005:81)
Notasi Keterangan
Aktor
Merupakan sebuah peran yang dimainkan seseorang pengguna dalam kaitannya dengan sistem.
Activation
Menggambarkan waktu yang dibutuhkan suatu objek untuk menyelesaikan suatu aktivitas
Kelas Entitas
Memodelkan informasi yang harus di simpan oleh sistem
Kelas
Adalah yang memodelkan interaksi antara satu atau lebih aktor dengan sistem.
Kelas Kontrol
Digunakan untuk memodelkan “perilaku mengatur”, khusus untuk satu atau beberapa use case saja.
Lifeline
Digambarkan dengan garis putus-putus, yang menggambarkan bahwa hadirnya objek terhadap waktu.
Aliran Pesan
Digambarkan dengan tanda panah, yang menggambarkan komunikasi antar objek.
2.6. Basis Data
Menurut Fathansyah (2001 : 3), basis data didefinisikan dalam sejumlah sudut pandang seperti :
1. Himpunan kelompok data yang saling berhubungan yang diorganisasikan sedemikian rupa agar kelak dapat dimanfaatkan kembali dengan cepat dan mudah.
3. Kumpulan file/table/arsip saling berhubungan yang disimpan dalam media penyimpanan elektronis.
Perancangan basis data diperlukan, agar kita dapat memakai basis data yang kompak dan efisien. Fathansyah, Ir (1999 : 2), mengatakan basis data adalah komputerisasi sistem penyimpanan data, yang bertujuan memelihara informasi dan mengusahakan agar informasi tersedia pada saat dibutuhkan. Basis data memiliki tiga level arsitektur umum, antara lain sebagai berikut :
1. Eksternal Level
Level yang terdekat dengan user, dalam arti bagaimana cara dapat disajikan ataupun dilihat oleh user.
2. Internal Level
Level yang terdekat dengan physical storage, yaitu bagaimana pengorganisasian data yang tersimpan dalam secondary storage volume. Pemakai melihat data sebagai gabungan dari struktur dan datanya.
3. Konseptual Level
Level yang menghubungkan antara kedua level di atas dan memberikan gambaran menyeluruh dari basis data secara logika.
2.7. Entity Relationship Diagram (ERD)
Diagram Keterhubungan Entitas atau Entity Relationship Diagram (ERD), menurut pendapat Fathansyah (2001 : 70), digunakan untuk mewakili suatu fakta dari dunia nyata yang kita tinjau dengan menggunakan notasi – notasi (lihat tabel). Contoh notasi - notasi dalam pembuatan ERD dapat digambarkan, yaitu :
a. Entitas
Entitas meupakan individu yang mewakili sesuatu yang nyata (eksistensinya) dan dapat dibedakan dari sesuatu yang lain. (Fathansyah, 1999 : 73), sekelompok entitas yang sejenis dan berada dalam lingkup yang sama membentuk sebuah hinpunan Entits (entity set). Sederhananya, entitas menunjukan pada individu suatu objek, sedang himpunan entitas menunjukan pada rumpun (family) dari individu tersebut. Seseorang memang dapat menjad sebuah entitas, tetapi dapat berada pada himpunan entitas yang berbedadengan seseorang yang lain. Dalam berbagai pembahasan atau literatur, penyebutan himpunan entitas (yang kurang praktis) ini sering kali digantikan dengan sbuah entitas saja. Karena itu sering kita temui, penggunaan istilah entitas (entity) di sebuah literatur sebenarnya menunjukan pada himpunan entitas.
b. Atribut
Setiap entitas pasti memliki atribut yang mendeskripsikan karakteristik (property) dari entitas tersebut. Sebagai mana telah disebutkan sebelumnya, penentuan atau pemilihan atribut-atribut yang relevan bagi sebuah entitas merupakan hal penting lainya dalam pembentukan model data penempatan atribut bagi sebuah entitas umumnya memang didasarkan pada fakta yang ada. Tetapi tidak selalu seperti itu. Kelak akan kita lihat, karena proses normalisasi atau pertimbangan-pertimbangan kompronistis, ada sejumlah atribut yang kita ciptakan sendiri dan tidak di kenal di dunia
c. Relasi
Relasi menunjukan adanya hubungan diantara sejumlah entitas yang berasal dari himpunan entitas yang berbeda. Kumpulan semua relasi diantara entitas-entitas yang terdapat pada himpunan entitas – himpunan entitas tersebut membentuk himpunan relasi (relantionship Sets). Sebagaimana istilah himpunan entitas yang banyak sekali diangkat menjadi entitas (walaupun sebenarnya memiliki perbedaan makna), istilah himpunan Relasi jarang sekali digunakan dan lebih sering disingkat dengan istilah relasi saja.
Simbol Keterangan Simbol
Entity
Suatu objek yang dapat dibedakan dari objek lainnya dengan jumlah atribut - atribut tertentu Atribut
Merupakan elemen dari entity yang berfungsi mendeskripsikan karakter dari entity
Relasi
Adalah suatu hubungan diantara beberapa entity Line
Menghubungkan atribut – atribut ke himpunan entity ke relasi
2.8. Teori Pemrograman
2.8.1. PHP
PHP merupakan singkatan rekursif dari Hypertext Preprocessor. PHP adalah bahasa pemrograman (scripting) yang menyatu dengan HTML dan berada pada server. Artinya sintaks dan perintah-perintah yang diberikan sepenuhnya dijalankan di server namun disertakan pada halaman web biasa. Tujuan dari bahasa pemrograman PHP adalah untuk membuat aplikasi-aplikasi yang dijalankan di atas teknologi web, dalam hal ini seluruh proses dijalankan seluruhnya pada server yang kemudian hasil proses tersebut dikirimkan dan ditampilkan pada web browser. Kelebihan PHP adalah mempermudah aplikasi web melakukan koneksi dengan database.
Konsep kerja PHP pada prinsipnya serupa dengan kode HTML. Yaitu diawali permintaaan suatu halaman web oleh browser. Berdasarkan URL atau alamat internet, browser mendapatkan alamat dari web server, mengidentifikasi halaman yang dikehendaki, dan menyampaikan segala informasi yang dibutuhkan oleh web server. Selanjutnya, web server akan mencarikan berkas yang diminta dan memberikan isinya ke mesin PHP dan mesin inilah yang memproses dan memberikan hasilnya (berupa kode html) ke web server. Selanjutnya web server menyampaikan ke client.
2.8.2. Struktur PHP
Kode program PHP menyatu dengan tag-tag HTML dalam satu file. Kode PHP diawali dengan tag <? Atau <?php dan ditutup dengan tag ?>. File yang berisi tag HTML dan kode PHP ini diberi ekstensi .php. Berdasarkan ekstensi ini, pada saat file diakses, server akan tahu bahwa file ini mengandung kode PHP. Server akan menterjemahkan kode ini dan menghasilkan keluaran (output) dalam bentuk tag HTML yang dikirim ke browser client yang mengakses file tersebut (Azis, 2005:5). Berikut contoh struktur penulisan :
1. <? Script PHP ?> 2. <?php Script PHP ?>
2.8.3. MySQL
Menurut Fathansyah (2001 : 195), Structured Query Language (SQL) dapat diartikan sebagai bahas standar yang digunakan untuk berinteraksi dengan basis data relasion. MySOL adalah sebuah sistem manajemen database relasi yang bersifat “terbuka” (Open Source). Terbuka maksudnya adalah MySQL boleh didownload oleh siapa saja. Baik versi kode program aslinya maupun versi binernya dan bisa digunakan secara (relative) gratis baik untuk dimodifikasi sesuai dengan kebutuhan seseorang maupun sebagai suatu program aplikasi komputer.
MySQL menggunakan bahasa standar SQL (Structure Query Language) sebagai bahasa interaktif dalam pengolah data. Perintah SQL juga sering disebut Query. Karena menggunakan bahasa standar yang sama, maka tidak akan menjadi kendala besar bila suatu saat nanti berhubungan dengan database selain MySQL. SQL menawarkan beberapa alat untuk berinteraksi dengan basis data, yaitu :
1. Pendefinisian data struktur : SQL dapat menentukan konstruksi yang bermacam-macam yang digunakan basis data untuk menyimpan data. 2. Pencarian data : SQL bisa mendapatkan data dalam basis data dan
tampilkan dalam bentuk yang dapat dibaca.
3. Memanipulasi data : SQL dapat memasukkan, memperbaharui, dan menghapus data.
4. Pengendalian akses data : SQL memungkinkan untuk mengkoordinir kelebihan pengendalian penggunaan khusus yang menampilkan,
5. Kesatuan data : SQL mencegah korupsi data yang akan menyebabkan masalah, seperti kegagalan sistem.
2.8.4. Web Browser
Web browser adalah perangkat lunak (software) disisi client yang digunakan untuk mengakses informasi web, memformat teks dan menempatkan grafik pada layer. Ada beberapa jenis web browser yang dipakai sebagai sumber tampilan antara lain : Internet Explorer, Netscape, Navigator, Mozilla, Opera, Google Chrome, dan lain-lain. Prinsip kerja pengaksesan sebuah halaman web yang berbasis HTML adalah sebagai beikut :
1. Browser meminta sebuah halaman ke suatu situs web melalui protocol http.
2. Web Server meminta permintaan.
3. Web Server segera mengirimkan HTML yang diterima client.
4. Browser pada client akan membaca dan mengartikan dokumen yang diterima berdasarkan kode-kode pemformatan yang terdapat pada dokumen HTML, lalu menampilkan dalam versinya masing-masing.
2.8.5. Web Server
Web server adalah server yang melayani permintaaan client terhadap halaman web seperti Apache, IIS (Internet Informasi Server) dan berkomunikasi dengan Middleware untuk menterjemahkan kode-kode tertentu, menjalankan
kode-kode tersebut dan memungkinkan berinteraksi dengan basis data, PHP atau ASP.
1. Browser atau client berinteraksi dengan web server.
2. Secara internal web server berinteraksi dengan middleware. 3. Middleware yang berhubungan database.
Adapun teknologi yang berjalan di server antara lain : CGI (Common Gateway Interface), ASP (Active Server Page), JSP (Java Server Page) dan PHP serta Framework Codeigniter.
2.8.6. Xampp
Xampp adalah perangkat lunak bebas, yang mendukung banyak sistem operasi, merupakan kompilasi dari beberapa program. Fungsinya adalah sebagai server yang berdiri sendiri (localhost), yang terdiri atas program Apache HTTP Server, MySQL Database, dan penerjemah bahasa yang ditulis dengan bahasa pemrograman PHP dan Perl. Nama XAMPP merupakan singkatan dari X (empat sistem operasi apapun), Apache, MySQL, PHP dan Perl. Program ini tersedia dalam GNU General Public License dan bebas, merupakan web server yang mudah digunakan dan dapat melayani tampilan web yang dinamis.
Mengenal bagian XAMPP yang biasa digunakan pada umumnya :
• 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. • Control Panel yang berfungsi untuk mengelola layanan (service) XAMPP.
Seperti menghentikan (stop) layanan, ataupun memulai (start).
2.8.7. Framework
Framework, di dalam pemrograman komputer adalah abstraksi dari kode-kode umum yang menyediakan fungsionalitas umum yang bisa dikesampingkan atau digunakan secara selektif oleh kode pengguna berdasarkan fungsionalitas tertentu. Framework sama dengan pustaka software dimana abstraksi kodenya bisa digunakan kembali yang telah ditentukan dalam API (Application Programming Interface).
Framework atau kerangka kerja yang berkaitan dengan web mengijinkan pengembang web untuk mengembangkan struktur aplikasi web yang menyediakan class-class dan fungsi-fungsi yang bisa digunakan dalam pengembangan aplikasi web sehingga bisa mengurangi waktu pengembangan secara signifikan, memudahkan dalam proses maintenance karena sudah ada pola tertentu dalam sebuah framework (dengan syarat programmer mengikuti pola standar yang ada). Umumnya framework menyediakan fasilitas-fasilitas yang umum dipakai sehingga kita tidak perlu membangun dari awal. Misalnya validasi, pagination, multiple database, scaffolding, pengaturan session, eror handling, dan lain-lain.
2.8.8. CodeIgniter (CI)
CodeIgniter merupakan salah satu framework untuk aplikasi web yang menggunakan platform PHP. CodeIgniter atau bisa disingkat menjadi CI, ini merupakan framework yang sangat ringan, berukuran kecil dan bekerja dengan baik. Framework ini sangat bagus untuk pemula karena hanya perlu belajar sedikit saja. Untuk aplikasi web yang besar juga bagus. CodeIgniter dikembangkan oleh EllisLab dan memiliki dokumentasi yang mudah dimengerti. Berikut adalah alasan mengapa CodeIgniter menjadi framework yang bagus untuk digunakan :
1. Footprint yang ke CodeIgniter namun memiliki kinerja yang bagus. 2. Pendekatan MVC dalam pengembangannya.
3. Menghasilkan URL yang sesuai dengan mesin pencari (search engine friendly).
4. Mudah untuk dikembangkan.
5. Berjalan baik di PHP 4 (4.3.2+) maupun PHP 5.
6. Mendukung database kebanyakan termasuk MySQL (4.1+), MySQLi, MS SQL, Postgres, Oracle, SQLite, dan ODBC.
7. Pengamanan aplikasi sangat diutamakan. 8. Pengoperasian cache yang mudah.
9. Banyak pustaka (libraries) dan helpers yang membantu kita dalam pembuatan aplikasi atau operasi yang kompleks seperti email, manipulasi gambar, validasi form, uploading file, session, aplikasi banyak bahasa, dan pembuatan aplikasi kita sendiri.
10.Kebanyakan pustaka tersebut dimuat hanya ketika dibutuhkan sehingga dapat menghemat sumber daya.
CodeIgniter memiliki struktur direktori tersendiri. Direktori utama CodeIgniter berada di direktori system/application. CodeIgniter menggunakan pendekatan MVC (Model, View, Controller) dalam pengembangannya seperti gambar di bawah ini yang dilingkari. Jadi untuk para pengembang web yang ingin membuat aplikasi dengan CodeIgniter, difokuskan pada direktori controllers, models, dan views. Berikut adalah tampilan dari struktur direktori CodeIgniter :
Penjelasan direktori CodeIgniter sebagai berikut :
• Folder system menyimpan semua file yang menjadikan CodeIgniter bekerja, terdiri dari beberapa folder di dalamnya, yaitu :
Folder application merupakan folder yang identik dengan isi dari folder system. Dengan demikian, jika kita memiliki file yang berhubungan
dengan aplikasi, misalnya kita hanya ingin memuat helper dalam aplikasi, helper tersebut baiknya ditempatkan di dalam folder system/application/helpers daripada di dalam folder system/helpers. Folder config menyimpan semua file konfigurasi yang berhubungan dengan aplikasi. Termasuk informasi pustaka manakah yang harus dimuat secara otomatis oleh aplikasi dan berisi detail database.
Folder class menyimpan semua class aplikasi.
Folder errors menyimpan semua halaman template error aplikasi. Ketika error terjadi, halaman error akan dihasilkan dari salah satu template tersebut.
Folder helpers menyimpan semua helpers yang disebutkan oleh aplikasi. Folder hooks adalah untuk hooks yang memodifikasi fungsionalitas file-file core CodeIgniter, hooks hendaknya hanya digunakan oleh pengguna CodeIgniter yang sudah berpengalaman.
Folder language menyimpan baris-baris teks yang bisa dimuat melalui pustaka bahasa (language library) untuk membuat situs berbahasa banyak. Folder libraries menyimpan semua pustaka yang dimasukkan ke dalam aplikasi.
Folder models menyimpan semua model aplikasi. Folder views menyimpan semua view aplikasi.
• Folder cache menyimpan semua cache yang dihasilkan oleh pustaka caching. • Folder codeigniter menyimpan semua file internal yang membuatnya bekerja. • Folder database menyimpan semua driver database dan class memungkinkan
• Folder fonts menyimpan semua huruf atau font yang digunakan oleh pustaka manipulasi image.
• Folder helpers menyimpan semua helper core CodeIgniter, tetapi kita bisa menempatkan helper kita sendiri disini yang bisa diakses oleh semua aplikasi. • Folder logs menyimpan semua log yang dihasilkan oleh CodeIgniter.
• Folder plugin menyimpan semua plugin yang bisa kita gunakan. Plugin hampir identik dengan helpers, plugin adalah fungsi yang diperuntukkan untuk dibagi oleh komunitas.
• Folder scaffolding menyimpan semua file yang membuat class scaffolding bekerja. Scaffolding menyediakan operasi CRUD seperti antarmuka untuk mengakses informasi di dalam database selama pengembangan.
• Folder user_guide adalah tempat menyimpan panduan pengguna user guide CodeIgniter.
• File index.php adalah file yang menjalankan semua kekuatan CodeIgniter yang mengijinkan kita untuk mengubah nama folder system dan application.
2.8.9. MVC (Model, View, Controller)
Beberapa permasalahan dapat muncul ketika suatu aplikasi yang sangat kompleks yang terdiri dari berbagai elemen mencakup data akses, bisnis logic, dan presentasi atau tampilan. Masalah tersebut terjadi karena ketergantungan antar elemen yang sangat tinggi, yang pada akhirnya berakibat pada sulitnya proses maintenance. Ketergantungan yang sangat tinggi (high couple) ini pula yang menyebabkan suatu elemen tidak dapat re-usable untuk aplikasi yang lain. Sehingga proses develop juga akan berjalan tidak efektif. Sebagai gambaran kasar seperti ini, semisal pada lapisan bisnis (business logic) terdapat beberapa elemen atau class yang masing-masing class membutuhkan akses ke database. Pada setiap class diberikan method dan properti untuk keperluan akses database ini. Apabila terjadi perubahan pada pola akses database, tentu kita akan melakukan perbaikan pada seluruh class yang mempunyai method untuk akses ke database. Hal ini akan berbeda jika koneksi ke database dijadikan sebuah elemen class yang mandiri.
Gambaran tersebut memang terlalu simple atau bahkan mungkin sangat jauh dari optimal untuk menggambarkan relevansi implementasi MVC, tetapi paling tidak sedikit membuka pandangan. Untuk sederhananya, MVC merupakan kependekan dari Model, View, Controller. MVC ini adalah bentuk pemrograman yang digunakan untuk mengembangkan aplikasi berbasis web. Bentuk ini memisahkan antara antarmuka pengguna (user interface) dengan backend (yaitu interaksi dengan database). Implementasi yang baik membiarkan pengembang mengubah user interface-nya atau backend-nya tanpa mempengaruhi bagian
pemanggilan kembali Model atau Model yang sudah ada. Berikut adalah deskripsi dari MVC :
Model, merepresentasikan struktur data dari website yang bisa berupa basis data maupun data lain, misalnya dalam bentuk file teks atau file xml. Biasanya didalam model akan berisi class dan fungsi untuk mengambil, melakukan update dan menghapus data website. Karena sebuah website biasanya menggunakan basis data dalam menyimpan data, maka bagian model biasanya akan berhubungan dengan perintah-perintah query SQL. Model bisa dibilang khusus digunakan untuk melakukan koneksi ke basis data, oleh karena itu logika-logika pemrograman yang berada di dalam Model juga harus yang berhubungan dengan basis data. Misalnya saja pemilihan kondisi tetapi untuk memilih melakukan query yang mana.
View, merupakan informasi yang ditampilkan kepada pengunjung website. Sebisa mungkin di dalam view tidak berisi logika-logika kode, tetapi hanya berisi variabel-variabel yang berisi data yang siap ditampilkan. View bisa dibilang adalah halaman website yang dibuat menggunakan HTML dengan bantuan CSS atau JavaScript. Di dalam view tidak ada kode untuk melakukan koneksi ke basis data. View hanya dikhususkan untuk menampilkan data-data hasil dari Model dan Class.
Controller, berperan sebagai perantara antara view dan model. Sebagaimana namanya, mengontrol apa yang dikirim ke view dari model. Dalam CodeIgniter, controller juga tempat untuk memuat pustaka (libraries) dan helpers. Controller juga tidak boleh berisi kode untuk mengakses basis data. Tugas controller adalah menyediakan berbagai variabel yang akan ditampilkan
di view, memanggil model untuk melakukan akses ke basis data, menyediakan penanganan error, mengerjakan proses logika dari aplikasi serta melakukan validasi atau cek terhadap input.